diff --git a/.doc_surface_floor b/.doc_surface_floor index 3fc288b5..997b0a01 100644 --- a/.doc_surface_floor +++ b/.doc_surface_floor @@ -1 +1 @@ -51.8 +100.0 diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 42f9e7e1..8004b9d0 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -123,6 +123,20 @@ jobs: pip install -e porting-sdk/test_harness/mock_relay pip install -e porting-sdk/test_harness/mock_signalwire + # ruff is the Python half of the FMT and LINT gates (scripts/ enumerators + + # generators). scripts/_env.sh fails LOUD without it. Config: ./ruff.toml. + - name: Install ruff (Python half of FMT + LINT) + run: | + # PINNED EXACT: an unbounded `pip install ruff` resolves the newest release + # at CI time, so a ruff release that adds a rule or changes a format + # heuristic reds FMT/LINT on a commit that was green locally. Keep in + # lockstep with SW_RUFF_VERSION in scripts/_env.sh. + pip install "ruff==0.15.21" + # Assert the pin took — pip can satisfy a spec from an unexpected + # index or cache, so verify rather than assume. + ruff --version + ruff --version | grep -qw '0\.15\.21' || { echo "FATAL: ruff is not the pinned 0.15.21" >&2; exit 1; } + # The EMISSION gate needs `import signalwire` (the oracle). Install it from # the adjacent checkout only if it isn't already importable — so a runner # that already has it (or a future shared setup) isn't reinstalled. diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f87a03ef..ba1c62f0 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -50,6 +50,20 @@ jobs: pip install -e porting-sdk/test_harness/mock_relay pip install -e porting-sdk/test_harness/mock_signalwire + # ruff is the Python half of the FMT and LINT gates (scripts/ enumerators + + # generators). scripts/_env.sh fails LOUD without it. Config: ./ruff.toml. + - name: Install ruff (Python half of FMT + LINT) + run: | + # PINNED EXACT: an unbounded `pip install ruff` resolves the newest release + # at CI time, so a ruff release that adds a rule or changes a format + # heuristic reds FMT/LINT on a commit that was green locally. Keep in + # lockstep with SW_RUFF_VERSION in scripts/_env.sh. + pip install "ruff==0.15.21" + # Assert the pin took — pip can satisfy a spec from an unexpected + # index or cache, so verify rather than assume. + ruff --version + ruff --version | grep -qw '0\.15\.21' || { echo "FATAL: ruff is not the pinned 0.15.21" >&2; exit 1; } + - name: Run CI gate script (full gate set) working-directory: signalwire-java env: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 070a2e28..179c2c44 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -71,6 +71,23 @@ jobs: pip install -e porting-sdk/test_harness/mock_relay pip install -e porting-sdk/test_harness/mock_signalwire + # ruff is the Python half of the FMT and LINT gates. scripts/ holds the + # hand-written enumerators + generators that feed SIGNATURES/SURFACE/DRIFT + # and emit the committed generated trees; they are linted + formatted at the + # same bar as the Java. scripts/_env.sh fails LOUD when ruff is missing, so + # this install is required, not an optional speedup. Config: ./ruff.toml. + - name: Install ruff (Python half of FMT + LINT) + run: | + # PINNED EXACT: an unbounded `pip install ruff` resolves the newest release + # at CI time, so a ruff release that adds a rule or changes a format + # heuristic reds FMT/LINT on a commit that was green locally. Keep in + # lockstep with SW_RUFF_VERSION in scripts/_env.sh. + pip install "ruff==0.15.21" + # Assert the pin took — pip can satisfy a spec from an unexpected + # index or cache, so verify rather than assume. + ruff --version + ruff --version | grep -qw '0\.15\.21' || { echo "FATAL: ruff is not the pinned 0.15.21" >&2; exit 1; } + # The EMISSION gate needs `import signalwire` (the oracle). Install it from # the adjacent checkout only if it isn't already importable — so a runner # that already has it (or a future shared setup) isn't reinstalled. diff --git a/.version-frozen b/.version-frozen new file mode 100644 index 00000000..c0bc76a8 --- /dev/null +++ b/.version-frozen @@ -0,0 +1,38 @@ +# VERSION FREEZE — TEMPORARY. DELETE THIS FILE BEFORE RELEASING. +# +# Ruled by the owner 2026-07-28. This port declares version 3.0.0, and its SemVer +# release floor (port_signatures.baseline.json -> baseline_version) is pinned at +# 3.0.0 with the recorded surface payload overwritten to match today's surface. +# +# THIS FILE IS DOCUMENTATION ONLY (owner ruling, 2026-07-28). No gate reads it and +# nothing fails if it is present. It exists so that neither a person nor a future +# session has to re-derive why the versions look the way they do — and so nobody +# casually bumps one. +# +# WHY THE FREEZE: versions had drifted to 3.0.2 / 3.2.0 / 3.2.1 / 3.3.0 / 4.0.0 +# across the fleet with NOTHING EVER PUBLISHED above v2.x. `git ls-remote --tags +# origin` tops out at v1.1.2 for rust/dotnet and v2.0.x for most others; php's +# v3.2.0 tag is local-only, zero remote matches. That scatter was never a release +# history, so collapsing it rewrote nothing real. +# +# WHILE THIS FILE EXISTS: +# - do NOT bump this port's version +# - do NOT re-anchor its release floor +# - DO land surface changes freely. The floor is a snapshot of the 3.0.0 wave, +# not of a published release, so SEMVER-DIFF will not flag anything already in +# today's surface. Anything added AFTER the freeze is still caught normally. +# +# BEFORE CUTTING A RELEASE: +# 1. DELETE this file in every port. +# 2. Re-anchor each port_signatures.baseline.json to the actual released +# commit/tag and regenerate its surface payload from that point. +# 3. Re-enable enforcement: ports invoke SEMVER-DIFF with --report-only today +# (the D5 "re-anchor at cut" setting). Dropping that flag turns semver +# enforcement back on. +# +# NOTE: perl is deliberately NOT floor-pinned. It is the only port anchored to a +# genuinely published tag (v2.0.2, sha 83376ff) and already passes at 3.0.0; +# overwriting it would destroy the fleet's only real release anchor. +# +# Owner rulings: porting-sdk tasks #143 (version) and #146 (floor). +# Full context: porting-sdk/SESSION_HANDOFF_2026-07-28.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 05271bb2..fe60dc1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [4.0.0] - 2026-07-15 +## [3.0.0] - REST (BREAKING): `RestError` now carries the full request `url` (including the query string) alongside the existing `path`, so a caller can see the exact @@ -32,7 +32,6 @@ `maxActiveCalls(int)` builder option — inbound calls past the cap are logged and dropped, matching the reference `Client(max_active_calls=...)`. -## [3.2.0] - 2026-07-14 - REST: added the `Messages` resource (`client.messages()`) — send and redact messages over `/api/messaging/messages` (`create` → POST, `update` → PATCH @@ -41,7 +40,6 @@ the shared mock. Distinct from the message logs namespace (`client.logs()` `.messages()`). -## [3.1.0] - 2026-07-14 - REST: added the `Projects` resource (`client.projects()`) — full CRUD over `/api/projects` (list/get/create/update/delete) plus `rotateSigningKey`, with @@ -49,7 +47,6 @@ (success and error) against the shared mock. Distinct from the singular `project` token namespace (`client.project()`). -## [3.0.2] - 2026-07-13 - REST: the client's resource surface is now fully generated from the shared SignalWire OpenAPI specs, replacing the hand-written resource classes — every diff --git a/DOC_AUDIT_IGNORE.md b/DOC_AUDIT_IGNORE.md index ce65de4c..f6e6aed1 100644 --- a/DOC_AUDIT_IGNORE.md +++ b/DOC_AUDIT_IGNORE.md @@ -38,6 +38,7 @@ java.lang#java: a package/literal reference in test scaffolding (not a method ca ### java.util / java.util.function DateTimeFormatter#ofPattern: DateTimeFormatter.ofPattern (java.time) — example formatters +ZoneId#systemDefault: ZoneId.systemDefault (java.time) — the explicit zone the example clock tools pass to LocalTime/LocalDateTime.now() Arrays#asList: Arrays.asList (JDK) — list construction in examples Map#getOrDefault: Map#getOrDefault (JDK) — safe-get pattern in examples Collections#emptyMap: Collections.emptyMap (JDK) — empty-map literal in examples diff --git a/PORT_ADDITIONS.md b/PORT_ADDITIONS.md index a36a6327..e4fe8be1 100644 --- a/PORT_ADDITIONS.md +++ b/PORT_ADDITIONS.md @@ -197,8 +197,6 @@ signalwire.core.swml_service.SWMLService.answer: idiomatic Java surface extensio signalwire.core.swml_service.SWMLService.close: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.cond: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.connect: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart -signalwire.core.swml_service.SWMLService.define_tool: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart -signalwire.core.swml_service.SWMLService.define_tools: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.denoise: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.detect_machine: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.enter_queue: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart @@ -219,15 +217,12 @@ signalwire.core.swml_service.SWMLService.label: idiomatic Java surface extension signalwire.core.swml_service.SWMLService.list_tool_names: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.live_transcribe: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.live_translate: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart -signalwire.core.swml_service.SWMLService.on_function_call: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart -signalwire.core.swml_service.SWMLService.on_swml_request: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.pay: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.play: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.prompt: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.receive_fax: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.record: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.record_call: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart -signalwire.core.swml_service.SWMLService.register_swaig_function: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.remove_function: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.request: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.return_verb: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart @@ -246,7 +241,6 @@ signalwire.core.swml_service.SWMLService.tap: idiomatic Java surface extension ( signalwire.core.swml_service.SWMLService.transfer: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.unset: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.core.swml_service.SWMLService.user_event: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart -signalwire.core.swml_service.SWMLService.validate_basic_auth: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.logging.logger_level.LoggerLevel.get_value: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.logging.logger_level.LoggerLevel: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.pom.pom.PromptObjectModel.from_json_map: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart @@ -393,7 +387,6 @@ signalwire.rest._base.FabricResource.list_addresses: idiomatic Java surface exte signalwire.rest._base.HttpClient.get_base_url: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.rest._base.HttpClient.with_base_url: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.rest._base.SignalWireRestError.get_path: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart -signalwire.rest._base.SignalWireRestError.get_request_id: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.rest._base.SignalWireRestError.get_response_body: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.rest._base.SignalWireRestError.is_client_error: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.rest._base.SignalWireRestError.is_not_found: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart @@ -405,7 +398,6 @@ signalwire.rest._pagination.PaginatedIterator.next: idiomatic Java surface exten signalwire.rest._request_options.RequestOptions.builder: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.rest.client.RestClient.builder: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.rest.client.RestClient.get_http_client: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart -signalwire.rest.client.RestClient.get_project: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.rest.client.RestClient.get_space: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.rest.client.RestClient.with_base_url: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.rest.namespaces.calling_resources_generated.Calling.get_base_path: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart @@ -474,7 +466,6 @@ signalwire.skills.builtin.custom_skills_skill.CustomSkillsSkill.supports_multipl signalwire.skills.builtin.custom_skills_skill.CustomSkillsSkill: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.skills.claude_skills.skill.ClaudeSkillsSkill.get_description: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.skills.claude_skills.skill.ClaudeSkillsSkill.get_name: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart -signalwire.skills.claude_skills.skill.ClaudeSkillsSkill.get_prompt_sections: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.skills.claude_skills.skill.ClaudeSkillsSkill.supports_multiple_instances: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.skills.datasphere.skill.DataSphereSkill.get_description: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.skills.datasphere.skill.DataSphereSkill.get_name: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart @@ -490,7 +481,6 @@ signalwire.skills.google_maps.skill.GoogleMapsSkill.get_description: idiomatic J signalwire.skills.google_maps.skill.GoogleMapsSkill.get_name: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.skills.info_gatherer.skill.InfoGathererSkill.get_description: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.skills.info_gatherer.skill.InfoGathererSkill.get_name: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart -signalwire.skills.info_gatherer.skill.InfoGathererSkill.get_prompt_sections: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.skills.info_gatherer.skill.InfoGathererSkill.supports_multiple_instances: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.skills.joke.skill.JokeSkill.get_description: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart signalwire.skills.joke.skill.JokeSkill.get_name: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart @@ -585,28 +575,6 @@ signalwire.utils.url_validator.UrlValidator: idiomatic Java surface extension (b signalwire.web.web_service.WebService.file_allowed: idiomatic Java surface extension (builder, getter/setter, overload, or richer verb/config surface) with no Python-reference counterpart # --- client-tree namespace/resource accessors (Java idiom for Python `client.X` instance attributes) --- -signalwire.rest.client.RestClient.addresses: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.calling: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.chat: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.datasphere: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.fabric: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.imported_numbers: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.logs: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.lookup: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.messages: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.mfa: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.number_groups: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.phone_numbers: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.project: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.projects: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.pubsub: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.queues: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.recordings: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.registry: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.short_codes: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.sip_profile: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.verified_callers: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. -signalwire.rest.client.RestClient.video: Java lazy-accessor idiom for a Python client-tree INSTANCE ATTRIBUTE (Python wires `self.{name} = (http)` in the namespace's `__init__` / `_wire_resources`; Java, lacking `__getattr__`, exposes each as a public zero-arg accessor method). The Python surface enumerator records only classes/methods, never instance attributes, so the reference has no method-surface counterpart — a real shipped Java accessor, port-only relative to the compared method surface. # ───────────────────────────────────────────────────────────────────────────── # FOLDED (agentbase-family) keys for the diff_port_surface AgentBase-mixin fold. diff --git a/PORT_SIGNATURE_OMISSIONS.md b/PORT_SIGNATURE_OMISSIONS.md index 9fff409d..c9e533e6 100644 --- a/PORT_SIGNATURE_OMISSIONS.md +++ b/PORT_SIGNATURE_OMISSIONS.md @@ -66,10 +66,6 @@ Five-bucket classification (see PORTING_GUIDE.md): # Format: `: ` -signalwire.agent_server.AgentServer.__init__: Java AgentServer collapses Python's host/port/log_level/event/context kwargs into typed runtime configuration (setters and gradle props); the same construction is reachable but takes a different shape -signalwire.agent_server.AgentServer.app: Python AgentServer.app exposes the underlying ASGI application for embedding in test rigs; Java AgentServer wraps Javalin and does not expose the framework instance directly -signalwire.agent_server.AgentServer.logger: Python's reference exposes a logger attribute on the class for runtime introspection; Java threads logging through SLF4J without exposing a typed logger field -signalwire.agent_server.AgentServer.register: Java AgentServer collapses Python's host/port/log_level/event/context kwargs into typed runtime configuration (setters and gradle props); the same construction is reachable but takes a different shape signalwire.agent_server.AgentServer.run: Java AgentServer collapses Python's host/port/log_level/event/context kwargs into typed runtime configuration (setters and gradle props); the same construction is reachable but takes a different shape signalwire.agent_server.AgentServer.unregister: Java AgentServer.unregister is fluent-self-returning for chaining; Python returns bool indicating whether the agent was registered signalwire.core.agent.prompt.manager.PromptManager.define_contexts: Java's PromptManager.defineContexts collapses Python's contexts kwarg into a typed-builder return; the call shape is parameterless on the manager and the builder is materialised from the return value @@ -83,28 +79,15 @@ signalwire.core.agent_base.AgentBase.add_answer_verb: Java AgentBase.addAnswerVe signalwire.core.agent_base.AgentBase.enable_sip_routing: Java AgentBase.enableSipRouting is parameterless (auto-detects the route from agent state); Python takes auto_map and path kwargs signalwire.core.agent_base.AgentBase.on_debug_event: Java AgentBase.onDebugEvent takes a typed Consumer>> handler and returns AgentBase (this) for fluent chaining; Python takes a generic Callable and returns it signalwire.core.agent_base.AgentBase.on_summary: Java AgentBase.onSummary registers a typed callback returning AgentBase (this) for fluent chaining; Python's on_summary takes summary and raw_data positionally and is a separate callback-shape -signalwire.core.agent_base.AgentBase.skill_manager: Python AgentBase.skill_manager exposes the per-agent skill manager as a public attribute; Java AgentBase routes the same surface through getSkillManager() signalwire.core.contexts.Context.add_step: Java Context.addStep takes only the step name; the step's task/bullets/criteria/functions/valid_steps are configured via fluent methods on the returned Step. Python takes them all as kwargs to add_step -signalwire.core.contexts.ContextBuilder.__init__: Java ContextBuilder is a static-factory class with a no-arg constructor; Python's ContextBuilder takes the owning agent as a positional arg -signalwire.core.contexts.GatherInfo.__init__: Java GatherInfo uses a Builder for output_key/completion_action/prompt; Python takes them as kwargs to __init__ -signalwire.core.contexts.GatherQuestion.__init__: Java GatherQuestion takes only key+question; type/confirm/prompt/functions are configured via fluent methods. Python takes them as kwargs -signalwire.core.contexts.Step.add_gather_question: Java Step.addGatherQuestion takes only key+question; the rest are configured fluently on the returned GatherQuestion. Python takes them as kwargs signalwire.core.data_map.DataMap.expression: Java DataMap collapses Python kwargs into typed-builder helpers (expression/parameter/webhook overload signatures with fewer named args); the optional-arg surface is reachable via additional fluent setters -signalwire.core.data_map.DataMap.parameter: Java DataMap collapses Python kwargs into typed-builder helpers (expression/parameter/webhook overload signatures with fewer named args); the optional-arg surface is reachable via additional fluent setters signalwire.core.data_map.DataMap.webhook: Java DataMap collapses Python kwargs into typed-builder helpers (expression/parameter/webhook overload signatures with fewer named args); the optional-arg surface is reachable via additional fluent setters -signalwire.core.function_result.FunctionResult.__init__: Java FunctionResult action methods collapse the Python kwarg-rich signature into a typed Builder + method-on-builder shape; the optional args (timeout/post_process/etc.) move to the builder signalwire.core.function_result.FunctionResult.connect: Java FunctionResult action methods collapse the Python kwarg-rich signature into a typed Builder + method-on-builder shape; the optional args (timeout/post_process/etc.) move to the builder signalwire.core.function_result.FunctionResult.execute_rpc: Java FunctionResult action methods collapse the Python kwarg-rich signature into a typed Builder + method-on-builder shape; the optional args (timeout/post_process/etc.) move to the builder -signalwire.core.function_result.FunctionResult.execute_swml: Java FunctionResult action methods collapse the Python kwarg-rich signature into a typed Builder + method-on-builder shape; the optional args (timeout/post_process/etc.) move to the builder -signalwire.core.function_result.FunctionResult.play_background_file: Java FunctionResult action methods collapse the Python kwarg-rich signature into a typed Builder + method-on-builder shape; the optional args (timeout/post_process/etc.) move to the builder signalwire.core.function_result.FunctionResult.replace_in_history: Java FunctionResult.replaceInHistory takes a bool flag (the union case in Python is the alternate-string overload); the string-replacement form ships as a separate replaceInHistoryString() in Java -signalwire.core.function_result.FunctionResult.stop_record_call: Java FunctionResult action methods collapse the Python kwarg-rich signature into a typed Builder + method-on-builder shape; the optional args (timeout/post_process/etc.) move to the builder -signalwire.core.function_result.FunctionResult.stop_tap: Java FunctionResult action methods collapse the Python kwarg-rich signature into a typed Builder + method-on-builder shape; the optional args (timeout/post_process/etc.) move to the builder signalwire.core.function_result.FunctionResult.switch_context: Java FunctionResult action methods collapse the Python kwarg-rich signature into a typed Builder + method-on-builder shape; the optional args (timeout/post_process/etc.) move to the builder -signalwire.core.function_result.FunctionResult.wait_for_user: Java FunctionResult action methods collapse the Python kwarg-rich signature into a typed Builder + method-on-builder shape; the optional args (timeout/post_process/etc.) move to the builder signalwire.core.mixins.ai_config_mixin.AIConfigMixin.add_function_include: Java AIConfigMixin method collapses the Python kwargs into typed Builder+setters or fewer overloads; the optional args (meta_data/replace/ignore_case/etc.) are reachable via additional fluent calls signalwire.core.mixins.ai_config_mixin.AIConfigMixin.add_internal_filler: Java AIConfigMixin method collapses the Python kwargs into typed Builder+setters or fewer overloads; the optional args (meta_data/replace/ignore_case/etc.) are reachable via additional fluent calls -signalwire.core.mixins.ai_config_mixin.AIConfigMixin.enable_debug_events: Java AIConfigMixin method collapses the Python kwargs into typed Builder+setters or fewer overloads; the optional args (meta_data/replace/ignore_case/etc.) are reachable via additional fluent calls signalwire.core.mixins.ai_config_mixin.AIConfigMixin.set_internal_fillers: Java AIConfigMixin.setInternalFillers takes a list-of-maps shape that mirrors the JSON wire format; Python normalises the same input through a nested dict>> at construction time signalwire.core.mixins.auth_mixin.AuthMixin.get_basic_auth_credentials: Java exposes a separate getBasicAuthCredentialsWithSource() overload for the include_source case and returns String[] (a list); Python takes include_source as a kwarg and returns a tuple/3-tuple signalwire.core.mixins.prompt_mixin.PromptMixin.define_contexts: Java's PromptManager.defineContexts collapses Python's contexts kwarg into a typed-builder return; the call shape is parameterless on the manager and the builder is materialised from the return value @@ -117,24 +100,11 @@ signalwire.core.mixins.web_mixin.WebMixin.on_swml_request: Java's WebMixin port signalwire.core.mixins.web_mixin.WebMixin.run: Java's WebMixin port collapses Python's host/port/ssl_*/event/context kwargs into typed runtime configuration (gradle/system-property driven); the same parity is reachable but not as method args signalwire.core.mixins.web_mixin.WebMixin.serve: Java's WebMixin port collapses Python's host/port/ssl_*/event/context kwargs into typed runtime configuration (gradle/system-property driven); the same parity is reachable but not as method args signalwire.core.mixins.web_mixin.WebMixin.set_dynamic_config_callback: Java WebMixin.setDynamicConfigCallback takes the AgentBase reference directly so the lambda has typed access to the agent; Python takes a free-Callable that receives (data, headers, query, agent) as positional args -signalwire.core.security.session_manager.SessionManager.__init__: Java SessionManager constructor is parameterless (token_expiry/secret are injected via setters or system properties); Python takes them as kwargs to __init__ -signalwire.core.skill_base.SkillBase.logger: Python's reference exposes a logger attribute on the class for runtime introspection; Java threads logging through SLF4J without exposing a typed logger field signalwire.core.skill_base.SkillBase.register_tools: Java SkillBase.registerTools returns a list of ToolDefinitions to register; Python returns void and the SkillBase implementation calls agent.define_tool() directly signalwire.core.skill_base.SkillBase.setup: Java SkillBase.setup takes a typed params map at attach time; Python's setup is parameterless (kwargs flow from the SkillManager.add_skill call) -signalwire.core.skill_manager.SkillManager.logger: Python's reference exposes a logger attribute on the class for runtime introspection; Java threads logging through SLF4J without exposing a typed logger field -signalwire.core.swml_service.SWMLService.__init__: Java SWMLService takes only (name, route) on construction and serves with no args; the host/port/basic_auth/schema_path/config_file/schema_validation/ssl options arrive via setters or runtime config signalwire.core.swml_service.SWMLService.get_basic_auth_credentials: Java exposes a separate getBasicAuthCredentialsWithSource() overload for the include_source case and returns String[] (a list); Python takes include_source as a kwarg and returns a tuple/3-tuple signalwire.core.swml_service.SWMLService.serve: Java SWMLService takes only (name, route) on construction and serves with no args; the host/port/basic_auth/schema_path/config_file/schema_validation/ssl options arrive via setters or runtime config -signalwire.prefabs.concierge.ConciergeAgent.__init__: Java prefab constructor takes a smaller set of typed positional args; the rest of the Python kwargs (services/amenities/hours/etc.) are configured via fluent setters on the returned agent -signalwire.prefabs.faq_bot.FAQBotAgent.__init__: Java prefab constructor takes a smaller set of typed positional args; the rest of the Python kwargs (services/amenities/hours/etc.) are configured via fluent setters on the returned agent -signalwire.prefabs.info_gatherer.InfoGathererAgent.__init__: Java prefab constructor takes a smaller set of typed positional args; the rest of the Python kwargs (services/amenities/hours/etc.) are configured via fluent setters on the returned agent -signalwire.prefabs.receptionist.ReceptionistAgent.__init__: Java prefab constructor takes a smaller set of typed positional args; the rest of the Python kwargs (services/amenities/hours/etc.) are configured via fluent setters on the returned agent -signalwire.prefabs.survey.SurveyAgent.__init__: Java prefab constructor takes a smaller set of typed positional args; the rest of the Python kwargs (services/amenities/hours/etc.) are configured via fluent setters on the returned agent -signalwire.relay.call.AIAction.__init__: Java relay Action subclass constructor takes (controlId, call) — id-first identifier, owner second; Python takes (call, control_id) — the order swap is the canonical Java convention -signalwire.relay.call.AIAction.stop: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.Action.__init__: Java relay Action constructor takes (controlId, call) — id-first identifier, owner second; Python takes (call, control_id, terminal_event, terminal_states). The terminal-event metadata is registered separately in Java -signalwire.relay.call.Action.result: Python relay Action.result is a future-result attribute populated by the eventing thread; Java models the same async-completion pattern via CompletableFuture on each method without an attribute hand-off -signalwire.relay.call.Call.__init__: Java Call constructor is internal (created by RelayClient on event dispatch); the (client, call_id, node_id, etc.) Python construction args are passed through Java's relay-event factory instead +signalwire.relay.call.AIAction.stop: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical signalwire.relay.call.Call.ai: Java Call action method takes a typed Config object that bundles Python's kwargs (volume/loop/control_id/on_completed/etc.) AND returns a typed Action subclass (PlayAction/CollectAction/etc.) for typed-fluent control; Python takes positional kwargs and returns the generic Action base signalwire.relay.call.Call.ai_hold: Java Call action method takes a typed Config/Options object that bundles Python's kwargs (volume/loop/control_id/on_completed/etc.); the same surface is reachable through the Config builder signalwire.relay.call.Call.ai_message: Java Call action method takes a typed Config/Options object that bundles Python's kwargs (volume/loop/control_id/on_completed/etc.); the same surface is reachable through the Config builder @@ -149,12 +119,10 @@ signalwire.relay.call.Call.detect_answering_machine: Java typed detect convenien signalwire.relay.call.Call.detect_digit: Java typed detect convenience wrapper builds the same {type:"digit",params:{digits?}} detect shape and returns the typed DetectAction subclass which the adapter collapses to the generic Action base; Python returns DetectAction directly signalwire.relay.call.Call.detect_fax: Java typed detect convenience wrapper builds the same {type:"fax",params:{tone?}} detect shape and returns the typed DetectAction subclass which the adapter collapses to the generic Action base; Python returns DetectAction directly signalwire.relay.call.Call.echo: Java Call action method takes a typed Config/Options object that bundles Python's kwargs (volume/loop/control_id/on_completed/etc.); the same surface is reachable through the Config builder -signalwire.relay.call.Call.hangup: Java Call action method takes a typed Config/Options object that bundles Python's kwargs (volume/loop/control_id/on_completed/etc.); the same surface is reachable through the Config builder signalwire.relay.call.Call.join_conference: Java Call action method takes a typed Config/Options object that bundles Python's kwargs (volume/loop/control_id/on_completed/etc.); the same surface is reachable through the Config builder signalwire.relay.call.Call.join_room: Java Call action method takes a typed Config/Options object that bundles Python's kwargs (volume/loop/control_id/on_completed/etc.); the same surface is reachable through the Config builder signalwire.relay.call.Call.live_translate: Java Call action method takes a typed Config/Options object that bundles Python's kwargs (volume/loop/control_id/on_completed/etc.); the same surface is reachable through the Config builder signalwire.relay.call.Call.on: Java Call action method takes a typed Config/Options object that bundles Python's kwargs (volume/loop/control_id/on_completed/etc.); the same surface is reachable through the Config builder -signalwire.relay.call.Call.pass_: Python Call.pass_ is the renamed Python keyword-conflict for the SIP REFER pass-through verb; Java exposes the same method as call.transfer() without a name collision signalwire.relay.call.Call.pay: Java Call action method takes a typed Config object that bundles Python's kwargs (volume/loop/control_id/on_completed/etc.) AND returns a typed Action subclass (PlayAction/CollectAction/etc.) for typed-fluent control; Python takes positional kwargs and returns the generic Action base signalwire.relay.call.Call.play: Java Call action method takes a typed Config object that bundles Python's kwargs (volume/loop/control_id/on_completed/etc.) AND returns a typed Action subclass (PlayAction/CollectAction/etc.) for typed-fluent control; Python takes positional kwargs and returns the generic Action base signalwire.relay.call.Call.play_and_collect: Java Call action method takes a typed Config object that bundles Python's kwargs (volume/loop/control_id/on_completed/etc.) AND returns a typed Action subclass (PlayAction/CollectAction/etc.) for typed-fluent control; Python takes positional kwargs and returns the generic Action base @@ -175,138 +143,69 @@ signalwire.relay.call.Call.stream: Java Call action method takes a typed Config signalwire.relay.call.Call.tap: Java Call action method takes a typed Config object that bundles Python's kwargs (volume/loop/control_id/on_completed/etc.) AND returns a typed Action subclass (PlayAction/CollectAction/etc.) for typed-fluent control; Python takes positional kwargs and returns the generic Action base signalwire.relay.call.Call.transcribe: Java Call action method takes a typed Config object that bundles Python's kwargs (volume/loop/control_id/on_completed/etc.) AND returns a typed Action subclass (PlayAction/CollectAction/etc.) for typed-fluent control; Python takes positional kwargs and returns the generic Action base signalwire.relay.call.Call.user_event: Java Call action method takes a typed Config/Options object that bundles Python's kwargs (volume/loop/control_id/on_completed/etc.); the same surface is reachable through the Config builder -signalwire.relay.call.Call.wait_for_answered: omitted — no relay Call state-wait primitive in the Java port (the generic wait_for / wait_for_ended are themselves omitted in PORT_OMISSIONS.md as having no direct Java analog), so there is nothing to build the typed state-wait on -signalwire.relay.call.Call.wait_for_ending: omitted — no relay Call state-wait primitive in the Java port (the generic wait_for / wait_for_ended are themselves omitted in PORT_OMISSIONS.md as having no direct Java analog), so there is nothing to build the typed state-wait on -signalwire.relay.call.Call.wait_for_ringing: omitted — no relay Call state-wait primitive in the Java port (the generic wait_for / wait_for_ended are themselves omitted in PORT_OMISSIONS.md as having no direct Java analog), so there is nothing to build the typed state-wait on -signalwire.relay.call.CollectAction.__init__: Java relay Action subclass constructor takes (controlId, call) — id-first identifier, owner second; Python takes (call, control_id) — the order swap is the canonical Java convention -signalwire.relay.call.CollectAction.pause: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.CollectAction.resume: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.CollectAction.start_input_timers: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.CollectAction.stop: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.CollectAction.volume: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.DetectAction.__init__: Java relay Action subclass constructor takes (controlId, call) — id-first identifier, owner second; Python takes (call, control_id) — the order swap is the canonical Java convention -signalwire.relay.call.DetectAction.stop: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.FaxAction.stop: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.PayAction.__init__: Java relay Action subclass constructor takes (controlId, call) — id-first identifier, owner second; Python takes (call, control_id) — the order swap is the canonical Java convention -signalwire.relay.call.PayAction.stop: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.PlayAction.__init__: Java relay Action subclass constructor takes (controlId, call) — id-first identifier, owner second; Python takes (call, control_id) — the order swap is the canonical Java convention -signalwire.relay.call.PlayAction.pause: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.PlayAction.resume: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.PlayAction.stop: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.PlayAction.volume: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.RecordAction.__init__: Java relay Action subclass constructor takes (controlId, call) — id-first identifier, owner second; Python takes (call, control_id) — the order swap is the canonical Java convention -signalwire.relay.call.RecordAction.pause: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.RecordAction.resume: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.RecordAction.stop: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.StandaloneCollectAction.__init__: Java relay Action subclass constructor takes (controlId, call) — id-first identifier, owner second; Python takes (call, control_id) — the order swap is the canonical Java convention -signalwire.relay.call.StandaloneCollectAction.start_input_timers: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.StandaloneCollectAction.stop: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.StreamAction.__init__: Java relay Action subclass constructor takes (controlId, call) — id-first identifier, owner second; Python takes (call, control_id) — the order swap is the canonical Java convention -signalwire.relay.call.StreamAction.stop: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.TapAction.__init__: Java relay Action subclass constructor takes (controlId, call) — id-first identifier, owner second; Python takes (call, control_id) — the order swap is the canonical Java convention -signalwire.relay.call.TapAction.stop: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally -signalwire.relay.call.TranscribeAction.__init__: Java relay Action subclass constructor takes (controlId, call) — id-first identifier, owner second; Python takes (call, control_id) — the order swap is the canonical Java convention -signalwire.relay.call.TranscribeAction.stop: Java relay Action sub-action method returns the request payload as Map for caller inspection; Python returns void as the same payload is materialised internally +signalwire.relay.call.CollectAction.pause: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.CollectAction.resume: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.CollectAction.start_input_timers: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.CollectAction.stop: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.CollectAction.volume: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.DetectAction.stop: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.FaxAction.stop: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.PayAction.stop: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.PlayAction.pause: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.PlayAction.resume: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.PlayAction.stop: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.PlayAction.volume: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.RecordAction.pause: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.RecordAction.resume: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.RecordAction.stop: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.StandaloneCollectAction.start_input_timers: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.StandaloneCollectAction.stop: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.StreamAction.stop: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.TapAction.stop: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical +signalwire.relay.call.TranscribeAction.stop: Java relay Action sub-action method returns void (the request is dispatched via executeOnCall and the caller inspects state through the Action/event model); the reference returns the relay-server response payload as dict[str, Any] from its await self.call._execute(...) — wire behavior identical signalwire.relay.client.RelayClient.dial: Java RelayClient.dial takes only the device list; tag/max_duration/dial_timeout move to a typed Options or setter pair in Java -signalwire.relay.client.RelayClient.on_call: Java RelayClient.onCall/onMessage takes a typed CallHandler/MessageHandler functional interface and returns it (caller can detach via off()); Python takes a generic Callable[[Call|Message], None] and returns void -signalwire.relay.client.RelayClient.on_message: Java RelayClient.onCall/onMessage takes a typed CallHandler/MessageHandler functional interface and returns it (caller can detach via off()); Python takes a generic Callable[[Call|Message], None] and returns void +signalwire.relay.client.RelayClient.on_call: Java RelayClient.onCall takes a typed Consumer handler and returns void (the handler is stored in a field; there is no handle to hand back); the reference's on_call is a DECORATOR, so it returns the handler it was given (`def on_call(self, handler: CallHandler) -> CallHandler: ... return handler`) to preserve the decorated name — wire behavior identical +signalwire.relay.client.RelayClient.on_message: Java RelayClient.onMessage takes a typed Consumer handler and returns void (the handler is stored in a field; there is no handle to hand back); the reference's on_message is a DECORATOR, so it returns the handler it was given (`def on_message(self, handler: MessageHandler) -> MessageHandler: ... return handler`) to preserve the decorated name — wire behavior identical signalwire.relay.client.RelayClient.receive: Java RelayClient.receive/unreceive returns the relay-server response payload as Map for caller inspection; Python returns void and surfaces errors via exceptions signalwire.relay.client.RelayClient.send_message: Java RelayClient.sendMessage takes (context, from_number, to_number, body, media, tags); Python adds region and on_completed kwargs that move to a typed Options/Listener in Java signalwire.relay.client.RelayClient.unreceive: Java RelayClient.receive/unreceive returns the relay-server response payload as Map for caller inspection; Python returns void and surfaces errors via exceptions -signalwire.relay.client.RelayError.__init__: Java RelayError takes only the message; the optional code arg is set via setError() or routed through the typed RelayException hierarchy in Java -signalwire.relay.event.CallReceiveEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.CallStateEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.CollectEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.ConferenceEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.ConnectEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.DetectEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.DialEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.FaxEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.MessageReceiveEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.MessageStateEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.PayEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.PlayEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.QueueEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.RecordEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.ReferEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.RelayEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.SendDigitsEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.StreamEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.TapEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.event.TranscribeEvent.__init__: Java relay event constructors take only the four header fields (event_type, timestamp, params, plus call_id where present); Python flattens the typed event payload (call_state/direction/etc.) into __init__ params, while Java keeps it accessible via getters on the typed event subclass -signalwire.relay.message.Message.__init__: Java Message constructor is internal (created by RelayClient on event dispatch); the typed message_id/context/direction/etc. arrive via setters or Builder pre-emit signalwire.rest._base.HttpClient.post: Java's typed CRUD/HTTP base classes accept the optional params kwarg via a typed Map; the additional fluent overloads cover the no-params case. Python takes params as a kwarg on the single method -signalwire.rest._pagination.PaginatedIterator.__init__: Java's typed CRUD/HTTP base classes accept the optional params kwarg via a typed Map; the additional fluent overloads cover the no-params case. Python takes params as a kwarg on the single method -signalwire.rest._base.SignalWireRestError.__init__: Java's error constructor carries the full failure envelope (statusCode, method, path, url, responseBody) — a superset of Python's (status_code, body, url, method). It keeps the java-idiom getPath() backing field (a documented accessor, see PORT_ADDITIONS) ALONGSIDE the reference's url (item 1.3a), so the constructor param list is one wider than Python's -signalwire.rest._base.SignalWireRestTransportError.__init__: Java's SignalWireRestTransportError(method, path, url, cause) takes the same method/path/url envelope as RestError plus an explicit Throwable cause (the java-idiom equivalent of Python's `raise ... from exc`), instead of Python's positional (body, url, method) with no separate exception param — the body message is derived from cause.getMessage() rather than passed in directly, and statusCode is fixed at the family's NO_STATUS (0) sentinel rather than omitted (plan 1.3b) signalwire.skills.mcp_gateway.skill.MCPGatewaySkill.register_tools: Java built-in skill idiom — registerTools() RETURNS a List for the SkillManager to register with the agent, whereas Python's register_tools returns void and calls self.define_tool() directly (same divergence recorded at signalwire.core.skill_base.SkillBase.register_tools). Wire/surface identical; the SURFACE gate matches. signalwire.skills.mcp_gateway.skill.MCPGatewaySkill.setup: Java built-in skill idiom — setup(Map params) takes the typed params map at attach time, whereas Python's setup(self) is parameterless and reads self.params (kwargs flow from SkillManager.add_skill). Same divergence recorded at signalwire.core.skill_base.SkillBase.setup; behavior-identical. -signalwire.skills.registry.SkillRegistry.logger: Python's reference exposes a logger attribute on the class for runtime introspection; Java threads logging through SLF4J without exposing a typed logger field -signalwire.skills.spider.skill.SpiderSkill.__init__: Java built-in skill constructor is parameterless (params arrive at setup() time per Java's skill lifecycle); Python takes (agent, params) on construction ## POM (signalwire.pom.pom) — Java idiom -signalwire.pom.pom.PromptObjectModel.__init__: java-builder-ctors — Java exposes overloaded ctors (default, copy-from-list, copy-from-PromptObjectModel) where Python has a single __init__ with default arg signalwire.pom.pom.PromptObjectModel.add_section: java-builder-overload — Java exposes 3 overloads (title-only, title+kwargs, full builder pattern) where Python has a single positional+kwargs signature signalwire.pom.pom.PromptObjectModel.from_json: java-overload-pair — Java pair of static factories (from_json(String), from_json_map(List)) where Python's from_json takes Union[str, dict] at one signature signalwire.pom.pom.PromptObjectModel.from_yaml: java-overload-pair — Java pair of static factories (from_yaml(String), from_yaml_map(List)) where Python's from_yaml takes Union[str, dict] at one signature -signalwire.pom.pom.Section.__init__: java-builder-ctors — Java exposes overloaded ctors (default, builder, copy) where Python has a single __init__ with positional+kwargs signalwire.pom.pom.Section.add_subsection: java-builder-overload — Java exposes 2 overloads (title-only, title+kwargs) where Python has single positional+kwargs -signalwire.pom.pom.Section.render_markdown: java-overload — Java has overloads with/without sectionNumber list parameter; Python uses optional default -signalwire.pom.pom.Section.render_xml: java-overload — Java has overloads with/without indent + sectionNumber parameters; Python uses optional defaults # --- item H/I subsystem signature divergences (appended) --- -signalwire.agent_server.AgentServer.setup_sip_routing: Java-idiom: setupSipRouting()/setupSipRouting(route,autoMap) overloads; the no-arg form enumerates first. Python's single (route, auto_map) signature is covered by the 2-arg overload — param-count differs by overload -signalwire.core.agent.prompt.manager.PromptManager.__init__: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical -signalwire.core.agent.tools.registry.ToolRegistry.__init__: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.auth_handler.AuthHandler.flask_decorator: Java-idiom signature divergence: a typed functional-interface / boxed scalar / concrete type stands in for Python's generic Callable / union / dynamic type; wire behavior identical -signalwire.core.auth_handler.AuthHandler.get_fastapi_dependency: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.auth_handler.AuthHandler.verify_basic_auth: Java-idiom signature divergence: a typed functional-interface / boxed scalar / concrete type stands in for Python's generic Callable / union / dynamic type; wire behavior identical signalwire.core.auth_handler.AuthHandler.verify_bearer_token: Java-idiom signature divergence: a typed functional-interface / boxed scalar / concrete type stands in for Python's generic Callable / union / dynamic type; wire behavior identical -signalwire.core.config_loader.ConfigLoader.__init__: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.config_loader.ConfigLoader.find_config_file: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical -signalwire.core.config_loader.ConfigLoader.merge_with_env: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical -signalwire.core.config_loader.ConfigLoader.substitute_vars: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.function_result.FunctionResult.join_conference: Java-idiom signature divergence: a typed functional-interface / boxed scalar / concrete type stands in for Python's generic Callable / union / dynamic type; wire behavior identical -signalwire.core.logging_config.get_logger: Java-idiom fold: the port exposes this reference member through a differently-named accessor / folds it onto a related class; covered at the surface layer (rename/projection), so the raw signature name is absent here -signalwire.core.logging_config.strip_control_chars: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical -signalwire.core.mixins.ai_config_mixin.AIConfigMixin.add_mcp_server: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.mixins.tool_mixin.ToolMixin.define_tools: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical -signalwire.core.mixins.web_mixin.WebMixin.register_routing_callback: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical -signalwire.core.pom_builder.PomBuilder.add_section: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.pom_builder.PomBuilder.add_subsection: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.security.security_utils.filter_sensitive_headers: Java-idiom signature divergence: a typed functional-interface / boxed scalar / concrete type stands in for Python's generic Callable / union / dynamic type; wire behavior identical -signalwire.core.security.session_manager.SessionManager.create_session: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical -signalwire.core.security_config.SecurityConfig.__init__: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.security_config.SecurityConfig.get_basic_auth: Java-idiom signature divergence: fluent self-return (or a concrete typed return / small record) where Python returns void / a tuple / a dynamic value; wire behavior identical -signalwire.core.security_config.SecurityConfig.get_security_headers: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.security_config.SecurityConfig.validate_ssl_config: Java-idiom signature divergence: fluent self-return (or a concrete typed return / small record) where Python returns void / a tuple / a dynamic value; wire behavior identical signalwire.core.skill_base.SkillBase.define_tool: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.skill_manager.SkillManager.load_skill: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.swaig_function.SWAIGFunction.execute: Java-idiom signature divergence: a typed functional-interface / boxed scalar / concrete type stands in for Python's generic Callable / union / dynamic type; wire behavior identical -signalwire.core.swaig_function.SWAIGFunction.to_swaig: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.swaig_function.SWAIGFunction.validate_args: Java-idiom signature divergence: fluent self-return (or a concrete typed return / small record) where Python returns void / a tuple / a dynamic value; wire behavior identical -signalwire.core.swml_builder.SWMLBuilder.add_section: Java-idiom signature divergence: fluent self-return (or a concrete typed return / small record) where Python returns void / a tuple / a dynamic value; wire behavior identical signalwire.core.swml_builder.SWMLBuilder.ai: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical -signalwire.core.swml_builder.SWMLBuilder.answer: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical -signalwire.core.swml_builder.SWMLBuilder.hangup: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.swml_builder.SWMLBuilder.play: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical -signalwire.core.swml_builder.SWMLBuilder.reset: Java-idiom signature divergence: fluent self-return (or a concrete typed return / small record) where Python returns void / a tuple / a dynamic value; wire behavior identical -signalwire.core.swml_builder.SWMLBuilder.say: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.swml_handler.AIVerbHandler.build_config: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.swml_handler.AIVerbHandler.validate_config: sig-oracle blind spot (L12): the signature oracle records no method here (it did not capture the subclass override / property), while the SURFACE oracle does and the surface gate matches it — the method is real, present, and behavior-correct; this is a port-only signature only against the narrower signature oracle signalwire.core.swml_handler.SWMLVerbHandler.validate_config: Java-idiom signature divergence: fluent self-return (or a concrete typed return / small record) where Python returns void / a tuple / a dynamic value; wire behavior identical -signalwire.core.swml_renderer.SwmlRenderer.render_function_response_swml: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.swml_renderer.SwmlRenderer.render_swml: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.core.swml_service.SWMLService.add_section: Java-idiom signature divergence: fluent self-return (or a concrete typed return / small record) where Python returns void / a tuple / a dynamic value; wire behavior identical signalwire.core.swml_service.SWMLService.add_verb: Java-idiom signature divergence: fluent self-return (or a concrete typed return / small record) where Python returns void / a tuple / a dynamic value; wire behavior identical signalwire.core.swml_service.SWMLService.add_verb_to_section: Java-idiom signature divergence: fluent self-return (or a concrete typed return / small record) where Python returns void / a tuple / a dynamic value; wire behavior identical -signalwire.core.swml_service.SWMLService.register_routing_callback: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.list_skills: sig-oracle blind spot (L12): the signature oracle records no method here (it did not capture the subclass override / property), while the SURFACE oracle does and the surface gate matches it — the method is real, present, and behavior-correct; this is a port-only signature only against the narrower signature oracle -signalwire.pom.pom.Section.add_body: Java-idiom fold: the port exposes this reference member through a differently-named accessor / folds it onto a related class; covered at the surface layer (rename/projection), so the raw signature name is absent here -signalwire.pom.pom.Section.add_bullets: Java-idiom fold: the port exposes this reference member through a differently-named accessor / folds it onto a related class; covered at the surface layer (rename/projection), so the raw signature name is absent here -signalwire.pom.pom.Section.to_dict: Java-idiom fold: the port exposes this reference member through a differently-named accessor / folds it onto a related class; covered at the surface layer (rename/projection), so the raw signature name is absent here signalwire.prefabs.concierge.ConciergeAgent.on_summary: sig-oracle blind spot (L12): the signature oracle records no method here (it did not capture the subclass override / property), while the SURFACE oracle does and the surface gate matches it — the method is real, present, and behavior-correct; this is a port-only signature only against the narrower signature oracle signalwire.prefabs.faq_bot.FAQBotAgent.on_summary: sig-oracle blind spot (L12): the signature oracle records no method here (it did not capture the subclass override / property), while the SURFACE oracle does and the surface gate matches it — the method is real, present, and behavior-correct; this is a port-only signature only against the narrower signature oracle signalwire.prefabs.info_gatherer.InfoGathererAgent.on_swml_request: Java-idiom signature divergence: a typed functional-interface / boxed scalar / concrete type stands in for Python's generic Callable / union / dynamic type; wire behavior identical @@ -314,10 +213,7 @@ signalwire.prefabs.info_gatherer.InfoGathererAgent.set_question_callback: Java-i signalwire.prefabs.receptionist.ReceptionistAgent.on_summary: sig-oracle blind spot (L12): the signature oracle records no method here (it did not capture the subclass override / property), while the SURFACE oracle does and the surface gate matches it — the method is real, present, and behavior-correct; this is a port-only signature only against the narrower signature oracle signalwire.prefabs.survey.SurveyAgent.on_summary: sig-oracle blind spot (L12): the signature oracle records no method here (it did not capture the subclass override / property), while the SURFACE oracle does and the surface gate matches it — the method is real, present, and behavior-correct; this is a port-only signature only against the narrower signature oracle signalwire.register_skill: Java-idiom signature divergence: a typed functional-interface / boxed scalar / concrete type stands in for Python's generic Callable / union / dynamic type; wire behavior identical -signalwire.relay.call.Action.wait: Java-idiom fold: the port exposes this reference member through a differently-named accessor / folds it onto a related class; covered at the surface layer (rename/projection), so the raw signature name is absent here signalwire.relay.call.Call.wait_for: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical -signalwire.relay.call.Call.wait_for_ended: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical -signalwire.relay.call.FaxAction.__init__: Java relay Action subclass constructor takes (controlId, call) — id-first identifier, owner second; Python takes (call, control_id, method_prefix). The send/receive method prefix is fixed per Java subclass (SendFaxAction/ReceiveFaxAction) instead of a constructor arg signalwire.relay.event.CallReceiveEvent.from_payload: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.relay.event.CallStateEvent.from_payload: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.relay.event.CallingErrorEvent.from_payload: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical @@ -341,7 +237,6 @@ signalwire.relay.event.SendDigitsEvent.from_payload: Java-idiom signature diverg signalwire.relay.event.StreamEvent.from_payload: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.relay.event.TapEvent.from_payload: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.relay.event.TranscribeEvent.from_payload: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical -signalwire.relay.message.Message.wait: Java-idiom fold: the port exposes this reference member through a differently-named accessor / folds it onto a related class; covered at the surface layer (rename/projection), so the raw signature name is absent here signalwire.skills.api_ninjas_trivia.skill.ApiNinjasTriviaSkill.register_tools: sig-oracle blind spot (L12): the signature oracle records no method here (it did not capture the subclass override / property), while the SURFACE oracle does and the surface gate matches it — the method is real, present, and behavior-correct; this is a port-only signature only against the narrower signature oracle signalwire.skills.api_ninjas_trivia.skill.ApiNinjasTriviaSkill.setup: sig-oracle blind spot (L12): the signature oracle records no method here (it did not capture the subclass override / property), while the SURFACE oracle does and the surface gate matches it — the method is real, present, and behavior-correct; this is a port-only signature only against the narrower signature oracle signalwire.skills.claude_skills.skill.ClaudeSkillsSkill.register_tools: sig-oracle blind spot (L12): the signature oracle records no method here (it did not capture the subclass override / property), while the SURFACE oracle does and the surface gate matches it — the method is real, present, and behavior-correct; this is a port-only signature only against the narrower signature oracle @@ -377,12 +272,7 @@ signalwire.skills.wikipedia_search.skill.WikipediaSearchSkill.register_tools: si signalwire.skills.wikipedia_search.skill.WikipediaSearchSkill.setup: sig-oracle blind spot (L12): the signature oracle records no method here (it did not capture the subclass override / property), while the SURFACE oracle does and the surface gate matches it — the method is real, present, and behavior-correct; this is a port-only signature only against the narrower signature oracle signalwire.utils.schema_utils.SchemaUtils.generate_method_body: sig-oracle blind spot (L12): the signature oracle records no method here (it did not capture the subclass override / property), while the SURFACE oracle does and the surface gate matches it — the method is real, present, and behavior-correct; this is a port-only signature only against the narrower signature oracle signalwire.utils.schema_utils.SchemaUtils.generate_method_signature: sig-oracle blind spot (L12): the signature oracle records no method here (it did not capture the subclass override / property), while the SURFACE oracle does and the surface gate matches it — the method is real, present, and behavior-correct; this is a port-only signature only against the narrower signature oracle -signalwire.web.web_service.WebService.__init__: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical signalwire.web.web_service.WebService.start: Java-idiom signature divergence: the port collapses Python's optional kwargs into a builder / explicit-overload / no-arg+setter shape (or takes no back-reference `agent` param — the manager is standalone), so the param count differs; wire behavior is identical -signalwire.relay.event.CallingErrorEvent.__init__: Java-idiom: the event constructor takes (eventType, timestamp, params) and reads code/message/call_id out of the params map; Python spreads them as explicit __init__ args. Param count differs; wire payload identical. -signalwire.relay.event.DenoiseEvent.__init__: Java-idiom: the event constructor takes (eventType, timestamp, params) and reads denoised/call_id out of the params map; Python spreads them as explicit __init__ args. Param count differs; wire payload identical. -signalwire.relay.event.EchoEvent.__init__: Java-idiom: the event constructor takes (eventType, timestamp, params) and reads state/call_id out of the params map; Python spreads them as explicit __init__ args. Param count differs; wire payload identical. -signalwire.relay.event.HoldEvent.__init__: Java-idiom: the event constructor takes (eventType, timestamp, params) and reads state/call_id out of the params map; Python spreads them as explicit __init__ args. Param count differs; wire payload identical. # ── SIGNATURE ADDITIONS surviving the accessor-fold / dunder-exclude / DTO-emit # passes: genuine port-only signatures with NO same-class reference twin (typed @@ -462,5 +352,4 @@ signalwire.relay.client.RelayClient.set_relay_protocol: ADDITION — Java's setR # non-ASGI server and does not expose the framework instance). impossible: the # member cannot exist without a public ASGI-app handle the JDK-HttpServer idiom # does not have (TS/php that also wrap a framework object omit the analog). -signalwire.web.web_service.WebService.app: impossible: Python's WebService.app returns the underlying FastAPI ASGI app for embedding; Java's WebService wraps the JDK com.sun.net.httpserver.HttpServer and exposes no public framework-instance accessor (private `server` field), so there is no ASGI-app handle to surface. Same idiom as AgentServer.app. diff --git a/README.md b/README.md index 285fc202..3b27a8bb 100644 --- a/README.md +++ b/README.md @@ -47,36 +47,31 @@ Each agent is a self-contained microservice that generates [SWML](docs/swml_serv ```java import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - import java.time.LocalTime; +import java.time.ZoneId; import java.util.List; import java.util.Map; public class QuickstartAgent { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("my-agent") - .route("/") - .port(3000) - .build(); - - agent.addLanguage("English", "en-US", "inworld.Mark"); - agent.promptAddSection("Role", "You are a helpful assistant."); - agent.promptAddSection("Rules", "", List.of( - "Always answer concisely", - "Use the get_time tool when asked about the time" - )); - - agent.defineTool( - "get_time", - "Get the current time", - Map.of(), - (toolArgs, rawData) -> - new FunctionResult("The time is " + LocalTime.now()) - ); - - agent.run(); - } + public static void main(String[] args) throws Exception { + var agent = AgentBase.builder().name("my-agent").route("/").port(3000).build(); + + agent.addLanguage("English", "en-US", "inworld.Mark"); + agent.promptAddSection("Role", "You are a helpful assistant."); + agent.promptAddSection( + "Rules", + "", + List.of("Always answer concisely", "Use the get_time tool when asked about the time")); + + agent.defineTool( + "get_time", + "Get the current time", + Map.of(), + (toolArgs, rawData) -> + new FunctionResult("The time is " + LocalTime.now(ZoneId.systemDefault()))); + + agent.run(); + } } ``` @@ -131,31 +126,32 @@ Real-time call control and messaging over WebSocket. The RELAY client connects t ```java import com.signalwire.sdk.relay.RelayClient; - import java.util.List; import java.util.Map; public class QuickstartRelay { - public static void main(String[] args) throws Exception { - var client = RelayClient.builder() - .project("your-project-id") - .token("your-api-token") - .space("example.signalwire.com") - .contexts(List.of("default")) - .build(); - - client.onCall(call -> { - call.answer(); - var action = call.play(List.of(Map.of( - "type", "tts", - "params", Map.of("text", "Welcome to SignalWire!") - ))); - action.waitForCompletion(); - call.hangup(); + public static void main(String[] args) throws Exception { + var client = + RelayClient.builder() + .project("your-project-id") + .token("your-api-token") + .space("example.signalwire.com") + .contexts(List.of("default")) + .build(); + + client.onCall( + call -> { + call.answer(); + var action = + call.play( + List.of( + Map.of("type", "tts", "params", Map.of("text", "Welcome to SignalWire!")))); + action.waitForCompletion(); + call.hangup(); }); - client.run(); - } + client.run(); + } } ``` @@ -177,37 +173,47 @@ Synchronous REST client for managing SignalWire resources and controlling calls import com.signalwire.sdk.rest.RestClient; import com.signalwire.sdk.rest.namespaces.generated.Calling; import com.signalwire.sdk.rest.namespaces.generated.DatasphereDocuments; - import java.util.List; import java.util.Map; public class QuickstartRest { - public static void main(String[] args) throws Exception { - var client = RestClient.builder() - .project("your-project-id") - .token("your-api-token") - .space("example.signalwire.com") - .build(); - - // Create an AI agent - client.fabric().aiAgents().create(Map.of( - "name", "Support Bot", - "prompt", Map.of("text", "You are a helpful support agent.") - )); - - // Control a live call - client.calling().play("call-id", Calling.PlayRequest.builder() + public static void main(String[] args) throws Exception { + var client = + RestClient.builder() + .project("your-project-id") + .token("your-api-token") + .space("example.signalwire.com") + .build(); + + // Create an AI agent + client + .fabric() + .aiAgents() + .create( + Map.of( + "name", + "Support Bot", + "prompt", + Map.of("text", "You are a helpful support agent."))); + + // Control a live call + client + .calling() + .play( + "call-id", + Calling.PlayRequest.builder() .play(List.of(Map.of("type", "tts", "params", Map.of("text", "Hello!")))) .build()); - // Search for phone numbers - client.phoneNumbers().search(Map.of("areacode", "512")); + // Search for phone numbers + client.phoneNumbers().search(Map.of("areacode", "512")); - // Semantic search across documents - client.datasphere().documents().search(DatasphereDocuments.SearchRequest.builder() - .queryString("billing policy") - .build()); - } + // Semantic search across documents + client + .datasphere() + .documents() + .search(DatasphereDocuments.SearchRequest.builder().queryString("billing policy").build()); + } } ``` diff --git a/TLS_VERIFY_ALLOW.md b/TLS_VERIFY_ALLOW.md index 9cd4b136..e2b79633 100644 --- a/TLS_VERIFY_ALLOW.md +++ b/TLS_VERIFY_ALLOW.md @@ -6,4 +6,19 @@ Format: `- — reason (approver, date)` where `` is A config-gated opt-in with a SECURE DEFAULT is the ONLY legitimate allowlist reason. NEVER allowlist a hardcoded verify-off to go green (RULES.md §4). -- tls-verify-off:src/main/java/com/signalwire/sdk/skills/builtin/McpGatewaySkill.java:576 — mcp_gateway skill's `verify_ssl` opt-out. The all-trusting `InsecureTrustManager` is constructed ONLY inside the `if (!verifySsl)` guard in `httpClient()`, and `verify_ssl` defaults TRUE (verification ON — the secure default the python reference endorses via `verify=self.verify_ssl`). The verify_ssl_parity gate independently proves the flag defaults secure. This is a named nested class (not inline) so the surface enumerator scopes its interface methods to the class, not the public skill surface; the class-def line is what the line-based gate flags, but the site is genuinely secure-default-gated. (burn-java-mcp, 2026-07-20) +Currently EMPTY — and it should stay that way. + +The one entry this file used to carry (the mcp_gateway `verify_ssl` opt-out in +`McpGatewaySkill`) was deleted on 2026-07-30: `tls_verify.py` now recognizes the +secure-default-gated java idiom directly, so the site passes on its own merits +and needs no exception. The gate proves the `InsecureTrustManager` class is +instantiated ONLY inside the `if (!verifySsl)` guard, and `verify_ssl_parity.py` +independently proves the flag defaults TRUE (verification ON). + +That entry was also a standing liability: an allowlist keyed by +`:` silently stops matching when anything above the site shifts +the line number, and a stale entry is not an error — it just quietly stops +covering. That is exactly what happened here (the site moved 576 → 617 when +javadoc was added), turning a documented, approved exception into a surprise +RED with no signal about why. Recognizing the idiom in the gate has no such +failure mode. diff --git a/build.gradle b/build.gradle index 798582d8..97be2287 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ plugins { } group = 'com.signalwire' -version = '4.0.0' +version = '3.0.0' java { sourceCompatibility = JavaVersion.VERSION_21 @@ -31,6 +31,15 @@ java { // arg0/arg1/... and the diff against the Python reference loses them. tasks.withType(JavaCompile).configureEach { options.compilerArgs += '-parameters' + // javac caps its diagnostic output at 100 warnings per compilation by + // default, so a source set with more findings than that reports exactly + // "100 warnings" and silently drops the rest. That makes the LINT gate + // UNDER-REPORT: the examples source set was sitting at 100-capped while its + // true count was higher, so a burndown driven off the log would have looked + // finished while findings remained. Raise the cap so the gate always prints + // every finding it found. + options.compilerArgs += '-Xmaxwarns' + options.compilerArgs += '100000' } repositories { @@ -67,19 +76,90 @@ dependencies { testImplementation 'javax.servlet:javax.servlet-api:4.0.1' } +// EXECUTION RECEIPT (the TEST gate's proof-of-execution). +// +// `gradle test` reports BUILD SUCCESSFUL for THREE different outcomes, and only +// one of them ran any test: +// * `:test` executed — tests actually ran. +// * `:test UP-TO-DATE` — incremental skip; nothing ran. +// * `:test FROM-CACHE` — the build cache replayed a previous run's +// outputs; nothing ran. +// Exit status cannot tell them apart, so a run-ci TEST PASS was previously ZERO +// evidence that the suite executed. That matters most exactly when it is least +// obvious: a commit that changes GENERATED types can be handed a replayed green +// (measured: a SWAIG regen that changed HoldAction.timeout Long->Double reported +// PASS off `1 from cache` in 6s, having executed nothing). +// +// Why a receipt and not one of the alternatives: +// * Requiring a fresh build/test-results/ tree DOES NOT WORK — FROM-CACHE +// RESTORES that tree, files and all, with a current mtime. It is a task +// OUTPUT, so the cache's whole job is to reproduce it. (Verified: deleting +// the tree and re-running printed `:test FROM-CACHE` and put all 208 XML +// files back.) +// * Parsing `> Task :test UP-TO-DATE` out of the log means the gate's +// correctness depends on Gradle's console formatting (log level, --console +// mode, rich-vs-plain output), which is presentation, not contract. +// A doLast action, by contrast, is part of the task's ACTIONS: Gradle skips the +// action list entirely when the task is up-to-date or served from cache, and runs +// it exactly when the task really executed. So the receipt's presence is a +// first-class execution signal from the build tool itself. +// +// The receipt lives OUTSIDE build/test-results/ and is deliberately NOT declared +// as a task output, so it is neither cached nor restored — the cache can replay +// the test XML but it can never forge the receipt. scripts/run-tests.sh deletes +// it before invoking gradle and requires it afterwards. +// +// It also carries the COUNTS (from a TestListener, which likewise only fires on +// real execution), so the gate can print what actually ran instead of asserting +// against a summary line. test { useJUnitPlatform() + + // Counters live on the task's extra properties so the doLast closure and the + // listener share state without a script-level mutable global (which would be + // wrong under Gradle's configuration cache). + ext.swExecutedTests = 0 + ext.swFailedTests = 0 + ext.swSkippedTests = 0 + + afterTest { desc, result -> + switch (result.resultType.toString()) { + case 'FAILURE': ext.swFailedTests++; break + case 'SKIPPED': ext.swSkippedTests++; break + default: break + } + ext.swExecutedTests++ + } + + doLast { + // Reached ONLY when the test task really executed (Gradle skips a task's + // actions wholesale on UP-TO-DATE / FROM-CACHE). + def receipt = new File(project.layout.buildDirectory.get().asFile, + 'sw-test-execution-receipt.txt') + receipt.parentFile.mkdirs() + receipt.text = [ + "executed=${ext.swExecutedTests}", + "failed=${ext.swFailedTests}", + "skipped=${ext.swSkippedTests}", + "finished_at=${new Date().format('yyyy-MM-dd HH:mm:ss')}", + ].join('\n') + '\n' + } } -// FMT gate — Spotless + google-java-format over every Java source set (main, -// test, and the tools/CLI sources that live under src/main + src/test). The -// formatter is source-style only and proven surface/emission-neutral (a +// FMT gate — Spotless + google-java-format over EVERY Java source in the repo: +// the SDK (src/main), the tests (src/test), all three example trees (examples/, +// rest/examples/, relay/examples/) and the audit helper (scripts/ +// SignatureDump.java). There is ONE formatting bar and every directory meets it +// — examples and tests are shipping code too, so nothing is carved out. The only +// thing NOT formatted is build output (build/, .gradle/), which is not source. +// The formatter is source-style only and proven surface/emission-neutral (a // reformat leaves port_signatures.json + port_surface.json byte-identical and // EMISSION 81/81 — verified during the rollout). run-ci.sh's FMT gate runs // `spotlessApply` locally and `spotlessCheck` in CI. spotless { java { - target 'src/**/*.java' + target 'src/**/*.java', 'examples/**/*.java', 'rest/examples/**/*.java', + 'relay/examples/**/*.java', 'scripts/**/*.java' googleJavaFormat('1.22.0') removeUnusedImports() trimTrailingWhitespace() @@ -124,12 +204,41 @@ tasks.withType(JavaCompile).configureEach { // * IterableAndIterator — PaginatedIterator is a public final SDK type // using the standard self-iterable pattern (implements both); the // only "fix" is dropping a public interface = a surface change. - // * JdkObsolete — WebhookFilterTest's HttpServletRequest proxy MUST - // return a StringBuffer from getRequestURL() (the servlet contract's - // declared type); a StringBuilder would ClassCastException. + // (JdkObsolete is NOT in this list: it used to be, to accommodate ONE + // test site, which turned a per-site fact into a repo-wide blind spot. + // It is now ON everywhere and suppressed at that single site with its + // reason — see WebhookFilterTest.Handler#invoke.) check('AnnotateFormatMethod', CheckSeverity.OFF) check('IterableAndIterator', CheckSeverity.OFF) - check('JdkObsolete', CheckSeverity.OFF) + // * DefaultPackage — the 73 example mains and scripts/SignatureDump + // are default-package BY CONTRACT, in three places that would all + // break together if a package were added: + // 1. examples/README.md:112 and docs/agent_guide.md tell users to + // run an example with `java -cp "$CP:examples" SimpleAgent` — + // the simple name IS the main class. A package would also force + // a matching directory layout on anyone copying the single file, + // which is the whole point of a one-file example. + // 2. build.gradle's own `runExample -PexampleClass=` + // task resolves mainClass from that bare simple name. + // 3. porting-sdk/scripts/examples_run.py (the EXAMPLES-RUN gate, in + // a DIFFERENT repo) hardcodes `-PexampleClass={f.stem}`, i.e. + // the file stem is the fully-qualified main class. + // scripts/SignatureDump.java is the same story: enumerate_signatures.py + // runs it as `java -cp SignatureDump`, and it feeds + // port_signatures.json — the input to the SIGNATURES and DRIFT gates. + // So this is a deliberate structural choice, not undone work; the + // check is OFF rather than suppressed at 74 sites. + check('DefaultPackage', CheckSeverity.OFF) + // PROMOTED to ERROR. ObjectToString ships as a mere WARNING, so it did + // not fail the gate — and it caught a real defect the moment lint first + // reached examples/: RestDemo printed an AvailablePhoneNumbersResponse + // (a final DTO with no toString()) by concatenation, so the demo emitted + // "AvailablePhoneNumbersResponse@4488aabb" instead of any phone number. + // The whole REST surface is generated pure-data DTOs with no toString(), + // so this is a repeatable trap for anyone writing an example or a log + // line. Repo-wide cost of the promotion: zero — that one site was the + // only occurrence, and it is fixed. + check('ObjectToString', CheckSeverity.ERROR) } } @@ -188,16 +297,30 @@ sourceSets { } } -// Examples are illustrative user code, NOT part of the SDK's shipped surface, -// so they are exempt from the SDK's LINT floor (Error Prone warnings-as-errors -// + Checkstyle). Turn both OFF on the examples source set — an unused import in -// a demo must not fail the SDK build/gates. (Spotless already skips examples/: -// its target is src/**/*.java only.) -tasks.named('compileExamplesJava') { - options.errorprone.enabled = false -} -tasks.matching { it.name == 'checkstyleExamples' }.configureEach { - enabled = false +// LINT/FMT SCOPE: the WHOLE tree. The `examples` source set above is linted at +// exactly the bar src/main and src/test meet — Error Prone warnings-as-errors +// plus Checkstyle, zero findings — and formatted by Spotless. Examples and tests +// are shipping code: a user copies an example verbatim, so a real bug in one is a +// real bug shipped. Nothing here is excluded; there is no vendored third-party +// Java in this repo, so there is nothing that could legitimately be. +// +// (This replaced a carve-out that set `options.errorprone.enabled = false` on +// compileExamplesJava and disabled checkstyleExamples outright, on the rationale +// that "an unused import in a demo must not fail the SDK build". Removing it +// found real defects in the example trees — see the commits that burned it down.) + +// The audit helper scripts/SignatureDump.java sits outside src/ and is compiled +// by raw javac from scripts/enumerate_signatures.py, so no Gradle source set saw +// it and NO lint ran on it — an undocumented carve-out by omission. It is +// load-bearing (it produces port_signatures.json, the input to the SIGNATURES and +// DRIFT gates), so it gets the same bar as everything else. This source set exists +// only to lint+compile it; nothing depends on its output. +sourceSets { + auditTools { + java { + srcDir 'scripts' + } + } } // runExample — compile every example, run the one named by -PexampleClass. @@ -423,16 +546,31 @@ tasks.register('relayLivenessDump', JavaExec) { } // secureDefaultDump — SECURE-DEFAULT differ (porting-sdk/scripts/diff_port_secure_default.py). -// Renders SWML for a default (secure) tool + a secure=false tool with the fixed corpus call_id and -// emits, per tool, whether it is secure and whether the rendered webhook reflects that (a __token / -// meta_data_token present iff secure). +// Renders SWML for a default (secure) tool + a secure=false tool and emits, per tool, the +// SDK-recorded secure flag plus that tool's SWAIG functions[] entry VERBATIM (token values +// redacted to ). The DIFFER classifies the payload; this task reports no verdict of its own. tasks.register('secureDefaultDump', JavaExec) { group = 'verification' - description = 'Dump the secure-default SWML render classifications as JSON (cross-port secure-default differ).' + description = 'Dump the secure-default SWML rendered payloads as JSON (cross-port secure-default differ).' mainClass = 'com.signalwire.sdk.tools.SecureDefaultDump' classpath = sourceSets.main.runtimeClasspath } +// tokenInteropMint — TOKEN-INTEROP checker (porting-sdk/scripts/diff_port_token_interop.py). +// Mints ONE token with the FIXED inputs the checker supplies in the environment and prints just +// that token, so the checker can validate it under the reference's own decoder — property 3 of the +// SWAIG tool-token contract (a correct key and a correct HMAC still leave the ENVELOPE encoding +// able to be wrong, and an unpadded token is unusable to every other implementation). +tasks.register('tokenInteropMint', JavaExec) { + group = 'verification' + description = 'Mint one SWAIG tool token with the checker-supplied fixed inputs (cross-port token-interop checker).' + mainClass = 'com.signalwire.sdk.tools.TokenInteropMint' + classpath = sourceSets.main.runtimeClasspath + // Inherit the invoking process env — the checker exports SW_TOKEN_INTEROP_* into it, and + // the fixture fails loud if they are missing (same convention as runExample above). + environment System.getenv() +} + // secretScrubDump — SECRET-SCRUB-LIVE differ (porting-sdk/scripts/diff_port_secret_scrub.py). // Drives the RelayClient through connect + an inbound authorization.state event at debug log level // with fixture sentinel credentials, captures its own stdout+stderr, and reports per-sentinel diff --git a/docs/api_reference.md b/docs/api_reference.md index 22c5722b..99c00e64 100644 --- a/docs/api_reference.md +++ b/docs/api_reference.md @@ -1648,19 +1648,6 @@ dataMap.webhook("POST", "Content-Type", "application/json")); ``` -##### `body(Map data)` -Set the JSON body for POST/PUT requests (supports `${variable}` substitution). - -**Usage:** -```java -dataMap.body(Map.of( - "query", "${args.search_term}", - "limit", 5, - "filters", Map.of( - "category", "${args.category}", - "active", true))); -``` - ##### `params(Map data)` Set URL query parameters (supports `${variable}` substitution). @@ -1865,7 +1852,7 @@ var searchTool = new DataMap("search_knowledge") .parameter("query", "string", "Search query", true) .parameter("category", "string", "Search category", false, List.of("docs", "faq", "policies")) .webhook("POST", "https://api.company.com/search", Map.of("Authorization", "Bearer TOKEN")) - .body(Map.of( + .params(Map.of( "query", "${args.query}", "category", "${args.category}", "limit", 5)) diff --git a/docs/datamap_guide.md b/docs/datamap_guide.md index 91f7f1e7..09c7eb46 100644 --- a/docs/datamap_guide.md +++ b/docs/datamap_guide.md @@ -48,7 +48,7 @@ Gson gson = new Gson(); ### 5. Webhook Configuration and HTTP Processing - [5.1 Webhook Structure](#51-webhook-structure) - [5.2 HTTP Methods and Headers](#52-http-methods-and-headers) -- [5.3 Request Body Construction](#53-request-body-construction) +- [5.3 Request Params Construction](#53-request-params-construction) - [5.4 Sequential Webhook Processing](#54-sequential-webhook-processing) - [5.5 Webhook Failure Detection](#55-webhook-failure-detection) @@ -1001,11 +1001,11 @@ DataMap functions can use various HTTP methods and headers to customize request - **Accept**: Specifies the format of the response body - **X-Request-ID**: Used for request tracking and correlation -### 5.3 Request Body Construction +### 5.3 Request Params Construction -DataMap functions can construct request bodies dynamically based on function arguments and context variables: +DataMap functions can construct request params dynamically based on function arguments and context variables. Use `params(...)` — it writes the `params` webhook key, which is in the contract and is read by the engine. (There is no `body(...)`: the `body` key is not a declared webhook property and no engine reader consumes it.) -**Request Body Examples:** +**Request Params Examples:** - **Simple Query**: `${args.query}` - **Complex Query**: `${function_name(args)}` - **JSON Object**: `${json_object}` diff --git a/eng/ruff.toml b/eng/ruff.toml new file mode 100644 index 00000000..a9a2a4f2 --- /dev/null +++ b/eng/ruff.toml @@ -0,0 +1,61 @@ +# REPO-LINT / REPO-FMT — the Python bar for signalwire-java. +# +# This repo is a Java SDK, but it carries hand-written Python under scripts/ that +# is fully load-bearing: the enumerators that produce port_signatures.json / +# port_surface.json (the inputs to the SIGNATURES, SURFACE and DRIFT gates) and +# the code generators that emit the committed REST/RELAY/SWML/SWAIG trees. Until +# now NO gate linted or formatted any of it — the tooling that enforces the Java +# bar was itself unchecked. +# +# The rule selection is copied from the reference implementation +# (signalwire-python/pyproject.toml [tool.ruff.lint]) so the fleet has ONE Python +# bar rather than ten invented ones. E501 is deliberately absent: line length is +# owned by `ruff format`, not the linter. +# +# SCOPE: the whole tree. Nothing is excluded — there is no vendored third-party +# Python here. `build/` and `.gradle/` are build output, not source, and ruff's +# own defaults already skip them along with the gitignored dirs. +# +# WHY eng/ AND NOT THE REPO ROOT: every other port keeps its linter config at the +# root (.golangci.yml, .rubocop.yml, phpstan.neon, clippy.toml, .clang-tidy), but +# porting-sdk's ROOT-HYGIENE gate has no allowlist entry for `ruff.toml` and reds +# on it as root clutter. Since ruff accepts --config, filing it here is the honest +# fix rather than an allowlist entry for a file that can simply move. ruff is +# always invoked from the repo root by scripts/_env.sh's sw_ruff, which supplies +# `--config eng/ruff.toml` exactly once so no call site can forget it and silently +# lint under ruff's defaults instead. (Adding `ruff.toml` to ROOT_HYGIENE's +# ALLOWED_ROOT_EXACT set alongside the other nine ports' linter configs is the +# better upstream fix — reported as a cross-repo finding.) + +target-version = "py310" +line-length = 88 + +[format] +# Pin STABLE formatting explicitly, matching the reference. Without this, a CI +# `ruff format --check` can resolve preview-mode formatting while a local stable +# run leaves the file unchanged — a local-vs-CI split with no visible cause. +preview = false + +[lint] +# E4/E7/E9 + F are the ruff defaults. B = flake8-bugbear (likely-bug patterns), +# S = flake8-bandit (security smells). Identical to the reference's selection. +select = ["E4", "E7", "E9", "F", "B", "S", "C4", "PERF", "SIM", "PTH", "RET", "RUF", "UP"] + +[lint.per-file-ignores] +# S603 (subprocess call) / S607 (partial executable path) across the enumerators +# and generators. Every one of these sites is a LIST-FORM invocation with the +# default shell=False, so there is no shell to interpolate into, and every argv +# vector is fixed at the call site — the only varying arguments are paths this +# repo computed for itself (the SDK jar, build/scripts, the google-java-format +# classpath, a spec file) or `sys.executable`, never network or user input. S607 +# fires on `javac` / `java` / `git` resolved via PATH, which is the normal and +# correct way a build tool invokes its own toolchain — pinning absolute paths +# would break every machine whose JDK is not where this one's is. Same rationale +# and same per-file (not blanket) scoping as the reference's +# signalwire/cli/dokku.py entry, so a NEW subprocess call in any OTHER file still +# reds the gate. +"scripts/enumerate_signatures.py" = ["S603", "S607"] +"scripts/enumerate_surface.py" = ["S603", "S607"] +"scripts/generate_exemptions.py" = ["S603"] +"scripts/generate_rest.py" = ["S603", "S607"] +"scripts/generate_rest_tests.py" = ["S603", "S607"] diff --git a/examples/AdvancedDatamapDemo.java b/examples/AdvancedDatamapDemo.java index ce471665..26957690 100644 --- a/examples/AdvancedDatamapDemo.java +++ b/examples/AdvancedDatamapDemo.java @@ -1,96 +1,109 @@ -/** +/* * Advanced DataMap Features Demo. * - * Demonstrates expression-based responses, webhook chains, foreach array - * processing, and fallback outputs -- all without custom webhook endpoints. + *

Demonstrates expression-based responses, webhook chains, foreach array processing, and + * fallback outputs -- all without custom webhook endpoints. */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.datamap.DataMap; import com.signalwire.sdk.swaig.FunctionResult; - import java.util.List; import java.util.Map; public class AdvancedDatamapDemo { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("advanced-datamap") - .route("/") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = AgentBase.builder().name("advanced-datamap").route("/").port(3000).build(); - agent.promptAddSection("Role", - "You are an assistant that demonstrates advanced DataMap features."); + agent.promptAddSection( + "Role", "You are an assistant that demonstrates advanced DataMap features."); - // 1. Expression-based command processor with pattern matching - var commandMap = new DataMap("command_processor") - .purpose("Process user commands with pattern matching") - .parameter("command", "string", "User command to process", true) - .parameter("target", "string", "Optional target for the command", false) - .expression("${args.command}", "^start", - new FunctionResult("Starting process: ${args.target}")) - .expression("${args.command}", "^stop", - new FunctionResult("Stopping process: ${args.target}")) - .expression("${args.command}", "^status", - new FunctionResult("Checking status of: ${args.target}"), - new FunctionResult("Unknown command: ${args.command}. Try start, stop, or status.")); + // 1. Expression-based command processor with pattern matching + var commandMap = + new DataMap("command_processor") + .purpose("Process user commands with pattern matching") + .parameter("command", "string", "User command to process", true) + .parameter("target", "string", "Optional target for the command", false) + .expression( + "${args.command}", "^start", new FunctionResult("Starting process: ${args.target}")) + .expression( + "${args.command}", "^stop", new FunctionResult("Stopping process: ${args.target}")) + .expression( + "${args.command}", + "^status", + new FunctionResult("Checking status of: ${args.target}"), + new FunctionResult( + "Unknown command: ${args.command}. Try start, stop, or status.")); - agent.registerSwaigFunction(commandMap.toSwaigFunction()); + agent.registerSwaigFunction(commandMap.toSwaigFunction()); - // 2. Webhook with foreach array processing - var searchMap = new DataMap("search_results") - .purpose("Search and format results from API") - .parameter("query", "string", "Search query", true) - .parameter("limit", "string", "Maximum results", false) - .webhook("GET", "https://search-api.example.com/search", - Map.of("Authorization", "Bearer ${search_token}")) - .params(Map.of("q", "${args.query}")) - .foreach(Map.of( - "input_key", "results", - "output_key", "formatted_results", - "max", 5, - "append", "Title: ${this.title}\n${this.summary}\nURL: ${this.url}\n\n" - )) - .output(new FunctionResult("Search results for \"${args.query}\":\n\n${formatted_results}")) - .errorKeys(List.of("error")); + // 2. Webhook with foreach array processing + var searchMap = + new DataMap("search_results") + .purpose("Search and format results from API") + .parameter("query", "string", "Search query", true) + .parameter("limit", "string", "Maximum results", false) + .webhook( + "GET", + "https://search-api.example.com/search", + Map.of("Authorization", "Bearer ${search_token}")) + .params(Map.of("q", "${args.query}")) + .foreach( + Map.of( + "input_key", "results", + "output_key", "formatted_results", + "max", 5, + "append", "Title: ${this.title}\n${this.summary}\nURL: ${this.url}\n\n")) + .output( + new FunctionResult("Search results for \"${args.query}\":\n\n${formatted_results}")) + .errorKeys(List.of("error")); - agent.registerSwaigFunction(searchMap.toSwaigFunction()); + agent.registerSwaigFunction(searchMap.toSwaigFunction()); - // 3. POST webhook with body and fallback - var feedbackMap = new DataMap("submit_feedback") - .purpose("Submit customer feedback") - .parameter("rating", "integer", "Rating from 1-5", true) - .parameter("comment", "string", "Feedback comment", false) - .webhook("POST", "https://api.example.com/feedback", - Map.of("Content-Type", "application/json")) - .body(Map.of( - "rating", "${args.rating}", - "comment", "${args.comment}", - "timestamp", "${system.timestamp}" - )) - .output(new FunctionResult("Thank you for your feedback!")) - .fallbackOutput(new FunctionResult("Feedback service is temporarily unavailable.")) - .globalErrorKeys(List.of("error", "fault", "exception")); + // 3. POST webhook with request params and fallback + var feedbackMap = + new DataMap("submit_feedback") + .purpose("Submit customer feedback") + .parameter("rating", "integer", "Rating from 1-5", true) + .parameter("comment", "string", "Feedback comment", false) + .webhook( + "POST", + "https://api.example.com/feedback", + Map.of("Content-Type", "application/json")) + .params( + Map.of( + "rating", "${args.rating}", + "comment", "${args.comment}", + "timestamp", "${system.timestamp}")) + .output(new FunctionResult("Thank you for your feedback!")) + .fallbackOutput(new FunctionResult("Feedback service is temporarily unavailable.")) + .globalErrorKeys(List.of("error", "fault", "exception")); - agent.registerSwaigFunction(feedbackMap.toSwaigFunction()); + agent.registerSwaigFunction(feedbackMap.toSwaigFunction()); - // 4. Expression-based smart calculator - var calcMap = new DataMap("smart_calculator") - .purpose("Smart calculator with conditional responses") - .parameter("expression", "string", "Mathematical expression", true) - .parameter("format", "string", "Output format (simple/detailed)", false) - .expression("${args.expression}", "^\\s*\\d+\\s*[+\\-*/]\\s*\\d+\\s*$", - new FunctionResult("Quick calculation: ${args.expression} = @{expr ${args.expression}}")) - .expression("${args.format}", "^detailed$", - new FunctionResult("Detailed: ${args.expression} = @{expr ${args.expression}} at @{strftime_tz UTC %Y-%m-%d %H:%M:%S}")) - .fallbackOutput(new FunctionResult( - "Expression: ${args.expression}\nResult: @{expr ${args.expression}}")); + // 4. Expression-based smart calculator + var calcMap = + new DataMap("smart_calculator") + .purpose("Smart calculator with conditional responses") + .parameter("expression", "string", "Mathematical expression", true) + .parameter("format", "string", "Output format (simple/detailed)", false) + .expression( + "${args.expression}", + "^\\s*\\d+\\s*[+\\-*/]\\s*\\d+\\s*$", + new FunctionResult( + "Quick calculation: ${args.expression} = @{expr ${args.expression}}")) + .expression( + "${args.format}", + "^detailed$", + new FunctionResult( + "Detailed: ${args.expression} = @{expr ${args.expression}} at @{strftime_tz UTC %Y-%m-%d %H:%M:%S}")) + .fallbackOutput( + new FunctionResult( + "Expression: ${args.expression}\nResult: @{expr ${args.expression}}")); - agent.registerSwaigFunction(calcMap.toSwaigFunction()); + agent.registerSwaigFunction(calcMap.toSwaigFunction()); - System.out.println("Starting Advanced DataMap agent on port 3000..."); - agent.run(); - } + System.out.println("Starting Advanced DataMap agent on port 3000..."); + agent.run(); + } } diff --git a/examples/AutoVivifiedExample.java b/examples/AutoVivifiedExample.java index b3ddc36d..12d537b8 100644 --- a/examples/AutoVivifiedExample.java +++ b/examples/AutoVivifiedExample.java @@ -1,70 +1,79 @@ -/** +/* * Auto-Vivified SWML Service Example. * - * Demonstrates calling verb methods directly on a Service (answer(), play(), - * record(), hangup(), etc.) instead of going through Document.addVerb(). - * Builds voicemail, IVR, and call transfer services that share a single - * Service instance per route. + *

Demonstrates calling verb methods directly on a Service (answer(), play(), record(), hangup(), + * etc.) instead of going through Document.addVerb(). Builds voicemail, IVR, and call transfer + * services that share a single Service instance per route. */ - import com.signalwire.sdk.swml.Service; - import java.util.List; import java.util.Map; public class AutoVivifiedExample { - public static void main(String[] args) throws Exception { - // --- Voicemail Service --- - // Auto-vivification: each Service method (answer, play, record, - // hangup) appends the matching verb to the underlying SWML - // Document; no manual Document.addVerb(...) required. - var voicemail = new Service("voicemail", "/voicemail"); + public static void main(String[] args) throws Exception { + // --- Voicemail Service --- + // Auto-vivification: each Service method (answer, play, record, + // hangup) appends the matching verb to the underlying SWML + // Document; no manual Document.addVerb(...) required. + var voicemail = new Service("voicemail", "/voicemail"); - voicemail.answer(null); - voicemail.play(Map.of("url", - "say:Hello, you have reached the voicemail service. Please leave a message after the beep.")); - voicemail.sleep(1000); - voicemail.play(Map.of("url", "https://example.com/beep.wav")); - voicemail.record(Map.of( - "format", "mp3", - "stereo", false, - "beep", false, - "max_length", 120, - "terminators", "#", - "status_url", "https://example.com/voicemail-status")); - voicemail.play(Map.of("url", "say:Thank you for your message. Goodbye!")); - voicemail.hangup(); + voicemail.answer(null); + voicemail.play( + Map.of( + "url", + "say:Hello, you have reached the voicemail service. Please leave a message after the beep.")); + voicemail.sleep(1000); + voicemail.play(Map.of("url", "https://example.com/beep.wav")); + voicemail.record( + Map.of( + "format", + "mp3", + "stereo", + false, + "beep", + false, + "max_length", + 120, + "terminators", + "#", + "status_url", + "https://example.com/voicemail-status")); + voicemail.play(Map.of("url", "say:Thank you for your message. Goodbye!")); + voicemail.hangup(); - // --- IVR Menu Service --- - // Same pattern, different composition. prompt() + transfer() are - // auto-vivified verb methods on Service. - var ivr = new Service("ivr", "/ivr"); + // --- IVR Menu Service --- + // Same pattern, different composition. prompt() + transfer() are + // auto-vivified verb methods on Service. + var ivr = new Service("ivr", "/ivr"); - ivr.answer(null); - ivr.prompt(Map.of( - "play", "say:Press 1 for sales, 2 for support, or 3 to leave a message.", - "max_digits", 1, - "terminators", "#")); - ivr.transfer(Map.of("dest", "main_menu")); + ivr.answer(null); + ivr.prompt( + Map.of( + "play", "say:Press 1 for sales, 2 for support, or 3 to leave a message.", + "max_digits", 1, + "terminators", "#")); + ivr.transfer(Map.of("dest", "main_menu")); - // --- Call Transfer Service --- - // connect() fans out to multiple destinations in parallel. - var transfer = new Service("transfer", "/transfer"); + // --- Call Transfer Service --- + // connect() fans out to multiple destinations in parallel. + var transfer = new Service("transfer", "/transfer"); - transfer.answer(null); - transfer.play(Map.of("url", "say:Connecting you with the next available agent.")); - transfer.connect(Map.of( - "from", "+15551234567", - "timeout", 30, - "parallel", List.of( - Map.of("to", "+15552223333"), - Map.of("to", "+15554445555")))); - transfer.record(Map.of("format", "mp3", "beep", true, "max_length", 120)); - transfer.hangup(); + transfer.answer(null); + transfer.play(Map.of("url", "say:Connecting you with the next available agent.")); + transfer.connect( + Map.of( + "from", + "+15551234567", + "timeout", + 30, + "parallel", + List.of(Map.of("to", "+15552223333"), Map.of("to", "+15554445555")))); + transfer.record(Map.of("format", "mp3", "beep", true, "max_length", 120)); + transfer.hangup(); - // Run the voicemail service by default. - System.out.println("Starting voicemail service on port 3000..."); - voicemail.serve(); - } + // Run the voicemail service by default. + System.out.println("Starting voicemail service on port 3000..."); + voicemail.serve(); + } } diff --git a/examples/BasicSwmlService.java b/examples/BasicSwmlService.java index 25645e27..129a3a28 100644 --- a/examples/BasicSwmlService.java +++ b/examples/BasicSwmlService.java @@ -1,14 +1,12 @@ -/** - * BasicSwmlService -- proves that {@link com.signalwire.sdk.swml.Service} - * is independently runnable: a user can construct {@code Service} directly - * (no {@code AgentBase}), emit any SWML verb, and serve the resulting - * document on {@code GET /} with no AI components in the loop. +/* + * BasicSwmlService -- proves that {@link com.signalwire.sdk.swml.Service} is independently + * runnable: a user can construct {@code Service} directly (no {@code AgentBase}), emit any SWML + * verb, and serve the resulting document on {@code GET /} with no AI components in the loop. * - *

Mirror of Python's {@code examples/basic_swml_service.py}. Shows four - * canonical "no AI" call-control flows: voicemail, IVR menu, call - * transfer, and call recording. Pick one with the first CLI arg - * ({@code voicemail}, {@code ivr}, {@code transfer}, or {@code record}) -- - * defaults to {@code voicemail}. + *

Mirror of Python's {@code examples/basic_swml_service.py}. Shows four canonical "no AI" + * call-control flows: voicemail, IVR menu, call transfer, and call recording. Pick one with the + * first CLI arg ({@code voicemail}, {@code ivr}, {@code transfer}, or {@code record}) -- defaults + * to {@code voicemail}. * *

  *   java -cp ... BasicSwmlService voicemail
@@ -17,110 +15,105 @@
  *   java -cp ... BasicSwmlService record
  * 
*/ - import com.signalwire.sdk.swml.Service; - import java.util.Map; public class BasicSwmlService { - public static void main(String[] args) throws Exception { - String mode = args.length > 0 ? args[0] : "voicemail"; + public static void main(String[] args) throws Exception { + String mode = args.length > 0 ? args[0] : "voicemail"; - switch (mode) { - case "voicemail" -> startVoicemail(); - case "ivr" -> startIvr(); - case "transfer" -> startTransfer(); - case "record" -> startRecording(); - default -> { - System.out.println( - "Usage: BasicSwmlService [voicemail|ivr|transfer|record]"); - System.exit(1); - } - } + switch (mode) { + case "voicemail" -> startVoicemail(); + case "ivr" -> startIvr(); + case "transfer" -> startTransfer(); + case "record" -> startRecording(); + default -> { + System.out.println("Usage: BasicSwmlService [voicemail|ivr|transfer|record]"); + System.exit(1); + } } + } - static void startVoicemail() throws Exception { - var svc = new Service("voicemail", "/voicemail"); - svc.answer(null); - svc.play(Map.of("url", - "say:Hello, you've reached the voicemail service. " - + "Please leave a message after the beep.")); - svc.sleep(1000); - svc.record(Map.of( - "format", "mp3", - "stereo", false, - "beep", true, - "max_length", 120, - "terminators", "#" - )); - svc.play(Map.of("url", "say:Thank you for your message. Goodbye!")); - svc.hangup(); + static void startVoicemail() throws Exception { + var svc = new Service("voicemail", "/voicemail"); + svc.answer(null); + svc.play( + Map.of( + "url", + "say:Hello, you've reached the voicemail service. " + + "Please leave a message after the beep.")); + svc.sleep(1000); + svc.record( + Map.of( + "format", "mp3", "stereo", false, "beep", true, "max_length", 120, "terminators", "#")); + svc.play(Map.of("url", "say:Thank you for your message. Goodbye!")); + svc.hangup(); - System.out.println("Starting voicemail service on /voicemail ..."); - svc.serve(); - } + System.out.println("Starting voicemail service on /voicemail ..."); + svc.serve(); + } - static void startIvr() throws Exception { - var svc = new Service("ivr", "/ivr"); - svc.answer(null); - svc.prompt(Map.of( - "play", "say:Welcome. Press 1 for sales, 2 for support, " - + "or 3 to leave a message.", - "max_digits", 1, - "terminators", "#", - "digit_timeout", 5.0, - "initial_timeout", 10.0 - )); - svc.hangup(); + static void startIvr() throws Exception { + var svc = new Service("ivr", "/ivr"); + svc.answer(null); + svc.prompt( + Map.of( + "play", + "say:Welcome. Press 1 for sales, 2 for support, " + "or 3 to leave a message.", + "max_digits", + 1, + "terminators", + "#", + "digit_timeout", + 5.0, + "initial_timeout", + 10.0)); + svc.hangup(); - System.out.println("Starting IVR service on /ivr ..."); - svc.serve(); - } + System.out.println("Starting IVR service on /ivr ..."); + svc.serve(); + } - static void startTransfer() throws Exception { - var svc = new Service("transfer", "/transfer"); - svc.answer(null); - svc.play(Map.of("url", - "say:Thank you for calling. " - + "We'll connect you with the next available agent.")); - svc.connect(Map.of( - "from", "+15551234567", - "timeout", 30, - "answer_on_bridge", true - )); - svc.play(Map.of("url", - "say:All agents are busy. Please leave a message.")); - svc.record(Map.of( - "format", "mp3", - "max_length", 120, - "terminators", "#" - )); - svc.hangup(); + static void startTransfer() throws Exception { + var svc = new Service("transfer", "/transfer"); + svc.answer(null); + svc.play( + Map.of( + "url", + "say:Thank you for calling. " + "We'll connect you with the next available agent.")); + svc.connect(Map.of("from", "+15551234567", "timeout", 30, "answer_on_bridge", true)); + svc.play(Map.of("url", "say:All agents are busy. Please leave a message.")); + svc.record( + Map.of( + "format", "mp3", + "max_length", 120, + "terminators", "#")); + svc.hangup(); - System.out.println("Starting transfer service on /transfer ..."); - svc.serve(); - } + System.out.println("Starting transfer service on /transfer ..."); + svc.serve(); + } - static void startRecording() throws Exception { - var svc = new Service("record", "/record"); - svc.answer(null); - svc.recordCall(Map.of( - "control_id", "call_recording", - "format", "mp3", - "stereo", true, - "direction", "both", - "beep", true - )); - svc.play(Map.of("url", - "say:This call is being recorded. " - + "Please tell us about your experience.")); - svc.sleep(30000); - svc.stopRecordCall(Map.of("control_id", "call_recording")); - svc.play(Map.of("url", "say:Thank you for your time. Goodbye!")); - svc.hangup(); + static void startRecording() throws Exception { + var svc = new Service("record", "/record"); + svc.answer(null); + svc.recordCall( + Map.of( + "control_id", "call_recording", + "format", "mp3", + "stereo", true, + "direction", "both", + "beep", true)); + svc.play( + Map.of( + "url", "say:This call is being recorded. " + "Please tell us about your experience.")); + svc.sleep(30000); + svc.stopRecordCall(Map.of("control_id", "call_recording")); + svc.play(Map.of("url", "say:Thank you for your time. Goodbye!")); + svc.hangup(); - System.out.println("Starting recording service on /record ..."); - svc.serve(); - } + System.out.println("Starting recording service on /record ..."); + svc.serve(); + } } diff --git a/examples/CallFlowAndActionsDemo.java b/examples/CallFlowAndActionsDemo.java index 259a9563..a2a33798 100644 --- a/examples/CallFlowAndActionsDemo.java +++ b/examples/CallFlowAndActionsDemo.java @@ -1,92 +1,92 @@ -/** +/* * 5-phase call flow with pre/post answer verbs, recording, and post-AI actions. * - * Demonstrates the full call lifecycle: - * Phase 1: Pre-answer verbs (e.g., play hold music before answering) - * Phase 2: Answer with recording - * Phase 3: Post-answer verbs - * Phase 4: AI agent conversation - * Phase 5: Post-AI verbs (e.g., cleanup, hangup) + *

Demonstrates the full call lifecycle: Phase 1: Pre-answer verbs (e.g., play hold music before + * answering) Phase 2: Answer with recording Phase 3: Post-answer verbs Phase 4: AI agent + * conversation Phase 5: Post-AI verbs (e.g., cleanup, hangup) */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - import java.util.List; import java.util.Map; public class CallFlowAndActionsDemo { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("callflow-agent") - .route("/") - .port(3000) - .autoAnswer(true) - .maxDuration(1800) // 30 minutes max - .recordCall(true) // Record the call - .recordFormat("mp4") - .recordStereo(true) - .build(); - - // Phase 1: Pre-answer verbs - // (could play hold music or collect DTMF before answering) - - // Phase 3: Post-answer verbs (after answer, before AI) - agent.addPostAnswerVerb("play", Map.of( - "url", "say:Please wait while we connect you with our AI assistant." - )); - - // Phase 4: AI configuration - agent.promptAddSection("Role", - "You are a customer service representative for TechCorp."); - agent.promptAddSection("Instructions", "", List.of( - "Be professional and helpful", - "Collect the customer's issue description", - "Offer solutions or escalate to a human agent" - )); - - // Set AI parameters - agent.setPromptLlmParams(Map.of( - "temperature", 0.3, - "top_p", 0.9 - )); - - // Set post-prompt for conversation summary - agent.setPostPrompt( - "Summarize the call: what was the issue, what was the resolution."); - agent.setPostPromptLlmParams(Map.of( - "temperature", 0.1 - )); - - // Add pronunciations - agent.addPronunciation("TechCorp", "TekCorp", true); - - // Add speech hints - agent.addHints(List.of("TechCorp", "support", "technical", "billing")); - - // Add language support - agent.addLanguage("English", "en-US", "en-US-Standard-C"); - agent.addLanguage("Spanish", "es-US", "es-US-Standard-A"); - - // Tools - agent.defineTool("escalate", "Escalate to a human agent", - Map.of("type", "object", "properties", Map.of( - "reason", Map.of("type", "string", "description", "Reason for escalation") - ), "required", List.of("reason")), - (toolArgs, raw) -> new FunctionResult( - "Transferring you to a human agent for: " + toolArgs.get("reason")) - .connect("+15551234567", true)); - - // Phase 5: Post-AI verbs (after AI finishes) - agent.addPostAiVerb("hangup", Map.of()); - - // Summary callback - agent.onSummary((summary, rawPayload) -> { - System.out.println("Call summary: " + summary); + public static void main(String[] args) throws Exception { + var agent = + AgentBase.builder() + .name("callflow-agent") + .route("/") + .port(3000) + .autoAnswer(true) + .maxDuration(1800) // 30 minutes max + .recordCall(true) // Record the call + .recordFormat("mp4") + .recordStereo(true) + .build(); + + // Phase 1: Pre-answer verbs + // (could play hold music or collect DTMF before answering) + + // Phase 3: Post-answer verbs (after answer, before AI) + agent.addPostAnswerVerb( + "play", Map.of("url", "say:Please wait while we connect you with our AI assistant.")); + + // Phase 4: AI configuration + agent.promptAddSection("Role", "You are a customer service representative for TechCorp."); + agent.promptAddSection( + "Instructions", + "", + List.of( + "Be professional and helpful", + "Collect the customer's issue description", + "Offer solutions or escalate to a human agent")); + + // Set AI parameters + agent.setPromptLlmParams( + Map.of( + "temperature", 0.3, + "top_p", 0.9)); + + // Set post-prompt for conversation summary + agent.setPostPrompt("Summarize the call: what was the issue, what was the resolution."); + agent.setPostPromptLlmParams(Map.of("temperature", 0.1)); + + // Add pronunciations + agent.addPronunciation("TechCorp", "TekCorp", true); + + // Add speech hints + agent.addHints(List.of("TechCorp", "support", "technical", "billing")); + + // Add language support + agent.addLanguage("English", "en-US", "en-US-Standard-C"); + agent.addLanguage("Spanish", "es-US", "es-US-Standard-A"); + + // Tools + agent.defineTool( + "escalate", + "Escalate to a human agent", + Map.of( + "type", + "object", + "properties", + Map.of("reason", Map.of("type", "string", "description", "Reason for escalation")), + "required", + List.of("reason")), + (toolArgs, raw) -> + new FunctionResult("Transferring you to a human agent for: " + toolArgs.get("reason")) + .connect("+15551234567", true)); + + // Phase 5: Post-AI verbs (after AI finishes) + agent.addPostAiVerb("hangup", Map.of()); + + // Summary callback + agent.onSummary( + (summary, rawPayload) -> { + System.out.println("Call summary: " + summary); }); - System.out.println("Starting call flow agent on port 3000..."); - agent.run(); - } + System.out.println("Starting call flow agent on port 3000..."); + agent.run(); + } } diff --git a/examples/ComprehensiveDynamicAgent.java b/examples/ComprehensiveDynamicAgent.java index 19de7e39..76bee181 100644 --- a/examples/ComprehensiveDynamicAgent.java +++ b/examples/ComprehensiveDynamicAgent.java @@ -1,127 +1,138 @@ -/** +/* * Comprehensive Dynamic Agent Configuration. * - * Demonstrates per-request customization based on query parameters: - * - Tier-based features (standard / premium / enterprise) - * - Industry-specific prompts (healthcare / finance / retail) - * - Language and voice selection - * - A/B testing configuration - * - Debug mode + *

Demonstrates per-request customization based on query parameters: - Tier-based features + * (standard / premium / enterprise) - Industry-specific prompts (healthcare / finance / retail) - + * Language and voice selection - A/B testing configuration - Debug mode * - * Try: ?tier=premium&industry=healthcare&lang=es&test_group=B + *

Try: ?tier=premium&industry=healthcare&lang=es&test_group=B */ - import com.signalwire.sdk.agent.AgentBase; - import java.util.List; +import java.util.Locale; import java.util.Map; public class ComprehensiveDynamicAgent { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("comprehensive-dynamic") - .route("/dynamic") - .port(3000) - .recordCall(true) - .build(); + public static void main(String[] args) throws Exception { + var agent = + AgentBase.builder() + .name("comprehensive-dynamic") + .route("/dynamic") + .port(3000) + .recordCall(true) + .build(); - agent.setDynamicConfigCallback((queryParams, bodyParams, headers, configAgent) -> { - String tier = queryParams.getOrDefault("tier", "standard").toLowerCase(); - String industry = queryParams.getOrDefault("industry", "general").toLowerCase(); - String lang = queryParams.getOrDefault("lang", "en").toLowerCase(); - String testGroup = queryParams.getOrDefault("test_group", "A").toUpperCase(); - boolean debug = "true".equals(queryParams.get("debug")); - String customerId = queryParams.getOrDefault("customer_id", ""); + agent.setDynamicConfigCallback( + (queryParams, bodyParams, headers, configAgent) -> { + String tier = queryParams.getOrDefault("tier", "standard").toLowerCase(Locale.ROOT); + String industry = + queryParams.getOrDefault("industry", "general").toLowerCase(Locale.ROOT); + String lang = queryParams.getOrDefault("lang", "en").toLowerCase(Locale.ROOT); + String testGroup = queryParams.getOrDefault("test_group", "A").toUpperCase(Locale.ROOT); + boolean debug = "true".equals(queryParams.get("debug")); + String customerId = queryParams.getOrDefault("customer_id", ""); - // --- Voice / Language --- - if ("es".equals(lang)) { - configAgent.addLanguage("Spanish", "es-ES", "es-ES-Standard-A"); - } else { - configAgent.addLanguage("English US", "en-US", "en-US-Standard-C"); - } + // --- Voice / Language --- + if ("es".equals(lang)) { + configAgent.addLanguage("Spanish", "es-ES", "es-ES-Standard-A"); + } else { + configAgent.addLanguage("English US", "en-US", "en-US-Standard-C"); + } - // --- Tier parameters --- - switch (tier) { - case "enterprise" -> configAgent.setParams(Map.of( + // --- Tier parameters --- + switch (tier) { + case "enterprise" -> + configAgent.setParams( + Map.of( "end_of_speech_timeout", 800, "attention_timeout", 25000)); - case "premium" -> configAgent.setParams(Map.of( + case "premium" -> + configAgent.setParams( + Map.of( "end_of_speech_timeout", 600, "attention_timeout", 20000)); - default -> configAgent.setParams(Map.of( + default -> + configAgent.setParams( + Map.of( "end_of_speech_timeout", 400, "attention_timeout", 15000)); - } + } - // --- Industry prompts --- - configAgent.promptAddSection("Role", - "You are a professional AI assistant specialized in " + industry + " services."); + // --- Industry prompts --- + configAgent.promptAddSection( + "Role", + "You are a professional AI assistant specialized in " + industry + " services."); - if ("healthcare".equals(industry)) { - configAgent.promptAddSection("Healthcare Guidelines", - "Follow HIPAA compliance. Never provide medical diagnoses.", List.of( - "Protect patient privacy", - "Direct medical questions to providers", - "Use appropriate medical terminology" - )); - } else if ("finance".equals(industry)) { - configAgent.promptAddSection("Financial Guidelines", - "Adhere to financial regulations.", List.of( - "Never provide investment advice", - "Protect sensitive financial data", - "Use precise financial terminology" - )); - } else if ("retail".equals(industry)) { - configAgent.promptAddSection("Customer Service", - "Focus on satisfaction and sales support.", List.of( - "Be friendly and helpful", - "Handle complaints with empathy", - "Look for upsell opportunities" - )); - } + if ("healthcare".equals(industry)) { + configAgent.promptAddSection( + "Healthcare Guidelines", + "Follow HIPAA compliance. Never provide medical diagnoses.", + List.of( + "Protect patient privacy", + "Direct medical questions to providers", + "Use appropriate medical terminology")); + } else if ("finance".equals(industry)) { + configAgent.promptAddSection( + "Financial Guidelines", + "Adhere to financial regulations.", + List.of( + "Never provide investment advice", + "Protect sensitive financial data", + "Use precise financial terminology")); + } else if ("retail".equals(industry)) { + configAgent.promptAddSection( + "Customer Service", + "Focus on satisfaction and sales support.", + List.of( + "Be friendly and helpful", + "Handle complaints with empathy", + "Look for upsell opportunities")); + } - // --- Enhanced tier capabilities --- - if ("premium".equals(tier) || "enterprise".equals(tier)) { - configAgent.promptAddSection("Enhanced Capabilities", - "As a " + tier + " service you have advanced features:", List.of( - "Extended conversation memory", - "Priority processing", - "Specialized knowledge bases" - )); - } + // --- Enhanced tier capabilities --- + if ("premium".equals(tier) || "enterprise".equals(tier)) { + configAgent.promptAddSection( + "Enhanced Capabilities", + "As a " + tier + " service you have advanced features:", + List.of( + "Extended conversation memory", + "Priority processing", + "Specialized knowledge bases")); + } - // --- A/B testing --- - if ("B".equals(testGroup)) { - configAgent.addHints(List.of("enhanced", "personalized", "proactive")); - configAgent.promptAddSection("Enhanced Interaction Style", - "Use an enhanced conversation style:", List.of( - "Ask clarifying questions frequently", - "Provide detailed explanations", - "Offer proactive suggestions" - )); - } + // --- A/B testing --- + if ("B".equals(testGroup)) { + configAgent.addHints(List.of("enhanced", "personalized", "proactive")); + configAgent.promptAddSection( + "Enhanced Interaction Style", + "Use an enhanced conversation style:", + List.of( + "Ask clarifying questions frequently", + "Provide detailed explanations", + "Offer proactive suggestions")); + } - // --- Debug mode --- - if (debug) { - configAgent.promptAddSection("Debug Mode", - "Debug mode is active. Show reasoning in responses."); - configAgent.addHints(List.of("debug", "verbose", "reasoning")); - } + // --- Debug mode --- + if (debug) { + configAgent.promptAddSection( + "Debug Mode", "Debug mode is active. Show reasoning in responses."); + configAgent.addHints(List.of("debug", "verbose", "reasoning")); + } - // --- Global data --- - configAgent.updateGlobalData(Map.of( - "service_tier", tier, - "industry", industry, - "test_group", testGroup - )); - if (!customerId.isEmpty()) { - configAgent.updateGlobalData(Map.of("customer_id", customerId)); - } + // --- Global data --- + configAgent.updateGlobalData( + Map.of( + "service_tier", tier, + "industry", industry, + "test_group", testGroup)); + if (!customerId.isEmpty()) { + configAgent.updateGlobalData(Map.of("customer_id", customerId)); + } }); - System.out.println("Starting comprehensive dynamic agent on port 3000..."); - System.out.println("Try: ?tier=premium&industry=healthcare&lang=es&test_group=B"); - agent.run(); - } + System.out.println("Starting comprehensive dynamic agent on port 3000..."); + System.out.println("Try: ?tier=premium&industry=healthcare&lang=es&test_group=B"); + agent.run(); + } } diff --git a/examples/ConciergeAgentExample.java b/examples/ConciergeAgentExample.java index bba8f2be..df38fffe 100644 --- a/examples/ConciergeAgentExample.java +++ b/examples/ConciergeAgentExample.java @@ -1,37 +1,45 @@ -/** +/* * Concierge Agent Example -- using the ConciergeAgent prefab. * - * Creates a luxury resort virtual concierge with amenity info - * and availability checking. + *

Creates a luxury resort virtual concierge with amenity info and availability checking. */ - import com.signalwire.sdk.prefabs.ConciergeAgent; - import java.util.List; public class ConciergeAgentExample { - public static void main(String[] args) throws Exception { - var agent = new ConciergeAgent( - "resort-concierge", - "Oceanview Resort", - List.of( - ConciergeAgent.amenity("Infinity Pool", - "Heated infinity pool overlooking the ocean with poolside service.", - "7:00 AM - 10:00 PM", "Main Level, Ocean View", null), - ConciergeAgent.amenity("Spa", - "Full-service luxury spa with massages, facials, and body treatments.", - "9:00 AM - 8:00 PM", "Lower Level, East Wing", "$150+"), - ConciergeAgent.amenity("Fitness Center", - "State-of-the-art gym with cardio, weights, and yoga studio.", - "24 hours", "2nd Floor, North Wing", "Complimentary"), - ConciergeAgent.amenity("Beach Access", - "Private beach with chairs, umbrellas, and towels.", - "Dawn to Dusk", "Southern Pathway", "Complimentary") - ) - ); + public static void main(String[] args) throws Exception { + var agent = + new ConciergeAgent( + "resort-concierge", + "Oceanview Resort", + List.of( + ConciergeAgent.amenity( + "Infinity Pool", + "Heated infinity pool overlooking the ocean with poolside service.", + "7:00 AM - 10:00 PM", + "Main Level, Ocean View", + null), + ConciergeAgent.amenity( + "Spa", + "Full-service luxury spa with massages, facials, and body treatments.", + "9:00 AM - 8:00 PM", + "Lower Level, East Wing", + "$150+"), + ConciergeAgent.amenity( + "Fitness Center", + "State-of-the-art gym with cardio, weights, and yoga studio.", + "24 hours", + "2nd Floor, North Wing", + "Complimentary"), + ConciergeAgent.amenity( + "Beach Access", + "Private beach with chairs, umbrellas, and towels.", + "Dawn to Dusk", + "Southern Pathway", + "Complimentary"))); - System.out.println("Starting Oceanview Resort concierge on port 3000..."); - agent.run(); - } + System.out.println("Starting Oceanview Resort concierge on port 3000..."); + agent.run(); + } } diff --git a/examples/ContextsDemo.java b/examples/ContextsDemo.java index ec388422..815b4a3d 100644 --- a/examples/ContextsDemo.java +++ b/examples/ContextsDemo.java @@ -1,85 +1,86 @@ -/** +/* * Structured workflows with contexts and steps. * - * Demonstrates a multi-step onboarding flow where each step has - * specific criteria, valid navigation targets, and function restrictions. + *

Demonstrates a multi-step onboarding flow where each step has specific criteria, valid + * navigation targets, and function restrictions. */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - import java.util.List; import java.util.Map; public class ContextsDemo { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("onboarding-agent") - .route("/") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = AgentBase.builder().name("onboarding-agent").route("/").port(3000).build(); - agent.promptAddSection("Role", - "You are an onboarding assistant. Guide users through setup."); + agent.promptAddSection("Role", "You are an onboarding assistant. Guide users through setup."); - // Define contexts and steps - var ctxBuilder = agent.defineContexts(); + // Define contexts and steps + var ctxBuilder = agent.defineContexts(); - var defaultCtx = ctxBuilder.addContext("default"); + var defaultCtx = ctxBuilder.addContext("default"); - // Step 1: Welcome - var welcomeStep = defaultCtx.addStep("welcome"); - welcomeStep.setText( - "Greet the user and ask for their name and email."); - welcomeStep.setStepCriteria( - "User has provided their name and email address."); - welcomeStep.setValidSteps(List.of("next", "preferences")); - welcomeStep.setFunctions(List.of("collect_info")); + // Step 1: Welcome + var welcomeStep = defaultCtx.addStep("welcome"); + welcomeStep.setText("Greet the user and ask for their name and email."); + welcomeStep.setStepCriteria("User has provided their name and email address."); + welcomeStep.setValidSteps(List.of("next", "preferences")); + welcomeStep.setFunctions(List.of("collect_info")); - // Step 2: Preferences - var prefsStep = defaultCtx.addStep("preferences"); - prefsStep.setText( - "Ask about the user's preferences and interests."); - prefsStep.setStepCriteria( - "User has shared at least 2 preferences."); - prefsStep.setValidSteps(List.of("next", "welcome")); - prefsStep.setFunctions(List.of("save_preference")); + // Step 2: Preferences + var prefsStep = defaultCtx.addStep("preferences"); + prefsStep.setText("Ask about the user's preferences and interests."); + prefsStep.setStepCriteria("User has shared at least 2 preferences."); + prefsStep.setValidSteps(List.of("next", "welcome")); + prefsStep.setFunctions(List.of("save_preference")); - // Step 3: Confirmation - var confirmStep = defaultCtx.addStep("confirmation"); - confirmStep.setText( - "Summarize the collected information and confirm with the user."); - confirmStep.setStepCriteria( - "User has confirmed their information is correct."); - confirmStep.setFunctions(List.of("finalize_onboarding")); + // Step 3: Confirmation + var confirmStep = defaultCtx.addStep("confirmation"); + confirmStep.setText("Summarize the collected information and confirm with the user."); + confirmStep.setStepCriteria("User has confirmed their information is correct."); + confirmStep.setFunctions(List.of("finalize_onboarding")); - // Define tools - agent.defineTool("collect_info", "Collect user info", - Map.of("type", "object", "properties", Map.of( - "name", Map.of("type", "string", "description", "User name"), - "email", Map.of("type", "string", "description", "User email") - ), "required", List.of("name", "email")), - (toolArgs, raw) -> new FunctionResult( - "Collected: " + toolArgs.get("name") + " (" + toolArgs.get("email") + ")") - .updateGlobalData(Map.of( - "user_name", toolArgs.get("name"), - "user_email", toolArgs.get("email") - ))); + // Define tools + agent.defineTool( + "collect_info", + "Collect user info", + Map.of( + "type", + "object", + "properties", + Map.of( + "name", Map.of("type", "string", "description", "User name"), + "email", Map.of("type", "string", "description", "User email")), + "required", + List.of("name", "email")), + (toolArgs, raw) -> + new FunctionResult( + "Collected: " + toolArgs.get("name") + " (" + toolArgs.get("email") + ")") + .updateGlobalData( + Map.of( + "user_name", toolArgs.get("name"), + "user_email", toolArgs.get("email")))); - agent.defineTool("save_preference", "Save a user preference", - Map.of("type", "object", "properties", Map.of( - "preference", Map.of("type", "string", "description", "User preference") - ), "required", List.of("preference")), - (toolArgs, raw) -> new FunctionResult( - "Saved preference: " + toolArgs.get("preference"))); + agent.defineTool( + "save_preference", + "Save a user preference", + Map.of( + "type", + "object", + "properties", + Map.of("preference", Map.of("type", "string", "description", "User preference")), + "required", + List.of("preference")), + (toolArgs, raw) -> new FunctionResult("Saved preference: " + toolArgs.get("preference"))); - agent.defineTool("finalize_onboarding", "Complete the onboarding process", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> new FunctionResult( - "Onboarding complete! Welcome aboard.")); + agent.defineTool( + "finalize_onboarding", + "Complete the onboarding process", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> new FunctionResult("Onboarding complete! Welcome aboard.")); - System.out.println("Starting onboarding agent on port 3000..."); - agent.run(); - } + System.out.println("Starting onboarding agent on port 3000..."); + agent.run(); + } } diff --git a/examples/CustomPathAgent.java b/examples/CustomPathAgent.java index 5a16e87b..0b42c40d 100644 --- a/examples/CustomPathAgent.java +++ b/examples/CustomPathAgent.java @@ -1,61 +1,67 @@ -/** +/* * Custom Path Agent -- agent served at a non-root path. * - * Demonstrates how to create an agent at a custom route (/chat) with - * dynamic per-request personalization from query parameters. + *

Demonstrates how to create an agent at a custom route (/chat) with dynamic per-request + * personalization from query parameters. * - * Try: ?user_name=Alice&topic=AI&mood=professional + *

Try: ?user_name=Alice&topic=AI&mood=professional */ - import com.signalwire.sdk.agent.AgentBase; - import java.util.List; +import java.util.Locale; import java.util.Map; public class CustomPathAgent { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("chat-assistant") - .route("/chat") - .port(3000) - .recordCall(true) - .build(); - - agent.promptAddSection("Role", - "You are a friendly chat assistant ready to help with any questions."); - - agent.setDynamicConfigCallback((queryParams, bodyParams, headers, configAgent) -> { - String userName = queryParams.getOrDefault("user_name", "friend"); - String topic = queryParams.getOrDefault("topic", "general conversation"); - String mood = queryParams.getOrDefault("mood", "friendly").toLowerCase(); - - configAgent.promptAddSection("Personalization", - "The user's name is " + userName + ". They're interested in " + topic + "."); - - configAgent.addLanguage("English", "en-US", "en-US-Standard-C"); - - switch (mood) { - case "professional" -> configAgent.promptAddSection("Communication Style", - "Maintain a professional, business-appropriate tone."); - case "casual" -> configAgent.promptAddSection("Communication Style", - "Use a casual, relaxed conversational style."); - default -> configAgent.promptAddSection("Communication Style", - "Be warm, friendly, and approachable in your responses."); - } - - configAgent.setGlobalData(Map.of( - "user_name", userName, - "topic", topic, - "mood", mood, - "session_type", "chat" - )); - - configAgent.addHints(List.of("chat", "assistant", "help", "conversation")); + public static void main(String[] args) throws Exception { + var agent = + AgentBase.builder() + .name("chat-assistant") + .route("/chat") + .port(3000) + .recordCall(true) + .build(); + + agent.promptAddSection( + "Role", "You are a friendly chat assistant ready to help with any questions."); + + agent.setDynamicConfigCallback( + (queryParams, bodyParams, headers, configAgent) -> { + String userName = queryParams.getOrDefault("user_name", "friend"); + String topic = queryParams.getOrDefault("topic", "general conversation"); + String mood = queryParams.getOrDefault("mood", "friendly").toLowerCase(Locale.ROOT); + + configAgent.promptAddSection( + "Personalization", + "The user's name is " + userName + ". They're interested in " + topic + "."); + + configAgent.addLanguage("English", "en-US", "en-US-Standard-C"); + + switch (mood) { + case "professional" -> + configAgent.promptAddSection( + "Communication Style", "Maintain a professional, business-appropriate tone."); + case "casual" -> + configAgent.promptAddSection( + "Communication Style", "Use a casual, relaxed conversational style."); + default -> + configAgent.promptAddSection( + "Communication Style", + "Be warm, friendly, and approachable in your responses."); + } + + configAgent.setGlobalData( + Map.of( + "user_name", userName, + "topic", topic, + "mood", mood, + "session_type", "chat")); + + configAgent.addHints(List.of("chat", "assistant", "help", "conversation")); }); - System.out.println("Starting chat agent at /chat on port 3000..."); - System.out.println("Try: ?user_name=Alice&topic=AI&mood=professional"); - agent.run(); - } + System.out.println("Starting chat agent at /chat on port 3000..."); + System.out.println("Try: ?user_name=Alice&topic=AI&mood=professional"); + agent.run(); + } } diff --git a/examples/DataMapDemo.java b/examples/DataMapDemo.java index 097353b2..fa4c0f81 100644 --- a/examples/DataMapDemo.java +++ b/examples/DataMapDemo.java @@ -1,68 +1,72 @@ -/** +/* * Server-side API integration using DataMap (no webhooks needed). * - * DataMap tools execute on SignalWire servers. They can call external APIs - * and process responses using variable expansion and pattern matching. + *

DataMap tools execute on SignalWire servers. They can call external APIs and process responses + * using variable expansion and pattern matching. */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.datamap.DataMap; import com.signalwire.sdk.swaig.FunctionResult; - -import java.util.List; import java.util.Map; public class DataMapDemo { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("datamap-agent") - .route("/") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = AgentBase.builder().name("datamap-agent").route("/").port(3000).build(); - agent.promptAddSection("Role", - "You are an assistant that can look up weather and check order status."); + agent.promptAddSection( + "Role", "You are an assistant that can look up weather and check order status."); - // DataMap tool 1: Weather API (webhook-based) - var weatherMap = new DataMap("get_weather") - .purpose("Get current weather for a city") - .parameter("city", "string", "City name", true) - .webhook("GET", "https://api.weatherapi.com/v1/current.json?key=${env.WEATHER_API_KEY}&q=${args.city}") - .output(new FunctionResult( - "Weather in ${args.city}: ${response.current.temp_f}F, ${response.current.condition.text}")) - .fallbackOutput(new FunctionResult( - "Sorry, I could not retrieve weather data for ${args.city}.")); + // DataMap tool 1: Weather API (webhook-based) + var weatherMap = + new DataMap("get_weather") + .purpose("Get current weather for a city") + .parameter("city", "string", "City name", true) + .webhook( + "GET", + "https://api.weatherapi.com/v1/current.json?key=${env.WEATHER_API_KEY}&q=${args.city}") + .output( + new FunctionResult( + "Weather in ${args.city}: ${response.current.temp_f}F, ${response.current.condition.text}")) + .fallbackOutput( + new FunctionResult("Sorry, I could not retrieve weather data for ${args.city}.")); - agent.registerSwaigFunction(weatherMap.toSwaigFunction()); + agent.registerSwaigFunction(weatherMap.toSwaigFunction()); - // DataMap tool 2: Expression-based (pattern matching, no external API) - var statusMap = new DataMap("check_order_status") - .purpose("Check the status of an order by order number") - .parameter("order_number", "string", "The order number", true) - .expression("${args.order_number}", "^ORD-[0-9]+$", - new FunctionResult("Order ${args.order_number} is confirmed and being processed."), - new FunctionResult("Invalid order number format. Orders start with ORD- followed by digits.")); + // DataMap tool 2: Expression-based (pattern matching, no external API) + var statusMap = + new DataMap("check_order_status") + .purpose("Check the status of an order by order number") + .parameter("order_number", "string", "The order number", true) + .expression( + "${args.order_number}", + "^ORD-[0-9]+$", + new FunctionResult("Order ${args.order_number} is confirmed and being processed."), + new FunctionResult( + "Invalid order number format. Orders start with ORD- followed by digits.")); - agent.registerSwaigFunction(statusMap.toSwaigFunction()); + agent.registerSwaigFunction(statusMap.toSwaigFunction()); - // DataMap tool 3: POST with body - var feedbackMap = new DataMap("submit_feedback") - .purpose("Submit customer feedback") - .parameter("rating", "integer", "Rating from 1-5", true) - .parameter("comment", "string", "Feedback comment", false) - .webhook("POST", "https://api.example.com/feedback", - Map.of("Content-Type", "application/json")) - .body(Map.of( - "rating", "${args.rating}", - "comment", "${args.comment}", - "timestamp", "${system.timestamp}" - )) - .output(new FunctionResult("Thank you for your feedback!")); + // DataMap tool 3: POST with request params + var feedbackMap = + new DataMap("submit_feedback") + .purpose("Submit customer feedback") + .parameter("rating", "integer", "Rating from 1-5", true) + .parameter("comment", "string", "Feedback comment", false) + .webhook( + "POST", + "https://api.example.com/feedback", + Map.of("Content-Type", "application/json")) + .params( + Map.of( + "rating", "${args.rating}", + "comment", "${args.comment}", + "timestamp", "${system.timestamp}")) + .output(new FunctionResult("Thank you for your feedback!")); - agent.registerSwaigFunction(feedbackMap.toSwaigFunction()); + agent.registerSwaigFunction(feedbackMap.toSwaigFunction()); - System.out.println("Starting DataMap agent on port 3000..."); - agent.run(); - } + System.out.println("Starting DataMap agent on port 3000..."); + agent.run(); + } } diff --git a/examples/DatasphereAgent.java b/examples/DatasphereAgent.java index cc9143a4..1154ab79 100644 --- a/examples/DatasphereAgent.java +++ b/examples/DatasphereAgent.java @@ -1,70 +1,73 @@ -/** +/* * DataSphere Agent with Multiple Instances. * - * Demonstrates loading the datasphere skill multiple times with different - * configurations and tool names for separate knowledge bases. + *

Demonstrates loading the datasphere skill multiple times with different configurations and + * tool names for separate knowledge bases. * - * Replace the example credentials with your actual DataSphere details. + *

Replace the example credentials with your actual DataSphere details. */ - import com.signalwire.sdk.agent.AgentBase; - import java.util.Map; public class DatasphereAgent { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("datasphere-assistant") - .route("/datasphere-demo") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = + AgentBase.builder() + .name("datasphere-assistant") + .route("/datasphere-demo") + .port(3000) + .build(); - agent.addLanguage("English", "en-US", "en-US-Standard-C"); + agent.addLanguage("English", "en-US", "en-US-Standard-C"); - agent.promptAddSection("Role", - "You are an assistant with access to multiple knowledge bases. " + - "Use the appropriate search tool depending on the topic."); + agent.promptAddSection( + "Role", + "You are an assistant with access to multiple knowledge bases. " + + "Use the appropriate search tool depending on the topic."); - // Add utility skills - agent.addSkill("datetime", Map.of()); - agent.addSkill("math", Map.of()); + // Add utility skills + agent.addSkill("datetime", Map.of()); + agent.addSkill("math", Map.of()); - // Instance 1: Drinks knowledge base - agent.addSkill("datasphere", Map.of( - "space_name", "your-space", - "project_id", "your-project-id", - "token", "your-token", - "document_id", "drinks-doc-123", - "tool_name", "search_drinks_knowledge", - "count", 2, - "distance", 5.0 - )); + // Instance 1: Drinks knowledge base + agent.addSkill( + "datasphere", + Map.of( + "space_name", "your-space", + "project_id", "your-project-id", + "token", "your-token", + "document_id", "drinks-doc-123", + "tool_name", "search_drinks_knowledge", + "count", 2, + "distance", 5.0)); - // Instance 2: Food knowledge base - agent.addSkill("datasphere", Map.of( - "space_name", "your-space", - "project_id", "your-project-id", - "token", "your-token", - "document_id", "food-doc-456", - "tool_name", "search_food_knowledge", - "count", 3, - "distance", 4.0 - )); + // Instance 2: Food knowledge base + agent.addSkill( + "datasphere", + Map.of( + "space_name", "your-space", + "project_id", "your-project-id", + "token", "your-token", + "document_id", "food-doc-456", + "tool_name", "search_food_knowledge", + "count", 3, + "distance", 4.0)); - // Instance 3: General knowledge (default tool name) - agent.addSkill("datasphere", Map.of( - "space_name", "your-space", - "project_id", "your-project-id", - "token", "your-token", - "document_id", "general-doc-789", - "count", 1, - "distance", 3.0 - )); + // Instance 3: General knowledge (default tool name) + agent.addSkill( + "datasphere", + Map.of( + "space_name", "your-space", + "project_id", "your-project-id", + "token", "your-token", + "document_id", "general-doc-789", + "count", 1, + "distance", 3.0)); - System.out.println("Loaded skills: " + agent.listSkills()); - System.out.println("Starting DataSphere agent on port 3000..."); - System.out.println("Note: Replace credentials with your actual DataSphere details."); - agent.run(); - } + System.out.println("Loaded skills: " + agent.listSkills()); + System.out.println("Starting DataSphere agent on port 3000..."); + System.out.println("Note: Replace credentials with your actual DataSphere details."); + agent.run(); + } } diff --git a/examples/DatasphereMultiInstanceDemo.java b/examples/DatasphereMultiInstanceDemo.java index ca702ae6..5d347c98 100644 --- a/examples/DatasphereMultiInstanceDemo.java +++ b/examples/DatasphereMultiInstanceDemo.java @@ -1,65 +1,67 @@ -/** +/* * DataSphere Multiple Instance Demo. * - * Loads the datasphere skill multiple times with different knowledge bases - * and custom tool names. Each instance searches a different document. + *

Loads the datasphere skill multiple times with different knowledge bases and custom tool + * names. Each instance searches a different document. */ - import com.signalwire.sdk.agent.AgentBase; - import java.util.Map; public class DatasphereMultiInstanceDemo { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("multi-datasphere") - .route("/datasphere-multi") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = + AgentBase.builder().name("multi-datasphere").route("/datasphere-multi").port(3000).build(); - agent.addLanguage("English", "en-US", "en-US-Standard-C"); + agent.addLanguage("English", "en-US", "en-US-Standard-C"); - agent.promptAddSection("Role", - "You are an assistant with access to multiple knowledge bases. " + - "Use the appropriate search tool depending on the topic."); + agent.promptAddSection( + "Role", + "You are an assistant with access to multiple knowledge bases. " + + "Use the appropriate search tool depending on the topic."); - agent.addSkill("datetime", Map.of()); - agent.addSkill("math", Map.of()); + agent.addSkill("datetime", Map.of()); + agent.addSkill("math", Map.of()); - // Instance 1: Drinks knowledge - agent.addSkill("datasphere", Map.of( - "space_name", "your-space", - "project_id", "your-project-id", - "token", "your-token", - "document_id", "drinks-doc-123", - "tool_name", "search_drinks_knowledge", - "count", 2, - "distance", 5.0)); + // Instance 1: Drinks knowledge + agent.addSkill( + "datasphere", + Map.of( + "space_name", "your-space", + "project_id", "your-project-id", + "token", "your-token", + "document_id", "drinks-doc-123", + "tool_name", "search_drinks_knowledge", + "count", 2, + "distance", 5.0)); - // Instance 2: Food knowledge - agent.addSkill("datasphere", Map.of( - "space_name", "your-space", - "project_id", "your-project-id", - "token", "your-token", - "document_id", "food-doc-456", - "tool_name", "search_food_knowledge", - "count", 3, - "distance", 4.0)); + // Instance 2: Food knowledge + agent.addSkill( + "datasphere", + Map.of( + "space_name", "your-space", + "project_id", "your-project-id", + "token", "your-token", + "document_id", "food-doc-456", + "tool_name", "search_food_knowledge", + "count", 3, + "distance", 4.0)); - // Instance 3: General knowledge (default tool name) - agent.addSkill("datasphere", Map.of( - "space_name", "your-space", - "project_id", "your-project-id", - "token", "your-token", - "document_id", "general-doc-789", - "count", 1, - "distance", 3.0)); + // Instance 3: General knowledge (default tool name) + agent.addSkill( + "datasphere", + Map.of( + "space_name", "your-space", + "project_id", "your-project-id", + "token", "your-token", + "document_id", "general-doc-789", + "count", 1, + "distance", 3.0)); - System.out.println("Loaded skills: " + agent.listSkills()); - System.out.println("Tools: search_drinks_knowledge, search_food_knowledge, search_knowledge"); - System.out.println("Note: Replace credentials with your actual DataSphere details."); - System.out.println("Starting multi-datasphere agent on port 3000..."); - agent.run(); - } + System.out.println("Loaded skills: " + agent.listSkills()); + System.out.println("Tools: search_drinks_knowledge, search_food_knowledge, search_knowledge"); + System.out.println("Note: Replace credentials with your actual DataSphere details."); + System.out.println("Starting multi-datasphere agent on port 3000..."); + agent.run(); + } } diff --git a/examples/DatasphereServerlessEnv.java b/examples/DatasphereServerlessEnv.java index 9ccd3c15..debe81af 100644 --- a/examples/DatasphereServerlessEnv.java +++ b/examples/DatasphereServerlessEnv.java @@ -1,66 +1,66 @@ -/** +/* * DataSphere Serverless Environment Demo. * - * Loads the DataSphere serverless skill with configuration from environment - * variables for production deployment. + *

Loads the DataSphere serverless skill with configuration from environment variables for + * production deployment. * - * Required: SIGNALWIRE_SPACE, SIGNALWIRE_PROJECT_ID, SIGNALWIRE_API_TOKEN, - * DATASPHERE_DOCUMENT_ID - * Optional: DATASPHERE_COUNT, DATASPHERE_DISTANCE, DATASPHERE_TAGS + *

Required: SIGNALWIRE_SPACE, SIGNALWIRE_PROJECT_ID, SIGNALWIRE_API_TOKEN, + * DATASPHERE_DOCUMENT_ID Optional: DATASPHERE_COUNT, DATASPHERE_DISTANCE, DATASPHERE_TAGS */ - import com.signalwire.sdk.agent.AgentBase; - import java.util.HashMap; import java.util.Map; public class DatasphereServerlessEnv { - static String requireEnv(String name) { - String val = System.getenv(name); - if (val == null || val.isEmpty()) { - System.err.println("Error: Required environment variable " + name + " is not set."); - System.exit(1); - } - return val; + static String requireEnv(String name) { + String val = System.getenv(name); + if (val == null || val.isEmpty()) { + System.err.println("Error: Required environment variable " + name + " is not set."); + System.exit(1); } + return val; + } - public static void main(String[] args) throws Exception { - String documentId = requireEnv("DATASPHERE_DOCUMENT_ID"); - int count = Integer.parseInt(System.getenv().getOrDefault("DATASPHERE_COUNT", "3")); - double distance = Double.parseDouble(System.getenv().getOrDefault("DATASPHERE_DISTANCE", "4.0")); + public static void main(String[] args) throws Exception { + String documentId = requireEnv("DATASPHERE_DOCUMENT_ID"); + int count = Integer.parseInt(System.getenv().getOrDefault("DATASPHERE_COUNT", "3")); + double distance = + Double.parseDouble(System.getenv().getOrDefault("DATASPHERE_DISTANCE", "4.0")); - var agent = AgentBase.builder() - .name("datasphere-serverless-env") - .route("/datasphere-env") - .port(3000) - .build(); + var agent = + AgentBase.builder() + .name("datasphere-serverless-env") + .route("/datasphere-env") + .port(3000) + .build(); - agent.addLanguage("English", "en-US", "en-US-Standard-C"); + agent.addLanguage("English", "en-US", "en-US-Standard-C"); - agent.promptAddSection("Role", - "You are a knowledge assistant with access to a document library. " + - "Search the knowledge base to answer user questions."); + agent.promptAddSection( + "Role", + "You are a knowledge assistant with access to a document library. " + + "Search the knowledge base to answer user questions."); - agent.addSkill("datetime", Map.of()); - agent.addSkill("math", Map.of()); + agent.addSkill("datetime", Map.of()); + agent.addSkill("math", Map.of()); - Map config = new HashMap<>(); - config.put("document_id", documentId); - config.put("count", count); - config.put("distance", distance); + Map config = new HashMap<>(); + config.put("document_id", documentId); + config.put("count", count); + config.put("distance", distance); - String tags = System.getenv("DATASPHERE_TAGS"); - if (tags != null && !tags.isEmpty()) { - config.put("tags", java.util.Arrays.asList(tags.split(","))); - } + String tags = System.getenv("DATASPHERE_TAGS"); + if (tags != null && !tags.isEmpty()) { + config.put("tags", java.util.Arrays.asList(tags.split(","))); + } - agent.addSkill("datasphere", config); + agent.addSkill("datasphere", config); - System.out.println("DataSphere Serverless Environment Demo"); - System.out.printf(" Document: %s%n", documentId); - System.out.printf(" Count: %d, Distance: %.1f%n", count, distance); - System.out.println("Starting agent on port 3000..."); - agent.run(); - } + System.out.println("DataSphere Serverless Environment Demo"); + System.out.printf(" Document: %s%n", documentId); + System.out.printf(" Count: %d, Distance: %.1f%n", count, distance); + System.out.println("Starting agent on port 3000..."); + agent.run(); + } } diff --git a/examples/DatasphereWebhookEnvDemo.java b/examples/DatasphereWebhookEnvDemo.java index f779ae61..b8a16729 100644 --- a/examples/DatasphereWebhookEnvDemo.java +++ b/examples/DatasphereWebhookEnvDemo.java @@ -1,60 +1,62 @@ -/** +/* * DataSphere Webhook Environment Demo. * - * Traditional webhook-based DataSphere skill configured from environment - * variables. Compare with DatasphereServerlessEnv for the serverless approach. + *

Traditional webhook-based DataSphere skill configured from environment variables. Compare with + * DatasphereServerlessEnv for the serverless approach. * - * Required: SIGNALWIRE_SPACE, SIGNALWIRE_PROJECT_ID, SIGNALWIRE_API_TOKEN, - * DATASPHERE_DOCUMENT_ID + *

Required: SIGNALWIRE_SPACE, SIGNALWIRE_PROJECT_ID, SIGNALWIRE_API_TOKEN, + * DATASPHERE_DOCUMENT_ID */ - import com.signalwire.sdk.agent.AgentBase; - import java.util.Map; public class DatasphereWebhookEnvDemo { - static String requireEnv(String name) { - String val = System.getenv(name); - if (val == null || val.isEmpty()) { - System.err.println("Error: Required environment variable " + name + " is not set."); - System.exit(1); - } - return val; - } - - public static void main(String[] args) throws Exception { - String documentId = requireEnv("DATASPHERE_DOCUMENT_ID"); - int count = Integer.parseInt(System.getenv().getOrDefault("DATASPHERE_COUNT", "3")); - double distance = Double.parseDouble(System.getenv().getOrDefault("DATASPHERE_DISTANCE", "4.0")); - - var agent = AgentBase.builder() - .name("datasphere-webhook-env") - .route("/datasphere-webhook") - .port(3000) - .build(); - - agent.addLanguage("English", "en-US", "en-US-Standard-C"); - - agent.promptAddSection("Role", - "You are a knowledge assistant using webhook-based DataSphere for retrieval."); - - agent.addSkill("datetime", Map.of()); - agent.addSkill("math", Map.of()); - - agent.addSkill("datasphere", Map.of( - "document_id", documentId, - "count", count, - "distance", distance, - "mode", "webhook")); - - System.out.println("DataSphere Webhook Environment Demo"); - System.out.printf(" Document: %s%n", documentId); - System.out.println(" Execution: Webhook-based (traditional)"); - System.out.println(); - System.out.println(" Webhook: Full control, custom error handling"); - System.out.println(" Serverless: No webhooks, lower latency, executes on SignalWire"); - System.out.println("Starting agent on port 3000..."); - agent.run(); + static String requireEnv(String name) { + String val = System.getenv(name); + if (val == null || val.isEmpty()) { + System.err.println("Error: Required environment variable " + name + " is not set."); + System.exit(1); } + return val; + } + + public static void main(String[] args) throws Exception { + String documentId = requireEnv("DATASPHERE_DOCUMENT_ID"); + int count = Integer.parseInt(System.getenv().getOrDefault("DATASPHERE_COUNT", "3")); + double distance = + Double.parseDouble(System.getenv().getOrDefault("DATASPHERE_DISTANCE", "4.0")); + + var agent = + AgentBase.builder() + .name("datasphere-webhook-env") + .route("/datasphere-webhook") + .port(3000) + .build(); + + agent.addLanguage("English", "en-US", "en-US-Standard-C"); + + agent.promptAddSection( + "Role", "You are a knowledge assistant using webhook-based DataSphere for retrieval."); + + agent.addSkill("datetime", Map.of()); + agent.addSkill("math", Map.of()); + + agent.addSkill( + "datasphere", + Map.of( + "document_id", documentId, + "count", count, + "distance", distance, + "mode", "webhook")); + + System.out.println("DataSphere Webhook Environment Demo"); + System.out.printf(" Document: %s%n", documentId); + System.out.println(" Execution: Webhook-based (traditional)"); + System.out.println(); + System.out.println(" Webhook: Full control, custom error handling"); + System.out.println(" Serverless: No webhooks, lower latency, executes on SignalWire"); + System.out.println("Starting agent on port 3000..."); + agent.run(); + } } diff --git a/examples/DeclarativeAgent.java b/examples/DeclarativeAgent.java index 681cc010..72a6df6e 100644 --- a/examples/DeclarativeAgent.java +++ b/examples/DeclarativeAgent.java @@ -1,73 +1,76 @@ -/** +/* * Declarative Agent Example. * - * Demonstrates building an agent entirely from prompt sections defined - * up front, with simple tool definitions. This pattern keeps prompt - * structure visible and separated from implementation logic. + *

Demonstrates building an agent entirely from prompt sections defined up front, with simple + * tool definitions. This pattern keeps prompt structure visible and separated from implementation + * logic. */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - import java.time.LocalDateTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Map; public class DeclarativeAgent { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("declarative") - .route("/declarative") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = AgentBase.builder().name("declarative").route("/declarative").port(3000).build(); - // Personality - agent.promptAddSection("Personality", - "You are a friendly and helpful AI assistant who responds in a casual, conversational tone."); + // Personality + agent.promptAddSection( + "Personality", + "You are a friendly and helpful AI assistant who responds in a casual, conversational tone."); - // Goal - agent.promptAddSection("Goal", - "Help users with their questions about time and weather."); + // Goal + agent.promptAddSection("Goal", "Help users with their questions about time and weather."); - // Instructions - agent.promptAddSection("Instructions", "", List.of( - "Be concise and direct in your responses.", - "If you don't know something, say so clearly.", - "Use the get_time function when asked about the current time.", - "Use the get_weather function when asked about the weather." - )); + // Instructions + agent.promptAddSection( + "Instructions", + "", + List.of( + "Be concise and direct in your responses.", + "If you don't know something, say so clearly.", + "Use the get_time function when asked about the current time.", + "Use the get_weather function when asked about the weather.")); - // Post-prompt for summary - agent.setPostPrompt("Return a JSON summary: {\"topic\":\"...\",\"satisfied\":true/false}"); + // Post-prompt for summary + agent.setPostPrompt("Return a JSON summary: {\"topic\":\"...\",\"satisfied\":true/false}"); - // Tools - agent.defineTool("get_time", "Get the current time", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> { - String time = LocalDateTime.now() - .format(DateTimeFormatter.ofPattern("HH:mm:ss")); - return new FunctionResult("The current time is " + time); - }); + // Tools + agent.defineTool( + "get_time", + "Get the current time", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> { + String time = + LocalDateTime.now(ZoneId.systemDefault()) + .format(DateTimeFormatter.ofPattern("HH:mm:ss")); + return new FunctionResult("The current time is " + time); + }); - agent.defineTool("get_weather", "Get the current weather for a location", - Map.of("type", "object", - "properties", Map.of( - "location", Map.of("type", "string", - "description", "City or location") - ), - "required", List.of("location")), - (toolArgs, raw) -> { - String location = (String) toolArgs.getOrDefault("location", "Unknown"); - return new FunctionResult("It's sunny and 72F in " + location + "."); - }); + agent.defineTool( + "get_weather", + "Get the current weather for a location", + Map.of( + "type", + "object", + "properties", + Map.of("location", Map.of("type", "string", "description", "City or location")), + "required", + List.of("location")), + (toolArgs, raw) -> { + String location = (String) toolArgs.getOrDefault("location", "Unknown"); + return new FunctionResult("It's sunny and 72F in " + location + "."); + }); - // Summary callback - agent.onSummary((summary, rawPayload) -> - System.out.println("Conversation summary: " + summary)); + // Summary callback + agent.onSummary( + (summary, rawPayload) -> System.out.println("Conversation summary: " + summary)); - System.out.println("Starting declarative agent on port 3000..."); - agent.run(); - } + System.out.println("Starting declarative agent on port 3000..."); + agent.run(); + } } diff --git a/examples/DynamicInfoGathererExample.java b/examples/DynamicInfoGathererExample.java index 5e023e02..93e66ac5 100644 --- a/examples/DynamicInfoGathererExample.java +++ b/examples/DynamicInfoGathererExample.java @@ -1,56 +1,61 @@ -/** +/* * Dynamic InfoGatherer Example. * - * Selects a question set from the CLI argument at agent-startup time, then - * spins up the InfoGathererAgent prefab with that set. Demonstrates how to - * swap question packs without recompiling: the same agent binary serves - * "support", "medical", or "onboarding" depending on how it's invoked. + *

Selects a question set from the CLI argument at agent-startup time, then spins up the + * InfoGathererAgent prefab with that set. Demonstrates how to swap question packs without + * recompiling: the same agent binary serves "support", "medical", or "onboarding" depending on how + * it's invoked. * - * Usage: - * java DynamicInfoGatherer # default set - * java DynamicInfoGatherer support # customer support questions - * java DynamicInfoGatherer medical # medical intake - * java DynamicInfoGatherer onboarding # employee onboarding + *

Usage: java DynamicInfoGatherer # default set java DynamicInfoGatherer support # customer + * support questions java DynamicInfoGatherer medical # medical intake java DynamicInfoGatherer + * onboarding # employee onboarding */ - import com.signalwire.sdk.prefabs.InfoGathererAgent; - import java.util.List; import java.util.Map; public class DynamicInfoGathererExample { - public static void main(String[] args) throws Exception { - Map>> questionSets = Map.of( - "default", List.of( - InfoGathererAgent.question("name", "What is your full name?"), - InfoGathererAgent.question("phone", "What is your phone number?", true, null), - InfoGathererAgent.question("reason", "How can I help you today?")), - "support", List.of( - InfoGathererAgent.question("customer_name", "What is your name?"), - InfoGathererAgent.question("account_number", "What is your account number?", true, null), - InfoGathererAgent.question("issue", "What issue are you experiencing?"), - InfoGathererAgent.question("priority", "How urgent is this? (Low, Medium, High)")), - "medical", List.of( - InfoGathererAgent.question("patient_name", "What is the patient's full name?"), - InfoGathererAgent.question("symptoms", "What symptoms are you experiencing?", true, null), - InfoGathererAgent.question("duration", "How long have you had these symptoms?"), - InfoGathererAgent.question("medications", "Are you currently taking any medications?")), - "onboarding", List.of( - InfoGathererAgent.question("full_name", "What is your full name?"), - InfoGathererAgent.question("email", "What is your email address?", true, null), - InfoGathererAgent.question("company", "What company do you work for?"), - InfoGathererAgent.question("department", "What department?"), - InfoGathererAgent.question("start_date", "What is your start date?")) - ); + public static void main(String[] args) throws Exception { + Map>> questionSets = + Map.of( + "default", + List.of( + InfoGathererAgent.question("name", "What is your full name?"), + InfoGathererAgent.question("phone", "What is your phone number?", true, null), + InfoGathererAgent.question("reason", "How can I help you today?")), + "support", + List.of( + InfoGathererAgent.question("customer_name", "What is your name?"), + InfoGathererAgent.question( + "account_number", "What is your account number?", true, null), + InfoGathererAgent.question("issue", "What issue are you experiencing?"), + InfoGathererAgent.question( + "priority", "How urgent is this? (Low, Medium, High)")), + "medical", + List.of( + InfoGathererAgent.question("patient_name", "What is the patient's full name?"), + InfoGathererAgent.question( + "symptoms", "What symptoms are you experiencing?", true, null), + InfoGathererAgent.question("duration", "How long have you had these symptoms?"), + InfoGathererAgent.question( + "medications", "Are you currently taking any medications?")), + "onboarding", + List.of( + InfoGathererAgent.question("full_name", "What is your full name?"), + InfoGathererAgent.question("email", "What is your email address?", true, null), + InfoGathererAgent.question("company", "What company do you work for?"), + InfoGathererAgent.question("department", "What department?"), + InfoGathererAgent.question("start_date", "What is your start date?"))); - String set = args.length > 0 ? args[0] : "default"; - List> questions = questionSets.getOrDefault(set, questionSets.get("default")); - System.out.println("Loading question set: " + set); + String set = args.length > 0 ? args[0] : "default"; + List> questions = + questionSets.getOrDefault(set, questionSets.get("default")); + System.out.println("Loading question set: " + set); - var agent = new InfoGathererAgent("dynamic-intake", questions, "/contact", 3000); + var agent = new InfoGathererAgent("dynamic-intake", questions, "/contact", 3000); - System.out.println("Starting InfoGatherer (" + set + ") on port 3000 at /contact..."); - agent.run(); - } + System.out.println("Starting InfoGatherer (" + set + ") on port 3000 at /contact..."); + agent.run(); + } } diff --git a/examples/DynamicSwmlService.java b/examples/DynamicSwmlService.java index ab6e60f7..1d0b3b57 100644 --- a/examples/DynamicSwmlService.java +++ b/examples/DynamicSwmlService.java @@ -1,70 +1,64 @@ -/** +/* * Dynamic SWML Service Example. * - * Demonstrates creating SWML services that generate different responses - * based on request data -- a dynamic greeting service and a call router. + *

Demonstrates creating SWML services that generate different responses based on request data -- + * a dynamic greeting service and a call router. * - * These use the SWML Service class directly (no AI component). + *

These use the SWML Service class directly (no AI component). * - * Usage: java DynamicSwmlService [greeting|router] + *

Usage: java DynamicSwmlService [greeting|router] */ - import com.signalwire.sdk.swml.Service; - import java.util.Map; public class DynamicSwmlService { - public static void main(String[] args) throws Exception { - String mode = args.length > 0 ? args[0] : "greeting"; + public static void main(String[] args) throws Exception { + String mode = args.length > 0 ? args[0] : "greeting"; - switch (mode) { - case "greeting" -> startGreeting(); - case "router" -> startRouter(); - default -> { - System.out.println("Usage: DynamicSwmlService [greeting|router]"); - System.exit(1); - } - } + switch (mode) { + case "greeting" -> startGreeting(); + case "router" -> startRouter(); + default -> { + System.out.println("Usage: DynamicSwmlService [greeting|router]"); + System.exit(1); + } } + } - /** - * A greeting service that serves different SWML based on caller type. - */ - static void startGreeting() throws Exception { - var svc = new Service("dynamic-greeting", "/greeting"); + /** A greeting service that serves different SWML based on caller type. */ + static void startGreeting() throws Exception { + var svc = new Service("dynamic-greeting", "/greeting"); - // Build a default greeting document - svc.answer(null); - svc.play(Map.of("url", "say:Hello, thank you for calling our service.")); - svc.prompt(Map.of( - "play", "say:Press 1 for sales, 2 for support, or 3 to leave a message.", - "max_digits", 1, - "terminators", "#" - )); - svc.hangup(); + // Build a default greeting document + svc.answer(null); + svc.play(Map.of("url", "say:Hello, thank you for calling our service.")); + svc.prompt( + Map.of( + "play", "say:Press 1 for sales, 2 for support, or 3 to leave a message.", + "max_digits", 1, + "terminators", "#")); + svc.hangup(); - System.out.println("Starting dynamic greeting service..."); - System.out.println("POST JSON to customize: {\"caller_name\":\"John\",\"caller_type\":\"vip\"}"); - svc.serve(); - } + System.out.println("Starting dynamic greeting service..."); + System.out.println( + "POST JSON to customize: {\"caller_name\":\"John\",\"caller_type\":\"vip\"}"); + svc.serve(); + } - /** - * A call router that routes calls by region. - */ - static void startRouter() throws Exception { - var svc = new Service("call-router", "/router"); + /** A call router that routes calls by region. */ + static void startRouter() throws Exception { + var svc = new Service("call-router", "/router"); - svc.answer(null); - svc.play(Map.of("url", - "say:Thank you for calling. We'll connect you with an available agent.")); - svc.connect(Map.of("to", "+15551234567", "timeout", 30)); - svc.play(Map.of("url", - "say:All agents are busy. Please try again later.")); - svc.hangup(); + svc.answer(null); + svc.play( + Map.of("url", "say:Thank you for calling. We'll connect you with an available agent.")); + svc.connect(Map.of("to", "+15551234567", "timeout", 30)); + svc.play(Map.of("url", "say:All agents are busy. Please try again later.")); + svc.hangup(); - System.out.println("Starting call router service..."); - System.out.println("POST JSON to customize: {\"region\":\"west\",\"high_volume\":true}"); - svc.serve(); - } + System.out.println("Starting call router service..."); + System.out.println("POST JSON to customize: {\"region\":\"west\",\"high_volume\":true}"); + svc.serve(); + } } diff --git a/examples/FaqBotAgent.java b/examples/FaqBotAgent.java index f7470cad..2f4ee0de 100644 --- a/examples/FaqBotAgent.java +++ b/examples/FaqBotAgent.java @@ -1,43 +1,40 @@ -/** +/* * FAQ Bot Example -- using the FAQBotAgent prefab. * - * Creates a domain-specific FAQ agent with keyword-based lookup. + *

Creates a domain-specific FAQ agent with keyword-based lookup. */ - import com.signalwire.sdk.prefabs.FAQBotAgent; - import java.util.List; public class FaqBotAgent { - public static void main(String[] args) throws Exception { - var agent = new FAQBotAgent( - "signalwire-faq", - List.of( - FAQBotAgent.faq( - "What is SignalWire?", - "SignalWire is a communications platform that provides APIs for voice, video, and messaging.", - List.of("signalwire", "platform", "api")), - FAQBotAgent.faq( - "How do I create an AI Agent?", - "Use the SignalWire AI Agent SDK, which provides a framework for building and deploying conversational AI agents.", - List.of("agent", "sdk", "create", "build")), - FAQBotAgent.faq( - "What is SWML?", - "SWML (SignalWire Markup Language) is a markup language for defining communications workflows, including AI interactions.", - List.of("swml", "markup", "workflow")), - FAQBotAgent.faq( - "What are your hours?", - "We are open Monday through Friday, 9 AM to 5 PM Eastern Time.", - List.of("hours", "open", "schedule")), - FAQBotAgent.faq( - "Do you offer refunds?", - "Yes, we offer refunds within 30 days of purchase if you're not satisfied.", - List.of("refund", "return", "money back")) - ) - ); + public static void main(String[] args) throws Exception { + var agent = + new FAQBotAgent( + "signalwire-faq", + List.of( + FAQBotAgent.faq( + "What is SignalWire?", + "SignalWire is a communications platform that provides APIs for voice, video, and messaging.", + List.of("signalwire", "platform", "api")), + FAQBotAgent.faq( + "How do I create an AI Agent?", + "Use the SignalWire AI Agent SDK, which provides a framework for building and deploying conversational AI agents.", + List.of("agent", "sdk", "create", "build")), + FAQBotAgent.faq( + "What is SWML?", + "SWML (SignalWire Markup Language) is a markup language for defining communications workflows, including AI interactions.", + List.of("swml", "markup", "workflow")), + FAQBotAgent.faq( + "What are your hours?", + "We are open Monday through Friday, 9 AM to 5 PM Eastern Time.", + List.of("hours", "open", "schedule")), + FAQBotAgent.faq( + "Do you offer refunds?", + "Yes, we offer refunds within 30 days of purchase if you're not satisfied.", + List.of("refund", "return", "money back")))); - System.out.println("Starting FAQ Bot on port 3000..."); - agent.run(); - } + System.out.println("Starting FAQ Bot on port 3000..."); + agent.run(); + } } diff --git a/examples/GatherInfoDemo.java b/examples/GatherInfoDemo.java index ccd37232..37de909a 100644 --- a/examples/GatherInfoDemo.java +++ b/examples/GatherInfoDemo.java @@ -1,65 +1,60 @@ -/** +/* * Gather Info Mode Demo. * - * Demonstrates the contexts system's gather_info mode for structured - * data collection. Questions are presented one at a time and answers - * are stored in global_data under the configured output key. + *

Demonstrates the contexts system's gather_info mode for structured data collection. Questions + * are presented one at a time and answers are stored in global_data under the configured output + * key. */ - import com.signalwire.sdk.agent.AgentBase; - import java.util.List; public class GatherInfoDemo { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("patient-intake") - .route("/patient-intake") - .port(3000) - .build(); - - agent.addLanguage("English", "en-US", "en-US-Standard-C"); - - agent.promptAddSection("Role", - "You are a friendly medical office intake assistant. " + - "Collect patient information accurately and professionally."); - - // Define contexts with gather info steps - var ctxBuilder = agent.defineContexts(); - var ctx = ctxBuilder.addContext("default"); - - // Step 1: Demographics - var step1 = ctx.addStep("demographics"); - step1.setText("Collect the patient's basic information."); - step1.setGatherInfo("patient_demographics", null, - "Please collect the following patient information."); - step1.addGatherQuestion("full_name", "What is your full name?"); - step1.addGatherQuestion("date_of_birth", "What is your date of birth?"); - step1.addGatherQuestion("phone_number", "What is your phone number?", - "string", true, null, null); - step1.addGatherQuestion("email", "What is your email address?"); - step1.setValidSteps(List.of("symptoms")); - - // Step 2: Symptoms - var step2 = ctx.addStep("symptoms"); - step2.setText("Ask about the patient's current symptoms and reason for visit."); - step2.setGatherInfo("patient_symptoms", null, - "Now let's talk about why you're visiting today."); - step2.addGatherQuestion("reason_for_visit", - "What is the main reason for your visit today?"); - step2.addGatherQuestion("symptom_duration", - "How long have you been experiencing these symptoms?"); - step2.addGatherQuestion("pain_level", - "On a scale of 1 to 10, how would you rate your discomfort?"); - step2.setValidSteps(List.of("confirmation")); - - // Step 3: Confirmation (normal mode) - var step3 = ctx.addStep("confirmation"); - step3.setText("Summarize all collected information and confirm with the patient."); - step3.setStepCriteria("Patient has confirmed all information is correct"); - - System.out.println("Starting patient intake agent on port 3000..."); - agent.run(); - } + public static void main(String[] args) throws Exception { + var agent = + AgentBase.builder().name("patient-intake").route("/patient-intake").port(3000).build(); + + agent.addLanguage("English", "en-US", "en-US-Standard-C"); + + agent.promptAddSection( + "Role", + "You are a friendly medical office intake assistant. " + + "Collect patient information accurately and professionally."); + + // Define contexts with gather info steps + var ctxBuilder = agent.defineContexts(); + var ctx = ctxBuilder.addContext("default"); + + // Step 1: Demographics + var step1 = ctx.addStep("demographics"); + step1.setText("Collect the patient's basic information."); + step1.setGatherInfo( + "patient_demographics", null, "Please collect the following patient information."); + step1.addGatherQuestion("full_name", "What is your full name?"); + step1.addGatherQuestion("date_of_birth", "What is your date of birth?"); + step1.addGatherQuestion( + "phone_number", "What is your phone number?", "string", true, null, null); + step1.addGatherQuestion("email", "What is your email address?"); + step1.setValidSteps(List.of("symptoms")); + + // Step 2: Symptoms + var step2 = ctx.addStep("symptoms"); + step2.setText("Ask about the patient's current symptoms and reason for visit."); + step2.setGatherInfo( + "patient_symptoms", null, "Now let's talk about why you're visiting today."); + step2.addGatherQuestion("reason_for_visit", "What is the main reason for your visit today?"); + step2.addGatherQuestion( + "symptom_duration", "How long have you been experiencing these symptoms?"); + step2.addGatherQuestion( + "pain_level", "On a scale of 1 to 10, how would you rate your discomfort?"); + step2.setValidSteps(List.of("confirmation")); + + // Step 3: Confirmation (normal mode) + var step3 = ctx.addStep("confirmation"); + step3.setText("Summarize all collected information and confirm with the patient."); + step3.setStepCriteria("Patient has confirmed all information is correct"); + + System.out.println("Starting patient intake agent on port 3000..."); + agent.run(); + } } diff --git a/examples/GatherPerQuestionFunctionsDemo.java b/examples/GatherPerQuestionFunctionsDemo.java index fe4a15a4..8ba33a90 100644 --- a/examples/GatherPerQuestionFunctionsDemo.java +++ b/examples/GatherPerQuestionFunctionsDemo.java @@ -1,155 +1,150 @@ -/** +/* * Per-Question Function Whitelist Demo (gather_info) * - * This example exists to teach one specific gotcha: while a step's - * gather_info is asking questions, ALL of the step's other functions are - * forcibly deactivated. The only callable tools during a gather question - * are: + *

This example exists to teach one specific gotcha: while a step's gather_info is asking + * questions, ALL of the step's other functions are forcibly deactivated. The only callable tools + * during a gather question are: * *

    - *
  • {@code gather_submit} (the native answer-submission tool, always - * active)
  • - *
  • Whatever names you list in that question's {@code functions} - * argument
  • + *
  • {@code gather_submit} (the native answer-submission tool, always active) + *
  • Whatever names you list in that question's {@code functions} argument *
* - *

{@code next_step} and {@code change_context} are also filtered out — - * the model literally cannot navigate away until the gather completes. This - * is by design: it forces a tight ask → submit → next-question loop. + *

{@code next_step} and {@code change_context} are also filtered out — the model literally + * cannot navigate away until the gather completes. This is by design: it forces a tight ask → + * submit → next-question loop. * - *

If a question needs to call out to a tool — for example, to validate - * an email format, geocode a ZIP, or look up something from an external - * service — you must list that tool name in the question's - * {@code functions} argument. The function is active ONLY for that - * question. + *

If a question needs to call out to a tool — for example, to validate an email format, geocode + * a ZIP, or look up something from an external service — you must list that tool name in the + * question's {@code functions} argument. The function is active ONLY for that question. * - *

Below: a customer-onboarding gather flow where each question unlocks - * a different validation tool, and where the step's own non-gather tools - * ({@code escalate_to_human}, {@code lookup_existing_account}) are LOCKED - * OUT during gather because they aren't whitelisted on any question. + *

Below: a customer-onboarding gather flow where each question unlocks a different validation + * tool, and where the step's own non-gather tools ({@code escalate_to_human}, {@code + * lookup_existing_account}) are LOCKED OUT during gather because they aren't whitelisted on any + * question. * *

Run this file to see the resulting SWML. */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - import java.util.List; import java.util.Map; public class GatherPerQuestionFunctionsDemo { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("gather_per_question_functions_demo") - .route("/") - .port(3000) - .build(); - - // Tools that the step would normally have available — but during - // gather questioning, they're all locked out unless they appear in - // a question's `functions` whitelist. - agent.defineTool("validate_email", - "Validate that an email address is well-formed and deliverable", - Map.of("type", "object", "properties", Map.of( - "email", Map.of("type", "string"))), - (a, raw) -> new FunctionResult("valid")); - - agent.defineTool("geocode_zip", - "Look up the city/state for a US ZIP code", - Map.of("type", "object", "properties", Map.of( - "zip", Map.of("type", "string"))), - (a, raw) -> new FunctionResult("{\"city\":\"...\",\"state\":\"...\"}")); - - agent.defineTool("check_age_eligibility", - "Verify the customer is old enough for the product", - Map.of("type", "object", "properties", Map.of( - "age", Map.of("type", "integer"))), - (a, raw) -> new FunctionResult("eligible")); - - // These tools are NOT whitelisted on any gather question. They are - // registered on the agent and active outside the gather, but during - // the gather they cannot be called — gather mode locks them out. - agent.defineTool("escalate_to_human", - "Transfer the conversation to a live agent", - Map.of("type", "object", "properties", Map.of()), - (a, raw) -> new FunctionResult("transferred")); - - agent.defineTool("lookup_existing_account", - "Search for an existing account by email", - Map.of("type", "object", "properties", Map.of( - "email", Map.of("type", "string"))), - (a, raw) -> new FunctionResult("not found")); - - // Build a single-context agent with one onboarding step. - var cb = agent.defineContexts(); - var ctx = cb.addContext("default"); - - var onboard = ctx.addStep("onboard") - .setText( - "Onboard a new customer by collecting their details. " - + "Use gather_info to ask one question at a " - + "time. Each question may unlock a specific " - + "validation tool — only that tool and " - + "gather_submit are callable while " - + "answering it.") - .setFunctions(List.of( - // Outside of the gather (which is the entire step - // here), these would be available. During the - // gather they are forcibly hidden in favor of the - // per-question whitelists. - "escalate_to_human", - "lookup_existing_account")) - .setGatherInfo( - "customer", - "next_step", - "I'll need to collect a few details to set up " - + "your account. I'll ask one question at a " - + "time."); - - // Question 1: email — only validate_email + gather_submit callable. - onboard.addGatherQuestion( - "email", - "What's your email address?", - "string", - /* confirm */ true, - /* prompt */ null, - List.of("validate_email")); - - // Question 2: zip — only geocode_zip + gather_submit callable. - onboard.addGatherQuestion( - "zip", - "What's your ZIP code?", - "string", - /* confirm */ false, - /* prompt */ null, - List.of("geocode_zip")); - - // Question 3: age — only check_age_eligibility + gather_submit - // callable. - onboard.addGatherQuestion( - "age", - "How old are you?", - "integer", - /* confirm */ false, - /* prompt */ null, - List.of("check_age_eligibility")); - - // Question 4: referral_source — no functions list → only - // gather_submit is callable. The model cannot validate, lookup, - // escalate — nothing. This is the right pattern when a question - // needs no tools. - onboard.addGatherQuestion("referral_source", "How did you hear about us?"); - - // A simple confirmation step the gather auto-advances into. - ctx.addStep("confirm") - .setText( - "Read the collected info back to the customer and " - + "confirm everything is correct.") - .setFunctions(List.of()) - .setEnd(true); - - String swml = agent.renderSwmlJson("http://localhost:3000"); - System.out.println(swml); - } + public static void main(String[] args) throws Exception { + var agent = + AgentBase.builder() + .name("gather_per_question_functions_demo") + .route("/") + .port(3000) + .build(); + + // Tools that the step would normally have available — but during + // gather questioning, they're all locked out unless they appear in + // a question's `functions` whitelist. + agent.defineTool( + "validate_email", + "Validate that an email address is well-formed and deliverable", + Map.of("type", "object", "properties", Map.of("email", Map.of("type", "string"))), + (a, raw) -> new FunctionResult("valid")); + + agent.defineTool( + "geocode_zip", + "Look up the city/state for a US ZIP code", + Map.of("type", "object", "properties", Map.of("zip", Map.of("type", "string"))), + (a, raw) -> new FunctionResult("{\"city\":\"...\",\"state\":\"...\"}")); + + agent.defineTool( + "check_age_eligibility", + "Verify the customer is old enough for the product", + Map.of("type", "object", "properties", Map.of("age", Map.of("type", "integer"))), + (a, raw) -> new FunctionResult("eligible")); + + // These tools are NOT whitelisted on any gather question. They are + // registered on the agent and active outside the gather, but during + // the gather they cannot be called — gather mode locks them out. + agent.defineTool( + "escalate_to_human", + "Transfer the conversation to a live agent", + Map.of("type", "object", "properties", Map.of()), + (a, raw) -> new FunctionResult("transferred")); + + agent.defineTool( + "lookup_existing_account", + "Search for an existing account by email", + Map.of("type", "object", "properties", Map.of("email", Map.of("type", "string"))), + (a, raw) -> new FunctionResult("not found")); + + // Build a single-context agent with one onboarding step. + var cb = agent.defineContexts(); + var ctx = cb.addContext("default"); + + var onboard = + ctx.addStep("onboard") + .setText( + "Onboard a new customer by collecting their details. " + + "Use gather_info to ask one question at a " + + "time. Each question may unlock a specific " + + "validation tool — only that tool and " + + "gather_submit are callable while " + + "answering it.") + .setFunctions( + List.of( + // Outside of the gather (which is the entire step + // here), these would be available. During the + // gather they are forcibly hidden in favor of the + // per-question whitelists. + "escalate_to_human", "lookup_existing_account")) + .setGatherInfo( + "customer", + "next_step", + "I'll need to collect a few details to set up " + + "your account. I'll ask one question at a " + + "time."); + + // Question 1: email — only validate_email + gather_submit callable. + onboard.addGatherQuestion( + "email", + "What's your email address?", + "string", + /* confirm */ true, + /* prompt */ null, + List.of("validate_email")); + + // Question 2: zip — only geocode_zip + gather_submit callable. + onboard.addGatherQuestion( + "zip", + "What's your ZIP code?", + "string", + /* confirm */ false, + /* prompt */ null, + List.of("geocode_zip")); + + // Question 3: age — only check_age_eligibility + gather_submit + // callable. + onboard.addGatherQuestion( + "age", + "How old are you?", + "integer", + /* confirm */ false, + /* prompt */ null, + List.of("check_age_eligibility")); + + // Question 4: referral_source — no functions list → only + // gather_submit is callable. The model cannot validate, lookup, + // escalate — nothing. This is the right pattern when a question + // needs no tools. + onboard.addGatherQuestion("referral_source", "How did you hear about us?"); + + // A simple confirmation step the gather auto-advances into. + ctx.addStep("confirm") + .setText( + "Read the collected info back to the customer and " + "confirm everything is correct.") + .setFunctions(List.of()) + .setEnd(true); + + String swml = agent.renderSwmlJson("http://localhost:3000"); + System.out.println(swml); + } } diff --git a/examples/InfoGathererExample.java b/examples/InfoGathererExample.java index 8e7cf6a1..be65293e 100644 --- a/examples/InfoGathererExample.java +++ b/examples/InfoGathererExample.java @@ -1,36 +1,33 @@ -/** +/* * Pre-built info-gathering agent with sequential questions. * - * Uses the InfoGathererAgent prefab which wraps the info_gatherer skill - * for sequential question collection with key/value answers. + *

Uses the InfoGathererAgent prefab which wraps the info_gatherer skill for sequential question + * collection with key/value answers. */ - import com.signalwire.sdk.prefabs.InfoGathererAgent; - import java.util.List; public class InfoGathererExample { - public static void main(String[] args) throws Exception { - var agent = new InfoGathererAgent( - "patient-intake", - List.of( - InfoGathererAgent.question("full_name", - "What is your full name?"), - InfoGathererAgent.question("date_of_birth", - "What is your date of birth?", - true, null), // confirm=true - InfoGathererAgent.question("phone_number", - "What is the best phone number to reach you?"), - InfoGathererAgent.question("reason_for_visit", - "What is the reason for your visit today?", - false, "Be empathetic and understanding"), - InfoGathererAgent.question("insurance_provider", - "Who is your insurance provider?") - ) - ); + public static void main(String[] args) throws Exception { + var agent = + new InfoGathererAgent( + "patient-intake", + List.of( + InfoGathererAgent.question("full_name", "What is your full name?"), + InfoGathererAgent.question( + "date_of_birth", "What is your date of birth?", true, null), // confirm=true + InfoGathererAgent.question( + "phone_number", "What is the best phone number to reach you?"), + InfoGathererAgent.question( + "reason_for_visit", + "What is the reason for your visit today?", + false, + "Be empathetic and understanding"), + InfoGathererAgent.question( + "insurance_provider", "Who is your insurance provider?"))); - System.out.println("Starting patient intake agent on port 3000..."); - agent.run(); - } + System.out.println("Starting patient intake agent on port 3000..."); + agent.run(); + } } diff --git a/examples/JokeAgent.java b/examples/JokeAgent.java index 5eb87b57..d1ed2af2 100644 --- a/examples/JokeAgent.java +++ b/examples/JokeAgent.java @@ -1,71 +1,67 @@ -/** - * Joke Agent -- uses a raw data_map configuration to integrate - * with the API Ninjas joke API. +/* + * Joke Agent -- uses a raw data_map configuration to integrate with the API Ninjas joke API. * - * Run with: API_NINJAS_KEY=your_key java JokeAgent + *

Run with: API_NINJAS_KEY=your_key java JokeAgent */ - import com.signalwire.sdk.agent.AgentBase; - import java.util.List; import java.util.Map; public class JokeAgent { - public static void main(String[] args) throws Exception { - String apiKey = System.getenv("API_NINJAS_KEY"); - if (apiKey == null || apiKey.isEmpty()) { - System.err.println("Error: API_NINJAS_KEY environment variable is required."); - System.err.println("Get a free key at https://api.api-ninjas.com/"); - System.exit(1); - } + public static void main(String[] args) throws Exception { + String apiKey = System.getenv("API_NINJAS_KEY"); + if (apiKey == null || apiKey.isEmpty()) { + System.err.println("Error: API_NINJAS_KEY environment variable is required."); + System.err.println("Get a free key at https://api.api-ninjas.com/"); + System.exit(1); + } - var agent = AgentBase.builder() - .name("joke-agent") - .route("/joke-agent") - .port(3000) - .build(); + var agent = AgentBase.builder().name("joke-agent").route("/joke-agent").port(3000).build(); - agent.promptAddSection("Personality", - "You are a funny assistant who loves to tell jokes."); - agent.promptAddSection("Goal", - "Make people laugh with great jokes."); - agent.promptAddSection("Instructions", "", List.of( - "Use the get_joke function to tell jokes when asked", - "You can tell either regular jokes or dad jokes", - "Be enthusiastic about sharing humor" - )); + agent.promptAddSection("Personality", "You are a funny assistant who loves to tell jokes."); + agent.promptAddSection("Goal", "Make people laugh with great jokes."); + agent.promptAddSection( + "Instructions", + "", + List.of( + "Use the get_joke function to tell jokes when asked", + "You can tell either regular jokes or dad jokes", + "Be enthusiastic about sharing humor")); - // Register a raw data_map function (no webhook handler needed) - agent.registerSwaigFunction(Map.of( - "function", "get_joke", - "description", "Tell a joke", - "parameters", Map.of( - "type", "object", - "properties", Map.of( - "type", Map.of( - "type", "string", - "description", "Must be 'jokes' or 'dadjokes'" - ) - ) - ), - "data_map", Map.of( - "webhooks", List.of(Map.of( - "url", "https://api.api-ninjas.com/v1/%{args.type}", - "method", "GET", - "headers", Map.of("X-Api-Key", apiKey), - "output", Map.of( - "response", "Tell the user: %{array[0].joke}" - ), - "error_keys", "error" - )), - "output", Map.of( - "response", "The joke service isn't working right now. Make up a joke on your own." - ) - ) - )); + // Register a raw data_map function (no webhook handler needed) + agent.registerSwaigFunction( + Map.of( + "function", + "get_joke", + "description", + "Tell a joke", + "parameters", + Map.of( + "type", + "object", + "properties", + Map.of( + "type", + Map.of( + "type", "string", + "description", "Must be 'jokes' or 'dadjokes'"))), + "data_map", + Map.of( + "webhooks", + List.of( + Map.of( + "url", "https://api.api-ninjas.com/v1/%{args.type}", + "method", "GET", + "headers", Map.of("X-Api-Key", apiKey), + "output", Map.of("response", "Tell the user: %{array[0].joke}"), + "error_keys", "error")), + "output", + Map.of( + "response", + "The joke service isn't working right now. Make up a joke on your own.")))); - System.out.println("Starting Joke Agent on port 3000..."); - agent.run(); - } + System.out.println("Starting Joke Agent on port 3000..."); + agent.run(); + } } diff --git a/examples/JokeSkillDemo.java b/examples/JokeSkillDemo.java index 3f04e16d..3368d9a8 100644 --- a/examples/JokeSkillDemo.java +++ b/examples/JokeSkillDemo.java @@ -1,50 +1,46 @@ -/** +/* * Joke Skill Demo -- Using the Modular Skills System. * - * Demonstrates the joke skill via the skills system with DataMap for - * serverless execution. Compare with JokeAgent.java (raw data_map). + *

Demonstrates the joke skill via the skills system with DataMap for serverless execution. + * Compare with JokeAgent.java (raw data_map). * - * Required: API_NINJAS_KEY environment variable. + *

Required: API_NINJAS_KEY environment variable. */ - import com.signalwire.sdk.agent.AgentBase; - import java.util.List; import java.util.Map; public class JokeSkillDemo { - public static void main(String[] args) throws Exception { - String apiKey = System.getenv("API_NINJAS_KEY"); - if (apiKey == null || apiKey.isEmpty()) { - System.err.println("Error: API_NINJAS_KEY environment variable is required."); - System.err.println("Get your free API key from https://api.api-ninjas.com/"); - System.exit(1); - } - - var agent = AgentBase.builder() - .name("joke-skill-demo") - .route("/joke-skill") - .port(3000) - .build(); - - agent.addLanguage("English", "en-US", "en-US-Standard-C"); - - agent.promptAddSection("Personality", - "You are a cheerful comedian who loves sharing jokes."); - agent.promptAddSection("Instructions", "", List.of( - "When users ask for jokes, use your joke functions", - "Be enthusiastic and fun in your responses", - "You can tell both regular jokes and dad jokes")); - - agent.addSkill("joke", Map.of("api_key", apiKey)); - - System.out.println("Joke Skill Demo (modular skills system)"); - System.out.println(" Benefits over raw DataMap:"); - System.out.println(" - One-liner integration via skills system"); - System.out.println(" - Automatic validation and error handling"); - System.out.println(" - Reusable across agents"); - System.out.println("Starting agent on port 3000..."); - agent.run(); + public static void main(String[] args) throws Exception { + String apiKey = System.getenv("API_NINJAS_KEY"); + if (apiKey == null || apiKey.isEmpty()) { + System.err.println("Error: API_NINJAS_KEY environment variable is required."); + System.err.println("Get your free API key from https://api.api-ninjas.com/"); + System.exit(1); } + + var agent = AgentBase.builder().name("joke-skill-demo").route("/joke-skill").port(3000).build(); + + agent.addLanguage("English", "en-US", "en-US-Standard-C"); + + agent.promptAddSection("Personality", "You are a cheerful comedian who loves sharing jokes."); + agent.promptAddSection( + "Instructions", + "", + List.of( + "When users ask for jokes, use your joke functions", + "Be enthusiastic and fun in your responses", + "You can tell both regular jokes and dad jokes")); + + agent.addSkill("joke", Map.of("api_key", apiKey)); + + System.out.println("Joke Skill Demo (modular skills system)"); + System.out.println(" Benefits over raw DataMap:"); + System.out.println(" - One-liner integration via skills system"); + System.out.println(" - Automatic validation and error handling"); + System.out.println(" - Reusable across agents"); + System.out.println("Starting agent on port 3000..."); + agent.run(); + } } diff --git a/examples/KubernetesReadyAgent.java b/examples/KubernetesReadyAgent.java index 7df08183..f83a2b84 100644 --- a/examples/KubernetesReadyAgent.java +++ b/examples/KubernetesReadyAgent.java @@ -1,46 +1,40 @@ -/** +/* * Kubernetes-Ready Agent. * - * Configured for production Kubernetes deployment with: - * - /health and /ready endpoints (built-in) - * - Environment variable configuration (PORT, LOG_LEVEL) - * - Graceful operation + *

Configured for production Kubernetes deployment with: - /health and /ready endpoints + * (built-in) - Environment variable configuration (PORT, LOG_LEVEL) - Graceful operation * - * Usage: - * PORT=8080 java KubernetesAgent + *

Usage: PORT=8080 java KubernetesAgent */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - -import java.util.List; import java.util.Map; public class KubernetesReadyAgent { - public static void main(String[] args) throws Exception { - // PORT env var is automatically respected by AgentBase - var agent = AgentBase.builder() - .name("k8s-agent") - .route("/") - .build(); - - agent.addLanguage("English", "en-US", "en-US-Standard-C"); - - agent.promptAddSection("Role", - "You are a production-ready AI agent running in Kubernetes. " + - "You can help users with general questions and demonstrate cloud-native deployment."); - - // Health status tool - agent.defineTool("health_status", "Get the health status of this agent", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> new FunctionResult( - "Agent k8s-agent is healthy, running in Kubernetes.")); - - int port = agent.getPort(); - System.out.println("Kubernetes-ready agent starting on port " + port); - System.out.println("Health: http://localhost:" + port + "/health"); - System.out.println("Ready: http://localhost:" + port + "/ready"); - agent.run(); - } + public static void main(String[] args) throws Exception { + // PORT env var is automatically respected by AgentBase + var agent = AgentBase.builder().name("k8s-agent").route("/").build(); + + agent.addLanguage("English", "en-US", "en-US-Standard-C"); + + agent.promptAddSection( + "Role", + "You are a production-ready AI agent running in Kubernetes. " + + "You can help users with general questions and demonstrate cloud-native deployment."); + + // Health status tool + agent.defineTool( + "health_status", + "Get the health status of this agent", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> + new FunctionResult("Agent k8s-agent is healthy, running in Kubernetes.")); + + int port = agent.getPort(); + System.out.println("Kubernetes-ready agent starting on port " + port); + System.out.println("Health: http://localhost:" + port + "/health"); + System.out.println("Ready: http://localhost:" + port + "/ready"); + agent.run(); + } } diff --git a/examples/LambdaAgent.java b/examples/LambdaAgent.java index 27d5d790..7e496293 100644 --- a/examples/LambdaAgent.java +++ b/examples/LambdaAgent.java @@ -1,139 +1,119 @@ -/** +/* * AWS Lambda Deployment Example. * - * Demonstrates deploying a SignalWire agent as an AWS Lambda function - * using {@link com.signalwire.sdk.runtime.lambda.LambdaAgentHandler}. + *

Demonstrates deploying a SignalWire agent as an AWS Lambda function using {@link + * com.signalwire.sdk.runtime.lambda.LambdaAgentHandler}. * - * The adapter accepts raw API Gateway (v1 or v2) / Function URL - * payloads as {@code Map} and returns a response - * envelope as {@code Map}, so the SDK itself does + *

The adapter accepts raw API Gateway (v1 or v2) / Function URL payloads as {@code Map} and returns a response envelope as {@code Map}, so the SDK itself does * NOT pull in {@code aws-lambda-java-core} or {@code aws-lambda-java-events}. * - * Packaging for Lambda (in your consumer project): + *

Packaging for Lambda (in your consumer project): * - * plugins { - * id 'java' - * id 'com.github.johnrengelman.shadow' version '8.1.1' - * } - * dependencies { - * implementation 'com.signalwire:signalwire-agents-java:2.0.0' - * // Optional — only needed for the typed RequestHandler interface: - * compileOnly 'com.amazonaws:aws-lambda-java-core:1.2.3' - * } - * shadowJar { archiveClassifier.set('') } + *

plugins { id 'java' id 'com.github.johnrengelman.shadow' version '8.1.1' } dependencies { + * implementation 'com.signalwire:signalwire-agents-java:2.0.0' // Optional — only needed for the + * typed RequestHandler interface: compileOnly 'com.amazonaws:aws-lambda-java-core:1.2.3' } + * shadowJar { archiveClassifier.set('') } * - * Upload the resulting shaded JAR to Lambda and set the handler to: + *

Upload the resulting shaded JAR to Lambda and set the handler to: * - * LambdaAgent::handleLambdaRequest + *

LambdaAgent::handleLambdaRequest * - * (Lambda supports direct reference to a static - * {@code Map handleLambdaRequest(Map, Context)} method — no - * {@code RequestHandler} implementation required.) + *

(Lambda supports direct reference to a static {@code Map handleLambdaRequest(Map, Context)} + * method — no {@code RequestHandler} implementation required.) * - * Runtime env vars used automatically: - * AWS_LAMBDA_FUNCTION_URL Set by Lambda Function URL feature. - * Used as the webhook origin. - * AWS_LAMBDA_FUNCTION_NAME Always set by Lambda. Used to - * synthesise a Function URL if the - * explicit one is absent. - * AWS_REGION Always set by Lambda. - * SWML_PROXY_URL_BASE Override: force a specific webhook - * origin (e.g. a CloudFront domain). - * SWML_BASIC_AUTH_USER Basic auth username. - * SWML_BASIC_AUTH_PASSWORD Basic auth password. Set it in the - * Lambda console, or callers get 401s. + *

Runtime env vars used automatically: AWS_LAMBDA_FUNCTION_URL Set by Lambda Function URL + * feature. Used as the webhook origin. AWS_LAMBDA_FUNCTION_NAME Always set by Lambda. Used to + * synthesise a Function URL if the explicit one is absent. AWS_REGION Always set by Lambda. + * SWML_PROXY_URL_BASE Override: force a specific webhook origin (e.g. a CloudFront domain). + * SWML_BASIC_AUTH_USER Basic auth username. SWML_BASIC_AUTH_PASSWORD Basic auth password. Set it in + * the Lambda console, or callers get 401s. * - * For local testing, running this file starts a normal HTTP server - * on port 3000. + *

For local testing, running this file starts a normal HTTP server on port 3000. */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.runtime.EnvProvider; import com.signalwire.sdk.runtime.lambda.LambdaAgentHandler; import com.signalwire.sdk.swaig.FunctionResult; - import java.time.LocalDateTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Map; public class LambdaAgent { - // Built once on cold start and reused across warm invocations. - private static final LambdaAgentHandler HANDLER = new LambdaAgentHandler(buildAgent()); + // Built once on cold start and reused across warm invocations. + private static final LambdaAgentHandler HANDLER = new LambdaAgentHandler(buildAgent()); - /** - * Entry point for AWS Lambda. Configure the Lambda handler as: - * LambdaAgent::handleLambdaRequest - * - * Lambda will inject the API Gateway / Function URL event as the - * first argument. The second parameter would be the Lambda Context - * object if you included {@code aws-lambda-java-core} — omitted - * here to keep the example dependency-free. - */ - public static Map handleLambdaRequest(Map event) { - return HANDLER.handle(event).toMap(); - } + /** + * Entry point for AWS Lambda. Configure the Lambda handler as: LambdaAgent::handleLambdaRequest + * + *

Lambda will inject the API Gateway / Function URL event as the first argument. The second + * parameter would be the Lambda Context object if you included {@code aws-lambda-java-core} — + * omitted here to keep the example dependency-free. + */ + public static Map handleLambdaRequest(Map event) { + return HANDLER.handle(event).toMap(); + } - /** - * Factory method discovered by {@code swaig-test --simulate-serverless - * lambda}. The CLI invokes this overload (EnvProvider-aware) so the - * simulated env values are visible to the {@link AgentBase.Builder} - * at build time (for {@code SWML_BASIC_AUTH_*} and - * {@code SWML_PROXY_URL_BASE} resolution). - */ - public static AgentBase buildAgent(EnvProvider env) { - return configureAgent(AgentBase.builder() - .name("lambda-agent") - .route("/") - .port(3000) - .envProvider(env) - .build()); - } + /** + * Factory method discovered by {@code swaig-test --simulate-serverless lambda}. The CLI invokes + * this overload (EnvProvider-aware) so the simulated env values are visible to the {@link + * AgentBase.Builder} at build time (for {@code SWML_BASIC_AUTH_*} and {@code SWML_PROXY_URL_BASE} + * resolution). + */ + public static AgentBase buildAgent(EnvProvider env) { + return configureAgent( + AgentBase.builder().name("lambda-agent").route("/").port(3000).envProvider(env).build()); + } - public static AgentBase buildAgent() { - var agent = AgentBase.builder() - .name("lambda-agent") - .route("/") - .port(3000) - .build(); - return configureAgent(agent); - } + public static AgentBase buildAgent() { + var agent = AgentBase.builder().name("lambda-agent").route("/").port(3000).build(); + return configureAgent(agent); + } - private static AgentBase configureAgent(AgentBase agent) { - agent.addLanguage("English", "en-US", "en-US-Standard-C"); + private static AgentBase configureAgent(AgentBase agent) { + agent.addLanguage("English", "en-US", "en-US-Standard-C"); - agent.promptAddSection("Role", - "You are a helpful AI assistant running in AWS Lambda."); - agent.promptAddSection("Instructions", "", List.of( - "Greet users warmly and offer help", - "Use the greet_user function when asked to greet someone", - "Use the get_time function when asked about the current time" - )); + agent.promptAddSection("Role", "You are a helpful AI assistant running in AWS Lambda."); + agent.promptAddSection( + "Instructions", + "", + List.of( + "Greet users warmly and offer help", + "Use the greet_user function when asked to greet someone", + "Use the get_time function when asked about the current time")); - agent.defineTool("greet_user", "Greet a user by name", - Map.of("type", "object", - "properties", Map.of( - "name", Map.of("type", "string", - "description", "User name") - )), - (toolArgs, raw) -> { - String name = (String) toolArgs.getOrDefault("name", "friend"); - return new FunctionResult("Hello " + name + "! I'm running in AWS Lambda!"); - }); + agent.defineTool( + "greet_user", + "Greet a user by name", + Map.of( + "type", + "object", + "properties", + Map.of("name", Map.of("type", "string", "description", "User name"))), + (toolArgs, raw) -> { + String name = (String) toolArgs.getOrDefault("name", "friend"); + return new FunctionResult("Hello " + name + "! I'm running in AWS Lambda!"); + }); - agent.defineTool("get_time", "Get the current time", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> new FunctionResult( - "Current time: " + LocalDateTime.now() - .format(DateTimeFormatter.ISO_LOCAL_DATE_TIME))); + agent.defineTool( + "get_time", + "Get the current time", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> + new FunctionResult( + "Current time: " + + LocalDateTime.now(ZoneId.systemDefault()) + .format(DateTimeFormatter.ISO_LOCAL_DATE_TIME))); - return agent; - } + return agent; + } - // Local-testing entry point. - public static void main(String[] args) throws Exception { - System.out.println("Starting Lambda agent (local testing) on port 3000..."); - buildAgent().run(); - } + // Local-testing entry point. + public static void main(String[] args) throws Exception { + System.out.println("Starting Lambda agent (local testing) on port 3000..."); + buildAgent().run(); + } } diff --git a/examples/LiveSmoke.java b/examples/LiveSmoke.java index dab4d1ed..3f7c00c8 100644 --- a/examples/LiveSmoke.java +++ b/examples/LiveSmoke.java @@ -1,10 +1,10 @@ -/** +/* * Live smoke driver (plan §6.5) — exercises the real SignalWire platform. * - *

No-ops unless {@code SWSDK_LIVE_TESTS=1} AND real creds are present - * ({@code SIGNALWIRE_PROJECT_ID} / {@code SIGNALWIRE_API_TOKEN} / {@code SIGNALWIRE_SPACE}), - * so it is safe to invoke anywhere; the live-smoke CI workflow sets those from repo secrets and - * skips when they are absent. Drives four things against the real platform: + *

No-ops unless {@code SWSDK_LIVE_TESTS=1} AND real creds are present ({@code + * SIGNALWIRE_PROJECT_ID} / {@code SIGNALWIRE_API_TOKEN} / {@code SIGNALWIRE_SPACE}), so it is safe + * to invoke anywhere; the live-smoke CI workflow sets those from repo secrets and skips when they + * are absent. Drives four things against the real platform: * *

    *
  1. auth + one REST list (phone numbers), @@ -29,7 +29,8 @@ public static void main(String[] args) throws Exception { String token = System.getenv("SIGNALWIRE_API_TOKEN"); String space = System.getenv("SIGNALWIRE_SPACE"); if (isBlank(project) || isBlank(token) || isBlank(space)) { - System.out.println("[live-smoke] creds absent — skipped (SIGNALWIRE_PROJECT_ID/API_TOKEN/SPACE)."); + System.out.println( + "[live-smoke] creds absent — skipped (SIGNALWIRE_PROJECT_ID/API_TOKEN/SPACE)."); return; } @@ -37,7 +38,8 @@ public static void main(String[] args) throws Exception { System.out.println("[live-smoke] REST: listing phone numbers ..."); var rest = RestClient.builder().build(); var numbers = rest.phoneNumbers().list(); - System.out.println("[live-smoke] REST OK (" + numbers.size() + " field(s) in list response)."); + System.out.println( + "[live-smoke] REST OK (" + numbers.size() + " field(s) in list response)."); // 2. one SWML render. System.out.println("[live-smoke] SWML: rendering an AgentBase document ..."); diff --git a/examples/LlmParamsDemo.java b/examples/LlmParamsDemo.java index 8ad57e0d..add6237d 100644 --- a/examples/LlmParamsDemo.java +++ b/examples/LlmParamsDemo.java @@ -1,146 +1,144 @@ -/** +/* * LLM Parameter Customization Demo. * - * Shows how to use setPromptLlmParams() and setPostPromptLlmParams() - * to create agents with different response characteristics: - * - Precise (low temperature, hard to interrupt) - * - Creative (high temperature, easy to interrupt) - * - Customer Service (balanced) + *

    Shows how to use setPromptLlmParams() and setPostPromptLlmParams() to create agents with + * different response characteristics: - Precise (low temperature, hard to interrupt) - Creative + * (high temperature, easy to interrupt) - Customer Service (balanced) * - * Usage: java LlmParams [precise|creative|support] + *

    Usage: java LlmParams [precise|creative|support] */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - import java.util.List; +import java.util.Locale; import java.util.Map; public class LlmParamsDemo { - public static void main(String[] args) throws Exception { - String mode = args.length > 0 ? args[0].toLowerCase() : "support"; - - switch (mode) { - case "precise" -> startPrecise(); - case "creative" -> startCreative(); - default -> startSupport(); - } - } - - static void startPrecise() throws Exception { - var agent = AgentBase.builder() - .name("precise-assistant") - .route("/precise") - .port(3000) - .build(); - - agent.promptAddSection("Role", "You are a precise technical assistant."); - agent.promptAddSection("Instructions", "", List.of( - "Provide accurate, factual information", - "Be concise and direct", - "Avoid speculation or guessing" - )); - - agent.setPromptLlmParams(Map.of( - "temperature", 0.2, - "top_p", 0.85, - "barge_confidence", 0.8, - "frequency_penalty", 0.1 - )); - - agent.setPostPrompt("Provide a brief technical summary of the key points."); - agent.setPostPromptLlmParams(Map.of("temperature", 0.1)); - - agent.defineTool("get_system_info", "Get technical system information", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> new FunctionResult( - "System Status: CPU 45%, Memory 8GB, Disk 200GB free, Uptime 12 days")); - - System.out.println("Starting Precise Assistant (low temperature)..."); - agent.run(); - } - - static void startCreative() throws Exception { - var agent = AgentBase.builder() - .name("creative-assistant") - .route("/creative") - .port(3000) - .build(); - - agent.promptAddSection("Role", "You are a creative writing assistant."); - agent.promptAddSection("Instructions", "", List.of( - "Be imaginative and creative", - "Use varied vocabulary", - "Encourage creative thinking" - )); - - agent.setPromptLlmParams(Map.of( - "temperature", 0.8, - "top_p", 0.95, - "barge_confidence", 0.5, - "presence_penalty", 0.2, - "frequency_penalty", 0.3 - )); - - agent.setPostPrompt("Create an artistic summary of our conversation."); - agent.setPostPromptLlmParams(Map.of("temperature", 0.7)); - - agent.defineTool("generate_story_prompt", "Generate a creative story prompt", - Map.of("type", "object", - "properties", Map.of( - "theme", Map.of("type", "string", - "description", "Story theme") - )), - (toolArgs, raw) -> { - String theme = (String) toolArgs.getOrDefault("theme", "adventure"); - return new FunctionResult("Story prompt for " + theme + - ": A map that only appears during thunderstorms"); - }); - - System.out.println("Starting Creative Assistant (high temperature)..."); - agent.run(); - } + public static void main(String[] args) throws Exception { + String mode = args.length > 0 ? args[0].toLowerCase(Locale.ROOT) : "support"; - static void startSupport() throws Exception { - var agent = AgentBase.builder() - .name("customer-service") - .route("/support") - .port(3000) - .build(); - - agent.promptAddSection("Role", - "You are a professional customer service representative."); - agent.promptAddSection("Guidelines", "", List.of( - "Always be polite and empathetic", - "Listen carefully to customer concerns", - "Provide clear, helpful solutions" - )); - - agent.setPromptLlmParams(Map.of( - "temperature", 0.4, - "top_p", 0.9, - "barge_confidence", 0.7, - "presence_penalty", 0.1, - "frequency_penalty", 0.1 - )); - - agent.setPostPrompt("Summarize the customer's issue and resolution."); - agent.setPostPromptLlmParams(Map.of("temperature", 0.3)); - - agent.defineTool("check_order_status", "Check order status", - Map.of("type", "object", - "properties", Map.of( - "order_id", Map.of("type", "string", - "description", "Order ID") - ), - "required", List.of("order_id")), - (toolArgs, raw) -> { - String orderId = (String) toolArgs.getOrDefault("order_id", "unknown"); - return new FunctionResult("Order " + orderId + " status: Shipped - expected delivery tomorrow."); - }); - - System.out.println("Starting Customer Service Agent (balanced)..."); - agent.run(); + switch (mode) { + case "precise" -> startPrecise(); + case "creative" -> startCreative(); + default -> startSupport(); } + } + + static void startPrecise() throws Exception { + var agent = AgentBase.builder().name("precise-assistant").route("/precise").port(3000).build(); + + agent.promptAddSection("Role", "You are a precise technical assistant."); + agent.promptAddSection( + "Instructions", + "", + List.of( + "Provide accurate, factual information", + "Be concise and direct", + "Avoid speculation or guessing")); + + agent.setPromptLlmParams( + Map.of( + "temperature", 0.2, + "top_p", 0.85, + "barge_confidence", 0.8, + "frequency_penalty", 0.1)); + + agent.setPostPrompt("Provide a brief technical summary of the key points."); + agent.setPostPromptLlmParams(Map.of("temperature", 0.1)); + + agent.defineTool( + "get_system_info", + "Get technical system information", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> + new FunctionResult( + "System Status: CPU 45%, Memory 8GB, Disk 200GB free, Uptime 12 days")); + + System.out.println("Starting Precise Assistant (low temperature)..."); + agent.run(); + } + + static void startCreative() throws Exception { + var agent = + AgentBase.builder().name("creative-assistant").route("/creative").port(3000).build(); + + agent.promptAddSection("Role", "You are a creative writing assistant."); + agent.promptAddSection( + "Instructions", + "", + List.of( + "Be imaginative and creative", "Use varied vocabulary", "Encourage creative thinking")); + + agent.setPromptLlmParams( + Map.of( + "temperature", 0.8, + "top_p", 0.95, + "barge_confidence", 0.5, + "presence_penalty", 0.2, + "frequency_penalty", 0.3)); + + agent.setPostPrompt("Create an artistic summary of our conversation."); + agent.setPostPromptLlmParams(Map.of("temperature", 0.7)); + + agent.defineTool( + "generate_story_prompt", + "Generate a creative story prompt", + Map.of( + "type", + "object", + "properties", + Map.of("theme", Map.of("type", "string", "description", "Story theme"))), + (toolArgs, raw) -> { + String theme = (String) toolArgs.getOrDefault("theme", "adventure"); + return new FunctionResult( + "Story prompt for " + theme + ": A map that only appears during thunderstorms"); + }); + + System.out.println("Starting Creative Assistant (high temperature)..."); + agent.run(); + } + + static void startSupport() throws Exception { + var agent = AgentBase.builder().name("customer-service").route("/support").port(3000).build(); + + agent.promptAddSection("Role", "You are a professional customer service representative."); + agent.promptAddSection( + "Guidelines", + "", + List.of( + "Always be polite and empathetic", + "Listen carefully to customer concerns", + "Provide clear, helpful solutions")); + + agent.setPromptLlmParams( + Map.of( + "temperature", 0.4, + "top_p", 0.9, + "barge_confidence", 0.7, + "presence_penalty", 0.1, + "frequency_penalty", 0.1)); + + agent.setPostPrompt("Summarize the customer's issue and resolution."); + agent.setPostPromptLlmParams(Map.of("temperature", 0.3)); + + agent.defineTool( + "check_order_status", + "Check order status", + Map.of( + "type", + "object", + "properties", + Map.of("order_id", Map.of("type", "string", "description", "Order ID")), + "required", + List.of("order_id")), + (toolArgs, raw) -> { + String orderId = (String) toolArgs.getOrDefault("order_id", "unknown"); + return new FunctionResult( + "Order " + orderId + " status: Shipped - expected delivery tomorrow."); + }); + + System.out.println("Starting Customer Service Agent (balanced)..."); + agent.run(); + } } diff --git a/examples/McpAgent.java b/examples/McpAgent.java index 2dff2ca7..f5e471c5 100644 --- a/examples/McpAgent.java +++ b/examples/McpAgent.java @@ -1,82 +1,81 @@ -/** +/* * Example: MCP Integration -- Client and Server * - * This agent demonstrates both MCP features: + *

    This agent demonstrates both MCP features: * - * 1. MCP Server: Exposes tools at /mcp so external MCP clients - * (Claude Desktop, other agents) can discover and invoke them. + *

    1. MCP Server: Exposes tools at /mcp so external MCP clients (Claude Desktop, other agents) + * can discover and invoke them. * - * 2. MCP Client: Connects to an external MCP server to pull in additional - * tools for voice calls. + *

    2. MCP Client: Connects to an external MCP server to pull in additional tools for voice calls. * - * Run: - * java McpAgent + *

    Run: java McpAgent * - * Then: - * - Point a SignalWire phone number at http://your-server:3000/agent - * - Connect Claude Desktop to http://your-server:3000/agent/mcp + *

    Then: - Point a SignalWire phone number at http://your-server:3000/agent - Connect Claude + * Desktop to http://your-server:3000/agent/mcp */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - -import java.util.List; import java.util.Map; public class McpAgent { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("mcp-agent") - .route("/agent") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = AgentBase.builder().name("mcp-agent").route("/agent").port(3000).build(); - // -- MCP Server -- - // Adds a /mcp endpoint that speaks JSON-RPC 2.0 (MCP protocol). - agent.enableMcpServer(); + // -- MCP Server -- + // Adds a /mcp endpoint that speaks JSON-RPC 2.0 (MCP protocol). + agent.enableMcpServer(); - // -- MCP Client -- - // Connect to an external MCP server. Tools are discovered - // automatically at call start. - agent.addMcpServer( - "https://mcp.example.com/tools", - Map.of("Authorization", "Bearer sk-your-mcp-api-key") - ); + // -- MCP Client -- + // Connect to an external MCP server. Tools are discovered + // automatically at call start. + agent.addMcpServer( + "https://mcp.example.com/tools", Map.of("Authorization", "Bearer sk-your-mcp-api-key")); - // -- MCP Client with Resources -- - agent.addMcpServer( - "https://mcp.example.com/crm", - Map.of("Authorization", "Bearer sk-your-crm-key"), - true, - Map.of("caller_id", "${caller_id_number}", "tenant", "acme-corp") - ); + // -- MCP Client with Resources -- + agent.addMcpServer( + "https://mcp.example.com/crm", + Map.of("Authorization", "Bearer sk-your-crm-key"), + true, + Map.of("caller_id", "${caller_id_number}", "tenant", "acme-corp")); - // -- Agent Configuration -- - agent.promptAddSection("Role", - "You are a helpful customer support agent. " - + "You have access to the customer's profile via global_data."); + // -- Agent Configuration -- + agent.promptAddSection( + "Role", + "You are a helpful customer support agent. " + + "You have access to the customer's profile via global_data."); - agent.setParams(Map.of("attention_timeout", 15000)); + agent.setParams(Map.of("attention_timeout", 15000)); - // -- Local Tools -- - agent.defineTool("get_weather", "Get the current weather for a location", - Map.of("type", "object", "properties", - Map.of("location", Map.of("type", "string", "description", "City name or zip code"))), - (toolArgs, rawData) -> { - String location = (String) toolArgs.getOrDefault("location", "unknown"); - return new FunctionResult("Currently 72F and sunny in " + location + "."); - }); + // -- Local Tools -- + agent.defineTool( + "get_weather", + "Get the current weather for a location", + Map.of( + "type", + "object", + "properties", + Map.of("location", Map.of("type", "string", "description", "City name or zip code"))), + (toolArgs, rawData) -> { + String location = (String) toolArgs.getOrDefault("location", "unknown"); + return new FunctionResult("Currently 72F and sunny in " + location + "."); + }); - agent.defineTool("create_ticket", "Create a support ticket", - Map.of("type", "object", "properties", Map.of( - "subject", Map.of("type", "string", "description", "Ticket subject"), - "description", Map.of("type", "string", "description", "Issue description"))), - (toolArgs, rawData) -> { - String subject = (String) toolArgs.getOrDefault("subject", "No subject"); - return new FunctionResult("Ticket created: '" + subject + "'. Reference: TK-12345."); - }); + agent.defineTool( + "create_ticket", + "Create a support ticket", + Map.of( + "type", + "object", + "properties", + Map.of( + "subject", Map.of("type", "string", "description", "Ticket subject"), + "description", Map.of("type", "string", "description", "Issue description"))), + (toolArgs, rawData) -> { + String subject = (String) toolArgs.getOrDefault("subject", "No subject"); + return new FunctionResult("Ticket created: '" + subject + "'. Reference: TK-12345."); + }); - agent.run(); - } + agent.run(); + } } diff --git a/examples/McpGatewayDemo.java b/examples/McpGatewayDemo.java index 06a90290..7189bda4 100644 --- a/examples/McpGatewayDemo.java +++ b/examples/McpGatewayDemo.java @@ -1,54 +1,47 @@ -/** +/* * MCP Gateway Demo. * - * Connects a SignalWire AI agent to MCP (Model Context Protocol) servers - * through the mcp_gateway skill. The gateway bridges MCP tools so the - * agent can use them as SWAIG functions. + *

    Connects a SignalWire AI agent to MCP (Model Context Protocol) servers through the mcp_gateway + * skill. The gateway bridges MCP tools so the agent can use them as SWAIG functions. * - * Prerequisites: - * Start an MCP gateway server: mcp-gateway -c config.json + *

    Prerequisites: Start an MCP gateway server: mcp-gateway -c config.json * - * Env vars: - * MCP_GATEWAY_URL - URL of the running gateway (default: http://localhost:8080) - * MCP_GATEWAY_AUTH_USER - Basic auth username - * MCP_GATEWAY_AUTH_PASSWORD - Basic auth password + *

    Env vars: MCP_GATEWAY_URL - URL of the running gateway (default: http://localhost:8080) + * MCP_GATEWAY_AUTH_USER - Basic auth username MCP_GATEWAY_AUTH_PASSWORD - Basic auth password */ - import com.signalwire.sdk.agent.AgentBase; - import java.util.List; import java.util.Map; public class McpGatewayDemo { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("mcp-gateway-agent") - .route("/mcp-gateway") - .port(3000) - .build(); - - agent.addLanguage("English", "en-US", "en-US-Standard-C"); - - agent.promptAddSection("Role", - "You are a helpful assistant with access to external tools " + - "provided through MCP servers. Use the available tools to help " + - "users accomplish their tasks."); - - // Connect to MCP gateway -- tools are discovered automatically - agent.addSkill("mcp_gateway", Map.of( - "gateway_url", envOr("MCP_GATEWAY_URL", "http://localhost:8080"), - "auth_user", envOr("MCP_GATEWAY_AUTH_USER", "admin"), - "auth_password", envOr("MCP_GATEWAY_AUTH_PASSWORD", "changeme"), - "services", List.of(Map.of("name", "todo")) - )); - - System.out.println("Starting MCP Gateway agent on port 3000..."); - agent.run(); - } - - private static String envOr(String key, String fallback) { - String val = System.getenv(key); - return (val != null && !val.isEmpty()) ? val : fallback; - } + public static void main(String[] args) throws Exception { + var agent = + AgentBase.builder().name("mcp-gateway-agent").route("/mcp-gateway").port(3000).build(); + + agent.addLanguage("English", "en-US", "en-US-Standard-C"); + + agent.promptAddSection( + "Role", + "You are a helpful assistant with access to external tools " + + "provided through MCP servers. Use the available tools to help " + + "users accomplish their tasks."); + + // Connect to MCP gateway -- tools are discovered automatically + agent.addSkill( + "mcp_gateway", + Map.of( + "gateway_url", envOr("MCP_GATEWAY_URL", "http://localhost:8080"), + "auth_user", envOr("MCP_GATEWAY_AUTH_USER", "admin"), + "auth_password", envOr("MCP_GATEWAY_AUTH_PASSWORD", "changeme"), + "services", List.of(Map.of("name", "todo")))); + + System.out.println("Starting MCP Gateway agent on port 3000..."); + agent.run(); + } + + private static String envOr(String key, String fallback) { + String val = System.getenv(key); + return (val != null && !val.isEmpty()) ? val : fallback; + } } diff --git a/examples/MultiAgentServer.java b/examples/MultiAgentServer.java index db0a6fd6..7d189af6 100644 --- a/examples/MultiAgentServer.java +++ b/examples/MultiAgentServer.java @@ -1,71 +1,70 @@ -/** +/* * Host multiple agents on different routes using AgentServer. * - * Routes: - * /sales -> Sales agent - * /support -> Support agent - * /health -> Health check + *

    Routes: /sales -> Sales agent /support -> Support agent /health -> Health check */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.server.AgentServer; import com.signalwire.sdk.swaig.FunctionResult; - import java.util.List; import java.util.Map; public class MultiAgentServer { - public static void main(String[] args) throws Exception { - // Create Sales agent - var salesAgent = AgentBase.builder() - .name("sales-agent") - .route("/sales") - .build(); - salesAgent.promptAddSection("Role", - "You are a sales representative for Acme Corp."); - salesAgent.promptAddSection("Instructions", "", List.of( - "Help customers learn about our products", - "Answer pricing questions", - "Collect contact information for follow-up" - )); - salesAgent.defineTool("get_pricing", "Get product pricing", - Map.of("type", "object", "properties", Map.of( - "product", Map.of("type", "string", "description", "Product name") - )), - (toolArgs, raw) -> { - String product = (String) toolArgs.getOrDefault("product", "unknown"); - return new FunctionResult("The price for " + product + " is $99/month."); - }); + public static void main(String[] args) throws Exception { + // Create Sales agent + var salesAgent = AgentBase.builder().name("sales-agent").route("/sales").build(); + salesAgent.promptAddSection("Role", "You are a sales representative for Acme Corp."); + salesAgent.promptAddSection( + "Instructions", + "", + List.of( + "Help customers learn about our products", + "Answer pricing questions", + "Collect contact information for follow-up")); + salesAgent.defineTool( + "get_pricing", + "Get product pricing", + Map.of( + "type", + "object", + "properties", + Map.of("product", Map.of("type", "string", "description", "Product name"))), + (toolArgs, raw) -> { + String product = (String) toolArgs.getOrDefault("product", "unknown"); + return new FunctionResult("The price for " + product + " is $99/month."); + }); - // Create Support agent - var supportAgent = AgentBase.builder() - .name("support-agent") - .route("/support") - .build(); - supportAgent.promptAddSection("Role", - "You are a technical support specialist."); - supportAgent.promptAddSection("Instructions", "", List.of( - "Help users troubleshoot technical issues", - "Escalate complex issues to a human agent", - "Be patient and thorough" - )); - supportAgent.defineTool("create_ticket", "Create a support ticket", - Map.of("type", "object", "properties", Map.of( - "subject", Map.of("type", "string", "description", "Ticket subject"), - "description", Map.of("type", "string", "description", "Issue description") - )), - (toolArgs, raw) -> new FunctionResult( - "Ticket created: " + toolArgs.get("subject"))); + // Create Support agent + var supportAgent = AgentBase.builder().name("support-agent").route("/support").build(); + supportAgent.promptAddSection("Role", "You are a technical support specialist."); + supportAgent.promptAddSection( + "Instructions", + "", + List.of( + "Help users troubleshoot technical issues", + "Escalate complex issues to a human agent", + "Be patient and thorough")); + supportAgent.defineTool( + "create_ticket", + "Create a support ticket", + Map.of( + "type", + "object", + "properties", + Map.of( + "subject", Map.of("type", "string", "description", "Ticket subject"), + "description", Map.of("type", "string", "description", "Issue description"))), + (toolArgs, raw) -> new FunctionResult("Ticket created: " + toolArgs.get("subject"))); - // Create and start the server - var server = new AgentServer(3000); - server.register(salesAgent); - server.register(supportAgent); + // Create and start the server + var server = new AgentServer(3000); + server.register(salesAgent); + server.register(supportAgent); - System.out.println("Starting multi-agent server on port 3000..."); - System.out.println(" Sales: http://localhost:3000/sales"); - System.out.println(" Support: http://localhost:3000/support"); - server.run(); - } + System.out.println("Starting multi-agent server on port 3000..."); + System.out.println(" Sales: http://localhost:3000/sales"); + System.out.println(" Support: http://localhost:3000/support"); + server.run(); + } } diff --git a/examples/MultiEndpointAgent.java b/examples/MultiEndpointAgent.java index 70bb3a3e..9d3ef31b 100644 --- a/examples/MultiEndpointAgent.java +++ b/examples/MultiEndpointAgent.java @@ -1,51 +1,52 @@ -/** +/* * Multi-Endpoint Agent. * - * Demonstrates serving an AI agent alongside custom endpoints using - * AgentServer. The agent is at /swml while static files and a health - * endpoint are served from the same port. + *

    Demonstrates serving an AI agent alongside custom endpoints using AgentServer. The agent is at + * /swml while static files and a health endpoint are served from the same port. */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.server.AgentServer; import com.signalwire.sdk.swaig.FunctionResult; - import java.time.LocalTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Map; public class MultiEndpointAgent { - public static void main(String[] args) throws Exception { - // Create voice AI agent at /swml - var agent = AgentBase.builder() - .name("multi-endpoint") - .route("/swml") - .build(); - - agent.promptAddSection("Role", "You are a helpful voice assistant."); - agent.promptAddSection("Instructions", "", List.of( - "Greet callers warmly", - "Be concise in your responses", - "Use the available functions when appropriate" - )); - agent.addLanguage("English", "en-US", "en-US-Standard-C"); - - agent.defineTool("get_time", "Get the current time", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> new FunctionResult( - "The current time is " + LocalTime.now() - .format(DateTimeFormatter.ofPattern("hh:mm a")))); - - // Host via AgentServer so we get /health, /ready, and /swml - var server = new AgentServer(8080); - server.register(agent); - - System.out.println("Multi-endpoint server starting on port 8080..."); - System.out.println(" SWML: http://localhost:8080/swml"); - System.out.println(" Health: http://localhost:8080/health"); - System.out.println(" Ready: http://localhost:8080/ready"); - server.run(); - } + public static void main(String[] args) throws Exception { + // Create voice AI agent at /swml + var agent = AgentBase.builder().name("multi-endpoint").route("/swml").build(); + + agent.promptAddSection("Role", "You are a helpful voice assistant."); + agent.promptAddSection( + "Instructions", + "", + List.of( + "Greet callers warmly", + "Be concise in your responses", + "Use the available functions when appropriate")); + agent.addLanguage("English", "en-US", "en-US-Standard-C"); + + agent.defineTool( + "get_time", + "Get the current time", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> + new FunctionResult( + "The current time is " + + LocalTime.now(ZoneId.systemDefault()) + .format(DateTimeFormatter.ofPattern("hh:mm a")))); + + // Host via AgentServer so we get /health, /ready, and /swml + var server = new AgentServer(8080); + server.register(agent); + + System.out.println("Multi-endpoint server starting on port 8080..."); + System.out.println(" SWML: http://localhost:8080/swml"); + System.out.println(" Health: http://localhost:8080/health"); + System.out.println(" Ready: http://localhost:8080/ready"); + server.run(); + } } diff --git a/examples/QuickstartAgent.java b/examples/QuickstartAgent.java index 0bf9e467..9f8f0bd7 100644 --- a/examples/QuickstartAgent.java +++ b/examples/QuickstartAgent.java @@ -1,47 +1,41 @@ -/** +/* * README quickstart — the AI Agents block. * - * The `region: quickstart` span below is included byte-for-byte into README.md - * via ``, so the doc - * code is this compiled, gate-run example and can never drift. + *

    The `region: quickstart` span below is included byte-for-byte into README.md via ` + * + * `, so the doc code is this compiled, gate-run example and can never drift. * - * Test locally without running a server: - * bin/swaig-test --url http://user:pass@localhost:3000 --list-tools - * bin/swaig-test --url http://user:pass@localhost:3000 --exec get_time + *

    Test locally without running a server: bin/swaig-test --url http://user:pass@localhost:3000 + * --list-tools bin/swaig-test --url http://user:pass@localhost:3000 --exec get_time */ // region: quickstart import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - import java.time.LocalTime; +import java.time.ZoneId; import java.util.List; import java.util.Map; public class QuickstartAgent { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("my-agent") - .route("/") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = AgentBase.builder().name("my-agent").route("/").port(3000).build(); - agent.addLanguage("English", "en-US", "inworld.Mark"); - agent.promptAddSection("Role", "You are a helpful assistant."); - agent.promptAddSection("Rules", "", List.of( - "Always answer concisely", - "Use the get_time tool when asked about the time" - )); + agent.addLanguage("English", "en-US", "inworld.Mark"); + agent.promptAddSection("Role", "You are a helpful assistant."); + agent.promptAddSection( + "Rules", + "", + List.of("Always answer concisely", "Use the get_time tool when asked about the time")); - agent.defineTool( - "get_time", - "Get the current time", - Map.of(), - (toolArgs, rawData) -> - new FunctionResult("The time is " + LocalTime.now()) - ); + agent.defineTool( + "get_time", + "Get the current time", + Map.of(), + (toolArgs, rawData) -> + new FunctionResult("The time is " + LocalTime.now(ZoneId.systemDefault()))); - agent.run(); - } + agent.run(); + } } // endregion: quickstart diff --git a/examples/QuickstartRelay.java b/examples/QuickstartRelay.java index 4b84825c..835b373f 100644 --- a/examples/QuickstartRelay.java +++ b/examples/QuickstartRelay.java @@ -1,40 +1,41 @@ -/** +/* * README quickstart — the RELAY Client block. * - * The `region: quickstart` span below is included byte-for-byte into README.md - * via ``, so the doc - * code is this compiled, gate-run example and can never drift. + *

    The `region: quickstart` span below is included byte-for-byte into README.md via ` + * + * `, so the doc code is this compiled, gate-run example and can never drift. * - * Requires env vars: SIGNALWIRE_PROJECT_ID, SIGNALWIRE_API_TOKEN, SIGNALWIRE_SPACE - * (or pass them explicitly to the builder as shown). + *

    Requires env vars: SIGNALWIRE_PROJECT_ID, SIGNALWIRE_API_TOKEN, SIGNALWIRE_SPACE (or pass them + * explicitly to the builder as shown). */ // region: quickstart import com.signalwire.sdk.relay.RelayClient; - import java.util.List; import java.util.Map; public class QuickstartRelay { - public static void main(String[] args) throws Exception { - var client = RelayClient.builder() - .project("your-project-id") - .token("your-api-token") - .space("example.signalwire.com") - .contexts(List.of("default")) - .build(); + public static void main(String[] args) throws Exception { + var client = + RelayClient.builder() + .project("your-project-id") + .token("your-api-token") + .space("example.signalwire.com") + .contexts(List.of("default")) + .build(); - client.onCall(call -> { - call.answer(); - var action = call.play(List.of(Map.of( - "type", "tts", - "params", Map.of("text", "Welcome to SignalWire!") - ))); - action.waitForCompletion(); - call.hangup(); + client.onCall( + call -> { + call.answer(); + var action = + call.play( + List.of( + Map.of("type", "tts", "params", Map.of("text", "Welcome to SignalWire!")))); + action.waitForCompletion(); + call.hangup(); }); - client.run(); - } + client.run(); + } } // endregion: quickstart diff --git a/examples/QuickstartRest.java b/examples/QuickstartRest.java index 461f2f0e..8d52b4e9 100644 --- a/examples/QuickstartRest.java +++ b/examples/QuickstartRest.java @@ -1,13 +1,13 @@ -/** +/* * README quickstart — the REST Client block. * - * The `region: quickstart` span below is included byte-for-byte into README.md - * via ``, so the doc - * code is this compiled, gate-run example and can never drift. + *

    The `region: quickstart` span below is included byte-for-byte into README.md via ` + * + * `, so the doc code is this compiled, gate-run example and can never drift. * - * Requires env vars: SIGNALWIRE_PROJECT_ID, SIGNALWIRE_API_TOKEN, SIGNALWIRE_SPACE. + *

    Requires env vars: SIGNALWIRE_PROJECT_ID, SIGNALWIRE_API_TOKEN, SIGNALWIRE_SPACE. * - * NOTE: play() and datasphere search() take generated, typed request objects + *

    NOTE: play() and datasphere search() take generated, typed request objects * (Calling.PlayRequest / DatasphereDocuments.SearchRequest), not raw Maps — * create()/list()/phoneNumbers().search() still take Maps. */ @@ -16,36 +16,46 @@ import com.signalwire.sdk.rest.RestClient; import com.signalwire.sdk.rest.namespaces.generated.Calling; import com.signalwire.sdk.rest.namespaces.generated.DatasphereDocuments; - import java.util.List; import java.util.Map; public class QuickstartRest { - public static void main(String[] args) throws Exception { - var client = RestClient.builder() - .project("your-project-id") - .token("your-api-token") - .space("example.signalwire.com") - .build(); + public static void main(String[] args) throws Exception { + var client = + RestClient.builder() + .project("your-project-id") + .token("your-api-token") + .space("example.signalwire.com") + .build(); - // Create an AI agent - client.fabric().aiAgents().create(Map.of( - "name", "Support Bot", - "prompt", Map.of("text", "You are a helpful support agent.") - )); + // Create an AI agent + client + .fabric() + .aiAgents() + .create( + Map.of( + "name", + "Support Bot", + "prompt", + Map.of("text", "You are a helpful support agent."))); - // Control a live call - client.calling().play("call-id", Calling.PlayRequest.builder() + // Control a live call + client + .calling() + .play( + "call-id", + Calling.PlayRequest.builder() .play(List.of(Map.of("type", "tts", "params", Map.of("text", "Hello!")))) .build()); - // Search for phone numbers - client.phoneNumbers().search(Map.of("areacode", "512")); + // Search for phone numbers + client.phoneNumbers().search(Map.of("areacode", "512")); - // Semantic search across documents - client.datasphere().documents().search(DatasphereDocuments.SearchRequest.builder() - .queryString("billing policy") - .build()); - } + // Semantic search across documents + client + .datasphere() + .documents() + .search(DatasphereDocuments.SearchRequest.builder().queryString("billing policy").build()); + } } // endregion: quickstart diff --git a/examples/ReceptionistAgentExample.java b/examples/ReceptionistAgentExample.java index c2ecb748..397cda08 100644 --- a/examples/ReceptionistAgentExample.java +++ b/examples/ReceptionistAgentExample.java @@ -1,38 +1,38 @@ -/** +/* * Receptionist Agent Example -- using the ReceptionistAgent prefab. * - * Routes callers to the appropriate department via phone transfer. + *

    Routes callers to the appropriate department via phone transfer. */ - import com.signalwire.sdk.prefabs.ReceptionistAgent; - import java.util.LinkedHashMap; import java.util.Map; public class ReceptionistAgentExample { - public static void main(String[] args) throws Exception { - Map> departments = new LinkedHashMap<>(); - departments.put("Sales", - ReceptionistAgent.phoneDepartment( - "Product inquiries, pricing, and purchasing", "+15551235555")); - departments.put("Support", - ReceptionistAgent.phoneDepartment( - "Technical assistance and troubleshooting", "+15551236666")); - departments.put("Billing", - ReceptionistAgent.phoneDepartment( - "Payment questions, invoices, and subscriptions", "+15551237777")); - departments.put("General", - ReceptionistAgent.phoneDepartment( - "All other inquiries", "+15551238888")); + public static void main(String[] args) throws Exception { + Map> departments = new LinkedHashMap<>(); + departments.put( + "Sales", + ReceptionistAgent.phoneDepartment( + "Product inquiries, pricing, and purchasing", "+15551235555")); + departments.put( + "Support", + ReceptionistAgent.phoneDepartment( + "Technical assistance and troubleshooting", "+15551236666")); + departments.put( + "Billing", + ReceptionistAgent.phoneDepartment( + "Payment questions, invoices, and subscriptions", "+15551237777")); + departments.put( + "General", ReceptionistAgent.phoneDepartment("All other inquiries", "+15551238888")); - var agent = new ReceptionistAgent( - "acme-receptionist", - "Thank you for calling ACME Corporation. How may I direct your call?", - departments - ); + var agent = + new ReceptionistAgent( + "acme-receptionist", + "Thank you for calling ACME Corporation. How may I direct your call?", + departments); - System.out.println("Starting ACME receptionist on port 3000..."); - agent.run(); - } + System.out.println("Starting ACME receptionist on port 3000..."); + agent.run(); + } } diff --git a/examples/RecordCallExample.java b/examples/RecordCallExample.java index 2e5854c1..79181244 100644 --- a/examples/RecordCallExample.java +++ b/examples/RecordCallExample.java @@ -1,57 +1,60 @@ -/** +/* * Record Call Example. * - * Demonstrates using the FunctionResult recording helpers to: - * - Start background call recording with various configurations - * - Stop recordings by control ID - * - Chain recording with other actions + *

    Demonstrates using the FunctionResult recording helpers to: - Start background call recording + * with various configurations - Stop recordings by control ID - Chain recording with other actions */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - import java.util.List; import java.util.Map; public class RecordCallExample { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("recording-agent") - .route("/") - .port(3000) - .build(); - - agent.promptAddSection("Role", - "You are a customer service agent. Calls may be recorded for quality purposes."); - agent.promptAddSection("Instructions", "", List.of( - "Use start_recording to begin recording", - "Use stop_recording to end recording", - "Always inform callers about recording" - )); - - // Start recording tool - agent.defineTool("start_recording", "Start recording the call", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> new FunctionResult("Starting call recording") - .recordCall("support_call_001", true, "mp3", "both") - .say("This call is now being recorded for quality purposes.")); - - // Stop recording tool - agent.defineTool("stop_recording", "Stop the call recording", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> new FunctionResult("Ending call recording") - .stopRecordCall("support_call_001") - .say("Recording has been stopped. Thank you.")); - - // Voicemail-style recording - agent.defineTool("take_voicemail", "Take a voicemail message", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> new FunctionResult("Please leave your message after the beep") - .recordCall("voicemail_001", false, "wav", "speak") - .setEndOfSpeechTimeout(2000)); - - System.out.println("Starting recording agent on port 3000..."); - agent.run(); - } + public static void main(String[] args) throws Exception { + var agent = AgentBase.builder().name("recording-agent").route("/").port(3000).build(); + + agent.promptAddSection( + "Role", "You are a customer service agent. Calls may be recorded for quality purposes."); + agent.promptAddSection( + "Instructions", + "", + List.of( + "Use start_recording to begin recording", + "Use stop_recording to end recording", + "Always inform callers about recording")); + + // Start recording tool + agent.defineTool( + "start_recording", + "Start recording the call", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> + new FunctionResult("Starting call recording") + .recordCall("support_call_001", true, "mp3", "both") + .say("This call is now being recorded for quality purposes.")); + + // Stop recording tool + agent.defineTool( + "stop_recording", + "Stop the call recording", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> + new FunctionResult("Ending call recording") + .stopRecordCall("support_call_001") + .say("Recording has been stopped. Thank you.")); + + // Voicemail-style recording + agent.defineTool( + "take_voicemail", + "Take a voicemail message", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> + new FunctionResult("Please leave your message after the beep") + .recordCall("voicemail_001", false, "wav", "speak") + .setEndOfSpeechTimeout(2000)); + + System.out.println("Starting recording agent on port 3000..."); + agent.run(); + } } diff --git a/examples/RelayAnswerAndWelcome.java b/examples/RelayAnswerAndWelcome.java index 17f37af3..601c0857 100644 --- a/examples/RelayAnswerAndWelcome.java +++ b/examples/RelayAnswerAndWelcome.java @@ -1,71 +1,72 @@ -/** - * RelayAnswerAndWelcome -- answer an inbound call, play a TTS greeting, - * and hang up. This is the canonical RELAY "hello world": the smallest - * SDK program that proves authenticated WebSocket connection + - * inbound-call dispatch + TTS playback + clean hangup all work end to end. +/* + * RelayAnswerAndWelcome -- answer an inbound call, play a TTS greeting, and hang up. This is the + * canonical RELAY "hello world": the smallest SDK program that proves authenticated WebSocket + * connection + inbound-call dispatch + TTS playback + clean hangup all work end to end. * *

    Mirror of Python's {@code examples/relay_answer_and_welcome.py}. * *

    Required environment variables: + * *

      - *
    • {@code SIGNALWIRE_PROJECT_ID} -- SignalWire project ID
    • - *
    • {@code SIGNALWIRE_API_TOKEN} -- SignalWire API token
    • - *
    • {@code SIGNALWIRE_SPACE} -- e.g. {@code example.signalwire.com}
    • + *
    • {@code SIGNALWIRE_PROJECT_ID} -- SignalWire project ID + *
    • {@code SIGNALWIRE_API_TOKEN} -- SignalWire API token + *
    • {@code SIGNALWIRE_SPACE} -- e.g. {@code example.signalwire.com} *
    * *

    Optional: + * *

      - *
    • {@code SIGNALWIRE_CONTEXT} -- defaults to {@code default}
    • - *
    • {@code SIGNALWIRE_LOG_LEVEL=debug} for the full RELAY trace
    • + *
    • {@code SIGNALWIRE_CONTEXT} -- defaults to {@code default} + *
    • {@code SIGNALWIRE_LOG_LEVEL=debug} for the full RELAY trace *
    */ - import com.signalwire.sdk.relay.RelayClient; - import java.util.List; import java.util.Map; public class RelayAnswerAndWelcome { - public static void main(String[] args) throws Exception { - String project = System.getenv("SIGNALWIRE_PROJECT_ID"); - String token = System.getenv("SIGNALWIRE_API_TOKEN"); - String space = System.getenv("SIGNALWIRE_SPACE"); - String context = System.getenv().getOrDefault("SIGNALWIRE_CONTEXT", "default"); + public static void main(String[] args) throws Exception { + String project = System.getenv("SIGNALWIRE_PROJECT_ID"); + String token = System.getenv("SIGNALWIRE_API_TOKEN"); + String space = System.getenv("SIGNALWIRE_SPACE"); + String context = System.getenv().getOrDefault("SIGNALWIRE_CONTEXT", "default"); - if (project == null || token == null || space == null) { - System.err.println( - "RelayAnswerAndWelcome: SIGNALWIRE_PROJECT_ID, " - + "SIGNALWIRE_API_TOKEN, and SIGNALWIRE_SPACE are required."); - System.exit(2); - } + if (project == null || token == null || space == null) { + System.err.println( + "RelayAnswerAndWelcome: SIGNALWIRE_PROJECT_ID, " + + "SIGNALWIRE_API_TOKEN, and SIGNALWIRE_SPACE are required."); + System.exit(2); + } - var client = RelayClient.builder() - .project(project) - .token(token) - .space(space) - .contexts(List.of(context)) - .build(); + var client = + RelayClient.builder() + .project(project) + .token(token) + .space(space) + .contexts(List.of(context)) + .build(); - client.onCall(call -> { - System.out.println("Incoming call: " + call.getCallId()); + client.onCall( + call -> { + System.out.println("Incoming call: " + call.getCallId()); - // Answer the call. - call.answer(); + // Answer the call. + call.answer(); - // Play TTS greeting and wait for completion. - var action = call.play(List.of(Map.of( - "type", "tts", - "params", Map.of("text", "Welcome to SignalWire!") - ))); - action.waitForCompletion(); + // Play TTS greeting and wait for completion. + var action = + call.play( + List.of( + Map.of("type", "tts", "params", Map.of("text", "Welcome to SignalWire!")))); + action.waitForCompletion(); - // Hang up. - call.hangup(); - System.out.println("Call ended: " + call.getCallId()); + // Hang up. + call.hangup(); + System.out.println("Call ended: " + call.getCallId()); }); - System.out.println("Waiting for inbound calls on context '" + context + "' ..."); - client.run(); - } + System.out.println("Waiting for inbound calls on context '" + context + "' ..."); + client.run(); + } } diff --git a/examples/RelayAuditHarness.java b/examples/RelayAuditHarness.java index d7e1b303..d097e7fa 100644 --- a/examples/RelayAuditHarness.java +++ b/examples/RelayAuditHarness.java @@ -1,38 +1,31 @@ -/** +/* * RelayAuditHarness -- runtime probe for the RELAY transport. * - *

    This binary is what the porting-sdk's {@code audit_relay_handshake.py} - * drives to prove the Java SDK's {@link com.signalwire.sdk.relay.RelayClient} - * opens a real WebSocket connection, runs the JSON-RPC - * {@code signalwire.connect} handshake, subscribes to a context, and - * dispatches an inbound {@code signalwire.event} to the registered - * callback. A green run means: socket actually opened (no stub - * transport), JSON-RPC actually serialized, real bytes on the wire. + *

    This binary is what the porting-sdk's {@code audit_relay_handshake.py} drives to prove the + * Java SDK's {@link com.signalwire.sdk.relay.RelayClient} opens a real WebSocket connection, runs + * the JSON-RPC {@code signalwire.connect} handshake, subscribes to a context, and dispatches an + * inbound {@code signalwire.event} to the registered callback. A green run means: socket actually + * opened (no stub transport), JSON-RPC actually serialized, real bytes on the wire. * *

    Environment variables (set by the audit fixture): + * *

      - *
    • {@code SIGNALWIRE_RELAY_HOST} {@code 127.0.0.1:NNNN} - * (the fixture's bound port)
    • - *
    • {@code SIGNALWIRE_RELAY_SCHEME} {@code ws} (audit) or - * {@code wss} (production)
    • - *
    • {@code SIGNALWIRE_PROJECT_ID} {@code audit}
    • - *
    • {@code SIGNALWIRE_API_TOKEN} {@code audit}
    • - *
    • {@code SIGNALWIRE_CONTEXTS} {@code audit_ctx} - * (comma-separated)
    • + *
    • {@code SIGNALWIRE_RELAY_HOST} {@code 127.0.0.1:NNNN} (the fixture's bound port) + *
    • {@code SIGNALWIRE_RELAY_SCHEME} {@code ws} (audit) or {@code wss} (production) + *
    • {@code SIGNALWIRE_PROJECT_ID} {@code audit} + *
    • {@code SIGNALWIRE_API_TOKEN} {@code audit} + *
    • {@code SIGNALWIRE_CONTEXTS} {@code audit_ctx} (comma-separated) *
    * *

    Exit codes: + * *

      - *
    • {@code 0} -- clean handshake + subscribe + event dispatch
    • - *
    • {@code 1} -- any error (socket failure, handshake timeout, - * no event in 5s)
    • + *
    • {@code 0} -- clean handshake + subscribe + event dispatch + *
    • {@code 1} -- any error (socket failure, handshake timeout, no event in 5s) *
    */ - import com.signalwire.sdk.relay.RelayClient; - import java.util.Arrays; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -41,132 +34,127 @@ public class RelayAuditHarness { - public static void main(String[] args) { - // Disable normal logging so stdout stays clean for the audit. - if (System.getenv("SIGNALWIRE_LOG_MODE") == null) { - // Java has no setenv; rely on the SDK's log layer respecting the - // prevailing env. The audit setter exports SIGNALWIRE_LOG_MODE=off - // already, so this branch is a no-op in CI. - } - - String host = orDefault(System.getenv("SIGNALWIRE_RELAY_HOST"), "127.0.0.1:0"); - String scheme = orDefault(System.getenv("SIGNALWIRE_RELAY_SCHEME"), "ws"); - String project = orDefault(System.getenv("SIGNALWIRE_PROJECT_ID"), "audit"); - String token = orDefault(System.getenv("SIGNALWIRE_API_TOKEN"), "audit"); - String contextsRaw = orDefault(System.getenv("SIGNALWIRE_CONTEXTS"), "audit_ctx"); - - List contexts = Arrays.stream(contextsRaw.split(",")) - .map(String::trim) - .filter(s -> !s.isEmpty()) - .toList(); - if (contexts.isEmpty()) { - contexts = List.of("audit_ctx"); - } - - // The RelayClient takes a "space" string and prepends "wss://" by - // default. We pass the explicit scheme + host so the connect() - // happens against the audit fixture's plain-ws loopback port. - String space = scheme + "://" + host + "/api/relay/ws"; - - RelayClient client = RelayClient.builder() - .project(project) - .token(token) - .space(space) - .contexts(contexts) - .build(); - - // Track whether a real inbound signalwire.event reached our handler. - // The on-event callback both flips this flag AND emits a raw - // method="signalwire.event" frame back over the socket so the - // audit fixture's dispatch counter fires (per SUBAGENT_PLAYBOOK - // lesson: ACK alone has no method field; the fixture filters by - // method=signalwire.event). - AtomicBoolean eventDispatched = new AtomicBoolean(false); - client.onEvent(event -> { - eventDispatched.set(true); - try { - Map frame = new LinkedHashMap<>(); - frame.put("jsonrpc", "2.0"); - frame.put("id", "harness-dispatch-" + UUID.randomUUID()); - frame.put("method", "signalwire.event"); - Map params = new LinkedHashMap<>(); - params.put("event_type", "harness.dispatched"); - params.put("params", Map.of("from", "java-harness")); - frame.put("params", params); - client.sendRaw(frame); - } catch (Exception e) { - System.err.println("[harness] post-dispatch frame failed: " + e.getMessage()); - } + public static void main(String[] args) { + // Disable normal logging so stdout stays clean for the audit. + if (System.getenv("SIGNALWIRE_LOG_MODE") == null) { + // Java has no setenv; rely on the SDK's log layer respecting the + // prevailing env. The audit setter exports SIGNALWIRE_LOG_MODE=off + // already, so this branch is a no-op in CI. + } + + String host = orDefault(System.getenv("SIGNALWIRE_RELAY_HOST"), "127.0.0.1:0"); + String scheme = orDefault(System.getenv("SIGNALWIRE_RELAY_SCHEME"), "ws"); + String project = orDefault(System.getenv("SIGNALWIRE_PROJECT_ID"), "audit"); + String token = orDefault(System.getenv("SIGNALWIRE_API_TOKEN"), "audit"); + String contextsRaw = orDefault(System.getenv("SIGNALWIRE_CONTEXTS"), "audit_ctx"); + + List contexts = + Arrays.stream(contextsRaw.split(",")).map(String::trim).filter(s -> !s.isEmpty()).toList(); + if (contexts.isEmpty()) { + contexts = List.of("audit_ctx"); + } + + // The RelayClient takes a "space" string and prepends "wss://" by + // default. We pass the explicit scheme + host so the connect() + // happens against the audit fixture's plain-ws loopback port. + String space = scheme + "://" + host + "/api/relay/ws"; + + RelayClient client = + RelayClient.builder().project(project).token(token).space(space).contexts(contexts).build(); + + // Track whether a real inbound signalwire.event reached our handler. + // The on-event callback both flips this flag AND emits a raw + // method="signalwire.event" frame back over the socket so the + // audit fixture's dispatch counter fires (per SUBAGENT_PLAYBOOK + // lesson: ACK alone has no method field; the fixture filters by + // method=signalwire.event). + AtomicBoolean eventDispatched = new AtomicBoolean(false); + client.onEvent( + event -> { + eventDispatched.set(true); + try { + Map frame = new LinkedHashMap<>(); + frame.put("jsonrpc", "2.0"); + frame.put("id", "harness-dispatch-" + UUID.randomUUID()); + frame.put("method", "signalwire.event"); + Map params = new LinkedHashMap<>(); + params.put("event_type", "harness.dispatched"); + params.put("params", Map.of("from", "java-harness")); + frame.put("params", params); + client.sendRaw(frame); + } catch (Exception e) { + System.err.println("[harness] post-dispatch frame failed: " + e.getMessage()); + } }); - // Connect on a background thread because RelayClient.run() blocks. - Thread runner = new Thread(client::run, "relay-harness-run"); - runner.setDaemon(true); - runner.start(); - - // Wait briefly for the WebSocket to come up (handshake + auth). - long handshakeDeadline = System.currentTimeMillis() + 2000; - while (System.currentTimeMillis() < handshakeDeadline && !client.isConnected()) { - try { - Thread.sleep(50); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - return; - } - } - - // Audit fixture watches for `signalwire.subscribe` (with - // params.contexts). Send that frame explicitly. We also send the - // production-shaped `signalwire.receive` so the harness still - // exercises the documented subscribe path. Either method's reply - // is a no-op success per the fixture; production RELAY treats - // unknown methods identically. - try { - Map subscribeParams = new LinkedHashMap<>(); - subscribeParams.put("contexts", contexts); - client.execute("signalwire.subscribe", subscribeParams); - } catch (Exception e) { - System.err.println("[harness] subscribe call failed: " + e.getMessage()); - } - try { - client.receive(contexts); - } catch (Exception e) { - // Audit fixture replies with a generic empty success that may - // not satisfy the production receive() expectations -- swallow - // the exception so the harness can finish. - } - - // Wait up to 5 s for an inbound event to be dispatched. - long deadline = System.currentTimeMillis() + 5000; - while (System.currentTimeMillis() < deadline && !eventDispatched.get()) { - try { - Thread.sleep(50); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - break; - } - } - - // Give the writer thread a moment to flush our dispatch frame to - // the socket before we close. - try { - Thread.sleep(200); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - } - - client.disconnect(); - - if (!eventDispatched.get()) { - System.err.println("[harness] no inbound signalwire.event arrived within 5 s"); - System.exit(1); - } - - System.out.println("[harness] ok"); - System.exit(0); + // Connect on a background thread because RelayClient.run() blocks. + Thread runner = new Thread(client::run, "relay-harness-run"); + runner.setDaemon(true); + runner.start(); + + // Wait briefly for the WebSocket to come up (handshake + auth). + long handshakeDeadline = System.currentTimeMillis() + 2000; + while (System.currentTimeMillis() < handshakeDeadline && !client.isConnected()) { + try { + Thread.sleep(50); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + return; + } } - private static String orDefault(String value, String fallback) { - return (value == null || value.isEmpty()) ? fallback : value; + // Audit fixture watches for `signalwire.subscribe` (with + // params.contexts). Send that frame explicitly. We also send the + // production-shaped `signalwire.receive` so the harness still + // exercises the documented subscribe path. Either method's reply + // is a no-op success per the fixture; production RELAY treats + // unknown methods identically. + try { + Map subscribeParams = new LinkedHashMap<>(); + subscribeParams.put("contexts", contexts); + client.execute("signalwire.subscribe", subscribeParams); + } catch (Exception e) { + System.err.println("[harness] subscribe call failed: " + e.getMessage()); + } + try { + client.receive(contexts); + } catch (Exception e) { + // Audit fixture replies with a generic empty success that may + // not satisfy the production receive() expectations -- swallow + // the exception so the harness can finish. } + + // Wait up to 5 s for an inbound event to be dispatched. + long deadline = System.currentTimeMillis() + 5000; + while (System.currentTimeMillis() < deadline && !eventDispatched.get()) { + try { + Thread.sleep(50); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + break; + } + } + + // Give the writer thread a moment to flush our dispatch frame to + // the socket before we close. + try { + Thread.sleep(200); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + + client.disconnect(); + + if (!eventDispatched.get()) { + System.err.println("[harness] no inbound signalwire.event arrived within 5 s"); + System.exit(1); + } + + System.out.println("[harness] ok"); + System.exit(0); + } + + private static String orDefault(String value, String fallback) { + return (value == null || value.isEmpty()) ? fallback : value; + } } diff --git a/examples/RelayDemo.java b/examples/RelayDemo.java index bd32c2dd..5f0dae6c 100644 --- a/examples/RelayDemo.java +++ b/examples/RelayDemo.java @@ -1,78 +1,79 @@ -/** +/* * Using the RELAY WebSocket client for real-time call control. * - * Requires env vars: - * SIGNALWIRE_PROJECT_ID - * SIGNALWIRE_API_TOKEN - * SIGNALWIRE_SPACE + *

    Requires env vars: SIGNALWIRE_PROJECT_ID SIGNALWIRE_API_TOKEN SIGNALWIRE_SPACE */ - import com.signalwire.sdk.relay.RelayClient; - import java.util.List; import java.util.Map; public class RelayDemo { - public static void main(String[] args) throws Exception { - // Build RELAY client (reads env vars automatically) - var client = RelayClient.builder() - .contexts(List.of("default")) - .build(); + public static void main(String[] args) throws Exception { + // Build RELAY client (reads env vars automatically) + var client = RelayClient.builder().contexts(List.of("default")).build(); - // Register inbound call handler - client.onCall(call -> { - System.out.println("Incoming call: " + call.getCallId()); + // Register inbound call handler + client.onCall( + call -> { + System.out.println("Incoming call: " + call.getCallId()); - // Answer the call - call.answer(); + // Answer the call + call.answer(); - // Play a greeting - var playAction = call.play(List.of(Map.of( - "type", "tts", - "params", Map.of("text", - "Welcome to SignalWire! This is a demo of the Java RELAY client.") - ))); - playAction.waitForCompletion(); + // Play a greeting + var playAction = + call.play( + List.of( + Map.of( + "type", + "tts", + "params", + Map.of( + "text", + "Welcome to SignalWire! This is a demo of the Java RELAY client.")))); + playAction.waitForCompletion(); - // Collect a digit - var collectAction = call.playAndCollect( - List.of(Map.of( - "type", "tts", - "params", Map.of("text", "Press 1 to hear a joke, or press 2 to hang up.") - )), - Map.of( - "digits", Map.of("max", 1, "digit_timeout", 5.0), - "initial_timeout", 10.0 - ), - (Map) null - ); + // Collect a digit + var collectAction = + call.playAndCollect( + List.of( + Map.of( + "type", + "tts", + "params", + Map.of("text", "Press 1 to hear a joke, or press 2 to hang up."))), + Map.of("digits", Map.of("max", 1, "digit_timeout", 5.0), "initial_timeout", 10.0), + (Map) null); - var result = collectAction.waitForCompletion(); - // Extract collected digits from the event params - String digits = result != null ? result.getStringParam("digits", "") : ""; + var result = collectAction.waitForCompletion(); + // Extract collected digits from the event params + String digits = result != null ? result.getStringParam("digits", "") : ""; - if ("1".equals(digits)) { - var jokeAction = call.play(List.of(Map.of( - "type", "tts", - "params", Map.of("text", - "Why do Java developers wear glasses? Because they don't C sharp!") - ))); - jokeAction.waitForCompletion(); - } + if ("1".equals(digits)) { + var jokeAction = + call.play( + List.of( + Map.of( + "type", + "tts", + "params", + Map.of( + "text", + "Why do Java developers wear glasses? Because they don't C sharp!")))); + jokeAction.waitForCompletion(); + } - // Say goodbye and hang up - var byeAction = call.play(List.of(Map.of( - "type", "tts", - "params", Map.of("text", "Goodbye!") - ))); - byeAction.waitForCompletion(); + // Say goodbye and hang up + var byeAction = + call.play(List.of(Map.of("type", "tts", "params", Map.of("text", "Goodbye!")))); + byeAction.waitForCompletion(); - call.hangup(); - System.out.println("Call ended: " + call.getCallId()); + call.hangup(); + System.out.println("Call ended: " + call.getCallId()); }); - System.out.println("RELAY client listening for inbound calls..."); - client.run(); - } + System.out.println("RELAY client listening for inbound calls..."); + client.run(); + } } diff --git a/examples/RestAuditHarness.java b/examples/RestAuditHarness.java index 77ca5bcc..70b884ab 100644 --- a/examples/RestAuditHarness.java +++ b/examples/RestAuditHarness.java @@ -1,115 +1,112 @@ -/** +/* * RestAuditHarness -- runtime probe for the REST transport. * *

    Driven by porting-sdk's {@code audit_rest_transport.py}. Reads: + * *

      - *
    • {@code REST_OPERATION} dotted name (e.g. - * {@code calling.list_calls})
    • - *
    • {@code REST_FIXTURE_URL} ({@code http://127.0.0.1:NNNN})
    • - *
    • {@code REST_OPERATION_ARGS} JSON dict of args for the operation
    • - *
    • {@code SIGNALWIRE_PROJECT_ID}, {@code SIGNALWIRE_API_TOKEN}
    • + *
    • {@code REST_OPERATION} dotted name (e.g. {@code calling.list_calls}) + *
    • {@code REST_FIXTURE_URL} ({@code http://127.0.0.1:NNNN}) + *
    • {@code REST_OPERATION_ARGS} JSON dict of args for the operation + *
    • {@code SIGNALWIRE_PROJECT_ID}, {@code SIGNALWIRE_API_TOKEN} *
    * - *

    Constructs a {@code RestClient} pointed at {@code REST_FIXTURE_URL}, - * invokes the named operation, and prints the parsed return value as - * JSON to stdout. Exits 0 on success, non-zero on any error. + *

    Constructs a {@code RestClient} pointed at {@code REST_FIXTURE_URL}, invokes the named + * operation, and prints the parsed return value as JSON to stdout. Exits 0 on success, non-zero on + * any error. * *

    Operations supported by this harness: + * *

      - *
    • {@code phone_numbers.list} GET - * {@code /api/phone_numbers}
    • - *
    • {@code fabric.subscribers.list} GET - * {@code /api/fabric/subscribers}
    • + *
    • {@code phone_numbers.list} GET {@code /api/phone_numbers} + *
    • {@code fabric.subscribers.list} GET {@code /api/fabric/subscribers} *
    */ - import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.signalwire.sdk.rest.RestClient; - import java.util.LinkedHashMap; import java.util.Map; public class RestAuditHarness { - private static final Gson GSON = new Gson(); - - public static void main(String[] args) { - String operation = orFail("REST_OPERATION"); - String fixtureUrl = orFail("REST_FIXTURE_URL"); - String argsRaw = orDefault(System.getenv("REST_OPERATION_ARGS"), "{}"); - String projectId = orFail("SIGNALWIRE_PROJECT_ID"); - String token = orFail("SIGNALWIRE_API_TOKEN"); + private static final Gson GSON = new Gson(); - Map opArgs = parseJsonObject(argsRaw); + public static void main(String[] args) { + String operation = orFail("REST_OPERATION"); + String fixtureUrl = orFail("REST_FIXTURE_URL"); + String argsRaw = orDefault(System.getenv("REST_OPERATION_ARGS"), "{}"); + String projectId = orFail("SIGNALWIRE_PROJECT_ID"); + String token = orFail("SIGNALWIRE_API_TOKEN"); - // The audit fixture binds to a plain-HTTP loopback port; route the - // REST client through it via the explicit-base-URL factory. The - // factory normalizes the trailing /api so existing namespace paths - // (e.g. /phone_numbers) end up in the right place. - RestClient client = RestClient.withBaseUrl(fixtureUrl, projectId, token); + Map opArgs = parseJsonObject(argsRaw); - Object result; - try { - result = switch (operation) { - case "phone_numbers.list" -> - client.phoneNumbers().list(stringQuery(opArgs)); - case "fabric.subscribers.list" -> - client.fabric().subscribers().list(stringQuery(opArgs)); - default -> null; - }; - } catch (Exception e) { - die("operation '" + operation + "' failed: " + e.getMessage(), 1); - return; - } + // The audit fixture binds to a plain-HTTP loopback port; route the + // REST client through it via the explicit-base-URL factory. The + // factory normalizes the trailing /api so existing namespace paths + // (e.g. /phone_numbers) end up in the right place. + RestClient client = RestClient.withBaseUrl(fixtureUrl, projectId, token); - if (result == null) { - die("unsupported operation '" + operation + "'", 2); - return; - } - - System.out.println(GSON.toJson(result)); - System.exit(0); + Object result; + try { + result = + switch (operation) { + case "phone_numbers.list" -> client.phoneNumbers().list(stringQuery(opArgs)); + case "fabric.subscribers.list" -> + client.fabric().subscribers().list(stringQuery(opArgs)); + default -> null; + }; + } catch (Exception e) { + die("operation '" + operation + "' failed: " + e.getMessage(), 1); + return; } - private static Map stringQuery(Map args) { - Map out = new LinkedHashMap<>(); - for (Map.Entry e : args.entrySet()) { - Object v = e.getValue(); - if (v instanceof String s) { - out.put(e.getKey(), s); - } else if (v instanceof Number || v instanceof Boolean) { - out.put(e.getKey(), v.toString()); - } - } - return out; + if (result == null) { + die("unsupported operation '" + operation + "'", 2); + return; } - private static Map parseJsonObject(String raw) { - try { - Map obj = GSON.fromJson(raw, - new TypeToken>() {}.getType()); - return obj == null ? new LinkedHashMap<>() : obj; - } catch (Exception e) { - die("REST_OPERATION_ARGS is not a JSON object: " + e.getMessage(), 1); - return new LinkedHashMap<>(); - } - } + System.out.println(GSON.toJson(result)); + System.exit(0); + } - private static String orFail(String name) { - String v = System.getenv(name); - if (v == null || v.isEmpty()) { - die(name + " required", 1); - } - return v; + private static Map stringQuery(Map args) { + Map out = new LinkedHashMap<>(); + for (Map.Entry e : args.entrySet()) { + Object v = e.getValue(); + if (v instanceof String s) { + out.put(e.getKey(), s); + } else if (v instanceof Number || v instanceof Boolean) { + out.put(e.getKey(), v.toString()); + } } + return out; + } - private static String orDefault(String value, String fallback) { - return (value == null || value.isEmpty()) ? fallback : value; + private static Map parseJsonObject(String raw) { + try { + Map obj = + GSON.fromJson(raw, new TypeToken>() {}.getType()); + return obj == null ? new LinkedHashMap<>() : obj; + } catch (Exception e) { + die("REST_OPERATION_ARGS is not a JSON object: " + e.getMessage(), 1); + return new LinkedHashMap<>(); } + } - private static void die(String msg, int code) { - System.err.println("RestAuditHarness: " + msg); - System.exit(code); + private static String orFail(String name) { + String v = System.getenv(name); + if (v == null || v.isEmpty()) { + die(name + " required", 1); } + return v; + } + + private static String orDefault(String value, String fallback) { + return (value == null || value.isEmpty()) ? fallback : value; + } + + private static void die(String msg, int code) { + System.err.println("RestAuditHarness: " + msg); + System.exit(code); + } } diff --git a/examples/RestDemo.java b/examples/RestDemo.java index f5b812f2..f3e6411a 100644 --- a/examples/RestDemo.java +++ b/examples/RestDemo.java @@ -1,74 +1,76 @@ -/** +/* * Using the REST client to manage SignalWire resources. * - * Requires env vars: - * SIGNALWIRE_PROJECT_ID - * SIGNALWIRE_API_TOKEN - * SIGNALWIRE_SPACE + *

    Requires env vars: SIGNALWIRE_PROJECT_ID SIGNALWIRE_API_TOKEN SIGNALWIRE_SPACE */ - import com.signalwire.sdk.rest.RestClient; import com.signalwire.sdk.rest.RestError; - import java.util.Map; public class RestDemo { - public static void main(String[] args) { - // Build REST client (reads env vars automatically) - var client = RestClient.builder().build(); + public static void main(String[] args) { + // Build REST client (reads env vars automatically) + var client = RestClient.builder().build(); - // 1. Create an AI agent via the typed sub-namespace - // (Python parity: client.fabric.ai_agents.create(...)) - System.out.println("Creating Fabric resource..."); - try { - var resource = client.fabric().aiAgents().create(Map.of( - "name", "Demo Bot" - )); - System.out.println(" Resource created: " + resource.get("id")); + // 1. Create an AI agent via the typed sub-namespace + // (Python parity: client.fabric.ai_agents.create(...)) + System.out.println("Creating Fabric resource..."); + try { + var resource = client.fabric().aiAgents().create(Map.of("name", "Demo Bot")); + System.out.println(" Resource created: " + resource.get("id")); - // Clean up - client.fabric().aiAgents().delete((String) resource.get("id")); - System.out.println(" Resource deleted."); - } catch (RestError e) { - System.out.println(" Failed (expected in demo): " + e.getMessage()); - } - - // 2. Search for phone numbers - System.out.println("\nSearching for available numbers..."); - try { - var numbers = client.phoneNumbers().search(Map.of( - "areacode", "512", - "max_results", "3" - )); - System.out.println(" Available: " + numbers); - } catch (RestError e) { - System.out.println(" Search failed: " + e.getMessage()); - } + // Clean up + client.fabric().aiAgents().delete((String) resource.get("id")); + System.out.println(" Resource deleted."); + } catch (RestError e) { + System.out.println(" Failed (expected in demo): " + e.getMessage()); + } - // 3. Upload a document to Datasphere - System.out.println("\nCreating Datasphere document..."); - try { - // Datasphere ingests documents by URL (the server fetches + chunks it); - // the request carries `url` (+ optional `tags`), not inline text. - var doc = client.datasphere().documents().create(Map.of( - "url", "https://example.com/faq.pdf", - "tags", java.util.List.of("faq") - )); - System.out.println(" Document created: " + doc.get("id")); - } catch (RestError e) { - System.out.println(" Create failed: " + e.getMessage()); - } + // 2. Search for phone numbers + System.out.println("\nSearching for available numbers..."); + try { + var numbers = + client + .phoneNumbers() + .search( + Map.of( + "areacode", "512", + "max_results", "3")); + // AvailablePhoneNumbersResponse is a pure-data DTO with no toString(), so + // concatenating the response itself printed its identity hash + // ("AvailablePhoneNumbersResponse@4488aabb") rather than any number. The + // search results live on the `data` list. + System.out.println(" Available: " + numbers.data); + } catch (RestError e) { + System.out.println(" Search failed: " + e.getMessage()); + } - // 4. List video rooms - System.out.println("\nListing video rooms..."); - try { - var rooms = client.video().rooms().list(); - System.out.println(" Rooms: " + rooms); - } catch (RestError e) { - System.out.println(" List failed: " + e.getMessage()); - } + // 3. Upload a document to Datasphere + System.out.println("\nCreating Datasphere document..."); + try { + // Datasphere ingests documents by URL (the server fetches + chunks it); + // the request carries `url` (+ optional `tags`), not inline text. + var doc = + client + .datasphere() + .documents() + .create( + Map.of("url", "https://example.com/faq.pdf", "tags", java.util.List.of("faq"))); + System.out.println(" Document created: " + doc.get("id")); + } catch (RestError e) { + System.out.println(" Create failed: " + e.getMessage()); + } - System.out.println("\nREST demo complete."); + // 4. List video rooms + System.out.println("\nListing video rooms..."); + try { + var rooms = client.video().rooms().list(); + System.out.println(" Rooms: " + rooms); + } catch (RestError e) { + System.out.println(" List failed: " + e.getMessage()); } + + System.out.println("\nREST demo complete."); + } } diff --git a/examples/RoomAndSipExample.java b/examples/RoomAndSipExample.java index a6fdb7b1..05e1b0d8 100644 --- a/examples/RoomAndSipExample.java +++ b/examples/RoomAndSipExample.java @@ -1,68 +1,72 @@ -/** +/* * Room and SIP Example. * - * Demonstrates using FunctionResult helpers for: - * - Joining RELAY rooms for multi-party communication - * - SIP REFER for call transfers in SIP environments - * - Joining conferences + *

    Demonstrates using FunctionResult helpers for: - Joining RELAY rooms for multi-party + * communication - SIP REFER for call transfers in SIP environments - Joining conferences */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - import java.util.List; import java.util.Map; public class RoomAndSipExample { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("room-sip-agent") - .route("/") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = AgentBase.builder().name("room-sip-agent").route("/").port(3000).build(); - agent.promptAddSection("Role", - "You are an office communication assistant that can join rooms, " + - "transfer calls via SIP, and set up conferences."); - agent.promptAddSection("Instructions", "", List.of( - "Use join_support_room to join the support team room", - "Use transfer_to_manager to escalate via SIP", - "Use start_conference to begin a conference call" - )); + agent.promptAddSection( + "Role", + "You are an office communication assistant that can join rooms, " + + "transfer calls via SIP, and set up conferences."); + agent.promptAddSection( + "Instructions", + "", + List.of( + "Use join_support_room to join the support team room", + "Use transfer_to_manager to escalate via SIP", + "Use start_conference to begin a conference call")); - // Join a RELAY room - agent.defineTool("join_support_room", "Join the support team room", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> new FunctionResult("Joining the support team room") - .joinRoom("support_team_room") - .setMetadata(Map.of("role", "support_agent")) - .say("Welcome to the support team room.")); + // Join a RELAY room + agent.defineTool( + "join_support_room", + "Join the support team room", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> + new FunctionResult("Joining the support team room") + .joinRoom("support_team_room") + .setMetadata(Map.of("role", "support_agent")) + .say("Welcome to the support team room.")); - // SIP REFER transfer - agent.defineTool("transfer_to_manager", "Transfer call to manager via SIP", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> new FunctionResult("Transferring to manager") - .say("Let me connect you with a manager.") - .sipRefer("sip:manager@company.com") - .updateGlobalData(Map.of("escalated", true))); + // SIP REFER transfer + agent.defineTool( + "transfer_to_manager", + "Transfer call to manager via SIP", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> + new FunctionResult("Transferring to manager") + .say("Let me connect you with a manager.") + .sipRefer("sip:manager@company.com") + .updateGlobalData(Map.of("escalated", true))); - // Join a conference - agent.defineTool("start_conference", "Join a conference call", - Map.of("type", "object", - "properties", Map.of( - "name", Map.of("type", "string", - "description", "Conference name") - ), - "required", List.of("name")), - (toolArgs, raw) -> { - String name = (String) toolArgs.getOrDefault("name", "default"); - return new FunctionResult("Setting up conference: " + name) - .joinConference(name) - .say("Welcome to the " + name + " conference."); - }); + // Join a conference + agent.defineTool( + "start_conference", + "Join a conference call", + Map.of( + "type", + "object", + "properties", + Map.of("name", Map.of("type", "string", "description", "Conference name")), + "required", + List.of("name")), + (toolArgs, raw) -> { + String name = (String) toolArgs.getOrDefault("name", "default"); + return new FunctionResult("Setting up conference: " + name) + .joinConference(name) + .say("Welcome to the " + name + " conference."); + }); - System.out.println("Starting Room & SIP agent on port 3000..."); - agent.run(); - } + System.out.println("Starting Room & SIP agent on port 3000..."); + agent.run(); + } } diff --git a/examples/SessionAndStateDemo.java b/examples/SessionAndStateDemo.java index bd54da2d..c3748161 100644 --- a/examples/SessionAndStateDemo.java +++ b/examples/SessionAndStateDemo.java @@ -1,76 +1,80 @@ -/** +/* * Stateful agent using global data for session tracking. * - * Demonstrates how to use global data to maintain state across tool calls - * within a single conversation. + *

    Demonstrates how to use global data to maintain state across tool calls within a single + * conversation. */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - -import java.util.ArrayList; import java.util.List; import java.util.Map; public class SessionAndStateDemo { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("stateful-agent") - .route("/") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = AgentBase.builder().name("stateful-agent").route("/").port(3000).build(); - agent.promptAddSection("Role", - "You are a shopping assistant. Help users add items to their cart."); - agent.promptAddSection("Instructions", "", List.of( - "Use add_to_cart to add items", - "Use view_cart to show current cart contents", - "Use checkout to complete the order" - )); + agent.promptAddSection( + "Role", "You are a shopping assistant. Help users add items to their cart."); + agent.promptAddSection( + "Instructions", + "", + List.of( + "Use add_to_cart to add items", + "Use view_cart to show current cart contents", + "Use checkout to complete the order")); - // Initialize global data with empty cart - agent.updateGlobalData(Map.of( - "cart", Map.of("items", List.of(), "total", 0) - )); + // Initialize global data with empty cart + agent.updateGlobalData(Map.of("cart", Map.of("items", List.of(), "total", 0))); - // Add to cart tool - agent.defineTool("add_to_cart", "Add an item to the shopping cart", - Map.of("type", "object", "properties", Map.of( - "item", Map.of("type", "string", "description", "Item name"), - "price", Map.of("type", "number", "description", "Item price") - ), "required", List.of("item", "price")), - (toolArgs, raw) -> { - String item = (String) toolArgs.get("item"); - double price = ((Number) toolArgs.get("price")).doubleValue(); + // Add to cart tool + agent.defineTool( + "add_to_cart", + "Add an item to the shopping cart", + Map.of( + "type", + "object", + "properties", + Map.of( + "item", Map.of("type", "string", "description", "Item name"), + "price", Map.of("type", "number", "description", "Item price")), + "required", + List.of("item", "price")), + (toolArgs, raw) -> { + String item = (String) toolArgs.get("item"); + double price = ((Number) toolArgs.get("price")).doubleValue(); - return new FunctionResult( - "Added " + item + " ($" + String.format("%.2f", price) + ") to cart.") - .updateGlobalData(Map.of( - "last_item", item, - "last_price", price - )); - }); + return new FunctionResult( + "Added " + item + " ($" + String.format("%.2f", price) + ") to cart.") + .updateGlobalData( + Map.of( + "last_item", item, + "last_price", price)); + }); - // View cart tool - agent.defineTool("view_cart", "View the current shopping cart", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> { - @SuppressWarnings("unchecked") - Map globalData = (Map) raw.get("global_data"); - String lastItem = globalData != null ? - (String) globalData.getOrDefault("last_item", "none") : "none"; - return new FunctionResult("Last item added: " + lastItem); - }); + // View cart tool + agent.defineTool( + "view_cart", + "View the current shopping cart", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> { + @SuppressWarnings("unchecked") + Map globalData = (Map) raw.get("global_data"); + String lastItem = + globalData != null ? (String) globalData.getOrDefault("last_item", "none") : "none"; + return new FunctionResult("Last item added: " + lastItem); + }); - // Checkout tool - agent.defineTool("checkout", "Complete the order", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> new FunctionResult( - "Order placed successfully! Thank you for shopping with us.") - .hangup()); + // Checkout tool + agent.defineTool( + "checkout", + "Complete the order", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> + new FunctionResult("Order placed successfully! Thank you for shopping with us.") + .hangup()); - System.out.println("Starting stateful shopping agent on port 3000..."); - agent.run(); - } + System.out.println("Starting stateful shopping agent on port 3000..."); + agent.run(); + } } diff --git a/examples/SimpleAgent.java b/examples/SimpleAgent.java index 26326d18..990f631b 100644 --- a/examples/SimpleAgent.java +++ b/examples/SimpleAgent.java @@ -1,63 +1,53 @@ -/** +/* * Minimal agent with one tool and POM-based prompts. * - * Run: - * java SimpleAgent + *

    Run: java SimpleAgent * - * Test: - * bin/swaig-test --url http://agent:PASS@localhost:3000 --list-tools - * bin/swaig-test --url http://agent:PASS@localhost:3000 --exec get_weather --param city=Austin + *

    Test: bin/swaig-test --url http://agent:PASS@localhost:3000 --list-tools bin/swaig-test --url + * http://agent:PASS@localhost:3000 --exec get_weather --param city=Austin */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - import java.util.List; import java.util.Map; public class SimpleAgent { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("weather-agent") - .route("/") - .port(3000) - .build(); - - // Add prompt sections (Prompt Object Model) - agent.promptAddSection("Role", - "You are a helpful weather assistant."); - agent.promptAddSection("Instructions", "", List.of( - "When asked about weather, use the get_weather tool", - "Provide temperature in both Fahrenheit and Celsius", - "Be friendly and conversational" - )); - - // Add speech recognition hints - agent.addHints(List.of("weather", "temperature", "forecast")); - - // Define a tool - agent.defineTool( - "get_weather", - "Get the current weather for a city", + public static void main(String[] args) throws Exception { + var agent = AgentBase.builder().name("weather-agent").route("/").port(3000).build(); + + // Add prompt sections (Prompt Object Model) + agent.promptAddSection("Role", "You are a helpful weather assistant."); + agent.promptAddSection( + "Instructions", + "", + List.of( + "When asked about weather, use the get_weather tool", + "Provide temperature in both Fahrenheit and Celsius", + "Be friendly and conversational")); + + // Add speech recognition hints + agent.addHints(List.of("weather", "temperature", "forecast")); + + // Define a tool + agent.defineTool( + "get_weather", + "Get the current weather for a city", + Map.of( + "type", "object", + "properties", Map.of( - "type", "object", - "properties", Map.of( - "city", Map.of( - "type", "string", - "description", "The city to get weather for" - ) - ), - "required", List.of("city") - ), - (toolArgs, rawData) -> { - String city = (String) toolArgs.get("city"); - return new FunctionResult( - "The weather in " + city + " is 72F (22C) and sunny."); - } - ); - - System.out.println("Starting weather agent on port 3000..."); - agent.run(); - } + "city", + Map.of( + "type", "string", + "description", "The city to get weather for")), + "required", List.of("city")), + (toolArgs, rawData) -> { + String city = (String) toolArgs.get("city"); + return new FunctionResult("The weather in " + city + " is 72F (22C) and sunny."); + }); + + System.out.println("Starting weather agent on port 3000..."); + agent.run(); + } } diff --git a/examples/SimpleDynamicAgent.java b/examples/SimpleDynamicAgent.java index c6eefd12..e0c21d34 100644 --- a/examples/SimpleDynamicAgent.java +++ b/examples/SimpleDynamicAgent.java @@ -1,64 +1,59 @@ -/** +/* * Agent with per-request dynamic configuration. * - * The dynamic config callback receives query params, POST body, and headers, - * allowing the agent to customize its behavior per-request (e.g., multi-tenancy). + *

    The dynamic config callback receives query params, POST body, and headers, allowing the agent + * to customize its behavior per-request (e.g., multi-tenancy). */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - import java.util.List; import java.util.Map; public class SimpleDynamicAgent { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("dynamic-agent") - .route("/") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = AgentBase.builder().name("dynamic-agent").route("/").port(3000).build(); - agent.promptAddSection("Role", - "You are a customizable assistant."); + agent.promptAddSection("Role", "You are a customizable assistant."); - // Dynamic config callback: customize per request - agent.setDynamicConfigCallback((queryParams, bodyParams, headers, configAgent) -> { - // Customize based on query params - String tenant = queryParams.getOrDefault("tenant", "default"); - String language = queryParams.getOrDefault("lang", "en"); + // Dynamic config callback: customize per request + agent.setDynamicConfigCallback( + (queryParams, bodyParams, headers, configAgent) -> { + // Customize based on query params + String tenant = queryParams.getOrDefault("tenant", "default"); + String language = queryParams.getOrDefault("lang", "en"); - configAgent.promptAddSection("Tenant", - "You are serving tenant: " + tenant); + configAgent.promptAddSection("Tenant", "You are serving tenant: " + tenant); - if ("es".equals(language)) { - configAgent.addLanguage("Spanish", "es", "es-ES-Standard-A"); - configAgent.promptAddSection("Language", - "Respond in Spanish."); - } + if ("es".equals(language)) { + configAgent.addLanguage("Spanish", "es", "es-ES-Standard-A"); + configAgent.promptAddSection("Language", "Respond in Spanish."); + } - // Customize based on headers - List customHeader = headers.getOrDefault("X-Custom-Config", List.of()); - if (!customHeader.isEmpty()) { - configAgent.promptAddSection("Custom", - "Custom config: " + customHeader.get(0)); - } + // Customize based on headers + List customHeader = headers.getOrDefault("X-Custom-Config", List.of()); + if (!customHeader.isEmpty()) { + configAgent.promptAddSection("Custom", "Custom config: " + customHeader.get(0)); + } }); - agent.defineTool("greet", "Greet the user by name", - Map.of("type", "object", - "properties", Map.of( - "name", Map.of("type", "string", "description", "User name") - ), - "required", List.of("name")), - (toolArgs, raw) -> { - String name = (String) toolArgs.get("name"); - return new FunctionResult("Hello, " + name + "! Welcome."); - }); + agent.defineTool( + "greet", + "Greet the user by name", + Map.of( + "type", + "object", + "properties", + Map.of("name", Map.of("type", "string", "description", "User name")), + "required", + List.of("name")), + (toolArgs, raw) -> { + String name = (String) toolArgs.get("name"); + return new FunctionResult("Hello, " + name + "! Welcome."); + }); - System.out.println("Starting dynamic agent on port 3000..."); - System.out.println("Try: ?tenant=acme&lang=es"); - agent.run(); - } + System.out.println("Starting dynamic agent on port 3000..."); + System.out.println("Try: ?tenant=acme&lang=es"); + agent.run(); + } } diff --git a/examples/SimpleDynamicEnhanced.java b/examples/SimpleDynamicEnhanced.java index ea82fa27..aa1fb5fb 100644 --- a/examples/SimpleDynamicEnhanced.java +++ b/examples/SimpleDynamicEnhanced.java @@ -1,104 +1,109 @@ -/** +/* * Enhanced Dynamic Agent. * - * Adapts based on request parameters: - * - vip=true/false (premium voice, faster response) - * - department=sales/support/billing (specialized expertise) - * - customer_id= (personalized experience) - * - language=en/es (language and voice selection) + *

    Adapts based on request parameters: - vip=true/false (premium voice, faster response) - + * department=sales/support/billing (specialized expertise) - customer_id= (personalized + * experience) - language=en/es (language and voice selection) * - * Test: - * curl "http://localhost:3000/?vip=true&department=sales" - * curl "http://localhost:3000/?department=billing&language=es" + *

    Test: curl "http://localhost:3000/?vip=true&department=sales" curl + * "http://localhost:3000/?department=billing&language=es" */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - import java.util.HashMap; import java.util.List; import java.util.Map; public class SimpleDynamicEnhanced { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("dynamic-enhanced") - .route("/") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = AgentBase.builder().name("dynamic-enhanced").route("/").port(3000).build(); - agent.setDynamicConfigCallback((queryParams, bodyParams, headers, ephemeral) -> { - boolean isVIP = "true".equalsIgnoreCase(queryParams.getOrDefault("vip", "")); - String department = queryParams.getOrDefault("department", "general"); - String customerId = queryParams.getOrDefault("customer_id", ""); - String lang = queryParams.getOrDefault("language", "en"); + agent.setDynamicConfigCallback( + (queryParams, bodyParams, headers, ephemeral) -> { + boolean isVIP = "true".equalsIgnoreCase(queryParams.getOrDefault("vip", "")); + String department = queryParams.getOrDefault("department", "general"); + String customerId = queryParams.getOrDefault("customer_id", ""); + String lang = queryParams.getOrDefault("language", "en"); - // Voice and language - String voice = isVIP ? "en-US-Wavenet-D" : "en-US-Standard-C"; - if ("es".equals(lang)) { - ephemeral.addLanguage("Spanish", "es-ES", voice); - } else { - ephemeral.addLanguage("English", "en-US", voice); - } + // Voice and language + String voice = isVIP ? "en-US-Wavenet-D" : "en-US-Standard-C"; + if ("es".equals(lang)) { + ephemeral.addLanguage("Spanish", "es-ES", voice); + } else { + ephemeral.addLanguage("English", "en-US", voice); + } - // AI parameters - ephemeral.setParam("end_of_speech_timeout", isVIP ? 300 : 500); - ephemeral.setParam("attention_timeout", isVIP ? 20000 : 15000); + // AI parameters + ephemeral.setParam("end_of_speech_timeout", isVIP ? 300 : 500); + ephemeral.setParam("attention_timeout", isVIP ? 20000 : 15000); - // Global data - Map globalData = new HashMap<>(); - globalData.put("department", department); - globalData.put("service_level", isVIP ? "vip" : "standard"); - if (!customerId.isEmpty()) globalData.put("customer_id", customerId); - ephemeral.setGlobalData(globalData); + // Global data + Map globalData = new HashMap<>(); + globalData.put("department", department); + globalData.put("service_level", isVIP ? "vip" : "standard"); + if (!customerId.isEmpty()) globalData.put("customer_id", customerId); + ephemeral.setGlobalData(globalData); - // Role prompt - String role = customerId.isEmpty() - ? "You are a professional customer service representative." - : "You are a customer service rep helping customer " + customerId + "."; - if (isVIP) role += " This is a VIP customer who receives priority service."; - ephemeral.promptAddSection("Role", role); + // Role prompt + String role = + customerId.isEmpty() + ? "You are a professional customer service representative." + : "You are a customer service rep helping customer " + customerId + "."; + if (isVIP) role += " This is a VIP customer who receives priority service."; + ephemeral.promptAddSection("Role", role); - // Department expertise - switch (department) { - case "sales": - ephemeral.promptAddSection("Sales Expertise", "You specialize in sales:", List.of( - "Present product features and benefits", - "Handle pricing questions", - "Process orders and upgrades")); - break; - case "billing": - ephemeral.promptAddSection("Billing Expertise", "You specialize in billing:", List.of( - "Explain statements and charges", - "Process payment arrangements", - "Handle dispute resolution")); - break; - default: - ephemeral.promptAddSection("Support Guidelines", "Follow these principles:", List.of( - "Listen carefully to customer needs", - "Provide accurate information", - "Escalate complex issues when appropriate")); - } + // Department expertise + switch (department) { + case "sales": + ephemeral.promptAddSection( + "Sales Expertise", + "You specialize in sales:", + List.of( + "Present product features and benefits", + "Handle pricing questions", + "Process orders and upgrades")); + break; + case "billing": + ephemeral.promptAddSection( + "Billing Expertise", + "You specialize in billing:", + List.of( + "Explain statements and charges", + "Process payment arrangements", + "Handle dispute resolution")); + break; + default: + ephemeral.promptAddSection( + "Support Guidelines", + "Follow these principles:", + List.of( + "Listen carefully to customer needs", + "Provide accurate information", + "Escalate complex issues when appropriate")); + } - // Common tool - ephemeral.defineTool("check_order", "Check order status", - Map.of("type", "object", - "properties", Map.of( - "order_number", Map.of("type", "string", - "description", "Order number"))), - (toolArgs, raw) -> { - String num = (String) toolArgs.getOrDefault("order_number", "unknown"); - return new FunctionResult( - "Order " + num + " is being processed. Ships in 2 business days."); - }); + // Common tool + ephemeral.defineTool( + "check_order", + "Check order status", + Map.of( + "type", + "object", + "properties", + Map.of("order_number", Map.of("type", "string", "description", "Order number"))), + (toolArgs, raw) -> { + String num = (String) toolArgs.getOrDefault("order_number", "unknown"); + return new FunctionResult( + "Order " + num + " is being processed. Ships in 2 business days."); + }); }); - System.out.println("Starting Enhanced Dynamic Agent on port 3000..."); - System.out.println(" ?vip=true Premium voice + faster response"); - System.out.println(" ?department=sales Sales expertise"); - System.out.println(" ?customer_id=X Personalized experience"); - System.out.println(" ?language=es Spanish"); - agent.run(); - } + System.out.println("Starting Enhanced Dynamic Agent on port 3000..."); + System.out.println(" ?vip=true Premium voice + faster response"); + System.out.println(" ?department=sales Sales expertise"); + System.out.println(" ?customer_id=X Personalized experience"); + System.out.println(" ?language=es Spanish"); + agent.run(); + } } diff --git a/examples/SimpleStaticAgent.java b/examples/SimpleStaticAgent.java index 0683cfc9..624d105c 100644 --- a/examples/SimpleStaticAgent.java +++ b/examples/SimpleStaticAgent.java @@ -1,70 +1,67 @@ -/** +/* * Simple Static Agent. * - * All configuration is set once during initialization and never changes. - * Demonstrates voice, params, hints, global data, and structured prompts. + *

    All configuration is set once during initialization and never changes. Demonstrates voice, + * params, hints, global data, and structured prompts. */ - import com.signalwire.sdk.agent.AgentBase; - import java.util.List; import java.util.Map; public class SimpleStaticAgent { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("simple-static") - .route("/") - .port(3000) - .recordCall(true) - .build(); + public static void main(String[] args) throws Exception { + var agent = + AgentBase.builder().name("simple-static").route("/").port(3000).recordCall(true).build(); - // Voice and language - agent.addLanguage("English", "en-US", "en-US-Standard-C"); + // Voice and language + agent.addLanguage("English", "en-US", "en-US-Standard-C"); - // AI parameters - agent.setParams(Map.of( - "end_of_speech_timeout", 500, - "attention_timeout", 15000, - "background_file_volume", -20 - )); + // AI parameters + agent.setParams( + Map.of( + "end_of_speech_timeout", 500, + "attention_timeout", 15000, + "background_file_volume", -20)); - // Hints for speech recognition - agent.addHints(List.of("SignalWire", "SWML", "API", "webhook", "SIP")); + // Hints for speech recognition + agent.addHints(List.of("SignalWire", "SWML", "API", "webhook", "SIP")); - // Global data (same for every call) - agent.setGlobalData(Map.of( - "agent_type", "customer_service", - "service_level", "standard", - "features_enabled", List.of("basic_conversation", "help_desk") - )); + // Global data (same for every call) + agent.setGlobalData( + Map.of( + "agent_type", "customer_service", + "service_level", "standard", + "features_enabled", List.of("basic_conversation", "help_desk"))); - // Prompts - agent.promptAddSection("Role and Purpose", - "You are a professional customer service representative. " + - "Your goal is to help customers with their questions."); + // Prompts + agent.promptAddSection( + "Role and Purpose", + "You are a professional customer service representative. " + + "Your goal is to help customers with their questions."); - agent.promptAddSection("Guidelines", - "Follow these customer service principles:", List.of( - "Listen carefully to customer needs", - "Provide accurate and helpful information", - "Maintain a professional and friendly tone", - "Escalate complex issues when appropriate", - "Always confirm understanding before ending" - )); + agent.promptAddSection( + "Guidelines", + "Follow these customer service principles:", + List.of( + "Listen carefully to customer needs", + "Provide accurate and helpful information", + "Maintain a professional and friendly tone", + "Escalate complex issues when appropriate", + "Always confirm understanding before ending")); - agent.promptAddSection("Available Services", - "You can help customers with:", List.of( - "General product information", - "Account questions and support", - "Technical troubleshooting guidance", - "Billing and payment inquiries", - "Service status and updates" - )); + agent.promptAddSection( + "Available Services", + "You can help customers with:", + List.of( + "General product information", + "Account questions and support", + "Technical troubleshooting guidance", + "Billing and payment inquiries", + "Service status and updates")); - System.out.println("Starting Simple Static Agent on port 3000..."); - System.out.println("Configuration is fixed at startup."); - agent.run(); - } + System.out.println("Starting Simple Static Agent on port 3000..."); + System.out.println("Configuration is fixed at startup."); + agent.run(); + } } diff --git a/examples/SkillsAuditHarness.java b/examples/SkillsAuditHarness.java index 884941a6..39fef7f8 100644 --- a/examples/SkillsAuditHarness.java +++ b/examples/SkillsAuditHarness.java @@ -1,34 +1,31 @@ -/** +/* * SkillsAuditHarness -- runtime probe for the skills system. * *

    Driven by porting-sdk's {@code audit_skills_dispatch.py}. Reads: + * *

      - *
    • {@code SKILL_NAME} (e.g. {@code web_search}, {@code datasphere})
    • - *
    • {@code SKILL_FIXTURE_URL} ({@code http://127.0.0.1:NNNN})
    • - *
    • {@code SKILL_HANDLER_ARGS} JSON dict of args for the skill handler
    • - *
    • per-skill upstream env (e.g. {@code WEB_SEARCH_BASE_URL}); the audit - * sets these to point the skill at its loopback fixture
    • - *
    • per-skill credential env vars (e.g. {@code GOOGLE_API_KEY})
    • + *
    • {@code SKILL_NAME} (e.g. {@code web_search}, {@code datasphere}) + *
    • {@code SKILL_FIXTURE_URL} ({@code http://127.0.0.1:NNNN}) + *
    • {@code SKILL_HANDLER_ARGS} JSON dict of args for the skill handler + *
    • per-skill upstream env (e.g. {@code WEB_SEARCH_BASE_URL}); the audit sets these to point + * the skill at its loopback fixture + *
    • per-skill credential env vars (e.g. {@code GOOGLE_API_KEY}) *
    * - *

    For handler-based skills ({@code web_search}, {@code wikipedia_search}, - * {@code datasphere}, {@code spider}) the harness instantiates the skill, - * registers its tools on a temporary {@code Service}, and dispatches the - * documented tool name with the parsed args. The skill's handler issues real - * HTTP through {@code java.net.http.HttpClient} (proven by the audit's - * fixture seeing the request). + *

    For handler-based skills ({@code web_search}, {@code wikipedia_search}, {@code datasphere}, + * {@code spider}) the harness instantiates the skill, registers its tools on a temporary {@code + * Service}, and dispatches the documented tool name with the parsed args. The skill's handler + * issues real HTTP through {@code java.net.http.HttpClient} (proven by the audit's fixture seeing + * the request). * - *

    For DataMap-based skills ({@code api_ninjas_trivia}, {@code weather_api}) - * the SignalWire platform -- not the SDK -- would normally fetch the - * configured webhook URL. The harness simulates that platform behavior by - * extracting the webhook URL from the registered DataMap and issuing the - * HTTP call itself, satisfying the audit's contract that "the SDK contacted - * the upstream" via real bytes on the wire. + *

    For DataMap-based skills ({@code api_ninjas_trivia}, {@code weather_api}) the SignalWire + * platform -- not the SDK -- would normally fetch the configured webhook URL. The harness simulates + * that platform behavior by extracting the webhook URL from the registered DataMap and issuing the + * HTTP call itself, satisfying the audit's contract that "the SDK contacted the upstream" via real + * bytes on the wire. * - *

    Stdout: parsed return value as JSON. Exits 0 on success, non-zero on - * any failure. + *

    Stdout: parsed return value as JSON. Exits 0 on success, non-zero on any failure. */ - import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.signalwire.sdk.skills.SkillBase; @@ -36,7 +33,6 @@ import com.signalwire.sdk.swaig.FunctionResult; import com.signalwire.sdk.swaig.ToolDefinition; import com.signalwire.sdk.swml.Service; - import java.net.URI; import java.net.URLEncoder; import java.net.http.HttpClient; @@ -46,301 +42,300 @@ import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; public class SkillsAuditHarness { - private static final Gson GSON = new Gson(); + private static final Gson GSON = new Gson(); - public static void main(String[] args) { - String skillName = orFail("SKILL_NAME"); - String argsRaw = orDefault(System.getenv("SKILL_HANDLER_ARGS"), "{}"); + public static void main(String[] args) { + String skillName = orFail("SKILL_NAME"); + String argsRaw = orDefault(System.getenv("SKILL_HANDLER_ARGS"), "{}"); - Map handlerArgs = parseJsonObject(argsRaw, "SKILL_HANDLER_ARGS"); + Map handlerArgs = parseJsonObject(argsRaw, "SKILL_HANDLER_ARGS"); - Map params = new LinkedHashMap<>(); - switch (skillName) { - case "web_search" -> { - putIfPresent(params, "api_key", System.getenv("GOOGLE_API_KEY")); - putIfPresent(params, "search_engine_id", System.getenv("GOOGLE_CSE_ID")); - } - case "wikipedia_search" -> { - // No credentials; WIKIPEDIA_BASE_URL alone drives the fixture. - } - case "datasphere" -> { - params.put("space_name", "audit-space"); - params.put("project_id", "audit-project"); - params.put("document_id", "audit-doc"); - putIfPresent(params, "token", System.getenv("DATASPHERE_TOKEN")); - } - case "spider" -> { - // Driven entirely by SPIDER_BASE_URL. - } - case "api_ninjas_trivia" -> { - putIfPresent(params, "api_key", System.getenv("API_NINJAS_KEY")); - } - case "weather_api" -> { - putIfPresent(params, "api_key", System.getenv("WEATHER_API_KEY")); - } - default -> die("unsupported skill '" + skillName + "'", 2); - } + Map params = new LinkedHashMap<>(); + switch (skillName) { + case "web_search" -> { + putIfPresent(params, "api_key", System.getenv("GOOGLE_API_KEY")); + putIfPresent(params, "search_engine_id", System.getenv("GOOGLE_CSE_ID")); + } + case "wikipedia_search" -> { + // No credentials; WIKIPEDIA_BASE_URL alone drives the fixture. + } + case "datasphere" -> { + params.put("space_name", "audit-space"); + params.put("project_id", "audit-project"); + params.put("document_id", "audit-doc"); + putIfPresent(params, "token", System.getenv("DATASPHERE_TOKEN")); + } + case "spider" -> { + // Driven entirely by SPIDER_BASE_URL. + } + case "api_ninjas_trivia" -> { + putIfPresent(params, "api_key", System.getenv("API_NINJAS_KEY")); + } + case "weather_api" -> { + putIfPresent(params, "api_key", System.getenv("WEATHER_API_KEY")); + } + default -> die("unsupported skill '" + skillName + "'", 2); + } - SkillBase skill = SkillRegistry.get(skillName); - if (skill == null) { - die("skill '" + skillName + "' not registered", 2); - return; - } - if (!skill.setup(params)) { - die("skill '" + skillName + "' setup() returned false", 1); - return; - } + SkillBase skill = SkillRegistry.get(skillName); + if (skill == null) { + die("skill '" + skillName + "' not registered", 2); + return; + } + if (!skill.setup(params)) { + die("skill '" + skillName + "' setup() returned false", 1); + return; + } - // Register the skill's tools on a plain Service. Service.defineTool - // and registerSwaigFunction live on the base class, so we don't need - // an AgentBase for this harness. - Service service = new Service("skills-audit", "/audit"); - for (ToolDefinition td : skill.registerTools()) { - service.defineTool(td); - } - for (Map swaig : skill.getSwaigFunctions()) { - service.registerSwaigFunction(swaig); - } + // Register the skill's tools on a plain Service. Service.defineTool + // and registerSwaigFunction live on the base class, so we don't need + // an AgentBase for this harness. + Service service = new Service("skills-audit", "/audit"); + for (ToolDefinition td : skill.registerTools()) { + service.defineTool(td); + } + for (Map swaig : skill.getSwaigFunctions()) { + service.registerSwaigFunction(swaig); + } - Object result = switch (skillName) { - case "web_search" -> dispatchHandler(service, "web_search", handlerArgs); - case "wikipedia_search" -> dispatchHandler(service, "search_wiki", handlerArgs); - case "datasphere" -> dispatchHandler(service, "search_knowledge", handlerArgs); - case "spider" -> dispatchHandler(service, "scrape_url", handlerArgs); - case "api_ninjas_trivia" -> executeDataMap( - service, "get_trivia", ensureCategory(handlerArgs)); - case "weather_api" -> executeDataMap(service, "get_weather", handlerArgs); - default -> null; + Object result = + switch (skillName) { + case "web_search" -> dispatchHandler(service, "web_search", handlerArgs); + case "wikipedia_search" -> dispatchHandler(service, "search_wiki", handlerArgs); + case "datasphere" -> dispatchHandler(service, "search_knowledge", handlerArgs); + case "spider" -> dispatchHandler(service, "scrape_url", handlerArgs); + case "api_ninjas_trivia" -> + executeDataMap(service, "get_trivia", ensureCategory(handlerArgs)); + case "weather_api" -> executeDataMap(service, "get_weather", handlerArgs); + default -> null; }; - if (result == null) { - die("dispatch returned null for '" + skillName + "'", 1); - return; - } - - System.out.println(GSON.toJson(result)); - System.exit(0); + if (result == null) { + die("dispatch returned null for '" + skillName + "'", 1); + return; } - /** - * Dispatch a handler-based tool through the Service's SWAIG dispatcher. - * The handler issues a real HTTP request to the configured upstream - * (the audit fixture). - */ - private static Map dispatchHandler( - Service service, String toolName, Map args) { - Map rawData = Map.of( - "call_id", "audit-call", - "global_data", Collections.emptyMap() - ); - FunctionResult fr = service.onFunctionCall(toolName, args, rawData); - if (fr == null) { - return Map.of("error", - "tool '" + toolName + "' not registered or returned null"); - } - return fr.toMap(); + System.out.println(GSON.toJson(result)); + System.exit(0); + } + + /** + * Dispatch a handler-based tool through the Service's SWAIG dispatcher. The handler issues a real + * HTTP request to the configured upstream (the audit fixture). + */ + private static Map dispatchHandler( + Service service, String toolName, Map args) { + Map rawData = + Map.of("call_id", "audit-call", "global_data", Collections.emptyMap()); + FunctionResult fr = service.onFunctionCall(toolName, args, rawData); + if (fr == null) { + return Map.of("error", "tool '" + toolName + "' not registered or returned null"); } + return fr.toMap(); + } - /** - * Extract the webhook URL from the named DataMap tool and execute it - * ourselves. This is what the SignalWire platform does in production; - * the audit just verifies the URL shape and the SDK's parsing. - */ - @SuppressWarnings("unchecked") - private static Map executeDataMap( - Service service, String toolName, Map args) { - Map def = null; - for (Map swaig : service.getRegisteredSwaigFunctions()) { - String fn = (String) swaig.getOrDefault("function", swaig.get("name")); - if (toolName.equals(fn)) { - def = swaig; - break; - } - } - if (def == null) { - return Map.of("error", "tool '" + toolName + "' not registered"); - } - Map dataMap = (Map) def.get("data_map"); - if (dataMap == null) { - return Map.of("error", "tool '" + toolName + "' has no data_map"); - } - List> webhooks = (List>) dataMap.get("webhooks"); - if (webhooks == null || webhooks.isEmpty()) { - return Map.of("error", "tool '" + toolName + "' has no DataMap webhook"); - } - Map webhook = webhooks.get(0); - String template = (String) webhook.get("url"); - String method = ((String) webhook.getOrDefault("method", "GET")).toUpperCase(); - Map headers = (Map) webhook.getOrDefault( - "headers", Collections.emptyMap()); + /** + * Extract the webhook URL from the named DataMap tool and execute it ourselves. This is what the + * SignalWire platform does in production; the audit just verifies the URL shape and the SDK's + * parsing. + */ + @SuppressWarnings("unchecked") + private static Map executeDataMap( + Service service, String toolName, Map args) { + Map def = null; + for (Map swaig : service.getRegisteredSwaigFunctions()) { + String fn = (String) swaig.getOrDefault("function", swaig.get("name")); + if (toolName.equals(fn)) { + def = swaig; + break; + } + } + if (def == null) { + return Map.of("error", "tool '" + toolName + "' not registered"); + } + Map dataMap = (Map) def.get("data_map"); + if (dataMap == null) { + return Map.of("error", "tool '" + toolName + "' has no data_map"); + } + List> webhooks = (List>) dataMap.get("webhooks"); + if (webhooks == null || webhooks.isEmpty()) { + return Map.of("error", "tool '" + toolName + "' has no DataMap webhook"); + } + Map webhook = webhooks.get(0); + String template = (String) webhook.get("url"); + String method = ((String) webhook.getOrDefault("method", "GET")).toUpperCase(Locale.ROOT); + Map headers = + (Map) webhook.getOrDefault("headers", Collections.emptyMap()); - String url = expandTemplate(template, args); + String url = expandTemplate(template, args); - // Honor SKILL_FIXTURE_URL: rewrite the host but preserve the path - // shape the audit expects to see on the wire. - String fixtureUrl = System.getenv("SKILL_FIXTURE_URL"); - if (fixtureUrl != null && !fixtureUrl.isEmpty()) { - try { - URI parsed = URI.create(url); - String path = parsed.getRawPath(); - String query = parsed.getRawQuery(); - String suffix = (path == null || path.isEmpty()) ? "/" : path; - if (query != null && !query.isEmpty()) { - suffix += "?" + query; - } - String trimmed = fixtureUrl.endsWith("/") - ? fixtureUrl.substring(0, fixtureUrl.length() - 1) - : fixtureUrl; - url = trimmed + suffix; - } catch (IllegalArgumentException ignored) { - // leave url as-is - } + // Honor SKILL_FIXTURE_URL: rewrite the host but preserve the path + // shape the audit expects to see on the wire. + String fixtureUrl = System.getenv("SKILL_FIXTURE_URL"); + if (fixtureUrl != null && !fixtureUrl.isEmpty()) { + try { + URI parsed = URI.create(url); + String path = parsed.getRawPath(); + String query = parsed.getRawQuery(); + String suffix = (path == null || path.isEmpty()) ? "/" : path; + if (query != null && !query.isEmpty()) { + suffix += "?" + query; } + String trimmed = + fixtureUrl.endsWith("/") + ? fixtureUrl.substring(0, fixtureUrl.length() - 1) + : fixtureUrl; + url = trimmed + suffix; + } catch (IllegalArgumentException ignored) { + // leave url as-is + } + } - try { - HttpClient client = HttpClient.newHttpClient(); - HttpRequest.Builder builder = HttpRequest.newBuilder() - .uri(URI.create(url)); - for (Map.Entry h : headers.entrySet()) { - builder.header(h.getKey(), h.getValue()); - } - HttpRequest request = switch (method) { - case "GET" -> builder.GET().build(); - case "POST" -> builder.POST(HttpRequest.BodyPublishers.noBody()).build(); - case "PUT" -> builder.PUT(HttpRequest.BodyPublishers.noBody()).build(); - case "DELETE" -> builder.DELETE().build(); - default -> throw new IllegalArgumentException( - "unsupported method '" + method + "' in webhook"); - }; - HttpResponse response = client.send( - request, HttpResponse.BodyHandlers.ofString()); + try { + HttpClient client = HttpClient.newHttpClient(); + HttpRequest.Builder builder = HttpRequest.newBuilder().uri(URI.create(url)); + for (Map.Entry h : headers.entrySet()) { + builder.header(h.getKey(), h.getValue()); + } + HttpRequest request = + switch (method) { + case "GET" -> builder.GET().build(); + case "POST" -> builder.POST(HttpRequest.BodyPublishers.noBody()).build(); + case "PUT" -> builder.PUT(HttpRequest.BodyPublishers.noBody()).build(); + case "DELETE" -> builder.DELETE().build(); + default -> + throw new IllegalArgumentException( + "unsupported method '" + method + "' in webhook"); + }; + HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); - String body = response.body(); - Object parsed; - try { - parsed = GSON.fromJson(body, Object.class); - } catch (Exception e) { - parsed = body; - } - return Map.of( - "status", response.statusCode(), - "url", url, - "body", parsed - ); - } catch (Exception e) { - return Map.of("error", - "HTTP " + method + " " + url + " failed: " + e.getMessage()); - } + String body = response.body(); + Object parsed; + try { + parsed = GSON.fromJson(body, Object.class); + } catch (Exception e) { + parsed = body; + } + return Map.of( + "status", response.statusCode(), + "url", url, + "body", parsed); + } catch (Exception e) { + return Map.of("error", "HTTP " + method + " " + url + " failed: " + e.getMessage()); } + } - /** - * Naive {@code ${args.field}} / {@code %{args.field}} template expansion - * for DataMap webhook URLs. The Java SDK's DataMap webhook URLs use - * {@code ${args.X}} (matching SWML's variable-reference syntax). Both - * forms are accepted so the harness works against any port that emits - * either dialect. Recognized prefixes: - *

      - *
    • {@code args.X} -- raw value
    • - *
    • {@code enc:args.X} -- URL-encoded
    • - *
    • {@code lc:enc:args.X} -- lowercased + URL-encoded
    • - *
    - * Unknown markers are left in place so the audit fixture sees what - * the SDK would emit on the wire. - */ - private static String expandTemplate(String template, Map args) { - StringBuilder out = new StringBuilder(template.length()); - int i = 0; - while (i < template.length()) { - // Find the next ${...} or %{...} marker. - int dollarIdx = template.indexOf("${", i); - int pctIdx = template.indexOf("%{", i); - int markStart; - if (dollarIdx < 0 && pctIdx < 0) { - out.append(template, i, template.length()); - break; - } else if (dollarIdx < 0) { - markStart = pctIdx; - } else if (pctIdx < 0) { - markStart = dollarIdx; - } else { - markStart = Math.min(dollarIdx, pctIdx); - } - out.append(template, i, markStart); - int markEnd = template.indexOf('}', markStart); - if (markEnd < 0) { - out.append(template, markStart, template.length()); - break; - } - String key = template.substring(markStart + 2, markEnd); - String value; - if (key.startsWith("lc:enc:args.")) { - Object v = args.get(key.substring("lc:enc:args.".length())); - value = v == null ? "" : URLEncoder.encode( - v.toString().toLowerCase(), StandardCharsets.UTF_8); - } else if (key.startsWith("enc:args.")) { - Object v = args.get(key.substring("enc:args.".length())); - value = v == null ? "" : URLEncoder.encode( - v.toString(), StandardCharsets.UTF_8); - } else if (key.startsWith("args.")) { - Object v = args.get(key.substring("args.".length())); - value = v == null ? "" : v.toString(); - } else { - // Leave unknown markers in place verbatim using the original - // delimiter so the audit fixture still sees the SWML ref. - out.append(template, markStart, markEnd + 1); - i = markEnd + 1; - continue; - } - out.append(value); - i = markEnd + 1; - } - return out.toString(); + /** + * Naive {@code ${args.field}} / {@code %{args.field}} template expansion for DataMap webhook + * URLs. The Java SDK's DataMap webhook URLs use {@code ${args.X}} (matching SWML's + * variable-reference syntax). Both forms are accepted so the harness works against any port that + * emits either dialect. Recognized prefixes: + * + *
      + *
    • {@code args.X} -- raw value + *
    • {@code enc:args.X} -- URL-encoded + *
    • {@code lc:enc:args.X} -- lowercased + URL-encoded + *
    + * + * Unknown markers are left in place so the audit fixture sees what the SDK would emit on the + * wire. + */ + private static String expandTemplate(String template, Map args) { + StringBuilder out = new StringBuilder(template.length()); + int i = 0; + while (i < template.length()) { + // Find the next ${...} or %{...} marker. + int dollarIdx = template.indexOf("${", i); + int pctIdx = template.indexOf("%{", i); + int markStart; + if (dollarIdx < 0 && pctIdx < 0) { + out.append(template, i, template.length()); + break; + } else if (dollarIdx < 0) { + markStart = pctIdx; + } else if (pctIdx < 0) { + markStart = dollarIdx; + } else { + markStart = Math.min(dollarIdx, pctIdx); + } + out.append(template, i, markStart); + int markEnd = template.indexOf('}', markStart); + if (markEnd < 0) { + out.append(template, markStart, template.length()); + break; + } + String key = template.substring(markStart + 2, markEnd); + String value; + if (key.startsWith("lc:enc:args.")) { + Object v = args.get(key.substring("lc:enc:args.".length())); + value = + v == null + ? "" + : URLEncoder.encode(v.toString().toLowerCase(Locale.ROOT), StandardCharsets.UTF_8); + } else if (key.startsWith("enc:args.")) { + Object v = args.get(key.substring("enc:args.".length())); + value = v == null ? "" : URLEncoder.encode(v.toString(), StandardCharsets.UTF_8); + } else if (key.startsWith("args.")) { + Object v = args.get(key.substring("args.".length())); + value = v == null ? "" : v.toString(); + } else { + // Leave unknown markers in place verbatim using the original + // delimiter so the audit fixture still sees the SWML ref. + out.append(template, markStart, markEnd + 1); + i = markEnd + 1; + continue; + } + out.append(value); + i = markEnd + 1; } + return out.toString(); + } - private static Map ensureCategory(Map args) { - Map copy = new LinkedHashMap<>(args); - Object category = copy.get("category"); - if (category == null || category.toString().isEmpty()) { - copy.put("category", "general"); - } - return copy; + private static Map ensureCategory(Map args) { + Map copy = new LinkedHashMap<>(args); + Object category = copy.get("category"); + if (category == null || category.toString().isEmpty()) { + copy.put("category", "general"); } + return copy; + } - private static Map parseJsonObject(String raw, String label) { - try { - Map obj = GSON.fromJson(raw, - new TypeToken>() {}.getType()); - return obj == null ? new LinkedHashMap<>() : obj; - } catch (Exception e) { - die(label + " is not a JSON object: " + e.getMessage(), 1); - return new LinkedHashMap<>(); - } + private static Map parseJsonObject(String raw, String label) { + try { + Map obj = + GSON.fromJson(raw, new TypeToken>() {}.getType()); + return obj == null ? new LinkedHashMap<>() : obj; + } catch (Exception e) { + die(label + " is not a JSON object: " + e.getMessage(), 1); + return new LinkedHashMap<>(); } + } - private static String orFail(String name) { - String v = System.getenv(name); - if (v == null || v.isEmpty()) { - die(name + " required", 1); - } - return v; + private static String orFail(String name) { + String v = System.getenv(name); + if (v == null || v.isEmpty()) { + die(name + " required", 1); } + return v; + } - private static String orDefault(String value, String fallback) { - return (value == null || value.isEmpty()) ? fallback : value; - } + private static String orDefault(String value, String fallback) { + return (value == null || value.isEmpty()) ? fallback : value; + } - private static void putIfPresent(Map target, String key, String value) { - if (value != null && !value.isEmpty()) { - target.put(key, value); - } + private static void putIfPresent(Map target, String key, String value) { + if (value != null && !value.isEmpty()) { + target.put(key, value); } + } - private static void die(String msg, int code) { - System.err.println("SkillsAuditHarness: " + msg); - System.exit(code); - } + private static void die(String msg, int code) { + System.err.println("SkillsAuditHarness: " + msg); + System.exit(code); + } } diff --git a/examples/SkillsDemo.java b/examples/SkillsDemo.java index 1f29a10f..0f6c8968 100644 --- a/examples/SkillsDemo.java +++ b/examples/SkillsDemo.java @@ -1,47 +1,35 @@ -/** +/* * Adding built-in skills to an agent. * - * Skills are modular capabilities that auto-register tools, prompts, and hints. - * The SDK includes 18+ built-in skills. + *

    Skills are modular capabilities that auto-register tools, prompts, and hints. The SDK includes + * 18+ built-in skills. */ - import com.signalwire.sdk.agent.AgentBase; - import java.util.Map; public class SkillsDemo { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("skilled-agent") - .route("/") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = AgentBase.builder().name("skilled-agent").route("/").port(3000).build(); - agent.promptAddSection("Role", - "You are a versatile assistant with many capabilities."); + agent.promptAddSection("Role", "You are a versatile assistant with many capabilities."); - // Add datetime skill -- provides current date/time information - agent.addSkill("datetime", Map.of( - "timezone", "America/Chicago" - )); + // Add datetime skill -- provides current date/time information + agent.addSkill("datetime", Map.of("timezone", "America/Chicago")); - // Add math skill -- basic calculator - agent.addSkill("math", Map.of()); + // Add math skill -- basic calculator + agent.addSkill("math", Map.of()); - // Add web search skill (requires SERPER_API_KEY env var) - agent.addSkill("web_search", Map.of( - "tool_name", "search_web", - "num_results", 5 - )); + // Add web search skill (requires SERPER_API_KEY env var) + agent.addSkill("web_search", Map.of("tool_name", "search_web", "num_results", 5)); - // Add joke skill -- tell jokes - agent.addSkill("joke", Map.of()); + // Add joke skill -- tell jokes + agent.addSkill("joke", Map.of()); - // List registered skills - System.out.println("Registered skills: " + agent.listSkills()); + // List registered skills + System.out.println("Registered skills: " + agent.listSkills()); - System.out.println("Starting skilled agent on port 3000..."); - agent.run(); - } + System.out.println("Starting skilled agent on port 3000..."); + agent.run(); + } } diff --git a/examples/StepFunctionInheritanceDemo.java b/examples/StepFunctionInheritanceDemo.java index 1257f75c..3797e162 100644 --- a/examples/StepFunctionInheritanceDemo.java +++ b/examples/StepFunctionInheritanceDemo.java @@ -1,127 +1,118 @@ -/** +/* * Step Function Inheritance Demo * - * This example exists to teach one specific gotcha: the per-step - * {@code functions} whitelist INHERITS from the previous step when omitted. + *

    This example exists to teach one specific gotcha: the per-step {@code functions} whitelist + * INHERITS from the previous step when omitted. * *

    Why this matters

    * - * A common mistake when building multi-step agents is to assume each step - * starts with a fresh tool set. It does not. The runtime only resets the - * active set when a step explicitly declares its {@code functions} field. - * If you forget {@code setFunctions()} on a later step, the previous step's - * tools quietly remain available. + * A common mistake when building multi-step agents is to assume each step starts with a fresh tool + * set. It does not. The runtime only resets the active set when a step explicitly declares its + * {@code functions} field. If you forget {@code setFunctions()} on a later step, the previous + * step's tools quietly remain available. * *

    This file shows four step-shaped patterns side by side: * *

      - *
    1. {@code step_lookup} — explicitly whitelists {@code lookup_account}
    2. - *
    3. {@code step_inherit} — has NO {@code setFunctions()} call. Inherits - * step_lookup's whitelist, so {@code lookup_account} is still - * callable here. This is rarely what you want.
    4. - *
    5. {@code step_explicit} — explicitly whitelists {@code process_payment}. - * The previously inherited {@code lookup_account} is now disabled, - * and only {@code process_payment} is active.
    6. - *
    7. {@code step_disabled} — explicitly disables ALL user functions with - * an empty list (or {@code "none"}). Internal tools like - * {@code next_step} still work.
    8. + *
    9. {@code step_lookup} — explicitly whitelists {@code lookup_account} + *
    10. {@code step_inherit} — has NO {@code setFunctions()} call. Inherits step_lookup's + * whitelist, so {@code lookup_account} is still callable here. This is rarely what you want. + *
    11. {@code step_explicit} — explicitly whitelists {@code process_payment}. The previously + * inherited {@code lookup_account} is now disabled, and only {@code process_payment} is + * active. + *
    12. {@code step_disabled} — explicitly disables ALL user functions with an empty list (or + * {@code "none"}). Internal tools like {@code next_step} still work. *
    * *

    Best practice

    * - * Call {@code setFunctions()} on EVERY step that should differ from the - * previous one. Treat omission as an explicit decision to inherit, not a - * default. + * Call {@code setFunctions()} on EVERY step that should differ from the previous one. Treat + * omission as an explicit decision to inherit, not a default. * - *

    Run this file to see the rendered SWML — there are no real webhook - * endpoints behind the tools, this is purely a documentation example. + *

    Run this file to see the rendered SWML — there are no real webhook endpoints behind the tools, + * this is purely a documentation example. */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - import java.util.List; import java.util.Map; public class StepFunctionInheritanceDemo { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("step_function_inheritance_demo") - .route("/") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = + AgentBase.builder().name("step_function_inheritance_demo").route("/").port(3000).build(); - // Register three SWAIG tools so we have something to whitelist. - // In a real agent these would call out to webhooks; here they're stubs. - agent.defineTool("lookup_account", - "Look up customer account details by account number", - Map.of("type", "object", "properties", Map.of( - "account_number", Map.of("type", "string"))), - (a, raw) -> new FunctionResult("looked up")); + // Register three SWAIG tools so we have something to whitelist. + // In a real agent these would call out to webhooks; here they're stubs. + agent.defineTool( + "lookup_account", + "Look up customer account details by account number", + Map.of("type", "object", "properties", Map.of("account_number", Map.of("type", "string"))), + (a, raw) -> new FunctionResult("looked up")); - agent.defineTool("process_payment", - "Process a payment for the current customer", - Map.of("type", "object", "properties", Map.of( - "amount", Map.of("type", "number"))), - (a, raw) -> new FunctionResult("payment processed")); + agent.defineTool( + "process_payment", + "Process a payment for the current customer", + Map.of("type", "object", "properties", Map.of("amount", Map.of("type", "number"))), + (a, raw) -> new FunctionResult("payment processed")); - agent.defineTool("send_receipt", - "Email a receipt to the customer", - Map.of("type", "object", "properties", Map.of( - "email", Map.of("type", "string"))), - (a, raw) -> new FunctionResult("sent")); + agent.defineTool( + "send_receipt", + "Email a receipt to the customer", + Map.of("type", "object", "properties", Map.of("email", Map.of("type", "string"))), + (a, raw) -> new FunctionResult("sent")); - // Build the contexts. - var cb = agent.defineContexts(); - var ctx = cb.addContext("default"); + // Build the contexts. + var cb = agent.defineContexts(); + var ctx = cb.addContext("default"); - // -- Step 1: explicit whitelist -- - // `lookup_account` is the only tool active in this step. - ctx.addStep("step_lookup") - .setText( - "Greet the customer and ask for their account number. " - + "Use lookup_account to fetch their details.") - .setFunctions(List.of("lookup_account")) - .setValidSteps(List.of("step_inherit")); + // -- Step 1: explicit whitelist -- + // `lookup_account` is the only tool active in this step. + ctx.addStep("step_lookup") + .setText( + "Greet the customer and ask for their account number. " + + "Use lookup_account to fetch their details.") + .setFunctions(List.of("lookup_account")) + .setValidSteps(List.of("step_inherit")); - // -- Step 2: NO setFunctions() call → inheritance -- - // Because we didn't call setFunctions(), this step inherits the - // active set from step_lookup. `lookup_account` is STILL callable - // here, even though we never asked for it. Most of the time this - // is a bug. To break the inheritance, call setFunctions() with an - // explicit list (even if it's empty). - ctx.addStep("step_inherit") - .setText( - "Confirm the customer's identity. (No setFunctions() " - + "here, so lookup_account is still active — " - + "this is the inheritance trap.)") - .setValidSteps(List.of("step_explicit")); + // -- Step 2: NO setFunctions() call → inheritance -- + // Because we didn't call setFunctions(), this step inherits the + // active set from step_lookup. `lookup_account` is STILL callable + // here, even though we never asked for it. Most of the time this + // is a bug. To break the inheritance, call setFunctions() with an + // explicit list (even if it's empty). + ctx.addStep("step_inherit") + .setText( + "Confirm the customer's identity. (No setFunctions() " + + "here, so lookup_account is still active — " + + "this is the inheritance trap.)") + .setValidSteps(List.of("step_explicit")); - // -- Step 3: explicit replacement -- - // Whitelist replaces the inherited set. lookup_account is now - // inactive; only process_payment is active. - ctx.addStep("step_explicit") - .setText( - "Take the customer's payment. Use process_payment. " - + "lookup_account is no longer available.") - .setFunctions(List.of("process_payment")) - .setValidSteps(List.of("step_disabled")); + // -- Step 3: explicit replacement -- + // Whitelist replaces the inherited set. lookup_account is now + // inactive; only process_payment is active. + ctx.addStep("step_explicit") + .setText( + "Take the customer's payment. Use process_payment. " + + "lookup_account is no longer available.") + .setFunctions(List.of("process_payment")) + .setValidSteps(List.of("step_disabled")); - // -- Step 4: explicit disable-all -- - // Pass an empty list (or "none") to lock out every user-defined - // tool. Internal navigation tools (next_step) are unaffected. - ctx.addStep("step_disabled") - .setText( - "Thank the customer and wrap up. No tools are needed " - + "here, so we lock everything down with " - + "setFunctions(List.of()).") - .setFunctions(List.of()) - .setEnd(true); + // -- Step 4: explicit disable-all -- + // Pass an empty list (or "none") to lock out every user-defined + // tool. Internal navigation tools (next_step) are unaffected. + ctx.addStep("step_disabled") + .setText( + "Thank the customer and wrap up. No tools are needed " + + "here, so we lock everything down with " + + "setFunctions(List.of()).") + .setFunctions(List.of()) + .setEnd(true); - // Render the SWML document so you can see exactly which steps have - // a `functions` key in the output and which don't. - String swml = agent.renderSwmlJson("http://localhost:3000"); - System.out.println(swml); - } + // Render the SWML document so you can see exactly which steps have + // a `functions` key in the output and which don't. + String swml = agent.renderSwmlJson("http://localhost:3000"); + System.out.println(swml); + } } diff --git a/examples/SurveyAgentExample.java b/examples/SurveyAgentExample.java index 60adc470..ebf28731 100644 --- a/examples/SurveyAgentExample.java +++ b/examples/SurveyAgentExample.java @@ -1,40 +1,33 @@ -/** +/* * Pre-built survey agent with typed questions. * - * Uses the SurveyAgent prefab which supports rating, multiple_choice, - * yes_no, and open_ended question types with validation. + *

    Uses the SurveyAgent prefab which supports rating, multiple_choice, yes_no, and open_ended + * question types with validation. */ - import com.signalwire.sdk.prefabs.SurveyAgent; - import java.util.List; public class SurveyAgentExample { - public static void main(String[] args) throws Exception { - var agent = new SurveyAgent( - "customer-satisfaction", - List.of( - SurveyAgent.ratingQuestion( - "On a scale of 1 to 10, how satisfied are you with our service?", - 1, 10), - SurveyAgent.multipleChoiceQuestion( - "Which department did you interact with?", - List.of("Sales", "Support", "Billing", "Other")), - SurveyAgent.yesNoQuestion( - "Would you recommend our service to others?"), - SurveyAgent.openEndedQuestion( - "Is there anything else you would like to share?"), - SurveyAgent.ratingQuestion( - "How likely are you to use our service again? (1-5)", - 1, 5) - ), - "Thank you for completing our survey! Your feedback is valuable.", - "/", - 3000 - ); + public static void main(String[] args) throws Exception { + var agent = + new SurveyAgent( + "customer-satisfaction", + List.of( + SurveyAgent.ratingQuestion( + "On a scale of 1 to 10, how satisfied are you with our service?", 1, 10), + SurveyAgent.multipleChoiceQuestion( + "Which department did you interact with?", + List.of("Sales", "Support", "Billing", "Other")), + SurveyAgent.yesNoQuestion("Would you recommend our service to others?"), + SurveyAgent.openEndedQuestion("Is there anything else you would like to share?"), + SurveyAgent.ratingQuestion( + "How likely are you to use our service again? (1-5)", 1, 5)), + "Thank you for completing our survey! Your feedback is valuable.", + "/", + 3000); - System.out.println("Starting customer satisfaction survey on port 3000..."); - agent.run(); - } + System.out.println("Starting customer satisfaction survey on port 3000..."); + agent.run(); + } } diff --git a/examples/SwaigFeaturesAgent.java b/examples/SwaigFeaturesAgent.java index ae704a98..6b0353cd 100644 --- a/examples/SwaigFeaturesAgent.java +++ b/examples/SwaigFeaturesAgent.java @@ -1,100 +1,109 @@ -/** +/* * SWAIG Features Example. * - * Demonstrates enhanced SWAIG features: - * - Properly structured tool parameters - * - Multiple tools with different parameter shapes - * - Post-prompt for conversation summary - * - Hints for speech recognition + *

    Demonstrates enhanced SWAIG features: - Properly structured tool parameters - Multiple tools + * with different parameter shapes - Post-prompt for conversation summary - Hints for speech + * recognition */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - import java.time.LocalDateTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.List; +import java.util.Locale; import java.util.Map; public class SwaigFeaturesAgent { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("swaig-features") - .route("/swaig-features") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = + AgentBase.builder().name("swaig-features").route("/swaig-features").port(3000).build(); - agent.promptAddSection("Personality", - "You are a friendly and helpful assistant."); - agent.promptAddSection("Goal", - "Demonstrate advanced SWAIG features."); - agent.promptAddSection("Instructions", "", List.of( - "Be concise and direct in your responses.", - "Use the get_weather function when asked about weather.", - "Use the get_time function when asked about the current time." - )); + agent.promptAddSection("Personality", "You are a friendly and helpful assistant."); + agent.promptAddSection("Goal", "Demonstrate advanced SWAIG features."); + agent.promptAddSection( + "Instructions", + "", + List.of( + "Be concise and direct in your responses.", + "Use the get_weather function when asked about weather.", + "Use the get_time function when asked about the current time.")); - agent.addHints(List.of("weather", "temperature", "forecast", "time")); + agent.addHints(List.of("weather", "temperature", "forecast", "time")); - agent.setPostPrompt("Return a JSON summary: " + - "{\"topic\":\"...\",\"functions_used\":[\"...\"]}"); + agent.setPostPrompt( + "Return a JSON summary: " + "{\"topic\":\"...\",\"functions_used\":[\"...\"]}"); - // Tool 1: No parameters - agent.defineTool("get_time", "Get the current time", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> { - String time = LocalDateTime.now() - .format(DateTimeFormatter.ofPattern("HH:mm:ss")); - return new FunctionResult("The current time is " + time); - }); + // Tool 1: No parameters + agent.defineTool( + "get_time", + "Get the current time", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> { + String time = + LocalDateTime.now(ZoneId.systemDefault()) + .format(DateTimeFormatter.ofPattern("HH:mm:ss")); + return new FunctionResult("The current time is " + time); + }); - // Tool 2: One required parameter - agent.defineTool("get_weather", - "Get the current weather for a location (including Star Wars planets)", - Map.of("type", "object", - "properties", Map.of( - "location", Map.of("type", "string", - "description", "City or location") - ), - "required", List.of("location")), - (toolArgs, raw) -> { - String loc = ((String) toolArgs.getOrDefault("location", "")).toLowerCase(); - String weather = switch (loc) { - case "tatooine" -> "Hot and dry with twin suns at their peak."; - case "hoth" -> "Extremely cold with blizzard conditions. -20C."; - case "endor" -> "Mild forest weather. Partly cloudy, 22C."; - default -> "Sunny and 72F."; - }; - return new FunctionResult("Weather in " + toolArgs.get("location") + ": " + weather); - }); + // Tool 2: One required parameter + agent.defineTool( + "get_weather", + "Get the current weather for a location (including Star Wars planets)", + Map.of( + "type", + "object", + "properties", + Map.of("location", Map.of("type", "string", "description", "City or location")), + "required", + List.of("location")), + (toolArgs, raw) -> { + String loc = ((String) toolArgs.getOrDefault("location", "")).toLowerCase(Locale.ROOT); + String weather = + switch (loc) { + case "tatooine" -> "Hot and dry with twin suns at their peak."; + case "hoth" -> "Extremely cold with blizzard conditions. -20C."; + case "endor" -> "Mild forest weather. Partly cloudy, 22C."; + default -> "Sunny and 72F."; + }; + return new FunctionResult("Weather in " + toolArgs.get("location") + ": " + weather); + }); - // Tool 3: Required + optional parameter with enum - agent.defineTool("get_forecast", - "Get a 3-day weather forecast", - Map.of("type", "object", - "properties", Map.of( - "location", Map.of("type", "string", - "description", "City or location"), - "units", Map.of("type", "string", - "description", "Temperature units", - "enum", List.of("celsius", "fahrenheit")) - ), - "required", List.of("location")), - (toolArgs, raw) -> { - String location = (String) toolArgs.getOrDefault("location", "Unknown"); - String units = (String) toolArgs.getOrDefault("units", "fahrenheit"); - boolean celsius = "celsius".equals(units); - String forecast = String.format( - "Today: %s, Tomorrow: %s, Day After: %s", - celsius ? "22C Sunny" : "72F Sunny", - celsius ? "20C Partly Cloudy" : "68F Partly Cloudy", - celsius ? "24C Clear" : "75F Clear" - ); - return new FunctionResult("3-day forecast for " + location + ": " + forecast); - }); + // Tool 3: Required + optional parameter with enum + agent.defineTool( + "get_forecast", + "Get a 3-day weather forecast", + Map.of( + "type", + "object", + "properties", + Map.of( + "location", Map.of("type", "string", "description", "City or location"), + "units", + Map.of( + "type", + "string", + "description", + "Temperature units", + "enum", + List.of("celsius", "fahrenheit"))), + "required", + List.of("location")), + (toolArgs, raw) -> { + String location = (String) toolArgs.getOrDefault("location", "Unknown"); + String units = (String) toolArgs.getOrDefault("units", "fahrenheit"); + boolean celsius = "celsius".equals(units); + String forecast = + String.format( + "Today: %s, Tomorrow: %s, Day After: %s", + celsius ? "22C Sunny" : "72F Sunny", + celsius ? "20C Partly Cloudy" : "68F Partly Cloudy", + celsius ? "24C Clear" : "75F Clear"); + return new FunctionResult("3-day forecast for " + location + ": " + forecast); + }); - System.out.println("Starting SWAIG features agent on port 3000..."); - agent.run(); - } + System.out.println("Starting SWAIG features agent on port 3000..."); + agent.run(); + } } diff --git a/examples/SwmlServiceAiSidecar.java b/examples/SwmlServiceAiSidecar.java index cef03cd2..5c77952e 100644 --- a/examples/SwmlServiceAiSidecar.java +++ b/examples/SwmlServiceAiSidecar.java @@ -1,20 +1,18 @@ -/** - * SwmlServiceAiSidecar -- proves that {@link com.signalwire.sdk.swml.Service} - * can emit the {@code ai_sidecar} verb, register SWAIG tools the sidecar's LLM - * can call, and dispatch them end-to-end -- all without any - * {@code com.signalwire.sdk.agent.AgentBase} code path. +/* + * SwmlServiceAiSidecar -- proves that {@link com.signalwire.sdk.swml.Service} can emit the {@code + * ai_sidecar} verb, register SWAIG tools the sidecar's LLM can call, and dispatch them end-to-end + * -- all without any {@code com.signalwire.sdk.agent.AgentBase} code path. * - *

    The {@code ai_sidecar} verb runs an AI listener alongside an in-progress - * call (real-time copilot, transcription analyzer, compliance monitor, etc.). - * It is NOT an agent -- it does not own the call. So the right host is - * {@code Service}, not {@code AgentBase}. + *

    The {@code ai_sidecar} verb runs an AI listener alongside an in-progress call (real-time + * copilot, transcription analyzer, compliance monitor, etc.). It is NOT an agent -- it does not own + * the call. So the right host is {@code Service}, not {@code AgentBase}. * - *

    The class extends {@link com.signalwire.sdk.swml.Service} directly so - * the SDK's {@code swaig-test} CLI can load it in-process via reflection - * (no HTTP) and inspect its tool registry -- the SWML doc + tools live in - * the constructor, {@code main()} only calls {@code serve()}. + *

    The class extends {@link com.signalwire.sdk.swml.Service} directly so the SDK's {@code + * swaig-test} CLI can load it in-process via reflection (no HTTP) and inspect its tool registry -- + * the SWML doc + tools live in the constructor, {@code main()} only calls {@code serve()}. * *

    What this serves: + * *

      *     GET  /sales-sidecar           -> SWML doc with the ai_sidecar verb
      *     POST /sales-sidecar/swaig     -> SWAIG tool dispatch (used by the sidecar's LLM)
    @@ -22,6 +20,7 @@
      * 
    * *

    Drive the SWAIG path through the SDK's {@code swaig-test} CLI: + * *

      *     # In-process (no HTTP -- list registered tools directly):
      *     SWAIG_TEST_CLASSPATH=/tmp/swaig-sidecar bin/swaig-test \
    @@ -33,11 +32,9 @@
      *         --exec lookup_competitor --param competitor=ACME
      * 
    */ - import com.signalwire.sdk.swaig.FunctionResult; import com.signalwire.sdk.swml.Service; import com.sun.net.httpserver.HttpServer; - import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -47,112 +44,120 @@ public class SwmlServiceAiSidecar extends Service { - /** - * Public URL of this service (env-overridable). The ai_sidecar verb - * needs a fully-qualified URL to POST SWAIG calls back to. Reading - * the env at construction time keeps the SWML doc and the tool - * registry build-once-and-reusable. - */ - private static String resolvePublicUrl() { - return System.getenv().getOrDefault( - "PUBLIC_URL", - "https://your-host.example.com/sales-sidecar"); - } + /** + * Public URL of this service (env-overridable). The ai_sidecar verb needs a fully-qualified URL + * to POST SWAIG calls back to. Reading the env at construction time keeps the SWML doc and the + * tool registry build-once-and-reusable. + */ + private static String resolvePublicUrl() { + return System.getenv() + .getOrDefault("PUBLIC_URL", "https://your-host.example.com/sales-sidecar"); + } - public SwmlServiceAiSidecar() { - super("sales-sidecar", "/sales-sidecar"); + public SwmlServiceAiSidecar() { + super("sales-sidecar", "/sales-sidecar"); - String publicUrl = resolvePublicUrl(); + String publicUrl = resolvePublicUrl(); - // 1. Emit any SWML -- including ai_sidecar. Service exposes - // addVerbToSection via getDocument(), so new platform verbs work - // without an SDK release. UPPERCASE "SWAIG" is the SWML schema key - // that registers the LLM-callable webhook for the sidecar. - answer(Map.of()); - getDocument().addVerbToSection( - "main", - "ai_sidecar", - Map.of( - "prompt", "You are a real-time sales copilot. Listen to the call " - + "and surface competitor pricing comparisons when relevant.", - "lang", "en-US", - // direction: both legs as a list, per ai_sidecar schema. - "direction", List.of("remote-caller", "local-caller"), - // Optional event sink -- mod_openai POSTs lifecycle/transcription events here. - "url", publicUrl + "/events", - // SWAIG webhook target -- where the sidecar's LLM POSTs tool calls. - // The /swaig endpoint Service mounts is what answers them. - "SWAIG", Map.of( - "defaults", Map.of("web_hook_url", publicUrl + "/swaig") - ) - ) - ); - hangup(); + // 1. Emit ai_sidecar through Service.addVerbToSection -- the VALIDATING + // entry point, which schema-checks the config before it is appended. + // (This used to reach past it to getDocument().addVerbToSection on the + // rationale that new platform verbs need an escape hatch; ai_sidecar is + // in schema.json as $defs/AiSidecar and validates, so the example was + // teaching users the unvalidated idiom for no benefit.) + // UPPERCASE "SWAIG" is the SWML schema key that registers the + // LLM-callable webhook for the sidecar. + answer(Map.of()); + addVerbToSection( + "main", + "ai_sidecar", + Map.of( + "prompt", + "You are a real-time sales copilot. Listen to the call " + + "and surface competitor pricing comparisons when relevant.", + "lang", + "en-US", + // direction: both legs as a list, per ai_sidecar schema. + "direction", + List.of("remote-caller", "local-caller"), + // Optional event sink -- mod_openai POSTs lifecycle/transcription events here. + "url", + publicUrl + "/events", + // SWAIG webhook target -- where the sidecar's LLM POSTs tool calls. + // The /swaig endpoint Service mounts is what answers them. + "SWAIG", + Map.of("defaults", Map.of("web_hook_url", publicUrl + "/swaig")))); + hangup(); - // 2. Register tools the sidecar's LLM can call. Same defineTool you'd - // use on AgentBase -- it lives on Service. - defineTool( - "lookup_competitor", - "Look up competitor pricing by company name. The sidecar should " - + "call this whenever the caller mentions a competitor.", - Map.of( - "competitor", Map.of( - "type", "string", - "description", "The competitor's company name, e.g. 'ACME'." - ) - ), - (toolArgs, rawData) -> { - Object competitor = toolArgs.getOrDefault("competitor", ""); - return new FunctionResult( - "Pricing for " + competitor + ": $99/seat. Our equivalent " - + "plan is $79/seat with the same SLA."); - } - ); - } + // 2. Register tools the sidecar's LLM can call. Same defineTool you'd + // use on AgentBase -- it lives on Service. + defineTool( + "lookup_competitor", + "Look up competitor pricing by company name. The sidecar should " + + "call this whenever the caller mentions a competitor.", + Map.of( + "competitor", + Map.of( + "type", "string", + "description", "The competitor's company name, e.g. 'ACME'.")), + (toolArgs, rawData) -> { + Object competitor = toolArgs.getOrDefault("competitor", ""); + return new FunctionResult( + "Pricing for " + + competitor + + ": $99/seat. Our equivalent " + + "plan is $79/seat with the same SLA."); + }); + } - @Override - protected void registerAdditionalRoutes(HttpServer server) { - String basePath = "/sales-sidecar"; - server.createContext(basePath + "/events", exchange -> { + @Override + protected void registerAdditionalRoutes(HttpServer server) { + String basePath = "/sales-sidecar"; + server.createContext( + basePath + "/events", + exchange -> { + try { + if (!validateAuth(exchange)) { + sendUnauthorized(exchange); + return; + } + addSecurityHeaders(exchange); + String body = readEventBody(exchange); + System.out.printf("[sidecar event] %s%n", body); + byte[] resp = "{\"ok\":true}".getBytes(StandardCharsets.UTF_8); + exchange.getResponseHeaders().set("Content-Type", "application/json"); + exchange.sendResponseHeaders(200, resp.length); + try (OutputStream os = exchange.getResponseBody()) { + os.write(resp); + } + } catch (Exception e) { try { - if (!validateAuth(exchange)) { - sendUnauthorized(exchange); - return; - } - addSecurityHeaders(exchange); - String body = readEventBody(exchange); - System.out.printf("[sidecar event] %s%n", body); - byte[] resp = "{\"ok\":true}".getBytes(StandardCharsets.UTF_8); - exchange.getResponseHeaders().set("Content-Type", "application/json"); - exchange.sendResponseHeaders(200, resp.length); - try (OutputStream os = exchange.getResponseBody()) { - os.write(resp); - } - } catch (Exception e) { - try { - exchange.sendResponseHeaders(500, -1); - exchange.close(); - } catch (IOException ignored) { - } + exchange.sendResponseHeaders(500, -1); + exchange.close(); + } catch (IOException ignored) { + // The client already went away, so the 500 could not be delivered. + // There is nothing left to report it on -- swallowing is the end of + // the line for this exchange. } + } }); - } + } - private static String readEventBody(com.sun.net.httpserver.HttpExchange exchange) - throws IOException { - try (InputStream is = exchange.getRequestBody()) { - byte[] buf = is.readAllBytes(); - return new String(buf, StandardCharsets.UTF_8); - } + private static String readEventBody(com.sun.net.httpserver.HttpExchange exchange) + throws IOException { + try (InputStream is = exchange.getRequestBody()) { + byte[] buf = is.readAllBytes(); + return new String(buf, StandardCharsets.UTF_8); } + } - public static void main(String[] args) throws Exception { - var svc = new SwmlServiceAiSidecar(); - System.out.printf("Starting ai_sidecar service on /sales-sidecar%n"); - System.out.printf(" public URL: %s%n", resolvePublicUrl()); - System.out.printf(" auth user: %s%n", svc.getAuthUser()); - System.out.printf(" auth pass: %s%n", svc.getAuthPassword()); - System.out.printf(" tools: %s%n", svc.listToolNames()); - svc.serve(); - } + public static void main(String[] args) throws Exception { + var svc = new SwmlServiceAiSidecar(); + System.out.printf("Starting ai_sidecar service on /sales-sidecar%n"); + System.out.printf(" public URL: %s%n", resolvePublicUrl()); + System.out.printf(" auth user: %s%n", svc.getAuthUser()); + System.out.printf(" auth pass: %s%n", svc.getAuthPassword()); + System.out.printf(" tools: %s%n", svc.listToolNames()); + svc.serve(); + } } diff --git a/examples/SwmlServiceExample.java b/examples/SwmlServiceExample.java index 0530c2cc..6f21130c 100644 --- a/examples/SwmlServiceExample.java +++ b/examples/SwmlServiceExample.java @@ -1,104 +1,101 @@ -/** +/* * Basic SWML Service Example. * - * Uses the Service class directly to build and serve SWML documents - * without AI components -- voicemail, IVR menu, call transfer, and recording. + *

    Uses the Service class directly to build and serve SWML documents without AI components -- + * voicemail, IVR menu, call transfer, and recording. */ - import com.signalwire.sdk.swml.Service; - import java.util.Map; public class SwmlServiceExample { - public static void main(String[] args) throws Exception { - String mode = args.length > 0 ? args[0] : "voicemail"; + public static void main(String[] args) throws Exception { + String mode = args.length > 0 ? args[0] : "voicemail"; - switch (mode) { - case "voicemail" -> startVoicemail(); - case "ivr" -> startIvr(); - case "transfer" -> startTransfer(); - case "record" -> startRecording(); - default -> { - System.out.println("Usage: SwmlService [voicemail|ivr|transfer|record]"); - System.exit(1); - } - } + switch (mode) { + case "voicemail" -> startVoicemail(); + case "ivr" -> startIvr(); + case "transfer" -> startTransfer(); + case "record" -> startRecording(); + default -> { + System.out.println("Usage: SwmlService [voicemail|ivr|transfer|record]"); + System.exit(1); + } } + } - static void startVoicemail() throws Exception { - var svc = new Service("voicemail", "/voicemail"); - svc.answer(null); - svc.play(Map.of("url", - "say:Hello, you've reached the voicemail service. Please leave a message after the beep.")); - svc.sleep(1000); - svc.record(Map.of( - "format", "mp3", - "stereo", false, - "beep", true, - "max_length", 120, - "terminators", "#" - )); - svc.play(Map.of("url", "say:Thank you for your message. Goodbye!")); - svc.hangup(); + static void startVoicemail() throws Exception { + var svc = new Service("voicemail", "/voicemail"); + svc.answer(null); + svc.play( + Map.of( + "url", + "say:Hello, you've reached the voicemail service. Please leave a message after the beep.")); + svc.sleep(1000); + svc.record( + Map.of( + "format", "mp3", "stereo", false, "beep", true, "max_length", 120, "terminators", "#")); + svc.play(Map.of("url", "say:Thank you for your message. Goodbye!")); + svc.hangup(); - System.out.println("Starting voicemail service..."); - svc.serve(); - } + System.out.println("Starting voicemail service..."); + svc.serve(); + } - static void startIvr() throws Exception { - var svc = new Service("ivr", "/ivr"); - svc.answer(null); - svc.prompt(Map.of( - "play", "say:Welcome. Press 1 for sales, 2 for support, or 3 to leave a message.", - "max_digits", 1, - "terminators", "#", - "digit_timeout", 5.0, - "initial_timeout", 10.0 - )); - svc.hangup(); + static void startIvr() throws Exception { + var svc = new Service("ivr", "/ivr"); + svc.answer(null); + svc.prompt( + Map.of( + "play", + "say:Welcome. Press 1 for sales, 2 for support, or 3 to leave a message.", + "max_digits", + 1, + "terminators", + "#", + "digit_timeout", + 5.0, + "initial_timeout", + 10.0)); + svc.hangup(); - System.out.println("Starting IVR service..."); - svc.serve(); - } + System.out.println("Starting IVR service..."); + svc.serve(); + } - static void startTransfer() throws Exception { - var svc = new Service("transfer", "/transfer"); - svc.answer(null); - svc.play(Map.of("url", - "say:Thank you for calling. We'll connect you with the next available agent.")); - svc.connect(Map.of( - "from", "+15551234567", - "timeout", 30, - "answer_on_bridge", true - )); - svc.play(Map.of("url", - "say:All agents are busy. Please leave a message.")); - svc.record(Map.of("format", "mp3", "max_length", 120, "terminators", "#")); - svc.hangup(); + static void startTransfer() throws Exception { + var svc = new Service("transfer", "/transfer"); + svc.answer(null); + svc.play( + Map.of( + "url", "say:Thank you for calling. We'll connect you with the next available agent.")); + svc.connect(Map.of("from", "+15551234567", "timeout", 30, "answer_on_bridge", true)); + svc.play(Map.of("url", "say:All agents are busy. Please leave a message.")); + svc.record(Map.of("format", "mp3", "max_length", 120, "terminators", "#")); + svc.hangup(); - System.out.println("Starting transfer service..."); - svc.serve(); - } + System.out.println("Starting transfer service..."); + svc.serve(); + } - static void startRecording() throws Exception { - var svc = new Service("record", "/record"); - svc.answer(null); - svc.recordCall(Map.of( - "control_id", "call_recording", - "format", "mp3", - "stereo", true, - "direction", "both", - "beep", true - )); - svc.play(Map.of("url", - "say:This call is being recorded. Please tell us about your experience.")); - svc.sleep(30000); - svc.stopRecordCall(Map.of("control_id", "call_recording")); - svc.play(Map.of("url", "say:Thank you for your time. Goodbye!")); - svc.hangup(); + static void startRecording() throws Exception { + var svc = new Service("record", "/record"); + svc.answer(null); + svc.recordCall( + Map.of( + "control_id", "call_recording", + "format", "mp3", + "stereo", true, + "direction", "both", + "beep", true)); + svc.play( + Map.of("url", "say:This call is being recorded. Please tell us about your experience.")); + svc.sleep(30000); + svc.stopRecordCall(Map.of("control_id", "call_recording")); + svc.play(Map.of("url", "say:Thank you for your time. Goodbye!")); + svc.hangup(); - System.out.println("Starting recording service..."); - svc.serve(); - } + System.out.println("Starting recording service..."); + svc.serve(); + } } diff --git a/examples/SwmlServiceRoutingExample.java b/examples/SwmlServiceRoutingExample.java index de09d005..426f2074 100644 --- a/examples/SwmlServiceRoutingExample.java +++ b/examples/SwmlServiceRoutingExample.java @@ -1,53 +1,49 @@ -/** +/* * SWML Service Routing Example. * - * Demonstrates building multiple SWML document sections and serving - * different content based on the path -- all from a single Service instance. + *

    Demonstrates building multiple SWML document sections and serving different content based on + * the path -- all from a single Service instance. * - * Paths served: - * /main -> Default greeting - * /customer -> Customer service greeting - * /product -> Product information greeting + *

    Paths served: /main -> Default greeting /customer -> Customer service greeting /product -> + * Product information greeting */ - import com.signalwire.sdk.swml.Service; - import java.util.Map; public class SwmlServiceRoutingExample { - public static void main(String[] args) throws Exception { - // Main service at /main - var mainSvc = new Service("main-service", "/main"); - mainSvc.answer(null); - mainSvc.play(Map.of("url", "say:Hello from the main service!")); - mainSvc.hangup(); + public static void main(String[] args) throws Exception { + // Main service at /main + var mainSvc = new Service("main-service", "/main"); + mainSvc.answer(null); + mainSvc.play(Map.of("url", "say:Hello from the main service!")); + mainSvc.hangup(); - // Customer service at /customer - var customerSvc = new Service("customer-service", "/customer"); - customerSvc.answer(null); - customerSvc.play(Map.of("url", "say:Hello from customer service!")); - customerSvc.prompt(Map.of( - "play", "say:Press 1 for account management, 2 for technical support.", - "max_digits", 1, - "terminators", "#" - )); - customerSvc.hangup(); + // Customer service at /customer + var customerSvc = new Service("customer-service", "/customer"); + customerSvc.answer(null); + customerSvc.play(Map.of("url", "say:Hello from customer service!")); + customerSvc.prompt( + Map.of( + "play", "say:Press 1 for account management, 2 for technical support.", + "max_digits", 1, + "terminators", "#")); + customerSvc.hangup(); - // Product service at /product - var productSvc = new Service("product-service", "/product"); - productSvc.answer(null); - productSvc.play(Map.of("url", "say:Hello from the product service!")); - productSvc.play(Map.of("url", - "say:We offer voice, video, and messaging APIs for modern applications.")); - productSvc.hangup(); + // Product service at /product + var productSvc = new Service("product-service", "/product"); + productSvc.answer(null); + productSvc.play(Map.of("url", "say:Hello from the product service!")); + productSvc.play( + Map.of("url", "say:We offer voice, video, and messaging APIs for modern applications.")); + productSvc.hangup(); - // Start all three services on different ports - // In production you'd use a single server with routing; here we start main. - System.out.println("Starting SWML routing example..."); - System.out.println(" Main: http://localhost:3000/main"); - System.out.println(" Customer: (use AgentServer for multi-route hosting)"); - System.out.println(" Product: (use AgentServer for multi-route hosting)"); - mainSvc.serve(); - } + // Start all three services on different ports + // In production you'd use a single server with routing; here we start main. + System.out.println("Starting SWML routing example..."); + System.out.println(" Main: http://localhost:3000/main"); + System.out.println(" Customer: (use AgentServer for multi-route hosting)"); + System.out.println(" Product: (use AgentServer for multi-route hosting)"); + mainSvc.serve(); + } } diff --git a/examples/SwmlServiceSwaigStandalone.java b/examples/SwmlServiceSwaigStandalone.java index 84cce692..8ffb7a0c 100644 --- a/examples/SwmlServiceSwaigStandalone.java +++ b/examples/SwmlServiceSwaigStandalone.java @@ -1,28 +1,28 @@ -/** - * SwmlServiceSwaigStandalone -- proves that {@link com.signalwire.sdk.swml.Service} - * by itself, with NO {@code com.signalwire.sdk.agent.AgentBase}, can host SWAIG - * functions and serve them on its own {@code /swaig} endpoint. +/* + * SwmlServiceSwaigStandalone -- proves that {@link com.signalwire.sdk.swml.Service} by itself, with + * NO {@code com.signalwire.sdk.agent.AgentBase}, can host SWAIG functions and serve them on its own + * {@code /swaig} endpoint. * - *

    This is the path you take when you want a SWAIG-callable HTTP service that - * isn't an {@code } agent: the SWAIG verb is a generic LLM-tool surface and - * {@code Service} is the host. {@code AgentBase} is a {@code Service} subclass - * that also layers in prompts, AI config, dynamic config, and token - * validation -- but {@code defineTool}, {@code registerSwaigFunction}, and - * {@code onFunctionCall} all live on {@code Service} itself. + *

    This is the path you take when you want a SWAIG-callable HTTP service that isn't an {@code + * } agent: the SWAIG verb is a generic LLM-tool surface and {@code Service} is the host. {@code + * AgentBase} is a {@code Service} subclass that also layers in prompts, AI config, dynamic + * config, and token validation -- but {@code defineTool}, {@code registerSwaigFunction}, and {@code + * onFunctionCall} all live on {@code Service} itself. * - *

    The class extends {@link com.signalwire.sdk.swml.Service} directly and - * registers its SWAIG tools in the constructor. {@code main()} only calls - * {@code serve()}. This shape is reusable: the SDK's {@code swaig-test} CLI - * can load the class in-process via reflection and inspect the tool registry - * without starting an HTTP server. + *

    The class extends {@link com.signalwire.sdk.swml.Service} directly and registers its SWAIG + * tools in the constructor. {@code main()} only calls {@code serve()}. This shape is reusable: the + * SDK's {@code swaig-test} CLI can load the class in-process via reflection and inspect the tool + * registry without starting an HTTP server. * *

    Run as a server: + * *

      *     javac -cp build/libs/signalwire-sdk-*.jar -d /tmp/swaig-standalone examples/SwmlServiceSwaigStandalone.java
      *     java  -cp build/libs/signalwire-sdk-*.jar:/tmp/swaig-standalone SwmlServiceSwaigStandalone
      * 
    * *

    Then exercise the endpoints (auth user/password are printed at startup): + * *

      *     curl -u USER:PASS http://localhost:3000/standalone
      *     curl -u USER:PASS http://localhost:3000/standalone/swaig \
    @@ -31,6 +31,7 @@
      * 
    * *

    Or drive it through the SDK's {@code swaig-test} CLI: + * *

      *     # In-process (no HTTP -- inspect the tool registry directly):
      *     SWAIG_TEST_CLASSPATH=/tmp/swaig-standalone bin/swaig-test \
    @@ -42,57 +43,52 @@
      *         --exec lookup_competitor --param competitor=ACME
      * 
    */ - import com.signalwire.sdk.swaig.FunctionResult; import com.signalwire.sdk.swml.Service; - import java.util.Map; public class SwmlServiceSwaigStandalone extends Service { - public SwmlServiceSwaigStandalone() { - // 1. Plain Service -- no AgentBase. Route is independent of the SWAIG - // surface; /standalone/swaig is what answers tool calls. - super("standalone-swaig", "/standalone"); + public SwmlServiceSwaigStandalone() { + // 1. Plain Service -- no AgentBase. Route is independent of the SWAIG + // surface; /standalone/swaig is what answers tool calls. + super("standalone-swaig", "/standalone"); - // 2. Build a minimal SWML document. Any verbs are fine -- the SWAIG - // HTTP surface is independent of the document contents. - answer(Map.of()); - hangup(); + // 2. Build a minimal SWML document. Any verbs are fine -- the SWAIG + // HTTP surface is independent of the document contents. + answer(Map.of()); + hangup(); - // 3. Register a SWAIG function. defineTool's signature on Service is: - // - // Service defineTool(String name, - // String description, - // Map parameters, - // ToolHandler handler) - // - // The handler receives parsed arguments + the raw POST body and - // returns a FunctionResult. - defineTool( - "lookup_competitor", - "Look up competitor pricing by company name. Use this when " - + "the user asks how a competitor's price compares to ours.", - Map.of( - "competitor", Map.of( - "type", "string", - "description", "The competitor's company name, e.g. 'ACME'." - ) - ), - (toolArgs, rawData) -> { - Object competitor = toolArgs.getOrDefault("competitor", ""); - return new FunctionResult( - competitor + " pricing is $99/seat; we're $79/seat."); - } - ); - } + // 3. Register a SWAIG function. defineTool's signature on Service is: + // + // Service defineTool(String name, + // String description, + // Map parameters, + // ToolHandler handler) + // + // The handler receives parsed arguments + the raw POST body and + // returns a FunctionResult. + defineTool( + "lookup_competitor", + "Look up competitor pricing by company name. Use this when " + + "the user asks how a competitor's price compares to ours.", + Map.of( + "competitor", + Map.of( + "type", "string", + "description", "The competitor's company name, e.g. 'ACME'.")), + (toolArgs, rawData) -> { + Object competitor = toolArgs.getOrDefault("competitor", ""); + return new FunctionResult(competitor + " pricing is $99/seat; we're $79/seat."); + }); + } - public static void main(String[] args) throws Exception { - var svc = new SwmlServiceSwaigStandalone(); - System.out.printf("Starting standalone SWAIG service on /standalone%n"); - System.out.printf(" auth user: %s%n", svc.getAuthUser()); - System.out.printf(" auth pass: %s%n", svc.getAuthPassword()); - System.out.printf(" tools: %s%n", svc.listToolNames()); - svc.serve(); - } + public static void main(String[] args) throws Exception { + var svc = new SwmlServiceSwaigStandalone(); + System.out.printf("Starting standalone SWAIG service on /standalone%n"); + System.out.printf(" auth user: %s%n", svc.getAuthUser()); + System.out.printf(" auth pass: %s%n", svc.getAuthPassword()); + System.out.printf(" tools: %s%n", svc.listToolNames()); + svc.serve(); + } } diff --git a/examples/TapExample.java b/examples/TapExample.java index 95f41bac..dd8ae718 100644 --- a/examples/TapExample.java +++ b/examples/TapExample.java @@ -1,66 +1,65 @@ -/** +/* * Tap Example. * - * Demonstrates using the FunctionResult tap helpers for: - * - WebSocket and RTP audio streaming - * - Compliance and quality monitoring - * - Starting and stopping tap sessions by control ID + *

    Demonstrates using the FunctionResult tap helpers for: - WebSocket and RTP audio streaming - + * Compliance and quality monitoring - Starting and stopping tap sessions by control ID */ - import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; - import java.util.List; import java.util.Map; public class TapExample { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("tap-agent") - .route("/") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = AgentBase.builder().name("tap-agent").route("/").port(3000).build(); - agent.promptAddSection("Role", - "You are a call center supervisor assistant that manages call monitoring."); - agent.promptAddSection("Instructions", "", List.of( - "Use start_monitoring to begin monitoring a call", - "Use stop_monitoring to end monitoring", - "Use start_compliance_tap for compliance recording" - )); + agent.promptAddSection( + "Role", "You are a call center supervisor assistant that manages call monitoring."); + agent.promptAddSection( + "Instructions", + "", + List.of( + "Use start_monitoring to begin monitoring a call", + "Use stop_monitoring to end monitoring", + "Use start_compliance_tap for compliance recording")); - // Start WebSocket tap - agent.defineTool("start_monitoring", "Start monitoring a call via WebSocket", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> new FunctionResult("Starting call monitoring") - .tap("wss://monitoring.company.com/audio-stream", - "monitor_001", "both", "PCMU") - .setMetadata(Map.of("monitoring", true)) - .say("Call monitoring is now active.")); + // Start WebSocket tap + agent.defineTool( + "start_monitoring", + "Start monitoring a call via WebSocket", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> + new FunctionResult("Starting call monitoring") + .tap("wss://monitoring.company.com/audio-stream", "monitor_001", "both", "PCMU") + .setMetadata(Map.of("monitoring", true)) + .say("Call monitoring is now active.")); - // Stop tap - agent.defineTool("stop_monitoring", "Stop the active monitoring session", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> new FunctionResult("Ending monitoring session") - .stopTap("monitor_001") - .setMetadata(Map.of("monitoring", false)) - .say("Call monitoring has been stopped.")); + // Stop tap + agent.defineTool( + "stop_monitoring", + "Stop the active monitoring session", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> + new FunctionResult("Ending monitoring session") + .stopTap("monitor_001") + .setMetadata(Map.of("monitoring", false)) + .say("Call monitoring has been stopped.")); - // Compliance tap - agent.defineTool("start_compliance_tap", - "Start compliance monitoring with RTP streaming", - Map.of("type", "object", "properties", Map.of()), - (toolArgs, raw) -> new FunctionResult("Setting up compliance monitoring") - .tap("rtp://compliance.company.com:6000", - "compliance_001", "both", "PCMA") - .setMetadata(Map.of( - "compliance_session", true, - "recording_purpose", "regulatory_compliance" - )) - .say("This call is being monitored for compliance purposes.")); + // Compliance tap + agent.defineTool( + "start_compliance_tap", + "Start compliance monitoring with RTP streaming", + Map.of("type", "object", "properties", Map.of()), + (toolArgs, raw) -> + new FunctionResult("Setting up compliance monitoring") + .tap("rtp://compliance.company.com:6000", "compliance_001", "both", "PCMA") + .setMetadata( + Map.of( + "compliance_session", true, "recording_purpose", "regulatory_compliance")) + .say("This call is being monitored for compliance purposes.")); - System.out.println("Starting Tap monitoring agent on port 3000..."); - agent.run(); - } + System.out.println("Starting Tap monitoring agent on port 3000..."); + agent.run(); + } } diff --git a/examples/WebSearchAgent.java b/examples/WebSearchAgent.java index 304e277e..6ae8d5d9 100644 --- a/examples/WebSearchAgent.java +++ b/examples/WebSearchAgent.java @@ -1,62 +1,61 @@ -/** +/* * Web Search Agent. * - * Uses the web_search skill to give the agent internet search capabilities. + *

    Uses the web_search skill to give the agent internet search capabilities. * - * Requires env vars: - * GOOGLE_SEARCH_API_KEY - * GOOGLE_SEARCH_ENGINE_ID + *

    Requires env vars: GOOGLE_SEARCH_API_KEY GOOGLE_SEARCH_ENGINE_ID * - * Get credentials at: https://developers.google.com/custom-search/v1/introduction + *

    Get credentials at: https://developers.google.com/custom-search/v1/introduction */ - import com.signalwire.sdk.agent.AgentBase; - import java.util.List; import java.util.Map; public class WebSearchAgent { - public static void main(String[] args) throws Exception { - String apiKey = System.getenv("GOOGLE_SEARCH_API_KEY"); - String engineId = System.getenv("GOOGLE_SEARCH_ENGINE_ID"); - - if (apiKey == null || engineId == null - || apiKey.isEmpty() || engineId.isEmpty()) { - System.err.println("Missing required env vars:"); - System.err.println(" GOOGLE_SEARCH_API_KEY"); - System.err.println(" GOOGLE_SEARCH_ENGINE_ID"); - System.exit(1); - } - - var agent = AgentBase.builder() - .name("web-search-assistant") - .route("/search") - .port(3000) - .build(); - - agent.addLanguage("English", "en-US", "en-US-Standard-C"); - - agent.promptAddSection("Personality", - "You are Franklin, a friendly and knowledgeable search bot."); - agent.promptAddSection("Goal", - "Help users find accurate, up-to-date information from the web."); - agent.promptAddSection("Instructions", "", List.of( - "Always introduce yourself as Franklin", - "Use the web search tool to find current information", - "Present results in a clear, organized manner", - "Be enthusiastic about searching and learning" - )); - - agent.addSkill("web_search", Map.of( - "api_key", apiKey, - "search_engine_id", engineId, - "num_results", 1, - "max_content_length", 3000 - )); - - System.out.println("Loaded skills: " + agent.listSkills()); - System.out.println("Starting Web Search Agent on port 3000..."); - agent.run(); + public static void main(String[] args) throws Exception { + String apiKey = System.getenv("GOOGLE_SEARCH_API_KEY"); + String engineId = System.getenv("GOOGLE_SEARCH_ENGINE_ID"); + + if (apiKey == null || engineId == null || apiKey.isEmpty() || engineId.isEmpty()) { + System.err.println("Missing required env vars:"); + System.err.println(" GOOGLE_SEARCH_API_KEY"); + System.err.println(" GOOGLE_SEARCH_ENGINE_ID"); + System.exit(1); } + + var agent = + AgentBase.builder().name("web-search-assistant").route("/search").port(3000).build(); + + agent.addLanguage("English", "en-US", "en-US-Standard-C"); + + agent.promptAddSection( + "Personality", "You are Franklin, a friendly and knowledgeable search bot."); + agent.promptAddSection( + "Goal", "Help users find accurate, up-to-date information from the web."); + agent.promptAddSection( + "Instructions", + "", + List.of( + "Always introduce yourself as Franklin", + "Use the web search tool to find current information", + "Present results in a clear, organized manner", + "Be enthusiastic about searching and learning")); + + agent.addSkill( + "web_search", + Map.of( + "api_key", + apiKey, + "search_engine_id", + engineId, + "num_results", + 1, + "max_content_length", + 3000)); + + System.out.println("Loaded skills: " + agent.listSkills()); + System.out.println("Starting Web Search Agent on port 3000..."); + agent.run(); + } } diff --git a/examples/WebSearchMultiInstanceDemo.java b/examples/WebSearchMultiInstanceDemo.java index 451420bc..1258cc72 100644 --- a/examples/WebSearchMultiInstanceDemo.java +++ b/examples/WebSearchMultiInstanceDemo.java @@ -1,68 +1,77 @@ -/** +/* * Web Search Multiple Instance Demo. * - * Loads the web search skill multiple times with different configurations - * (general, news, quick). Also includes Wikipedia search. + *

    Loads the web search skill multiple times with different configurations (general, news, + * quick). Also includes Wikipedia search. * - * Required: GOOGLE_SEARCH_API_KEY, GOOGLE_SEARCH_ENGINE_ID + *

    Required: GOOGLE_SEARCH_API_KEY, GOOGLE_SEARCH_ENGINE_ID */ - import com.signalwire.sdk.agent.AgentBase; - import java.util.Map; public class WebSearchMultiInstanceDemo { - public static void main(String[] args) throws Exception { - String apiKey = System.getenv("GOOGLE_SEARCH_API_KEY"); - String engineId = System.getenv("GOOGLE_SEARCH_ENGINE_ID"); + public static void main(String[] args) throws Exception { + String apiKey = System.getenv("GOOGLE_SEARCH_API_KEY"); + String engineId = System.getenv("GOOGLE_SEARCH_ENGINE_ID"); - var agent = AgentBase.builder() - .name("multi-search") - .route("/multi-search") - .port(3000) - .build(); + var agent = AgentBase.builder().name("multi-search").route("/multi-search").port(3000).build(); - agent.addLanguage("English", "en-US", "en-US-Standard-C"); + agent.addLanguage("English", "en-US", "en-US-Standard-C"); - agent.promptAddSection("Role", - "You are a research assistant with access to multiple search tools. " + - "Use the most appropriate tool for each query."); + agent.promptAddSection( + "Role", + "You are a research assistant with access to multiple search tools. " + + "Use the most appropriate tool for each query."); - agent.addSkill("datetime", Map.of()); - agent.addSkill("math", Map.of()); + agent.addSkill("datetime", Map.of()); + agent.addSkill("math", Map.of()); - // Wikipedia search - agent.addSkill("wikipedia_search", Map.of("num_results", 2)); + // Wikipedia search + agent.addSkill("wikipedia_search", Map.of("num_results", 2)); - if (apiKey == null || engineId == null || apiKey.isEmpty() || engineId.isEmpty()) { - System.out.println("Warning: Missing GOOGLE_SEARCH_API_KEY or GOOGLE_SEARCH_ENGINE_ID."); - System.out.println("Web search instances will not be available."); - } else { - // General web search (default tool name) - agent.addSkill("web_search", Map.of( - "api_key", apiKey, - "search_engine_id", engineId, - "num_results", 3)); + if (apiKey == null || engineId == null || apiKey.isEmpty() || engineId.isEmpty()) { + System.out.println("Warning: Missing GOOGLE_SEARCH_API_KEY or GOOGLE_SEARCH_ENGINE_ID."); + System.out.println("Web search instances will not be available."); + } else { + // General web search (default tool name) + agent.addSkill( + "web_search", + Map.of( + "api_key", apiKey, + "search_engine_id", engineId, + "num_results", 3)); - // News-focused search - agent.addSkill("web_search", Map.of( - "api_key", apiKey, - "search_engine_id", engineId, - "tool_name", "search_news", - "num_results", 5)); + // News-focused search + agent.addSkill( + "web_search", + Map.of( + "api_key", + apiKey, + "search_engine_id", + engineId, + "tool_name", + "search_news", + "num_results", + 5)); - // Quick single-result search - agent.addSkill("web_search", Map.of( - "api_key", apiKey, - "search_engine_id", engineId, - "tool_name", "quick_search", - "num_results", 1)); - } - - System.out.println("Loaded skills: " + agent.listSkills()); - System.out.println("Tools: web_search, search_news, quick_search, search_wiki"); - System.out.println("Starting multi-search agent on port 3000..."); - agent.run(); + // Quick single-result search + agent.addSkill( + "web_search", + Map.of( + "api_key", + apiKey, + "search_engine_id", + engineId, + "tool_name", + "quick_search", + "num_results", + 1)); } + + System.out.println("Loaded skills: " + agent.listSkills()); + System.out.println("Tools: web_search, search_news, quick_search, search_wiki"); + System.out.println("Starting multi-search agent on port 3000..."); + agent.run(); + } } diff --git a/examples/WikipediaDemo.java b/examples/WikipediaDemo.java index 65ac314c..e8753b12 100644 --- a/examples/WikipediaDemo.java +++ b/examples/WikipediaDemo.java @@ -1,40 +1,33 @@ -/** +/* * Wikipedia Search Agent. * - * Uses the wikipedia_search skill for factual information retrieval - * from Wikipedia articles. + *

    Uses the wikipedia_search skill for factual information retrieval from Wikipedia articles. */ - import com.signalwire.sdk.agent.AgentBase; - import java.util.Map; public class WikipediaDemo { - public static void main(String[] args) throws Exception { - var agent = AgentBase.builder() - .name("wikipedia-assistant") - .route("/wiki-demo") - .port(3000) - .build(); + public static void main(String[] args) throws Exception { + var agent = + AgentBase.builder().name("wikipedia-assistant").route("/wiki-demo").port(3000).build(); - agent.addLanguage("English", "en-US", "en-US-Standard-C"); + agent.addLanguage("English", "en-US", "en-US-Standard-C"); - agent.promptAddSection("Role", - "You are a knowledgeable assistant that specializes in looking up " + - "factual information from Wikipedia."); + agent.promptAddSection( + "Role", + "You are a knowledgeable assistant that specializes in looking up " + + "factual information from Wikipedia."); - // Add datetime for convenience - agent.addSkill("datetime", Map.of()); + // Add datetime for convenience + agent.addSkill("datetime", Map.of()); - // Add Wikipedia search skill - agent.addSkill("wikipedia_search", Map.of( - "num_results", 2 - )); + // Add Wikipedia search skill + agent.addSkill("wikipedia_search", Map.of("num_results", 2)); - System.out.println("Loaded skills: " + agent.listSkills()); - System.out.println("Starting Wikipedia Assistant on port 3000..."); - System.out.println("Try asking about people, places, concepts, or history."); - agent.run(); - } + System.out.println("Loaded skills: " + agent.listSkills()); + System.out.println("Starting Wikipedia Assistant on port 3000..."); + System.out.println("Try asking about people, places, concepts, or history."); + agent.run(); + } } diff --git a/port_signatures.baseline.json b/port_signatures.baseline.json index dbb0e087..df3edf90 100644 --- a/port_signatures.baseline.json +++ b/port_signatures.baseline.json @@ -1,9 +1,1573 @@ { - "baseline_version": "3.0.2", - "version": "2", - "generated_from": "signalwire-java JAR via SignatureDump (java.lang.reflect)", - "generated_from_tag": "28d40f752f9efff61e71b8360e9fafbd76357db8", - "tag_sha": "28d40f752f9efff61e71b8360e9fafbd76357db8", + "baseline_version": "3.0.0", + "construction": { + "signalwire.agents.bedrock.BedrockAgent": { + "params": { + "max_tokens": { + "required": false, + "type": "int" + }, + "name": { + "required": false, + "type": "string" + }, + "route": { + "required": false, + "type": "string" + }, + "system_prompt": { + "required": false, + "type": "string" + }, + "temperature": { + "required": false, + "type": "float" + }, + "top_p": { + "required": false, + "type": "float" + }, + "voice_id": { + "required": false, + "type": "string" + } + } + }, + "signalwire.ai_chat.client.AIChatClient": { + "params": { + "project": { + "required": false, + "type": "optional" + }, + "space": { + "required": false, + "type": "optional" + }, + "token": { + "required": false, + "type": "optional" + }, + "url": { + "required": false, + "type": "optional" + } + } + }, + "signalwire.ai_chat.client.AIChatError": { + "params": { + "code": { + "required": true, + "type": "optional" + }, + "message": { + "required": true, + "type": "string" + } + } + }, + "signalwire.ai_chat.client.ChatLog": { + "params": { + "call_timeline": { + "required": false, + "type": "list>" + }, + "messages": { + "required": false, + "type": "list>" + } + } + }, + "signalwire.ai_chat.client.ChatResponse": { + "params": { + "conversation_id": { + "required": true, + "type": "string" + }, + "text": { + "required": true, + "type": "string" + }, + "user_event": { + "required": false, + "type": "optional>" + } + } + }, + "signalwire.ai_chat.client.ConversationInfo": { + "params": { + "id": { + "required": true, + "type": "string" + }, + "initial_message": { + "required": false, + "type": "optional" + }, + "status": { + "required": true, + "type": "string" + } + } + }, + "signalwire.core.agent_base.AgentBase": { + "params": { + "agent_id": { + "required": false, + "type": "string" + }, + "auth_password": { + "required": false, + "type": "string" + }, + "auth_user": { + "required": false, + "type": "string" + }, + "auto_answer": { + "required": false, + "type": "bool" + }, + "check_for_input_override": { + "required": false, + "type": "bool" + }, + "config_file": { + "required": false, + "type": "string" + }, + "default_webhook_url": { + "required": false, + "type": "string" + }, + "enable_post_prompt_override": { + "required": false, + "type": "bool" + }, + "env_provider": { + "required": false, + "type": "class:signalwire.runtime.EnvProvider" + }, + "host": { + "required": false, + "type": "string" + }, + "max_duration": { + "required": false, + "type": "int" + }, + "name": { + "required": false, + "type": "string" + }, + "native_functions": { + "required": false, + "type": "list" + }, + "port": { + "required": false, + "type": "int" + }, + "record_call": { + "required": false, + "type": "bool" + }, + "record_format": { + "required": false, + "type": "class:signalwire.swml.RecordFormat" + }, + "record_stereo": { + "required": false, + "type": "bool" + }, + "route": { + "required": false, + "type": "string" + }, + "schema_path": { + "required": false, + "type": "string" + }, + "schema_validation": { + "required": false, + "type": "bool" + }, + "signing_key": { + "required": false, + "type": "string" + }, + "suppress_logs": { + "required": false, + "type": "bool" + }, + "token_expiry_secs": { + "required": false, + "type": "int" + }, + "trust_proxy_for_signature": { + "required": false, + "type": "bool" + }, + "use_pom": { + "required": false, + "type": "bool" + } + } + }, + "signalwire.core.auth_handler.AuthHandler": { + "params": { + "security_config": { + "required": true, + "type": "class:signalwire.core.security_config.SecurityConfig" + } + } + }, + "signalwire.core.contexts.Context": { + "params": { + "name": { + "required": true, + "type": "string" + } + } + }, + "signalwire.core.contexts.GatherQuestion": { + "params": { + "key": { + "required": true, + "type": "string" + }, + "question": { + "required": true, + "type": "string" + } + } + }, + "signalwire.core.contexts.Step": { + "params": { + "name": { + "required": true, + "type": "string" + } + } + }, + "signalwire.core.data_map.DataMap": { + "params": { + "function_name": { + "required": true, + "type": "string" + } + } + }, + "signalwire.core.skill_base.SkillBase": { + "params": { + "agent": { + "required": true, + "type": "class:signalwire.core.agent_base.AgentBase" + }, + "params": { + "required": true, + "type": "dict" + } + } + }, + "signalwire.core.skill_manager.SkillManager": { + "params": { + "agent": { + "required": true, + "type": "class:signalwire.core.agent_base.AgentBase" + } + } + }, + "signalwire.core.swml_builder.SWMLBuilder": { + "params": { + "service": { + "required": true, + "type": "class:signalwire.core.swml_service.SWMLService" + } + } + }, + "signalwire.core.swml_service.SWMLService": { + "params": { + "auth_password": { + "required": false, + "type": "string" + }, + "auth_user": { + "required": false, + "type": "string" + }, + "config_file": { + "required": false, + "type": "string" + }, + "host": { + "required": false, + "type": "string" + }, + "name": { + "required": true, + "type": "string" + }, + "port": { + "required": false, + "type": "int" + }, + "route": { + "required": false, + "type": "string" + }, + "schema_path": { + "required": false, + "type": "string" + }, + "schema_validation": { + "required": false, + "type": "bool" + } + } + }, + "signalwire.pom.pom.Section": { + "params": { + "title": { + "required": true, + "type": "string" + } + } + }, + "signalwire.prefabs.concierge.ConciergeAgent": { + "params": { + "amenities": { + "required": true, + "type": "list>" + }, + "name": { + "required": true, + "type": "string" + }, + "venue_name": { + "required": true, + "type": "string" + } + } + }, + "signalwire.prefabs.faq_bot.FAQBotAgent": { + "params": { + "faqs": { + "required": true, + "type": "list>" + }, + "name": { + "required": true, + "type": "string" + } + } + }, + "signalwire.prefabs.info_gatherer.InfoGathererAgent": { + "params": { + "name": { + "required": true, + "type": "string" + }, + "questions": { + "required": true, + "type": "list>" + } + } + }, + "signalwire.prefabs.receptionist.ReceptionistAgent": { + "params": { + "departments": { + "required": true, + "type": "dict>" + }, + "greeting": { + "required": true, + "type": "string" + }, + "name": { + "required": true, + "type": "string" + } + } + }, + "signalwire.prefabs.survey.SurveyAgent": { + "params": { + "name": { + "required": true, + "type": "string" + }, + "questions": { + "required": true, + "type": "list>" + } + } + }, + "signalwire.relay.call.AIAction": { + "params": { + "call": { + "required": true, + "type": "class:signalwire.relay.call.Call" + }, + "control_id": { + "required": true, + "type": "string" + } + } + }, + "signalwire.relay.call.Action": { + "params": { + "call": { + "required": true, + "type": "class:signalwire.relay.call.Call" + }, + "control_id": { + "required": true, + "type": "string" + } + } + }, + "signalwire.relay.call.Call": { + "params": { + "call_id": { + "required": true, + "type": "string" + }, + "node_id": { + "required": true, + "type": "string" + } + } + }, + "signalwire.relay.call.CollectAction": { + "params": { + "call": { + "required": true, + "type": "class:signalwire.relay.call.Call" + }, + "control_id": { + "required": true, + "type": "string" + } + } + }, + "signalwire.relay.call.DetectAction": { + "params": { + "call": { + "required": true, + "type": "class:signalwire.relay.call.Call" + }, + "control_id": { + "required": true, + "type": "string" + } + } + }, + "signalwire.relay.call.FaxAction": { + "params": { + "call": { + "required": true, + "type": "class:signalwire.relay.call.Call" + }, + "control_id": { + "required": true, + "type": "string" + } + } + }, + "signalwire.relay.call.PayAction": { + "params": { + "call": { + "required": true, + "type": "class:signalwire.relay.call.Call" + }, + "control_id": { + "required": true, + "type": "string" + } + } + }, + "signalwire.relay.call.PlayAction": { + "params": { + "call": { + "required": true, + "type": "class:signalwire.relay.call.Call" + }, + "control_id": { + "required": true, + "type": "string" + } + } + }, + "signalwire.relay.call.RecordAction": { + "params": { + "call": { + "required": true, + "type": "class:signalwire.relay.call.Call" + }, + "control_id": { + "required": true, + "type": "string" + } + } + }, + "signalwire.relay.call.StandaloneCollectAction": { + "params": { + "call": { + "required": true, + "type": "class:signalwire.relay.call.Call" + }, + "control_id": { + "required": true, + "type": "string" + } + } + }, + "signalwire.relay.call.StreamAction": { + "params": { + "call": { + "required": true, + "type": "class:signalwire.relay.call.Call" + }, + "control_id": { + "required": true, + "type": "string" + } + } + }, + "signalwire.relay.call.TapAction": { + "params": { + "call": { + "required": true, + "type": "class:signalwire.relay.call.Call" + }, + "control_id": { + "required": true, + "type": "string" + } + } + }, + "signalwire.relay.call.TranscribeAction": { + "params": { + "call": { + "required": true, + "type": "class:signalwire.relay.call.Call" + }, + "control_id": { + "required": true, + "type": "string" + } + } + }, + "signalwire.relay.client.RelayClient": { + "params": { + "contexts": { + "required": false, + "type": "list" + }, + "host": { + "required": false, + "type": "string" + }, + "jwt_token": { + "required": false, + "type": "string" + }, + "max_active_calls": { + "required": false, + "type": "int" + }, + "project": { + "required": false, + "type": "string" + }, + "space": { + "required": false, + "type": "string" + }, + "token": { + "required": false, + "type": "string" + } + } + }, + "signalwire.relay.client.RelayError": { + "params": { + "message": { + "required": true, + "type": "string" + } + } + }, + "signalwire.relay.event.CallReceiveEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.CallStateEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.CallingErrorEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.CollectEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.ConferenceEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.ConnectEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.DenoiseEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.DetectEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.DialEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.EchoEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.FaxEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.HoldEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.MessageReceiveEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.MessageStateEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.PayEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.PlayEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.QueueEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.RecordEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.ReferEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.RelayEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.SendDigitsEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.StreamEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.TapEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.event.TranscribeEvent": { + "params": { + "event_type": { + "required": true, + "type": "string" + }, + "params": { + "required": true, + "type": "dict" + }, + "timestamp": { + "required": true, + "type": "float" + } + } + }, + "signalwire.relay.message.Message": { + "params": { + "message_id": { + "required": true, + "type": "string" + } + } + }, + "signalwire.rest._base.BaseResource": { + "params": { + "base_path": { + "required": true, + "type": "string" + }, + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest._base.HttpClient": { + "params": { + "project": { + "required": true, + "type": "string" + }, + "request_options": { + "required": false, + "type": "class:signalwire.rest._request_options.RequestOptions" + }, + "space": { + "required": true, + "type": "string" + }, + "token": { + "required": true, + "type": "string" + } + } + }, + "signalwire.rest._base.SignalWireRestError": { + "params": { + "method": { + "required": true, + "type": "string" + }, + "path": { + "required": true, + "type": "string" + }, + "response_body": { + "required": true, + "type": "string" + }, + "status_code": { + "required": true, + "type": "int" + }, + "url": { + "required": true, + "type": "string" + } + } + }, + "signalwire.rest._base.SignalWireRestTransportError": { + "params": { + "cause": { + "required": true, + "type": "any" + }, + "method": { + "required": true, + "type": "string" + }, + "path": { + "required": true, + "type": "string" + }, + "url": { + "required": true, + "type": "string" + } + } + }, + "signalwire.rest._pagination.PaginatedIterator": { + "params": { + "http": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + }, + "path": { + "required": true, + "type": "string" + } + } + }, + "signalwire.rest._request_options.RequestOptions": { + "params": { + "abort_signal": { + "required": false, + "type": "optional" + }, + "retries": { + "required": false, + "type": "optional" + }, + "retry_backoff": { + "required": false, + "type": "optional" + }, + "retry_on_status": { + "required": false, + "type": "optional>" + }, + "timeout": { + "required": false, + "type": "optional" + } + } + }, + "signalwire.rest.namespaces._client_tree_generated.DatasphereNamespace": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces._client_tree_generated.FabricNamespace": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces._client_tree_generated.LogsNamespace": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces._client_tree_generated.ProjectNamespace": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces._client_tree_generated.RegistryNamespace": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces._client_tree_generated.VideoNamespace": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.calling_resources_generated.Calling": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.chat_resources_generated.Chat": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.datasphere_resources_generated.DatasphereDocuments": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.AiAgents": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.CallFlows": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.ConferenceRooms": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.CxmlApplications": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.CxmlScripts": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.CxmlWebhooks": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.FabricAddresses": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.FabricTokens": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.FreeswitchConnectors": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.GenericResources": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.RelayApplications": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.SipEndpoints": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.SipGateways": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.Subscribers": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.SwmlScripts": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fabric_resources_generated.SwmlWebhooks": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.fax_resources_generated.FaxLogs": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.logs_resources_generated.ConferenceLogs": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.message_resources_generated.MessageLogs": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.messages_resources_generated.Messages": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.project_resources_generated.ProjectTokens": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.projects_resources_generated.Projects": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.pubsub_resources_generated.PubSub": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.relay_rest_resources_generated.Addresses": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.relay_rest_resources_generated.ImportedNumbers": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.relay_rest_resources_generated.Lookup": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.relay_rest_resources_generated.Mfa": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.relay_rest_resources_generated.NumberGroups": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.relay_rest_resources_generated.PhoneNumbers": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.relay_rest_resources_generated.Queues": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.relay_rest_resources_generated.Recordings": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.relay_rest_resources_generated.RegistryBrands": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.relay_rest_resources_generated.RegistryCampaigns": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.relay_rest_resources_generated.RegistryNumbers": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.relay_rest_resources_generated.RegistryOrders": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.relay_rest_resources_generated.ShortCodes": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.relay_rest_resources_generated.SipProfile": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.relay_rest_resources_generated.VerifiedCallers": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.video_resources_generated.VideoConferenceTokens": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.video_resources_generated.VideoConferences": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.video_resources_generated.VideoRoomRecordings": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.video_resources_generated.VideoRoomSessions": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.video_resources_generated.VideoRoomTokens": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.video_resources_generated.VideoRooms": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.video_resources_generated.VideoStreams": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.rest.namespaces.voice_resources_generated.VoiceLogs": { + "params": { + "http_client": { + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + } + }, + "signalwire.utils.schema_utils.SchemaUtils": { + "params": { + "schema_path": { + "required": true, + "type": "string" + }, + "schema_validation": { + "required": true, + "type": "bool" + } + } + }, + "signalwire.utils.schema_utils.SchemaValidationError": { + "params": { + "errors": { + "required": true, + "type": "list" + }, + "verb_name": { + "required": true, + "type": "string" + } + } + } + }, + "generated_from": "signalwire-java JAR via SignatureDump (java.lang.reflect) @ b48bf1d (v3.0.0 release floor, commit-anchored)", + "generated_from_tag": "b48bf1d67fa0108dd242e6bc99fd06617fd547f4", "modules": { "signalwire": { "functions": { @@ -11,13 +1575,13 @@ "params": [ { "name": "args", - "type": "list", - "required": true + "required": false, + "type": "list" }, { "name": "kwargs", - "type": "dict", - "required": false + "required": false, + "type": "dict" } ], "returns": "class:signalwire.rest.client.RestClient" @@ -26,8 +1590,8 @@ "params": [ { "name": "path", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" @@ -44,8 +1608,8 @@ "params": [ { "name": "skill_class", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "void" @@ -56,25 +1620,30 @@ "classes": { "AgentBaseBuilder": { "methods": { - "__init__": { + "agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "id", + "required": true, + "type": "string" } ], - "returns": "void" + "returns": "class:signalwire.core.agent_base.AgentBase" }, "auth_password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "password", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -82,13 +1651,13 @@ "auth_user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "user", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -96,13 +1665,13 @@ "auto_answer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "auto_answer", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -110,8 +1679,64 @@ "build": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.core.agent_base.AgentBase" + }, + "check_for_input_override": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "enabled", + "required": true, + "type": "bool" + } + ], + "returns": "class:signalwire.core.agent_base.AgentBase" + }, + "config_file": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "path", + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.core.agent_base.AgentBase" + }, + "default_webhook_url": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "url", + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.core.agent_base.AgentBase" + }, + "enable_post_prompt_override": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "enabled", + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -119,13 +1744,13 @@ "env_provider": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "env", - "type": "class:signalwire.runtime.EnvProvider", - "required": true + "required": true, + "type": "class:signalwire.runtime.EnvProvider" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -133,13 +1758,13 @@ "host": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "host", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -147,13 +1772,13 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "max_duration", - "type": "int", - "required": true + "required": true, + "type": "int" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -161,13 +1786,27 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.core.agent_base.AgentBase" + }, + "native_functions": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "functions", + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -175,13 +1814,13 @@ "port": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "port", - "type": "int", - "required": true + "required": true, + "type": "int" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -189,13 +1828,13 @@ "record_call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "record_call", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -203,13 +1842,13 @@ "record_format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "format", - "type": "class:signalwire.swml.RecordFormat", - "required": true + "required": true, + "type": "class:signalwire.swml.RecordFormat" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -217,13 +1856,13 @@ "record_stereo": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "stereo", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -231,13 +1870,41 @@ "route": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "route", - "type": "string", - "required": true + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.core.agent_base.AgentBase" + }, + "schema_path": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "path", + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.core.agent_base.AgentBase" + }, + "schema_validation": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "enabled", + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -245,13 +1912,41 @@ "signing_key": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "key", - "type": "string", - "required": true + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.core.agent_base.AgentBase" + }, + "suppress_logs": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "suppress", + "required": true, + "type": "bool" + } + ], + "returns": "class:signalwire.core.agent_base.AgentBase" + }, + "token_expiry_secs": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "secs", + "required": true, + "type": "int" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -259,13 +1954,27 @@ "trust_proxy_for_signature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "trust", - "type": "bool", - "required": true + "required": true, + "type": "bool" + } + ], + "returns": "class:signalwire.core.agent_base.AgentBase" + }, + "use_pom": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "use_pom", + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -281,28 +1990,28 @@ "configure": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "query_params", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "body_params", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "headers", - "type": "dict>", - "required": true + "required": true, + "type": "dict>" }, { "name": "agent", - "type": "class:signalwire.core.agent_base.AgentBase", - "required": true + "required": true, + "type": "class:signalwire.core.agent_base.AgentBase" } ], "returns": "void" @@ -318,8 +2027,8 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -327,8 +2036,8 @@ "close": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -336,18 +2045,18 @@ "enable_tls": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "cert_path", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "key_path", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.agent_server.AgentServer" @@ -355,13 +2064,13 @@ "get_agent": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "route", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -369,8 +2078,8 @@ "get_agents": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -378,8 +2087,8 @@ "get_routes": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -387,13 +2096,13 @@ "get_sip_route": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "username", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" @@ -401,31 +2110,58 @@ "get_sip_username_mapping": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" }, + "host": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "is_tls_enabled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" }, + "log_level": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "port": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "int" + }, "register": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "agent", - "type": "class:signalwire.core.agent_base.AgentBase", - "required": true + "required": true, + "type": "class:signalwire.core.agent_base.AgentBase" } ], "returns": "class:signalwire.agent_server.AgentServer" @@ -433,18 +2169,18 @@ "register_global_routing_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "callback", - "type": "callable,dict>,string>", - "required": true + "required": true, + "type": "callable,dict>,string>" }, { "name": "path", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.agent_server.AgentServer" @@ -452,18 +2188,18 @@ "register_sip_route": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "username", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "route", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.agent_server.AgentServer" @@ -471,18 +2207,18 @@ "register_sip_username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "username", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "route", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.agent_server.AgentServer" @@ -490,8 +2226,8 @@ "run": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -499,18 +2235,18 @@ "serve_static_files": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "directory", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "route", - "type": "string", - "required": true + "required": false, + "type": "string" } ], "returns": "class:signalwire.agent_server.AgentServer" @@ -518,13 +2254,13 @@ "set_static_files_dir": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "dir", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.agent_server.AgentServer" @@ -532,8 +2268,8 @@ "setup_sip_routing": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.agent_server.AgentServer" @@ -541,8 +2277,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -550,13 +2286,13 @@ "unregister": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "route", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.agent_server.AgentServer" @@ -572,8 +2308,43 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "name", + "required": false, + "type": "string" + }, + { + "name": "route", + "required": false, + "type": "string" + }, + { + "name": "system_prompt", + "required": false, + "type": "string" + }, + { + "name": "voice_id", + "required": false, + "type": "string" + }, + { + "name": "temperature", + "required": false, + "type": "float" + }, + { + "name": "top_p", + "required": false, + "type": "float" + }, + { + "name": "max_tokens", + "required": false, + "type": "int" } ], "returns": "void" @@ -581,8 +2352,8 @@ "get_max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "int" @@ -590,8 +2361,8 @@ "get_temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "float" @@ -599,8 +2370,8 @@ "get_top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "float" @@ -608,8 +2379,8 @@ "get_voice_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -617,13 +2388,13 @@ "render_swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "base_url", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -631,23 +2402,23 @@ "set_inference_params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "temperature", - "type": "float", - "required": true + "required": false, + "type": "float" }, { "name": "top_p", - "type": "float", - "required": true + "required": false, + "type": "float" }, { "name": "max_tokens", - "type": "int", - "required": true + "required": false, + "type": "int" } ], "returns": "class:signalwire.agents.bedrock.BedrockAgent" @@ -655,13 +2426,13 @@ "set_llm_model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "model", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.agents.bedrock.BedrockAgent" @@ -669,13 +2440,13 @@ "set_llm_temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "temperature", - "type": "float", - "required": true + "required": true, + "type": "float" } ], "returns": "class:signalwire.agents.bedrock.BedrockAgent" @@ -683,13 +2454,13 @@ "set_post_prompt_llm_params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": false, + "type": "dict" } ], "returns": "class:signalwire.agents.bedrock.BedrockAgent" @@ -697,13 +2468,13 @@ "set_prompt_llm_params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": false, + "type": "dict" } ], "returns": "class:signalwire.agents.bedrock.BedrockAgent" @@ -711,53 +2482,439 @@ "set_voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "voice_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.agents.bedrock.BedrockAgent" + } + } + } + } + }, + "signalwire.ai_chat.client": { + "classes": { + "AIChatClient": { + "methods": { + "__init__": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "default": null, + "name": "project", + "required": false, + "type": "optional" + }, + { + "default": null, + "name": "token", + "required": false, + "type": "optional" + }, + { + "default": null, + "name": "space", + "required": false, + "type": "optional" + }, + { + "default": null, + "name": "url", + "required": false, + "type": "optional" + } + ], + "returns": "void" }, - "to_string": { + "chat": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "conversation_id", + "required": true, + "type": "string" + }, + { + "name": "message", + "required": true, + "type": "string" + }, + { + "default": "user", + "name": "role", + "required": false, + "type": "string" + }, + { + "default": null, + "name": "config_url", + "required": false, + "type": "optional" + }, + { + "default": null, + "name": "user_metadata", + "required": false, + "type": "optional>" + }, + { + "default": null, + "name": "timeout", + "required": false, + "type": "optional" + }, + { + "default": false, + "name": "reinit", + "required": false, + "type": "bool" + } + ], + "returns": "class:signalwire.ai_chat.client.ChatResponse" + }, + "close": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "void" + }, + "create_conversation": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "conversation_id", + "required": true, + "type": "string" + }, + { + "name": "config_url", + "required": true, + "type": "string" + }, + { + "default": null, + "name": "user_message", + "required": false, + "type": "optional" + }, + { + "default": null, + "name": "timeout", + "required": false, + "type": "optional" + }, + { + "default": null, + "name": "user_metadata", + "required": false, + "type": "optional>" + }, + { + "default": false, + "name": "reinit", + "required": false, + "type": "bool" + } + ], + "returns": "class:signalwire.ai_chat.client.ConversationInfo" + }, + "delete": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "conversation_id", + "required": true, + "type": "string" + } + ], + "returns": "bool" + }, + "end": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "conversation_id", + "required": true, + "type": "string" + } + ], + "returns": "bool" + }, + "log": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "conversation_id", + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.ai_chat.client.ChatLog" + }, + "summarize": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "conversation_id", + "required": true, + "type": "string" + }, + { + "default": null, + "name": "summary_prompt", + "required": false, + "type": "optional" + } + ], + "returns": "string" + }, + "url": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "string" } } - } - } - }, - "signalwire.cli.simulation.serverless_simulator": { - "classes": { - "ServerlessSimulator": { + }, + "AIChatError": { "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { - "name": "platform", - "type": "class:signalwire.cli.simulation.ServerlessSimulator", - "required": true + "name": "code", + "required": true, + "type": "optional" + }, + { + "name": "message", + "required": true, + "type": "string" + } + ], + "returns": "void" + }, + "code": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "int" + }, + "message": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + } + } + }, + "ChatLog": { + "methods": { + "__init__": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "default": "list()", + "name": "messages", + "required": false, + "type": "list>" + }, + { + "default": "list()", + "name": "call_timeline", + "required": false, + "type": "list>" + } + ], + "returns": "void" + }, + "call_timeline": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list>" + }, + "messages": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list>" + } + } + }, + "ChatResponse": { + "methods": { + "__init__": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "text", + "required": true, + "type": "string" + }, + { + "name": "conversation_id", + "required": true, + "type": "string" + }, + { + "default": null, + "name": "user_event", + "required": false, + "type": "optional>" + } + ], + "returns": "void" + }, + "conversation_id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "text": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "user_event": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "dict" + } + } + }, + "ConversationInfo": { + "methods": { + "__init__": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "id", + "required": true, + "type": "string" + }, + { + "name": "status", + "required": true, + "type": "string" + }, + { + "default": null, + "name": "initial_message", + "required": false, + "type": "optional" } ], "returns": "void" }, + "id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "initial_message": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "status": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + } + } + } + } + }, + "signalwire.cli.simulation.serverless_simulator": { + "classes": { + "ServerlessSimulator": { + "methods": { "build_env_provider": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.runtime.EnvProvider" @@ -765,8 +2922,8 @@ "get_masked_keys": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -774,8 +2931,8 @@ "get_platform": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.cli.simulation.ServerlessSimulator" @@ -783,8 +2940,8 @@ "get_simulated_env": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -793,8 +2950,8 @@ "params": [ { "name": "s", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.cli.simulation.ServerlessSimulator" @@ -803,8 +2960,8 @@ "params": [ { "name": "platform", - "type": "class:signalwire.cli.simulation.ServerlessSimulator", - "required": true + "required": true, + "type": "class:signalwire.cli.simulation.ServerlessSimulator" } ], "returns": "dict" @@ -812,8 +2969,8 @@ "proxy_url_base_masked_from_real_env": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -834,12 +2991,16 @@ "params": [], "returns": "class:signalwire.cli.simulation.ServerlessSimulator" }, + "lambda": { + "params": [], + "returns": "class:signalwire.cli.simulation.ServerlessSimulator" + }, "value_of": { "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.cli.simulation.ServerlessSimulator" @@ -856,21 +3017,12 @@ "classes": { "SwaigTest": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "main": { "params": [ { "name": "args", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "void" @@ -879,8 +3031,8 @@ "params": [ { "name": "args", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "int" @@ -896,17 +3048,26 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" }, + "agent": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, "define_contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.contexts.ContextBuilder" @@ -914,8 +3075,8 @@ "get_contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -923,8 +3084,8 @@ "get_post_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -932,8 +3093,8 @@ "get_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -941,8 +3102,8 @@ "get_raw_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -950,8 +3111,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.pom.pom.PromptObjectModel" @@ -959,18 +3120,18 @@ "prompt_add_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -978,23 +3139,23 @@ "prompt_add_subsection": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "parent_title", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1002,18 +3163,18 @@ "prompt_add_to_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "bullets", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1021,13 +3182,13 @@ "prompt_has_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -1035,13 +3196,13 @@ "set_post_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "text", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1049,13 +3210,13 @@ "set_prompt_pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "pom", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1063,13 +3224,13 @@ "set_prompt_text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "text", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1085,22 +3246,31 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" }, + "agent": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, "define_tool": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "tool_def", - "type": "class:signalwire.swaig.ToolDefinition", - "required": true + "required": true, + "type": "class:signalwire.swaig.ToolDefinition" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1108,8 +3278,8 @@ "get_all_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -1117,13 +3287,13 @@ "get_function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.swaig.ToolDefinition" @@ -1131,13 +3301,13 @@ "has_function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -1145,8 +3315,8 @@ "register_class_decorated_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -1154,13 +3324,13 @@ "register_swaig_function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "swaig_func", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1168,13 +3338,13 @@ "remove_function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -1189,13 +3359,13 @@ "params": [ { "name": "func", - "type": "callable,any>", - "required": true + "required": true, + "type": "callable,any>" }, { "name": "has_raw_data", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "callable,any>" @@ -1204,8 +3374,8 @@ "params": [ { "name": "func", - "type": "callable,any>", - "required": true + "required": true, + "type": "callable,any>" } ], "returns": "tuple>,list,optional,bool,bool>" @@ -1219,18 +3389,18 @@ "add_answer_verb": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "verb_data", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1238,18 +3408,18 @@ "add_post_ai_verb": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "verb_data", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1257,18 +3427,18 @@ "add_post_answer_verb": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "verb_data", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1276,18 +3446,18 @@ "add_pre_answer_verb": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "verb_data", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1295,22 +3465,31 @@ "add_swaig_query_params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.agent_base.AgentBase" }, + "agent_id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "build_mcp_tool_list": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -1322,8 +3501,8 @@ "clear_post_ai_verbs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1331,8 +3510,8 @@ "clear_post_answer_verbs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1340,8 +3519,8 @@ "clear_pre_answer_verbs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1349,8 +3528,8 @@ "clear_swaig_query_params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1358,8 +3537,8 @@ "clone": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1367,18 +3546,18 @@ "create_tool_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "tool_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" @@ -1386,8 +3565,8 @@ "detect_serverless_base_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -1395,8 +3574,8 @@ "enable_sip_routing": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1405,8 +3584,8 @@ "params": [ { "name": "sip_uri", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" @@ -1414,8 +3593,8 @@ "get_auth_password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -1423,8 +3602,17 @@ "get_auth_user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "get_default_webhook_url": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "string" @@ -1432,8 +3620,8 @@ "get_dynamic_config_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1441,8 +3629,8 @@ "get_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -1450,8 +3638,8 @@ "get_host": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -1459,8 +3647,8 @@ "get_mcp_servers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -1468,8 +3656,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -1477,8 +3665,8 @@ "get_normalised_route": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -1486,8 +3674,8 @@ "get_on_summary_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "callable,dict>,void>" @@ -1495,8 +3683,8 @@ "get_port": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "int" @@ -1504,17 +3692,8 @@ "get_route": { "params": [ { - "name": "self", - "kind": "self" - } - ], - "returns": "string" - }, - "get_signing_key": { - "params": [ - { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -1522,26 +3701,26 @@ "get_sip_usernames": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" }, - "get_skill_manager": { + "get_token_expiry_secs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.core.skill_manager.SkillManager" + "returns": "int" }, "get_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -1549,13 +3728,13 @@ "handle_mcp_request": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "body", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" @@ -1563,13 +3742,31 @@ "has_tool": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" + } + ], + "returns": "bool" + }, + "is_check_for_input_override": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "bool" + }, + "is_enable_post_prompt_override": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -1577,8 +3774,8 @@ "is_mcp_server_enabled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -1586,8 +3783,17 @@ "is_sip_routing_enabled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "bool" + }, + "is_suppress_logs": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -1595,22 +3801,40 @@ "is_trust_proxy_for_signature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "bool" + }, + "is_use_pom": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "bool" }, + "native_functions": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list" + }, "on_debug_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "callback", - "type": "callable>,void>", - "required": true + "required": true, + "type": "callable>,void>" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1618,13 +3842,13 @@ "on_summary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "callback", - "type": "callable,dict>,void>", - "required": true + "required": true, + "type": "callable,dict>,void>" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1632,8 +3856,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.pom.pom.PromptObjectModel" @@ -1641,13 +3865,13 @@ "register_sip_username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "username", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1655,13 +3879,13 @@ "render_swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "base_url", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -1669,13 +3893,13 @@ "render_swml_json": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "base_url", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" @@ -1683,13 +3907,13 @@ "set_internal_fillers_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "fillers", - "type": "dict>>", - "required": true + "required": true, + "type": "dict>>" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1697,13 +3921,13 @@ "set_post_prompt_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1711,32 +3935,50 @@ "set_web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" }, + "signing_key": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "skill_manager": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.core.skill_manager.SkillManager" + }, "validate_webhook": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "exchange", - "type": "any", - "required": true + "required": true, + "type": "any" }, { "name": "raw_body", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -1752,13 +3994,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "security_config", - "type": "class:signalwire.core.security_config.SecurityConfig", - "required": true + "required": true, + "type": "class:signalwire.core.security_config.SecurityConfig" } ], "returns": "void" @@ -1766,13 +4008,13 @@ "flask_decorator": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "app", - "type": "class:signalwire.core.auth_handler.AuthHandler", - "required": true + "required": true, + "type": "class:signalwire.core.auth_handler.AuthHandler" } ], "returns": "class:signalwire.core.auth_handler.AuthHandler" @@ -1780,8 +4022,8 @@ "get_auth_info": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -1789,17 +4031,17 @@ "get_fastapi_dependency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "callable>,class:signalwire.core.auth_handler.AuthHandler>" }, - "get_security_config": { + "security_config": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.security_config.SecurityConfig" @@ -1807,13 +4049,13 @@ "verify_api_key": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "api_key", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -1821,13 +4063,13 @@ "verify_basic_auth": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "credentials", - "type": "class:signalwire.core.auth_handler.AuthHandler", - "required": true + "required": true, + "type": "class:signalwire.core.auth_handler.AuthHandler" } ], "returns": "bool" @@ -1835,18 +4077,100 @@ "verify_bearer_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "credentials", - "type": "class:signalwire.core.auth_handler.AuthHandler", - "required": true + "required": true, + "type": "class:signalwire.core.auth_handler.AuthHandler" } ], "returns": "bool" } } + }, + "BasicCredentials": { + "methods": { + "__init__": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "username", + "required": true, + "type": "string" + }, + { + "name": "password", + "required": true, + "type": "string" + } + ], + "returns": "void" + }, + "password": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "username": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + } + } + }, + "BearerCredentials": { + "methods": { + "__init__": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "scheme", + "required": true, + "type": "string" + }, + { + "name": "credentials", + "required": true, + "type": "string" + } + ], + "returns": "void" + }, + "credentials": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "scheme": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + } + } } } }, @@ -1857,18 +4181,27 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" }, + "config_paths": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list" + }, "find_config_file": { "params": [ { "name": "service_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" @@ -1876,13 +4209,13 @@ "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "key_path", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "any" @@ -1890,8 +4223,8 @@ "get_config": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -1899,8 +4232,8 @@ "get_config_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -1908,13 +4241,13 @@ "get_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "section", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -1922,8 +4255,8 @@ "has_config": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -1931,8 +4264,8 @@ "merge_with_env": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -1940,13 +4273,13 @@ "substitute_vars": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "value", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "any" @@ -1962,13 +4295,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" @@ -1976,18 +4309,18 @@ "add_bullets": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "bullets", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.contexts.Context" @@ -1995,18 +4328,18 @@ "add_enter_filler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "language_code", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "fillers", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2014,18 +4347,18 @@ "add_exit_filler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "language_code", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "fillers", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2033,18 +4366,18 @@ "add_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2052,36 +4385,27 @@ "add_step": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "step_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Step" }, - "get_name": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" - }, "get_step": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "step_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2089,32 +4413,41 @@ "move_step": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "step_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "position", - "type": "int", - "required": true + "required": true, + "type": "int" } ], "returns": "class:signalwire.core.contexts.Context" }, + "name": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "remove_step": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "step_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2122,13 +4455,13 @@ "set_consolidate": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "consolidate", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2136,13 +4469,13 @@ "set_enter_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "fillers", - "type": "dict>", - "required": true + "required": true, + "type": "dict>" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2150,13 +4483,13 @@ "set_exit_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "fillers", - "type": "dict>", - "required": true + "required": true, + "type": "dict>" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2164,13 +4497,13 @@ "set_full_reset": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "full_reset", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2178,13 +4511,13 @@ "set_history": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "history", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2192,13 +4525,13 @@ "set_initial_step": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "step_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2206,13 +4539,13 @@ "set_isolated": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "isolated", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2220,13 +4553,13 @@ "set_post_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "post_prompt", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2234,13 +4567,13 @@ "set_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "prompt", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2248,13 +4581,13 @@ "set_system_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "system_prompt", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2262,13 +4595,13 @@ "set_user_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "user_prompt", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2276,13 +4609,13 @@ "set_valid_contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "contexts", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2290,13 +4623,13 @@ "set_valid_steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "steps", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2304,8 +4637,8 @@ "to_dict": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -2317,8 +4650,8 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -2326,13 +4659,13 @@ "add_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2340,13 +4673,13 @@ "attach_tool_name_supplier": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "supplier", - "type": "callable,list>", - "required": true + "required": true, + "type": "callable,list>" } ], "returns": "class:signalwire.core.contexts.ContextBuilder" @@ -2354,13 +4687,13 @@ "get_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Context" @@ -2368,8 +4701,8 @@ "is_empty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -2377,8 +4710,8 @@ "reset": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.contexts.ContextBuilder" @@ -2386,8 +4719,8 @@ "to_dict": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -2395,8 +4728,8 @@ "validate": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -2408,8 +4741,8 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -2417,18 +4750,18 @@ "add_question": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "key", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "question", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.GatherInfo" @@ -2436,8 +4769,8 @@ "get_completion_action": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -2445,8 +4778,8 @@ "get_questions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -2454,8 +4787,8 @@ "to_dict": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -2467,27 +4800,72 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "key", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "question", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" }, - "get_key": { + "confirm": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "bool" + }, + "functions": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list" + }, + "isolated": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "bool" + }, + "key": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "prompt": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "question": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -2495,11 +4873,20 @@ "to_dict": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" + }, + "type": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" } } }, @@ -2508,13 +4895,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" @@ -2522,18 +4909,18 @@ "add_bullets": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "bullets", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2541,18 +4928,18 @@ "add_gather_question": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "key", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "question", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2560,18 +4947,18 @@ "add_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2579,17 +4966,17 @@ "clear_sections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.contexts.Step" }, - "get_name": { + "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -2597,13 +4984,13 @@ "set_end": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "end", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2611,13 +4998,13 @@ "set_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "functions", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2625,28 +5012,28 @@ "set_gather_info": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "output_key", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "completion_action", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "prompt", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "isolated", - "type": "bool", - "required": true + "required": false, + "type": "bool" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2654,13 +5041,13 @@ "set_history": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "history", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2668,13 +5055,13 @@ "set_reset_consolidate": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "consolidate", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2682,13 +5069,13 @@ "set_reset_full_reset": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "full_reset", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2696,13 +5083,13 @@ "set_reset_system_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "system_prompt", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2710,13 +5097,13 @@ "set_reset_user_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "user_prompt", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2724,13 +5111,13 @@ "set_skip_to_next_step": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "skip", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2738,13 +5125,13 @@ "set_skip_user_turn": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "skip", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2752,13 +5139,13 @@ "set_step_criteria": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "criteria", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2766,13 +5153,13 @@ "set_text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "text", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2780,13 +5167,13 @@ "set_valid_contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "contexts", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2794,13 +5181,13 @@ "set_valid_steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "steps", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.contexts.Step" @@ -2808,8 +5195,8 @@ "to_dict": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -2825,13 +5212,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "function_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" @@ -2839,13 +5226,13 @@ "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.data_map.DataMap" @@ -2853,13 +5240,13 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "description", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.data_map.DataMap" @@ -2867,13 +5254,13 @@ "error_keys": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "keys", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.data_map.DataMap" @@ -2881,23 +5268,23 @@ "expression": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "test_value", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "pattern", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "output", - "type": "class:signalwire.core.function_result.FunctionResult", - "required": true + "required": true, + "type": "class:signalwire.core.function_result.FunctionResult" } ], "returns": "class:signalwire.core.data_map.DataMap" @@ -2905,13 +5292,13 @@ "fallback_output": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "result", - "type": "class:signalwire.core.function_result.FunctionResult", - "required": true + "required": true, + "type": "class:signalwire.core.function_result.FunctionResult" } ], "returns": "class:signalwire.core.data_map.DataMap" @@ -2919,22 +5306,22 @@ "foreach": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "foreach_config", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.data_map.DataMap" }, - "get_name": { + "function_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -2942,13 +5329,13 @@ "global_error_keys": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "keys", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.data_map.DataMap" @@ -2956,13 +5343,13 @@ "output": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "result", - "type": "class:signalwire.core.function_result.FunctionResult", - "required": true + "required": true, + "type": "class:signalwire.core.function_result.FunctionResult" } ], "returns": "class:signalwire.core.data_map.DataMap" @@ -2970,23 +5357,23 @@ "parameter": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "param_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "description", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.data_map.DataMap" @@ -2994,13 +5381,13 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.data_map.DataMap" @@ -3008,13 +5395,13 @@ "purpose": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "description", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.data_map.DataMap" @@ -3022,8 +5409,8 @@ "to_swaig_function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -3031,18 +5418,18 @@ "webhook": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "method", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.data_map.DataMap" @@ -3050,13 +5437,13 @@ "webhook_expressions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "expressions", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "class:signalwire.core.data_map.DataMap" @@ -3072,8 +5459,8 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -3081,18 +5468,18 @@ "add_action": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "data", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3100,13 +5487,13 @@ "add_actions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "action_list", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3114,13 +5501,13 @@ "add_dynamic_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "hints", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3128,8 +5515,8 @@ "clear_dynamic_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3137,18 +5524,18 @@ "connect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "destination", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "is_final", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3157,13 +5544,13 @@ "params": [ { "name": "action_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "phrase", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -3172,13 +5559,13 @@ "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "value", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -3187,23 +5574,23 @@ "params": [ { "name": "for_situation", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "pay_actions", - "type": "list>", - "required": true + "required": true, + "type": "list>" }, { "name": "card_type", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "error_type", - "type": "string", - "required": true + "required": false, + "type": "string" } ], "returns": "dict" @@ -3211,13 +5598,13 @@ "enable_extensive_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "enabled", - "type": "bool", - "required": true + "required": false, + "type": "bool" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3225,13 +5612,13 @@ "enable_functions_on_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "enabled", - "type": "bool", - "required": true + "required": false, + "type": "bool" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3239,18 +5626,18 @@ "execute_rpc": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "method", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3258,13 +5645,13 @@ "execute_swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "swml_content", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3272,26 +5659,17 @@ "get_actions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" }, - "get_response": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" - }, "hangup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3299,121 +5677,112 @@ "hold": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "timeout", - "type": "int", - "required": true + "required": false, + "type": "int" } ], "returns": "class:signalwire.core.function_result.FunctionResult" }, - "is_post_process": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "bool" - }, "join_conference": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "muted", - "type": "bool", - "required": true + "required": false, + "type": "bool" }, { "name": "beep", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "start_on_enter", - "type": "bool", - "required": true + "required": false, + "type": "bool" }, { "name": "end_on_exit", - "type": "bool", - "required": true + "required": false, + "type": "bool" }, { "name": "wait_url", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "max_participants", - "type": "int", - "required": true + "required": false, + "type": "int" }, { "name": "record", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "region", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "trim", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "coach", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "status_callback_event", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "status_callback", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "status_callback_method", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "recording_status_callback", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "recording_status_callback_method", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "recording_status_callback_event", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "result", - "type": "any", - "required": true + "required": false, + "type": "any" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3421,13 +5790,13 @@ "join_room": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3435,103 +5804,103 @@ "pay": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "connector_url", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "input_method", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "status_url", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "payment_method", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "timeout", - "type": "int", - "required": true + "required": false, + "type": "int" }, { "name": "max_attempts", - "type": "int", - "required": true + "required": false, + "type": "int" }, { "name": "security_code", - "type": "bool", - "required": true + "required": false, + "type": "bool" }, { "name": "postal_code", - "type": "any", - "required": true + "required": false, + "type": "any" }, { "name": "min_postal_code_length", - "type": "int", - "required": true + "required": false, + "type": "int" }, { "name": "token_type", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "charge_amount", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "currency", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "language", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "voice", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "description", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "valid_card_types", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "parameters", - "type": "list>", - "required": true + "required": false, + "type": "list>" }, { "name": "prompts", - "type": "list>", - "required": true + "required": false, + "type": "list>" }, { "name": "ai_response", - "type": "string", - "required": true + "required": false, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3539,77 +5908,86 @@ "play_background_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "filename", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" }, + "post_process": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "bool" + }, "record_call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "stereo", - "type": "bool", - "required": true + "required": false, + "type": "bool" }, { "name": "format", - "type": "class:signalwire.swml.RecordFormat", - "required": true + "required": false, + "type": "class:signalwire.swml.RecordFormat" }, { "name": "direction", - "type": "class:signalwire.swml.RecordDirection", - "required": true + "required": false, + "type": "class:signalwire.swml.RecordDirection" }, { "name": "terminators", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "beep", - "type": "bool", - "required": true + "required": false, + "type": "bool" }, { "name": "input_sensitivity", - "type": "float", - "required": true + "required": false, + "type": "float" }, { "name": "initial_timeout", - "type": "float", - "required": true + "required": false, + "type": "float" }, { "name": "end_silence_timeout", - "type": "float", - "required": true + "required": false, + "type": "float" }, { "name": "max_length", - "type": "float", - "required": true + "required": false, + "type": "float" }, { "name": "status_url", - "type": "string", - "required": true + "required": false, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3617,13 +5995,13 @@ "remove_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "keys", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3631,13 +6009,13 @@ "remove_metadata": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "keys", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3645,37 +6023,46 @@ "replace_in_history": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "summary", - "type": "bool", - "required": true + "required": false, + "type": "bool" } ], "returns": "class:signalwire.core.function_result.FunctionResult" }, + "response": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "rpc_ai_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "message_text", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "role", - "type": "string", - "required": true + "required": false, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3683,13 +6070,13 @@ "rpc_ai_unhold": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3697,28 +6084,28 @@ "rpc_dial": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "to_number", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "from_number", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "dest_swml", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "device_type", - "type": "string", - "required": true + "required": false, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3726,13 +6113,13 @@ "say": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "text", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3740,38 +6127,38 @@ "send_sms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "to_number", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "from_number", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "media", - "type": "list", - "required": true + "required": false, + "type": "list" }, { "name": "tags", - "type": "list", - "required": true + "required": false, + "type": "list" }, { "name": "region", - "type": "string", - "required": true + "required": false, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3779,13 +6166,13 @@ "set_end_of_speech_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "milliseconds", - "type": "int", - "required": true + "required": true, + "type": "int" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3793,13 +6180,13 @@ "set_metadata": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3807,13 +6194,13 @@ "set_post_process": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "post_process", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3821,13 +6208,13 @@ "set_response": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "response", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3835,13 +6222,13 @@ "set_speech_event_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "milliseconds", - "type": "int", - "required": true + "required": true, + "type": "int" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3849,13 +6236,13 @@ "simulate_user_input": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "text", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3863,13 +6250,13 @@ "sip_refer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "to_uri", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3877,8 +6264,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3886,8 +6273,8 @@ "stop_background_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3895,8 +6282,8 @@ "stop_record_call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3904,8 +6291,8 @@ "stop_tap": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3913,13 +6300,13 @@ "switch_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "system_prompt", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3927,13 +6314,13 @@ "swml_change_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "context_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3941,13 +6328,13 @@ "swml_change_step": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "step_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3955,23 +6342,23 @@ "swml_transfer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "dest", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "ai_response", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "is_final", - "type": "bool", - "required": true + "required": false, + "type": "bool" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3979,13 +6366,13 @@ "swml_user_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3993,38 +6380,38 @@ "tap": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "uri", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "control_id", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "direction", - "type": "class:signalwire.swml.TapDirection", - "required": true + "required": false, + "type": "class:signalwire.swml.TapDirection" }, { "name": "codec", - "type": "class:signalwire.swml.Codec", - "required": true + "required": false, + "type": "class:signalwire.swml.Codec" }, { "name": "rtp_ptime", - "type": "int", - "required": true + "required": false, + "type": "int" }, { "name": "status_url", - "type": "string", - "required": true + "required": false, + "type": "string" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4032,8 +6419,8 @@ "to_dict": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -4041,8 +6428,8 @@ "to_json": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -4050,13 +6437,13 @@ "toggle_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "toggles", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4064,13 +6451,13 @@ "update_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4078,13 +6465,13 @@ "update_settings": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "settings", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4092,8 +6479,8 @@ "wait_for_user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4106,30 +6493,16 @@ "classes": { "Logger": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "name", - "type": "string", - "required": true - } - ], - "returns": "void" - }, "debug": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "message", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" @@ -4137,13 +6510,13 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "message", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" @@ -4152,26 +6525,16 @@ "params": [], "returns": "class:signalwire.logging.Logger" }, - "get_logger": { - "params": [ - { - "name": "clazz", - "type": "any", - "required": true - } - ], - "returns": "class:signalwire.logging.Logger" - }, "info": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "message", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" @@ -4179,13 +6542,13 @@ "is_enabled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "level", - "type": "class:signalwire.logging.Logger", - "required": true + "required": true, + "type": "class:signalwire.logging.Logger" } ], "returns": "bool" @@ -4194,8 +6557,8 @@ "params": [ { "name": "level", - "type": "class:signalwire.logging.Logger", - "required": true + "required": true, + "type": "class:signalwire.logging.Logger" } ], "returns": "void" @@ -4203,13 +6566,13 @@ "warn": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "message", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" @@ -4226,6 +6589,16 @@ "params": [], "returns": "string" }, + "get_logger": { + "params": [ + { + "name": "name", + "required": true, + "type": "string" + } + ], + "returns": "any" + }, "reset_logging_configuration": { "params": [], "returns": "void" @@ -4234,8 +6607,8 @@ "params": [ { "name": "value", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" @@ -4249,18 +6622,18 @@ "add_function_include": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "functions", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4268,13 +6641,13 @@ "add_hint": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "hint", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4282,13 +6655,13 @@ "add_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "new_hints", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4296,18 +6669,18 @@ "add_internal_filler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "text", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "file", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4315,48 +6688,48 @@ "add_language": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "code", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "voice", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "speech_fillers", - "type": "list", - "required": true + "required": false, + "type": "list" }, { "name": "function_fillers", - "type": "list", - "required": true + "required": false, + "type": "list" }, { "name": "engine", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "model", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "params", - "type": "dict", - "required": true + "required": false, + "type": "dict" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4364,13 +6737,13 @@ "add_mcp_server": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4378,28 +6751,28 @@ "add_pattern_hint": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "hint", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "pattern", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "replace", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "ignore_case", - "type": "bool", - "required": true + "required": false, + "type": "bool" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4407,23 +6780,23 @@ "add_pronunciation": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "replace", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "with", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "ignore_case", - "type": "bool", - "required": true + "required": false, + "type": "bool" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4431,8 +6804,8 @@ "enable_debug_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4440,8 +6813,8 @@ "enable_mcp_server": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4449,13 +6822,13 @@ "get_language_params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "code", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -4463,13 +6836,13 @@ "set_function_includes": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "includes", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4477,13 +6850,13 @@ "set_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4491,13 +6864,13 @@ "set_internal_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "fillers", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4505,18 +6878,18 @@ "set_language_params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "code", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4524,13 +6897,13 @@ "set_languages": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "langs", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4538,13 +6911,13 @@ "set_multilingual": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "config", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4552,13 +6925,13 @@ "set_native_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "funcs", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4566,18 +6939,18 @@ "set_param": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "key", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "value", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4585,13 +6958,13 @@ "set_params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "new_params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4599,13 +6972,13 @@ "set_post_prompt_llm_params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "llm_params", - "type": "dict", - "required": false + "required": false, + "type": "dict" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4613,13 +6986,13 @@ "set_prompt_llm_params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "llm_params", - "type": "dict", - "required": false + "required": false, + "type": "dict" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4627,13 +7000,13 @@ "set_pronunciations": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "prons", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4641,13 +7014,13 @@ "update_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4660,33 +7033,33 @@ "classes": { "AuthMixin": { "methods": { + "get_basic_auth_credentials": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list" + }, "validate_basic_auth": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "username", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "password", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" - }, - "get_basic_auth_credentials": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "list" } } } @@ -4699,8 +7072,8 @@ "contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.contexts.ContextBuilder" @@ -4708,8 +7081,8 @@ "define_contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.contexts.ContextBuilder" @@ -4717,8 +7090,8 @@ "get_post_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -4726,8 +7099,8 @@ "get_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -4735,18 +7108,18 @@ "prompt_add_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4754,23 +7127,23 @@ "prompt_add_subsection": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "parent_title", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4778,18 +7151,18 @@ "prompt_add_to_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "bullets", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4797,13 +7170,13 @@ "prompt_has_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -4811,8 +7184,8 @@ "reset_contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4820,13 +7193,13 @@ "set_post_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "text", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4834,13 +7207,13 @@ "set_prompt_pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "pom", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4848,13 +7221,13 @@ "set_prompt_text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "text", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4870,13 +7243,13 @@ "add_skill": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "skill_name", - "type": "class:signalwire.skills.SkillName", - "required": true + "required": true, + "type": "class:signalwire.skills.SkillName" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4884,13 +7257,13 @@ "has_skill": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "skill_name", - "type": "class:signalwire.skills.SkillName", - "required": true + "required": true, + "type": "class:signalwire.skills.SkillName" } ], "returns": "bool" @@ -4898,8 +7271,8 @@ "list_skills": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -4907,13 +7280,13 @@ "remove_skill": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "skill_name", - "type": "class:signalwire.skills.SkillName", - "required": true + "required": true, + "type": "class:signalwire.skills.SkillName" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4929,23 +7302,23 @@ "validate_tool_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "function_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "token", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -4961,13 +7334,13 @@ "define_tool": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "tool_def", - "type": "class:signalwire.swaig.ToolDefinition", - "required": true + "required": true, + "type": "class:signalwire.swaig.ToolDefinition" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4975,13 +7348,13 @@ "define_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "tool_defs", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -4989,23 +7362,23 @@ "on_function_call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "args", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "raw_data", - "type": "dict", - "required": true + "required": false, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -5013,13 +7386,13 @@ "register_swaig_function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "swaig_func", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -5035,8 +7408,8 @@ "as_router": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.web.HostAppRouter" @@ -5044,8 +7417,8 @@ "enable_debug_routes": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -5053,8 +7426,8 @@ "get_app": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5062,13 +7435,13 @@ "manual_set_proxy_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -5076,18 +7449,18 @@ "on_request": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "request_data", - "type": "dict", - "required": true + "required": false, + "type": "dict" }, { "name": "callback_path", - "type": "string", - "required": true + "required": false, + "type": "string" } ], "returns": "dict" @@ -5095,18 +7468,18 @@ "on_swml_request": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "request_data", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "callback_path", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -5114,13 +7487,13 @@ "register_routing_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "callback", - "type": "callable,dict>,string>", - "required": true + "required": true, + "type": "callable,dict>,string>" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -5128,8 +7501,8 @@ "run": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -5137,8 +7510,8 @@ "serve": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -5146,13 +7519,13 @@ "set_dynamic_config_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "callback", - "type": "class:signalwire.core.agent_base.AgentBase", - "required": true + "required": true, + "type": "class:signalwire.core.agent_base.AgentBase" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -5160,8 +7533,8 @@ "setup_graceful_shutdown": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -5177,8 +7550,8 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -5186,13 +7559,13 @@ "add_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.pom_builder.PomBuilder" @@ -5200,23 +7573,23 @@ "add_subsection": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "parent_title", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.pom_builder.PomBuilder" @@ -5224,28 +7597,28 @@ "add_to_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "bullet", - "type": "string", - "required": true + "required": false, + "type": "string" }, { "name": "bullets", - "type": "list", - "required": true + "required": false, + "type": "list" } ], "returns": "class:signalwire.core.pom_builder.PomBuilder" @@ -5254,8 +7627,8 @@ "params": [ { "name": "sections", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "class:signalwire.core.pom_builder.PomBuilder" @@ -5263,13 +7636,13 @@ "get_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.swml_verbs_generated.Section" @@ -5277,13 +7650,13 @@ "has_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -5291,8 +7664,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.pom.pom.PromptObjectModel" @@ -5300,8 +7673,8 @@ "render_markdown": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -5309,8 +7682,8 @@ "render_xml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -5318,8 +7691,8 @@ "to_dict": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -5327,8 +7700,8 @@ "to_json": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -5344,8 +7717,8 @@ "SWMLCall": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5353,8 +7726,8 @@ "SWMLVars": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5362,8 +7735,8 @@ "action": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5371,8 +7744,8 @@ "ai_end_date": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5380,8 +7753,8 @@ "ai_id_tag": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5389,8 +7762,8 @@ "ai_session_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5398,8 +7771,8 @@ "ai_start_date": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5407,8 +7780,8 @@ "app_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5416,8 +7789,8 @@ "call_answer_date": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5425,8 +7798,8 @@ "call_end_date": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5434,8 +7807,8 @@ "call_ended_by": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5443,8 +7816,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5452,8 +7825,8 @@ "call_log": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5461,8 +7834,8 @@ "call_start_date": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5470,8 +7843,8 @@ "call_timeline": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5479,8 +7852,8 @@ "caller_id_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5488,8 +7861,8 @@ "caller_id_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5497,8 +7870,8 @@ "content_disposition": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5506,8 +7879,8 @@ "content_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5515,8 +7888,8 @@ "conversation_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5524,8 +7897,8 @@ "conversation_summary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5533,8 +7906,8 @@ "conversation_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5542,8 +7915,8 @@ "global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5551,8 +7924,8 @@ "hard_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5560,8 +7933,8 @@ "post_prompt_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5569,8 +7942,8 @@ "previous_contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5578,8 +7951,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5587,8 +7960,8 @@ "raw_call_log": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5596,8 +7969,8 @@ "space_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5605,8 +7978,8 @@ "swaig_log": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5614,8 +7987,8 @@ "times": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5623,8 +7996,8 @@ "total_asr_cost_factor": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5632,8 +8005,8 @@ "total_asr_minutes": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5641,8 +8014,8 @@ "total_input_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5650,8 +8023,8 @@ "total_minutes": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5659,8 +8032,8 @@ "total_output_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5668,8 +8041,8 @@ "total_tts_chars": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5677,8 +8050,8 @@ "total_tts_chars_per_min": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5686,8 +8059,8 @@ "total_wire_input_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5695,8 +8068,8 @@ "total_wire_input_tokens_per_minute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5704,8 +8077,8 @@ "total_wire_output_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5713,8 +8086,8 @@ "total_wire_output_tokens_per_minute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5726,8 +8099,8 @@ "acoustic_latency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5735,8 +8108,8 @@ "audio_latency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5744,8 +8117,8 @@ "barge_elapsed_ms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5753,8 +8126,8 @@ "barged": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5762,8 +8135,8 @@ "content": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5771,8 +8144,8 @@ "dg_decision_latency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5780,8 +8153,8 @@ "eos_to_push_latency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5789,8 +8162,8 @@ "last_word_end_wall_us": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5798,8 +8171,8 @@ "latency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5807,8 +8180,8 @@ "poll": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5816,8 +8189,8 @@ "role": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5825,8 +8198,8 @@ "speech_start_wall_us": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5834,8 +8207,8 @@ "stamps_us": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5843,8 +8216,8 @@ "status_pushed_wall_us": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5852,8 +8225,8 @@ "text_heard_approx": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5861,8 +8234,8 @@ "text_spoken_total": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5870,8 +8243,8 @@ "timestamp": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5879,8 +8252,8 @@ "tool_calls": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5888,8 +8261,8 @@ "turn_decided_wall_us": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5897,8 +8270,8 @@ "utterance_latency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5910,8 +8283,8 @@ "parsed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5919,8 +8292,8 @@ "raw": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5928,8 +8301,8 @@ "substituted": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5941,8 +8314,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5950,8 +8323,8 @@ "valid": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5959,8 +8332,8 @@ "value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5972,8 +8345,8 @@ "basis": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5981,8 +8354,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -5994,8 +8367,8 @@ "first_audio": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6003,8 +8376,8 @@ "first_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6012,8 +8385,8 @@ "first_utterance": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6021,8 +8394,8 @@ "last_word_end": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6030,8 +8403,8 @@ "request_detect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6039,8 +8412,8 @@ "speech_start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6048,8 +8421,8 @@ "status_pushed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6057,8 +8430,8 @@ "suspected_end": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6066,8 +8439,8 @@ "turn_decided": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6079,8 +8452,8 @@ "active_count": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6088,8 +8461,8 @@ "command_arg": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6097,8 +8470,8 @@ "command_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6106,8 +8479,8 @@ "delayed_post_response": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6115,8 +8488,8 @@ "epoch_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6124,8 +8497,8 @@ "mcp_error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6133,8 +8506,8 @@ "mcp_response": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6142,8 +8515,8 @@ "mcp_tool": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6151,8 +8524,8 @@ "mcp_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6160,8 +8533,8 @@ "native": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6169,8 +8542,8 @@ "post_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6178,8 +8551,8 @@ "post_response": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6187,8 +8560,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6200,8 +8573,8 @@ "content": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6209,8 +8582,8 @@ "role": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6218,8 +8591,8 @@ "timestamp": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6231,8 +8604,8 @@ "action": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6240,8 +8613,8 @@ "content": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6249,8 +8622,8 @@ "content_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6258,8 +8631,8 @@ "context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6267,8 +8640,8 @@ "lang": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6276,8 +8649,8 @@ "metadata": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6285,8 +8658,8 @@ "role": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6294,8 +8667,8 @@ "step": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6303,8 +8676,8 @@ "step_index": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6312,8 +8685,8 @@ "timestamp": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6321,8 +8694,8 @@ "tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6334,8 +8707,8 @@ "content": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6343,8 +8716,8 @@ "lang": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6352,8 +8725,8 @@ "role": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6361,8 +8734,8 @@ "timestamp": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6370,8 +8743,8 @@ "tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6383,8 +8756,8 @@ "answer_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6392,8 +8765,8 @@ "avg_tps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6401,8 +8774,8 @@ "response": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6410,8 +8783,8 @@ "response_word_count": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6419,8 +8792,8 @@ "token_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6428,8 +8801,8 @@ "tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6437,8 +8810,8 @@ "tps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6450,8 +8823,8 @@ "commit_latency_ms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6459,8 +8832,8 @@ "hold_ms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6468,8 +8841,8 @@ "segments": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6477,8 +8850,8 @@ "walkbacks": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6490,8 +8863,8 @@ "audio_latency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6499,8 +8872,8 @@ "content": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6508,8 +8881,8 @@ "deprecation_warning": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6517,8 +8890,8 @@ "distilled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6526,8 +8899,8 @@ "end_timestamp": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6535,8 +8908,8 @@ "execution_latency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6544,8 +8917,8 @@ "function_latency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6553,8 +8926,8 @@ "function_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6562,8 +8935,8 @@ "latency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6571,8 +8944,8 @@ "original_result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6580,8 +8953,8 @@ "role": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6589,8 +8962,8 @@ "start_timestamp": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6598,8 +8971,8 @@ "timestamp": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6607,8 +8980,8 @@ "tool_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6616,8 +8989,8 @@ "utterance_latency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6629,8 +9002,8 @@ "barge_count": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6638,8 +9011,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6647,8 +9020,8 @@ "content": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6656,8 +9029,8 @@ "content_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6665,8 +9038,8 @@ "end_timestamp": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6674,8 +9047,8 @@ "entity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6683,8 +9056,8 @@ "eot": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6692,8 +9065,8 @@ "merge_count": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6701,8 +9074,8 @@ "merged": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6710,8 +9083,8 @@ "role": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6719,8 +9092,8 @@ "speaker": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6728,8 +9101,8 @@ "speaking_to_final_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6737,8 +9110,8 @@ "speaking_to_turn_detection": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6746,8 +9119,8 @@ "start_timestamp": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6755,8 +9128,8 @@ "timestamp": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6764,8 +9137,8 @@ "timing": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6773,8 +9146,8 @@ "turn_detection_to_final_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -6789,8 +9162,8 @@ "params": [ { "name": "headers", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" @@ -6799,8 +9172,8 @@ "params": [ { "name": "host", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -6809,8 +9182,8 @@ "params": [ { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" @@ -6824,8 +9197,8 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -6833,13 +9206,13 @@ "activate_session": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -6847,8 +9220,8 @@ "create_session": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -6856,18 +9229,18 @@ "create_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "function_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" @@ -6875,18 +9248,18 @@ "create_tool_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "function_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" @@ -6894,13 +9267,13 @@ "debug_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "token", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -6908,13 +9281,13 @@ "end_session": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -6922,18 +9295,18 @@ "generate_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "function_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" @@ -6941,27 +9314,36 @@ "get_session_metadata": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" }, + "secret_key": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "set_debug_mode": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "debug_mode", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "void" @@ -6969,47 +9351,56 @@ "set_session_metadata": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "key", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "value", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "bool" }, + "token_expiry_secs": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "int" + }, "validate_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "token", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "function_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -7017,23 +9408,23 @@ "validate_tool_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "function_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "token", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -7048,29 +9439,29 @@ "params": [ { "name": "method", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "headers", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "body", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "signing_key", "kind": "keyword", - "type": "string", - "required": true + "name": "signing_key", + "required": true, + "type": "string" } ], "returns": "optional,string>>" @@ -7083,23 +9474,23 @@ "params": [ { "name": "signing_key", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "signature", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "params_or_raw_body", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "bool" @@ -7108,23 +9499,23 @@ "params": [ { "name": "signing_key", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "signature", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "raw_body", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -7138,8 +9529,8 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -7147,8 +9538,8 @@ "get_allowed_hosts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -7156,8 +9547,8 @@ "get_basic_auth": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -7165,8 +9556,8 @@ "get_basic_auth_password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -7174,8 +9565,8 @@ "get_basic_auth_user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -7183,8 +9574,8 @@ "get_cors_config": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -7192,8 +9583,8 @@ "get_cors_origins": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -7201,8 +9592,8 @@ "get_domain": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -7210,8 +9601,8 @@ "get_hsts_max_age": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "int" @@ -7219,8 +9610,8 @@ "get_max_request_size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "int" @@ -7228,8 +9619,8 @@ "get_rate_limit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "int" @@ -7237,8 +9628,8 @@ "get_request_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "int" @@ -7246,8 +9637,8 @@ "get_security_headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -7255,8 +9646,8 @@ "get_ssl_cert_path": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -7264,8 +9655,8 @@ "get_ssl_context_kwargs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -7273,8 +9664,8 @@ "get_ssl_key_path": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -7282,8 +9673,8 @@ "get_ssl_verify_mode": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -7291,8 +9682,8 @@ "get_url_scheme": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -7300,8 +9691,8 @@ "is_ssl_enabled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -7309,8 +9700,8 @@ "is_use_hsts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -7318,8 +9709,8 @@ "load_from_env": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -7327,13 +9718,13 @@ "log_config": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "service_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" @@ -7341,13 +9732,13 @@ "should_allow_host": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "host", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -7355,8 +9746,8 @@ "validate_ssl_config": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.security_config.SecurityConfig" @@ -7369,11 +9760,39 @@ "classes": { "SkillBase": { "methods": { + "__init__": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "agent", + "required": true, + "type": "class:signalwire.core.agent_base.AgentBase" + }, + { + "name": "params", + "required": true, + "type": "dict" + } + ], + "returns": "void" + }, + "agent": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.core.agent_base.AgentBase" + }, "cleanup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -7381,28 +9800,28 @@ "define_tool": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "description", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "parameters", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "handler", - "type": "class:signalwire.swaig.ToolHandler", - "required": true + "required": true, + "type": "class:signalwire.swaig.ToolHandler" } ], "returns": "class:signalwire.swaig.ToolDefinition" @@ -7410,8 +9829,8 @@ "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -7419,8 +9838,8 @@ "get_extra_fields": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -7428,8 +9847,8 @@ "get_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -7437,8 +9856,8 @@ "get_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -7446,8 +9865,8 @@ "get_instance_key": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -7455,8 +9874,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -7464,8 +9883,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -7473,8 +9892,8 @@ "get_prompt_sections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -7482,8 +9901,8 @@ "get_required_env_vars": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -7491,8 +9910,8 @@ "get_required_packages": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -7500,13 +9919,13 @@ "get_skill_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "raw_data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" @@ -7514,8 +9933,8 @@ "get_swaig_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -7523,17 +9942,26 @@ "get_version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, + "params": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "dict" + }, "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -7541,13 +9969,13 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "bool" @@ -7555,8 +9983,8 @@ "supports_multiple_instances": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -7564,18 +9992,18 @@ "update_skill_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "result", - "type": "class:signalwire.core.function_result.FunctionResult", - "required": true + "required": true, + "type": "class:signalwire.core.function_result.FunctionResult" }, { "name": "data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -7583,8 +10011,8 @@ "validate_env_vars": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -7592,8 +10020,8 @@ "validate_packages": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -7609,13 +10037,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "agent", - "type": "class:signalwire.core.agent_base.AgentBase", - "required": true + "required": true, + "type": "class:signalwire.core.agent_base.AgentBase" } ], "returns": "void" @@ -7623,27 +10051,36 @@ "add_skill": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "skill_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, + "agent": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.core.agent_base.AgentBase" + }, "cleanup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -7651,13 +10088,13 @@ "get_skill": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "skill_identifier", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.skill_base.SkillBase" @@ -7665,13 +10102,13 @@ "has_skill": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "skill_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -7679,8 +10116,8 @@ "list_loaded_skills": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -7688,8 +10125,8 @@ "list_skills": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -7697,18 +10134,18 @@ "load_skill": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "skill_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "bool" @@ -7716,8 +10153,8 @@ "loaded_skills": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -7725,13 +10162,13 @@ "remove_skill": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "skill_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" @@ -7739,13 +10176,13 @@ "unload_skill": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "skill_identifier", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -7761,8 +10198,8 @@ "consolidate": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -7770,8 +10207,8 @@ "full_reset": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -7779,8 +10216,8 @@ "system_pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -7788,8 +10225,8 @@ "system_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -7797,8 +10234,8 @@ "user_pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -7806,8 +10243,8 @@ "user_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -7819,8 +10256,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -7832,8 +10269,8 @@ "file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -7841,8 +10278,8 @@ "wait": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -7854,8 +10291,8 @@ "dest": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -7863,8 +10300,8 @@ "summarize": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -7884,185 +10321,185 @@ "call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "args", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "raw_data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "any" }, + "description": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "execute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "args", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "raw_data", - "type": "dict", - "required": true + "required": false, + "type": "dict" } ], "returns": "dict" }, - "get_description": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" - }, - "get_extra_swaig_fields": { + "extra_swaig_fields": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" }, - "get_fillers": { + "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" }, - "get_handler": { + "handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" }, - "get_name": { + "is_external": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "bool" }, - "get_parameters": { + "is_typed_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "dict" + "returns": "bool" }, - "get_required": { + "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "list" + "returns": "string" }, - "get_wait_file": { + "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "dict" }, - "get_wait_file_loops": { + "required": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "int" + "returns": "list" }, - "get_webhook_url": { + "secure": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "bool" }, - "is_external": { + "to_swaig": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "base_url", + "required": true, + "type": "string" } ], - "returns": "bool" + "returns": "dict" }, - "is_secure": { + "validate_args": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "args", + "required": true, + "type": "dict" } ], - "returns": "bool" + "returns": "class:signalwire.core.swaig_function.SWAIGFunction" }, - "is_typed_handler": { + "wait_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "bool" + "returns": "string" }, - "to_swaig": { + "wait_file_loops": { "params": [ { - "name": "self", - "kind": "self" - }, - { - "name": "base_url", - "type": "string", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "dict" + "returns": "int" }, - "validate_args": { + "webhook_url": { "params": [ { - "name": "self", - "kind": "self" - }, - { - "name": "args", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.core.swaig_function.SWAIGFunction" + "returns": "string" } } } @@ -8075,8 +10512,8 @@ "parsed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8084,8 +10521,8 @@ "raw": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8093,8 +10530,8 @@ "substituted": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8106,8 +10543,8 @@ "ai_session_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8115,8 +10552,8 @@ "app_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8124,8 +10561,8 @@ "args": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8133,8 +10570,8 @@ "argument": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8142,8 +10579,8 @@ "argument_desc": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8151,8 +10588,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8160,8 +10597,8 @@ "call_log": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8169,8 +10606,8 @@ "caller_id_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8178,8 +10615,8 @@ "caller_id_num": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8187,8 +10624,8 @@ "channel_active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8196,8 +10633,8 @@ "channel_offhook": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8205,8 +10642,8 @@ "channel_ready": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8214,8 +10651,8 @@ "content_disposition": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8223,8 +10660,8 @@ "content_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8232,8 +10669,8 @@ "conversation_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8241,8 +10678,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8250,8 +10687,8 @@ "error_reason": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8259,8 +10696,8 @@ "fatal_error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8268,8 +10705,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8277,8 +10714,8 @@ "global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8286,8 +10723,8 @@ "input": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8295,8 +10732,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8304,8 +10741,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8313,8 +10750,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8322,8 +10759,8 @@ "raw_call_log": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8331,8 +10768,8 @@ "space_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8340,8 +10777,8 @@ "version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -8357,13 +10794,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "service", - "type": "class:signalwire.core.swml_service.SWMLService", - "required": true + "required": true, + "type": "class:signalwire.core.swml_service.SWMLService" } ], "returns": "void" @@ -8371,13 +10808,13 @@ "add_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "section_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.swml_builder.SWMLBuilder" @@ -8385,13 +10822,13 @@ "ai": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "config", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_builder.SWMLBuilder" @@ -8399,8 +10836,8 @@ "answer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.swml_builder.SWMLBuilder" @@ -8408,26 +10845,17 @@ "build": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" }, - "get_service": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "class:signalwire.core.swml_service.SWMLService" - }, "hangup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.swml_builder.SWMLBuilder" @@ -8435,13 +10863,13 @@ "play": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "config", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_builder.SWMLBuilder" @@ -8449,8 +10877,8 @@ "render": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -8458,8 +10886,8 @@ "reset": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.swml_builder.SWMLBuilder" @@ -8467,27 +10895,36 @@ "say": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "text", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.swml_builder.SWMLBuilder" }, + "service": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.core.swml_service.SWMLService" + }, "sleep_verb": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "milliseconds", - "type": "int", - "required": true + "required": true, + "type": "int" } ], "returns": "class:signalwire.core.swml_builder.SWMLBuilder" @@ -8495,18 +10932,18 @@ "verb": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "config", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_builder.SWMLBuilder" @@ -8519,25 +10956,16 @@ "classes": { "AIVerbHandler": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "build_config": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "kwargs", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" @@ -8545,8 +10973,8 @@ "get_verb_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -8554,13 +10982,13 @@ "validate_config": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "config", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_handler.SWMLVerbHandler" @@ -8569,25 +10997,16 @@ }, "SWMLVerbHandler": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "build_config": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "kwargs", - "type": "dict", - "required": false + "required": false, + "type": "dict" } ], "returns": "dict" @@ -8595,8 +11014,8 @@ "get_verb_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -8604,13 +11023,13 @@ "validate_config": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "config", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_handler.SWMLVerbHandler" @@ -8622,8 +11041,8 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -8631,13 +11050,13 @@ "get_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.swml_handler.SWMLVerbHandler" @@ -8645,8 +11064,8 @@ "handler_names": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -8654,13 +11073,13 @@ "has_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -8668,13 +11087,13 @@ "register_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "handler", - "type": "class:signalwire.core.swml_handler.SWMLVerbHandler", - "required": true + "required": true, + "type": "class:signalwire.core.swml_handler.SWMLVerbHandler" } ], "returns": "void" @@ -8691,13 +11110,13 @@ "params": [ { "name": "response_text", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "service", - "type": "class:signalwire.core.swml_service.SWMLService", - "required": true + "required": true, + "type": "class:signalwire.core.swml_service.SWMLService" } ], "returns": "string" @@ -8706,8 +11125,8 @@ "params": [ { "name": "opts", - "type": "class:signalwire.core.swml_renderer.SwmlRenderer", - "required": true + "required": true, + "type": "class:signalwire.core.swml_renderer.SwmlRenderer" } ], "returns": "string" @@ -8723,13 +11142,53 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "name": "route", + "required": false, + "type": "string" + }, + { + "name": "host", + "required": false, + "type": "string" + }, + { + "name": "port", + "required": false, + "type": "int" + }, + { + "name": "auth_user", + "required": false, + "type": "string" + }, + { + "name": "auth_password", + "required": false, + "type": "string" + }, + { + "name": "schema_path", + "required": false, + "type": "string" + }, + { + "name": "config_file", + "required": false, + "type": "string" + }, + { + "name": "schema_validation", + "required": false, + "type": "bool" } ], "returns": "void" @@ -8737,13 +11196,13 @@ "add_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "section_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -8751,18 +11210,18 @@ "add_verb": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "verb_data", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -8770,23 +11229,23 @@ "add_verb_to_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "section_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "verb_data", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -8794,13 +11253,13 @@ "ai": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -8808,13 +11267,13 @@ "amazon_bedrock": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -8822,13 +11281,13 @@ "answer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -8836,8 +11295,8 @@ "as_router": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.web.HostAppRouter" @@ -8845,8 +11304,8 @@ "close": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -8854,13 +11313,13 @@ "cond": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "conditions", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -8868,13 +11327,13 @@ "connect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { - "name": "params", - "type": "dict", - "required": true + "name": "config", + "required": true, + "type": "class:signalwire.core.swml_verbs_generated.ConnectConfig" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -8882,13 +11341,13 @@ "define_tool": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "tool_def", - "type": "class:signalwire.swaig.ToolDefinition", - "required": true + "required": true, + "type": "class:signalwire.swaig.ToolDefinition" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -8896,13 +11355,13 @@ "define_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "tool_defs", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -8910,13 +11369,13 @@ "denoise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -8924,27 +11383,36 @@ "detect_machine": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" }, + "domain": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "enter_queue": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -8952,13 +11420,13 @@ "execute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -8967,8 +11435,8 @@ "params": [ { "name": "request_body", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "string" @@ -8976,8 +11444,8 @@ "full_validation_enabled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -8985,8 +11453,8 @@ "get_all_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -8994,8 +11462,8 @@ "get_auth_password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -9003,8 +11471,8 @@ "get_auth_user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -9012,8 +11480,8 @@ "get_basic_auth_credentials": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -9021,17 +11489,26 @@ "get_basic_auth_credentials_with_source": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" }, + "get_config_file": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "get_document": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.datasphere_types_generated.Document" @@ -9039,13 +11516,13 @@ "get_function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.swaig.ToolDefinition" @@ -9053,8 +11530,8 @@ "get_registered_swaig_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -9062,22 +11539,31 @@ "get_registered_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" }, + "get_schema_path": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "goto_label": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9085,29 +11571,29 @@ "handle_request": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "method", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "headers", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { + "default": null, "name": "body", - "type": "optional>", "required": false, - "default": null + "type": "optional>" } ], "returns": "tuple,string>" @@ -9115,8 +11601,8 @@ "hangup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9124,13 +11610,31 @@ "has_function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" + } + ], + "returns": "bool" + }, + "host": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "is_schema_validation": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -9138,13 +11642,13 @@ "join_conference": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9152,13 +11656,13 @@ "join_room": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9166,13 +11670,13 @@ "label": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9180,8 +11684,8 @@ "list_tool_names": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -9189,13 +11693,13 @@ "live_transcribe": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9203,13 +11707,13 @@ "live_translate": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9217,37 +11721,46 @@ "manual_set_proxy_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "proxy_url", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.swml_service.SWMLService" }, + "name": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "on_function_call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "func_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "args", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "raw_data", - "type": "dict", - "required": true + "required": false, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -9255,18 +11768,18 @@ "on_request": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "request_data", - "type": "dict", - "required": true + "required": false, + "type": "dict" }, { "name": "callback_path", - "type": "string", - "required": true + "required": false, + "type": "string" } ], "returns": "dict" @@ -9274,18 +11787,18 @@ "on_swml_request": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "request_data", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "callback_path", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -9293,13 +11806,13 @@ "pay": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9307,27 +11820,36 @@ "play": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" }, + "port": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "int" + }, "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9335,13 +11857,13 @@ "receive_fax": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9349,13 +11871,13 @@ "record": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9363,13 +11885,13 @@ "record_call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9377,13 +11899,13 @@ "register_routing_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "callback", - "type": "callable,dict>,string>", - "required": true + "required": true, + "type": "callable,dict>,string>" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9391,13 +11913,13 @@ "register_swaig_function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "swaig_func", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9405,13 +11927,13 @@ "register_verb_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "handler", - "type": "class:signalwire.core.swml_handler.SWMLVerbHandler", - "required": true + "required": true, + "type": "class:signalwire.core.swml_handler.SWMLVerbHandler" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9419,13 +11941,13 @@ "remove_function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -9433,8 +11955,8 @@ "render_document": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -9442,13 +11964,13 @@ "request": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9456,8 +11978,8 @@ "reset_document": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9465,22 +11987,31 @@ "return_verb": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" }, + "route": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "routing_callback_paths": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -9488,22 +12019,31 @@ "schema_utils": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.utils.schema_utils.SchemaUtils" }, + "security": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.core.security_config.SecurityConfig" + }, "send_digits": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9511,13 +12051,13 @@ "send_fax": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9525,13 +12065,13 @@ "send_sms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9539,8 +12079,8 @@ "serve": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -9548,13 +12088,13 @@ "set": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9562,13 +12102,13 @@ "sip_refer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9576,22 +12116,49 @@ "sleep": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "milliseconds", - "type": "int", - "required": true + "required": true, + "type": "int" } ], "returns": "class:signalwire.core.swml_service.SWMLService" }, + "ssl_cert_path": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "ssl_enabled": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "bool" + }, + "ssl_key_path": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -9599,13 +12166,13 @@ "stop_denoise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9613,13 +12180,13 @@ "stop_record_call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9627,13 +12194,13 @@ "stop_tap": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9641,13 +12208,13 @@ "switch_verb": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9655,13 +12222,13 @@ "tap": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9669,13 +12236,13 @@ "transfer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9683,13 +12250,13 @@ "unset": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9697,13 +12264,13 @@ "user_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -9711,18 +12278,18 @@ "validate_basic_auth": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "username", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "password", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -9730,8 +12297,8 @@ "verb_registry": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.swml_handler.VerbHandlerRegistry" @@ -9747,8 +12314,8 @@ "ai": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9760,8 +12327,8 @@ "SWAIG": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9769,8 +12336,8 @@ "global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9778,8 +12345,8 @@ "hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9787,8 +12354,8 @@ "languages": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9796,8 +12363,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9805,8 +12372,8 @@ "post_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9814,8 +12381,8 @@ "post_prompt_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9823,8 +12390,8 @@ "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9832,8 +12399,8 @@ "pronounce": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9845,8 +12412,8 @@ "acknowledge_interruptions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9854,8 +12421,8 @@ "ai_model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9863,8 +12430,8 @@ "ai_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9872,8 +12439,8 @@ "ai_volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9881,8 +12448,8 @@ "app_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9890,8 +12457,8 @@ "asr_diarize": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9899,8 +12466,8 @@ "asr_smart_format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9908,8 +12475,8 @@ "asr_speaker_affinity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9917,8 +12484,8 @@ "attention_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9926,8 +12493,8 @@ "attention_timeout_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9935,8 +12502,8 @@ "background_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9944,8 +12511,8 @@ "background_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9953,8 +12520,8 @@ "background_file_volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9962,8 +12529,8 @@ "barge_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9971,8 +12538,8 @@ "barge_match_string": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9980,8 +12547,8 @@ "barge_min_words": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9989,8 +12556,8 @@ "conscience": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -9998,8 +12565,8 @@ "conversation_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10007,8 +12574,8 @@ "conversation_sliding_window": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10016,8 +12583,8 @@ "convo": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10025,8 +12592,8 @@ "debug": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10034,8 +12601,8 @@ "debug_webhook_level": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10043,8 +12610,8 @@ "debug_webhook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10052,8 +12619,8 @@ "digit_terminators": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10061,8 +12628,8 @@ "digit_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10070,8 +12637,8 @@ "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10079,8 +12646,8 @@ "eleven_labs_similarity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10088,8 +12655,8 @@ "eleven_labs_stability": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10097,8 +12664,8 @@ "enable_barge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10106,8 +12673,8 @@ "enable_inner_dialog": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10115,8 +12682,8 @@ "enable_pause": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10124,8 +12691,8 @@ "enable_thinking": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10133,8 +12700,8 @@ "enable_turn_detection": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10142,8 +12709,8 @@ "enable_vision": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10151,8 +12718,8 @@ "end_of_speech_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10160,8 +12727,8 @@ "energy_level": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10169,8 +12736,8 @@ "first_word_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10178,8 +12745,8 @@ "function_wait_for_talking": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10187,8 +12754,8 @@ "functions_on_no_response": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10196,8 +12763,8 @@ "hard_stop_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10205,8 +12772,8 @@ "hard_stop_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10214,8 +12781,8 @@ "hold_music": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10223,8 +12790,8 @@ "hold_on_process": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10232,8 +12799,8 @@ "inactivity_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10241,8 +12808,8 @@ "initial_sleep_ms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10250,8 +12817,8 @@ "inner_dialog_model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10259,8 +12826,8 @@ "inner_dialog_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10268,8 +12835,8 @@ "inner_dialog_synced": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10277,8 +12844,8 @@ "input_poll_freq": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10286,8 +12853,8 @@ "interrupt_on_noise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10295,8 +12862,8 @@ "interrupt_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10304,8 +12871,8 @@ "languages_enabled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10313,8 +12880,8 @@ "llm_diarize_aware": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10322,8 +12889,8 @@ "local_tz": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10331,8 +12898,8 @@ "max_emotion": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10340,8 +12907,8 @@ "max_response_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10349,8 +12916,8 @@ "openai_asr_engine": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10358,8 +12925,8 @@ "outbound_attention_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10367,8 +12934,8 @@ "persist_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10376,8 +12943,8 @@ "pom_format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10385,8 +12952,8 @@ "save_conversation": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10394,8 +12961,8 @@ "speak_when_spoken_to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10403,8 +12970,8 @@ "speech_event_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10412,8 +12979,8 @@ "speech_gen_quick_stops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10421,8 +12988,8 @@ "speech_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10430,8 +12997,8 @@ "start_paused": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10439,8 +13006,8 @@ "static_greeting": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10448,8 +13015,8 @@ "static_greeting_no_barge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10457,8 +13024,8 @@ "summary_mode": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10466,8 +13033,8 @@ "swaig_allow_settings": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10475,8 +13042,8 @@ "swaig_allow_swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10484,8 +13051,8 @@ "swaig_post_conversation": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10493,8 +13060,8 @@ "swaig_post_swml_vars": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10502,8 +13069,8 @@ "swaig_set_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10511,8 +13078,8 @@ "thinking_model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10520,8 +13087,8 @@ "transfer_summary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10529,8 +13096,8 @@ "transparent_barge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10538,8 +13105,8 @@ "transparent_barge_max_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10547,8 +13114,8 @@ "tts_number_format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10556,8 +13123,8 @@ "turn_detection_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10565,8 +13132,8 @@ "vad_config": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10574,8 +13141,8 @@ "video_idle_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10583,8 +13150,8 @@ "video_listening_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10592,8 +13159,8 @@ "video_talking_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10601,8 +13168,8 @@ "vision_model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10610,8 +13177,8 @@ "wait_for_user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10619,8 +13186,8 @@ "wake_prefix": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10632,8 +13199,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10641,8 +13208,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10650,8 +13217,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10659,8 +13226,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10668,8 +13235,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10677,8 +13244,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10686,8 +13253,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10699,8 +13266,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10708,8 +13275,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10717,8 +13284,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10726,8 +13293,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10735,8 +13302,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10744,8 +13311,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10753,8 +13320,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10766,8 +13333,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10775,8 +13342,8 @@ "contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10784,8 +13351,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10793,8 +13360,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10802,8 +13369,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10811,8 +13378,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10820,8 +13387,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10829,8 +13396,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10842,8 +13409,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10851,8 +13418,8 @@ "contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10860,8 +13427,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10869,8 +13436,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10878,8 +13445,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10887,8 +13454,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10896,8 +13463,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10905,8 +13472,133 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + }, + "AiSidecar": { + "methods": { + "ai_sidecar": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + }, + "AiSidecarConfig": { + "methods": { + "SWAIG": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "action": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "customer_role": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "direction": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "global_data": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "hints": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "lang": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "model": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "params": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "permissions": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "prompt": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "url": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10918,8 +13610,8 @@ "allOf": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10931,8 +13623,8 @@ "amazon_bedrock": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10944,8 +13636,8 @@ "SWAIG": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10953,8 +13645,8 @@ "global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10962,8 +13654,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10971,8 +13663,8 @@ "post_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10980,8 +13672,8 @@ "post_prompt_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -10989,8 +13681,8 @@ "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11002,8 +13694,8 @@ "answer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11015,8 +13707,8 @@ "anyOf": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11028,8 +13720,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11037,8 +13729,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11046,8 +13738,8 @@ "items": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11055,8 +13747,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11064,8 +13756,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11077,8 +13769,8 @@ "attention_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11086,8 +13778,8 @@ "hard_stop_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11095,8 +13787,8 @@ "hard_stop_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11104,8 +13796,8 @@ "inactivity_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11113,8 +13805,8 @@ "video_idle_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11122,8 +13814,8 @@ "video_listening_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11131,8 +13823,8 @@ "video_talking_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11144,8 +13836,8 @@ "defaults": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11153,8 +13845,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11162,8 +13854,8 @@ "includes": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11171,8 +13863,8 @@ "native_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11184,8 +13876,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11193,8 +13885,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11202,8 +13894,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11211,8 +13903,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11224,8 +13916,8 @@ "change_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11237,8 +13929,8 @@ "change_step": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11250,8 +13942,8 @@ "cond": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11263,8 +13955,8 @@ "else": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11276,8 +13968,8 @@ "else": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11285,8 +13977,8 @@ "then": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11294,8 +13986,8 @@ "when": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11307,8 +13999,8 @@ "connect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11320,8 +14012,8 @@ "answer_on_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11329,8 +14021,8 @@ "call_state_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11338,8 +14030,8 @@ "call_state_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11347,8 +14039,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11356,8 +14048,8 @@ "confirm": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11365,8 +14057,8 @@ "confirm_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11374,8 +14066,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11383,8 +14075,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11392,8 +14084,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11401,8 +14093,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11410,8 +14102,8 @@ "parallel": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11419,8 +14111,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11428,8 +14120,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11437,8 +14129,8 @@ "ringback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11446,8 +14138,8 @@ "serial": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11455,8 +14147,8 @@ "serial_parallel": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11464,8 +14156,8 @@ "session_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11473,8 +14165,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11482,8 +14174,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11491,8 +14183,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11500,8 +14192,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11509,8 +14201,8 @@ "webrtc_media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11522,8 +14214,8 @@ "answer_on_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11531,8 +14223,8 @@ "call_state_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11540,8 +14232,8 @@ "call_state_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11549,8 +14241,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11558,8 +14250,8 @@ "confirm": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11567,8 +14259,8 @@ "confirm_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11576,8 +14268,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11585,8 +14277,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11594,8 +14286,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11603,8 +14295,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11612,8 +14304,8 @@ "parallel": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11621,8 +14313,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11630,8 +14322,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11639,8 +14331,8 @@ "ringback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11648,8 +14340,8 @@ "session_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11657,8 +14349,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11666,8 +14358,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11675,8 +14367,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11684,8 +14376,8 @@ "webrtc_media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11697,8 +14389,8 @@ "answer_on_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11706,8 +14398,8 @@ "call_state_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11715,8 +14407,8 @@ "call_state_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11724,8 +14416,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11733,8 +14425,8 @@ "confirm": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11742,8 +14434,8 @@ "confirm_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11751,8 +14443,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11760,8 +14452,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11769,8 +14461,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11778,8 +14470,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11787,8 +14479,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11796,8 +14488,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11805,8 +14497,8 @@ "ringback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11814,8 +14506,8 @@ "serial": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11823,8 +14515,8 @@ "session_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11832,8 +14524,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11841,8 +14533,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11850,8 +14542,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11859,8 +14551,8 @@ "webrtc_media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11872,8 +14564,8 @@ "answer_on_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11881,8 +14573,8 @@ "call_state_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11890,8 +14582,8 @@ "call_state_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11899,8 +14591,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11908,8 +14600,8 @@ "confirm": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11917,8 +14609,8 @@ "confirm_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11926,8 +14618,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11935,8 +14627,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11944,8 +14636,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11953,8 +14645,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11962,8 +14654,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11971,8 +14663,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11980,8 +14672,8 @@ "ringback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11989,8 +14681,8 @@ "serial_parallel": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -11998,8 +14690,8 @@ "session_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12007,8 +14699,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12016,8 +14708,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12025,8 +14717,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12034,8 +14726,8 @@ "webrtc_media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12047,8 +14739,8 @@ "answer_on_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12056,8 +14748,8 @@ "call_state_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12065,8 +14757,8 @@ "call_state_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12074,8 +14766,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12083,8 +14775,8 @@ "confirm": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12092,8 +14784,8 @@ "confirm_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12101,8 +14793,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12110,8 +14802,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12119,8 +14811,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12128,8 +14820,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12137,8 +14829,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12146,8 +14838,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12155,8 +14847,8 @@ "ringback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12164,8 +14856,8 @@ "session_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12173,8 +14865,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12182,8 +14874,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12191,8 +14883,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12200,8 +14892,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12209,8 +14901,8 @@ "webrtc_media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12222,8 +14914,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12231,8 +14923,8 @@ "value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12244,8 +14936,8 @@ "case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12253,8 +14945,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12262,8 +14954,8 @@ "variable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12275,8 +14967,8 @@ "const": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12288,8 +14980,8 @@ "end": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12297,8 +14989,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12306,8 +14998,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12315,8 +15007,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12324,8 +15016,8 @@ "skip_user_turn": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12333,8 +15025,8 @@ "step_criteria": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12342,8 +15034,8 @@ "valid_contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12351,8 +15043,8 @@ "valid_steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12364,8 +15056,8 @@ "context_switch": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12377,8 +15069,8 @@ "end": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12386,8 +15078,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12395,8 +15087,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12404,8 +15096,8 @@ "skip_user_turn": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12413,8 +15105,8 @@ "step_criteria": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12422,8 +15114,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12431,8 +15123,8 @@ "valid_contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12440,8 +15132,8 @@ "valid_steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12453,8 +15145,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12466,8 +15158,8 @@ "enter_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12475,8 +15167,8 @@ "exit_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12484,8 +15176,8 @@ "isolated": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12493,8 +15185,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12502,8 +15194,8 @@ "steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12515,8 +15207,8 @@ "enter_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12524,8 +15216,8 @@ "exit_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12533,8 +15225,8 @@ "isolated": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12542,8 +15234,8 @@ "steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12551,8 +15243,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12564,8 +15256,8 @@ "content": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12573,8 +15265,8 @@ "lang": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12582,8 +15274,8 @@ "role": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12595,8 +15287,8 @@ "expressions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12604,8 +15296,8 @@ "output": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12613,8 +15305,8 @@ "webhooks": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12626,8 +15318,8 @@ "denoise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12639,8 +15331,8 @@ "detect_machine": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12652,8 +15344,8 @@ "detect_message_end": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12661,8 +15353,8 @@ "detectors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12670,8 +15362,8 @@ "end_silence_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12679,8 +15371,8 @@ "initial_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12688,8 +15380,8 @@ "machine_ready_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12697,8 +15389,8 @@ "machine_voice_threshold": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12706,8 +15398,8 @@ "machine_words_threshold": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12715,8 +15407,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12724,8 +15416,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12733,8 +15425,8 @@ "tone": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12742,8 +15434,8 @@ "wait": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12755,8 +15447,8 @@ "enter_queue": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12768,8 +15460,8 @@ "queue_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12777,8 +15469,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12786,8 +15478,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12795,8 +15487,8 @@ "wait_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12804,8 +15496,8 @@ "wait_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12817,8 +15509,8 @@ "execute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12830,8 +15522,8 @@ "dest": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12839,8 +15531,8 @@ "meta": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12848,8 +15540,8 @@ "on_return": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12857,8 +15549,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12866,8 +15558,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12879,8 +15571,8 @@ "case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12888,8 +15580,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12897,8 +15589,8 @@ "variable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12910,8 +15602,8 @@ "output": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12919,8 +15611,8 @@ "pattern": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12928,8 +15620,8 @@ "string": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12941,8 +15633,8 @@ "properties": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12950,8 +15642,8 @@ "required": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12959,8 +15651,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12972,8 +15664,8 @@ "goto": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12985,8 +15677,8 @@ "label": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -12994,8 +15686,8 @@ "max": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13003,8 +15695,8 @@ "when": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13016,8 +15708,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13025,8 +15717,8 @@ "argument": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13034,8 +15726,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13043,8 +15735,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13052,8 +15744,8 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13061,8 +15753,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13070,8 +15762,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13079,8 +15771,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13088,8 +15780,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13097,8 +15789,8 @@ "purpose": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13106,8 +15798,8 @@ "skip_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13115,8 +15807,8 @@ "wait_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13124,8 +15816,8 @@ "wait_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13133,8 +15825,8 @@ "wait_for_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13142,8 +15834,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13155,8 +15847,8 @@ "hangup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13168,8 +15860,8 @@ "hangup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13181,8 +15873,8 @@ "hint": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13190,8 +15882,8 @@ "ignore_case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13199,8 +15891,8 @@ "pattern": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13208,8 +15900,8 @@ "replace": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13221,8 +15913,8 @@ "hold": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13234,8 +15926,8 @@ "inject": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13247,8 +15939,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13256,8 +15948,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13265,8 +15957,8 @@ "enum": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13274,8 +15966,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13283,8 +15975,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13296,8 +15988,8 @@ "join_conference": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13309,8 +16001,8 @@ "beep": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13318,8 +16010,8 @@ "coach": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13327,8 +16019,8 @@ "end_on_exit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13336,8 +16028,8 @@ "max_participants": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13345,8 +16037,8 @@ "muted": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13354,8 +16046,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13363,8 +16055,8 @@ "record": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13372,8 +16064,8 @@ "recording_status_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13381,8 +16073,8 @@ "recording_status_callback_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13390,8 +16082,8 @@ "recording_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13399,8 +16091,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13408,8 +16100,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13417,8 +16109,8 @@ "start_on_enter": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13426,8 +16118,8 @@ "status_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13435,8 +16127,8 @@ "status_callback_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13444,8 +16136,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13453,8 +16145,8 @@ "trim": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13462,8 +16154,8 @@ "wait_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13475,8 +16167,8 @@ "join_room": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13488,8 +16180,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13501,8 +16193,8 @@ "label": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13514,8 +16206,8 @@ "similarity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13523,8 +16215,8 @@ "stability": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13536,8 +16228,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13545,8 +16237,8 @@ "emotion": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13554,8 +16246,8 @@ "engine": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13563,8 +16255,8 @@ "function_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13572,8 +16264,8 @@ "model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13581,8 +16273,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13590,8 +16282,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13599,8 +16291,8 @@ "speech_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13608,8 +16300,8 @@ "speed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13617,8 +16309,8 @@ "voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13630,8 +16322,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13639,8 +16331,8 @@ "emotion": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13648,8 +16340,8 @@ "engine": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13657,8 +16349,8 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13666,8 +16358,8 @@ "model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13675,8 +16367,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13684,8 +16376,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13693,8 +16385,8 @@ "speed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13702,8 +16394,8 @@ "voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13715,8 +16407,8 @@ "live_transcribe": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13728,8 +16420,8 @@ "action": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13741,8 +16433,8 @@ "live_translate": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13754,8 +16446,8 @@ "action": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13767,8 +16459,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13776,8 +16468,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13789,8 +16481,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13798,8 +16490,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13807,8 +16499,8 @@ "enum": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13816,8 +16508,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13825,8 +16517,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13838,8 +16530,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13847,8 +16539,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13856,8 +16548,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13865,8 +16557,8 @@ "properties": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13874,8 +16566,8 @@ "required": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13883,8 +16575,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13896,8 +16588,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13905,8 +16597,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13914,8 +16606,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13923,8 +16615,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13932,8 +16624,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13941,8 +16633,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13950,8 +16642,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13963,8 +16655,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13972,8 +16664,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13981,8 +16673,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13990,8 +16682,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -13999,8 +16691,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14008,8 +16700,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14017,8 +16709,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14030,8 +16722,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14039,8 +16731,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14048,8 +16740,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14057,8 +16749,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14066,8 +16758,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14075,8 +16767,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14084,8 +16776,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14093,8 +16785,8 @@ "voice_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14106,8 +16798,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14115,8 +16807,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14124,8 +16816,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14133,8 +16825,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14142,8 +16834,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14151,8 +16843,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14160,8 +16852,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14169,8 +16861,8 @@ "voice_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14182,8 +16874,8 @@ "oneOf": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14195,8 +16887,8 @@ "action": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14204,8 +16896,8 @@ "response": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14217,8 +16909,8 @@ "pay": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14230,8 +16922,8 @@ "charge_amount": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14239,8 +16931,8 @@ "currency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14248,8 +16940,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14257,8 +16949,8 @@ "input": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14266,8 +16958,8 @@ "language": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14275,8 +16967,8 @@ "max_attempts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14284,8 +16976,8 @@ "min_postal_code_length": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14293,8 +16985,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14302,8 +16994,8 @@ "payment_connector_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14311,8 +17003,8 @@ "payment_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14320,8 +17012,8 @@ "postal_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14329,8 +17021,8 @@ "prompts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14338,8 +17030,8 @@ "security_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14347,8 +17039,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14356,8 +17048,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14365,8 +17057,8 @@ "token_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14374,8 +17066,8 @@ "valid_card_types": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14383,8 +17075,8 @@ "voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14396,8 +17088,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14405,8 +17097,8 @@ "value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14418,8 +17110,8 @@ "phrase": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14427,8 +17119,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14440,8 +17132,8 @@ "phrase": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14449,8 +17141,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14462,8 +17154,8 @@ "actions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14471,8 +17163,8 @@ "attempts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14480,8 +17172,8 @@ "card_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14489,8 +17181,8 @@ "error_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14498,8 +17190,8 @@ "for": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14511,8 +17203,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14520,8 +17212,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14529,8 +17221,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14538,8 +17230,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14547,8 +17239,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14556,8 +17248,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14565,8 +17257,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14574,8 +17266,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14587,8 +17279,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14596,8 +17288,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14605,8 +17297,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14614,8 +17306,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14623,8 +17315,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14632,8 +17324,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14641,8 +17333,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14650,8 +17342,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14663,8 +17355,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14672,8 +17364,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14681,8 +17373,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14690,8 +17382,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14699,8 +17391,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14708,8 +17400,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14717,8 +17409,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14726,8 +17418,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14739,8 +17431,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14748,8 +17440,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14757,8 +17449,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14766,8 +17458,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14775,8 +17467,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14784,8 +17476,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14793,8 +17485,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14802,8 +17494,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14815,8 +17507,8 @@ "play": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14828,8 +17520,8 @@ "auto_answer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14837,8 +17529,8 @@ "say_gender": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14846,8 +17538,8 @@ "say_language": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14855,8 +17547,8 @@ "say_voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14864,8 +17556,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14873,8 +17565,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14882,8 +17574,8 @@ "volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14895,8 +17587,8 @@ "auto_answer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14904,8 +17596,8 @@ "say_gender": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14913,8 +17605,8 @@ "say_language": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14922,8 +17614,8 @@ "say_voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14931,8 +17623,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14940,8 +17632,8 @@ "urls": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14949,8 +17641,8 @@ "volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14962,8 +17654,8 @@ "playback_bg": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14975,8 +17667,8 @@ "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14984,8 +17676,8 @@ "bullets": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -14993,8 +17685,8 @@ "numbered": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15002,8 +17694,8 @@ "numberedBullets": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15011,8 +17703,8 @@ "subsections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15020,8 +17712,8 @@ "title": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15033,8 +17725,8 @@ "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15042,8 +17734,8 @@ "bullets": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15051,8 +17743,8 @@ "numbered": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15060,8 +17752,8 @@ "numberedBullets": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15069,8 +17761,8 @@ "subsections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15078,8 +17770,8 @@ "title": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15091,8 +17783,8 @@ "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15104,8 +17796,8 @@ "digit_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15113,8 +17805,8 @@ "initial_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15122,8 +17814,8 @@ "max_digits": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15131,8 +17823,8 @@ "play": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15140,8 +17832,8 @@ "say_gender": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15149,8 +17841,8 @@ "say_language": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15158,8 +17850,8 @@ "say_voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15167,8 +17859,8 @@ "speech_end_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15176,8 +17868,8 @@ "speech_engine": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15185,8 +17877,8 @@ "speech_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15194,8 +17886,8 @@ "speech_language": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15203,8 +17895,8 @@ "speech_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15212,8 +17904,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15221,8 +17913,8 @@ "terminators": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15230,8 +17922,8 @@ "volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15243,8 +17935,8 @@ "ignore_case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15252,8 +17944,8 @@ "replace": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15261,8 +17953,8 @@ "with": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15274,8 +17966,8 @@ "receive_fax": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15287,8 +17979,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15300,8 +17992,8 @@ "record": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15313,8 +18005,8 @@ "record_call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15326,8 +18018,8 @@ "beep": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15335,8 +18027,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15344,8 +18036,8 @@ "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15353,8 +18045,8 @@ "end_silence_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15362,8 +18054,8 @@ "format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15371,8 +18063,8 @@ "initial_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15380,8 +18072,8 @@ "input_sensitivity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15389,8 +18081,8 @@ "max_length": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15398,8 +18090,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15407,8 +18099,8 @@ "stereo": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15416,8 +18108,8 @@ "terminators": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15429,8 +18121,8 @@ "beep": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15438,8 +18130,8 @@ "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15447,8 +18139,8 @@ "end_silence_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15456,8 +18148,8 @@ "format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15465,8 +18157,8 @@ "initial_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15474,8 +18166,8 @@ "input_sensitivity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15483,8 +18175,8 @@ "max_length": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15492,8 +18184,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15501,8 +18193,8 @@ "stereo": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15510,8 +18202,8 @@ "terminators": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15523,8 +18215,8 @@ "request": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15536,8 +18228,8 @@ "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15545,8 +18237,8 @@ "connect_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15554,8 +18246,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15563,8 +18255,8 @@ "method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15572,8 +18264,8 @@ "save_variables": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15581,8 +18273,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15590,8 +18282,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15603,8 +18295,93 @@ "return": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + }, + "RingbackConfig": { + "methods": { + "auto_answer": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "loop": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "say_gender": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "say_language": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "say_voice": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "status_url": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "url": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "urls": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "volume": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15616,8 +18393,8 @@ "sip_refer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15629,8 +18406,8 @@ "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15638,8 +18415,8 @@ "from_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15647,8 +18424,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15656,8 +18433,8 @@ "tags": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15665,8 +18442,8 @@ "to_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15678,8 +18455,8 @@ "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15687,8 +18464,8 @@ "from_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15696,8 +18473,8 @@ "media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15705,8 +18482,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15714,8 +18491,8 @@ "tags": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15723,8 +18500,8 @@ "to_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15736,8 +18513,8 @@ "defaults": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15745,8 +18522,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15754,8 +18531,8 @@ "includes": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15763,8 +18540,8 @@ "internal_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15772,8 +18549,8 @@ "native_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15785,8 +18562,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15798,8 +18575,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15807,8 +18584,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15816,8 +18593,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15829,8 +18606,8 @@ "adjust_response_latency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15838,8 +18615,8 @@ "change_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15847,8 +18624,8 @@ "check_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15856,8 +18633,8 @@ "get_ideal_strategy": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15865,8 +18642,8 @@ "get_visual_input": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15874,8 +18651,8 @@ "hangup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15883,8 +18660,8 @@ "next_step": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15892,8 +18669,8 @@ "wait_for_user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15901,8 +18678,8 @@ "wait_seconds": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15914,8 +18691,8 @@ "SWML": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15927,8 +18704,8 @@ "say": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15940,8 +18717,8 @@ "main": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15953,8 +18730,8 @@ "send_digits": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15966,8 +18743,8 @@ "digits": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15979,8 +18756,8 @@ "send_fax": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -15992,8 +18769,8 @@ "document": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16001,8 +18778,8 @@ "header_info": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16010,8 +18787,8 @@ "identity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16019,8 +18796,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16032,8 +18809,8 @@ "send_sms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16045,8 +18822,8 @@ "set": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16058,8 +18835,8 @@ "set_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16071,8 +18848,8 @@ "set_meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16084,8 +18861,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16093,8 +18870,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16102,8 +18879,8 @@ "to_uri": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16111,8 +18888,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16124,8 +18901,8 @@ "sleep": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16137,8 +18914,8 @@ "start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16150,8 +18927,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16159,8 +18936,8 @@ "argument": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16168,8 +18945,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16177,8 +18954,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16186,8 +18963,8 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16195,8 +18972,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16204,8 +18981,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16213,8 +18990,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16222,8 +18999,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16231,8 +19008,8 @@ "purpose": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16240,8 +19017,8 @@ "skip_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16249,8 +19026,8 @@ "wait_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16258,8 +19035,8 @@ "wait_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16267,8 +19044,8 @@ "wait_for_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16276,8 +19053,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16289,8 +19066,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16302,8 +19079,8 @@ "stop_denoise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16315,8 +19092,8 @@ "stop_playback_bg": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16328,8 +19105,8 @@ "stop_record_call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16341,8 +19118,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16354,8 +19131,8 @@ "stop_tap": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16367,8 +19144,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16380,8 +19157,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16389,8 +19166,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16398,8 +19175,8 @@ "enum": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16407,8 +19184,8 @@ "format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16416,8 +19193,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16425,8 +19202,8 @@ "pattern": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16434,8 +19211,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16447,8 +19224,8 @@ "summarize": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16460,8 +19237,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16469,8 +19246,8 @@ "argument": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16478,8 +19255,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16487,8 +19264,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16496,8 +19273,8 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16505,8 +19282,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16514,8 +19291,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16523,8 +19300,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16532,8 +19309,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16541,8 +19318,8 @@ "purpose": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16550,8 +19327,8 @@ "skip_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16559,8 +19336,8 @@ "wait_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16568,8 +19345,8 @@ "wait_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16577,8 +19354,8 @@ "wait_for_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16586,8 +19363,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16599,8 +19376,8 @@ "switch": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16612,8 +19389,8 @@ "case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16621,8 +19398,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16630,8 +19407,8 @@ "variable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16643,8 +19420,8 @@ "tap": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16656,8 +19433,8 @@ "codec": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16665,8 +19442,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16674,8 +19451,8 @@ "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16683,8 +19460,8 @@ "rtp_ptime": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16692,8 +19469,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16701,8 +19478,8 @@ "uri": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16714,8 +19491,8 @@ "toggle_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16727,8 +19504,8 @@ "start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16740,8 +19517,8 @@ "summarize": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16753,8 +19530,8 @@ "transfer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16766,8 +19543,8 @@ "dest": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16775,8 +19552,8 @@ "meta": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16784,8 +19561,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16797,8 +19574,8 @@ "unset": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16810,8 +19587,8 @@ "unset_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16823,8 +19600,8 @@ "unset_meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16836,8 +19613,8 @@ "user_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16849,8 +19626,8 @@ "event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16862,8 +19639,8 @@ "user_input": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16875,8 +19652,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16884,8 +19661,8 @@ "argument": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16893,8 +19670,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16902,8 +19679,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16911,8 +19688,8 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16920,8 +19697,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16929,8 +19706,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16938,8 +19715,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16947,8 +19724,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16956,8 +19733,8 @@ "purpose": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16965,8 +19742,8 @@ "skip_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16974,8 +19751,8 @@ "wait_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16983,8 +19760,8 @@ "wait_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -16992,8 +19769,8 @@ "wait_for_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -17001,8 +19778,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -17014,8 +19791,8 @@ "error_keys": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -17023,8 +19800,8 @@ "expressions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -17032,8 +19809,8 @@ "foreach": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -17041,8 +19818,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -17050,8 +19827,8 @@ "input_args_as_params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -17059,8 +19836,8 @@ "method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -17068,8 +19845,8 @@ "output": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -17077,8 +19854,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -17086,8 +19863,8 @@ "require_args": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -17095,8 +19872,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -17120,8 +19897,8 @@ "get_value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "int" @@ -17138,8 +19915,8 @@ "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.logging.Logger" @@ -17163,8 +19940,8 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -17172,18 +19949,18 @@ "add_pom_as_subsection": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "target", - "type": "any", - "required": true + "required": true, + "type": "any" }, { "name": "pom_to_add", - "type": "class:signalwire.pom.pom.PromptObjectModel", - "required": true + "required": true, + "type": "class:signalwire.pom.pom.PromptObjectModel" } ], "returns": "void" @@ -17191,27 +19968,36 @@ "add_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.swml_verbs_generated.Section" }, + "debug": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "bool" + }, "find_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "title", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "optional" @@ -17220,8 +20006,8 @@ "params": [ { "name": "json", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.pom.pom.PromptObjectModel" @@ -17230,8 +20016,8 @@ "params": [ { "name": "data", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "class:signalwire.pom.pom.PromptObjectModel" @@ -17240,8 +20026,8 @@ "params": [ { "name": "yaml", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.pom.pom.PromptObjectModel" @@ -17250,26 +20036,158 @@ "params": [ { "name": "data", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "class:signalwire.pom.pom.PromptObjectModel" }, - "get_sections": { + "render_markdown": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "render_xml": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "sections": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "list" }, - "is_debug": { + "to_dict": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list>" + }, + "to_json": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "to_yaml": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + } + } + }, + "Section": { + "methods": { + "__init__": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "title", + "required": true, + "type": "string" + } + ], + "returns": "void" + }, + "add_body": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "body", + "required": true, + "type": "string" + } + ], + "returns": "void" + }, + "add_bullets": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "bullets", + "required": true, + "type": "list" + } + ], + "returns": "void" + }, + "add_subsection": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "title", + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.core.swml_verbs_generated.Section" + }, + "body": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "bullets": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list" + }, + "numbered": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "bool" + }, + "numberedBullets": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -17277,8 +20195,8 @@ "render_markdown": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -17286,38 +20204,38 @@ "render_xml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "to_dict": { + "subsections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "list>" + "returns": "list" }, - "to_json": { + "title": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "to_yaml": { + "to_dict": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "dict" } } } @@ -17330,53 +20248,62 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "venue_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "amenities", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "void" }, + "amenities": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list>" + }, "amenity": { "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "description", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "hours", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "location", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "price", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -17384,18 +20311,18 @@ "check_availability": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "args", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "raw_data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -17403,8 +20330,8 @@ "get_agent": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -17412,18 +20339,18 @@ "get_directions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "args", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "raw_data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -17431,22 +20358,31 @@ "get_summary_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "callable,dict>,void>" }, + "hours_of_operation": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "dict" + }, "on_summary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "handler", - "type": "callable,dict>,void>", - "required": true + "required": true, + "type": "callable,dict>,void>" } ], "returns": "class:signalwire.prefabs.concierge.ConciergeAgent" @@ -17454,8 +20390,8 @@ "run": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -17463,11 +20399,38 @@ "serve": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" + }, + "services": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list" + }, + "special_instructions": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list" + }, + "venue_name": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" } } } @@ -17480,18 +20443,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "faqs", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "void" @@ -17500,18 +20463,18 @@ "params": [ { "name": "question", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "answer", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "keywords", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "dict" @@ -17520,32 +20483,41 @@ "params": [ { "name": "question", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "answer", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "keywords", - "type": "list", - "required": true + "required": true, + "type": "list" }, { "name": "categories", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "dict" }, + "faqs": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list>" + }, "get_agent": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -17553,8 +20525,8 @@ "get_summary_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "callable,dict>,void>" @@ -17562,22 +20534,31 @@ "on_summary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "handler", - "type": "callable,dict>,void>", - "required": true + "required": true, + "type": "callable,dict>,void>" } ], "returns": "class:signalwire.prefabs.faq_bot.FAQBotAgent" }, + "persona": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "run": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -17585,18 +20566,18 @@ "search_faqs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "args", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "raw_data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -17604,11 +20585,20 @@ "serve": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" + }, + "suggest_related": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "bool" } } } @@ -17621,18 +20611,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "questions", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "void" @@ -17640,8 +20630,8 @@ "get_agent": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -17649,23 +20639,23 @@ "on_swml_request": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "request_data", - "type": "dict", - "required": true + "required": false, + "type": "dict" }, { "name": "query_params", - "type": "dict", - "required": true + "required": false, + "type": "dict" }, { "name": "headers", - "type": "dict", - "required": true + "required": false, + "type": "dict" } ], "returns": "dict" @@ -17674,13 +20664,13 @@ "params": [ { "name": "key_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "question_text", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -17688,8 +20678,8 @@ "run": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -17697,8 +20687,8 @@ "serve": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -17706,13 +20696,13 @@ "set_question_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "callback", - "type": "class:signalwire.prefabs.info_gatherer.InfoGathererAgent", - "required": true + "required": true, + "type": "class:signalwire.prefabs.info_gatherer.InfoGathererAgent" } ], "returns": "class:signalwire.prefabs.info_gatherer.InfoGathererAgent" @@ -17720,18 +20710,18 @@ "start_questions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "args", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "raw_data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -17739,18 +20729,18 @@ "submit_answer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "args", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "raw_data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -17766,23 +20756,23 @@ "apply": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "query_params", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "body_params", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "headers", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "list>" @@ -17798,23 +20788,23 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "greeting", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "departments", - "type": "dict>", - "required": true + "required": true, + "type": "dict>" } ], "returns": "void" @@ -17822,8 +20812,8 @@ "get_agent": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -17831,8 +20821,8 @@ "get_summary_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "callable,dict>,void>" @@ -17840,13 +20830,13 @@ "on_summary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "handler", - "type": "callable,dict>,void>", - "required": true + "required": true, + "type": "callable,dict>,void>" } ], "returns": "class:signalwire.prefabs.receptionist.ReceptionistAgent" @@ -17855,13 +20845,13 @@ "params": [ { "name": "description", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "phone_number", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -17869,8 +20859,8 @@ "run": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -17878,8 +20868,8 @@ "serve": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -17888,13 +20878,13 @@ "params": [ { "name": "description", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "swml_url", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -17910,27 +20900,45 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "questions", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "void" }, + "brand_name": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "conclusion": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "get_agent": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -17938,8 +20946,8 @@ "get_summary_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "callable,dict>,void>" @@ -17948,62 +20956,80 @@ "params": [ { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "text", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "scale", - "type": "int", - "required": true + "required": true, + "type": "int" }, { "name": "options", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "dict" }, + "introduction": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "log_response": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "args", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "raw_data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" }, + "max_retries": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "int" + }, "multiple_choice_question": { "params": [ { "name": "question", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "options", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "dict" @@ -18011,13 +21037,13 @@ "on_summary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "handler", - "type": "callable,dict>,void>", - "required": true + "required": true, + "type": "callable,dict>,void>" } ], "returns": "class:signalwire.prefabs.survey.SurveyAgent" @@ -18026,28 +21052,37 @@ "params": [ { "name": "question", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" }, + "questions": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list>" + }, "rating_question": { "params": [ { "name": "question", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "min", - "type": "int", - "required": true + "required": true, + "type": "int" }, { "name": "max", - "type": "int", - "required": true + "required": true, + "type": "int" } ], "returns": "dict" @@ -18055,8 +21090,8 @@ "run": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -18064,27 +21099,36 @@ "serve": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" }, + "survey_name": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "validate_response": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "args", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "raw_data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -18093,8 +21137,8 @@ "params": [ { "name": "question", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -18110,18 +21154,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true + "required": true, + "type": "class:signalwire.relay.call.Call" } ], "returns": "void" @@ -18129,8 +21173,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -18142,54 +21186,54 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true + "required": true, + "type": "class:signalwire.relay.call.Call" } ], "returns": "void" }, - "get_call": { + "call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.relay.call.Call" }, - "get_control_id": { + "completed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "bool" }, - "get_result": { + "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.relay.event.RelayEvent" + "returns": "string" }, "get_state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -18197,8 +21241,8 @@ "is_done": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -18206,27 +21250,36 @@ "resolve": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event", - "type": "class:signalwire.relay.event.RelayEvent", - "required": true + "required": true, + "type": "class:signalwire.relay.event.RelayEvent" } ], "returns": "void" }, + "result": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.relay.event.RelayEvent" + }, "set_on_completed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "on_completed", - "type": "callable,void>", - "required": true + "required": true, + "type": "callable,void>" } ], "returns": "void" @@ -18234,45 +21287,50 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" }, - "to_string": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" - }, "update_state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "new_state", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "event", - "type": "class:signalwire.relay.event.RelayEvent", - "required": true + "required": true, + "type": "class:signalwire.relay.event.RelayEvent" } ], "returns": "void" }, + "wait": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "timeout", + "required": false, + "type": "float" + } + ], + "returns": "class:signalwire.relay.event.RelayEvent" + }, "wait_for_completion": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -18284,18 +21342,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "node_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" @@ -18303,13 +21361,13 @@ "ai": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "ai_config", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.call.Action" @@ -18317,13 +21375,13 @@ "ai_hold": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "options", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" @@ -18331,13 +21389,13 @@ "ai_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "message_config", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" @@ -18345,13 +21403,13 @@ "ai_unhold": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "options", - "type": "dict", - "required": true + "required": false, + "type": "dict" } ], "returns": "dict" @@ -18359,13 +21417,13 @@ "amazon_bedrock": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "config", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" @@ -18373,8 +21431,8 @@ "answer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -18382,32 +21440,41 @@ "bind_digit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "digits", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "bind_method", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "options", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" }, + "call_id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "clear_digit_bindings": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -18415,18 +21482,18 @@ "collect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "collect_config", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "options", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.call.Action" @@ -18434,18 +21501,18 @@ "collect_digits": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "digits_config", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.call.Action" @@ -18453,27 +21520,36 @@ "connect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "devices", - "type": "list>>", - "required": true + "required": true, + "type": "list>>" }, { "name": "options", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" }, + "context": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "denoise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -18481,8 +21557,8 @@ "denoise_stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -18490,18 +21566,18 @@ "detect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "detect_config", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "options", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.call.Action" @@ -18509,8 +21585,8 @@ "detect_answering_machine": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.relay.call.Action" @@ -18518,8 +21594,8 @@ "detect_digit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.relay.call.Action" @@ -18527,8 +21603,8 @@ "detect_fax": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.relay.call.Action" @@ -18536,27 +21612,45 @@ "detect_with": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "detect_config", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.call.Action" }, + "device": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "dict" + }, + "direction": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "optional" + }, "disconnect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -18564,13 +21658,13 @@ "dispatch_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event", - "type": "class:signalwire.relay.event.RelayEvent", - "required": true + "required": true, + "type": "class:signalwire.relay.event.RelayEvent" } ], "returns": "void" @@ -18578,13 +21672,13 @@ "echo": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "options", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" @@ -18592,85 +21686,31 @@ "get_action": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.call.Action" }, - "get_call_id": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" - }, "get_call_state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "optional" }, - "get_device": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "dict" - }, - "get_direction": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "optional" - }, "get_end_reason": { "params": [ { - "name": "self", - "kind": "self" - } - ], - "returns": "optional" - }, - "get_node_id": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "optional" - }, - "get_state": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" - }, - "get_tag": { - "params": [ - { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "optional" @@ -18678,8 +21718,8 @@ "hangup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -18687,8 +21727,8 @@ "hold": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -18696,8 +21736,8 @@ "is_ended": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -18705,18 +21745,18 @@ "join_conference": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "options", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" @@ -18724,18 +21764,18 @@ "join_room": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "options", - "type": "dict", - "required": true + "required": false, + "type": "dict" } ], "returns": "dict" @@ -18743,13 +21783,13 @@ "leave_conference": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "conference_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -18757,8 +21797,8 @@ "leave_room": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -18766,13 +21806,13 @@ "live_transcribe": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "action", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" @@ -18780,51 +21820,69 @@ "live_translate": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "action", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "options", - "type": "dict", - "required": true + "required": false, + "type": "dict" } ], "returns": "dict" }, + "node_id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "optional" + }, "on": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "listener", - "type": "callable,void>", - "required": true + "required": true, + "type": "callable,void>" } ], "returns": "void" }, + "pass_": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "dict" + }, "pay": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "payment_connector_url", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.call.Action" @@ -18832,13 +21890,13 @@ "play": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "media", - "type": "list>", - "required": true + "required": true, + "type": "list>" } ], "returns": "class:signalwire.relay.call.Action" @@ -18846,23 +21904,23 @@ "play_and_collect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "media", - "type": "list>", - "required": true + "required": true, + "type": "list>" }, { "name": "collect_config", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.call.Action" @@ -18870,13 +21928,13 @@ "play_audio": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.call.Action" @@ -18884,13 +21942,13 @@ "play_ringtone": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.call.Action" @@ -18898,13 +21956,13 @@ "play_silence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "duration", - "type": "float", - "required": true + "required": true, + "type": "float" } ], "returns": "class:signalwire.relay.call.Action" @@ -18912,32 +21970,41 @@ "play_tts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "text", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.call.Action" }, + "project_id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "prompt_audio": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "collect_config", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.call.Action" @@ -18945,18 +22012,18 @@ "prompt_tts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "text", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "collect_config", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.call.Action" @@ -18964,18 +22031,18 @@ "queue_enter": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "queue_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "options", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" @@ -18983,18 +22050,18 @@ "queue_leave": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "queue_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "options", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" @@ -19002,13 +22069,13 @@ "receive_fax": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.call.Action" @@ -19016,18 +22083,18 @@ "record": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "record_config", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "options", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.call.Action" @@ -19035,18 +22102,18 @@ "record_audio": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "audio_config", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.call.Action" @@ -19054,18 +22121,18 @@ "refer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "device_spec", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "options", - "type": "dict", - "required": true + "required": false, + "type": "dict" } ], "returns": "dict" @@ -19073,13 +22140,13 @@ "register_action": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "action", - "type": "class:signalwire.relay.call.Action", - "required": true + "required": true, + "type": "class:signalwire.relay.call.Action" } ], "returns": "void" @@ -19087,27 +22154,36 @@ "resolve_all_actions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event", - "type": "class:signalwire.relay.event.RelayEvent", - "required": true + "required": true, + "type": "class:signalwire.relay.event.RelayEvent" } ], "returns": "void" }, + "segment_id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "send_digits": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "digits", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -19115,18 +22191,18 @@ "send_fax": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "document_url", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "options", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.call.Action" @@ -19134,41 +22210,13 @@ "set_client": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "client", - "type": "class:signalwire.relay.client.RelayClient", - "required": true - } - ], - "returns": "void" - }, - "set_device": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "device", - "type": "dict", - "required": true - } - ], - "returns": "void" - }, - "set_direction": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "direction", - "type": "string", - "required": true + "required": true, + "type": "class:signalwire.relay.client.RelayClient" } ], "returns": "void" @@ -19176,121 +22224,88 @@ "set_end_reason": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "end_reason", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" }, - "set_node_id": { + "state": { "params": [ { - "name": "self", - "kind": "self" - }, - { - "name": "node_id", - "type": "string", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "void" + "returns": "string" }, - "set_state": { + "stream": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { - "name": "state", - "type": "string", - "required": true - } - ], - "returns": "void" - }, - "set_tag": { - "params": [ - { - "name": "self", - "kind": "self" + "name": "url", + "required": true, + "type": "string" }, { - "name": "tag", - "type": "string", - "required": true + "name": "control_id", + "required": true, + "type": "string" } ], - "returns": "void" + "returns": "class:signalwire.relay.call.Action" }, - "stream": { + "tag": { "params": [ { - "name": "self", - "kind": "self" - }, - { - "name": "url", - "type": "string", - "required": true - }, - { - "name": "control_id", - "type": "string", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.relay.call.Action" + "returns": "optional" }, "tap": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "tap_config", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "tap_device", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.call.Action" }, - "to_string": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" - }, "transcribe": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.call.Action" @@ -19298,13 +22313,13 @@ "transfer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "dest", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -19312,8 +22327,8 @@ "unhold": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -19321,13 +22336,13 @@ "user_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event", - "type": "string", - "required": true + "required": false, + "type": "string" } ], "returns": "dict" @@ -19335,13 +22350,13 @@ "wait_for": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "target_state", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -19349,8 +22364,13 @@ "wait_for_answered": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "timeout", + "required": false, + "type": "float" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -19358,8 +22378,13 @@ "wait_for_ended": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "timeout", + "required": false, + "type": "float" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -19367,8 +22392,13 @@ "wait_for_ending": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "timeout", + "required": false, + "type": "float" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -19376,8 +22406,13 @@ "wait_for_ringing": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "timeout", + "required": false, + "type": "float" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -19389,18 +22424,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true + "required": true, + "type": "class:signalwire.relay.call.Call" } ], "returns": "void" @@ -19408,13 +22443,13 @@ "pause": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "behavior", - "type": "string", - "required": true + "required": false, + "type": "string" } ], "returns": "void" @@ -19422,8 +22457,8 @@ "resume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19431,8 +22466,8 @@ "start_input_timers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19440,8 +22475,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19449,13 +22484,13 @@ "volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "volume_db", - "type": "float", - "required": true + "required": true, + "type": "float" } ], "returns": "void" @@ -19467,18 +22502,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true + "required": true, + "type": "class:signalwire.relay.call.Call" } ], "returns": "void" @@ -19486,8 +22521,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19499,18 +22534,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true + "required": true, + "type": "class:signalwire.relay.call.Call" } ], "returns": "void" @@ -19518,8 +22553,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19531,18 +22566,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true + "required": true, + "type": "class:signalwire.relay.call.Call" } ], "returns": "void" @@ -19550,8 +22585,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19563,18 +22598,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true + "required": true, + "type": "class:signalwire.relay.call.Call" } ], "returns": "void" @@ -19582,13 +22617,13 @@ "pause": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "behavior", - "type": "string", - "required": true + "required": false, + "type": "string" } ], "returns": "void" @@ -19596,8 +22631,8 @@ "resume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19605,8 +22640,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19614,13 +22649,13 @@ "volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "volume_db", - "type": "float", - "required": true + "required": true, + "type": "float" } ], "returns": "void" @@ -19632,18 +22667,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true + "required": true, + "type": "class:signalwire.relay.call.Call" } ], "returns": "void" @@ -19651,13 +22686,13 @@ "pause": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "behavior", - "type": "string", - "required": true + "required": false, + "type": "string" } ], "returns": "void" @@ -19665,8 +22700,8 @@ "resume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19674,8 +22709,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19687,18 +22722,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true + "required": true, + "type": "class:signalwire.relay.call.Call" } ], "returns": "void" @@ -19706,8 +22741,8 @@ "start_input_timers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19715,8 +22750,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19728,18 +22763,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true + "required": true, + "type": "class:signalwire.relay.call.Call" } ], "returns": "void" @@ -19747,8 +22782,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19760,18 +22795,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true + "required": true, + "type": "class:signalwire.relay.call.Call" } ], "returns": "void" @@ -19779,8 +22814,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19792,18 +22827,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "control_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true + "required": true, + "type": "class:signalwire.relay.call.Call" } ], "returns": "void" @@ -19811,8 +22846,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19825,30 +22860,11 @@ "classes": { "CallSendFaxAction": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "control_id", - "type": "string", - "required": true - }, - { - "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true - } - ], - "returns": "void" - }, "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19881,8 +22897,8 @@ "params": [ { "name": "wire", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.CallState" @@ -19890,8 +22906,8 @@ "get_value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -19899,8 +22915,8 @@ "is_terminal": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -19913,8 +22929,8 @@ "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.CallState" @@ -19938,8 +22954,8 @@ "close": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19947,22 +22963,31 @@ "connect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" }, + "contexts": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list" + }, "dial": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "devices", - "type": "list>>", - "required": true + "required": true, + "type": "list>>" } ], "returns": "class:signalwire.relay.call.Call" @@ -19970,8 +22995,8 @@ "disconnect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -19979,18 +23004,18 @@ "execute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "method", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" @@ -19998,67 +23023,58 @@ "get_authorization_state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_contexts": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "list" - }, - "get_project": { + "get_relay_protocol": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_relay_protocol": { + "host": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_space": { + "is_connected": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "bool" }, - "is_connected": { + "jwt_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "bool" + "returns": "string" }, "on_call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "handler", - "type": "callable,void>", - "required": true + "required": true, + "type": "callable,void>" } ], "returns": "void" @@ -20066,13 +23082,13 @@ "on_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "handler", - "type": "callable,void>", - "required": true + "required": true, + "type": "callable,void>" } ], "returns": "void" @@ -20080,27 +23096,36 @@ "on_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "handler", - "type": "callable,void>", - "required": true + "required": true, + "type": "callable,void>" } ], "returns": "void" }, + "project": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "receive": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "new_contexts", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "dict" @@ -20108,8 +23133,8 @@ "run": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -20117,33 +23142,33 @@ "send_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "context", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "from_number", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "to_number", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "media_urls", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.relay.message.Message" @@ -20151,13 +23176,13 @@ "send_raw": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "frame", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" @@ -20165,27 +23190,36 @@ "set_relay_protocol": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "protocol", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" }, + "token": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "unreceive": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "remove_contexts", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "dict" @@ -20197,63 +23231,48 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "message", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" - } - } - } - } - }, - "signalwire.relay.device": { - "classes": { - "Device": { - "methods": { - "__init__": { + }, + "code": { "params": [ { - "name": "self", - "kind": "self" - }, - { - "name": "type", - "type": "string", - "required": true - }, - { - "name": "params", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "void" + "returns": "int" }, - "equals": { + "message": { "params": [ { - "name": "self", - "kind": "self" - }, - { - "name": "o", - "type": "any", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "bool" - }, + "returns": "string" + } + } + } + } + }, + "signalwire.relay.device": { + "classes": { + "Device": { + "methods": { "get_params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -20261,32 +23280,23 @@ "get_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "hash_code": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "int" - }, "of": { "params": [ { "name": "type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.Device" @@ -20295,13 +23305,13 @@ "params": [ { "name": "to_number", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "from_number", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.Device" @@ -20310,13 +23320,13 @@ "params": [ { "name": "to", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "from", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.Device" @@ -20324,20 +23334,11 @@ "to_dict": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" - }, - "to_string": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" } } } @@ -20363,8 +23364,8 @@ "params": [ { "name": "wire", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.DialState" @@ -20372,8 +23373,8 @@ "get_value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -20381,8 +23382,8 @@ "is_terminal": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -20391,8 +23392,8 @@ "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.DialState" @@ -20412,33 +23413,69 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, + "call_state": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "context": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "device": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "dict" + }, + "direction": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "from_payload": { "params": [ { "name": "payload", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -20446,44 +23483,44 @@ "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_call_state": { + "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_context": { + "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_device": { + "segment_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "dict" + "returns": "string" }, - "get_node_id": { + "tag": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -20495,78 +23532,78 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, - "from_payload": { + "call_state": { "params": [ { - "name": "payload", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.relay.event.RelayEvent" + "returns": "string" }, - "get_call_id": { + "device": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "dict" }, - "get_call_state": { + "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_device": { + "end_reason": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "dict" + "returns": "string" }, - "get_direction": { + "from_payload": { "params": [ { - "name": "self", - "kind": "self" + "name": "payload", + "required": true, + "type": "dict" } ], - "returns": "string" + "returns": "class:signalwire.relay.event.RelayEvent" }, - "get_end_reason": { + "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -20574,8 +23611,8 @@ "get_node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -20583,8 +23620,8 @@ "get_tag": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -20596,60 +23633,60 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, - "from_payload": { + "code": { "params": [ { - "name": "payload", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.relay.event.RelayEvent" + "returns": "string" }, - "get_call_id": { + "from_payload": { "params": [ { - "name": "self", - "kind": "self" + "name": "payload", + "required": true, + "type": "dict" } ], - "returns": "string" + "returns": "class:signalwire.relay.event.RelayEvent" }, - "get_code": { + "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_message": { + "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -20661,87 +23698,87 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, - "from_payload": { + "control_id": { "params": [ { - "name": "payload", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.relay.event.RelayEvent" + "returns": "string" }, - "get_call_id": { + "final": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "bool" }, - "get_control_id": { + "from_payload": { "params": [ { - "name": "self", - "kind": "self" + "name": "payload", + "required": true, + "type": "dict" } ], - "returns": "string" + "returns": "class:signalwire.relay.event.RelayEvent" }, - "get_final": { + "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "bool" + "returns": "string" }, - "get_result": { + "get_result_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "dict" + "returns": "string" }, - "get_result_type": { + "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "dict" }, - "get_state": { + "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -20753,33 +23790,42 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, + "conference_id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "from_payload": { "params": [ { "name": "payload", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -20787,17 +23833,26 @@ "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "name": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_conference_id": { + "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -20809,33 +23864,42 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, + "connect_state": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "from_payload": { "params": [ { "name": "payload", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -20843,20 +23907,20 @@ "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_connect_state": { + "peer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "dict" } } }, @@ -20865,54 +23929,54 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, - "from_payload": { + "denoised": { "params": [ { - "name": "payload", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.relay.event.RelayEvent" + "returns": "bool" }, - "get_call_id": { + "from_payload": { "params": [ { - "name": "self", - "kind": "self" + "name": "payload", + "required": true, + "type": "dict" } ], - "returns": "string" + "returns": "class:signalwire.relay.event.RelayEvent" }, - "is_denoised": { + "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "bool" + "returns": "string" } } }, @@ -20921,69 +23985,69 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, - "from_payload": { + "control_id": { "params": [ { - "name": "payload", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.relay.event.RelayEvent" + "returns": "string" }, - "get_call_id": { + "detect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "dict" }, - "get_control_id": { + "from_payload": { "params": [ { - "name": "self", - "kind": "self" + "name": "payload", + "required": true, + "type": "dict" } ], - "returns": "string" + "returns": "class:signalwire.relay.event.RelayEvent" }, - "get_detect": { + "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "dict" + "returns": "string" }, "get_detect_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -20995,69 +24059,78 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, - "from_payload": { + "call": { "params": [ { - "name": "payload", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.relay.event.RelayEvent" + "returns": "dict" }, - "get_call_id": { + "dial_state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_call_info": { + "from_payload": { "params": [ { - "name": "self", - "kind": "self" + "name": "payload", + "required": true, + "type": "dict" } ], - "returns": "dict" + "returns": "class:signalwire.relay.event.RelayEvent" }, - "get_dial_state": { + "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, + "get_call_info": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "dict" + }, "get_dial_state_enum": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "optional" @@ -21065,17 +24138,17 @@ "get_node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_tag": { + "tag": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -21087,23 +24160,23 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" @@ -21112,8 +24185,8 @@ "params": [ { "name": "payload", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -21121,17 +24194,17 @@ "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_state": { + "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -21143,51 +24216,60 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, - "from_payload": { + "control_id": { "params": [ { - "name": "payload", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.relay.event.RelayEvent" + "returns": "string" }, - "get_call_id": { + "fax": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "dict" }, - "get_control_id": { + "from_payload": { + "params": [ + { + "name": "payload", + "required": true, + "type": "dict" + } + ], + "returns": "class:signalwire.relay.event.RelayEvent" + }, + "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -21195,8 +24277,8 @@ "get_state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -21208,23 +24290,23 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" @@ -21233,8 +24315,8 @@ "params": [ { "name": "payload", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -21242,17 +24324,17 @@ "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_state": { + "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -21264,123 +24346,123 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, - "from_payload": { + "body": { "params": [ { - "name": "payload", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.relay.event.RelayEvent" + "returns": "string" }, - "get_body": { + "context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_context": { + "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_direction": { + "from_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_from_number": { + "from_payload": { "params": [ { - "name": "self", - "kind": "self" + "name": "payload", + "required": true, + "type": "dict" } ], - "returns": "string" + "returns": "class:signalwire.relay.event.RelayEvent" }, - "get_media": { + "media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" }, - "get_message_id": { + "message_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_message_state": { + "message_state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_segments": { + "segments": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "int" }, - "get_tags": { + "tags": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" }, - "get_to_number": { + "to_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -21392,132 +24474,132 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, - "from_payload": { + "body": { "params": [ { - "name": "payload", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.relay.event.RelayEvent" + "returns": "string" }, - "get_body": { + "context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_context": { + "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_direction": { + "from_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_from_number": { + "from_payload": { "params": [ { - "name": "self", - "kind": "self" + "name": "payload", + "required": true, + "type": "dict" } ], - "returns": "string" + "returns": "class:signalwire.relay.event.RelayEvent" }, - "get_media": { + "media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" }, - "get_message_id": { + "message_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_message_state": { + "message_state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_reason": { + "reason": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_segments": { + "segments": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "int" }, - "get_tags": { + "tags": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" }, - "get_to_number": { + "to_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -21529,60 +24611,60 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, - "from_payload": { + "control_id": { "params": [ { - "name": "payload", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.relay.event.RelayEvent" + "returns": "string" }, - "get_call_id": { + "from_payload": { "params": [ { - "name": "self", - "kind": "self" + "name": "payload", + "required": true, + "type": "dict" } ], - "returns": "string" + "returns": "class:signalwire.relay.event.RelayEvent" }, - "get_control_id": { + "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_state": { + "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -21594,60 +24676,60 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, - "from_payload": { + "control_id": { "params": [ { - "name": "payload", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.relay.event.RelayEvent" + "returns": "string" }, - "get_call_id": { + "from_payload": { "params": [ { - "name": "self", - "kind": "self" + "name": "payload", + "required": true, + "type": "dict" } ], - "returns": "string" + "returns": "class:signalwire.relay.event.RelayEvent" }, - "get_control_id": { + "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_state": { + "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -21659,96 +24741,96 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, - "from_payload": { + "control_id": { "params": [ { - "name": "payload", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.relay.event.RelayEvent" + "returns": "string" }, - "get_call_id": { + "from_payload": { "params": [ { - "name": "self", - "kind": "self" + "name": "payload", + "required": true, + "type": "dict" } ], - "returns": "string" + "returns": "class:signalwire.relay.event.RelayEvent" }, - "get_control_id": { + "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_position": { + "position": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "int" }, - "get_queue_id": { + "queue_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_queue_name": { + "queue_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_size": { + "size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "int" }, - "get_status": { + "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -21760,87 +24842,96 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, - "from_payload": { + "control_id": { "params": [ { - "name": "payload", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.relay.event.RelayEvent" + "returns": "string" }, - "get_call_id": { + "duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "float" }, - "get_control_id": { + "from_payload": { "params": [ { - "name": "self", - "kind": "self" + "name": "payload", + "required": true, + "type": "dict" + } + ], + "returns": "class:signalwire.relay.event.RelayEvent" + }, + "get_call_id": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_duration": { + "record": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "float" + "returns": "dict" }, - "get_size": { + "size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "int" }, - "get_state": { + "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_url": { + "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -21852,23 +24943,23 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" @@ -21877,8 +24968,8 @@ "params": [ { "name": "payload", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -21886,8 +24977,8 @@ "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -21895,8 +24986,44 @@ "get_refer_state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "sip_notify_response_code": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "sip_refer_response_code": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "sip_refer_to": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "state": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "string" @@ -21908,33 +25035,51 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, + "call_id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "event_type": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "from_payload": { "params": [ { "name": "payload", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -21943,61 +25088,71 @@ "params": [ { "name": "outer_params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.event.RelayEvent" }, - "get_event_type": { + "get_double_param": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "key", + "required": true, + "type": "string" } ], - "returns": "string" + "returns": "float" }, - "get_params": { + "get_long_param": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "key", + "required": true, + "type": "string" } ], - "returns": "dict" + "returns": "int" }, "get_string_param": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "key", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" }, - "get_timestamp": { + "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "float" + "returns": "dict" }, - "to_string": { + "timestamp": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "float" } } }, @@ -22006,33 +25161,42 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, + "control_id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "from_payload": { "params": [ { "name": "payload", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -22040,17 +25204,17 @@ "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_state": { + "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -22062,33 +25226,42 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, + "control_id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "from_payload": { "params": [ { "name": "payload", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -22096,26 +25269,35 @@ "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_control_id": { + "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_state": { + "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "url": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "string" @@ -22127,33 +25309,51 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, + "control_id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "device": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "dict" + }, "from_payload": { "params": [ { "name": "payload", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -22161,29 +25361,29 @@ "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_control_id": { + "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_state": { + "tap": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "dict" } } }, @@ -22192,33 +25392,51 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event_type", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "timestamp", - "type": "float", - "required": true + "required": true, + "type": "float" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "void" }, + "control_id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "duration": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "float" + }, "from_payload": { "params": [ { "name": "payload", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -22226,26 +25444,44 @@ "get_call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_control_id": { + "recording_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_state": { + "size": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "int" + }, + "state": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -22258,8 +25494,8 @@ "params": [ { "name": "payload", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -22273,344 +25509,214 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "message_id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" }, - "from_receive_event": { - "params": [ - { - "name": "event", - "type": "class:signalwire.relay.event.RelayEvent", - "required": true - } - ], - "returns": "class:signalwire.relay.message.Message" - }, - "get_body": { + "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "optional" }, - "get_context": { + "context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "optional" }, - "get_direction": { + "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "optional" }, - "get_from_number": { + "from_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "optional" }, - "get_media": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "list" - }, - "get_message_id": { + "from_receive_event": { "params": [ { - "name": "self", - "kind": "self" + "name": "event", + "required": true, + "type": "class:signalwire.relay.event.RelayEvent" } ], - "returns": "string" + "returns": "class:signalwire.relay.message.Message" }, "get_message_state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "optional" }, - "get_reason": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "optional" - }, - "get_result": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "optional" - }, - "get_segments": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "int" - }, - "get_state": { + "is_done": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "bool" }, - "get_tags": { + "media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" }, - "get_to_number": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "optional" - }, - "is_done": { + "message_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "bool" + "returns": "string" }, "on": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "listener", - "type": "callable,void>", - "required": true - } - ], - "returns": "void" - }, - "result": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "class:signalwire.relay.event.RelayEvent" - }, - "set_body": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "body", - "type": "string", - "required": true + "required": true, + "type": "callable,void>" } ], "returns": "void" }, - "set_context": { + "reason": { "params": [ { - "name": "self", - "kind": "self" - }, - { - "name": "context", - "type": "string", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "void" + "returns": "optional" }, - "set_direction": { + "result": { "params": [ { - "name": "self", - "kind": "self" - }, - { - "name": "direction", - "type": "string", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "void" + "returns": "class:signalwire.relay.event.RelayEvent" }, - "set_from_number": { + "segments": { "params": [ { - "name": "self", - "kind": "self" - }, - { - "name": "from_number", - "type": "string", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "void" - }, - "set_media": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "media", - "type": "list", - "required": true - } - ], - "returns": "void" + "returns": "int" }, "set_on_completed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "on_completed", - "type": "callable,void>", - "required": true + "required": true, + "type": "callable,void>" } ], "returns": "void" }, - "set_segments": { + "state": { "params": [ { - "name": "self", - "kind": "self" - }, - { - "name": "segments", - "type": "int", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "void" + "returns": "string" }, - "set_state": { + "tags": { "params": [ { - "name": "self", - "kind": "self" - }, - { - "name": "state", - "type": "string", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "void" + "returns": "list" }, - "set_tags": { + "to_number": { "params": [ { - "name": "self", - "kind": "self" - }, - { - "name": "tags", - "type": "list", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "void" + "returns": "optional" }, - "set_to_number": { + "update_from_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { - "name": "to_number", - "type": "string", - "required": true + "name": "event", + "required": true, + "type": "class:signalwire.relay.event.RelayEvent" } ], "returns": "void" }, - "to_string": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" - }, - "update_from_event": { + "wait": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { - "name": "event", - "type": "class:signalwire.relay.event.RelayEvent", - "required": true + "name": "timeout", + "required": false, + "type": "float" } ], - "returns": "void" + "returns": "class:signalwire.relay.event.RelayEvent" }, "wait_for_completion": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -22635,8 +25741,8 @@ "params": [ { "name": "wire", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.MessageState" @@ -22644,8 +25750,8 @@ "get_value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -22657,8 +25763,8 @@ "is_terminal": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -22683,8 +25789,8 @@ "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.MessageState" @@ -22704,8 +25810,8 @@ "async": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22713,8 +25819,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22722,8 +25828,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22731,8 +25837,8 @@ "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22740,8 +25846,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22749,8 +25855,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22762,8 +25868,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22771,8 +25877,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22780,8 +25886,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22789,8 +25895,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22802,8 +25908,8 @@ "async": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22811,8 +25917,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22820,8 +25926,8 @@ "global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22829,8 +25935,8 @@ "message_text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22838,8 +25944,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22847,8 +25953,8 @@ "reset": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22856,8 +25962,8 @@ "role": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22865,8 +25971,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22878,8 +25984,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22887,8 +25993,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22896,8 +26002,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22905,8 +26011,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22918,8 +26024,8 @@ "async": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22927,8 +26033,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22936,8 +26042,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22945,8 +26051,8 @@ "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22954,8 +26060,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22967,8 +26073,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22976,8 +26082,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22985,8 +26091,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -22994,8 +26100,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23007,8 +26113,8 @@ "SWAIG": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23016,8 +26122,8 @@ "async": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23025,8 +26131,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23034,8 +26140,8 @@ "global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23043,8 +26149,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23052,8 +26158,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23061,8 +26167,8 @@ "post_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23070,8 +26176,8 @@ "post_prompt_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23079,8 +26185,8 @@ "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23088,8 +26194,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23101,8 +26207,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23110,8 +26216,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23119,8 +26225,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23128,8 +26234,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23141,8 +26247,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23150,8 +26256,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23159,8 +26265,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23172,8 +26278,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23181,8 +26287,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23190,8 +26296,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23203,8 +26309,8 @@ "device": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23212,8 +26318,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23221,8 +26327,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23230,8 +26336,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23239,8 +26345,8 @@ "tag": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23252,8 +26358,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23261,8 +26367,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23270,8 +26376,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23279,8 +26385,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23288,8 +26394,8 @@ "message_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23297,8 +26403,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23310,8 +26416,8 @@ "bind_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23319,8 +26425,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23328,8 +26434,8 @@ "digits": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23337,8 +26443,8 @@ "max_triggers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23346,8 +26452,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23355,8 +26461,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23364,8 +26470,8 @@ "realm": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23373,8 +26479,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23386,8 +26492,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23395,8 +26501,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23404,8 +26510,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23413,8 +26519,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23426,8 +26532,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23435,8 +26541,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23444,8 +26550,8 @@ "realm": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23453,8 +26559,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23466,8 +26572,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23475,8 +26581,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23484,8 +26590,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23493,8 +26599,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23506,8 +26612,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23515,8 +26621,8 @@ "continue": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23524,8 +26630,8 @@ "continuous": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23533,8 +26639,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23542,8 +26648,8 @@ "digits": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23551,8 +26657,8 @@ "initial_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23560,8 +26666,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23569,8 +26675,8 @@ "partial_results": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23578,8 +26684,8 @@ "send_start_of_input": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23587,8 +26693,8 @@ "speech": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23596,8 +26702,8 @@ "start_input_timers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23609,8 +26715,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23618,8 +26724,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23627,8 +26733,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23636,8 +26742,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23645,8 +26751,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23658,8 +26764,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23667,8 +26773,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23676,8 +26782,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23689,8 +26795,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23698,8 +26804,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23707,8 +26813,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23716,8 +26822,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23725,8 +26831,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23738,8 +26844,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23747,8 +26853,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23756,8 +26862,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23769,8 +26875,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23778,8 +26884,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23787,8 +26893,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23796,8 +26902,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23805,8 +26911,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23818,8 +26924,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23827,8 +26933,8 @@ "devices": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23836,8 +26942,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23845,8 +26951,8 @@ "max_price_per_minute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23854,8 +26960,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23863,8 +26969,8 @@ "ringback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23872,8 +26978,8 @@ "tag": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23885,8 +26991,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23894,8 +27000,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23903,8 +27009,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23912,8 +27018,8 @@ "message_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23925,8 +27031,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23934,8 +27040,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23947,8 +27053,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23956,8 +27062,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23965,8 +27071,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23974,8 +27080,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23987,8 +27093,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -23996,8 +27102,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24009,8 +27115,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24018,8 +27124,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24027,8 +27133,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24036,8 +27142,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24049,8 +27155,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24058,8 +27164,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24067,8 +27173,8 @@ "detect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24076,8 +27182,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24085,8 +27191,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24098,8 +27204,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24107,8 +27213,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24116,8 +27222,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24125,8 +27231,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24134,8 +27240,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24147,8 +27253,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24156,8 +27262,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24165,8 +27271,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24178,8 +27284,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24187,8 +27293,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24196,8 +27302,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24205,8 +27311,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24214,8 +27320,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24227,8 +27333,8 @@ "devices": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24236,8 +27342,8 @@ "max_price_per_minute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24245,8 +27351,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24254,8 +27360,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24263,8 +27369,8 @@ "tag": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24276,8 +27382,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24285,8 +27391,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24294,8 +27400,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24303,8 +27409,8 @@ "message_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24316,8 +27422,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24325,8 +27431,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24338,8 +27444,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24347,8 +27453,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24356,8 +27462,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24369,8 +27475,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24378,8 +27484,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24387,8 +27493,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24396,8 +27502,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24405,8 +27511,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24418,8 +27524,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24427,8 +27533,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24436,8 +27542,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24445,8 +27551,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24458,8 +27564,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24467,8 +27573,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24476,8 +27582,8 @@ "reason": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24489,8 +27595,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24498,8 +27604,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24507,8 +27613,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24520,8 +27626,8 @@ "acl": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24529,8 +27635,8 @@ "beep": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24538,8 +27644,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24547,8 +27653,8 @@ "coach": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24556,8 +27662,8 @@ "end_on_exit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24565,8 +27671,8 @@ "max_participants": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24574,8 +27680,8 @@ "muted": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24583,8 +27689,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24592,8 +27698,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24601,8 +27707,8 @@ "record": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24610,8 +27716,8 @@ "recording_status_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24619,8 +27725,8 @@ "recording_status_callback_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24628,8 +27734,8 @@ "recording_status_callback_event_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24637,8 +27743,8 @@ "recording_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24646,8 +27752,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24655,8 +27761,8 @@ "start_on_enter": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24664,8 +27770,8 @@ "status_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24673,8 +27779,8 @@ "status_callback_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24682,8 +27788,8 @@ "status_callback_event_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24691,8 +27797,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24700,8 +27806,8 @@ "stream": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24709,8 +27815,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24718,8 +27824,8 @@ "trim": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24727,8 +27833,8 @@ "wait_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24740,8 +27846,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24749,8 +27855,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24758,8 +27864,8 @@ "conference_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24767,8 +27873,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24776,8 +27882,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24789,8 +27895,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24798,8 +27904,8 @@ "hagrid_json_api_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24807,8 +27913,8 @@ "hagrid_node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24816,8 +27922,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24825,8 +27931,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24834,8 +27940,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24843,8 +27949,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24856,8 +27962,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24865,8 +27971,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24874,8 +27980,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24883,8 +27989,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24896,8 +28002,8 @@ "async": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24905,8 +28011,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24914,8 +28020,8 @@ "conference_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24923,8 +28029,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24936,8 +28042,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24945,8 +28051,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24954,8 +28060,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24963,8 +28069,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24976,8 +28082,8 @@ "async": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24985,8 +28091,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -24994,8 +28100,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25007,8 +28113,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25016,8 +28122,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25025,8 +28131,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25034,8 +28140,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25047,8 +28153,8 @@ "action": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25056,8 +28162,8 @@ "async": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25065,8 +28171,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25074,8 +28180,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25083,8 +28189,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25096,8 +28202,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25105,8 +28211,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25114,8 +28220,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25123,8 +28229,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25136,8 +28242,8 @@ "action": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25145,8 +28251,8 @@ "async": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25154,8 +28260,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25163,8 +28269,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25172,8 +28278,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25181,8 +28287,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25194,8 +28300,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25203,8 +28309,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25212,8 +28318,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25221,8 +28327,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25234,8 +28340,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25243,8 +28349,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25256,8 +28362,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25265,8 +28371,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25274,8 +28380,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25283,8 +28389,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25296,8 +28402,8 @@ "bank_account_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25305,8 +28411,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25314,8 +28420,8 @@ "charge_amount": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25323,8 +28429,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25332,8 +28438,8 @@ "currency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25341,8 +28447,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25350,8 +28456,8 @@ "input": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25359,8 +28465,8 @@ "language": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25368,8 +28474,8 @@ "max_attempts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25377,8 +28483,8 @@ "min_postal_code_length": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25386,8 +28492,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25395,8 +28501,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25404,8 +28510,8 @@ "payment_connector_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25413,8 +28519,8 @@ "payment_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25422,8 +28528,8 @@ "postal_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25431,8 +28537,8 @@ "prompts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25440,8 +28546,8 @@ "security_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25449,8 +28555,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25458,8 +28564,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25467,8 +28573,8 @@ "token_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25476,8 +28582,8 @@ "valid_card_types": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25485,8 +28591,8 @@ "voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25498,8 +28604,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25507,8 +28613,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25516,8 +28622,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25525,8 +28631,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25534,8 +28640,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25547,8 +28653,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25556,8 +28662,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25565,8 +28671,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25578,8 +28684,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25587,8 +28693,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25596,8 +28702,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25605,8 +28711,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25614,8 +28720,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25627,8 +28733,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25636,8 +28742,8 @@ "collect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25645,8 +28751,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25654,8 +28760,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25663,8 +28769,8 @@ "play": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25672,8 +28778,8 @@ "volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25685,8 +28791,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25694,8 +28800,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25703,8 +28809,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25712,8 +28818,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25721,8 +28827,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25734,8 +28840,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25743,8 +28849,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25752,8 +28858,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25765,8 +28871,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25774,8 +28880,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25783,8 +28889,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25792,8 +28898,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25801,8 +28907,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25814,8 +28920,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25823,8 +28929,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25832,8 +28938,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25841,8 +28947,8 @@ "volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25854,8 +28960,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25863,8 +28969,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25872,8 +28978,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25881,8 +28987,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25890,8 +28996,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25903,8 +29009,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25912,8 +29018,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25921,8 +29027,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25930,8 +29036,8 @@ "play": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25939,8 +29045,8 @@ "volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25952,8 +29058,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25961,8 +29067,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25970,8 +29076,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25983,8 +29089,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -25992,8 +29098,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26001,8 +29107,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26010,8 +29116,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26019,8 +29125,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26032,8 +29138,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26041,8 +29147,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26050,8 +29156,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26059,8 +29165,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26068,8 +29174,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26081,8 +29187,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26090,8 +29196,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26099,8 +29205,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26112,8 +29218,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26121,8 +29227,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26130,8 +29236,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26139,8 +29245,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26148,8 +29254,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26161,8 +29267,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26170,8 +29276,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26179,8 +29285,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26192,8 +29298,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26201,8 +29307,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26210,8 +29316,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26219,8 +29325,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26228,8 +29334,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26241,8 +29347,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26250,8 +29356,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26259,8 +29365,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26268,8 +29374,8 @@ "volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26281,8 +29387,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26290,8 +29396,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26299,8 +29405,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26308,8 +29414,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26317,8 +29423,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26330,8 +29436,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26339,8 +29445,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26348,8 +29454,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26357,8 +29463,8 @@ "queue_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26366,8 +29472,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26375,8 +29481,8 @@ "wait_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26388,8 +29494,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26397,8 +29503,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26406,8 +29512,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26415,8 +29521,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26424,8 +29530,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26437,8 +29543,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26446,8 +29552,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26455,8 +29561,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26464,8 +29570,8 @@ "queue_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26473,8 +29579,8 @@ "queue_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26482,8 +29588,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26495,8 +29601,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26504,8 +29610,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26513,8 +29619,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26522,8 +29628,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26531,8 +29637,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26544,8 +29650,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26553,8 +29659,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26562,8 +29668,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26575,8 +29681,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26584,8 +29690,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26593,8 +29699,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26602,8 +29708,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26611,8 +29717,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26624,8 +29730,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26633,8 +29739,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26642,8 +29748,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26655,8 +29761,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26664,8 +29770,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26673,8 +29779,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26682,8 +29788,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26691,8 +29797,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26704,8 +29810,8 @@ "context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26713,8 +29819,8 @@ "contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26726,8 +29832,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26735,8 +29841,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26748,8 +29854,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26757,8 +29863,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26766,8 +29872,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26775,8 +29881,8 @@ "record": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26788,8 +29894,8 @@ "behavior": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26797,8 +29903,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26806,8 +29912,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26815,8 +29921,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26828,8 +29934,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26837,8 +29943,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26846,8 +29952,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26855,8 +29961,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26864,8 +29970,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26877,8 +29983,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26886,8 +29992,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26895,8 +30001,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26904,8 +30010,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26913,8 +30019,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26922,8 +30028,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26935,8 +30041,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26944,8 +30050,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26953,8 +30059,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26966,8 +30072,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26975,8 +30081,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26984,8 +30090,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -26993,8 +30099,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27002,8 +30108,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27015,8 +30121,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27024,8 +30130,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27033,8 +30139,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27046,8 +30152,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27055,8 +30161,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27064,8 +30170,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27073,8 +30179,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27082,8 +30188,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27095,8 +30201,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27104,8 +30210,8 @@ "device": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27113,8 +30219,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27126,8 +30232,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27135,8 +30241,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27144,8 +30250,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27157,8 +30263,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27166,8 +30272,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27175,8 +30281,8 @@ "digits": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27184,8 +30290,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27197,8 +30303,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27206,8 +30312,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27215,8 +30321,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27224,8 +30330,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27233,8 +30339,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27246,8 +30352,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27255,8 +30361,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27264,8 +30370,8 @@ "document": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27273,8 +30379,8 @@ "header_info": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27282,8 +30388,8 @@ "identity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27291,8 +30397,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27304,8 +30410,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27313,8 +30419,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27322,8 +30428,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27331,8 +30437,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27340,8 +30446,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27353,8 +30459,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27362,8 +30468,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27371,8 +30477,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27384,8 +30490,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27393,8 +30499,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27402,8 +30508,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27411,8 +30517,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27420,8 +30526,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27433,8 +30539,8 @@ "async": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27442,8 +30548,8 @@ "authorization_bearer_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27451,8 +30557,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27460,8 +30566,8 @@ "codec": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27469,8 +30575,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27478,8 +30584,8 @@ "custom_parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27487,8 +30593,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27496,8 +30602,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27505,8 +30611,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27514,8 +30620,8 @@ "status_url_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27523,8 +30629,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27532,8 +30638,8 @@ "track": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27541,8 +30647,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27554,8 +30660,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27563,8 +30669,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27572,8 +30678,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27581,8 +30687,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27590,8 +30696,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27603,8 +30709,8 @@ "async": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27612,8 +30718,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27621,8 +30727,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27630,8 +30736,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27639,8 +30745,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27652,8 +30758,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27661,8 +30767,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27670,8 +30776,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27679,8 +30785,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27688,8 +30794,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27701,8 +30807,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27710,8 +30816,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27719,8 +30825,8 @@ "device": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27728,8 +30834,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27737,8 +30843,8 @@ "tap": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27750,8 +30856,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27759,8 +30865,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27768,8 +30874,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27777,8 +30883,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27786,8 +30892,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27795,8 +30901,8 @@ "source_device": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27808,8 +30914,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27817,8 +30923,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27826,8 +30932,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27839,8 +30945,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27848,8 +30954,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27857,8 +30963,8 @@ "control_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27866,8 +30972,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27875,8 +30981,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27888,8 +30994,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27897,8 +31003,8 @@ "dest": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27906,8 +31012,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27919,8 +31025,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27928,8 +31034,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27937,8 +31043,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27946,8 +31052,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27959,8 +31065,8 @@ "async": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27968,8 +31074,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27977,8 +31083,8 @@ "event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27986,8 +31092,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -27995,8 +31101,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28008,8 +31114,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28017,8 +31123,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28026,8 +31132,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28035,8 +31141,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28048,8 +31154,8 @@ "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28057,8 +31163,8 @@ "context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28066,8 +31172,8 @@ "from_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28075,8 +31181,8 @@ "media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28084,8 +31190,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28093,8 +31199,8 @@ "tags": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28102,8 +31208,8 @@ "to_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28115,8 +31221,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28124,8 +31230,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28133,8 +31239,8 @@ "message_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28146,8 +31252,8 @@ "agent": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28155,8 +31261,8 @@ "authentication": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28164,8 +31270,8 @@ "host": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28173,8 +31279,8 @@ "identity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28182,8 +31288,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28191,8 +31297,8 @@ "protocols": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28200,8 +31306,8 @@ "version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28213,8 +31319,8 @@ "accesses": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28222,8 +31328,8 @@ "authorization": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28231,8 +31337,8 @@ "authorizations": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28240,8 +31346,8 @@ "host": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28249,8 +31355,8 @@ "ice_servers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28258,8 +31364,8 @@ "identity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28267,8 +31373,8 @@ "master_nodeid": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28276,8 +31382,8 @@ "nodeid": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28285,8 +31391,8 @@ "protocol": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28294,8 +31400,8 @@ "protocols": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28303,8 +31409,8 @@ "protocols_uncertified": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28312,8 +31418,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28321,8 +31427,8 @@ "session_restored": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28330,8 +31436,8 @@ "sessionid": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28339,8 +31445,8 @@ "subscriptions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28352,8 +31458,8 @@ "restart": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28365,8 +31471,8 @@ "attempted": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28374,8 +31480,8 @@ "method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28383,8 +31489,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28392,8 +31498,8 @@ "protocol": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28401,8 +31507,8 @@ "requester_identity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28410,8 +31516,8 @@ "requester_nodeid": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28419,8 +31525,8 @@ "responder_identity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28428,8 +31534,8 @@ "responder_nodeid": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28441,8 +31547,8 @@ "requester_nodeid": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28450,8 +31556,8 @@ "responder_nodeid": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28459,8 +31565,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28472,8 +31578,8 @@ "payload": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28481,8 +31587,8 @@ "timestamp": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28494,8 +31600,8 @@ "payload": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28503,8 +31609,8 @@ "timestamp": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28516,8 +31622,8 @@ "authentication": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28525,8 +31631,8 @@ "dpop_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28538,8 +31644,8 @@ "authentication": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28547,8 +31653,8 @@ "authorization": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28556,8 +31662,8 @@ "ice_servers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28565,8 +31671,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -28579,20 +31685,11 @@ "classes": { "RelayClientBuilder": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "build": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.relay.client.RelayClient" @@ -28600,13 +31697,13 @@ "contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "contexts", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.relay.client.RelayClient" @@ -28614,13 +31711,13 @@ "host": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "host", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.client.RelayClient" @@ -28628,13 +31725,27 @@ "jwt_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "jwt_token", - "type": "string", - "required": true + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.relay.client.RelayClient" + }, + "max_active_calls": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "max_active_calls", + "required": true, + "type": "int" } ], "returns": "class:signalwire.relay.client.RelayClient" @@ -28642,13 +31753,13 @@ "project": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "project", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.client.RelayClient" @@ -28656,13 +31767,13 @@ "space": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "space", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.client.RelayClient" @@ -28670,13 +31781,13 @@ "token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "token", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.relay.client.RelayClient" @@ -28693,8 +31804,18 @@ "params": [ { "name": "code", - "type": "string", - "required": true + "required": true, + "type": "string" + } + ], + "returns": "bool" + }, + "is_success_code": { + "params": [ + { + "name": "code", + "required": true, + "type": "string" } ], "returns": "bool" @@ -28703,8 +31824,8 @@ "params": [ { "name": "state", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -28713,8 +31834,8 @@ "params": [ { "name": "state", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -28723,8 +31844,8 @@ "params": [ { "name": "state", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -28737,35 +31858,11 @@ "classes": { "RelayEventAuthorizationStateEvent": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "event_type", - "type": "string", - "required": true - }, - { - "name": "timestamp", - "type": "float", - "required": true - }, - { - "name": "params", - "type": "dict", - "required": true - } - ], - "returns": "void" - }, "get_authorization_state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -28781,18 +31878,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" }, { "name": "base_path", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" @@ -28800,8 +31897,8 @@ "get_base_path": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -28809,8 +31906,8 @@ "get_http_client": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest._base.HttpClient" @@ -28819,35 +31916,16 @@ }, "CrudResource": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true - }, - { - "name": "base_path", - "type": "string", - "required": true - } - ], - "returns": "void" - }, "create": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "body", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" @@ -28855,13 +31933,13 @@ "delete": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -28869,13 +31947,13 @@ "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -28883,8 +31961,8 @@ "list": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -28892,18 +31970,18 @@ "update": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "dict" @@ -28912,91 +31990,57 @@ }, "FabricResource": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true - }, - { - "name": "base_path", - "type": "string", - "required": true - } - ], - "returns": "void" - }, "list_addresses": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "resource_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "query_params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], - "returns": "dict" + "returns": "any" } } }, "FabricResourcePUT": { - "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true - }, - { - "name": "base_path", - "type": "string", - "required": true - } - ], - "returns": "void" - } - } + "methods": {} }, "HttpClient": { "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "space", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "project", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "token", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "name": "request_options", + "required": false, + "type": "class:signalwire.rest._request_options.RequestOptions" } ], "returns": "void" @@ -29004,13 +32048,18 @@ "delete": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "path", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "name": "request_options", + "required": false, + "type": "class:signalwire.rest._request_options.RequestOptions" } ], "returns": "dict" @@ -29018,13 +32067,23 @@ "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "path", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "name": "query_params", + "required": false, + "type": "dict" + }, + { + "name": "request_options", + "required": false, + "type": "class:signalwire.rest._request_options.RequestOptions" } ], "returns": "dict" @@ -29032,8 +32091,8 @@ "get_base_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -29041,18 +32100,23 @@ "patch": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "path", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "dict", - "required": true + "required": false, + "type": "dict" + }, + { + "name": "request_options", + "required": false, + "type": "class:signalwire.rest._request_options.RequestOptions" } ], "returns": "dict" @@ -29060,18 +32124,23 @@ "post": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "path", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "dict", - "required": true + "required": true, + "type": "dict" + }, + { + "name": "request_options", + "required": false, + "type": "class:signalwire.rest._request_options.RequestOptions" } ], "returns": "dict" @@ -29079,18 +32148,23 @@ "put": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "path", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "dict", - "required": true + "required": false, + "type": "dict" + }, + { + "name": "request_options", + "required": false, + "type": "class:signalwire.rest._request_options.RequestOptions" } ], "returns": "dict" @@ -29099,18 +32173,18 @@ "params": [ { "name": "base_url", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "project", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "token", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.rest._base.HttpClient" @@ -29119,35 +32193,16 @@ }, "ReadResource": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true - }, - { - "name": "base_path", - "type": "string", - "required": true - } - ], - "returns": "void" - }, "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -29155,8 +32210,8 @@ "list": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -29164,8 +32219,15 @@ "paginate": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "class:signalwire.rest._pagination.PaginatedIterator" @@ -29177,37 +32239,42 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "status_code", - "type": "int", - "required": true + "required": true, + "type": "int" }, { "name": "method", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "path", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "name": "url", + "required": true, + "type": "string" }, { "name": "response_body", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" }, - "get_method": { + "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -29215,8 +32282,8 @@ "get_path": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -29224,26 +32291,26 @@ "get_response_body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_status_code": { + "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "int" + "returns": "dict" }, "is_client_error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -29251,8 +32318,8 @@ "is_not_found": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -29260,8 +32327,8 @@ "is_server_error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -29269,11 +32336,80 @@ "is_unauthorized": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" + }, + "method": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "request_id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "optional" + }, + "status_code": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "int" + }, + "url": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + } + } + }, + "SignalWireRestTransportError": { + "methods": { + "__init__": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "method", + "required": true, + "type": "string" + }, + { + "name": "path", + "required": true, + "type": "string" + }, + { + "name": "url", + "required": true, + "type": "string" + }, + { + "name": "cause", + "required": true, + "type": "any" + } + ], + "returns": "void" } } } @@ -29286,18 +32422,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" }, { "name": "path", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" @@ -29305,8 +32441,8 @@ "has_next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -29314,8 +32450,8 @@ "iterator": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest._pagination.PaginatedIterator" @@ -29323,8 +32459,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -29333,6 +32469,149 @@ } } }, + "signalwire.rest._request_options": { + "classes": { + "RequestOptions": { + "methods": { + "__init__": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "default": null, + "name": "timeout", + "required": false, + "type": "optional" + }, + { + "default": null, + "name": "retries", + "required": false, + "type": "optional" + }, + { + "default": null, + "name": "retry_on_status", + "required": false, + "type": "optional>" + }, + { + "default": null, + "name": "retry_backoff", + "required": false, + "type": "optional" + }, + { + "default": null, + "name": "abort_signal", + "required": false, + "type": "optional" + } + ], + "returns": "void" + }, + "abort_signal": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "optional" + }, + "merge": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "override", + "required": true, + "type": "class:signalwire.rest._request_options.RequestOptions" + } + ], + "returns": "class:signalwire.rest._request_options.RequestOptions" + }, + "retries": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "int" + }, + "retry_backoff": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "float" + }, + "retry_on_status": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list" + }, + "timeout": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "float" + } + } + } + }, + "functions": { + "resolve": { + "params": [ + { + "name": "client_default", + "required": true, + "type": "optional" + }, + { + "name": "per_request", + "required": true, + "type": "optional" + } + ], + "returns": "class:signalwire.rest._request_options._EffectiveOptions" + }, + "status_is_retryable": { + "params": [ + { + "name": "method", + "required": true, + "type": "string" + }, + { + "name": "status", + "required": true, + "type": "int" + }, + { + "name": "opts", + "required": true, + "type": "class:signalwire.rest._request_options._EffectiveOptions" + } + ], + "returns": "bool" + } + } + }, "signalwire.rest.call_handler": { "classes": { "PhoneCallHandler": { @@ -29377,21 +32656,12 @@ "params": [], "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.PhoneCallHandler" }, - "to_string": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" - }, "value_of": { "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.PhoneCallHandler" @@ -29407,8 +32677,8 @@ "wire_value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -29421,53 +32691,251 @@ "classes": { "RestClient": { "methods": { + "__init__": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "void" + }, + "addresses": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.Addresses" + }, "builder": { "params": [], "returns": "class:signalwire.rest.client.RestClient" }, + "calling": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.calling_resources_generated.Calling" + }, + "chat": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.chat_resources_generated.Chat" + }, + "datasphere": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces._client_tree_generated.DatasphereNamespace" + }, + "fabric": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces._client_tree_generated.FabricNamespace" + }, "get_http_client": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest._base.HttpClient" }, - "get_project": { + "get_space": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_space": { + "imported_numbers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.ImportedNumbers" + }, + "logs": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces._client_tree_generated.LogsNamespace" + }, + "lookup": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.Lookup" + }, + "messages": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.messages_resources_generated.Messages" + }, + "mfa": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.Mfa" + }, + "number_groups": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.NumberGroups" + }, + "phone_numbers": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.PhoneNumbers" + }, + "project": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces._client_tree_generated.ProjectNamespace" + }, + "projects": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.projects_resources_generated.Projects" + }, + "pubsub": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.pubsub_resources_generated.PubSub" + }, + "queues": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.Queues" + }, + "recordings": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.Recordings" + }, + "registry": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces._client_tree_generated.RegistryNamespace" + }, + "short_codes": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.ShortCodes" + }, + "sip_profile": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.SipProfile" + }, + "verified_callers": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.VerifiedCallers" + }, + "video": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.rest.namespaces._client_tree_generated.VideoNamespace" }, "with_base_url": { "params": [ { "name": "base_url", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "project", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "token", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.rest.client.RestClient" @@ -29483,13 +32951,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -29497,8 +32965,8 @@ "documents": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.datasphere_resources_generated.DatasphereDocuments" @@ -29510,13 +32978,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -29524,8 +32992,8 @@ "addresses": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.FabricAddresses" @@ -29533,8 +33001,8 @@ "ai_agents": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.AiAgents" @@ -29542,8 +33010,8 @@ "call_flows": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.CallFlows" @@ -29551,8 +33019,8 @@ "conference_rooms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.ConferenceRooms" @@ -29560,8 +33028,8 @@ "cxml_applications": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.CxmlApplications" @@ -29569,8 +33037,8 @@ "cxml_scripts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.CxmlScripts" @@ -29578,8 +33046,8 @@ "cxml_webhooks": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.CxmlWebhooks" @@ -29587,8 +33055,8 @@ "freeswitch_connectors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.FreeswitchConnectors" @@ -29596,8 +33064,8 @@ "relay_applications": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.RelayApplications" @@ -29605,8 +33073,8 @@ "resources": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.GenericResources" @@ -29614,8 +33082,8 @@ "sip_endpoints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.SipEndpoints" @@ -29623,8 +33091,8 @@ "sip_gateways": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.SipGateways" @@ -29632,8 +33100,8 @@ "subscribers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.Subscribers" @@ -29641,8 +33109,8 @@ "swml_scripts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.SwmlScripts" @@ -29650,8 +33118,8 @@ "swml_webhooks": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.SwmlWebhooks" @@ -29659,8 +33127,8 @@ "tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fabric_resources_generated.FabricTokens" @@ -29672,13 +33140,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -29686,8 +33154,8 @@ "conferences": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.logs_resources_generated.ConferenceLogs" @@ -29695,8 +33163,8 @@ "fax": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.fax_resources_generated.FaxLogs" @@ -29704,8 +33172,8 @@ "messages": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.message_resources_generated.MessageLogs" @@ -29713,8 +33181,8 @@ "voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.voice_resources_generated.VoiceLogs" @@ -29726,13 +33194,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -29740,8 +33208,8 @@ "tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.project_resources_generated.ProjectTokens" @@ -29753,13 +33221,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -29767,8 +33235,8 @@ "brands": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.RegistryBrands" @@ -29776,8 +33244,8 @@ "campaigns": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.RegistryCampaigns" @@ -29785,8 +33253,8 @@ "numbers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.RegistryNumbers" @@ -29794,8 +33262,8 @@ "orders": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.RegistryOrders" @@ -29807,13 +33275,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -29821,8 +33289,8 @@ "conference_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.video_resources_generated.VideoConferenceTokens" @@ -29830,8 +33298,8 @@ "conferences": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.video_resources_generated.VideoConferences" @@ -29839,8 +33307,8 @@ "room_recordings": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.video_resources_generated.VideoRoomRecordings" @@ -29848,8 +33316,8 @@ "room_sessions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.video_resources_generated.VideoRoomSessions" @@ -29857,8 +33325,8 @@ "room_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.video_resources_generated.VideoRoomTokens" @@ -29866,8 +33334,8 @@ "rooms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.video_resources_generated.VideoRooms" @@ -29875,8 +33343,8 @@ "streams": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.namespaces.video_resources_generated.VideoStreams" @@ -29892,13 +33360,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -29906,34 +33374,41 @@ "ai_hold": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "timeout", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "prompt", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -29941,48 +33416,55 @@ "ai_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "role", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "message_text", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "reset", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "global_data", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -29990,26 +33472,33 @@ "ai_stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30017,27 +33506,34 @@ "ai_unhold": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "prompt", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30045,62 +33541,69 @@ "collect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "control_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "initial_timeout", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "digits", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "speech", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "continuous", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "partial_results", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30108,26 +33611,33 @@ "collect_start_input_timers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30135,26 +33645,33 @@ "collect_stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30162,20 +33679,27 @@ "denoise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30183,20 +33707,27 @@ "denoise_stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30204,40 +33735,47 @@ "detect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "detect", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "control_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "timeout", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30245,26 +33783,33 @@ "detect_stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30272,83 +33817,90 @@ "dial": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "from", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "kind": "keyword", "name": "to", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "caller_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "fallback_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "status_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "status_events", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "url_method", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "codecs", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "swml", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30356,20 +33908,27 @@ "disconnect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30377,27 +33936,34 @@ "end": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "reason", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30405,8 +33971,8 @@ "get_base_path": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -30414,26 +33980,33 @@ "live_transcribe": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "action", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30441,33 +34014,40 @@ "live_translate": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "action", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "status_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30475,61 +34055,68 @@ "play": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "play", - "type": "list", "required": true, - "kind": "keyword" + "type": "list" }, { + "default": null, + "kind": "keyword", "name": "control_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "volume", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "direction", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "loop", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "status_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30537,26 +34124,33 @@ "play_pause": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30564,26 +34158,33 @@ "play_resume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30591,26 +34192,33 @@ "play_stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30618,32 +34226,39 @@ "play_volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "kind": "keyword", "name": "volume", - "type": "float", "required": true, - "kind": "keyword" + "type": "float" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30651,26 +34266,33 @@ "receive_fax_stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30678,41 +34300,48 @@ "record": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "control_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "audio", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "status_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30720,26 +34349,33 @@ "record_pause": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30747,26 +34383,33 @@ "record_resume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30774,26 +34417,33 @@ "record_stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30801,33 +34451,40 @@ "refer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "device", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "status_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30835,26 +34492,33 @@ "send_fax_stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30862,61 +34526,68 @@ "stream": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "url", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "control_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "codec", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "track", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "authorization_bearer_token", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "custom_parameters", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30924,26 +34595,33 @@ "stream_stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30951,39 +34629,46 @@ "tap": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "tap", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "kind": "keyword", "name": "device", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "control_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -30991,26 +34676,33 @@ "tap_stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -31018,34 +34710,41 @@ "transcribe": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "control_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "status_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -31053,26 +34752,33 @@ "transcribe_stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "control_id", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -31080,26 +34786,33 @@ "transfer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "dest", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -31107,56 +34820,63 @@ "update": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "id", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "fallback_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "status", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "status_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "swml", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -31164,26 +34884,33 @@ "user_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "call_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "event", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -31199,8 +34926,8 @@ "ai": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31212,8 +34939,8 @@ "SWAIG": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31221,8 +34948,8 @@ "global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31230,8 +34957,8 @@ "hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31239,8 +34966,8 @@ "languages": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31248,8 +34975,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31257,8 +34984,8 @@ "post_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31266,8 +34993,8 @@ "post_prompt_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31275,8 +35002,8 @@ "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31284,8 +35011,8 @@ "pronounce": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31297,8 +35024,8 @@ "acknowledge_interruptions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31306,8 +35033,8 @@ "ai_model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31315,8 +35042,8 @@ "ai_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31324,8 +35051,8 @@ "ai_volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31333,8 +35060,8 @@ "app_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31342,8 +35069,8 @@ "asr_diarize": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31351,8 +35078,8 @@ "asr_smart_format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31360,8 +35087,8 @@ "asr_speaker_affinity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31369,8 +35096,8 @@ "attention_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31378,8 +35105,8 @@ "attention_timeout_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31387,8 +35114,8 @@ "background_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31396,8 +35123,8 @@ "background_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31405,8 +35132,8 @@ "background_file_volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31414,8 +35141,8 @@ "barge_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31423,8 +35150,8 @@ "barge_match_string": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31432,8 +35159,8 @@ "barge_min_words": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31441,8 +35168,8 @@ "conscience": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31450,8 +35177,8 @@ "conversation_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31459,8 +35186,8 @@ "conversation_sliding_window": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31468,8 +35195,8 @@ "convo": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31477,8 +35204,8 @@ "debug": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31486,8 +35213,8 @@ "debug_webhook_level": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31495,8 +35222,8 @@ "debug_webhook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31504,8 +35231,8 @@ "digit_terminators": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31513,8 +35240,8 @@ "digit_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31522,8 +35249,8 @@ "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31531,8 +35258,8 @@ "eleven_labs_similarity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31540,8 +35267,8 @@ "eleven_labs_stability": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31549,8 +35276,8 @@ "enable_barge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31558,8 +35285,8 @@ "enable_inner_dialog": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31567,8 +35294,8 @@ "enable_pause": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31576,8 +35303,8 @@ "enable_thinking": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31585,8 +35312,8 @@ "enable_turn_detection": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31594,8 +35321,8 @@ "enable_vision": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31603,8 +35330,8 @@ "end_of_speech_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31612,8 +35339,8 @@ "energy_level": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31621,8 +35348,8 @@ "first_word_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31630,8 +35357,8 @@ "function_wait_for_talking": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31639,8 +35366,8 @@ "functions_on_no_response": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31648,8 +35375,8 @@ "hard_stop_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31657,8 +35384,8 @@ "hard_stop_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31666,8 +35393,8 @@ "hold_music": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31675,8 +35402,8 @@ "hold_on_process": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31684,8 +35411,8 @@ "inactivity_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31693,8 +35420,8 @@ "initial_sleep_ms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31702,8 +35429,8 @@ "inner_dialog_model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31711,8 +35438,8 @@ "inner_dialog_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31720,8 +35447,8 @@ "inner_dialog_synced": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31729,8 +35456,8 @@ "input_poll_freq": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31738,8 +35465,8 @@ "interrupt_on_noise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31747,8 +35474,8 @@ "interrupt_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31756,8 +35483,8 @@ "languages_enabled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31765,8 +35492,8 @@ "llm_diarize_aware": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31774,8 +35501,8 @@ "local_tz": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31783,8 +35510,8 @@ "max_emotion": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31792,8 +35519,8 @@ "max_response_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31801,8 +35528,8 @@ "openai_asr_engine": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31810,8 +35537,8 @@ "outbound_attention_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31819,8 +35546,8 @@ "persist_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31828,8 +35555,8 @@ "pom_format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31837,8 +35564,8 @@ "save_conversation": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31846,8 +35573,8 @@ "speak_when_spoken_to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31855,8 +35582,8 @@ "speech_event_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31864,8 +35591,8 @@ "speech_gen_quick_stops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31873,8 +35600,8 @@ "speech_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31882,8 +35609,8 @@ "start_paused": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31891,8 +35618,8 @@ "static_greeting": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31900,8 +35627,8 @@ "static_greeting_no_barge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31909,8 +35636,8 @@ "summary_mode": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31918,8 +35645,8 @@ "swaig_allow_settings": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31927,8 +35654,8 @@ "swaig_allow_swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31936,8 +35663,8 @@ "swaig_post_conversation": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31945,8 +35672,8 @@ "swaig_post_swml_vars": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31954,8 +35681,8 @@ "swaig_set_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31963,8 +35690,8 @@ "thinking_model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31972,8 +35699,8 @@ "transfer_summary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31981,8 +35708,8 @@ "transparent_barge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31990,8 +35717,8 @@ "transparent_barge_max_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -31999,8 +35726,8 @@ "tts_number_format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32008,8 +35735,8 @@ "turn_detection_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32017,8 +35744,8 @@ "vad_config": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32026,8 +35753,8 @@ "video_idle_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32035,8 +35762,8 @@ "video_listening_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32044,8 +35771,8 @@ "video_talking_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32053,8 +35780,8 @@ "vision_model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32062,8 +35789,8 @@ "wait_for_user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32071,8 +35798,8 @@ "wake_prefix": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32084,8 +35811,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32093,8 +35820,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32102,8 +35829,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32111,8 +35838,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32120,8 +35847,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32129,8 +35856,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32138,8 +35865,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32151,8 +35878,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32160,8 +35887,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32169,8 +35896,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32178,8 +35905,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32187,8 +35914,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32196,8 +35923,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32205,8 +35932,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32218,8 +35945,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32227,8 +35954,8 @@ "contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32236,8 +35963,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32245,8 +35972,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32254,8 +35981,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32263,8 +35990,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32272,8 +35999,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32281,8 +36008,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32294,8 +36021,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32303,8 +36030,8 @@ "contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32312,8 +36039,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32321,8 +36048,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32330,8 +36057,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32339,8 +36066,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32348,8 +36075,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32357,8 +36084,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32370,8 +36097,8 @@ "allOf": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32383,8 +36110,8 @@ "amazon_bedrock": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32396,8 +36123,8 @@ "SWAIG": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32405,8 +36132,8 @@ "global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32414,8 +36141,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32423,8 +36150,8 @@ "post_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32432,8 +36159,8 @@ "post_prompt_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32441,8 +36168,8 @@ "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32454,8 +36181,8 @@ "answer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32467,8 +36194,8 @@ "anyOf": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32480,8 +36207,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32489,8 +36216,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32498,8 +36225,8 @@ "items": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32507,8 +36234,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32516,8 +36243,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32529,8 +36256,8 @@ "attention_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32538,8 +36265,8 @@ "hard_stop_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32547,8 +36274,8 @@ "hard_stop_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32556,8 +36283,8 @@ "inactivity_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32565,8 +36292,8 @@ "video_idle_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32574,8 +36301,8 @@ "video_listening_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32583,8 +36310,8 @@ "video_talking_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32596,8 +36323,8 @@ "defaults": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32605,8 +36332,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32614,8 +36341,8 @@ "includes": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32623,8 +36350,8 @@ "native_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32636,8 +36363,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32645,8 +36372,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32654,8 +36381,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32663,8 +36390,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32676,8 +36403,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32685,8 +36412,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32694,8 +36421,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32707,8 +36434,8 @@ "full_reset": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32716,8 +36443,8 @@ "system_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32725,8 +36452,8 @@ "user_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32738,8 +36465,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32747,8 +36474,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32756,8 +36483,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32769,8 +36496,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32778,8 +36505,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32787,8 +36514,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32800,8 +36527,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32809,8 +36536,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32818,8 +36545,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32831,8 +36558,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32840,8 +36567,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32849,8 +36576,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32862,8 +36589,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32875,8 +36602,8 @@ "caller_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32884,8 +36611,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32893,8 +36620,8 @@ "fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32902,8 +36629,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32911,8 +36638,8 @@ "status_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32920,8 +36647,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32929,8 +36656,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32938,8 +36665,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32947,8 +36674,8 @@ "url_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32960,8 +36687,8 @@ "caller_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32969,8 +36696,8 @@ "fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32978,8 +36705,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32987,8 +36714,8 @@ "status_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -32996,8 +36723,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33005,8 +36732,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33014,8 +36741,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33023,8 +36750,8 @@ "url_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33036,8 +36763,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33045,8 +36772,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33058,8 +36785,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33067,8 +36794,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33076,8 +36803,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33089,8 +36816,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33098,8 +36825,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33107,8 +36834,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33120,8 +36847,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33129,8 +36856,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33138,8 +36865,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33151,8 +36878,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33160,8 +36887,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33169,8 +36896,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33182,8 +36909,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33191,8 +36918,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33200,8 +36927,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33213,8 +36940,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33222,8 +36949,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33231,8 +36958,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33244,8 +36971,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33253,8 +36980,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33262,8 +36989,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33275,8 +37002,8 @@ "billing_ms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33284,8 +37011,8 @@ "charge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33293,8 +37020,8 @@ "charge_details": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33302,8 +37029,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33311,8 +37038,8 @@ "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33320,8 +37047,8 @@ "duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33329,8 +37056,8 @@ "duration_ms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33338,8 +37065,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33347,8 +37074,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33356,8 +37083,8 @@ "parent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33365,8 +37092,8 @@ "source": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33374,8 +37101,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33383,8 +37110,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33392,8 +37119,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33401,8 +37128,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33414,8 +37141,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33423,8 +37150,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33432,8 +37159,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33445,8 +37172,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33454,8 +37181,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33463,8 +37190,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33476,8 +37203,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33485,8 +37212,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33494,8 +37221,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33507,8 +37234,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33516,8 +37243,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33525,8 +37252,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33538,8 +37265,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33547,8 +37274,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33556,8 +37283,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33569,8 +37296,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33578,8 +37305,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33587,8 +37314,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33600,8 +37327,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33609,8 +37336,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33618,8 +37345,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33631,8 +37358,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33640,8 +37367,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33649,8 +37376,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33662,8 +37389,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33671,8 +37398,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33680,8 +37407,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33693,8 +37420,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33702,8 +37429,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33711,8 +37438,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33724,8 +37451,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33733,8 +37460,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33742,8 +37469,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33755,8 +37482,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33764,8 +37491,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33773,8 +37500,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33786,8 +37513,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33795,8 +37522,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33804,8 +37531,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33817,8 +37544,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33826,8 +37553,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33835,8 +37562,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33848,8 +37575,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33857,8 +37584,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33866,8 +37593,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33879,8 +37606,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33888,8 +37615,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33897,8 +37624,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33910,8 +37637,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33919,8 +37646,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33928,8 +37655,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33941,8 +37668,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33950,8 +37677,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33959,8 +37686,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33972,8 +37699,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33981,8 +37708,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -33990,8 +37717,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34003,8 +37730,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34012,8 +37739,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34021,8 +37748,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34034,8 +37761,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34043,8 +37770,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34052,8 +37779,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34065,8 +37792,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34074,8 +37801,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34083,8 +37810,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34096,8 +37823,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34105,8 +37832,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34118,8 +37845,8 @@ "fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34127,8 +37854,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34136,8 +37863,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34145,8 +37872,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34154,8 +37881,8 @@ "swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34167,8 +37894,8 @@ "fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34176,8 +37903,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34185,8 +37912,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34194,8 +37921,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34203,8 +37930,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34216,8 +37943,8 @@ "command": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34225,8 +37952,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34234,8 +37961,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34247,8 +37974,8 @@ "change_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34260,8 +37987,8 @@ "change_step": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34273,8 +38000,8 @@ "charge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34282,8 +38009,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34295,8 +38022,8 @@ "cond": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34308,8 +38035,8 @@ "else": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34321,8 +38048,8 @@ "else": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34330,8 +38057,8 @@ "then": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34339,8 +38066,8 @@ "when": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34352,8 +38079,8 @@ "connect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34365,8 +38092,8 @@ "answer_on_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34374,8 +38101,8 @@ "call_state_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34383,8 +38110,8 @@ "call_state_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34392,8 +38119,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34401,8 +38128,8 @@ "confirm": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34410,8 +38137,8 @@ "confirm_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34419,8 +38146,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34428,8 +38155,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34437,8 +38164,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34446,8 +38173,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34455,8 +38182,8 @@ "parallel": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34464,8 +38191,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34473,8 +38200,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34482,8 +38209,8 @@ "ringback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34491,8 +38218,8 @@ "session_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34500,8 +38227,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34509,8 +38236,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34518,8 +38245,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34527,8 +38254,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34536,8 +38263,8 @@ "webrtc_media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34549,8 +38276,8 @@ "answer_on_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34558,8 +38285,8 @@ "call_state_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34567,8 +38294,8 @@ "call_state_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34576,8 +38303,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34585,8 +38312,8 @@ "confirm": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34594,8 +38321,8 @@ "confirm_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34603,8 +38330,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34612,8 +38339,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34621,8 +38348,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34630,8 +38357,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34639,8 +38366,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34648,8 +38375,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34657,8 +38384,8 @@ "ringback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34666,8 +38393,8 @@ "serial": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34675,8 +38402,8 @@ "session_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34684,8 +38411,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34693,8 +38420,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34702,8 +38429,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34711,8 +38438,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34720,8 +38447,8 @@ "webrtc_media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34733,8 +38460,8 @@ "answer_on_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34742,8 +38469,8 @@ "call_state_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34751,8 +38478,8 @@ "call_state_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34760,8 +38487,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34769,8 +38496,8 @@ "confirm": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34778,8 +38505,8 @@ "confirm_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34787,8 +38514,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34796,8 +38523,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34805,8 +38532,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34814,8 +38541,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34823,8 +38550,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34832,8 +38559,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34841,8 +38568,8 @@ "ringback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34850,8 +38577,8 @@ "serial_parallel": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34859,8 +38586,8 @@ "session_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34868,8 +38595,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34877,8 +38604,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34886,8 +38613,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34895,8 +38622,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34904,8 +38631,8 @@ "webrtc_media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34917,8 +38644,8 @@ "answer_on_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34926,8 +38653,8 @@ "authorization_bearer_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34935,8 +38662,8 @@ "call_state_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34944,8 +38671,8 @@ "call_state_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34953,8 +38680,8 @@ "codec": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34962,8 +38689,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34971,8 +38698,8 @@ "confirm": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34980,8 +38707,8 @@ "confirm_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34989,8 +38716,8 @@ "custom_parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -34998,8 +38725,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35007,8 +38734,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35016,8 +38743,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35025,8 +38752,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35034,8 +38761,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35043,8 +38770,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35052,8 +38779,8 @@ "realtime": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35061,8 +38788,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35070,8 +38797,8 @@ "ringback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35079,8 +38806,8 @@ "session_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35088,8 +38815,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35097,8 +38824,8 @@ "status_url_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35106,8 +38833,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35115,8 +38842,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35124,8 +38851,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35133,8 +38860,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35142,8 +38869,8 @@ "webrtc_media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35155,8 +38882,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35164,8 +38891,8 @@ "value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35177,8 +38904,8 @@ "case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35186,8 +38913,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35195,8 +38922,8 @@ "variable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35208,8 +38935,8 @@ "const": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35221,8 +38948,8 @@ "end": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35230,8 +38957,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35239,8 +38966,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35248,8 +38975,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35257,8 +38984,8 @@ "skip_user_turn": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35266,8 +38993,8 @@ "step_criteria": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35275,8 +39002,8 @@ "valid_contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35284,8 +39011,8 @@ "valid_steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35297,8 +39024,8 @@ "context_switch": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35310,8 +39037,8 @@ "end": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35319,8 +39046,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35328,8 +39055,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35337,8 +39064,8 @@ "skip_user_turn": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35346,8 +39073,8 @@ "step_criteria": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35355,8 +39082,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35364,8 +39091,8 @@ "valid_contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35373,8 +39100,8 @@ "valid_steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35386,8 +39113,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35399,8 +39126,8 @@ "enter_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35408,8 +39135,8 @@ "exit_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35417,8 +39144,8 @@ "isolated": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35426,8 +39153,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35435,8 +39162,8 @@ "steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35448,8 +39175,8 @@ "enter_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35457,8 +39184,8 @@ "exit_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35466,8 +39193,8 @@ "isolated": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35475,8 +39202,8 @@ "steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35484,8 +39211,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35497,8 +39224,8 @@ "content": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35506,8 +39233,8 @@ "lang": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35515,8 +39242,8 @@ "role": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35528,8 +39255,8 @@ "expressions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35537,8 +39264,8 @@ "output": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35546,8 +39273,8 @@ "webhooks": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35559,8 +39286,8 @@ "denoise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35572,8 +39299,8 @@ "detect_machine": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35585,8 +39312,8 @@ "enter_queue": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35598,8 +39325,8 @@ "queue_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35607,8 +39334,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35616,8 +39343,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35625,8 +39352,8 @@ "wait_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35634,8 +39361,8 @@ "wait_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35647,8 +39374,8 @@ "execute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35660,8 +39387,8 @@ "case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35669,8 +39396,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35678,8 +39405,8 @@ "variable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35691,8 +39418,8 @@ "output": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35700,8 +39427,8 @@ "pattern": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35709,8 +39436,8 @@ "string": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35722,8 +39449,8 @@ "charge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35731,8 +39458,8 @@ "charge_details": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35740,8 +39467,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35749,8 +39476,8 @@ "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35758,8 +39485,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35767,8 +39494,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35776,8 +39503,8 @@ "source": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35785,8 +39512,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35794,8 +39521,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35803,8 +39530,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35812,8 +39539,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35825,8 +39552,8 @@ "properties": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35834,8 +39561,8 @@ "required": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35843,8 +39570,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35856,8 +39583,8 @@ "goto": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35869,8 +39596,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35878,8 +39605,8 @@ "argument": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35887,8 +39614,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35896,8 +39623,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35905,8 +39632,8 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35914,8 +39641,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35923,8 +39650,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35932,8 +39659,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35941,8 +39668,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35950,8 +39677,8 @@ "purpose": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35959,8 +39686,8 @@ "skip_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35968,8 +39695,8 @@ "wait_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35977,8 +39704,8 @@ "wait_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35986,8 +39713,8 @@ "wait_for_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -35995,8 +39722,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36008,8 +39735,8 @@ "hangup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36021,8 +39748,8 @@ "hangup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36034,8 +39761,8 @@ "hint": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36043,8 +39770,8 @@ "ignore_case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36052,8 +39779,8 @@ "pattern": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36061,8 +39788,8 @@ "replace": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36074,8 +39801,8 @@ "hold": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36087,8 +39814,8 @@ "inject": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36100,8 +39827,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36109,8 +39836,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36118,8 +39845,8 @@ "enum": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36127,8 +39854,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36136,8 +39863,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36149,8 +39876,8 @@ "join_conference": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36162,8 +39889,8 @@ "beep": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36171,8 +39898,8 @@ "coach": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36180,8 +39907,8 @@ "end_on_exit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36189,8 +39916,8 @@ "max_participants": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36198,8 +39925,8 @@ "muted": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36207,8 +39934,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36216,8 +39943,8 @@ "record": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36225,8 +39952,8 @@ "recording_status_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36234,8 +39961,8 @@ "recording_status_callback_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36243,8 +39970,8 @@ "recording_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36252,8 +39979,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36261,8 +39988,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36270,8 +39997,8 @@ "start_on_enter": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36279,8 +40006,8 @@ "status_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36288,8 +40015,8 @@ "status_callback_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36297,8 +40024,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36306,8 +40033,8 @@ "trim": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36315,8 +40042,8 @@ "wait_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36328,8 +40055,8 @@ "join_room": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36341,8 +40068,8 @@ "label": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36354,8 +40081,8 @@ "similarity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36363,8 +40090,8 @@ "stability": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36376,8 +40103,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36385,8 +40112,8 @@ "emotion": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36394,8 +40121,8 @@ "engine": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36403,8 +40130,8 @@ "function_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36412,8 +40139,8 @@ "model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36421,8 +40148,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36430,8 +40157,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36439,8 +40166,8 @@ "speech_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36448,8 +40175,8 @@ "speed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36457,8 +40184,8 @@ "voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36470,8 +40197,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36479,8 +40206,8 @@ "emotion": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36488,8 +40215,8 @@ "engine": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36497,8 +40224,8 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36506,8 +40233,8 @@ "model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36515,8 +40242,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36524,8 +40251,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36533,8 +40260,8 @@ "speed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36542,8 +40269,8 @@ "voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36555,8 +40282,8 @@ "live_transcribe": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36568,8 +40295,8 @@ "start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36581,8 +40308,8 @@ "summarize": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36594,8 +40321,8 @@ "live_translate": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36607,8 +40334,8 @@ "inject": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36620,8 +40347,8 @@ "start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36633,8 +40360,8 @@ "summarize": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36646,8 +40373,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36655,8 +40382,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36668,8 +40395,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36677,8 +40404,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36686,8 +40413,8 @@ "enum": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36695,8 +40422,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36704,8 +40431,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36717,8 +40444,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36726,8 +40453,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36735,8 +40462,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36744,8 +40471,8 @@ "properties": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36753,8 +40480,8 @@ "required": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36762,8 +40489,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36775,8 +40502,8 @@ "oneOf": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36788,8 +40515,8 @@ "action": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36797,8 +40524,8 @@ "response": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36810,8 +40537,8 @@ "pay": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36823,8 +40550,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36832,8 +40559,8 @@ "value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36845,8 +40572,8 @@ "phrase": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36854,8 +40581,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36867,8 +40594,8 @@ "phrase": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36876,8 +40603,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36889,8 +40616,8 @@ "actions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36898,8 +40625,8 @@ "attempts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36907,8 +40634,8 @@ "card_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36916,8 +40643,8 @@ "error_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36925,8 +40652,8 @@ "for": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36938,8 +40665,8 @@ "play": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36951,8 +40678,8 @@ "auto_answer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36960,8 +40687,8 @@ "say_gender": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36969,8 +40696,8 @@ "say_language": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36978,8 +40705,8 @@ "say_voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36987,8 +40714,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -36996,8 +40723,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37005,8 +40732,8 @@ "volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37018,8 +40745,8 @@ "auto_answer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37027,8 +40754,8 @@ "say_gender": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37036,8 +40763,8 @@ "say_language": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37045,8 +40772,8 @@ "say_voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37054,8 +40781,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37063,8 +40790,8 @@ "urls": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37072,8 +40799,8 @@ "volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37085,8 +40812,8 @@ "playback_bg": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37098,8 +40825,8 @@ "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37107,8 +40834,8 @@ "bullets": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37116,8 +40843,8 @@ "numbered": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37125,8 +40852,8 @@ "numberedBullets": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37134,8 +40861,8 @@ "subsections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37143,8 +40870,8 @@ "title": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37156,8 +40883,8 @@ "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37165,8 +40892,8 @@ "bullets": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37174,8 +40901,8 @@ "numbered": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37183,8 +40910,8 @@ "numberedBullets": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37192,8 +40919,8 @@ "subsections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37201,8 +40928,8 @@ "title": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37214,8 +40941,8 @@ "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37227,8 +40954,8 @@ "ignore_case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37236,8 +40963,8 @@ "replace": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37245,8 +40972,8 @@ "with": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37258,8 +40985,8 @@ "receive_fax": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37271,8 +40998,8 @@ "record": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37284,8 +41011,8 @@ "record_call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37297,8 +41024,8 @@ "request": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37310,8 +41037,8 @@ "return": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37323,8 +41050,8 @@ "sip_refer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37336,8 +41063,8 @@ "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37345,8 +41072,8 @@ "from_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37354,8 +41081,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37363,8 +41090,8 @@ "tags": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37372,8 +41099,8 @@ "to_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37385,8 +41112,8 @@ "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37394,8 +41121,8 @@ "from_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37403,8 +41130,8 @@ "media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37412,8 +41139,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37421,8 +41148,8 @@ "tags": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37430,8 +41157,8 @@ "to_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37443,8 +41170,8 @@ "defaults": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37452,8 +41179,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37461,8 +41188,8 @@ "includes": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37470,8 +41197,8 @@ "internal_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37479,8 +41206,8 @@ "native_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37492,8 +41219,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37505,8 +41232,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37514,8 +41241,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37523,8 +41250,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37536,8 +41263,8 @@ "adjust_response_latency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37545,8 +41272,8 @@ "change_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37554,8 +41281,8 @@ "check_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37563,8 +41290,8 @@ "get_ideal_strategy": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37572,8 +41299,8 @@ "get_visual_input": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37581,8 +41308,8 @@ "hangup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37590,8 +41317,8 @@ "next_step": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37599,8 +41326,8 @@ "wait_for_user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37608,8 +41335,8 @@ "wait_seconds": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37621,8 +41348,8 @@ "SWML": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37634,8 +41361,8 @@ "sections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37643,8 +41370,8 @@ "version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37656,8 +41383,8 @@ "say": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37669,8 +41396,8 @@ "main": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37682,8 +41409,8 @@ "send_digits": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37695,8 +41422,8 @@ "send_fax": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37708,8 +41435,8 @@ "send_sms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37721,8 +41448,8 @@ "set": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37734,8 +41461,8 @@ "set_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37747,8 +41474,8 @@ "set_meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37760,8 +41487,8 @@ "sleep": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37773,8 +41500,8 @@ "start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37786,8 +41513,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37795,8 +41522,8 @@ "argument": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37804,8 +41531,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37813,8 +41540,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37822,8 +41549,8 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37831,8 +41558,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37840,8 +41567,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37849,8 +41576,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37858,8 +41585,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37867,8 +41594,8 @@ "purpose": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37876,8 +41603,8 @@ "skip_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37885,8 +41612,8 @@ "wait_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37894,8 +41621,8 @@ "wait_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37903,8 +41630,8 @@ "wait_for_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37912,8 +41639,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37925,8 +41652,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37938,8 +41665,8 @@ "stop_denoise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37951,8 +41678,8 @@ "stop_playback_bg": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37964,8 +41691,8 @@ "stop_record_call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37977,8 +41704,8 @@ "stop_tap": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37990,8 +41717,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -37999,8 +41726,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38008,8 +41735,8 @@ "enum": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38017,8 +41744,8 @@ "format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38026,8 +41753,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38035,8 +41762,8 @@ "pattern": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38044,8 +41771,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38057,8 +41784,8 @@ "summarize": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38070,8 +41797,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38079,8 +41806,8 @@ "argument": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38088,8 +41815,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38097,8 +41824,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38106,8 +41833,8 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38115,8 +41842,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38124,8 +41851,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38133,8 +41860,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38142,8 +41869,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38151,8 +41878,8 @@ "purpose": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38160,8 +41887,8 @@ "skip_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38169,8 +41896,8 @@ "wait_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38178,8 +41905,8 @@ "wait_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38187,8 +41914,8 @@ "wait_for_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38196,8 +41923,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38209,8 +41936,8 @@ "switch": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38222,8 +41949,8 @@ "tap": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38235,8 +41962,8 @@ "toggle_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38248,8 +41975,8 @@ "start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38261,8 +41988,8 @@ "summarize": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38274,8 +42001,8 @@ "transfer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38287,8 +42014,8 @@ "attribute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38296,8 +42023,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38305,8 +42032,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38314,8 +42041,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38323,8 +42050,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38336,8 +42063,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38349,8 +42076,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38362,8 +42089,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38375,8 +42102,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38388,8 +42115,8 @@ "unset": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38401,8 +42128,8 @@ "unset_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38414,8 +42141,8 @@ "unset_meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38427,8 +42154,8 @@ "user_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38440,8 +42167,8 @@ "user_input": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38453,8 +42180,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38462,8 +42189,8 @@ "argument": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38471,8 +42198,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38480,8 +42207,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38489,8 +42216,8 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38498,8 +42225,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38507,8 +42234,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38516,8 +42243,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38525,8 +42252,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38534,8 +42261,8 @@ "purpose": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38543,8 +42270,8 @@ "skip_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38552,8 +42279,8 @@ "wait_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38561,8 +42288,8 @@ "wait_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38570,8 +42297,8 @@ "wait_for_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38579,8 +42306,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38592,8 +42319,8 @@ "error_keys": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38601,8 +42328,8 @@ "expressions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38610,8 +42337,8 @@ "foreach": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38619,8 +42346,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38628,8 +42355,8 @@ "input_args_as_params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38637,8 +42364,8 @@ "method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38646,8 +42373,8 @@ "output": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38655,8 +42382,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38664,8 +42391,8 @@ "require_args": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38673,8 +42400,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38690,13 +42417,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -38704,44 +42431,51 @@ "create_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "ttl", - "type": "int", "required": true, - "kind": "keyword" + "type": "int" }, { + "kind": "keyword", "name": "channels", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "member_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "state", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.chat_types_generated.ChatToken" } } } @@ -38754,8 +42488,8 @@ "read": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38763,8 +42497,8 @@ "write": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38776,8 +42510,8 @@ "read": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38785,8 +42519,8 @@ "write": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38798,8 +42532,8 @@ "token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38811,8 +42545,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38824,8 +42558,8 @@ "channels": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38833,8 +42567,8 @@ "member_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38842,8 +42576,8 @@ "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38851,8 +42585,8 @@ "ttl": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38864,8 +42598,8 @@ "attribute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38873,8 +42607,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38882,8 +42616,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38891,8 +42625,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38900,8 +42634,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38913,8 +42647,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38926,8 +42660,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -38939,17 +42673,26 @@ "signalwire.rest.namespaces.datasphere_resources_generated": { "classes": { "DatasphereDocuments": { + "crud_base": { + "base": "CrudResource", + "bind": [ + "class:DocumentListResponse", + "class:Document", + "class:DocumentCreateRequest", + "class:DocumentUpdateRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -38957,18 +42700,25 @@ "delete_chunk": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "documentId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "chunkId", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -38976,120 +42726,141 @@ "get_chunk": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "documentId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "chunkId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.datasphere_types_generated.ChunkResponse" }, "list_chunks": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "documentId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.datasphere_types_generated.ChunkListResponse" }, "search": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "query_string", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "tags", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "document_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "distance", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "count", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "language", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "pos_to_expand", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "max_synonyms", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.datasphere_types_generated.SearchResponse" } } } @@ -39102,8 +42873,8 @@ "document_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39111,8 +42882,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39124,8 +42895,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39133,8 +42904,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39146,8 +42917,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39155,8 +42926,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39164,8 +42935,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39173,8 +42944,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39186,8 +42957,8 @@ "content": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39195,8 +42966,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39204,8 +42975,8 @@ "datasphere_document_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39213,8 +42984,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39222,8 +42993,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39231,8 +43002,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39240,8 +43011,8 @@ "tags": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39249,8 +43020,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39262,8 +43033,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39275,8 +43046,8 @@ "chunk_size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39284,8 +43055,8 @@ "chunking_strategy": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39293,8 +43064,8 @@ "chunks_uri": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39302,8 +43073,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39311,8 +43082,8 @@ "filename": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39320,8 +43091,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39329,8 +43100,8 @@ "max_sentences_per_chunk": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39338,8 +43109,8 @@ "number_of_chunks": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39347,8 +43118,8 @@ "overlap_size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39356,8 +43127,8 @@ "split_newlines": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39365,8 +43136,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39374,8 +43145,8 @@ "tags": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39383,8 +43154,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39396,8 +43167,8 @@ "tags": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39405,8 +43176,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39418,8 +43189,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39427,8 +43198,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39440,8 +43211,8 @@ "count": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39449,8 +43220,8 @@ "distance": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39458,8 +43229,8 @@ "document_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39467,8 +43238,8 @@ "language": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39476,8 +43247,8 @@ "max_synonyms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39485,8 +43256,8 @@ "pos_to_expand": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39494,8 +43265,8 @@ "query_string": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39503,8 +43274,8 @@ "tags": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39516,8 +43287,8 @@ "tags": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39529,8 +43300,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39542,8 +43313,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39551,8 +43322,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39560,8 +43331,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39569,8 +43340,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39582,8 +43353,8 @@ "chunks": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39595,8 +43366,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39608,8 +43379,8 @@ "attribute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39617,8 +43388,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39626,8 +43397,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39635,8 +43406,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39644,8 +43415,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39657,8 +43428,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39670,8 +43441,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39683,8 +43454,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39696,8 +43467,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39709,8 +43480,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -39722,17 +43493,26 @@ "signalwire.rest.namespaces.fabric_resources_generated": { "classes": { "AiAgents": { + "crud_base": { + "base": "FabricResource", + "bind": [ + "class:AIAgentListResponse", + "class:AIAgentResponse", + "class:AIAgentCreateRequest", + "class:AIAgentUpdateRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -39740,17 +43520,26 @@ } }, "CallFlows": { + "crud_base": { + "base": "FabricResource", + "bind": [ + "class:CallFlowListResponse", + "class:CallFlowResponse", + "class:CallFlowCreateRequest", + "class:CallFlowUpdateRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -39758,78 +43547,108 @@ "deploy_version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "dict", - "required": true + "required": true, + "type": "dict" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.CallFlowVersionDeployResponse" }, "list_addresses": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.CallFlowAddressListResponse" }, "list_versions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.CallFlowVersionListResponse" } } }, "ConferenceRooms": { + "crud_base": { + "base": "FabricResource", + "bind": [ + "class:ConferenceRoomListResponse", + "class:ConferenceRoomResponse", + "class:ConferenceRoomCreateRequest", + "class:ConferenceRoomUpdateRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -39837,23 +43656,30 @@ "list_addresses": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.ConferenceRoomAddressListResponse" } } }, @@ -39862,13 +43688,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -39876,13 +43702,20 @@ "delete": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -39890,194 +43723,231 @@ "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.CxmlApplicationResponse" }, "list": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.CxmlApplicationListResponse" }, "list_addresses": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.CxmlApplicationAddressListResponse" }, "update": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "display_name", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "account_sid", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "voice_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "voice_method", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "voice_fallback_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "voice_fallback_method", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "status_callback", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "status_callback_method", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "sms_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "sms_method", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "sms_fallback_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "sms_fallback_method", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "sms_status_callback", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "sms_status_callback_method", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.CxmlApplicationResponse" } } }, "CxmlScripts": { + "crud_base": { + "base": "FabricResource", + "bind": [ + "class:CXMLScriptListResponse", + "class:CXMLScriptResponse", + "class:CXMLScriptCreateRequest", + "class:CXMLScriptUpdateRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -40085,17 +43955,26 @@ } }, "CxmlWebhooks": { + "crud_base": { + "base": "FabricResource", + "bind": [ + "class:CXMLWebhookListResponse", + "class:CXMLWebhookResponse", + "class:CXMLWebhookCreateRequest", + "class:CXMLWebhookUpdateRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -40103,17 +43982,24 @@ } }, "FabricAddresses": { + "crud_base": { + "base": "ReadResource", + "bind": [ + "class:FabricAddressesResponse", + "class:FabricAddress" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -40121,8 +44007,15 @@ "paginate": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "class:signalwire.rest._pagination.PaginatedIterator" @@ -40134,13 +44027,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -40148,218 +44041,262 @@ "create_embed_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "token", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.EmbedsTokensResponse" }, "create_guest_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "allowed_addresses", - "type": "list", "required": true, - "kind": "keyword" + "type": "list" }, { + "default": null, + "kind": "keyword", "name": "expire_at", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.SubscriberGuestTokenCreateResponse" }, "create_invite_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "address_id", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "expires_at", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.SubscriberInviteTokenCreateResponse" }, "create_subscriber_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "reference", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "expire_at", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "application_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "password", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "first_name", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "last_name", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "display_name", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "job_title", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "time_zone", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "country", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "region", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "company_name", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.SubscriberTokenResponse" }, "refresh_subscriber_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "refresh_token", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.SubscriberRefreshTokenResponse" } } }, "FreeswitchConnectors": { + "crud_base": { + "base": "FabricResource", + "bind": [ + "class:FreeswitchConnectorListResponse", + "class:FreeswitchConnectorResponse", + "class:FreeswitchConnectorCreateRequest", + "class:FreeswitchConnectorUpdateRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -40371,13 +44308,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -40385,73 +44322,94 @@ "assign_domain_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "domain_application_id", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.DomainApplicationResponse" }, "assign_phone_route": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "phone_route_id", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "kind": "keyword", "name": "handler", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.PhoneRouteResponse" }, "delete": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -40459,20 +44417,27 @@ "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], "returns": "dict" @@ -40480,54 +44445,77 @@ "list": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.ResourceListResponse" }, "list_addresses": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.ResourceAddressListResponse" } } }, "RelayApplications": { + "crud_base": { + "base": "FabricResource", + "bind": [ + "class:RelayApplicationListResponse", + "class:RelayApplicationResponse", + "class:RelayApplicationCreateRequest", + "class:RelayApplicationUpdateRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -40535,17 +44523,26 @@ } }, "SipEndpoints": { + "crud_base": { + "base": "FabricResource", + "bind": [ + "class:SipEndpointListResponse", + "class:SipEndpointResponse", + "class:SipEndpointCreateRequest", + "class:SipEndpointUpdateRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -40553,17 +44550,26 @@ } }, "SipGateways": { + "crud_base": { + "base": "FabricResource", + "bind": [ + "class:SipGatewayListResponse", + "class:SipGatewayResponse", + "class:SipGatewayRequest", + "class:SipGatewayRequestUpdate" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -40571,17 +44577,26 @@ } }, "Subscribers": { + "crud_base": { + "base": "FabricResource", + "bind": [ + "class:SubscriberListResponse", + "class:SubscriberResponse", + "class:SubscriberRequest", + "class:SubscriberRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -40589,86 +44604,100 @@ "create_sip_endpoint": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "subscriberId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "username", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "kind": "keyword", "name": "password", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "caller_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "send_as", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "ciphers", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "codecs", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "encryption", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.SubscriberSIPEndpoint" }, "delete_sip_endpoint": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "subscriberId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -40676,139 +44705,169 @@ "get_sip_endpoint": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "subscriberId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.SubscriberSIPEndpoint" }, "list_sip_endpoints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "subscriberId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.SubscriberSipEndpointListResponse" }, "update_sip_endpoint": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "subscriberId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "username", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "password", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "caller_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "send_as", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "ciphers", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "codecs", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "encryption", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.fabric_types_generated.SubscriberSIPEndpoint" } } }, "SwmlScripts": { + "crud_base": { + "base": "FabricResource", + "bind": [ + "class:SwmlScriptListResponse", + "class:SwmlScriptResponse", + "class:SwmlScriptCreateRequest", + "class:SwmlScriptUpdateRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -40816,17 +44875,26 @@ } }, "SwmlWebhooks": { + "crud_base": { + "base": "FabricResource", + "bind": [ + "class:SWMLWebhookListResponse", + "class:SWMLWebhookResponse", + "class:SWMLWebhookCreateRequest", + "class:SWMLWebhookUpdateRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -40842,8 +44910,8 @@ "ai": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40855,8 +44923,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40864,8 +44932,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40873,8 +44941,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40882,8 +44950,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40895,8 +44963,8 @@ "SWAIG": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40904,8 +44972,8 @@ "agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40913,8 +44981,8 @@ "global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40922,8 +44990,8 @@ "hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40931,8 +44999,8 @@ "languages": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40940,8 +45008,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40949,8 +45017,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40958,8 +45026,8 @@ "post_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40967,8 +45035,8 @@ "post_prompt_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40976,8 +45044,8 @@ "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40985,8 +45053,8 @@ "pronounce": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -40998,8 +45066,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41007,8 +45075,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41020,8 +45088,8 @@ "SWAIG": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41029,8 +45097,8 @@ "agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41038,8 +45106,8 @@ "global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41047,8 +45115,8 @@ "hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41056,8 +45124,8 @@ "languages": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41065,8 +45133,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41074,8 +45142,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41083,8 +45151,8 @@ "post_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41092,8 +45160,8 @@ "post_prompt_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41101,8 +45169,8 @@ "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41110,8 +45178,8 @@ "pronounce": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41123,8 +45191,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41136,8 +45204,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41145,8 +45213,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41158,8 +45226,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41167,8 +45235,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41176,8 +45244,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41185,8 +45253,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41198,8 +45266,8 @@ "ai_agent": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41207,8 +45275,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41216,8 +45284,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41225,8 +45293,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41234,8 +45302,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41243,8 +45311,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41252,8 +45320,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41265,8 +45333,8 @@ "SWAIG": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41274,8 +45342,8 @@ "agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41283,8 +45351,8 @@ "global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41292,8 +45360,8 @@ "hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41301,8 +45369,8 @@ "languages": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41310,8 +45378,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41319,8 +45387,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41328,8 +45396,8 @@ "post_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41337,8 +45405,8 @@ "post_prompt_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41346,8 +45414,8 @@ "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41355,8 +45423,8 @@ "pronounce": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41368,8 +45436,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41381,8 +45449,8 @@ "SWAIG": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41390,8 +45458,8 @@ "global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41399,8 +45467,8 @@ "hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41408,8 +45476,8 @@ "languages": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41417,8 +45485,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41426,8 +45494,8 @@ "post_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41435,8 +45503,8 @@ "post_prompt_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41444,8 +45512,8 @@ "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41453,8 +45521,8 @@ "pronounce": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41466,8 +45534,8 @@ "acknowledge_interruptions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41475,8 +45543,8 @@ "ai_model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41484,8 +45552,8 @@ "ai_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41493,8 +45561,8 @@ "ai_volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41502,8 +45570,8 @@ "app_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41511,8 +45579,8 @@ "asr_diarize": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41520,8 +45588,8 @@ "asr_smart_format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41529,8 +45597,8 @@ "asr_speaker_affinity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41538,8 +45606,8 @@ "attention_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41547,8 +45615,8 @@ "attention_timeout_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41556,8 +45624,8 @@ "background_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41565,8 +45633,8 @@ "background_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41574,8 +45642,8 @@ "background_file_volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41583,8 +45651,8 @@ "barge_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41592,8 +45660,8 @@ "barge_match_string": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41601,8 +45669,8 @@ "barge_min_words": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41610,8 +45678,8 @@ "conscience": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41619,8 +45687,8 @@ "conversation_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41628,8 +45696,8 @@ "conversation_sliding_window": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41637,8 +45705,8 @@ "convo": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41646,8 +45714,8 @@ "debug": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41655,8 +45723,8 @@ "debug_webhook_level": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41664,8 +45732,8 @@ "debug_webhook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41673,8 +45741,8 @@ "digit_terminators": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41682,8 +45750,8 @@ "digit_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41691,8 +45759,8 @@ "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41700,8 +45768,8 @@ "eleven_labs_similarity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41709,8 +45777,8 @@ "eleven_labs_stability": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41718,8 +45786,8 @@ "enable_barge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41727,8 +45795,8 @@ "enable_inner_dialog": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41736,8 +45804,8 @@ "enable_pause": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41745,8 +45813,8 @@ "enable_thinking": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41754,8 +45822,8 @@ "enable_turn_detection": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41763,8 +45831,8 @@ "enable_vision": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41772,8 +45840,8 @@ "end_of_speech_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41781,8 +45849,8 @@ "energy_level": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41790,8 +45858,8 @@ "first_word_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41799,8 +45867,8 @@ "function_wait_for_talking": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41808,8 +45876,8 @@ "functions_on_no_response": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41817,8 +45885,8 @@ "hard_stop_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41826,8 +45894,8 @@ "hard_stop_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41835,8 +45903,8 @@ "hold_music": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41844,8 +45912,8 @@ "hold_on_process": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41853,8 +45921,8 @@ "inactivity_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41862,8 +45930,8 @@ "initial_sleep_ms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41871,8 +45939,8 @@ "inner_dialog_model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41880,8 +45948,8 @@ "inner_dialog_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41889,8 +45957,8 @@ "inner_dialog_synced": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41898,8 +45966,8 @@ "input_poll_freq": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41907,8 +45975,8 @@ "interrupt_on_noise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41916,8 +45984,8 @@ "interrupt_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41925,8 +45993,8 @@ "languages_enabled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41934,8 +46002,8 @@ "llm_diarize_aware": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41943,8 +46011,8 @@ "local_tz": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41952,8 +46020,8 @@ "max_emotion": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41961,8 +46029,8 @@ "max_response_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41970,8 +46038,8 @@ "openai_asr_engine": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41979,8 +46047,8 @@ "outbound_attention_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41988,8 +46056,8 @@ "persist_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -41997,8 +46065,8 @@ "pom_format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42006,8 +46074,8 @@ "save_conversation": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42015,8 +46083,8 @@ "speak_when_spoken_to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42024,8 +46092,8 @@ "speech_event_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42033,8 +46101,8 @@ "speech_gen_quick_stops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42042,8 +46110,8 @@ "speech_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42051,8 +46119,8 @@ "start_paused": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42060,8 +46128,8 @@ "static_greeting": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42069,8 +46137,8 @@ "static_greeting_no_barge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42078,8 +46146,8 @@ "summary_mode": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42087,8 +46155,8 @@ "swaig_allow_settings": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42096,8 +46164,8 @@ "swaig_allow_swml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42105,8 +46173,8 @@ "swaig_post_conversation": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42114,8 +46182,8 @@ "swaig_post_swml_vars": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42123,8 +46191,8 @@ "swaig_set_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42132,8 +46200,8 @@ "thinking_model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42141,8 +46209,8 @@ "transfer_summary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42150,8 +46218,8 @@ "transparent_barge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42159,8 +46227,8 @@ "transparent_barge_max_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42168,8 +46236,8 @@ "tts_number_format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42177,8 +46245,8 @@ "turn_detection_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42186,8 +46254,8 @@ "vad_config": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42195,8 +46263,8 @@ "video_idle_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42204,8 +46272,8 @@ "video_listening_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42213,8 +46281,8 @@ "video_talking_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42222,8 +46290,8 @@ "vision_model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42231,8 +46299,8 @@ "wait_for_user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42240,8 +46308,8 @@ "wake_prefix": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42253,8 +46321,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42262,8 +46330,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42271,8 +46339,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42280,8 +46348,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42289,8 +46357,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42298,8 +46366,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42307,8 +46375,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42320,8 +46388,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42329,8 +46397,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42338,8 +46406,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42347,8 +46415,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42356,8 +46424,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42365,8 +46433,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42374,8 +46442,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42387,8 +46455,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42396,8 +46464,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42405,8 +46473,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42414,8 +46482,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42423,8 +46491,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42432,8 +46500,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42441,8 +46509,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42454,8 +46522,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42463,8 +46531,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42472,8 +46540,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42481,8 +46549,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42490,8 +46558,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42499,8 +46567,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42508,8 +46576,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42521,8 +46589,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42530,8 +46598,8 @@ "contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42539,8 +46607,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42548,8 +46616,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42557,8 +46625,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42566,8 +46634,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42575,8 +46643,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42584,8 +46652,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42597,8 +46665,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42606,8 +46674,8 @@ "contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42615,8 +46683,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42624,8 +46692,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42633,8 +46701,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42642,8 +46710,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42651,8 +46719,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42660,8 +46728,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42673,8 +46741,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42682,8 +46750,8 @@ "contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42691,8 +46759,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42700,8 +46768,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42709,8 +46777,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42718,8 +46786,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42727,8 +46795,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42736,8 +46804,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42749,8 +46817,8 @@ "confidence": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42758,8 +46826,8 @@ "contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42767,8 +46835,8 @@ "frequency_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42776,8 +46844,8 @@ "max_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42785,8 +46853,8 @@ "presence_penalty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42794,8 +46862,8 @@ "temperature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42803,8 +46871,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42812,8 +46880,8 @@ "top_p": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42825,8 +46893,8 @@ "allOf": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42838,8 +46906,8 @@ "amazon_bedrock": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42851,8 +46919,8 @@ "SWAIG": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42860,8 +46928,8 @@ "global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42869,8 +46937,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42878,8 +46946,8 @@ "post_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42887,8 +46955,8 @@ "post_prompt_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42896,8 +46964,8 @@ "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42909,8 +46977,8 @@ "answer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42922,8 +46990,8 @@ "anyOf": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42935,8 +47003,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42944,8 +47012,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42953,8 +47021,8 @@ "items": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42962,8 +47030,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42971,8 +47039,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42984,8 +47052,8 @@ "audio": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -42997,8 +47065,8 @@ "attention_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43006,8 +47074,8 @@ "hard_stop_prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43015,8 +47083,8 @@ "hard_stop_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43024,8 +47092,8 @@ "inactivity_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43033,8 +47101,8 @@ "video_idle_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43042,8 +47110,8 @@ "video_listening_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43051,8 +47119,8 @@ "video_talking_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43064,8 +47132,8 @@ "defaults": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43073,8 +47141,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43082,8 +47150,8 @@ "includes": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43091,8 +47159,8 @@ "native_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43104,8 +47172,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43113,8 +47181,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43122,8 +47190,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43131,8 +47199,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43144,8 +47212,8 @@ "contents": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43153,8 +47221,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43162,8 +47230,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43171,8 +47239,8 @@ "last_accessed_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43180,8 +47248,8 @@ "request_count": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43189,8 +47257,8 @@ "request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43198,8 +47266,8 @@ "script_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43207,8 +47275,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43216,8 +47284,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43229,8 +47297,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43238,8 +47306,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43251,8 +47319,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43260,8 +47328,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43269,8 +47337,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43278,8 +47346,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43291,8 +47359,8 @@ "contents": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43300,8 +47368,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43309,8 +47377,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43318,8 +47386,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43331,8 +47399,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43344,8 +47412,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43353,8 +47421,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43366,8 +47434,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43375,8 +47443,8 @@ "cxml_script": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43384,8 +47452,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43393,8 +47461,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43402,8 +47470,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43411,8 +47479,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43420,8 +47488,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43433,8 +47501,8 @@ "contents": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43442,8 +47510,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43451,8 +47519,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43460,8 +47528,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43473,8 +47541,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43486,8 +47554,8 @@ "fallback_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43495,8 +47563,8 @@ "fallback_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43504,8 +47572,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43513,8 +47581,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43522,8 +47590,8 @@ "primary_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43531,8 +47599,8 @@ "primary_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43540,8 +47608,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43549,8 +47617,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43558,8 +47626,8 @@ "used_for": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43571,8 +47639,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43580,8 +47648,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43593,8 +47661,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43602,8 +47670,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43611,8 +47679,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43620,8 +47688,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43633,8 +47701,8 @@ "fallback_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43642,8 +47710,8 @@ "fallback_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43651,8 +47719,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43660,8 +47728,8 @@ "primary_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43669,8 +47737,8 @@ "primary_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43678,8 +47746,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43687,8 +47755,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43696,8 +47764,8 @@ "used_for": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43709,8 +47777,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43722,8 +47790,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43731,8 +47799,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43744,8 +47812,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43753,8 +47821,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43762,8 +47830,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43771,8 +47839,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43784,8 +47852,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43793,8 +47861,8 @@ "cxml_webhook": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43802,8 +47870,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43811,8 +47879,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43820,8 +47888,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43829,8 +47897,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43838,8 +47906,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43851,8 +47919,8 @@ "fallback_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43860,8 +47928,8 @@ "fallback_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43869,8 +47937,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43878,8 +47946,8 @@ "primary_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43887,8 +47955,8 @@ "primary_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43896,8 +47964,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43905,8 +47973,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43914,8 +47982,8 @@ "used_for": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43927,8 +47995,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43940,8 +48008,8 @@ "document_version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43949,8 +48017,8 @@ "flow_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43958,8 +48026,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43967,8 +48035,8 @@ "relayml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43976,8 +48044,8 @@ "title": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43989,8 +48057,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -43998,8 +48066,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44011,8 +48079,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44020,8 +48088,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44029,8 +48097,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44038,8 +48106,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44051,8 +48119,8 @@ "title": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44064,8 +48132,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44077,8 +48145,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44086,8 +48154,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44099,8 +48167,8 @@ "call_flow": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44108,8 +48176,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44117,8 +48185,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44126,8 +48194,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44135,8 +48203,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44144,8 +48212,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44153,8 +48221,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44166,8 +48234,8 @@ "document_version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44175,8 +48243,8 @@ "title": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44188,8 +48256,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44201,8 +48269,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44210,8 +48278,8 @@ "flow_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44219,8 +48287,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44228,8 +48296,8 @@ "relayml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44237,8 +48305,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44246,8 +48314,8 @@ "version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44259,8 +48327,8 @@ "document_version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44272,8 +48340,8 @@ "call_flow_version_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44285,8 +48353,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44294,8 +48362,8 @@ "document_version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44303,8 +48371,8 @@ "flow_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44312,8 +48380,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44321,8 +48389,8 @@ "relayml": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44330,8 +48398,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44343,8 +48411,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44352,8 +48420,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44365,8 +48433,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44374,8 +48442,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44383,8 +48451,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44392,8 +48460,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44405,8 +48473,8 @@ "change_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44418,8 +48486,8 @@ "change_step": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44431,8 +48499,8 @@ "cond": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44444,8 +48512,8 @@ "else": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44457,8 +48525,8 @@ "else": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44466,8 +48534,8 @@ "then": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44475,8 +48543,8 @@ "when": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44488,8 +48556,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44497,8 +48565,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44506,8 +48574,8 @@ "enable_room_previews": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44515,8 +48583,8 @@ "fps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44524,8 +48592,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44533,8 +48601,8 @@ "join_from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44542,8 +48610,8 @@ "join_until": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44551,8 +48619,8 @@ "layout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44560,8 +48628,8 @@ "max_members": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44569,8 +48637,8 @@ "meta": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44578,8 +48646,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44587,8 +48655,8 @@ "prioritize_handraise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44596,8 +48664,8 @@ "quality": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44605,8 +48673,8 @@ "record_on_start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44614,8 +48682,8 @@ "remove_after_seconds_elapsed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44623,8 +48691,8 @@ "remove_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44632,8 +48700,8 @@ "room_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44641,8 +48709,8 @@ "sync_audio_video": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44650,8 +48718,8 @@ "tone_on_entry_and_exit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44659,8 +48727,8 @@ "user_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44672,8 +48740,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44681,8 +48749,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44694,8 +48762,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44703,8 +48771,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44712,8 +48780,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44721,8 +48789,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44734,8 +48802,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44743,8 +48811,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44752,8 +48820,8 @@ "enable_room_previews": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44761,8 +48829,8 @@ "join_from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44770,8 +48838,8 @@ "join_until": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44779,8 +48847,8 @@ "layout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44788,8 +48856,8 @@ "max_members": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44797,8 +48865,8 @@ "meta": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44806,8 +48874,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44815,8 +48883,8 @@ "quality": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44824,8 +48892,8 @@ "record_on_start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44833,8 +48901,8 @@ "remove_after_seconds_elapsed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44842,8 +48910,8 @@ "remove_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44851,8 +48919,8 @@ "room_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44860,8 +48928,8 @@ "sync_audio_video": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44869,8 +48937,8 @@ "tone_on_entry_and_exit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44878,8 +48946,8 @@ "user_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44891,8 +48959,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44904,8 +48972,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44913,8 +48981,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44926,8 +48994,8 @@ "conference_room": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44935,8 +49003,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44944,8 +49012,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44953,8 +49021,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44962,8 +49030,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44971,8 +49039,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44980,8 +49048,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -44993,8 +49061,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45002,8 +49070,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45011,8 +49079,8 @@ "enable_room_previews": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45020,8 +49088,8 @@ "join_from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45029,8 +49097,8 @@ "join_until": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45038,8 +49106,8 @@ "layout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45047,8 +49115,8 @@ "max_members": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45056,8 +49124,8 @@ "meta": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45065,8 +49133,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45074,8 +49142,8 @@ "quality": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45083,8 +49151,8 @@ "record_on_start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45092,8 +49160,8 @@ "remove_after_seconds_elapsed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45101,8 +49169,8 @@ "remove_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45110,8 +49178,8 @@ "room_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45119,8 +49187,8 @@ "sync_audio_video": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45128,8 +49196,8 @@ "tone_on_entry_and_exit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45137,8 +49205,8 @@ "user_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45150,8 +49218,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45163,8 +49231,8 @@ "connect": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45176,8 +49244,8 @@ "answer_on_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45185,8 +49253,8 @@ "call_state_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45194,8 +49262,8 @@ "call_state_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45203,8 +49271,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45212,8 +49280,8 @@ "confirm": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45221,8 +49289,8 @@ "confirm_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45230,8 +49298,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45239,8 +49307,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45248,8 +49316,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45257,8 +49325,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45266,8 +49334,8 @@ "parallel": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45275,8 +49343,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45284,8 +49352,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45293,8 +49361,8 @@ "ringback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45302,8 +49370,8 @@ "session_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45311,8 +49379,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45320,8 +49388,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45329,8 +49397,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45338,8 +49406,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45347,8 +49415,8 @@ "webrtc_media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45360,8 +49428,8 @@ "answer_on_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45369,8 +49437,8 @@ "call_state_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45378,8 +49446,8 @@ "call_state_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45387,8 +49455,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45396,8 +49464,8 @@ "confirm": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45405,8 +49473,8 @@ "confirm_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45414,8 +49482,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45423,8 +49491,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45432,8 +49500,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45441,8 +49509,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45450,8 +49518,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45459,8 +49527,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45468,8 +49536,8 @@ "ringback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45477,8 +49545,8 @@ "serial": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45486,8 +49554,8 @@ "session_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45495,8 +49563,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45504,8 +49572,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45513,8 +49581,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45522,8 +49590,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45531,8 +49599,8 @@ "webrtc_media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45544,8 +49612,8 @@ "answer_on_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45553,8 +49621,8 @@ "call_state_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45562,8 +49630,8 @@ "call_state_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45571,8 +49639,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45580,8 +49648,8 @@ "confirm": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45589,8 +49657,8 @@ "confirm_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45598,8 +49666,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45607,8 +49675,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45616,8 +49684,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45625,8 +49693,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45634,8 +49702,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45643,8 +49711,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45652,8 +49720,8 @@ "ringback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45661,8 +49729,8 @@ "serial_parallel": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45670,8 +49738,8 @@ "session_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45679,8 +49747,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45688,8 +49756,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45697,8 +49765,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45706,8 +49774,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45715,8 +49783,8 @@ "webrtc_media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45728,8 +49796,8 @@ "answer_on_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45737,8 +49805,8 @@ "authorization_bearer_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45746,8 +49814,8 @@ "call_state_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45755,8 +49823,8 @@ "call_state_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45764,8 +49832,8 @@ "codec": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45773,8 +49841,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45782,8 +49850,8 @@ "confirm": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45791,8 +49859,8 @@ "confirm_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45800,8 +49868,8 @@ "custom_parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45809,8 +49877,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45818,8 +49886,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45827,8 +49895,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45836,8 +49904,8 @@ "max_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45845,8 +49913,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45854,8 +49922,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45863,8 +49931,8 @@ "realtime": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45872,8 +49940,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45881,8 +49949,8 @@ "ringback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45890,8 +49958,8 @@ "session_timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45899,8 +49967,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45908,8 +49976,8 @@ "status_url_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45917,8 +49985,8 @@ "timeout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45926,8 +49994,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45935,8 +50003,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45944,8 +50012,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45953,8 +50021,8 @@ "webrtc_media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45966,8 +50034,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45975,8 +50043,8 @@ "value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45988,8 +50056,8 @@ "case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -45997,8 +50065,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46006,8 +50074,8 @@ "variable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46019,8 +50087,8 @@ "const": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46032,8 +50100,8 @@ "end": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46041,8 +50109,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46050,8 +50118,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46059,8 +50127,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46068,8 +50136,8 @@ "skip_user_turn": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46077,8 +50145,8 @@ "step_criteria": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46086,8 +50154,8 @@ "valid_contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46095,8 +50163,8 @@ "valid_steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46108,8 +50176,8 @@ "context_switch": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46121,8 +50189,8 @@ "end": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46130,8 +50198,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46139,8 +50207,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46148,8 +50216,8 @@ "skip_user_turn": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46157,8 +50225,8 @@ "step_criteria": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46166,8 +50234,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46175,8 +50243,8 @@ "valid_contexts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46184,8 +50252,8 @@ "valid_steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46197,8 +50265,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46210,8 +50278,8 @@ "enter_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46219,8 +50287,8 @@ "exit_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46228,8 +50296,8 @@ "isolated": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46237,8 +50305,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46246,8 +50314,8 @@ "steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46259,8 +50327,8 @@ "enter_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46268,8 +50336,8 @@ "exit_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46277,8 +50345,8 @@ "isolated": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46286,8 +50354,8 @@ "pom": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46295,8 +50363,8 @@ "steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46308,8 +50376,8 @@ "enter_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46317,8 +50385,8 @@ "exit_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46326,8 +50394,8 @@ "isolated": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46335,8 +50403,8 @@ "steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46344,8 +50412,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46357,8 +50425,8 @@ "enter_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46366,8 +50434,8 @@ "exit_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46375,8 +50443,8 @@ "isolated": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46384,8 +50452,8 @@ "steps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46393,8 +50461,8 @@ "text": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46406,8 +50474,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46419,8 +50487,8 @@ "content": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46428,8 +50496,8 @@ "lang": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46437,8 +50505,8 @@ "role": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46450,8 +50518,8 @@ "friendly_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46459,8 +50527,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46468,8 +50536,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46477,8 +50545,8 @@ "sms_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46486,8 +50554,8 @@ "sms_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46495,8 +50563,8 @@ "sms_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46504,8 +50572,8 @@ "sms_status_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46513,8 +50581,8 @@ "sms_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46522,8 +50590,8 @@ "sms_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46531,8 +50599,8 @@ "status_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46540,8 +50608,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46549,8 +50617,8 @@ "voice_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46558,8 +50626,8 @@ "voice_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46567,8 +50635,8 @@ "voice_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46576,8 +50644,8 @@ "voice_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46589,8 +50657,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46598,8 +50666,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46611,8 +50679,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46620,8 +50688,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46629,8 +50697,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46638,8 +50706,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46651,8 +50719,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46660,8 +50728,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46673,8 +50741,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46682,8 +50750,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46691,8 +50759,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46700,8 +50768,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46713,8 +50781,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46722,8 +50790,8 @@ "cxml_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46731,8 +50799,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46740,8 +50808,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46749,8 +50817,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46758,8 +50826,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46767,8 +50835,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46780,8 +50848,8 @@ "account_sid": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46789,8 +50857,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46798,8 +50866,8 @@ "sms_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46807,8 +50875,8 @@ "sms_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46816,8 +50884,8 @@ "sms_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46825,8 +50893,8 @@ "sms_status_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46834,8 +50902,8 @@ "sms_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46843,8 +50911,8 @@ "sms_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46852,8 +50920,8 @@ "status_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46861,8 +50929,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46870,8 +50938,8 @@ "voice_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46879,8 +50947,8 @@ "voice_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46888,8 +50956,8 @@ "voice_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46897,8 +50965,8 @@ "voice_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46910,8 +50978,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46923,8 +50991,8 @@ "expressions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46932,8 +51000,8 @@ "output": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46941,8 +51009,8 @@ "webhooks": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46954,8 +51022,8 @@ "denoise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46967,8 +51035,8 @@ "detect_machine": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46980,8 +51048,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46989,8 +51057,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -46998,8 +51066,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47007,8 +51075,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47020,8 +51088,8 @@ "dialogflow_reference_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47029,8 +51097,8 @@ "dialogflow_reference_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47038,8 +51106,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47047,8 +51115,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47056,8 +51124,8 @@ "say": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47065,8 +51133,8 @@ "say_enabled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47074,8 +51142,8 @@ "voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47087,8 +51155,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47096,8 +51164,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47109,8 +51177,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47118,8 +51186,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47127,8 +51195,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47136,8 +51204,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47149,8 +51217,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47158,8 +51226,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47171,8 +51239,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47180,8 +51248,8 @@ "dialogflow_agent": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47189,8 +51257,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47198,8 +51266,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47207,8 +51275,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47216,8 +51284,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47225,8 +51293,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47238,8 +51306,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47247,8 +51315,8 @@ "say": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47256,8 +51324,8 @@ "say_enabled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47265,8 +51333,8 @@ "voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47278,8 +51346,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47291,8 +51359,8 @@ "domain_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47304,8 +51372,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47317,8 +51385,8 @@ "channels": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47326,8 +51394,8 @@ "cover_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47335,8 +51403,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47344,8 +51412,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47353,8 +51421,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47362,8 +51430,8 @@ "locked": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47371,8 +51439,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47380,8 +51448,8 @@ "preview_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47389,8 +51457,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47402,8 +51470,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47415,8 +51483,8 @@ "token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47428,8 +51496,8 @@ "token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47441,8 +51509,8 @@ "enter_queue": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47454,8 +51522,8 @@ "queue_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47463,8 +51531,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47472,8 +51540,8 @@ "transfer_after_bridge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47481,8 +51549,8 @@ "wait_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47490,8 +51558,8 @@ "wait_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47503,8 +51571,8 @@ "execute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47516,8 +51584,8 @@ "case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47525,8 +51593,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47534,8 +51602,8 @@ "variable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47547,8 +51615,8 @@ "output": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47556,8 +51624,8 @@ "pattern": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47565,8 +51633,8 @@ "string": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47578,8 +51646,8 @@ "channels": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47587,8 +51655,8 @@ "cover_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47596,8 +51664,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47605,8 +51673,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47614,8 +51682,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47623,8 +51691,8 @@ "locked": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47632,8 +51700,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47641,8 +51709,8 @@ "preview_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47650,8 +51718,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47663,8 +51731,8 @@ "channels": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47672,8 +51740,8 @@ "cover_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47681,8 +51749,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47690,8 +51758,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47699,8 +51767,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47708,8 +51776,8 @@ "locked": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47717,8 +51785,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47726,8 +51794,8 @@ "preview_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47735,8 +51803,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47748,8 +51816,8 @@ "channels": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47757,8 +51825,8 @@ "cover_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47766,8 +51834,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47775,8 +51843,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47784,8 +51852,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47793,8 +51861,8 @@ "locked": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47802,8 +51870,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47811,8 +51879,8 @@ "preview_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47820,8 +51888,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47833,8 +51901,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47842,8 +51910,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47851,8 +51919,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47860,8 +51928,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47873,8 +51941,8 @@ "channels": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47882,8 +51950,8 @@ "cover_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47891,8 +51959,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47900,8 +51968,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47909,8 +51977,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47918,8 +51986,8 @@ "locked": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47927,8 +51995,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47936,8 +52004,8 @@ "preview_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47945,8 +52013,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47958,8 +52026,8 @@ "channels": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47967,8 +52035,8 @@ "cover_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47976,8 +52044,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47985,8 +52053,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -47994,8 +52062,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48003,8 +52071,8 @@ "locked": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48012,8 +52080,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48021,8 +52089,8 @@ "preview_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48030,8 +52098,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48043,8 +52111,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48052,8 +52120,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48065,8 +52133,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48074,8 +52142,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48083,8 +52151,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48092,8 +52160,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48105,8 +52173,8 @@ "caller_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48114,8 +52182,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48123,8 +52191,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48132,8 +52200,8 @@ "send_as": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48145,8 +52213,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48154,8 +52222,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48167,8 +52235,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48176,8 +52244,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48185,8 +52253,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48194,8 +52262,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48207,8 +52275,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48216,8 +52284,8 @@ "token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48229,8 +52297,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48242,8 +52310,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48251,8 +52319,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48264,8 +52332,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48273,8 +52341,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48282,8 +52350,8 @@ "freeswitch_connector": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48291,8 +52359,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48300,8 +52368,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48309,8 +52377,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48318,8 +52386,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48331,8 +52399,8 @@ "caller_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48340,8 +52408,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48349,8 +52417,8 @@ "send_as": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48362,8 +52430,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48375,8 +52443,8 @@ "properties": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48384,8 +52452,8 @@ "required": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48393,8 +52461,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48406,8 +52474,8 @@ "goto": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48419,8 +52487,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48432,8 +52500,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48441,8 +52509,8 @@ "argument": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48450,8 +52518,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48459,8 +52527,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48468,8 +52536,8 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48477,8 +52545,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48486,8 +52554,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48495,8 +52563,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48504,8 +52572,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48513,8 +52581,8 @@ "purpose": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48522,8 +52590,8 @@ "skip_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48531,8 +52599,8 @@ "wait_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48540,8 +52608,8 @@ "wait_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48549,8 +52617,8 @@ "wait_for_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48558,8 +52626,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48571,8 +52639,8 @@ "hangup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48584,8 +52652,8 @@ "hangup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48597,8 +52665,8 @@ "hint": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48606,8 +52674,8 @@ "ignore_case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48615,8 +52683,8 @@ "pattern": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48624,8 +52692,8 @@ "replace": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48637,8 +52705,8 @@ "hold": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48650,8 +52718,8 @@ "inject": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48663,8 +52731,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48672,8 +52740,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48681,8 +52749,8 @@ "enum": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48690,8 +52758,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48699,8 +52767,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48712,8 +52780,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48725,8 +52793,8 @@ "join_conference": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48738,8 +52806,8 @@ "beep": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48747,8 +52815,8 @@ "coach": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48756,8 +52824,8 @@ "end_on_exit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48765,8 +52833,8 @@ "max_participants": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48774,8 +52842,8 @@ "muted": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48783,8 +52851,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48792,8 +52860,8 @@ "record": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48801,8 +52869,8 @@ "recording_status_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48810,8 +52878,8 @@ "recording_status_callback_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48819,8 +52887,8 @@ "recording_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48828,8 +52896,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48837,8 +52905,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48846,8 +52914,8 @@ "start_on_enter": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48855,8 +52923,8 @@ "status_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48864,8 +52932,8 @@ "status_callback_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48873,8 +52941,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48882,8 +52950,8 @@ "trim": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48891,8 +52959,8 @@ "wait_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48904,8 +52972,8 @@ "join_room": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48917,8 +52985,8 @@ "label": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48930,8 +52998,8 @@ "similarity": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48939,8 +53007,8 @@ "stability": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48952,8 +53020,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48961,8 +53029,8 @@ "emotion": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48970,8 +53038,8 @@ "engine": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48979,8 +53047,8 @@ "function_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48988,8 +53056,8 @@ "model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -48997,8 +53065,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49006,8 +53074,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49015,8 +53083,8 @@ "speech_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49024,8 +53092,8 @@ "speed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49033,8 +53101,8 @@ "voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49046,8 +53114,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49055,8 +53123,8 @@ "emotion": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49064,8 +53132,8 @@ "engine": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49073,8 +53141,8 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49082,8 +53150,8 @@ "model": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49091,8 +53159,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49100,8 +53168,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49109,8 +53177,8 @@ "speed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49118,8 +53186,8 @@ "voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49131,8 +53199,8 @@ "live_transcribe": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49144,8 +53212,8 @@ "live_translate": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49157,8 +53225,8 @@ "messaging": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49170,8 +53238,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49179,8 +53247,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49192,8 +53260,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49201,8 +53269,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49210,8 +53278,8 @@ "enum": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49219,8 +53287,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49228,8 +53296,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49241,8 +53309,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49250,8 +53318,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49259,8 +53327,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49268,8 +53336,8 @@ "properties": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49277,8 +53345,8 @@ "required": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49286,8 +53354,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49299,8 +53367,8 @@ "oneOf": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49312,8 +53380,8 @@ "action": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49321,8 +53389,8 @@ "response": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49334,8 +53402,8 @@ "pay": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49347,8 +53415,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49356,8 +53424,8 @@ "value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49369,8 +53437,8 @@ "phrase": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49378,8 +53446,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49391,8 +53459,8 @@ "phrase": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49400,8 +53468,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49413,8 +53481,8 @@ "actions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49422,8 +53490,8 @@ "attempts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49431,8 +53499,8 @@ "card_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49440,8 +53508,8 @@ "error_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49449,8 +53517,8 @@ "for": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49462,8 +53530,8 @@ "handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49471,8 +53539,8 @@ "phone_route_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49484,8 +53552,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49497,8 +53565,8 @@ "channels": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49506,8 +53574,8 @@ "cover_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49515,8 +53583,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49524,8 +53592,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49533,8 +53601,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49542,8 +53610,8 @@ "locked": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49551,8 +53619,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49560,8 +53628,8 @@ "preview_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49569,8 +53637,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49582,8 +53650,8 @@ "play": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49595,8 +53663,8 @@ "auto_answer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49604,8 +53672,8 @@ "say_gender": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49613,8 +53681,8 @@ "say_language": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49622,8 +53690,8 @@ "say_voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49631,8 +53699,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49640,8 +53708,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49649,8 +53717,8 @@ "volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49662,8 +53730,8 @@ "auto_answer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49671,8 +53739,8 @@ "say_gender": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49680,8 +53748,8 @@ "say_language": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49689,8 +53757,8 @@ "say_voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49698,8 +53766,8 @@ "status_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49707,8 +53775,8 @@ "urls": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49716,8 +53784,8 @@ "volume": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49729,8 +53797,8 @@ "playback_bg": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49742,8 +53810,8 @@ "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49751,8 +53819,8 @@ "bullets": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49760,8 +53828,8 @@ "numbered": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49769,8 +53837,8 @@ "numberedBullets": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49778,8 +53846,8 @@ "subsections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49787,8 +53855,8 @@ "title": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49800,8 +53868,8 @@ "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49809,8 +53877,8 @@ "bullets": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49818,8 +53886,8 @@ "numbered": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49827,8 +53895,8 @@ "numberedBullets": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49836,8 +53904,8 @@ "subsections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49845,8 +53913,8 @@ "title": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49858,8 +53926,8 @@ "prompt": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49871,8 +53939,8 @@ "ignore_case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49880,8 +53948,8 @@ "replace": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49889,8 +53957,8 @@ "with": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49902,8 +53970,8 @@ "receive_fax": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49915,8 +53983,8 @@ "record": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49928,8 +53996,8 @@ "record_call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49941,8 +54009,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49954,8 +54022,8 @@ "call_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49963,8 +54031,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49972,8 +54040,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49981,8 +54049,8 @@ "topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -49994,8 +54062,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50003,8 +54071,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50016,8 +54084,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50025,8 +54093,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50034,8 +54102,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50043,8 +54111,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50056,8 +54124,8 @@ "call_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50065,8 +54133,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50074,8 +54142,8 @@ "topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50087,8 +54155,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50100,8 +54168,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50109,8 +54177,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50122,8 +54190,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50131,8 +54199,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50140,8 +54208,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50149,8 +54217,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50158,8 +54226,8 @@ "relay_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50167,8 +54235,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50176,8 +54244,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50189,8 +54257,8 @@ "call_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50198,8 +54266,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50207,8 +54275,8 @@ "topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50220,8 +54288,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50233,8 +54301,8 @@ "request": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50246,8 +54314,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50255,8 +54323,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50268,8 +54336,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50277,8 +54345,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50286,8 +54354,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50295,8 +54363,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50308,8 +54376,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50317,8 +54385,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50330,8 +54398,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50339,8 +54407,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50348,8 +54416,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50357,8 +54425,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50370,8 +54438,8 @@ "ai_agent": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50379,8 +54447,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50388,8 +54456,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50397,8 +54465,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50406,8 +54474,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50415,8 +54483,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50424,8 +54492,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50437,8 +54505,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50446,8 +54514,8 @@ "cxml_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50455,8 +54523,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50464,8 +54532,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50473,8 +54541,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50482,8 +54550,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50491,8 +54559,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50504,8 +54572,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50513,8 +54581,8 @@ "cxml_script": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50522,8 +54590,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50531,8 +54599,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50540,8 +54608,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50549,8 +54617,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50558,8 +54626,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50571,8 +54639,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50580,8 +54648,8 @@ "cxml_webhook": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50589,8 +54657,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50598,8 +54666,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50607,8 +54675,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50616,8 +54684,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50625,8 +54693,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50638,8 +54706,8 @@ "call_flow": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50647,8 +54715,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50656,8 +54724,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50665,8 +54733,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50674,8 +54742,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50683,8 +54751,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50692,8 +54760,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50705,8 +54773,8 @@ "conference_room": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50714,8 +54782,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50723,8 +54791,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50732,8 +54800,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50741,8 +54809,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50750,8 +54818,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50759,8 +54827,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50772,8 +54840,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50781,8 +54849,8 @@ "dialogflow_agent": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50790,8 +54858,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50799,8 +54867,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50808,8 +54876,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50817,8 +54885,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50826,8 +54894,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50839,8 +54907,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50848,8 +54916,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50857,8 +54925,8 @@ "freeswitch_connector": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50866,8 +54934,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50875,8 +54943,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50884,8 +54952,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50893,8 +54961,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50906,8 +54974,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50915,8 +54983,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50924,8 +54992,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50933,8 +55001,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50942,8 +55010,8 @@ "relay_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50951,8 +55019,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50960,8 +55028,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50973,8 +55041,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50982,8 +55050,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -50991,8 +55059,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51000,8 +55068,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51009,8 +55077,8 @@ "swml_script": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51018,8 +55086,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51027,8 +55095,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51040,8 +55108,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51049,8 +55117,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51058,8 +55126,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51067,8 +55135,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51076,8 +55144,8 @@ "swml_webhook": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51085,8 +55153,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51094,8 +55162,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51107,8 +55175,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51116,8 +55184,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51125,8 +55193,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51134,8 +55202,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51143,8 +55211,8 @@ "sip_endpoint": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51152,8 +55220,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51161,8 +55229,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51174,8 +55242,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51183,8 +55251,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51192,8 +55260,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51201,8 +55269,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51210,8 +55278,8 @@ "sip_gateway": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51219,8 +55287,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51228,8 +55296,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51241,8 +55309,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51250,8 +55318,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51259,8 +55327,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51268,8 +55336,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51277,8 +55345,8 @@ "subscriber": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51286,8 +55354,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51295,8 +55363,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51308,8 +55376,8 @@ "sip_endpoint_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51321,8 +55389,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51334,8 +55402,8 @@ "channels": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51343,8 +55411,8 @@ "cover_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51352,8 +55420,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51361,8 +55429,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51370,8 +55438,8 @@ "preview_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51379,8 +55447,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51392,8 +55460,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51405,8 +55473,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51418,8 +55486,8 @@ "return": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51431,8 +55499,8 @@ "sip_refer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51444,8 +55512,8 @@ "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51453,8 +55521,8 @@ "from_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51462,8 +55530,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51471,8 +55539,8 @@ "tags": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51480,8 +55548,8 @@ "to_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51493,8 +55561,8 @@ "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51502,8 +55570,8 @@ "from_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51511,8 +55579,8 @@ "media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51520,8 +55588,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51529,8 +55597,8 @@ "tags": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51538,8 +55606,8 @@ "to_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51551,8 +55619,8 @@ "defaults": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51560,8 +55628,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51569,8 +55637,8 @@ "includes": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51578,8 +55646,8 @@ "internal_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51587,8 +55655,8 @@ "native_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51600,8 +55668,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51613,8 +55681,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51622,8 +55690,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51631,8 +55699,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51644,8 +55712,8 @@ "adjust_response_latency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51653,8 +55721,8 @@ "change_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51662,8 +55730,8 @@ "check_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51671,8 +55739,8 @@ "get_ideal_strategy": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51680,8 +55748,8 @@ "get_visual_input": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51689,8 +55757,8 @@ "hangup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51698,8 +55766,8 @@ "next_step": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51707,8 +55775,8 @@ "wait_for_user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51716,8 +55784,8 @@ "wait_seconds": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51729,8 +55797,8 @@ "adjust_response_latency": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51738,8 +55806,8 @@ "change_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51747,8 +55815,8 @@ "check_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51756,8 +55824,8 @@ "get_ideal_strategy": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51765,8 +55833,8 @@ "get_visual_input": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51774,8 +55842,8 @@ "hangup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51783,8 +55851,8 @@ "next_step": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51792,8 +55860,8 @@ "wait_for_user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51801,8 +55869,8 @@ "wait_seconds": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51814,8 +55882,8 @@ "defaults": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51823,8 +55891,8 @@ "functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51832,8 +55900,8 @@ "includes": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51841,8 +55909,8 @@ "internal_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51850,8 +55918,8 @@ "native_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51863,8 +55931,8 @@ "SWML": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51876,8 +55944,8 @@ "sections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51885,8 +55953,8 @@ "version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51898,8 +55966,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51907,8 +55975,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51920,8 +55988,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51929,8 +55997,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51938,8 +56006,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51947,8 +56015,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51960,8 +56028,8 @@ "fallback_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51969,8 +56037,8 @@ "fallback_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51978,8 +56046,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51987,8 +56055,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -51996,8 +56064,8 @@ "primary_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52005,8 +56073,8 @@ "primary_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52014,8 +56082,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52023,8 +56091,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52032,8 +56100,8 @@ "used_for": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52045,8 +56113,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52054,8 +56122,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52067,8 +56135,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52076,8 +56144,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52085,8 +56153,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52094,8 +56162,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52107,8 +56175,8 @@ "fallback_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52116,8 +56184,8 @@ "fallback_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52125,8 +56193,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52134,8 +56202,8 @@ "primary_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52143,8 +56211,8 @@ "primary_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52152,8 +56220,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52161,8 +56229,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52170,8 +56238,8 @@ "used_for": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52183,8 +56251,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52192,8 +56260,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52205,8 +56273,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52214,8 +56282,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52223,8 +56291,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52232,8 +56300,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52245,8 +56313,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52254,8 +56322,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52263,8 +56331,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52272,8 +56340,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52281,8 +56349,8 @@ "swml_webhook": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52290,8 +56358,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52299,8 +56367,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52312,8 +56380,8 @@ "fallback_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52321,8 +56389,8 @@ "fallback_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52330,8 +56398,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52339,8 +56407,8 @@ "primary_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52348,8 +56416,8 @@ "primary_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52357,8 +56425,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52366,8 +56434,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52375,8 +56443,8 @@ "used_for": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52388,8 +56456,8 @@ "say": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52401,8 +56469,8 @@ "main": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52414,8 +56482,8 @@ "send_digits": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52427,8 +56495,8 @@ "send_fax": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52440,8 +56508,8 @@ "send_sms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52453,8 +56521,8 @@ "set": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52466,8 +56534,8 @@ "set_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52479,8 +56547,8 @@ "set_meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52492,8 +56560,8 @@ "call_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52501,8 +56569,8 @@ "caller_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52510,8 +56578,8 @@ "calling_handler_resource_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52519,8 +56587,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52528,8 +56596,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52537,8 +56605,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52546,8 +56614,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52555,8 +56623,8 @@ "send_as": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52564,8 +56632,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52577,8 +56645,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52586,8 +56654,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52599,8 +56667,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52608,8 +56676,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52617,8 +56685,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52626,8 +56694,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52639,8 +56707,8 @@ "call_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52648,8 +56716,8 @@ "caller_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52657,8 +56725,8 @@ "calling_handler_resource_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52666,8 +56734,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52675,8 +56743,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52684,8 +56752,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52693,8 +56761,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52702,8 +56770,8 @@ "send_as": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52711,8 +56779,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52724,8 +56792,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52737,8 +56805,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52746,8 +56814,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52759,8 +56827,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52768,8 +56836,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52777,8 +56845,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52786,8 +56854,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52799,8 +56867,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52808,8 +56876,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52817,8 +56885,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52826,8 +56894,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52835,8 +56903,8 @@ "sip_endpoint": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52844,8 +56912,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52853,8 +56921,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52866,8 +56934,8 @@ "call_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52875,8 +56943,8 @@ "caller_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52884,8 +56952,8 @@ "calling_handler_resource_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52893,8 +56961,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52902,8 +56970,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52911,8 +56979,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52920,8 +56988,8 @@ "send_as": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52929,8 +56997,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52942,8 +57010,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52955,8 +57023,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52964,8 +57032,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52973,8 +57041,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52982,8 +57050,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -52991,8 +57059,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53000,8 +57068,8 @@ "uri": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53013,8 +57081,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53022,8 +57090,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53035,8 +57103,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53044,8 +57112,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53053,8 +57121,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53062,8 +57130,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53075,8 +57143,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53088,8 +57156,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53097,8 +57165,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53110,8 +57178,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53119,8 +57187,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53128,8 +57196,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53137,8 +57205,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53150,8 +57218,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53159,8 +57227,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53168,8 +57236,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53177,8 +57245,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53186,8 +57254,8 @@ "uri": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53199,8 +57267,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53208,8 +57276,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53217,8 +57285,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53226,8 +57294,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53235,8 +57303,8 @@ "uri": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53248,8 +57316,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53257,8 +57325,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53266,8 +57334,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53275,8 +57343,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53284,8 +57352,8 @@ "sip_gateway": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53293,8 +57361,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53302,8 +57370,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53315,8 +57383,8 @@ "sleep": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53328,8 +57396,8 @@ "start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53341,8 +57409,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53350,8 +57418,8 @@ "argument": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53359,8 +57427,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53368,8 +57436,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53377,8 +57445,8 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53386,8 +57454,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53395,8 +57463,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53404,8 +57472,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53413,8 +57481,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53422,8 +57490,8 @@ "purpose": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53431,8 +57499,8 @@ "skip_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53440,8 +57508,8 @@ "wait_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53449,8 +57517,8 @@ "wait_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53458,8 +57526,8 @@ "wait_for_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53467,8 +57535,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53480,8 +57548,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53493,8 +57561,8 @@ "stop_denoise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53506,8 +57574,8 @@ "stop_playback_bg": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53519,8 +57587,8 @@ "stop_record_call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53532,8 +57600,8 @@ "stop_tap": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53545,8 +57613,8 @@ "default": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53554,8 +57622,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53563,8 +57631,8 @@ "enum": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53572,8 +57640,8 @@ "format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53581,8 +57649,8 @@ "nullable": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53590,8 +57658,8 @@ "pattern": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53599,8 +57667,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53612,8 +57680,8 @@ "company_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53621,8 +57689,8 @@ "country": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53630,8 +57698,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53639,8 +57707,8 @@ "email": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53648,8 +57716,8 @@ "first_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53657,8 +57725,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53666,8 +57734,8 @@ "job_title": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53675,8 +57743,8 @@ "last_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53684,8 +57752,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53693,8 +57761,8 @@ "timezone": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53706,8 +57774,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53715,8 +57783,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53724,8 +57792,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53733,8 +57801,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53746,8 +57814,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53755,8 +57823,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53768,8 +57836,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53781,8 +57849,8 @@ "allowed_addresses": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53790,8 +57858,8 @@ "expire_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53803,8 +57871,8 @@ "refresh_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53812,8 +57880,8 @@ "token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53825,8 +57893,8 @@ "address_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53834,8 +57902,8 @@ "expires_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53847,8 +57915,8 @@ "token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53860,8 +57928,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53869,8 +57937,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53882,8 +57950,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53891,8 +57959,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53900,8 +57968,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53909,8 +57977,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53922,8 +57990,8 @@ "refresh_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53935,8 +58003,8 @@ "refresh_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53944,8 +58012,8 @@ "token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53957,8 +58025,8 @@ "company_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53966,8 +58034,8 @@ "country": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53975,8 +58043,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53984,8 +58052,8 @@ "email": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -53993,8 +58061,8 @@ "first_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54002,8 +58070,8 @@ "job_title": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54011,8 +58079,8 @@ "last_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54020,8 +58088,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54029,8 +58097,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54038,8 +58106,8 @@ "timezone": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54051,8 +58119,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54060,8 +58128,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54069,8 +58137,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54078,8 +58146,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54087,8 +58155,8 @@ "subscriber": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54096,8 +58164,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54105,8 +58173,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54118,8 +58186,8 @@ "caller_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54127,8 +58195,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54136,8 +58204,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54145,8 +58213,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54154,8 +58222,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54163,8 +58231,8 @@ "send_as": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54172,8 +58240,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54185,8 +58253,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54194,8 +58262,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54207,8 +58275,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54216,8 +58284,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54225,8 +58293,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54234,8 +58302,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54247,8 +58315,8 @@ "caller_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54256,8 +58324,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54265,8 +58333,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54274,8 +58342,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54283,8 +58351,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54292,8 +58360,8 @@ "send_as": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54301,8 +58369,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54314,8 +58382,8 @@ "caller_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54323,8 +58391,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54332,8 +58400,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54341,8 +58409,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54350,8 +58418,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54359,8 +58427,8 @@ "send_as": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54368,8 +58436,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54381,8 +58449,8 @@ "application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54390,8 +58458,8 @@ "company_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54399,8 +58467,8 @@ "country": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54408,8 +58476,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54417,8 +58485,8 @@ "expire_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54426,8 +58494,8 @@ "first_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54435,8 +58503,8 @@ "job_title": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54444,8 +58512,8 @@ "last_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54453,8 +58521,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54462,8 +58530,8 @@ "reference": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54471,8 +58539,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54480,8 +58548,8 @@ "time_zone": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54493,8 +58561,8 @@ "refresh_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54502,8 +58570,8 @@ "subscriber_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54511,8 +58579,8 @@ "token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54524,8 +58592,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54537,8 +58605,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54550,8 +58618,8 @@ "summarize": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54563,8 +58631,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54572,8 +58640,8 @@ "argument": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54581,8 +58649,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54590,8 +58658,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54599,8 +58667,8 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54608,8 +58676,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54617,8 +58685,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54626,8 +58694,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54635,8 +58703,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54644,8 +58712,8 @@ "purpose": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54653,8 +58721,8 @@ "skip_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54662,8 +58730,8 @@ "wait_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54671,8 +58739,8 @@ "wait_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54680,8 +58748,8 @@ "wait_for_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54689,8 +58757,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54702,8 +58770,8 @@ "switch": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54715,8 +58783,8 @@ "contents": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54724,8 +58792,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54733,8 +58801,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54742,8 +58810,8 @@ "request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54751,8 +58819,8 @@ "status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54760,8 +58828,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54773,8 +58841,8 @@ "contents": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54782,8 +58850,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54791,8 +58859,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54804,8 +58872,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54817,8 +58885,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54826,8 +58894,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54839,8 +58907,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54848,8 +58916,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54857,8 +58925,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54866,8 +58934,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54879,8 +58947,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54888,8 +58956,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54897,8 +58965,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54906,8 +58974,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54915,8 +58983,8 @@ "swml_script": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54924,8 +58992,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54933,8 +59001,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54946,8 +59014,8 @@ "contents": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54955,8 +59023,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54964,8 +59032,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54977,8 +59045,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -54990,8 +59058,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55003,8 +59071,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55016,8 +59084,8 @@ "tap": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55029,8 +59097,8 @@ "toggle_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55042,8 +59110,8 @@ "start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55055,8 +59123,8 @@ "summarize": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55068,8 +59136,8 @@ "transfer": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55081,8 +59149,8 @@ "attribute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55090,8 +59158,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55099,8 +59167,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55108,8 +59176,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55117,8 +59185,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55130,8 +59198,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55143,8 +59211,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55156,8 +59224,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55169,8 +59237,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55182,8 +59250,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55195,8 +59263,8 @@ "unset": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55208,8 +59276,8 @@ "unset_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55221,8 +59289,8 @@ "unset_meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55234,8 +59302,8 @@ "user_event": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55247,8 +59315,8 @@ "user_input": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55260,8 +59328,8 @@ "active": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55269,8 +59337,8 @@ "argument": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55278,8 +59346,8 @@ "data_map": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55287,8 +59355,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55296,8 +59364,8 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55305,8 +59373,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55314,8 +59382,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55323,8 +59391,8 @@ "meta_data_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55332,8 +59400,8 @@ "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55341,8 +59409,8 @@ "purpose": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55350,8 +59418,8 @@ "skip_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55359,8 +59427,8 @@ "wait_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55368,8 +59436,8 @@ "wait_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55377,8 +59445,8 @@ "wait_for_fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55386,8 +59454,8 @@ "web_hook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55399,8 +59467,8 @@ "video": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55412,8 +59480,8 @@ "error_keys": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55421,8 +59489,8 @@ "expressions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55430,8 +59498,8 @@ "foreach": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55439,8 +59507,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55448,8 +59516,8 @@ "input_args_as_params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55457,8 +59525,8 @@ "method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55466,8 +59534,8 @@ "output": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55475,8 +59543,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55484,8 +59552,8 @@ "require_args": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55493,8 +59561,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55506,17 +59574,24 @@ "signalwire.rest.namespaces.fax_resources_generated": { "classes": { "FaxLogs": { + "crud_base": { + "base": "ReadResource", + "bind": [ + "class:LogListResponse", + "class:LogResponse" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -55524,8 +59599,15 @@ "paginate": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "class:signalwire.rest._pagination.PaginatedIterator" @@ -55541,8 +59623,8 @@ "charge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55550,8 +59632,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55563,8 +59645,8 @@ "charge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55572,8 +59654,8 @@ "charge_details": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55581,8 +59663,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55590,8 +59672,8 @@ "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55599,8 +59681,8 @@ "error_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55608,8 +59690,8 @@ "error_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55617,8 +59699,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55626,8 +59708,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55635,8 +59717,8 @@ "number_of_pages": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55644,8 +59726,8 @@ "quality": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55653,8 +59735,8 @@ "remote_station": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55662,8 +59744,8 @@ "source": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55671,8 +59753,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55680,8 +59762,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55689,8 +59771,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55698,8 +59780,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55711,8 +59793,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55724,8 +59806,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55737,8 +59819,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55746,8 +59828,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55759,8 +59841,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55768,8 +59850,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55777,8 +59859,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55786,8 +59868,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55799,8 +59881,8 @@ "charge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55808,8 +59890,8 @@ "charge_details": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55817,8 +59899,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55826,8 +59908,8 @@ "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55835,8 +59917,8 @@ "error_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55844,8 +59926,8 @@ "error_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55853,8 +59935,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55862,8 +59944,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55871,8 +59953,8 @@ "number_of_pages": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55880,8 +59962,8 @@ "quality": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55889,8 +59971,8 @@ "remote_station": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55898,8 +59980,8 @@ "source": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55907,8 +59989,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55916,8 +59998,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55925,8 +60007,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55934,8 +60016,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55947,8 +60029,8 @@ "attribute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55956,8 +60038,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55965,8 +60047,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55974,8 +60056,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55983,8 +60065,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -55996,8 +60078,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56009,8 +60091,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56022,8 +60104,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56035,8 +60117,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56052,13 +60134,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -56066,18 +60148,25 @@ "list": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.logs_types_generated.ConferencesResponse" } } } @@ -56090,8 +60179,8 @@ "charge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56099,8 +60188,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56112,8 +60201,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56121,8 +60210,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56130,8 +60219,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56139,8 +60228,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56152,8 +60241,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56165,8 +60254,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56174,8 +60263,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56187,8 +60276,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56196,8 +60285,8 @@ "current_participants": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56205,8 +60294,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56214,8 +60303,8 @@ "max_size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56223,8 +60312,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56232,8 +60321,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56241,8 +60330,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56250,8 +60339,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56259,8 +60348,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56268,8 +60357,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56281,8 +60370,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56290,8 +60379,8 @@ "current_participants": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56299,8 +60388,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56308,8 +60397,8 @@ "max_size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56317,8 +60406,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56326,8 +60415,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56335,8 +60424,8 @@ "recording_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56344,8 +60433,8 @@ "recording_file_size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56353,8 +60442,8 @@ "recording_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56362,8 +60451,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56371,8 +60460,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56380,8 +60469,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56389,8 +60478,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56402,8 +60491,8 @@ "attribute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56411,8 +60500,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56420,8 +60509,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56429,8 +60518,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56438,8 +60527,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56451,8 +60540,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56464,8 +60553,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56477,8 +60566,8 @@ "charge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56486,8 +60575,8 @@ "charge_details": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56495,8 +60584,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56504,8 +60593,8 @@ "ended_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56513,8 +60602,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56522,8 +60611,8 @@ "locked": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56531,8 +60620,8 @@ "room_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56540,8 +60629,8 @@ "source": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56549,8 +60638,374 @@ "started_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "status": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "type": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "url": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + } + } + }, + "signalwire.rest.namespaces.message_resources_generated": { + "classes": { + "MessageLogs": { + "crud_base": { + "base": "ReadResource", + "bind": [ + "class:LogListResponse", + "class:LogRetrieveResponse" + ] + }, + "methods": { + "__init__": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "http_client", + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + ], + "returns": "void" + }, + "paginate": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" + } + ], + "returns": "class:signalwire.rest._pagination.PaginatedIterator" + } + } + } + } + }, + "signalwire.rest.namespaces.message_types_generated": { + "classes": { + "ChargeDetail": { + "methods": { + "charge": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "description": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + }, + "LogListResponse": { + "methods": { + "data": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "links": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + }, + "LogPaginationResponse": { + "methods": { + "first": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "next": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "prev": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "self": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + }, + "LogRetrieveResponse": { + "methods": { + "charge": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "charge_details": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "created_at": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "direction": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "from": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "kind": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "number_of_segments": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "source": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "status": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "to": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "type": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "url": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + }, + "MessageLog": { + "methods": { + "charge": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "charge_details": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "created_at": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "direction": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "from": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "kind": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "number_of_segments": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "source": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56558,8 +61013,17 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "to": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56567,8 +61031,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56576,288 +61040,381 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" } } - } - } - }, - "signalwire.rest.namespaces.message_resources_generated": { - "classes": { - "MessageLogs": { + }, + "MessageLogShowStatusCode422": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true - } - ], - "returns": "void" - }, - "paginate": { + "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.rest._pagination.PaginatedIterator" + "returns": "any" } } - } - } - }, - "signalwire.rest.namespaces.message_types_generated": { - "classes": { - "ChargeDetail": { + }, + "MessageLogsListStatusCode422": { "methods": { - "charge": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "any" - }, - "description": { + "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" } } }, - "LogListResponse": { + "Types_StatusCodes_RestApiErrorItem": { "methods": { - "data": { + "attribute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "links": { + "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" - } - } - }, - "LogPaginationResponse": { - "methods": { - "first": { + }, + "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "next": { + "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "prev": { + "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" - }, - "self": { + } + } + }, + "Types_StatusCodes_StatusCode400": { + "methods": { + "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" } } }, - "LogRetrieveResponse": { + "Types_StatusCodes_StatusCode401": { "methods": { - "charge": { + "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" - }, - "charge_details": { + } + } + }, + "Types_StatusCodes_StatusCode404": { + "methods": { + "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" - }, - "created_at": { + } + } + }, + "Types_StatusCodes_StatusCode500": { + "methods": { + "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" - }, - "direction": { + } + } + } + } + }, + "signalwire.rest.namespaces.messages_resources_generated": { + "classes": { + "Messages": { + "methods": { + "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "http_client", + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], - "returns": "any" + "returns": "void" }, - "from": { + "create": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "kind": "keyword", + "name": "to", + "required": true, + "type": "string" + }, + { + "kind": "keyword", + "name": "from", + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "body", + "required": false, + "type": "optional" + }, + { + "default": null, + "kind": "keyword", + "name": "media", + "required": false, + "type": "optional" + }, + { + "default": null, + "kind": "keyword", + "name": "send_as_mms", + "required": false, + "type": "optional" + }, + { + "default": null, + "kind": "keyword", + "name": "status_callback", + "required": false, + "type": "optional" + }, + { + "default": null, + "kind": "keyword", + "name": "custom_variables", + "required": false, + "type": "optional" + }, + { + "default": null, + "kind": "keyword", + "name": "extras", + "required": false, + "type": "optional>" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "any" + "returns": "class:signalwire.relay.message.Message" }, - "id": { + "update": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "messageId", + "required": true, + "type": "string" + }, + { + "kind": "keyword", + "name": "body", + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "extras", + "required": false, + "type": "optional>" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "any" - }, - "kind": { + "returns": "class:signalwire.relay.message.Message" + } + } + } + } + }, + "signalwire.rest.namespaces.messages_types_generated": { + "classes": { + "CreateMessageRequest": { + "methods": { + "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "number_of_segments": { + "custom_variables": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "source": { + "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "status": { + "media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "to": { + "send_as_mms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "type": { + "status_callback": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "url": { + "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" } } }, - "MessageLog": { + "Message": { "methods": { - "charge": { + "body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "charge_details": { + "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "created_at": { + "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "direction": { + "error_code": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "error_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56865,8 +61422,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56874,8 +61431,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56883,88 +61440,97 @@ "kind": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "number_of_segments": { + "media": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "source": { + "message_uri": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "status": { + "number_of_segments": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "to": { + "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "type": { + "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, - "url": { + "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "to": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "any" } } }, - "MessageLogShowStatusCode422": { + "MessagesCreateStatusCode422": { "methods": { "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" } } }, - "MessageLogsListStatusCode422": { + "MessagesUpdateStatusCode422": { "methods": { "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56976,8 +61542,8 @@ "attribute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56985,8 +61551,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -56994,8 +61560,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57003,8 +61569,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57012,8 +61578,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57025,8 +61591,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57038,8 +61604,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57051,8 +61617,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57064,8 +61630,21 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + }, + "UpdateMessageRequest": { + "methods": { + "body": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57081,13 +61660,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -57095,48 +61674,62 @@ "create": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "name", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "kind": "keyword", "name": "permissions", - "type": "list", "required": true, - "kind": "keyword" + "type": "list" }, { + "default": null, + "kind": "keyword", "name": "subproject_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.project_types_generated.TokenResponse" }, "delete": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "tokenId", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -57144,37 +61737,44 @@ "update": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "tokenId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "name", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "permissions", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.project_types_generated.TokenResponse" } } } @@ -57187,8 +61787,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57196,8 +61796,8 @@ "permissions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57205,8 +61805,8 @@ "subproject_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57218,8 +61818,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57227,8 +61827,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57236,8 +61836,8 @@ "permissions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57245,8 +61845,8 @@ "token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57258,8 +61858,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57271,8 +61871,8 @@ "attribute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57280,8 +61880,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57289,8 +61889,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57298,8 +61898,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57307,8 +61907,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57320,8 +61920,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57333,8 +61933,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57346,8 +61946,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57359,8 +61959,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57368,8 +61968,339 @@ "permissions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + } + } + }, + "signalwire.rest.namespaces.projects_resources_generated": { + "classes": { + "Projects": { + "crud_base": { + "base": "CrudResource", + "bind": [ + "class:ProjectList", + "class:Project", + "class:ProjectCreate", + "class:ProjectUpdate" + ] + }, + "methods": { + "__init__": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "http_client", + "required": true, + "type": "class:signalwire.rest._base.HttpClient" + } + ], + "returns": "void" + }, + "rotate_signing_key": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "id", + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" + } + ], + "returns": "dict" + } + } + } + } + }, + "signalwire.rest.namespaces.projects_types_generated": { + "classes": { + "Project": { + "methods": { + "created_at": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "force_https_requests": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "name": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "parent_project_id": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "protect_fax_media": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "protect_message_media": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "protect_recordings": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "region_preference": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "subproject": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "updated_at": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + }, + "ProjectCreate": { + "methods": { + "force_https_requests": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "name": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "protect_fax_media": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "protect_message_media": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "protect_recordings": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + }, + "ProjectList": { + "methods": { + "data": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "links": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + }, + "ProjectStatusCode422": { + "methods": { + "errors": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + }, + "Types_StatusCodes_RestApiErrorItem": { + "methods": { + "attribute": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "code": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "message": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "type": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + }, + "url": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + }, + "Types_StatusCodes_StatusCode401": { + "methods": { + "error": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + }, + "Types_StatusCodes_StatusCode403": { + "methods": { + "error": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "any" + } + } + }, + "Types_StatusCodes_StatusCode404": { + "methods": { + "error": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57385,13 +62316,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -57399,44 +62330,51 @@ "create_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "ttl", - "type": "int", "required": true, - "kind": "keyword" + "type": "int" }, { + "kind": "keyword", "name": "channels", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "member_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "state", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.pubsub_types_generated.PubSubToken" } } } @@ -57449,8 +62387,8 @@ "channels": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57458,8 +62396,8 @@ "member_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57467,8 +62405,8 @@ "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57476,8 +62414,8 @@ "ttl": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57489,8 +62427,8 @@ "read": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57498,8 +62436,8 @@ "write": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57511,8 +62449,8 @@ "read": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57520,8 +62458,8 @@ "write": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57533,8 +62471,8 @@ "token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57546,8 +62484,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57559,8 +62497,8 @@ "attribute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57568,8 +62506,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57577,8 +62515,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57586,8 +62524,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57595,8 +62533,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57608,8 +62546,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57621,8 +62559,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57634,8 +62572,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -57651,13 +62589,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -57665,97 +62603,111 @@ "create": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "label", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "kind": "keyword", "name": "country", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "kind": "keyword", "name": "first_name", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "kind": "keyword", "name": "last_name", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "kind": "keyword", "name": "street_number", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "kind": "keyword", "name": "street_name", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "kind": "keyword", "name": "city", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "kind": "keyword", "name": "state", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "kind": "keyword", "name": "postal_code", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "address_type", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "address_number", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.AddressResponse" }, "delete": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -57763,39 +62715,53 @@ "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.AddressResponse" }, "list": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.AddressListResponse" } } }, @@ -57804,13 +62770,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -57818,37 +62784,44 @@ "create": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "number", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "kind": "keyword", "name": "number_type", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "capabilities", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.PhoneNumberResponse" } } }, @@ -57857,13 +62830,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -57871,23 +62844,30 @@ "phone_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "e164", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.PhoneNumberLookupResponse" } } }, @@ -57896,13 +62876,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -57910,172 +62890,202 @@ "call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "to", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "from", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "message", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "token_length", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "valid_for", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "max_attempts", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "allow_alphas", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.MfaResponse" }, "sms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "to", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "from", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "message", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "token_length", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "valid_for", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "max_attempts", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "allow_alphas", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.MfaResponse" }, "verify": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "requestId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "token", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.MfaVerifyResponse" } } }, "NumberGroups": { + "crud_base": { + "base": "CrudResource", + "bind": [ + "class:NumberGroupListResponse", + "class:NumberGroupResponse", + "class:CreateNumberGroupRequest", + "class:UpdateNumberGroupRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -58083,40 +63093,54 @@ "add_membership": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "groupId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "phone_number_id", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.NumberGroupMembershipResponse" }, "delete_membership": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -58124,59 +63148,82 @@ "get_membership": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.NumberGroupMembershipResponse" }, "list_memberships": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "groupId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.NumberGroupMembershipListResponse" } } }, "PhoneNumbers": { + "crud_base": { + "base": "CrudResource", + "bind": [ + "class:PhoneNumberListResponse", + "class:PhoneNumberResponse", + "class:PurchasePhoneNumberRequest", + "class:UpdatePhoneNumberRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -58184,239 +63231,304 @@ "search": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.AvailablePhoneNumbersResponse" }, "set_ai_agent": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "resource_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "agent_id", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { - "name": "extra", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "extra", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.PhoneNumberResponse" }, "set_call_flow": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "resource_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "flow_id", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { + "default": null, "name": "version", - "type": "optional", "required": false, - "default": null + "type": "optional" }, { - "name": "extra", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "extra", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.PhoneNumberResponse" }, "set_cxml_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "resource_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "application_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "extra", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "extra", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.PhoneNumberResponse" }, "set_cxml_webhook": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "resource_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, "name": "fallback_url", - "type": "optional", "required": false, - "default": null + "type": "optional" }, { + "default": null, "name": "status_callback_url", - "type": "optional", "required": false, - "default": null + "type": "optional" }, { - "name": "extra", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "extra", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.PhoneNumberResponse" }, "set_relay_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "resource_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "extra", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "extra", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.PhoneNumberResponse" }, "set_relay_topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "resource_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "topic", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, "name": "status_callback_url", - "type": "optional", "required": false, - "default": null + "type": "optional" }, { - "name": "extra", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "extra", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.PhoneNumberResponse" }, "set_swml_webhook": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "resource_id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "extra", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "extra", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.PhoneNumberResponse" } } }, "Queues": { + "crud_base": { + "base": "CrudResource", + "bind": [ + "class:QueueListResponse", + "class:QueueResponse", + "class:CreateQueueRequest", + "class:UpdateQueueRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -58424,70 +63536,91 @@ "get_member": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "queueId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.QueueMemberResponse" }, "get_next_member": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "queueId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.QueueMemberResponse" }, "list_members": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "queueId", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.QueueMemberListResponse" } } }, @@ -58496,13 +63629,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -58510,13 +63643,20 @@ "delete": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -58524,20 +63664,27 @@ "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], "returns": "dict" @@ -58545,18 +63692,25 @@ "list": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.RecordingListResponse" } } }, @@ -58565,13 +63719,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -58579,93 +63733,128 @@ "create": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "body", - "type": "dict", - "required": true + "required": true, + "type": "dict" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.BrandResponse" }, "create_campaign": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "body", - "type": "dict", - "required": true + "required": true, + "type": "dict" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.CampaignResponse" }, "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.BrandResponse" }, "list": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.BrandListResponse" }, "list_campaigns": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.CampaignListResponse" } } }, @@ -58674,13 +63863,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -58688,128 +63877,163 @@ "create_order": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "phone_numbers", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "status_callback_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.OrderResponse" }, "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.CampaignResponse" }, "list_numbers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.AssignedNumberListResponse" }, "list_orders": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.OrderListResponse" }, "update": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "name", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.CampaignResponse" } } }, @@ -58818,13 +64042,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -58832,13 +64056,20 @@ "delete": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -58850,13 +64081,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -58864,23 +64095,30 @@ "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.OrderResponse" } } }, @@ -58889,13 +64127,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -58903,114 +64141,135 @@ "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.ShortCodeResponse" }, "list": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.ShortCodeListResponse" }, "update": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "name", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "kind": "keyword", "name": "message_handler", - "type": "dict", "required": true, - "kind": "keyword" + "type": "dict" }, { + "default": null, + "kind": "keyword", "name": "message_request_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "message_request_method", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "message_fallback_url", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "message_fallback_method", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "message_laml_application_id", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "message_relay_context", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.ShortCodeResponse" } } }, @@ -59019,13 +64278,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -59033,84 +64292,107 @@ "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.SipProfileResponse" }, "update": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "default": null, + "kind": "keyword", "name": "domain_identifier", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "default_codecs", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "default_ciphers", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "default_encryption", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "default_send_as", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.SipProfileResponse" } } }, "VerifiedCallers": { + "crud_base": { + "base": "CrudResource", + "bind": [ + "class:VerifiedCallerIDListResponse", + "class:VerifiedCallerIDResponse", + "class:CreateVerifiedCallerIDRequest", + "class:UpdateVerifiedCallerIDRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -59118,43 +64400,57 @@ "redial_verification": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.VerifiedCallerIDResponse" }, "submit_verification": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "verification_code", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.VerifiedCallerIDResponse" } } } @@ -59167,8 +64463,8 @@ "phone_number_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59180,8 +64476,8 @@ "address_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59189,8 +64485,8 @@ "address_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59198,8 +64494,8 @@ "city": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59207,8 +64503,8 @@ "country": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59216,8 +64512,8 @@ "first_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59225,8 +64521,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59234,8 +64530,8 @@ "label": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59243,8 +64539,8 @@ "last_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59252,8 +64548,8 @@ "postal_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59261,8 +64557,8 @@ "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59270,8 +64566,8 @@ "street_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59279,8 +64575,8 @@ "street_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59288,8 +64584,8 @@ "zip_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59301,8 +64597,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59310,8 +64606,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59323,8 +64619,8 @@ "address_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59332,8 +64628,8 @@ "address_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59341,8 +64637,8 @@ "city": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59350,8 +64646,8 @@ "country": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59359,8 +64655,8 @@ "first_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59368,8 +64664,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59377,8 +64673,8 @@ "label": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59386,8 +64682,8 @@ "last_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59395,8 +64691,8 @@ "postal_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59404,8 +64700,8 @@ "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59413,8 +64709,8 @@ "street_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59422,8 +64718,8 @@ "street_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59431,8 +64727,8 @@ "zip_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59444,8 +64740,8 @@ "campaign_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59453,8 +64749,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59462,8 +64758,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59471,8 +64767,8 @@ "phone_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59480,8 +64776,8 @@ "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59489,8 +64785,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59502,8 +64798,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59511,8 +64807,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59524,8 +64820,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59533,8 +64829,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59542,8 +64838,8 @@ "number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59551,8 +64847,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59564,8 +64860,8 @@ "capabilities": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59573,8 +64869,8 @@ "city": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59582,8 +64878,8 @@ "lata": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59591,8 +64887,8 @@ "number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59600,8 +64896,8 @@ "rate_center": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59609,8 +64905,8 @@ "region": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59622,8 +64918,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59631,8 +64927,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59644,8 +64940,8 @@ "company_address": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59653,8 +64949,8 @@ "company_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59662,8 +64958,8 @@ "company_vertical": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59671,8 +64967,8 @@ "company_website": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59680,8 +64976,8 @@ "contact_email": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59689,8 +64985,8 @@ "contact_phone": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59698,8 +64994,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59707,8 +65003,8 @@ "csp_brand_reference": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59716,8 +65012,8 @@ "csp_self_registered": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59725,8 +65021,8 @@ "ein": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59734,8 +65030,8 @@ "ein_issuing_country": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59743,8 +65039,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59752,8 +65048,8 @@ "legal_entity_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59761,8 +65057,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59770,8 +65066,8 @@ "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59779,8 +65075,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59788,8 +65084,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59801,8 +65097,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59810,8 +65106,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59823,8 +65119,8 @@ "company_address": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59832,8 +65128,8 @@ "company_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59841,8 +65137,8 @@ "company_vertical": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59850,8 +65146,8 @@ "company_website": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59859,8 +65155,8 @@ "contact_email": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59868,8 +65164,8 @@ "contact_phone": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59877,8 +65173,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59886,8 +65182,8 @@ "csp_brand_reference": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59895,8 +65191,8 @@ "csp_self_registered": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59904,8 +65200,8 @@ "ein": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59913,8 +65209,8 @@ "ein_issuing_country": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59922,8 +65218,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59931,8 +65227,8 @@ "legal_entity_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59940,8 +65236,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59949,8 +65245,8 @@ "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59958,8 +65254,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59967,8 +65263,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59980,8 +65276,8 @@ "age_gated_content": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59989,8 +65285,8 @@ "campaign_verify_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -59998,8 +65294,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60007,8 +65303,8 @@ "csp_campaign_reference": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60016,8 +65312,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60025,8 +65321,8 @@ "direct_lending": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60034,8 +65330,8 @@ "dynamic_templates": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60043,8 +65339,8 @@ "embedded_link": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60052,8 +65348,8 @@ "embedded_phone": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60061,8 +65357,8 @@ "help_keywords": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60070,8 +65366,8 @@ "help_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60079,8 +65375,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60088,8 +65384,8 @@ "lead_generation": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60097,8 +65393,8 @@ "message_flow": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60106,8 +65402,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60115,8 +65411,8 @@ "number_pooling_per_campaign": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60124,8 +65420,8 @@ "number_pooling_required": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60133,8 +65429,8 @@ "opt_in_keywords": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60142,8 +65438,8 @@ "opt_in_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60151,8 +65447,8 @@ "opt_out_keywords": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60160,8 +65456,8 @@ "opt_out_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60169,8 +65465,8 @@ "sample1": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60178,8 +65474,8 @@ "sample2": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60187,8 +65483,8 @@ "sample3": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60196,8 +65492,8 @@ "sample4": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60205,8 +65501,8 @@ "sample5": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60214,8 +65510,8 @@ "sms_use_case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60223,8 +65519,8 @@ "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60232,8 +65528,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60241,8 +65537,8 @@ "sub_use_cases": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60250,8 +65546,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60263,8 +65559,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60272,8 +65568,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60285,8 +65581,8 @@ "age_gated_content": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60294,8 +65590,8 @@ "campaign_verify_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60303,8 +65599,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60312,8 +65608,8 @@ "csp_campaign_reference": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60321,8 +65617,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60330,8 +65626,8 @@ "direct_lending": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60339,8 +65635,8 @@ "dynamic_templates": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60348,8 +65644,8 @@ "embedded_link": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60357,8 +65653,8 @@ "embedded_phone": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60366,8 +65662,8 @@ "help_keywords": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60375,8 +65671,8 @@ "help_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60384,8 +65680,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60393,8 +65689,8 @@ "lead_generation": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60402,8 +65698,8 @@ "message_flow": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60411,8 +65707,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60420,8 +65716,8 @@ "number_pooling_per_campaign": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60429,8 +65725,8 @@ "number_pooling_required": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60438,8 +65734,8 @@ "opt_in_keywords": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60447,8 +65743,8 @@ "opt_in_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60456,8 +65752,8 @@ "opt_out_keywords": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60465,8 +65761,8 @@ "opt_out_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60474,8 +65770,8 @@ "sample1": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60483,8 +65779,8 @@ "sample2": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60492,8 +65788,8 @@ "sample3": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60501,8 +65797,8 @@ "sample4": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60510,8 +65806,8 @@ "sample5": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60519,8 +65815,8 @@ "sms_use_case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60528,8 +65824,8 @@ "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60537,8 +65833,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60546,8 +65842,8 @@ "sub_use_cases": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60555,8 +65851,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60568,8 +65864,8 @@ "city": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60577,8 +65873,8 @@ "jurisdiction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60586,8 +65882,8 @@ "lata": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60595,8 +65891,8 @@ "lec": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60604,8 +65900,8 @@ "linetype": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60613,8 +65909,8 @@ "lrn": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60622,8 +65918,8 @@ "ocn": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60631,8 +65927,8 @@ "spid": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60640,8 +65936,8 @@ "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60653,8 +65949,8 @@ "caller_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60666,8 +65962,8 @@ "address_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60675,8 +65971,8 @@ "address_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60684,8 +65980,8 @@ "city": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60693,8 +65989,8 @@ "country": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60702,8 +65998,8 @@ "first_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60711,8 +66007,8 @@ "label": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60720,8 +66016,8 @@ "last_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60729,8 +66025,8 @@ "postal_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60738,8 +66034,8 @@ "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60747,8 +66043,8 @@ "street_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60756,8 +66052,8 @@ "street_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60769,8 +66065,8 @@ "csp_brand_reference": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60778,8 +66074,8 @@ "csp_self_registered": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60787,8 +66083,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60796,8 +66092,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60809,8 +66105,8 @@ "call_ai_agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60818,8 +66114,8 @@ "call_dialogflow_agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60827,8 +66123,8 @@ "call_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60836,8 +66132,8 @@ "call_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60845,8 +66141,8 @@ "call_flow_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60854,8 +66150,8 @@ "call_flow_version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60863,8 +66159,8 @@ "call_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60872,8 +66168,8 @@ "call_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60881,8 +66177,8 @@ "call_relay_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60890,8 +66186,8 @@ "call_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60899,8 +66195,8 @@ "call_relay_context_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60908,8 +66204,8 @@ "call_relay_script_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60917,8 +66213,8 @@ "call_relay_topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60926,8 +66222,8 @@ "call_relay_topic_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60935,8 +66231,8 @@ "call_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60944,8 +66240,8 @@ "call_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60953,8 +66249,8 @@ "call_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60962,8 +66258,8 @@ "call_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60971,8 +66267,8 @@ "call_video_room_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60980,8 +66276,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60989,8 +66285,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -60998,8 +66294,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61007,8 +66303,8 @@ "identifier": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61016,8 +66312,8 @@ "ip_auth": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61025,8 +66321,8 @@ "ip_auth_enabled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61034,8 +66330,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61043,8 +66339,8 @@ "user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61056,8 +66352,8 @@ "company_address": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61065,8 +66361,8 @@ "company_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61074,8 +66370,8 @@ "company_vertical": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61083,8 +66379,8 @@ "company_website": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61092,8 +66388,8 @@ "contact_email": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61101,8 +66397,8 @@ "contact_phone": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61110,8 +66406,8 @@ "ein": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61119,8 +66415,8 @@ "ein_issuing_country": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61128,8 +66424,8 @@ "legal_entity_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61137,8 +66433,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61146,8 +66442,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61159,8 +66455,8 @@ "age_gated_content": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61168,8 +66464,8 @@ "brand_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61177,8 +66473,8 @@ "campaign_verify_token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61186,8 +66482,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61195,8 +66491,8 @@ "direct_lending": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61204,8 +66500,8 @@ "dynamic_messages": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61213,8 +66509,8 @@ "embedded_link": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61222,8 +66518,8 @@ "embedded_phone": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61231,8 +66527,8 @@ "help_keywords": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61240,8 +66536,8 @@ "help_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61249,8 +66545,8 @@ "lead_generation": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61258,8 +66554,8 @@ "message_flow": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61267,8 +66563,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61276,8 +66572,8 @@ "number_pooling_per_campaign": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61285,8 +66581,8 @@ "number_pooling_required": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61294,8 +66590,8 @@ "opt_in_keywords": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61303,8 +66599,8 @@ "opt_in_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61312,8 +66608,8 @@ "opt_out_keywords": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61321,8 +66617,8 @@ "opt_out_message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61330,8 +66626,8 @@ "sample1": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61339,8 +66635,8 @@ "sample2": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61348,8 +66644,8 @@ "sample3": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61357,8 +66653,8 @@ "sample4": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61366,8 +66662,8 @@ "sample5": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61375,8 +66671,8 @@ "sms_use_case": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61384,8 +66680,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61393,8 +66689,8 @@ "sub_use_cases": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61402,8 +66698,8 @@ "terms_and_conditions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61415,8 +66711,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61424,8 +66720,8 @@ "sticky_sender": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61437,8 +66733,8 @@ "phone_numbers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61446,8 +66742,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61459,8 +66755,8 @@ "brand_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61468,8 +66764,8 @@ "csp_campaign_reference": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61477,8 +66773,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61486,8 +66782,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61499,8 +66795,8 @@ "max_size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61508,8 +66804,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61521,8 +66817,8 @@ "call_ai_agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61530,8 +66826,8 @@ "call_dialogflow_agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61539,8 +66835,8 @@ "call_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61548,8 +66844,8 @@ "call_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61557,8 +66853,8 @@ "call_flow_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61566,8 +66862,8 @@ "call_flow_version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61575,8 +66871,8 @@ "call_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61584,8 +66880,8 @@ "call_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61593,8 +66889,8 @@ "call_relay_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61602,8 +66898,8 @@ "call_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61611,8 +66907,8 @@ "call_relay_context_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61620,8 +66916,8 @@ "call_relay_script_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61629,8 +66925,8 @@ "call_relay_topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61638,8 +66934,8 @@ "call_relay_topic_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61647,8 +66943,8 @@ "call_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61656,8 +66952,8 @@ "call_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61665,8 +66961,8 @@ "call_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61674,8 +66970,8 @@ "call_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61683,8 +66979,8 @@ "call_video_room_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61692,8 +66988,8 @@ "caller_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61701,8 +66997,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61710,8 +67006,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61719,8 +67015,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61728,8 +67024,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61737,8 +67033,8 @@ "send_as": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61746,8 +67042,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61759,8 +67055,8 @@ "extension": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61768,8 +67064,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61777,8 +67073,8 @@ "number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61790,8 +67086,8 @@ "call_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61799,8 +67095,8 @@ "call_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61808,8 +67104,8 @@ "call_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61817,8 +67113,8 @@ "call_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61826,8 +67122,8 @@ "call_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61835,8 +67131,8 @@ "call_relay_context_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61844,8 +67140,8 @@ "call_relay_script_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61853,8 +67149,8 @@ "call_relay_topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61862,8 +67158,8 @@ "call_relay_topic_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61871,8 +67167,8 @@ "call_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61880,8 +67176,8 @@ "call_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61889,8 +67185,8 @@ "call_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61898,8 +67194,8 @@ "call_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61907,8 +67203,8 @@ "call_video_room_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61916,8 +67212,8 @@ "calling_handler_resource_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61925,8 +67221,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61934,8 +67230,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61943,8 +67239,8 @@ "domain": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61952,8 +67248,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61961,8 +67257,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61970,8 +67266,8 @@ "identifier": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61979,8 +67275,8 @@ "ip_auth": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61988,8 +67284,8 @@ "ip_auth_enabled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -61997,8 +67293,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62006,8 +67302,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62015,8 +67311,8 @@ "user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62028,8 +67324,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62037,8 +67333,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62050,8 +67346,8 @@ "call_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62059,8 +67355,8 @@ "call_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62068,8 +67364,8 @@ "call_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62077,8 +67373,8 @@ "call_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62086,8 +67382,8 @@ "call_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62095,8 +67391,8 @@ "call_relay_context_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62104,8 +67400,8 @@ "call_relay_script_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62113,8 +67409,8 @@ "call_relay_topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62122,8 +67418,8 @@ "call_relay_topic_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62131,8 +67427,8 @@ "call_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62140,8 +67436,8 @@ "call_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62149,8 +67445,8 @@ "call_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62158,8 +67454,8 @@ "call_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62167,8 +67463,8 @@ "call_video_room_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62176,8 +67472,8 @@ "calling_handler_resource_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62185,8 +67481,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62194,8 +67490,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62203,8 +67499,8 @@ "domain": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62212,8 +67508,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62221,8 +67517,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62230,8 +67526,8 @@ "identifier": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62239,8 +67535,8 @@ "ip_auth": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62248,8 +67544,8 @@ "ip_auth_enabled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62257,8 +67553,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62266,8 +67562,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62275,8 +67571,8 @@ "user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62288,8 +67584,8 @@ "capabilities": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62297,8 +67593,8 @@ "number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62306,8 +67602,8 @@ "number_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62319,8 +67615,8 @@ "capabilities": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62328,8 +67624,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62337,8 +67633,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62346,8 +67642,8 @@ "number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62359,8 +67655,8 @@ "allow_alphas": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62368,8 +67664,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62377,8 +67673,8 @@ "max_attempts": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62386,8 +67682,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62395,8 +67691,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62404,8 +67700,8 @@ "token_length": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62413,8 +67709,8 @@ "valid_for": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62426,8 +67722,8 @@ "channel": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62435,8 +67731,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62444,8 +67740,8 @@ "success": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62453,8 +67749,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62466,8 +67762,8 @@ "token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62479,8 +67775,8 @@ "success": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62492,8 +67788,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62501,8 +67797,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62510,8 +67806,8 @@ "phone_number_count": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62519,8 +67815,8 @@ "sticky_sender": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62532,8 +67828,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62541,8 +67837,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62554,8 +67850,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62563,8 +67859,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62572,8 +67868,8 @@ "number_group_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62581,8 +67877,8 @@ "phone_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62590,8 +67886,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62603,8 +67899,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62612,8 +67908,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62625,8 +67921,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62634,8 +67930,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62643,8 +67939,8 @@ "number_group_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62652,8 +67948,8 @@ "phone_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62661,8 +67957,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62674,8 +67970,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62683,8 +67979,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62692,8 +67988,8 @@ "phone_number_count": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62701,8 +67997,8 @@ "sticky_sender": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62714,8 +68010,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62723,8 +68019,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62732,8 +68028,8 @@ "processed_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62741,8 +68037,8 @@ "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62750,8 +68046,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62759,8 +68055,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62772,8 +68068,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62781,8 +68077,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62794,8 +68090,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62803,8 +68099,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62812,8 +68108,8 @@ "processed_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62821,8 +68117,8 @@ "state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62830,8 +68126,8 @@ "status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62839,8 +68135,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62852,8 +68148,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62861,8 +68157,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62870,8 +68166,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62879,8 +68175,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62892,8 +68188,8 @@ "wire": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62905,8 +68201,8 @@ "call_dialogflow_agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62914,8 +68210,8 @@ "call_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62923,8 +68219,8 @@ "call_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62932,8 +68228,8 @@ "call_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62941,8 +68237,8 @@ "call_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62950,8 +68246,8 @@ "call_receive_mode": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62959,8 +68255,8 @@ "call_relay_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62968,8 +68264,8 @@ "call_relay_connector_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62977,8 +68273,8 @@ "call_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62986,8 +68282,8 @@ "call_relay_context_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -62995,8 +68291,8 @@ "call_relay_script_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63004,8 +68300,8 @@ "call_relay_topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63013,8 +68309,8 @@ "call_relay_topic_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63022,8 +68318,8 @@ "call_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63031,8 +68327,8 @@ "call_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63040,8 +68336,8 @@ "call_sip_endpoint_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63049,8 +68345,8 @@ "call_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63058,8 +68354,8 @@ "call_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63067,8 +68363,8 @@ "call_verto_resource": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63076,8 +68372,8 @@ "call_video_room_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63085,8 +68381,8 @@ "calling_handler_resource_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63094,8 +68390,8 @@ "capabilities": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63103,8 +68399,8 @@ "country_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63112,8 +68408,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63121,8 +68417,8 @@ "e911_address_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63130,8 +68426,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63139,8 +68435,8 @@ "message_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63148,8 +68444,8 @@ "message_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63157,8 +68453,8 @@ "message_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63166,8 +68462,8 @@ "message_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63175,8 +68471,8 @@ "message_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63184,8 +68480,8 @@ "message_relay_topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63193,8 +68489,8 @@ "message_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63202,8 +68498,8 @@ "message_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63211,8 +68507,8 @@ "messaging_handler_resource_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63220,8 +68516,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63229,8 +68525,8 @@ "next_billed_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63238,8 +68534,8 @@ "number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63247,8 +68543,8 @@ "number_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63256,8 +68552,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63269,8 +68565,8 @@ "fax": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63278,8 +68574,8 @@ "mms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63287,8 +68583,8 @@ "sms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63296,8 +68592,8 @@ "voice": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63309,8 +68605,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63318,8 +68614,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63331,8 +68627,8 @@ "carrier": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63340,8 +68636,8 @@ "cnam": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63349,8 +68645,8 @@ "country_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63358,8 +68654,8 @@ "country_code_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63367,8 +68663,8 @@ "e164": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63376,8 +68672,8 @@ "international_number_formatted": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63385,8 +68681,8 @@ "location": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63394,8 +68690,8 @@ "national_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63403,8 +68699,8 @@ "national_number_formatted": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63412,8 +68708,8 @@ "number_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63421,8 +68717,8 @@ "possible_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63430,8 +68726,8 @@ "timezones": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63439,8 +68735,8 @@ "valid_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63452,8 +68748,8 @@ "call_dialogflow_agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63461,8 +68757,8 @@ "call_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63470,8 +68766,8 @@ "call_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63479,8 +68775,8 @@ "call_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63488,8 +68784,8 @@ "call_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63497,8 +68793,8 @@ "call_receive_mode": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63506,8 +68802,8 @@ "call_relay_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63515,8 +68811,8 @@ "call_relay_connector_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63524,8 +68820,8 @@ "call_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63533,8 +68829,8 @@ "call_relay_context_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63542,8 +68838,8 @@ "call_relay_script_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63551,8 +68847,8 @@ "call_relay_topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63560,8 +68856,8 @@ "call_relay_topic_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63569,8 +68865,8 @@ "call_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63578,8 +68874,8 @@ "call_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63587,8 +68883,8 @@ "call_sip_endpoint_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63596,8 +68892,8 @@ "call_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63605,8 +68901,8 @@ "call_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63614,8 +68910,8 @@ "call_verto_resource": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63623,8 +68919,8 @@ "call_video_room_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63632,8 +68928,8 @@ "calling_handler_resource_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63641,8 +68937,8 @@ "capabilities": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63650,8 +68946,8 @@ "country_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63659,8 +68955,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63668,8 +68964,8 @@ "e911_address_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63677,8 +68973,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63686,8 +68982,8 @@ "message_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63695,8 +68991,8 @@ "message_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63704,8 +69000,8 @@ "message_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63713,8 +69009,8 @@ "message_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63722,8 +69018,8 @@ "message_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63731,8 +69027,8 @@ "message_relay_topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63740,8 +69036,8 @@ "message_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63749,8 +69045,8 @@ "message_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63758,8 +69054,8 @@ "messaging_handler_resource_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63767,8 +69063,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63776,8 +69072,8 @@ "next_billed_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63785,8 +69081,8 @@ "number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63794,8 +69090,8 @@ "number_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63803,8 +69099,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63816,8 +69112,8 @@ "byte_size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63825,8 +69121,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63834,8 +69130,8 @@ "duration_in_seconds": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63843,8 +69139,8 @@ "error_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63852,8 +69148,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63861,8 +69157,8 @@ "price": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63870,8 +69166,8 @@ "price_unit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63879,8 +69175,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63888,8 +69184,8 @@ "relay_pstn_leg_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63897,8 +69193,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63906,8 +69202,8 @@ "stereo": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63915,8 +69211,8 @@ "track": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63924,8 +69220,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63933,8 +69229,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63946,8 +69242,8 @@ "number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63959,8 +69255,8 @@ "average_wait_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63968,8 +69264,8 @@ "current_size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63977,8 +69273,8 @@ "date_created": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63986,8 +69282,8 @@ "date_updated": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -63995,8 +69291,8 @@ "friendly_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64004,8 +69300,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64013,8 +69309,8 @@ "max_size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64022,8 +69318,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64031,8 +69327,8 @@ "uri": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64044,8 +69340,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64053,8 +69349,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64066,8 +69362,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64075,8 +69371,8 @@ "date_enqueued": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64084,8 +69380,8 @@ "position": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64093,8 +69389,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64102,8 +69398,8 @@ "queue_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64111,8 +69407,8 @@ "uri": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64120,8 +69416,8 @@ "wait_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64133,8 +69429,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64142,8 +69438,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64155,8 +69451,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64164,8 +69460,8 @@ "date_enqueued": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64173,8 +69469,8 @@ "position": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64182,8 +69478,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64191,8 +69487,8 @@ "queue_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64200,8 +69496,8 @@ "uri": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64209,8 +69505,8 @@ "wait_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64222,8 +69518,8 @@ "average_wait_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64231,8 +69527,8 @@ "current_size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64240,8 +69536,8 @@ "date_created": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64249,8 +69545,8 @@ "date_updated": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64258,8 +69554,8 @@ "friendly_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64267,8 +69563,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64276,8 +69572,8 @@ "max_size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64285,8 +69581,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64294,8 +69590,8 @@ "uri": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64307,8 +69603,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64316,8 +69612,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64329,8 +69625,8 @@ "capabilities": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64338,8 +69634,8 @@ "code_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64347,8 +69643,8 @@ "country_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64356,8 +69652,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64365,8 +69661,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64374,8 +69670,8 @@ "lease_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64383,8 +69679,8 @@ "message_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64392,8 +69688,8 @@ "message_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64401,8 +69697,8 @@ "message_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64410,8 +69706,8 @@ "message_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64419,8 +69715,8 @@ "message_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64428,8 +69724,8 @@ "message_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64437,8 +69733,8 @@ "message_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64446,8 +69742,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64455,8 +69751,8 @@ "next_billed_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64464,8 +69760,8 @@ "number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64473,8 +69769,8 @@ "number_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64482,8 +69778,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64495,8 +69791,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64504,8 +69800,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64517,8 +69813,8 @@ "capabilities": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64526,8 +69822,8 @@ "code_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64535,8 +69831,8 @@ "country_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64544,8 +69840,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64553,8 +69849,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64562,8 +69858,8 @@ "lease_duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64571,8 +69867,8 @@ "message_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64580,8 +69876,8 @@ "message_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64589,8 +69885,8 @@ "message_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64598,8 +69894,8 @@ "message_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64607,8 +69903,8 @@ "message_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64616,8 +69912,8 @@ "message_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64625,8 +69921,8 @@ "message_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64634,8 +69930,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64643,8 +69939,8 @@ "next_billed_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64652,8 +69948,8 @@ "number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64661,8 +69957,8 @@ "number_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64670,8 +69966,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64683,8 +69979,8 @@ "call_dialogflow_agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64692,8 +69988,8 @@ "call_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64701,8 +69997,8 @@ "call_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64710,8 +70006,8 @@ "call_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64719,8 +70015,8 @@ "call_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64728,8 +70024,8 @@ "call_relay_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64737,8 +70033,8 @@ "call_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64746,8 +70042,8 @@ "call_relay_context_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64755,8 +70051,8 @@ "call_relay_script_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64764,8 +70060,8 @@ "call_relay_topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64773,8 +70069,8 @@ "call_relay_topic_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64782,8 +70078,8 @@ "call_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64791,8 +70087,8 @@ "call_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64800,8 +70096,8 @@ "call_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64809,8 +70105,8 @@ "call_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64818,8 +70114,8 @@ "call_video_room_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64827,8 +70123,8 @@ "caller_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64836,8 +70132,8 @@ "calling_handler_resource_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64845,8 +70141,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64854,8 +70150,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64863,8 +70159,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64872,8 +70168,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64881,8 +70177,8 @@ "send_as": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64890,8 +70186,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64899,8 +70195,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64912,8 +70208,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64921,8 +70217,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64934,8 +70230,8 @@ "call_dialogflow_agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64943,8 +70239,8 @@ "call_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64952,8 +70248,8 @@ "call_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64961,8 +70257,8 @@ "call_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64970,8 +70266,8 @@ "call_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64979,8 +70275,8 @@ "call_relay_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64988,8 +70284,8 @@ "call_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -64997,8 +70293,8 @@ "call_relay_context_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65006,8 +70302,8 @@ "call_relay_script_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65015,8 +70311,8 @@ "call_relay_topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65024,8 +70320,8 @@ "call_relay_topic_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65033,8 +70329,8 @@ "call_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65042,8 +70338,8 @@ "call_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65051,8 +70347,8 @@ "call_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65060,8 +70356,8 @@ "call_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65069,8 +70365,8 @@ "call_video_room_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65078,8 +70374,8 @@ "caller_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65087,8 +70383,8 @@ "calling_handler_resource_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65096,8 +70392,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65105,8 +70401,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65114,8 +70410,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65123,8 +70419,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65132,8 +70428,8 @@ "send_as": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65141,8 +70437,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65150,8 +70446,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65163,8 +70459,8 @@ "default_ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65172,8 +70468,8 @@ "default_codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65181,8 +70477,8 @@ "default_encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65190,8 +70486,8 @@ "default_send_as": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65199,8 +70495,8 @@ "domain": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65208,8 +70504,8 @@ "domain_identifier": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65221,8 +70517,8 @@ "byte_size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65230,8 +70526,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65239,8 +70535,8 @@ "duration_in_seconds": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65248,8 +70544,8 @@ "error_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65257,8 +70553,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65266,8 +70562,8 @@ "price": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65275,8 +70571,8 @@ "price_unit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65284,8 +70580,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65293,8 +70589,8 @@ "relay_sip_leg_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65302,8 +70598,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65311,8 +70607,8 @@ "stereo": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65320,8 +70616,8 @@ "track": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65329,8 +70625,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65338,8 +70634,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65351,8 +70647,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65360,8 +70656,8 @@ "detail": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65369,8 +70665,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65378,8 +70674,8 @@ "title": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65391,8 +70687,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65404,8 +70700,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65417,8 +70713,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65430,8 +70726,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65443,8 +70739,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65456,8 +70752,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65469,8 +70765,8 @@ "call_ai_agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65478,8 +70774,8 @@ "call_dialogflow_agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65487,8 +70783,8 @@ "call_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65496,8 +70792,8 @@ "call_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65505,8 +70801,8 @@ "call_flow_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65514,8 +70810,8 @@ "call_flow_version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65523,8 +70819,8 @@ "call_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65532,8 +70828,8 @@ "call_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65541,8 +70837,8 @@ "call_relay_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65550,8 +70846,8 @@ "call_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65559,8 +70855,8 @@ "call_relay_context_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65568,8 +70864,8 @@ "call_relay_script_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65577,8 +70873,8 @@ "call_relay_topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65586,8 +70882,8 @@ "call_relay_topic_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65595,8 +70891,8 @@ "call_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65604,8 +70900,8 @@ "call_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65613,8 +70909,8 @@ "call_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65622,8 +70918,8 @@ "call_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65631,8 +70927,8 @@ "call_video_room_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65640,8 +70936,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65649,8 +70945,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65658,8 +70954,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65667,8 +70963,8 @@ "identifier": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65676,8 +70972,8 @@ "ip_auth": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65685,8 +70981,8 @@ "ip_auth_enabled": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65694,8 +70990,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65703,8 +70999,8 @@ "user": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65716,8 +71012,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65725,8 +71021,8 @@ "sticky_sender": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65738,8 +71034,8 @@ "call_ai_agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65747,8 +71043,8 @@ "call_dialogflow_agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65756,8 +71052,8 @@ "call_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65765,8 +71061,8 @@ "call_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65774,8 +71070,8 @@ "call_flow_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65783,8 +71079,8 @@ "call_flow_version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65792,8 +71088,8 @@ "call_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65801,8 +71097,8 @@ "call_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65810,8 +71106,8 @@ "call_receive_mode": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65819,8 +71115,8 @@ "call_relay_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65828,8 +71124,8 @@ "call_relay_connector_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65837,8 +71133,8 @@ "call_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65846,8 +71142,8 @@ "call_relay_context_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65855,8 +71151,8 @@ "call_relay_script_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65864,8 +71160,8 @@ "call_relay_topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65873,8 +71169,8 @@ "call_relay_topic_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65882,8 +71178,8 @@ "call_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65891,8 +71187,8 @@ "call_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65900,8 +71196,8 @@ "call_sip_endpoint_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65909,8 +71205,8 @@ "call_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65918,8 +71214,8 @@ "call_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65927,8 +71223,8 @@ "call_verto_resource": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65936,8 +71232,8 @@ "call_video_room_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65945,8 +71241,8 @@ "message_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65954,8 +71250,8 @@ "message_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65963,8 +71259,8 @@ "message_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65972,8 +71268,8 @@ "message_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65981,8 +71277,8 @@ "message_relay_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65990,8 +71286,8 @@ "message_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -65999,8 +71295,8 @@ "message_relay_topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66008,8 +71304,8 @@ "message_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66017,8 +71313,8 @@ "message_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66026,8 +71322,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66039,8 +71335,8 @@ "max_size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66048,8 +71344,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66061,8 +71357,8 @@ "message_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66070,8 +71366,8 @@ "message_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66079,8 +71375,8 @@ "message_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66088,8 +71384,8 @@ "message_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66097,8 +71393,8 @@ "message_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66106,8 +71402,8 @@ "message_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66115,8 +71411,8 @@ "message_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66124,8 +71420,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66137,8 +71433,8 @@ "call_ai_agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66146,8 +71442,8 @@ "call_dialogflow_agent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66155,8 +71451,8 @@ "call_fallback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66164,8 +71460,8 @@ "call_fallback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66173,8 +71469,8 @@ "call_flow_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66182,8 +71478,8 @@ "call_flow_version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66191,8 +71487,8 @@ "call_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66200,8 +71496,8 @@ "call_laml_application_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66209,8 +71505,8 @@ "call_relay_application": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66218,8 +71514,8 @@ "call_relay_context": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66227,8 +71523,8 @@ "call_relay_context_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66236,8 +71532,8 @@ "call_relay_script_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66245,8 +71541,8 @@ "call_relay_topic": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66254,8 +71550,8 @@ "call_relay_topic_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66263,8 +71559,8 @@ "call_request_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66272,8 +71568,8 @@ "call_request_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66281,8 +71577,8 @@ "call_status_callback_method": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66290,8 +71586,8 @@ "call_status_callback_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66299,8 +71595,8 @@ "call_video_room_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66308,8 +71604,8 @@ "caller_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66317,8 +71613,8 @@ "ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66326,8 +71622,8 @@ "codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66335,8 +71631,8 @@ "encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66344,8 +71640,8 @@ "password": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66353,8 +71649,8 @@ "send_as": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66362,8 +71658,8 @@ "username": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66375,8 +71671,8 @@ "default_ciphers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66384,8 +71680,8 @@ "default_codecs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66393,8 +71689,8 @@ "default_encryption": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66402,8 +71698,8 @@ "default_send_as": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66411,8 +71707,8 @@ "domain_identifier": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66424,8 +71720,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66437,8 +71733,8 @@ "extension": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66446,8 +71742,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66455,8 +71751,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66464,8 +71760,8 @@ "number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66473,8 +71769,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66482,8 +71778,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66491,8 +71787,8 @@ "verified": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66500,8 +71796,8 @@ "verified_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66513,8 +71809,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66522,8 +71818,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66535,8 +71831,8 @@ "extension": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66544,8 +71840,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66553,8 +71849,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66562,8 +71858,8 @@ "number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66571,8 +71867,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66580,8 +71876,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66589,8 +71885,8 @@ "verified": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66598,8 +71894,8 @@ "verified_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66611,8 +71907,8 @@ "verification_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66624,8 +71920,8 @@ "byte_size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66633,8 +71929,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66642,8 +71938,8 @@ "duration_in_seconds": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66651,8 +71947,8 @@ "error_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66660,8 +71956,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66669,8 +71965,8 @@ "price": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66678,8 +71974,8 @@ "price_unit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66687,8 +71983,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66696,8 +71992,8 @@ "relay_webrtc_leg_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66705,8 +72001,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66714,8 +72010,8 @@ "stereo": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66723,8 +72019,8 @@ "track": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66732,8 +72028,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66741,8 +72037,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66758,8 +72054,8 @@ "content": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66767,8 +72063,8 @@ "role": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66780,8 +72076,8 @@ "event_channel": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66789,8 +72085,8 @@ "event_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66798,8 +72094,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66807,8 +72103,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66816,8 +72112,8 @@ "space_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66825,8 +72121,8 @@ "timestamp": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66838,8 +72134,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66847,8 +72143,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66856,8 +72152,8 @@ "result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66869,8 +72165,8 @@ "ai_session_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66878,8 +72174,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66887,8 +72183,8 @@ "conversation": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66896,8 +72192,8 @@ "end_reason": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66905,8 +72201,8 @@ "function_calls": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66914,8 +72210,8 @@ "post_prompt_result": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66923,8 +72219,8 @@ "summary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66936,8 +72232,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66945,8 +72241,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66954,8 +72250,8 @@ "more_info": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66963,8 +72259,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66976,8 +72272,8 @@ "parsed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66985,8 +72281,8 @@ "raw": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -66994,8 +72290,8 @@ "substituted": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67007,8 +72303,8 @@ "action": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67016,8 +72312,8 @@ "ai_session_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67025,8 +72321,8 @@ "app_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67034,8 +72330,8 @@ "argument": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67043,8 +72339,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67052,8 +72348,8 @@ "content_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67061,8 +72357,8 @@ "conversation_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67070,8 +72366,8 @@ "function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67079,8 +72375,8 @@ "meta_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67088,8 +72384,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67097,8 +72393,8 @@ "space_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67106,8 +72402,8 @@ "version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67119,8 +72415,8 @@ "call_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67128,8 +72424,8 @@ "call_state": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67137,8 +72433,8 @@ "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67146,8 +72442,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67155,8 +72451,8 @@ "from_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67164,8 +72460,8 @@ "headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67173,8 +72469,8 @@ "node_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67182,8 +72478,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67191,8 +72487,8 @@ "segment_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67200,8 +72496,8 @@ "space_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67209,8 +72505,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67218,8 +72514,8 @@ "to_number": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67227,8 +72523,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67240,8 +72536,8 @@ "call": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67249,8 +72545,8 @@ "envs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67258,8 +72554,8 @@ "params": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67267,8 +72563,8 @@ "vars": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67284,13 +72580,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -67298,52 +72594,75 @@ "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.ConferenceToken" }, "reset": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.ConferenceToken" } } }, "VideoConferences": { + "crud_base": { + "base": "CrudResource", + "bind": [ + "class:ListConferencesResponse", + "class:Conference", + "class:CreateConferenceRequest", + "class:UpdateConferenceRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -67351,71 +72670,92 @@ "create_stream": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "url", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.Stream" }, "list_conference_tokens": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.ListConferenceTokensResponse" }, "list_streams": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.ListStreamsResponse" } } }, @@ -67424,13 +72764,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -67438,13 +72778,20 @@ "delete": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -67452,75 +72799,103 @@ "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.RoomRecording" }, "list": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.ListRoomRecordingsResponse" }, "list_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.ListRoomRecordingEventsResponse" } } }, "VideoRoomSessions": { + "crud_base": { + "base": "ReadResource", + "bind": [ + "class:ListRoomSessionsResponse", + "class:RoomSessionSummary" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -67528,71 +72903,99 @@ "list_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.ListRoomSessionEventsResponse" }, "list_members": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.ListRoomSessionMembersResponse" }, "list_recordings": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.ListRoomSessionRecordingsResponse" }, "paginate": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "class:signalwire.rest._pagination.PaginatedIterator" @@ -67604,13 +73007,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -67618,158 +73021,174 @@ "create": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { + "kind": "keyword", "name": "room_name", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "user_name", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "permissions", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "join_from", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "join_until", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "remove_at", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "remove_after_seconds_elapsed", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "join_audio_muted", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "join_video_muted", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "auto_create_room", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "enable_room_previews", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "room_display_name", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "end_room_session_on_leave", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "join_as", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "media_allowed", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "room_meta", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "meta", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "sync_audio_video", - "type": "optional", "required": false, - "kind": "keyword", - "default": null + "type": "optional" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.RoomTokenResponse" } } }, "VideoRooms": { + "crud_base": { + "base": "CrudResource", + "bind": [ + "class:ListRoomsResponse", + "class:RoomResponse", + "class:CreateRoomRequest", + "class:UpdateRoomRequest" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -67777,50 +73196,64 @@ "create_stream": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "url", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.Stream" }, "list_streams": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.ListStreamsResponse" } } }, @@ -67829,13 +73262,13 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -67843,13 +73276,20 @@ "delete": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "dict" @@ -67857,50 +73297,64 @@ "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.Stream" }, "update": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { + "kind": "keyword", "name": "url", - "type": "string", "required": true, - "kind": "keyword" + "type": "string" }, { + "default": null, + "kind": "keyword", "name": "extras", - "type": "optional>", "required": false, + "type": "optional>" + }, + { + "default": null, "kind": "keyword", - "default": null + "name": "request_options", + "required": false, + "type": "optional" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.video_types_generated.Stream" } } } @@ -67913,8 +73367,8 @@ "audio_video_sync": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67922,8 +73376,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67931,8 +73385,8 @@ "duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67940,8 +73394,8 @@ "enable_room_previews": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67949,8 +73403,8 @@ "end_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67958,8 +73412,8 @@ "fps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67967,8 +73421,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67976,8 +73430,8 @@ "join_from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67985,8 +73439,8 @@ "join_until": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -67994,8 +73448,8 @@ "layout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68003,8 +73457,8 @@ "max_members": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68012,8 +73466,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68021,8 +73475,8 @@ "preview_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68030,8 +73484,8 @@ "quality": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68039,8 +73493,8 @@ "record_on_start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68048,8 +73502,8 @@ "remove_after_seconds_elapsed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68057,8 +73511,8 @@ "remove_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68066,8 +73520,8 @@ "room_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68075,8 +73529,8 @@ "start_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68084,8 +73538,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68097,8 +73551,8 @@ "charge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68106,8 +73560,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68119,8 +73573,8 @@ "active_session": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68128,8 +73582,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68137,8 +73591,8 @@ "dark_background": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68146,8 +73600,8 @@ "dark_foreground": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68155,8 +73609,8 @@ "dark_negative": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68164,8 +73618,8 @@ "dark_primary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68173,8 +73627,8 @@ "dark_success": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68182,8 +73636,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68191,8 +73645,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68200,8 +73654,8 @@ "enable_chat": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68209,8 +73663,8 @@ "enable_room_previews": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68218,8 +73672,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68227,8 +73681,8 @@ "join_from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68236,8 +73690,8 @@ "join_until": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68245,8 +73699,8 @@ "layout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68254,8 +73708,8 @@ "light_background": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68263,8 +73717,8 @@ "light_foreground": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68272,8 +73726,8 @@ "light_negative": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68281,8 +73735,8 @@ "light_primary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68290,8 +73744,8 @@ "light_success": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68299,8 +73753,8 @@ "meta": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68308,8 +73762,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68317,8 +73771,8 @@ "quality": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68326,8 +73780,8 @@ "record_on_start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68335,8 +73789,8 @@ "room_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68344,8 +73798,8 @@ "size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68353,8 +73807,8 @@ "tone_on_entry_and_exit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68362,8 +73816,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68371,8 +73825,8 @@ "user_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68384,8 +73838,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68393,8 +73847,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68402,8 +73856,8 @@ "scopes": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68411,8 +73865,8 @@ "token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68424,8 +73878,8 @@ "dark_background": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68433,8 +73887,8 @@ "dark_foreground": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68442,8 +73896,8 @@ "dark_negative": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68451,8 +73905,8 @@ "dark_primary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68460,8 +73914,8 @@ "dark_success": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68469,8 +73923,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68478,8 +73932,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68487,8 +73941,8 @@ "enable_chat": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68496,8 +73950,8 @@ "enable_room_previews": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68505,8 +73959,8 @@ "join_from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68514,8 +73968,8 @@ "join_until": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68523,8 +73977,8 @@ "layout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68532,8 +73986,8 @@ "light_background": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68541,8 +73995,8 @@ "light_foreground": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68550,8 +74004,8 @@ "light_negative": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68559,8 +74013,8 @@ "light_primary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68568,8 +74022,8 @@ "light_success": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68577,8 +74031,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68586,8 +74040,8 @@ "quality": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68595,8 +74049,8 @@ "record_on_start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68604,8 +74058,8 @@ "size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68617,8 +74071,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68626,8 +74080,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68635,8 +74089,8 @@ "enable_room_previews": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68644,8 +74098,8 @@ "join_from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68653,8 +74107,8 @@ "join_until": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68662,8 +74116,8 @@ "layout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68671,8 +74125,8 @@ "max_members": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68680,8 +74134,8 @@ "meta": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68689,8 +74143,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68698,8 +74152,8 @@ "quality": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68707,8 +74161,8 @@ "record_on_start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68716,8 +74170,8 @@ "remove_after_seconds_elapsed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68725,8 +74179,8 @@ "remove_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68734,8 +74188,8 @@ "sync_audio_video": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68747,8 +74201,8 @@ "auto_create_room": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68756,8 +74210,8 @@ "enable_room_previews": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68765,8 +74219,8 @@ "end_room_session_on_leave": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68774,8 +74228,8 @@ "join_as": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68783,8 +74237,8 @@ "join_audio_muted": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68792,8 +74246,8 @@ "join_from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68801,8 +74255,8 @@ "join_until": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68810,8 +74264,8 @@ "join_video_muted": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68819,8 +74273,8 @@ "media_allowed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68828,8 +74282,8 @@ "meta": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68837,8 +74291,8 @@ "permissions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68846,8 +74300,8 @@ "remove_after_seconds_elapsed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68855,8 +74309,8 @@ "remove_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68864,8 +74318,8 @@ "room_display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68873,8 +74327,8 @@ "room_meta": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68882,8 +74336,8 @@ "room_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68891,8 +74345,8 @@ "sync_audio_video": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68900,8 +74354,8 @@ "user_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68913,8 +74367,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68926,8 +74380,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68935,8 +74389,8 @@ "discarded_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68944,8 +74398,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68957,8 +74411,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68966,8 +74420,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68979,8 +74433,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -68988,8 +74442,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69001,8 +74455,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69010,8 +74464,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69023,8 +74477,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69032,8 +74486,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69045,8 +74499,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69054,8 +74508,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69067,8 +74521,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69076,8 +74530,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69089,8 +74543,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69098,8 +74552,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69111,8 +74565,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69120,8 +74574,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69133,8 +74587,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69142,8 +74596,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69155,8 +74609,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69164,8 +74618,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69177,8 +74631,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69186,8 +74640,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69199,8 +74653,8 @@ "charge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69208,8 +74662,8 @@ "charge_details": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69217,8 +74671,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69226,8 +74680,8 @@ "ended_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69235,8 +74689,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69244,8 +74698,8 @@ "locked": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69253,8 +74707,8 @@ "room_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69262,8 +74716,8 @@ "source": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69271,8 +74725,8 @@ "started_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69280,8 +74734,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69289,8 +74743,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69298,8 +74752,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69311,8 +74765,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69320,8 +74774,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69329,8 +74783,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69338,8 +74792,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69351,8 +74805,8 @@ "cost_in_dollars": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69360,8 +74814,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69369,8 +74823,8 @@ "duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69378,8 +74832,8 @@ "finished_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69387,8 +74841,8 @@ "format": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69396,8 +74850,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69405,8 +74859,8 @@ "room_session_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69414,8 +74868,8 @@ "size_in_bytes": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69423,8 +74877,8 @@ "started_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69432,8 +74886,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69441,8 +74895,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69450,8 +74904,8 @@ "uri": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69463,8 +74917,8 @@ "active_session": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69472,8 +74926,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69481,8 +74935,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69490,8 +74944,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69499,8 +74953,8 @@ "enable_room_previews": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69508,8 +74962,8 @@ "fps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69517,8 +74971,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69526,8 +74980,8 @@ "join_from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69535,8 +74989,8 @@ "join_until": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69544,8 +74998,8 @@ "layout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69553,8 +75007,8 @@ "max_members": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69562,8 +75016,8 @@ "meta": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69571,8 +75025,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69580,8 +75034,8 @@ "prioritize_handraise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69589,8 +75043,8 @@ "quality": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69598,8 +75052,8 @@ "record_on_start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69607,8 +75061,8 @@ "remove_after_seconds_elapsed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69616,8 +75070,8 @@ "remove_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69625,8 +75079,8 @@ "room_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69634,8 +75088,8 @@ "sync_audio_video": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69643,8 +75097,8 @@ "tone_on_entry_and_exit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69652,8 +75106,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69661,8 +75115,8 @@ "user_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69674,8 +75128,8 @@ "cost_in_dollars": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69683,8 +75137,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69692,8 +75146,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69701,8 +75155,8 @@ "duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69710,8 +75164,8 @@ "enable_room_previews": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69719,8 +75173,8 @@ "end_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69728,8 +75182,8 @@ "fps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69737,8 +75191,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69746,8 +75200,8 @@ "join_from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69755,8 +75209,8 @@ "join_until": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69764,8 +75218,8 @@ "layout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69773,8 +75227,8 @@ "locked": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69782,8 +75236,8 @@ "locked_cover": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69791,8 +75245,8 @@ "max_members": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69800,8 +75254,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69809,8 +75263,8 @@ "preview_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69818,8 +75272,8 @@ "prioritize_handraise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69827,8 +75281,8 @@ "quality": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69836,8 +75290,8 @@ "record_on_start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69845,8 +75299,8 @@ "remove_after_seconds_elapsed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69854,8 +75308,8 @@ "remove_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69863,8 +75317,8 @@ "room_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69872,8 +75326,8 @@ "room_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69881,8 +75335,8 @@ "start_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69890,8 +75344,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69899,8 +75353,8 @@ "sync_audio_video": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69908,8 +75362,8 @@ "tone_on_entry_and_exit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69917,8 +75371,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69926,8 +75380,8 @@ "user_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69939,8 +75393,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69948,8 +75402,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69957,8 +75411,8 @@ "level": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69966,8 +75420,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69975,8 +75429,8 @@ "payload": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69984,8 +75438,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -69993,8 +75447,8 @@ "room_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70002,8 +75456,8 @@ "room_participant_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70011,8 +75465,8 @@ "room_recording_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70020,8 +75474,8 @@ "room_session_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70033,8 +75487,8 @@ "cost_in_dollars": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70042,8 +75496,8 @@ "duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70051,8 +75505,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70060,8 +75514,8 @@ "join_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70069,8 +75523,8 @@ "leave_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70078,8 +75532,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70087,8 +75541,8 @@ "room_session_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70100,8 +75554,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70109,8 +75563,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70118,8 +75572,8 @@ "duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70127,8 +75581,8 @@ "end_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70136,8 +75590,8 @@ "fps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70145,8 +75599,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70154,8 +75608,8 @@ "join_from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70163,8 +75617,8 @@ "join_until": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70172,8 +75626,8 @@ "layout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70181,8 +75635,8 @@ "locked": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70190,8 +75644,8 @@ "max_members": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70199,8 +75653,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70208,8 +75662,8 @@ "preview_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70217,8 +75671,8 @@ "prioritize_handraise": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70226,8 +75680,8 @@ "quality": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70235,8 +75689,8 @@ "record_on_start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70244,8 +75698,8 @@ "remove_after_seconds_elapsed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70253,8 +75707,8 @@ "remove_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70262,8 +75716,8 @@ "room_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70271,8 +75725,8 @@ "room_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70280,8 +75734,8 @@ "start_time": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70289,8 +75743,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70298,8 +75752,8 @@ "sync_audio_video": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70307,8 +75761,8 @@ "tone_on_entry_and_exit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70316,8 +75770,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70325,8 +75779,8 @@ "user_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70338,8 +75792,8 @@ "token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70351,8 +75805,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70360,8 +75814,8 @@ "fps": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70369,8 +75823,8 @@ "height": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70378,8 +75832,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70387,8 +75841,8 @@ "stream_type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70396,8 +75850,8 @@ "updated_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70405,8 +75859,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70414,8 +75868,8 @@ "width": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70427,8 +75881,8 @@ "attribute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70436,8 +75890,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70445,8 +75899,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70454,8 +75908,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70463,8 +75917,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70476,8 +75930,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70489,8 +75943,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70502,8 +75956,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70515,8 +75969,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70528,8 +75982,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70541,8 +75995,8 @@ "dark_background": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70550,8 +76004,8 @@ "dark_foreground": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70559,8 +76013,8 @@ "dark_negative": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70568,8 +76022,8 @@ "dark_primary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70577,8 +76031,8 @@ "dark_success": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70586,8 +76040,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70595,8 +76049,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70604,8 +76058,8 @@ "enable_chat": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70613,8 +76067,8 @@ "enable_room_previews": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70622,8 +76076,8 @@ "join_from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70631,8 +76085,8 @@ "join_until": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70640,8 +76094,8 @@ "layout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70649,8 +76103,8 @@ "light_background": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70658,8 +76112,8 @@ "light_foreground": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70667,8 +76121,8 @@ "light_negative": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70676,8 +76130,8 @@ "light_primary": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70685,8 +76139,8 @@ "light_success": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70694,8 +76148,8 @@ "quality": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70703,8 +76157,8 @@ "record_on_start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70712,8 +76166,8 @@ "room_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70721,8 +76175,8 @@ "size": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70730,8 +76184,8 @@ "tone_on_entry_and_exit": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70739,8 +76193,8 @@ "user_join_video_off": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70752,8 +76206,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70761,8 +76215,8 @@ "display_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70770,8 +76224,8 @@ "enable_room_previews": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70779,8 +76233,8 @@ "join_from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70788,8 +76242,8 @@ "join_until": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70797,8 +76251,8 @@ "layout": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70806,8 +76260,8 @@ "max_members": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70815,8 +76269,8 @@ "meta": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70824,8 +76278,8 @@ "quality": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70833,8 +76287,8 @@ "record_on_start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70842,8 +76296,8 @@ "remove_after_seconds_elapsed": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70851,8 +76305,8 @@ "remove_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70860,8 +76314,8 @@ "sync_audio_video": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70873,8 +76327,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70886,8 +76340,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70899,17 +76353,24 @@ "signalwire.rest.namespaces.voice_resources_generated": { "classes": { "VoiceLogs": { + "crud_base": { + "base": "ReadResource", + "bind": [ + "class:LogListResponse", + "class:VoiceLog" + ] + }, "methods": { "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "http_client", - "type": "class:signalwire.rest._base.HttpClient", - "required": true + "required": true, + "type": "class:signalwire.rest._base.HttpClient" } ], "returns": "void" @@ -70917,29 +76378,43 @@ "list_events": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "id", - "type": "string", - "required": true + "required": true, + "type": "string" }, { - "name": "params", - "type": "any", + "default": null, + "kind": "keyword", + "name": "request_options", "required": false, + "type": "optional" + }, + { + "default": {}, "kind": "var_keyword", - "default": {} + "name": "params", + "required": false, + "type": "any" } ], - "returns": "dict" + "returns": "class:signalwire.rest.namespaces.voice_types_generated.LogEventsListResponse" }, "paginate": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "default": null, + "kind": "keyword", + "name": "request_options", + "required": false, + "type": "optional" } ], "returns": "class:signalwire.rest._pagination.PaginatedIterator" @@ -70955,8 +76430,8 @@ "charge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70964,8 +76439,8 @@ "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70977,8 +76452,8 @@ "charge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70986,8 +76461,8 @@ "charge_details": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -70995,8 +76470,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71004,8 +76479,8 @@ "duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71013,8 +76488,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71022,8 +76497,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71031,8 +76506,8 @@ "source": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71040,8 +76515,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71049,8 +76524,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71058,8 +76533,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71067,8 +76542,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71080,8 +76555,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71089,8 +76564,8 @@ "discarded_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71098,8 +76573,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71111,8 +76586,8 @@ "charge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71120,8 +76595,8 @@ "charge_details": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71129,8 +76604,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71138,8 +76613,8 @@ "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71147,8 +76622,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71156,8 +76631,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71165,8 +76640,8 @@ "source": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71174,8 +76649,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71183,8 +76658,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71192,8 +76667,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71201,8 +76676,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71214,8 +76689,8 @@ "details": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71223,8 +76698,8 @@ "event_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71232,8 +76707,8 @@ "level": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71241,8 +76716,8 @@ "log_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71250,8 +76725,8 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71259,8 +76734,8 @@ "project_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71272,8 +76747,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71285,8 +76760,8 @@ "data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71294,8 +76769,8 @@ "links": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71307,8 +76782,8 @@ "first": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71316,8 +76791,8 @@ "next": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71325,8 +76800,8 @@ "prev": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71334,8 +76809,8 @@ "self": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71347,8 +76822,8 @@ "billing_ms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71356,8 +76831,8 @@ "charge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71365,8 +76840,8 @@ "charge_details": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71374,8 +76849,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71383,8 +76858,8 @@ "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71392,8 +76867,8 @@ "duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71401,8 +76876,8 @@ "duration_ms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71410,8 +76885,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71419,8 +76894,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71428,8 +76903,8 @@ "parent_id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71437,8 +76912,8 @@ "source": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71446,8 +76921,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71455,8 +76930,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71464,8 +76939,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71473,8 +76948,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71486,8 +76961,8 @@ "attribute": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71495,8 +76970,8 @@ "code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71504,8 +76979,8 @@ "message": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71513,8 +76988,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71522,8 +76997,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71535,8 +77010,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71548,8 +77023,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71561,8 +77036,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71574,8 +77049,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71587,8 +77062,8 @@ "error": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71600,8 +77075,8 @@ "charge": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71609,8 +77084,8 @@ "charge_details": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71618,8 +77093,8 @@ "created_at": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71627,8 +77102,8 @@ "direction": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71636,8 +77111,8 @@ "duration": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71645,8 +77120,8 @@ "duration_ms": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71654,8 +77129,8 @@ "from": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71663,8 +77138,8 @@ "id": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71672,8 +77147,8 @@ "source": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71681,8 +77156,8 @@ "status": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71690,8 +77165,8 @@ "to": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71699,8 +77174,8 @@ "type": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71708,8 +77183,8 @@ "url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71721,8 +77196,8 @@ "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -71735,20 +77210,25 @@ "classes": { "RestClientBuilder": { "methods": { - "__init__": { + "abort_signal": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "abort_signal", + "required": true, + "type": "class:signalwire.rest.AbortSignal" } ], - "returns": "void" + "returns": "class:signalwire.rest._request_options.RequestOptions" }, "build": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.rest.client.RestClient" @@ -71756,41 +77236,111 @@ "project": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "project", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.rest.client.RestClient" }, + "request_options": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "request_options", + "required": true, + "type": "class:signalwire.rest._request_options.RequestOptions" + } + ], + "returns": "class:signalwire.rest.client.RestClient" + }, + "retries": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "retries", + "required": true, + "type": "int" + } + ], + "returns": "class:signalwire.rest._request_options.RequestOptions" + }, + "retry_backoff": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "retry_backoff", + "required": true, + "type": "float" + } + ], + "returns": "class:signalwire.rest._request_options.RequestOptions" + }, + "retry_on_status": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "retry_on_status", + "required": true, + "type": "list" + } + ], + "returns": "class:signalwire.rest._request_options.RequestOptions" + }, "space": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "space", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.rest.client.RestClient" }, + "timeout": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "timeout", + "required": true, + "type": "float" + } + ], + "returns": "class:signalwire.rest._request_options.RequestOptions" + }, "token": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "token", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.rest.client.RestClient" @@ -71806,13 +77356,13 @@ "get": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" @@ -71820,13 +77370,13 @@ "is_set": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -71859,6 +77409,10 @@ "params": [], "returns": "class:signalwire.runtime.ExecutionMode" }, + "lambda": { + "params": [], + "returns": "class:signalwire.runtime.ExecutionMode" + }, "server": { "params": [], "returns": "class:signalwire.runtime.ExecutionMode" @@ -71867,8 +77421,8 @@ "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.runtime.ExecutionMode" @@ -71885,30 +77439,16 @@ "classes": { "LambdaAgentHandler": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "agent", - "type": "class:signalwire.core.agent_base.AgentBase", - "required": true - } - ], - "returns": "void" - }, "handle": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "event", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.runtime.lambda.LambdaResponse" @@ -71921,40 +77461,11 @@ "classes": { "LambdaResponse": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "status_code", - "type": "int", - "required": true - }, - { - "name": "headers", - "type": "dict", - "required": true - }, - { - "name": "body", - "type": "string", - "required": true - }, - { - "name": "is_base64_encoded", - "type": "bool", - "required": true - } - ], - "returns": "void" - }, "get_body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -71962,8 +77473,8 @@ "get_headers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -71971,8 +77482,8 @@ "get_status_code": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "int" @@ -71980,8 +77491,8 @@ "is_base64_encoded": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -71990,8 +77501,8 @@ "params": [ { "name": "body", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.runtime.lambda.LambdaResponse" @@ -71999,8 +77510,8 @@ "to_dict": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -72013,20 +77524,11 @@ "classes": { "LambdaUrlResolver": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "resolve_base_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72043,13 +77545,13 @@ "params": [ { "name": "body", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "base64", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "string" @@ -72058,23 +77560,23 @@ "params": [ { "name": "agent", - "type": "class:signalwire.core.swml_service.SWMLService", - "required": true + "required": true, + "type": "class:signalwire.core.swml_service.SWMLService" }, { "name": "env", - "type": "class:signalwire.runtime.EnvProvider", - "required": true + "required": true, + "type": "class:signalwire.runtime.EnvProvider" }, { "name": "headers", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "body", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" @@ -72083,28 +77585,28 @@ "params": [ { "name": "agent", - "type": "class:signalwire.core.swml_service.SWMLService", - "required": true + "required": true, + "type": "class:signalwire.core.swml_service.SWMLService" }, { "name": "method", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "path", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "headers", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "body", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.runtime.ServerlessAdapter" @@ -72117,25 +77619,11 @@ "classes": { "CachedBodyHttpServletRequest": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "request", - "type": "any", - "required": true - } - ], - "returns": "void" - }, "get_cached_body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -72143,8 +77631,8 @@ "get_cached_body_as_string": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72152,8 +77640,8 @@ "get_input_stream": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -72161,8 +77649,8 @@ "get_reader": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" @@ -72175,25 +77663,11 @@ "classes": { "WebhookFilter": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "signing_key", - "type": "string", - "required": true - } - ], - "returns": "void" - }, "destroy": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -72201,23 +77675,23 @@ "do_filter": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "request", - "type": "any", - "required": true + "required": true, + "type": "any" }, { "name": "response", - "type": "any", - "required": true + "required": true, + "type": "any" }, { "name": "chain", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "void" @@ -72225,13 +77699,13 @@ "init": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "filter_config", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "void" @@ -72247,8 +77721,8 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -72256,8 +77730,8 @@ "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72265,8 +77739,8 @@ "get_instance_key": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72274,8 +77748,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72283,8 +77757,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -72292,8 +77766,8 @@ "get_swaig_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -72301,8 +77775,8 @@ "get_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -72310,8 +77784,8 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -72319,13 +77793,13 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "bool" @@ -72333,8 +77807,8 @@ "supports_multiple_instances": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -72347,11 +77821,105 @@ "classes": { "ClaudeSkillsSkill": { "methods": { - "__init__": { + "get_description": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "get_hints": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list" + }, + "get_instance_key": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "get_name": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "get_parameter_schema": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "dict" + }, + "get_prompt_sections": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list>" + }, + "register_tools": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list" + }, + "setup": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "params", + "required": true, + "type": "dict" + } + ], + "returns": "bool" + }, + "supports_multiple_instances": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "bool" + } + } + } + } + }, + "signalwire.skills.datasphere.skill": { + "classes": { + "DataSphereSkill": { + "methods": { + "cleanup": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "void" @@ -72359,17 +77927,26 @@ "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, + "get_global_data": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "dict" + }, "get_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -72377,8 +77954,8 @@ "get_instance_key": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72386,8 +77963,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72395,8 +77972,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -72404,8 +77981,8 @@ "get_prompt_sections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -72413,8 +77990,8 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -72422,13 +77999,13 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "bool" @@ -72436,8 +78013,8 @@ "supports_multiple_instances": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -72446,33 +78023,15 @@ } } }, - "signalwire.skills.datasphere.skill": { + "signalwire.skills.datasphere_serverless.skill": { "classes": { - "DataSphereSkill": { + "DataSphereServerlessSkill": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, - "cleanup": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72480,8 +78039,8 @@ "get_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -72489,8 +78048,8 @@ "get_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -72498,8 +78057,8 @@ "get_instance_key": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72507,8 +78066,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72516,8 +78075,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -72525,8 +78084,17 @@ "get_prompt_sections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "list>" + }, + "get_swaig_functions": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -72534,8 +78102,8 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -72543,13 +78111,13 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "bool" @@ -72557,8 +78125,8 @@ "supports_multiple_instances": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -72567,60 +78135,33 @@ } } }, - "signalwire.skills.datasphere_serverless.skill": { + "signalwire.skills.datetime.skill": { "classes": { - "DataSphereServerlessSkill": { + "DateTimeSkill": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_global_data": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "dict" - }, "get_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" }, - "get_instance_key": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" - }, "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72628,8 +78169,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -72637,17 +78178,8 @@ "get_prompt_sections": { "params": [ { - "name": "self", - "kind": "self" - } - ], - "returns": "list>" - }, - "get_swaig_functions": { - "params": [ - { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -72655,8 +78187,8 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -72664,13 +78196,13 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "bool" @@ -72678,8 +78210,8 @@ "supports_multiple_instances": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -72688,24 +78220,15 @@ } } }, - "signalwire.skills.datetime.skill": { + "signalwire.skills.google_maps.skill": { "classes": { - "DateTimeSkill": { + "GoogleMapsSkill": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72713,8 +78236,8 @@ "get_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -72722,8 +78245,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72731,8 +78254,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -72740,8 +78263,8 @@ "get_prompt_sections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -72749,8 +78272,8 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -72758,22 +78281,13 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true - } - ], - "returns": "bool" - }, - "supports_multiple_instances": { - "params": [ - { - "name": "self", - "kind": "self" + "required": true, + "type": "dict" } ], "returns": "bool" @@ -72782,42 +78296,42 @@ } } }, - "signalwire.skills.google_maps.skill": { + "signalwire.skills.info_gatherer.skill": { "classes": { - "GoogleMapsSkill": { + "InfoGathererSkill": { "methods": { - "__init__": { + "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "void" + "returns": "string" }, - "get_description": { + "get_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "dict" }, - "get_hints": { + "get_instance_key": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "list" + "returns": "string" }, "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72825,8 +78339,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -72834,8 +78348,8 @@ "get_prompt_sections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -72843,8 +78357,8 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -72852,13 +78366,22 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" + } + ], + "returns": "bool" + }, + "supports_multiple_instances": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -72867,24 +78390,15 @@ } } }, - "signalwire.skills.info_gatherer.skill": { + "signalwire.skills.joke.skill": { "classes": { - "InfoGathererSkill": { + "JokeSkill": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72892,26 +78406,26 @@ "get_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" }, - "get_instance_key": { + "get_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "list" }, "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -72919,8 +78433,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -72928,8 +78442,17 @@ "get_prompt_sections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "list>" + }, + "get_swaig_functions": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -72937,8 +78460,8 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -72946,22 +78469,13 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true - } - ], - "returns": "bool" - }, - "supports_multiple_instances": { - "params": [ - { - "name": "self", - "kind": "self" + "required": true, + "type": "dict" } ], "returns": "bool" @@ -72970,42 +78484,24 @@ } } }, - "signalwire.skills.joke.skill": { + "signalwire.skills.math.skill": { "classes": { - "JokeSkill": { + "MathSkill": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" }, - "get_global_data": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "dict" - }, "get_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -73013,8 +78509,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73022,8 +78518,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -73031,17 +78527,8 @@ "get_prompt_sections": { "params": [ { - "name": "self", - "kind": "self" - } - ], - "returns": "list>" - }, - "get_swaig_functions": { - "params": [ - { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -73049,8 +78536,8 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -73058,13 +78545,22 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" + } + ], + "returns": "bool" + }, + "supports_multiple_instances": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -73073,33 +78569,33 @@ } } }, - "signalwire.skills.math.skill": { + "signalwire.skills.mcp_gateway.skill": { "classes": { - "MathSkill": { + "MCPGatewaySkill": { "methods": { - "__init__": { + "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "void" + "returns": "string" }, - "get_description": { + "get_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "string" + "returns": "dict" }, "get_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -73107,8 +78603,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73116,8 +78612,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -73125,40 +78621,49 @@ "get_prompt_sections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" }, - "register_tools": { + "get_required_packages": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "list" + "returns": "list" }, - "setup": { + "get_version": { "params": [ { - "name": "self", - "kind": "self" - }, + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, + "register_tools": { + "params": [ { - "name": "params", - "type": "dict", - "required": true + "kind": "self", + "name": "self" } ], - "returns": "bool" + "returns": "list" }, - "supports_multiple_instances": { + "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "params", + "required": true, + "type": "dict" } ], "returns": "bool" @@ -73171,20 +78676,11 @@ "classes": { "NativeVectorSearchSkill": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "cleanup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -73192,8 +78688,8 @@ "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73201,8 +78697,8 @@ "get_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -73210,8 +78706,8 @@ "get_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -73219,8 +78715,8 @@ "get_instance_key": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73228,8 +78724,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73237,8 +78733,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -73246,8 +78742,8 @@ "get_prompt_sections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -73255,8 +78751,8 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -73264,13 +78760,13 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "bool" @@ -73278,8 +78774,8 @@ "supports_multiple_instances": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -73295,8 +78791,8 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -73304,8 +78800,8 @@ "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73313,8 +78809,8 @@ "get_instance_key": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73322,8 +78818,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73331,8 +78827,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -73340,8 +78836,8 @@ "get_swaig_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -73349,8 +78845,8 @@ "get_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -73358,8 +78854,8 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -73367,13 +78863,13 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "bool" @@ -73381,8 +78877,8 @@ "supports_multiple_instances": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -73395,20 +78891,11 @@ "classes": { "CustomSkillsSkill": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73416,8 +78903,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73425,8 +78912,8 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -73434,13 +78921,13 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "bool" @@ -73448,8 +78935,8 @@ "supports_multiple_instances": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -73461,8 +78948,8 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -73470,13 +78957,13 @@ "add_skill_directory": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "path", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" @@ -73484,8 +78971,8 @@ "discover_skills": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -73494,8 +78981,8 @@ "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.skill_base.SkillBase" @@ -73503,8 +78990,8 @@ "get_all_skills_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict>" @@ -73512,8 +78999,8 @@ "get_external_paths": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -73521,13 +79008,13 @@ "get_skill_class": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "skill_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "any" @@ -73536,8 +79023,8 @@ "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -73549,8 +79036,8 @@ "list_all_skill_sources": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict>" @@ -73558,8 +79045,8 @@ "list_skills": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -73568,13 +79055,13 @@ "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "factory", - "type": "callable,class:signalwire.core.skill_base.SkillBase>", - "required": true + "required": true, + "type": "callable,class:signalwire.core.skill_base.SkillBase>" } ], "returns": "void" @@ -73582,13 +79069,13 @@ "register_skill": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "skill_class", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "void" @@ -73596,8 +79083,8 @@ "registered_names": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -73606,8 +79093,8 @@ "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" @@ -73647,8 +79134,8 @@ "get_value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73669,6 +79156,10 @@ "params": [], "returns": "class:signalwire.skills.SkillName" }, + "mcp_gateway": { + "params": [], + "returns": "class:signalwire.skills.SkillName" + }, "native_vector_search": { "params": [], "returns": "class:signalwire.skills.SkillName" @@ -73689,8 +79180,8 @@ "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.skills.SkillName" @@ -73722,8 +79213,8 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -73731,8 +79222,8 @@ "cleanup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -73740,8 +79231,8 @@ "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73749,8 +79240,8 @@ "get_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -73758,8 +79249,8 @@ "get_instance_key": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73767,8 +79258,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73776,8 +79267,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -73785,22 +79276,31 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" }, + "remove_xpaths": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list" + }, "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "bool" @@ -73808,8 +79308,8 @@ "supports_multiple_instances": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -73822,20 +79322,11 @@ "classes": { "SWMLTransferSkill": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73843,8 +79334,8 @@ "get_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -73852,8 +79343,8 @@ "get_instance_key": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73861,8 +79352,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73870,8 +79361,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -73879,8 +79370,8 @@ "get_prompt_sections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -73888,8 +79379,8 @@ "get_swaig_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -73897,8 +79388,8 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -73906,13 +79397,13 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "bool" @@ -73920,8 +79411,8 @@ "supports_multiple_instances": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -73937,8 +79428,8 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -73946,8 +79437,8 @@ "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73955,8 +79446,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -73964,8 +79455,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -73973,8 +79464,8 @@ "get_swaig_functions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -73982,8 +79473,8 @@ "get_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -73991,8 +79482,8 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -74000,13 +79491,13 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "bool" @@ -74019,20 +79510,11 @@ "classes": { "WebSearchSkill": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -74040,8 +79522,8 @@ "get_global_data": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -74049,8 +79531,8 @@ "get_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -74058,8 +79540,8 @@ "get_instance_key": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -74067,8 +79549,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -74076,8 +79558,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -74085,8 +79567,8 @@ "get_prompt_sections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -74094,8 +79576,8 @@ "get_version": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -74103,8 +79585,8 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -74112,13 +79594,13 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "bool" @@ -74126,8 +79608,8 @@ "supports_multiple_instances": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -74140,20 +79622,11 @@ "classes": { "WikipediaSearchSkill": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -74161,8 +79634,8 @@ "get_hints": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -74170,8 +79643,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -74179,8 +79652,8 @@ "get_parameter_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -74188,8 +79661,8 @@ "get_prompt_sections": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -74197,8 +79670,8 @@ "register_tools": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -74206,13 +79679,13 @@ "search_wiki": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "query", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" @@ -74220,13 +79693,13 @@ "setup": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "params", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "bool" @@ -74251,48 +79724,144 @@ "classes": { "ParameterSchemaBuilder": { "methods": { - "__init__": { + "array": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + }, + { + "name": "name", + "required": true, + "type": "string" + }, + { + "name": "item_type", + "required": true, + "type": "string" + }, + { + "name": "description", + "required": true, + "type": "string" } ], - "returns": "void" + "returns": "class:signalwire.swaig.ParameterSchema" + }, + "array_of_objects": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "name", + "required": true, + "type": "string" + }, + { + "name": "item_schema", + "required": true, + "type": "dict" + }, + { + "name": "description", + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, + "bool": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "name", + "required": true, + "type": "string" + }, + { + "name": "description", + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" }, "build": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" }, + "default_value": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "value", + "required": true, + "type": "any" + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, "description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "description", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" }, + "enum_of": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "name", + "required": true, + "type": "string" + }, + { + "name": "values", + "required": true, + "type": "list" + }, + { + "name": "description", + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, "extra_swaig_fields": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "extra_swaig_fields", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" @@ -74300,41 +79869,74 @@ "fillers": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "fillers", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" }, + "format": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "format", + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, "handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "handler", - "type": "class:signalwire.core.swaig_function.SWAIGFunction", - "required": true + "required": true, + "type": "class:signalwire.core.swaig_function.SWAIGFunction" } ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" }, + "integer": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "name", + "required": true, + "type": "string" + }, + { + "name": "description", + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, "is_typed_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "is_typed_handler", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" @@ -74342,27 +79944,70 @@ "name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" }, + "number": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "name", + "required": true, + "type": "string" + }, + { + "name": "description", + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, + "object": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "name", + "required": true, + "type": "string" + }, + { + "name": "object_schema", + "required": true, + "type": "dict" + }, + { + "name": "description", + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, "parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "parameters", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" @@ -74370,13 +80015,13 @@ "required": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "required", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" @@ -74384,27 +80029,46 @@ "secure": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "secure", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" }, + "string": { + "params": [ + { + "kind": "self", + "name": "self" + }, + { + "name": "name", + "required": true, + "type": "string" + }, + { + "name": "description", + "required": true, + "type": "string" + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, "wait_file": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "wait_file", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" @@ -74412,13 +80076,13 @@ "wait_file_loops": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "wait_file_loops", - "type": "int", - "required": true + "required": true, + "type": "int" } ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" @@ -74426,13 +80090,13 @@ "webhook_url": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "webhook_url", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" @@ -74445,40 +80109,11 @@ "classes": { "ToolDefinition": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "name", - "type": "string", - "required": true - }, - { - "name": "description", - "type": "string", - "required": true - }, - { - "name": "parameters", - "type": "dict", - "required": true - }, - { - "name": "handler", - "type": "class:signalwire.swaig.ToolHandler", - "required": true - } - ], - "returns": "void" - }, "get_description": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -74486,8 +80121,8 @@ "get_extra_fields": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -74495,8 +80130,8 @@ "get_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "class:signalwire.swaig.ToolHandler" @@ -74504,8 +80139,8 @@ "get_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -74513,8 +80148,8 @@ "get_parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -74522,8 +80157,8 @@ "has_handler": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -74531,8 +80166,8 @@ "is_secure": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -74540,13 +80175,13 @@ "set_extra_fields": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "extra_fields", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.swaig.ToolDefinition" @@ -74554,13 +80189,13 @@ "set_secure": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "secure", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "class:signalwire.swaig.ToolDefinition" @@ -74568,18 +80203,18 @@ "to_swaig_function": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "webhook_url", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "meta_data_token", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -74595,18 +80230,18 @@ "handle": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "args", - "type": "dict", - "required": true + "required": true, + "type": "dict" }, { "name": "raw_data", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -74623,8 +80258,8 @@ "params": [ { "name": "wire", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.swml.Codec" @@ -74632,8 +80267,8 @@ "get_value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -74650,8 +80285,8 @@ "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.swml.Codec" @@ -74668,25 +80303,16 @@ "classes": { "Document": { "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, "add_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "list>" @@ -74694,18 +80320,18 @@ "add_verb": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "verb_data", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "void" @@ -74713,23 +80339,23 @@ "add_verb_to_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "section_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "verb_data", - "type": "any", - "required": true + "required": true, + "type": "any" } ], "returns": "void" @@ -74737,13 +80363,13 @@ "get_section_verbs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "list>" @@ -74751,8 +80377,8 @@ "get_verbs": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list>" @@ -74760,13 +80386,13 @@ "has_section": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -74774,8 +80400,8 @@ "render": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -74783,8 +80409,8 @@ "render_pretty": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -74792,8 +80418,8 @@ "reset": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -74801,8 +80427,8 @@ "to_dict": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "dict" @@ -74823,8 +80449,8 @@ "params": [ { "name": "wire", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.swml.RecordDirection" @@ -74832,8 +80458,8 @@ "get_value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -74850,8 +80476,8 @@ "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.swml.RecordDirection" @@ -74871,8 +80497,8 @@ "get_value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -74889,8 +80515,8 @@ "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.swml.RecordFormat" @@ -74918,13 +80544,13 @@ "get_verb": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "any" @@ -74932,8 +80558,8 @@ "get_verb_names": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -74941,13 +80567,13 @@ "is_valid_verb": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "bool" @@ -74955,8 +80581,8 @@ "verb_count": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "int" @@ -74977,8 +80603,8 @@ "params": [ { "name": "wire", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.swml.TapDirection" @@ -74986,8 +80612,8 @@ "get_value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -75004,8 +80630,8 @@ "params": [ { "name": "name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "class:signalwire.swml.TapDirection" @@ -75025,8 +80651,8 @@ "get_value": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -75050,18 +80676,18 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "schema_path", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "schema_validation", - "type": "bool", - "required": true + "required": true, + "type": "bool" } ], "returns": "void" @@ -75069,8 +80695,8 @@ "full_validation_available": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "bool" @@ -75078,13 +80704,13 @@ "generate_method_body": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" @@ -75092,13 +80718,13 @@ "generate_method_signature": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "string" @@ -75106,8 +80732,8 @@ "get_all_verb_names": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" @@ -75115,13 +80741,13 @@ "get_verb_parameters": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -75129,13 +80755,13 @@ "get_verb_properties": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "dict" @@ -75143,13 +80769,13 @@ "get_verb_required_properties": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "list" @@ -75157,22 +80783,31 @@ "load_schema": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "any" }, + "schema_path": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "string" + }, "validate_document": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "document", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "tuple>" @@ -75180,18 +80815,18 @@ "validate_verb": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "verb_config", - "type": "dict", - "required": true + "required": true, + "type": "dict" } ], "returns": "tuple>" @@ -75203,36 +80838,36 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "verb_name", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "errors", - "type": "list", - "required": true + "required": true, + "type": "list" } ], "returns": "void" }, - "get_errors": { + "errors": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "list" }, - "get_verb_name": { + "verb_name": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "string" @@ -75247,13 +80882,13 @@ "params": [ { "name": "url", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "allow_private", - "type": "bool", - "required": true + "required": false, + "type": "bool" } ], "returns": "bool" @@ -75267,8 +80902,8 @@ "__init__": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -75276,68 +80911,113 @@ "add_directory": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "route", - "type": "string", - "required": true + "required": true, + "type": "string" }, { "name": "directory", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" }, - "get_directories": { + "allowed_extensions": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "list" + }, + "blocked_extensions": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "list" + }, + "directories": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "dict" }, - "get_port": { + "enable_cors": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "bool" + }, + "enable_directory_browsing": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" + } + ], + "returns": "bool" + }, + "max_file_size": { + "params": [ + { + "kind": "self", + "name": "self" } ], "returns": "int" }, - "get_security": { + "port": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], - "returns": "class:signalwire.core.security_config.SecurityConfig" + "returns": "int" }, "remove_directory": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" }, { "name": "route", - "type": "string", - "required": true + "required": true, + "type": "string" } ], "returns": "void" }, + "security": { + "params": [ + { + "kind": "self", + "name": "self" + } + ], + "returns": "class:signalwire.core.security_config.SecurityConfig" + }, "start": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "int" @@ -75345,8 +81025,8 @@ "stop": { "params": [ { - "name": "self", - "kind": "self" + "kind": "self", + "name": "self" } ], "returns": "void" @@ -75355,5 +81035,7 @@ } } } - } -} + }, + "tag_sha": "b48bf1d67fa0108dd242e6bc99fd06617fd547f4", + "version": "2" +} \ No newline at end of file diff --git a/port_signatures.json b/port_signatures.json index 9f4b8e3e..db0852f0 100644 --- a/port_signatures.json +++ b/port_signatures.json @@ -9,7 +9,7 @@ { "name": "args", "type": "list", - "required": true + "required": false }, { "name": "kwargs", @@ -568,6 +568,11 @@ "name": "agent", "type": "class:signalwire.core.agent_base.AgentBase", "required": true + }, + { + "name": "route", + "type": "string", + "required": false } ], "returns": "class:signalwire.agent_server.AgentServer" @@ -652,7 +657,7 @@ { "name": "route", "type": "string", - "required": true + "required": false } ], "returns": "class:signalwire.agent_server.AgentServer" @@ -676,6 +681,16 @@ { "name": "self", "kind": "self" + }, + { + "name": "route", + "type": "string", + "required": false + }, + { + "name": "auto_map", + "type": "bool", + "required": false } ], "returns": "class:signalwire.agent_server.AgentServer" @@ -747,37 +762,37 @@ { "name": "name", "type": "string", - "required": true + "required": false }, { "name": "route", "type": "string", - "required": true + "required": false }, { "name": "system_prompt", "type": "string", - "required": true + "required": false }, { "name": "voice_id", "type": "string", - "required": true + "required": false }, { "name": "temperature", "type": "float", - "required": true + "required": false }, { "name": "top_p", "type": "float", - "required": true + "required": false }, { "name": "max_tokens", "type": "int", - "required": true + "required": false } ], "returns": "void" @@ -841,17 +856,17 @@ { "name": "temperature", "type": "float", - "required": true + "required": false }, { "name": "top_p", "type": "float", - "required": true + "required": false }, { "name": "max_tokens", "type": "int", - "required": true + "required": false } ], "returns": "class:signalwire.agents.bedrock.BedrockAgent" @@ -925,15 +940,6 @@ } ], "returns": "class:signalwire.agents.bedrock.BedrockAgent" - }, - "to_string": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" } } } @@ -1433,6 +1439,10 @@ "params": [], "returns": "class:signalwire.cli.simulation.ServerlessSimulator" }, + "lambda": { + "params": [], + "returns": "class:signalwire.cli.simulation.ServerlessSimulator" + }, "value_of": { "params": [ { @@ -1488,6 +1498,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "agent", + "type": "any", + "required": false } ], "returns": "void" @@ -1561,6 +1576,11 @@ "name": "body", "type": "string", "required": true + }, + { + "name": "bullets", + "type": "list", + "required": false } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -1686,6 +1706,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "agent", + "type": "any", + "required": false } ], "returns": "void" @@ -1996,6 +2021,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "env", + "type": "class:signalwire.runtime.EnvProvider", + "required": false } ], "returns": "string" @@ -2471,6 +2501,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "optional", + "type": "bool", + "required": false } ], "returns": "callable>,class:signalwire.core.auth_handler.AuthHandler>" @@ -2527,6 +2562,88 @@ "returns": "class:signalwire.core.security_config.SecurityConfig" } } + }, + "BasicCredentials": { + "methods": { + "__init__": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "username", + "type": "string", + "required": true + }, + { + "name": "password", + "type": "string", + "required": true + } + ], + "returns": "void" + }, + "password": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "string" + }, + "username": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "string" + } + } + }, + "BearerCredentials": { + "methods": { + "__init__": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "scheme", + "type": "string", + "required": true + }, + { + "name": "credentials", + "type": "string", + "required": true + } + ], + "returns": "void" + }, + "credentials": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "string" + }, + "scheme": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "string" + } + } } } }, @@ -2539,6 +2656,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "config_paths", + "type": "list", + "required": false } ], "returns": "void" @@ -2549,6 +2671,11 @@ "name": "service_name", "type": "string", "required": true + }, + { + "name": "additional_paths", + "type": "list", + "required": false } ], "returns": "string" @@ -2563,6 +2690,11 @@ "name": "key_path", "type": "string", "required": true + }, + { + "name": "default_value", + "type": "any", + "required": false } ], "returns": "any" @@ -2613,6 +2745,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "env_prefix", + "type": "string", + "required": false } ], "returns": "dict" @@ -2627,6 +2764,11 @@ "name": "value", "type": "any", "required": true + }, + { + "name": "max_depth", + "type": "int", + "required": false } ], "returns": "any" @@ -2748,6 +2890,31 @@ "name": "step_name", "type": "string", "required": true + }, + { + "name": "task", + "type": "string", + "required": false + }, + { + "name": "bullets", + "type": "list", + "required": false + }, + { + "name": "criteria", + "type": "string", + "required": false + }, + { + "name": "functions", + "type": "any", + "required": false + }, + { + "name": "valid_steps", + "type": "list", + "required": false } ], "returns": "class:signalwire.core.contexts.Step" @@ -3099,6 +3266,26 @@ { "name": "self", "kind": "self" + }, + { + "name": "output_key", + "type": "string", + "required": false + }, + { + "name": "completion_action", + "type": "string", + "required": false + }, + { + "name": "prompt", + "type": "string", + "required": false + }, + { + "name": "isolated", + "type": "bool", + "required": false } ], "returns": "void" @@ -3118,6 +3305,31 @@ "name": "question", "type": "string", "required": true + }, + { + "name": "type", + "type": "string", + "required": false + }, + { + "name": "confirm", + "type": "bool", + "required": false + }, + { + "name": "prompt", + "type": "string", + "required": false + }, + { + "name": "functions", + "type": "list", + "required": false + }, + { + "name": "isolated", + "type": "bool", + "required": false } ], "returns": "class:signalwire.core.contexts.GatherInfo" @@ -3168,6 +3380,31 @@ "name": "question", "type": "string", "required": true + }, + { + "name": "type", + "type": "string", + "required": false + }, + { + "name": "confirm", + "type": "bool", + "required": false + }, + { + "name": "prompt", + "type": "string", + "required": false + }, + { + "name": "functions", + "type": "list", + "required": false + }, + { + "name": "isolated", + "type": "bool", + "required": false } ], "returns": "void" @@ -3296,6 +3533,31 @@ "name": "question", "type": "string", "required": true + }, + { + "name": "type", + "type": "string", + "required": false + }, + { + "name": "confirm", + "type": "bool", + "required": false + }, + { + "name": "prompt", + "type": "string", + "required": false + }, + { + "name": "functions", + "type": "list", + "required": false + }, + { + "name": "isolated", + "type": "bool", + "required": false } ], "returns": "class:signalwire.core.contexts.Step" @@ -3365,22 +3627,22 @@ { "name": "output_key", "type": "string", - "required": true + "required": false }, { "name": "completion_action", "type": "string", - "required": true + "required": false }, { "name": "prompt", "type": "string", - "required": true + "required": false }, { "name": "isolated", "type": "bool", - "required": true + "required": false } ], "returns": "class:signalwire.core.contexts.Step" @@ -3579,20 +3841,6 @@ ], "returns": "void" }, - "body": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "data", - "type": "dict", - "required": true - } - ], - "returns": "class:signalwire.core.data_map.DataMap" - }, "description": { "params": [ { @@ -3641,6 +3889,11 @@ "name": "output", "type": "class:signalwire.core.function_result.FunctionResult", "required": true + }, + { + "name": "nomatch_output", + "type": "class:signalwire.core.function_result.FunctionResult", + "required": false } ], "returns": "class:signalwire.core.data_map.DataMap" @@ -3721,6 +3974,16 @@ "name": "description", "type": "string", "required": true + }, + { + "name": "required", + "type": "bool", + "required": false + }, + { + "name": "enum_values", + "type": "list", + "required": false } ], "returns": "class:signalwire.core.data_map.DataMap" @@ -3777,6 +4040,11 @@ "name": "url", "type": "string", "required": true + }, + { + "name": "headers", + "type": "dict", + "required": false } ], "returns": "class:signalwire.core.data_map.DataMap" @@ -3817,6 +4085,16 @@ { "name": "self", "kind": "self" + }, + { + "name": "response", + "type": "string", + "required": false + }, + { + "name": "post_process", + "type": "bool", + "required": false } ], "returns": "void" @@ -3892,6 +4170,11 @@ "name": "is_final", "type": "bool", "required": true + }, + { + "name": "from", + "type": "string", + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3941,12 +4224,12 @@ { "name": "card_type", "type": "string", - "required": true + "required": false }, { "name": "error_type", "type": "string", - "required": true + "required": false } ], "returns": "dict" @@ -3960,7 +4243,7 @@ { "name": "enabled", "type": "bool", - "required": true + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3974,7 +4257,7 @@ { "name": "enabled", "type": "bool", - "required": true + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -3994,6 +4277,16 @@ "name": "params", "type": "dict", "required": true + }, + { + "name": "call_id", + "type": "string", + "required": false + }, + { + "name": "node_id", + "type": "string", + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4008,6 +4301,11 @@ "name": "swml_content", "type": "any", "required": true + }, + { + "name": "transfer", + "type": "bool", + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4039,7 +4337,7 @@ { "name": "timeout", "type": "int", - "required": true + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4058,87 +4356,87 @@ { "name": "muted", "type": "bool", - "required": true + "required": false }, { "name": "beep", "type": "string", - "required": true + "required": false }, { "name": "start_on_enter", "type": "bool", - "required": true + "required": false }, { "name": "end_on_exit", "type": "bool", - "required": true + "required": false }, { "name": "wait_url", "type": "string", - "required": true + "required": false }, { "name": "max_participants", "type": "int", - "required": true + "required": false }, { "name": "record", "type": "string", - "required": true + "required": false }, { "name": "region", "type": "string", - "required": true + "required": false }, { "name": "trim", "type": "string", - "required": true + "required": false }, { "name": "coach", "type": "string", - "required": true + "required": false }, { "name": "status_callback_event", "type": "string", - "required": true + "required": false }, { "name": "status_callback", "type": "string", - "required": true + "required": false }, { "name": "status_callback_method", "type": "string", - "required": true + "required": false }, { "name": "recording_status_callback", "type": "string", - "required": true + "required": false }, { "name": "recording_status_callback_method", "type": "string", - "required": true + "required": false }, { "name": "recording_status_callback_event", "type": "string", - "required": true + "required": false }, { "name": "result", "type": "any", - "required": true + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4171,92 +4469,92 @@ { "name": "input_method", "type": "string", - "required": true + "required": false }, { "name": "status_url", "type": "string", - "required": true + "required": false }, { "name": "payment_method", "type": "string", - "required": true + "required": false }, { "name": "timeout", "type": "int", - "required": true + "required": false }, { "name": "max_attempts", "type": "int", - "required": true + "required": false }, { "name": "security_code", "type": "bool", - "required": true + "required": false }, { "name": "postal_code", "type": "any", - "required": true + "required": false }, { "name": "min_postal_code_length", "type": "int", - "required": true + "required": false }, { "name": "token_type", "type": "string", - "required": true + "required": false }, { "name": "charge_amount", "type": "string", - "required": true + "required": false }, { "name": "currency", "type": "string", - "required": true + "required": false }, { "name": "language", "type": "string", - "required": true + "required": false }, { "name": "voice", "type": "string", - "required": true + "required": false }, { "name": "description", "type": "string", - "required": true + "required": false }, { "name": "valid_card_types", "type": "string", - "required": true + "required": false }, { "name": "parameters", "type": "list>", - "required": true + "required": false }, { "name": "prompts", "type": "list>", - "required": true + "required": false }, { "name": "ai_response", "type": "string", - "required": true + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4271,6 +4569,11 @@ "name": "filename", "type": "string", "required": true + }, + { + "name": "wait", + "type": "bool", + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4284,57 +4587,57 @@ { "name": "control_id", "type": "string", - "required": true + "required": false }, { "name": "stereo", "type": "bool", - "required": true + "required": false }, { "name": "format", "type": "class:signalwire.swml.RecordFormat", - "required": true + "required": false }, { "name": "direction", "type": "class:signalwire.swml.RecordDirection", - "required": true + "required": false }, { "name": "terminators", "type": "string", - "required": true + "required": false }, { "name": "beep", "type": "bool", - "required": true + "required": false }, { "name": "input_sensitivity", "type": "float", - "required": true + "required": false }, { "name": "initial_timeout", "type": "float", - "required": true + "required": false }, { "name": "end_silence_timeout", "type": "float", - "required": true + "required": false }, { "name": "max_length", "type": "float", - "required": true + "required": false }, { "name": "status_url", "type": "string", - "required": true + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4376,7 +4679,7 @@ { "name": "summary", "type": "bool", - "required": true + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4400,7 +4703,7 @@ { "name": "role", "type": "string", - "required": true + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4443,7 +4746,7 @@ { "name": "device_type", "type": "string", - "required": true + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4481,22 +4784,22 @@ { "name": "body", "type": "string", - "required": true + "required": false }, { "name": "media", "type": "list", - "required": true + "required": false }, { "name": "tags", "type": "list", - "required": true + "required": false }, { "name": "region", "type": "string", - "required": true + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4622,6 +4925,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "control_id", + "type": "string", + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4631,6 +4939,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "control_id", + "type": "string", + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4645,6 +4958,21 @@ "name": "system_prompt", "type": "string", "required": true + }, + { + "name": "user_prompt", + "type": "string", + "required": false + }, + { + "name": "consolidate", + "type": "bool", + "required": false + }, + { + "name": "full_reset", + "type": "bool", + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4696,7 +5024,7 @@ { "name": "is_final", "type": "bool", - "required": true + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4729,27 +5057,27 @@ { "name": "control_id", "type": "string", - "required": true + "required": false }, { "name": "direction", "type": "class:signalwire.swml.TapDirection", - "required": true + "required": false }, { "name": "codec", "type": "class:signalwire.swml.Codec", - "required": true + "required": false }, { "name": "rtp_ptime", "type": "int", - "required": true + "required": false }, { "name": "status_url", "type": "string", - "required": true + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4819,6 +5147,21 @@ { "name": "self", "kind": "self" + }, + { + "name": "enabled", + "type": "bool", + "required": false + }, + { + "name": "timeout", + "type": "int", + "required": false + }, + { + "name": "answer_first", + "type": "bool", + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -4881,16 +5224,6 @@ "params": [], "returns": "class:signalwire.logging.Logger" }, - "get_logger": { - "params": [ - { - "name": "clazz", - "type": "any", - "required": true - } - ], - "returns": "class:signalwire.logging.Logger" - }, "info": { "params": [ { @@ -4955,6 +5288,16 @@ "params": [], "returns": "string" }, + "get_logger": { + "params": [ + { + "name": "name", + "type": "string", + "required": true + } + ], + "returns": "any" + }, "reset_logging_configuration": { "params": [], "returns": "void" @@ -4962,12 +5305,12 @@ "strip_control_chars": { "params": [ { - "name": "value", - "type": "string", + "name": "event_dict", + "type": "dict", "required": true } ], - "returns": "string" + "returns": "dict" } } }, @@ -5065,27 +5408,27 @@ { "name": "speech_fillers", "type": "list", - "required": true + "required": false }, { "name": "function_fillers", "type": "list", - "required": true + "required": false }, { "name": "engine", "type": "string", - "required": true + "required": false }, { "name": "model", "type": "string", - "required": true + "required": false }, { "name": "params", "type": "dict", - "required": true + "required": false } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -5100,6 +5443,21 @@ "name": "url", "type": "string", "required": true + }, + { + "name": "headers", + "type": "dict", + "required": false + }, + { + "name": "resources", + "type": "bool", + "required": false + }, + { + "name": "resource_vars", + "type": "dict", + "required": false } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -5128,7 +5486,7 @@ { "name": "ignore_case", "type": "bool", - "required": true + "required": false } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -5152,7 +5510,7 @@ { "name": "ignore_case", "type": "bool", - "required": true + "required": false } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -5162,6 +5520,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "level", + "type": "int", + "required": false } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -5476,6 +5839,11 @@ "name": "body", "type": "string", "required": true + }, + { + "name": "bullets", + "type": "list", + "required": false } ], "returns": "class:signalwire.core.agent_base.AgentBase" @@ -5734,7 +6102,7 @@ { "name": "raw_data", "type": "dict", - "required": true + "required": false } ], "returns": "class:signalwire.core.function_result.FunctionResult" @@ -5811,12 +6179,12 @@ { "name": "request_data", "type": "dict", - "required": true + "required": false }, { "name": "callback_path", "type": "string", - "required": true + "required": false } ], "returns": "dict" @@ -5850,6 +6218,11 @@ "name": "callback", "type": "callable,dict>,string>", "required": true + }, + { + "name": "path", + "type": "string", + "required": false } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -5922,6 +6295,31 @@ "name": "title", "type": "string", "required": true + }, + { + "name": "body", + "type": "string", + "required": false + }, + { + "name": "bullets", + "type": "list", + "required": false + }, + { + "name": "numbered", + "type": "bool", + "required": false + }, + { + "name": "numbered_bullets", + "type": "bool", + "required": false + }, + { + "name": "subsections", + "type": "list>", + "required": false } ], "returns": "class:signalwire.core.pom_builder.PomBuilder" @@ -5946,6 +6344,11 @@ "name": "body", "type": "string", "required": true + }, + { + "name": "bullets", + "type": "list", + "required": false } ], "returns": "class:signalwire.core.pom_builder.PomBuilder" @@ -5964,17 +6367,17 @@ { "name": "body", "type": "string", - "required": true + "required": false }, { "name": "bullet", "type": "string", - "required": true + "required": false }, { "name": "bullets", "type": "list", - "required": true + "required": false } ], "returns": "class:signalwire.core.pom_builder.PomBuilder" @@ -6984,15 +7387,6 @@ ], "returns": "any" }, - "context": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "any" - }, "lang": { "params": [ { @@ -7020,24 +7414,6 @@ ], "returns": "any" }, - "step": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "any" - }, - "step_index": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "any" - }, "timestamp": { "params": [ { @@ -7578,6 +7954,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "call_id", + "type": "string", + "required": false } ], "returns": "string" @@ -7597,6 +7978,11 @@ "name": "call_id", "type": "string", "required": true + }, + { + "name": "expiry_seconds", + "type": "int", + "required": false } ], "returns": "string" @@ -7887,6 +8273,16 @@ { "name": "self", "kind": "self" + }, + { + "name": "config_file", + "type": "string", + "required": false + }, + { + "name": "service_name", + "type": "string", + "required": false } ], "returns": "void" @@ -7995,6 +8391,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "is_https", + "type": "bool", + "required": false } ], "returns": "dict" @@ -8642,6 +9043,284 @@ } } }, + "SwaigAction": { + "methods": { + "add_dynamic_hints": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "back_to_back_functions": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "change_context": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "change_step": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "clear_dynamic_hints": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "context_switch": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "end_of_speech_timeout": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "extensive_data": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "functions_on_speaker_timeout": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "hangup": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "hold": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "playback_bg": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "replace_in_history": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "say": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "set_global_data": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "set_meta_data": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "settings": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "speech_event_timeout": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "stop": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "stop_playback_bg": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "toggle_functions": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "transfer": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "unset_global_data": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "unset_meta_data": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "user_event": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "user_input": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "wait_for_user": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + } + } + }, + "SwaigResponse": { + "methods": { + "action": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "post_process": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + }, + "response": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "any" + } + } + }, "TransferAction": { "methods": { "dest": { @@ -8707,7 +9386,7 @@ { "name": "raw_data", "type": "dict", - "required": true + "required": false } ], "returns": "dict" @@ -8740,6 +9419,21 @@ "name": "base_url", "type": "string", "required": true + }, + { + "name": "token", + "type": "string", + "required": false + }, + { + "name": "call_id", + "type": "string", + "required": false + }, + { + "name": "include_auth", + "type": "bool", + "required": false } ], "returns": "dict" @@ -9173,7 +9867,7 @@ "required": true } ], - "returns": "class:signalwire.core.swml_builder.SWMLBuilder" + "returns": "class:Self" }, "ai": { "params": [ @@ -9187,16 +9881,26 @@ "required": true } ], - "returns": "class:signalwire.core.swml_builder.SWMLBuilder" + "returns": "class:Self" }, "answer": { "params": [ { "name": "self", "kind": "self" + }, + { + "name": "max_duration", + "type": "int", + "required": false + }, + { + "name": "codecs", + "type": "string", + "required": false } ], - "returns": "class:signalwire.core.swml_builder.SWMLBuilder" + "returns": "class:Self" }, "build": { "params": [ @@ -9212,9 +9916,14 @@ { "name": "self", "kind": "self" + }, + { + "name": "reason", + "type": "string", + "required": false } ], - "returns": "class:signalwire.core.swml_builder.SWMLBuilder" + "returns": "class:Self" }, "play": { "params": [ @@ -9228,7 +9937,7 @@ "required": true } ], - "returns": "class:signalwire.core.swml_builder.SWMLBuilder" + "returns": "class:Self" }, "render": { "params": [ @@ -9246,7 +9955,7 @@ "kind": "self" } ], - "returns": "class:signalwire.core.swml_builder.SWMLBuilder" + "returns": "class:Self" }, "say": { "params": [ @@ -9258,9 +9967,29 @@ "name": "text", "type": "string", "required": true + }, + { + "name": "voice", + "type": "string", + "required": false + }, + { + "name": "language", + "type": "string", + "required": false + }, + { + "name": "gender", + "type": "string", + "required": false + }, + { + "name": "volume", + "type": "float", + "required": false } ], - "returns": "class:signalwire.core.swml_builder.SWMLBuilder" + "returns": "class:Self" }, "sleep_verb": { "params": [ @@ -9274,7 +10003,7 @@ "required": true } ], - "returns": "class:signalwire.core.swml_builder.SWMLBuilder" + "returns": "class:Self" }, "verb": { "params": [ @@ -9293,7 +10022,7 @@ "required": true } ], - "returns": "class:signalwire.core.swml_builder.SWMLBuilder" + "returns": "class:Self" }, "service": { "params": [ @@ -9473,6 +10202,16 @@ "name": "service", "type": "class:signalwire.core.swml_service.SWMLService", "required": true + }, + { + "name": "actions", + "type": "list>", + "required": false + }, + { + "name": "format", + "type": "string", + "required": false } ], "returns": "string" @@ -9509,42 +10248,42 @@ { "name": "route", "type": "string", - "required": true + "required": false }, { "name": "host", "type": "string", - "required": true + "required": false }, { "name": "port", "type": "int", - "required": true + "required": false }, { "name": "auth_user", "type": "string", - "required": true + "required": false }, { "name": "auth_password", "type": "string", - "required": true + "required": false }, { "name": "schema_path", "type": "string", - "required": true + "required": false }, { "name": "config_file", "type": "string", - "required": true + "required": false }, { "name": "schema_validation", "type": "bool", - "required": true + "required": false } ], "returns": "void" @@ -9694,34 +10433,6 @@ ], "returns": "class:signalwire.core.swml_service.SWMLService" }, - "define_tool": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "tool_def", - "type": "class:signalwire.swaig.ToolDefinition", - "required": true - } - ], - "returns": "class:signalwire.core.swml_service.SWMLService" - }, - "define_tools": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "tool_defs", - "type": "list", - "required": true - } - ], - "returns": "class:signalwire.core.swml_service.SWMLService" - }, "denoise": { "params": [ { @@ -9797,15 +10508,6 @@ ], "returns": "bool" }, - "get_all_functions": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "dict" - }, "get_auth_password": { "params": [ { @@ -9860,20 +10562,6 @@ ], "returns": "class:signalwire.rest.namespaces.datasphere_types_generated.Document" }, - "get_function": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "name", - "type": "string", - "required": true - } - ], - "returns": "class:signalwire.swaig.ToolDefinition" - }, "get_registered_swaig_functions": { "params": [ { @@ -9946,27 +10634,18 @@ "returns": "tuple,string>" }, "hangup": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "class:signalwire.core.swml_service.SWMLService" - }, - "has_function": { "params": [ { "name": "self", "kind": "self" }, { - "name": "name", - "type": "string", - "required": true + "name": "params", + "type": "dict", + "required": false } ], - "returns": "bool" + "returns": "class:signalwire.core.swml_service.SWMLService" }, "is_schema_validation": { "params": [ @@ -10070,30 +10749,6 @@ ], "returns": "class:signalwire.core.swml_service.SWMLService" }, - "on_function_call": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "func_name", - "type": "string", - "required": true - }, - { - "name": "args", - "type": "dict", - "required": true - }, - { - "name": "raw_data", - "type": "dict", - "required": true - } - ], - "returns": "class:signalwire.core.function_result.FunctionResult" - }, "on_request": { "params": [ { @@ -10103,31 +10758,12 @@ { "name": "request_data", "type": "dict", - "required": true - }, - { - "name": "callback_path", - "type": "string", - "required": true - } - ], - "returns": "dict" - }, - "on_swml_request": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "request_data", - "type": "dict", - "required": true + "required": false }, { "name": "callback_path", "type": "string", - "required": true + "required": false } ], "returns": "dict" @@ -10226,20 +10862,11 @@ "name": "callback", "type": "callable,dict>,string>", "required": true - } - ], - "returns": "class:signalwire.core.swml_service.SWMLService" - }, - "register_swaig_function": { - "params": [ - { - "name": "self", - "kind": "self" }, { - "name": "swaig_func", - "type": "dict", - "required": true + "name": "path", + "type": "string", + "required": false } ], "returns": "class:signalwire.core.swml_service.SWMLService" @@ -10258,20 +10885,6 @@ ], "returns": "class:signalwire.core.swml_service.SWMLService" }, - "remove_function": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "name", - "type": "string", - "required": true - } - ], - "returns": "bool" - }, "render_document": { "params": [ { @@ -10550,42 +11163,32 @@ ], "returns": "class:signalwire.core.swml_service.SWMLService" }, - "validate_basic_auth": { + "verb_registry": { "params": [ { "name": "self", "kind": "self" - }, - { - "name": "username", - "type": "string", - "required": true - }, - { - "name": "password", - "type": "string", - "required": true } ], - "returns": "bool" + "returns": "class:signalwire.core.swml_handler.VerbHandlerRegistry" }, - "verb_registry": { + "security": { "params": [ { "name": "self", "kind": "self" } ], - "returns": "class:signalwire.core.swml_handler.VerbHandlerRegistry" + "returns": "class:signalwire.core.security_config.SecurityConfig" }, - "security": { + "domain": { "params": [ { "name": "self", "kind": "self" } ], - "returns": "class:signalwire.core.security_config.SecurityConfig" + "returns": "string" }, "host": { "params": [ @@ -10622,6 +11225,33 @@ } ], "returns": "string" + }, + "ssl_cert_path": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "string" + }, + "ssl_key_path": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "string" + }, + "ssl_enabled": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "bool" } } } @@ -18295,6 +18925,26 @@ "name": "title", "type": "string", "required": true + }, + { + "name": "body", + "type": "string", + "required": false + }, + { + "name": "bullets", + "type": "list", + "required": false + }, + { + "name": "numbered", + "type": "bool", + "required": false + }, + { + "name": "numbered_bullets", + "type": "bool", + "required": false } ], "returns": "class:signalwire.core.swml_verbs_generated.Section" @@ -18430,6 +19080,26 @@ "name": "title", "type": "string", "required": true + }, + { + "name": "body", + "type": "string", + "required": false + }, + { + "name": "bullets", + "type": "list", + "required": false + }, + { + "name": "numbered", + "type": "bool", + "required": false + }, + { + "name": "numbered_bullets", + "type": "bool", + "required": false } ], "returns": "void" @@ -18472,6 +19142,26 @@ "name": "title", "type": "string", "required": true + }, + { + "name": "body", + "type": "string", + "required": false + }, + { + "name": "bullets", + "type": "list", + "required": false + }, + { + "name": "numbered", + "type": "bool", + "required": false + }, + { + "name": "numbered_bullets", + "type": "bool", + "required": false } ], "returns": "class:signalwire.core.swml_verbs_generated.Section" @@ -18481,6 +19171,16 @@ { "name": "self", "kind": "self" + }, + { + "name": "level", + "type": "int", + "required": false + }, + { + "name": "section_number", + "type": "list", + "required": false } ], "returns": "string" @@ -18490,6 +19190,16 @@ { "name": "self", "kind": "self" + }, + { + "name": "indent", + "type": "int", + "required": false + }, + { + "name": "section_number", + "type": "list", + "required": false } ], "returns": "string" @@ -18585,6 +19295,31 @@ "name": "amenities", "type": "list>", "required": true + }, + { + "name": "route", + "type": "string", + "required": false + }, + { + "name": "port", + "type": "int", + "required": false + }, + { + "name": "services", + "type": "list", + "required": false + }, + { + "name": "hours_of_operation", + "type": "dict", + "required": false + }, + { + "name": "special_instructions", + "type": "list", + "required": false } ], "returns": "void" @@ -18775,6 +19510,26 @@ "name": "faqs", "type": "list>", "required": true + }, + { + "name": "route", + "type": "string", + "required": false + }, + { + "name": "port", + "type": "int", + "required": false + }, + { + "name": "suggest_related", + "type": "bool", + "required": false + }, + { + "name": "persona", + "type": "string", + "required": false } ], "returns": "void" @@ -18943,6 +19698,16 @@ "name": "questions", "type": "list>", "required": true + }, + { + "name": "route", + "type": "string", + "required": false + }, + { + "name": "port", + "type": "int", + "required": false } ], "returns": "void" @@ -18965,17 +19730,17 @@ { "name": "request_data", "type": "dict", - "required": true + "required": false }, { "name": "query_params", "type": "dict", - "required": true + "required": false }, { "name": "headers", "type": "dict", - "required": true + "required": false } ], "returns": "dict" @@ -18991,6 +19756,16 @@ "name": "question_text", "type": "string", "required": true + }, + { + "name": "confirm", + "type": "bool", + "required": false + }, + { + "name": "prompt_add", + "type": "string", + "required": false } ], "returns": "dict" @@ -19125,6 +19900,16 @@ "name": "departments", "type": "dict>", "required": true + }, + { + "name": "route", + "type": "string", + "required": false + }, + { + "name": "port", + "type": "int", + "required": false } ], "returns": "void" @@ -19232,6 +20017,41 @@ "name": "questions", "type": "list>", "required": true + }, + { + "name": "completion_message", + "type": "string", + "required": false + }, + { + "name": "route", + "type": "string", + "required": false + }, + { + "name": "port", + "type": "int", + "required": false + }, + { + "name": "survey_name", + "type": "string", + "required": false + }, + { + "name": "brand_name", + "type": "string", + "required": false + }, + { + "name": "max_retries", + "type": "int", + "required": false + }, + { + "name": "introduction", + "type": "string", + "required": false } ], "returns": "void" @@ -19577,15 +20397,6 @@ ], "returns": "void" }, - "to_string": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" - }, "update_state": { "params": [ { @@ -19605,11 +20416,30 @@ ], "returns": "void" }, + "wait": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "timeout", + "type": "float", + "required": false + } + ], + "returns": "class:signalwire.relay.event.RelayEvent" + }, "wait_for_completion": { "params": [ { "name": "self", "kind": "self" + }, + { + "name": "timeout_ms", + "type": "int", + "required": false } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -19632,6 +20462,15 @@ ], "returns": "class:signalwire.relay.call.Call" }, + "completed": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "bool" + }, "control_id": { "params": [ { @@ -19660,6 +20499,21 @@ "name": "node_id", "type": "string", "required": true + }, + { + "name": "project_id", + "type": "string", + "required": false + }, + { + "name": "context", + "type": "string", + "required": false + }, + { + "name": "segment_id", + "type": "string", + "required": false } ], "returns": "void" @@ -19715,7 +20569,7 @@ { "name": "options", "type": "dict", - "required": true + "required": false } ], "returns": "dict" @@ -19772,6 +20626,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "realm", + "type": "string", + "required": false } ], "returns": "dict" @@ -19875,6 +20734,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "options", + "type": "dict", + "required": false } ], "returns": "class:signalwire.relay.call.Action" @@ -19884,6 +20748,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "options", + "type": "dict", + "required": false } ], "returns": "class:signalwire.relay.call.Action" @@ -19893,6 +20762,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "options", + "type": "dict", + "required": false } ], "returns": "class:signalwire.relay.call.Action" @@ -19990,6 +20864,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "reason", + "type": "string", + "required": false } ], "returns": "dict" @@ -20045,7 +20924,7 @@ { "name": "options", "type": "dict", - "required": true + "required": false } ], "returns": "dict" @@ -20101,7 +20980,7 @@ { "name": "options", "type": "dict", - "required": true + "required": false } ], "returns": "dict" @@ -20120,6 +20999,15 @@ ], "returns": "void" }, + "pass_": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "dict" + }, "pay": { "params": [ { @@ -20187,6 +21075,11 @@ "name": "url", "type": "string", "required": true + }, + { + "name": "options", + "type": "dict", + "required": false } ], "returns": "class:signalwire.relay.call.Action" @@ -20201,6 +21094,11 @@ "name": "name", "type": "string", "required": true + }, + { + "name": "options", + "type": "dict", + "required": false } ], "returns": "class:signalwire.relay.call.Action" @@ -20229,6 +21127,11 @@ "name": "text", "type": "string", "required": true + }, + { + "name": "options", + "type": "dict", + "required": false } ], "returns": "class:signalwire.relay.call.Action" @@ -20248,6 +21151,11 @@ "name": "collect_config", "type": "dict", "required": true + }, + { + "name": "options", + "type": "dict", + "required": false } ], "returns": "class:signalwire.relay.call.Action" @@ -20267,6 +21175,11 @@ "name": "collect_config", "type": "dict", "required": true + }, + { + "name": "options", + "type": "dict", + "required": false } ], "returns": "class:signalwire.relay.call.Action" @@ -20375,7 +21288,7 @@ { "name": "options", "type": "dict", - "required": true + "required": false } ], "returns": "dict" @@ -20512,15 +21425,6 @@ ], "returns": "class:signalwire.relay.call.Action" }, - "to_string": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" - }, "transcribe": { "params": [ { @@ -20567,7 +21471,7 @@ { "name": "event", "type": "string", - "required": true + "required": false } ], "returns": "dict" @@ -20582,6 +21486,11 @@ "name": "target_state", "type": "string", "required": true + }, + { + "name": "timeout_ms", + "type": "int", + "required": false } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -20591,6 +21500,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "timeout", + "type": "float", + "required": false } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -20600,6 +21514,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "timeout", + "type": "float", + "required": false } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -20609,6 +21528,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "timeout", + "type": "float", + "required": false } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -20618,6 +21542,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "timeout", + "type": "float", + "required": false } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -20735,185 +21664,185 @@ { "name": "behavior", "type": "string", + "required": false + } + ], + "returns": "void" + }, + "resume": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "void" + }, + "start_input_timers": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "void" + }, + "stop": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "void" + }, + "volume": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "volume_db", + "type": "float", + "required": true + } + ], + "returns": "void" + } + } + }, + "DetectAction": { + "methods": { + "__init__": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "control_id", + "type": "string", + "required": true + }, + { + "name": "call", + "type": "class:signalwire.relay.call.Call", "required": true } ], "returns": "void" }, - "resume": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, - "start_input_timers": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, - "stop": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - }, - "volume": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "volume_db", - "type": "float", - "required": true - } - ], - "returns": "void" - } - } - }, - "DetectAction": { - "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "control_id", - "type": "string", - "required": true - }, - { - "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true - } - ], - "returns": "void" - }, - "stop": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - } - } - }, - "FaxAction": { - "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "control_id", - "type": "string", - "required": true - }, - { - "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true - } - ], - "returns": "void" - }, - "stop": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - } - } - }, - "PayAction": { - "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "control_id", - "type": "string", - "required": true - }, - { - "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true - } - ], - "returns": "void" - }, - "stop": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "void" - } - } - }, - "PlayAction": { - "methods": { - "__init__": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "control_id", - "type": "string", - "required": true - }, - { - "name": "call", - "type": "class:signalwire.relay.call.Call", - "required": true - } - ], - "returns": "void" - }, - "pause": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "behavior", - "type": "string", - "required": true - } - ], - "returns": "void" - }, + "stop": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "void" + } + } + }, + "FaxAction": { + "methods": { + "__init__": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "control_id", + "type": "string", + "required": true + }, + { + "name": "call", + "type": "class:signalwire.relay.call.Call", + "required": true + } + ], + "returns": "void" + }, + "stop": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "void" + } + } + }, + "PayAction": { + "methods": { + "__init__": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "control_id", + "type": "string", + "required": true + }, + { + "name": "call", + "type": "class:signalwire.relay.call.Call", + "required": true + } + ], + "returns": "void" + }, + "stop": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "void" + } + } + }, + "PlayAction": { + "methods": { + "__init__": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "control_id", + "type": "string", + "required": true + }, + { + "name": "call", + "type": "class:signalwire.relay.call.Call", + "required": true + } + ], + "returns": "void" + }, + "pause": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "behavior", + "type": "string", + "required": false + } + ], + "returns": "void" + }, "resume": { "params": [ { @@ -20978,7 +21907,7 @@ { "name": "behavior", "type": "string", - "required": true + "required": false } ], "returns": "void" @@ -21251,6 +22180,11 @@ { "name": "self", "kind": "self" + }, + { + "name": "timeout_ms", + "type": "int", + "required": false } ], "returns": "void" @@ -21265,6 +22199,16 @@ "name": "devices", "type": "list>>", "required": true + }, + { + "name": "options", + "type": "dict", + "required": false + }, + { + "name": "timeout", + "type": "int", + "required": false } ], "returns": "class:signalwire.relay.call.Call" @@ -21419,6 +22363,11 @@ "name": "media_urls", "type": "list", "required": true + }, + { + "name": "tags", + "type": "list", + "required": false } ], "returns": "class:signalwire.relay.message.Message" @@ -21554,20 +22503,6 @@ "classes": { "Device": { "methods": { - "equals": { - "params": [ - { - "name": "self", - "kind": "self" - }, - { - "name": "o", - "type": "any", - "required": true - } - ], - "returns": "bool" - }, "get_params": { "params": [ { @@ -21586,15 +22521,6 @@ ], "returns": "string" }, - "hash_code": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "int" - }, "of": { "params": [ { @@ -21648,15 +22574,6 @@ } ], "returns": "dict" - }, - "to_string": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" } } } @@ -23450,6 +24367,11 @@ "name": "key", "type": "string", "required": true + }, + { + "name": "default_value", + "type": "string", + "required": false } ], "returns": "string" @@ -23471,15 +24393,6 @@ } ], "returns": "float" - }, - "to_string": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" } } }, @@ -23912,34 +24825,44 @@ ], "returns": "void" }, - "to_string": { + "update_from_event": { "params": [ { "name": "self", "kind": "self" + }, + { + "name": "event", + "type": "class:signalwire.relay.event.RelayEvent", + "required": true } ], - "returns": "string" + "returns": "void" }, - "update_from_event": { + "wait": { "params": [ { "name": "self", "kind": "self" }, { - "name": "event", - "type": "class:signalwire.relay.event.RelayEvent", - "required": true + "name": "timeout", + "type": "float", + "required": false } ], - "returns": "void" + "returns": "class:signalwire.relay.event.RelayEvent" }, "wait_for_completion": { "params": [ { "name": "self", "kind": "self" + }, + { + "name": "timeout_ms", + "type": "int", + "required": false } ], "returns": "class:signalwire.relay.event.RelayEvent" @@ -30248,6 +31171,11 @@ "name": "body", "type": "dict", "required": true + }, + { + "name": "request_options", + "type": "class:signalwire.rest._request_options.RequestOptions", + "required": false } ], "returns": "dict" @@ -30262,6 +31190,11 @@ "name": "id", "type": "string", "required": true + }, + { + "name": "request_options", + "type": "class:signalwire.rest._request_options.RequestOptions", + "required": false } ], "returns": "dict" @@ -30276,6 +31209,11 @@ "name": "id", "type": "string", "required": true + }, + { + "name": "request_options", + "type": "class:signalwire.rest._request_options.RequestOptions", + "required": false } ], "returns": "dict" @@ -30285,6 +31223,16 @@ { "name": "self", "kind": "self" + }, + { + "name": "query_params", + "type": "dict", + "required": false + }, + { + "name": "request_options", + "type": "class:signalwire.rest._request_options.RequestOptions", + "required": false } ], "returns": "dict" @@ -30304,6 +31252,11 @@ "name": "body", "type": "dict", "required": true + }, + { + "name": "request_options", + "type": "class:signalwire.rest._request_options.RequestOptions", + "required": false } ], "returns": "dict" @@ -30327,6 +31280,11 @@ "name": "query_params", "type": "dict", "required": true + }, + { + "name": "request_options", + "type": "class:signalwire.rest._request_options.RequestOptions", + "required": false } ], "returns": "any" @@ -30362,7 +31320,7 @@ { "name": "request_options", "type": "class:signalwire.rest._request_options.RequestOptions", - "required": true + "required": false } ], "returns": "void" @@ -30381,7 +31339,7 @@ { "name": "request_options", "type": "class:signalwire.rest._request_options.RequestOptions", - "required": true + "required": false } ], "returns": "dict" @@ -30400,12 +31358,12 @@ { "name": "query_params", "type": "dict", - "required": true + "required": false }, { "name": "request_options", "type": "class:signalwire.rest._request_options.RequestOptions", - "required": true + "required": false } ], "returns": "dict" @@ -30433,12 +31391,12 @@ { "name": "body", "type": "dict", - "required": true + "required": false }, { "name": "request_options", "type": "class:signalwire.rest._request_options.RequestOptions", - "required": true + "required": false } ], "returns": "dict" @@ -30462,7 +31420,7 @@ { "name": "request_options", "type": "class:signalwire.rest._request_options.RequestOptions", - "required": true + "required": false } ], "returns": "dict" @@ -30481,12 +31439,12 @@ { "name": "body", "type": "dict", - "required": true + "required": false }, { "name": "request_options", "type": "class:signalwire.rest._request_options.RequestOptions", - "required": true + "required": false } ], "returns": "dict" @@ -30507,6 +31465,11 @@ "name": "token", "type": "string", "required": true + }, + { + "name": "request_options", + "type": "class:signalwire.rest._request_options.RequestOptions", + "required": false } ], "returns": "class:signalwire.rest._base.HttpClient" @@ -30525,6 +31488,11 @@ "name": "id", "type": "string", "required": true + }, + { + "name": "request_options", + "type": "class:signalwire.rest._request_options.RequestOptions", + "required": false } ], "returns": "dict" @@ -30534,6 +31502,16 @@ { "name": "self", "kind": "self" + }, + { + "name": "query_params", + "type": "dict", + "required": false + }, + { + "name": "request_options", + "type": "class:signalwire.rest._request_options.RequestOptions", + "required": false } ], "returns": "dict" @@ -30601,15 +31579,6 @@ ], "returns": "string" }, - "get_request_id": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "optional" - }, "get_response_body": { "params": [ { @@ -30682,6 +31651,15 @@ ], "returns": "string" }, + "request_id": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "optional" + }, "status_code": { "params": [ { @@ -30756,6 +31734,21 @@ "name": "path", "type": "string", "required": true + }, + { + "name": "params", + "type": "dict", + "required": false + }, + { + "name": "data_key", + "type": "string", + "required": false + }, + { + "name": "request_options", + "type": "class:signalwire.rest._request_options.RequestOptions", + "required": false } ], "returns": "void" @@ -30978,15 +31971,6 @@ "params": [], "returns": "class:signalwire.rest.namespaces.relay_rest_types_generated.PhoneCallHandler" }, - "to_string": { - "params": [ - { - "name": "self", - "kind": "self" - } - ], - "returns": "string" - }, "value_of": { "params": [ { @@ -31022,10 +32006,64 @@ "classes": { "RestClient": { "methods": { + "__init__": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "void" + }, + "addresses": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.Addresses" + }, "builder": { "params": [], "returns": "class:signalwire.rest.client.RestClient" }, + "calling": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.calling_resources_generated.Calling" + }, + "chat": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.chat_resources_generated.Chat" + }, + "datasphere": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces._client_tree_generated.DatasphereNamespace" + }, + "fabric": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces._client_tree_generated.FabricNamespace" + }, "get_http_client": { "params": [ { @@ -31035,7 +32073,7 @@ ], "returns": "class:signalwire.rest._base.HttpClient" }, - "get_project": { + "get_space": { "params": [ { "name": "self", @@ -31044,14 +32082,158 @@ ], "returns": "string" }, - "get_space": { + "imported_numbers": { "params": [ { "name": "self", "kind": "self" } ], - "returns": "string" + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.ImportedNumbers" + }, + "logs": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces._client_tree_generated.LogsNamespace" + }, + "lookup": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.Lookup" + }, + "messages": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.messages_resources_generated.Messages" + }, + "mfa": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.Mfa" + }, + "number_groups": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.NumberGroups" + }, + "phone_numbers": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.PhoneNumbers" + }, + "project": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces._client_tree_generated.ProjectNamespace" + }, + "projects": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.projects_resources_generated.Projects" + }, + "pubsub": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.pubsub_resources_generated.PubSub" + }, + "queues": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.Queues" + }, + "recordings": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.Recordings" + }, + "registry": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces._client_tree_generated.RegistryNamespace" + }, + "short_codes": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.ShortCodes" + }, + "sip_profile": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.SipProfile" + }, + "verified_callers": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces.relay_rest_resources_generated.VerifiedCallers" + }, + "video": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "class:signalwire.rest.namespaces._client_tree_generated.VideoNamespace" }, "with_base_url": { "params": [ @@ -75343,6 +76525,20 @@ "classes": { "RestClientBuilder": { "methods": { + "abort_signal": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "abort_signal", + "type": "class:signalwire.rest.AbortSignal", + "required": true + } + ], + "returns": "class:signalwire.rest._request_options.RequestOptions" + }, "build": { "params": [ { @@ -75380,6 +76576,48 @@ ], "returns": "class:signalwire.rest.client.RestClient" }, + "retries": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "retries", + "type": "int", + "required": true + } + ], + "returns": "class:signalwire.rest._request_options.RequestOptions" + }, + "retry_backoff": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "retry_backoff", + "type": "float", + "required": true + } + ], + "returns": "class:signalwire.rest._request_options.RequestOptions" + }, + "retry_on_status": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "retry_on_status", + "type": "list", + "required": true + } + ], + "returns": "class:signalwire.rest._request_options.RequestOptions" + }, "space": { "params": [ { @@ -75394,6 +76632,20 @@ ], "returns": "class:signalwire.rest.client.RestClient" }, + "timeout": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "timeout", + "type": "float", + "required": true + } + ], + "returns": "class:signalwire.rest._request_options.RequestOptions" + }, "token": { "params": [ { @@ -75412,6 +76664,34 @@ } } }, + "signalwire.rest.tls_context": { + "classes": { + "TlsContext": { + "methods": { + "from_ca_file": { + "params": [ + { + "name": "ca_file", + "type": "string", + "required": true + } + ], + "returns": "any" + }, + "socket_factory": { + "params": [ + { + "name": "ca_file", + "type": "string", + "required": true + } + ], + "returns": "any" + } + } + } + } + }, "signalwire.runtime.env_provider": { "classes": { "EnvProvider": { @@ -75465,13 +76745,23 @@ "returns": "class:signalwire.runtime.ExecutionMode" }, "detect": { - "params": [], + "params": [ + { + "name": "env", + "type": "class:signalwire.runtime.EnvProvider", + "required": false + } + ], "returns": "class:signalwire.runtime.ExecutionMode" }, "google_cloud_function": { "params": [], "returns": "class:signalwire.runtime.ExecutionMode" }, + "lambda": { + "params": [], + "returns": "class:signalwire.runtime.ExecutionMode" + }, "server": { "params": [], "returns": "class:signalwire.runtime.ExecutionMode" @@ -75777,6 +77067,15 @@ "classes": { "ApiNinjasTriviaSkill": { "methods": { + "__init__": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "void" + }, "get_description": { "params": [ { @@ -76838,6 +78137,15 @@ "classes": { "PlayBackgroundFileSkill": { "methods": { + "__init__": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "void" + }, "get_description": { "params": [ { @@ -77345,6 +78653,15 @@ } ], "returns": "bool" + }, + "remove_xpaths": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "list" } } } @@ -77457,6 +78774,15 @@ "classes": { "WeatherApiSkill": { "methods": { + "__init__": { + "params": [ + { + "name": "self", + "kind": "self" + } + ], + "returns": "void" + }, "get_description": { "params": [ { @@ -77747,6 +79073,73 @@ "classes": { "ParameterSchemaBuilder": { "methods": { + "array": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "name", + "type": "string", + "required": true + }, + { + "name": "item_type", + "type": "string", + "required": true + }, + { + "name": "description", + "type": "string", + "required": true + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, + "array_of_objects": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "name", + "type": "string", + "required": true + }, + { + "name": "item_schema", + "type": "dict", + "required": true + }, + { + "name": "description", + "type": "string", + "required": true + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, + "bool": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "name", + "type": "string", + "required": true + }, + { + "name": "description", + "type": "string", + "required": true + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, "build": { "params": [ { @@ -77756,6 +79149,20 @@ ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" }, + "default_value": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "value", + "type": "any", + "required": true + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, "description": { "params": [ { @@ -77770,6 +79177,30 @@ ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" }, + "enum_of": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "name", + "type": "string", + "required": true + }, + { + "name": "values", + "type": "list", + "required": true + }, + { + "name": "description", + "type": "string", + "required": true + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, "extra_swaig_fields": { "params": [ { @@ -77798,6 +79229,20 @@ ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" }, + "format": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "format", + "type": "string", + "required": true + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, "handler": { "params": [ { @@ -77812,6 +79257,25 @@ ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" }, + "integer": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "name", + "type": "string", + "required": true + }, + { + "name": "description", + "type": "string", + "required": true + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, "is_typed_handler": { "params": [ { @@ -77840,6 +79304,49 @@ ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" }, + "number": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "name", + "type": "string", + "required": true + }, + { + "name": "description", + "type": "string", + "required": true + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, + "object": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "name", + "type": "string", + "required": true + }, + { + "name": "object_schema", + "type": "dict", + "required": true + }, + { + "name": "description", + "type": "string", + "required": true + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, "parameters": { "params": [ { @@ -77882,6 +79389,30 @@ ], "returns": "class:signalwire.core.swaig_function.SWAIGFunction" }, + "string": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "name", + "type": "string", + "required": true + }, + { + "name": "description", + "type": "string", + "required": true + }, + { + "name": "format", + "type": "string", + "required": false + } + ], + "returns": "class:signalwire.swaig.ParameterSchema" + }, "wait_file": { "params": [ { @@ -78711,7 +80242,7 @@ { "name": "allow_private", "type": "bool", - "required": true + "required": false } ], "returns": "bool" @@ -78750,6 +80281,20 @@ ], "returns": "void" }, + "file_allowed": { + "params": [ + { + "name": "self", + "kind": "self" + }, + { + "name": "path", + "type": "string", + "required": true + } + ], + "returns": "bool" + }, "remove_directory": { "params": [ { @@ -78769,6 +80314,16 @@ { "name": "self", "kind": "self" + }, + { + "name": "host", + "type": "string", + "required": false + }, + { + "name": "bind_port", + "type": "int", + "required": false } ], "returns": "int" @@ -78864,31 +80419,31 @@ "params": { "max_tokens": { "type": "int", - "required": true + "required": false }, "name": { "type": "string", - "required": true + "required": false }, "route": { "type": "string", - "required": true + "required": false }, "system_prompt": { "type": "string", - "required": true + "required": false }, "temperature": { "type": "float", - "required": true + "required": false }, "top_p": { "type": "float", - "required": true + "required": false }, "voice_id": { "type": "string", - "required": true + "required": false } } }, @@ -78968,6 +80523,22 @@ } } }, + "signalwire.core.agent.prompt.manager.PromptManager": { + "params": { + "agent": { + "type": "any", + "required": false + } + } + }, + "signalwire.core.agent.tools.registry.ToolRegistry": { + "params": { + "agent": { + "type": "any", + "required": false + } + } + }, "signalwire.core.agent_base.AgentBase": { "params": { "agent_id": { @@ -79080,6 +80651,38 @@ } } }, + "signalwire.core.auth_handler.BasicCredentials": { + "params": { + "password": { + "type": "string", + "required": true + }, + "username": { + "type": "string", + "required": true + } + } + }, + "signalwire.core.auth_handler.BearerCredentials": { + "params": { + "credentials": { + "type": "string", + "required": true + }, + "scheme": { + "type": "string", + "required": true + } + } + }, + "signalwire.core.config_loader.ConfigLoader": { + "params": { + "config_paths": { + "type": "list", + "required": false + } + } + }, "signalwire.core.contexts.Context": { "params": { "name": { @@ -79088,15 +80691,55 @@ } } }, + "signalwire.core.contexts.GatherInfo": { + "params": { + "completion_action": { + "type": "string", + "required": false + }, + "isolated": { + "type": "bool", + "required": false + }, + "output_key": { + "type": "string", + "required": false + }, + "prompt": { + "type": "string", + "required": false + } + } + }, "signalwire.core.contexts.GatherQuestion": { "params": { + "confirm": { + "type": "bool", + "required": false + }, + "functions": { + "type": "list", + "required": false + }, + "isolated": { + "type": "bool", + "required": false + }, "key": { "type": "string", "required": true }, + "prompt": { + "type": "string", + "required": false + }, "question": { "type": "string", "required": true + }, + "type": { + "type": "string", + "required": false } } }, @@ -79116,6 +80759,30 @@ } } }, + "signalwire.core.function_result.FunctionResult": { + "params": { + "post_process": { + "type": "bool", + "required": false + }, + "response": { + "type": "string", + "required": false + } + } + }, + "signalwire.core.security_config.SecurityConfig": { + "params": { + "config_file": { + "type": "string", + "required": false + }, + "service_name": { + "type": "string", + "required": false + } + } + }, "signalwire.core.skill_base.SkillBase": { "params": { "agent": { @@ -79186,6 +80853,22 @@ }, "signalwire.pom.pom.Section": { "params": { + "body": { + "type": "string", + "required": false + }, + "bullets": { + "type": "list", + "required": false + }, + "numbered": { + "type": "bool", + "required": false + }, + "numbered_bullets": { + "type": "bool", + "required": false + }, "title": { "type": "string", "required": true @@ -79198,10 +80881,30 @@ "type": "list>", "required": true }, + "hours_of_operation": { + "type": "dict", + "required": false + }, "name": { "type": "string", "required": true }, + "port": { + "type": "int", + "required": false + }, + "route": { + "type": "string", + "required": false + }, + "services": { + "type": "list", + "required": false + }, + "special_instructions": { + "type": "list", + "required": false + }, "venue_name": { "type": "string", "required": true @@ -79217,6 +80920,22 @@ "name": { "type": "string", "required": true + }, + "persona": { + "type": "string", + "required": false + }, + "port": { + "type": "int", + "required": false + }, + "route": { + "type": "string", + "required": false + }, + "suggest_related": { + "type": "bool", + "required": false } } }, @@ -79226,9 +80945,17 @@ "type": "string", "required": true }, + "port": { + "type": "int", + "required": false + }, "questions": { "type": "list>", "required": true + }, + "route": { + "type": "string", + "required": false } } }, @@ -79245,18 +80972,54 @@ "name": { "type": "string", "required": true + }, + "port": { + "type": "int", + "required": false + }, + "route": { + "type": "string", + "required": false } } }, "signalwire.prefabs.survey.SurveyAgent": { "params": { + "brand_name": { + "type": "string", + "required": false + }, + "completion_message": { + "type": "string", + "required": false + }, + "introduction": { + "type": "string", + "required": false + }, + "max_retries": { + "type": "int", + "required": false + }, "name": { "type": "string", "required": true }, + "port": { + "type": "int", + "required": false + }, "questions": { "type": "list>", "required": true + }, + "route": { + "type": "string", + "required": false + }, + "survey_name": { + "type": "string", + "required": false } } }, @@ -79290,9 +81053,21 @@ "type": "string", "required": true }, + "context": { + "type": "string", + "required": false + }, "node_id": { "type": "string", "required": true + }, + "project_id": { + "type": "string", + "required": false + }, + "segment_id": { + "type": "string", + "required": false } } }, @@ -79868,7 +81643,7 @@ }, "request_options": { "type": "class:signalwire.rest._request_options.RequestOptions", - "required": true + "required": false }, "space": { "type": "string", @@ -79926,13 +81701,25 @@ }, "signalwire.rest._pagination.PaginatedIterator": { "params": { + "data_key": { + "type": "string", + "required": false + }, "http": { "type": "class:signalwire.rest._base.HttpClient", "required": true }, + "params": { + "type": "dict", + "required": false + }, "path": { "type": "string", "required": true + }, + "request_options": { + "type": "class:signalwire.rest._request_options.RequestOptions", + "required": false } } }, diff --git a/port_surface.json b/port_surface.json index e92818d7..f448340a 100644 --- a/port_surface.json +++ b/port_surface.json @@ -216,7 +216,7 @@ ] } }, - "generated_from": "signalwire-java @ d9527a22b8410bbf2f5b93bb9013f5c03a7286ee", + "generated_from": "signalwire-java @ 4b267d9deabb9851fca1837df0441d2ea69912a6", "language": "java", "modules": { "signalwire": { @@ -331,15 +331,18 @@ "AuthenticationError": [], "ChatInProgressError": [], "ChatLog": [ + "__init__", "call_timeline", "messages" ], "ChatResponse": [ + "__init__", "conversation_id", "text", "user_event" ], "ConversationInfo": [ + "__init__", "id", "initial_message", "status" @@ -488,6 +491,16 @@ "verify_api_key", "verify_basic_auth", "verify_bearer_token" + ], + "BasicCredentials": [ + "__init__", + "password", + "username" + ], + "BearerCredentials": [ + "__init__", + "credentials", + "scheme" ] }, "functions": [] @@ -595,7 +608,6 @@ "classes": { "DataMap": [ "__init__", - "body", "description", "error_keys", "expression", @@ -842,7 +854,9 @@ "PostPromptEot": [], "PostPromptStampsUs": [], "PostPromptSwaigLogEntry": [ - "post_data" + "delayed_post_response", + "post_data", + "post_response" ], "PostPromptSystemEntry": [], "PostPromptSystemLogEntry": [], @@ -987,6 +1001,8 @@ "ContextSwitchAction": [], "HoldAction": [], "PlaybackBgAction": [], + "SwaigAction": [], + "SwaigResponse": [], "TransferAction": [] }, "functions": [] @@ -1105,10 +1121,9 @@ "close", "cond", "connect", - "define_tool", - "define_tools", "denoise", "detect_machine", + "domain", "enter_queue", "execute", "extract_sip_username", @@ -1135,9 +1150,7 @@ "live_translate", "manual_set_proxy_url", "name", - "on_function_call", "on_request", - "on_swml_request", "pay", "play", "port", @@ -1146,7 +1159,6 @@ "record", "record_call", "register_routing_callback", - "register_swaig_function", "register_verb_handler", "remove_function", "render_document", @@ -1164,6 +1176,9 @@ "set", "sip_refer", "sleep", + "ssl_cert_path", + "ssl_enabled", + "ssl_key_path", "stop", "stop_denoise", "stop_record_call", @@ -1173,7 +1188,6 @@ "transfer", "unset", "user_event", - "validate_basic_auth", "verb_registry" ] }, @@ -1686,6 +1700,7 @@ "Action": [ "__init__", "call", + "completed", "control_id", "get_state", "is_done", @@ -1914,6 +1929,7 @@ "signalwire.relay.event": { "classes": { "CallReceiveEvent": [ + "__init__", "call_state", "context", "device", @@ -1926,6 +1942,7 @@ "tag" ], "CallStateEvent": [ + "__init__", "call_state", "device", "direction", @@ -1936,12 +1953,14 @@ "get_tag" ], "CallingErrorEvent": [ + "__init__", "code", "from_payload", "get_call_id", "message" ], "CollectEvent": [ + "__init__", "control_id", "final", "from_payload", @@ -1951,6 +1970,7 @@ "state" ], "ConferenceEvent": [ + "__init__", "conference_id", "from_payload", "get_call_id", @@ -1958,17 +1978,20 @@ "status" ], "ConnectEvent": [ + "__init__", "connect_state", "from_payload", "get_call_id", "peer" ], "DenoiseEvent": [ + "__init__", "denoised", "from_payload", "get_call_id" ], "DetectEvent": [ + "__init__", "control_id", "detect", "from_payload", @@ -1976,6 +1999,7 @@ "get_detect_event" ], "DialEvent": [ + "__init__", "call", "dial_state", "from_payload", @@ -1986,11 +2010,13 @@ "tag" ], "EchoEvent": [ + "__init__", "from_payload", "get_call_id", "state" ], "FaxEvent": [ + "__init__", "control_id", "fax", "from_payload", @@ -1998,11 +2024,13 @@ "get_state" ], "HoldEvent": [ + "__init__", "from_payload", "get_call_id", "state" ], "MessageReceiveEvent": [ + "__init__", "body", "context", "direction", @@ -2016,6 +2044,7 @@ "to_number" ], "MessageStateEvent": [ + "__init__", "body", "context", "direction", @@ -2030,18 +2059,21 @@ "to_number" ], "PayEvent": [ + "__init__", "control_id", "from_payload", "get_call_id", "state" ], "PlayEvent": [ + "__init__", "control_id", "from_payload", "get_call_id", "state" ], "QueueEvent": [ + "__init__", "control_id", "from_payload", "get_call_id", @@ -2052,6 +2084,7 @@ "status" ], "RecordEvent": [ + "__init__", "control_id", "duration", "from_payload", @@ -2062,6 +2095,7 @@ "url" ], "ReferEvent": [ + "__init__", "from_payload", "get_call_id", "get_refer_state", @@ -2071,6 +2105,7 @@ "state" ], "RelayEvent": [ + "__init__", "call_id", "event_type", "from_payload", @@ -2083,12 +2118,14 @@ "timestamp" ], "SendDigitsEvent": [ + "__init__", "control_id", "from_payload", "get_call_id", "state" ], "StreamEvent": [ + "__init__", "control_id", "from_payload", "get_call_id", @@ -2097,6 +2134,7 @@ "url" ], "TapEvent": [ + "__init__", "control_id", "device", "from_payload", @@ -2105,6 +2143,7 @@ "tap" ], "TranscribeEvent": [ + "__init__", "control_id", "duration", "from_payload", @@ -2346,7 +2385,6 @@ "__init__", "body", "get_path", - "get_request_id", "get_response_body", "headers", "is_client_error", @@ -2354,6 +2392,7 @@ "is_server_error", "is_unauthorized", "method", + "request_id", "status_code", "url" ], @@ -2377,6 +2416,7 @@ "signalwire.rest._request_options": { "classes": { "RequestOptions": [ + "__init__", "abort_signal", "builder", "merge", @@ -2401,7 +2441,6 @@ "datasphere", "fabric", "get_http_client", - "get_project", "get_space", "imported_numbers", "logs", @@ -3901,7 +3940,6 @@ "get_instance_key", "get_name", "get_parameter_schema", - "get_prompt_sections", "register_tools", "setup", "supports_multiple_instances" @@ -3919,7 +3957,6 @@ "get_instance_key", "get_name", "get_parameter_schema", - "get_prompt_sections", "register_tools", "setup", "supports_multiple_instances" @@ -3936,7 +3973,6 @@ "get_instance_key", "get_name", "get_parameter_schema", - "get_prompt_sections", "get_swaig_functions", "register_tools", "setup", @@ -3952,7 +3988,6 @@ "get_hints", "get_name", "get_parameter_schema", - "get_prompt_sections", "register_tools", "setup", "supports_multiple_instances" @@ -3967,7 +4002,6 @@ "get_hints", "get_name", "get_parameter_schema", - "get_prompt_sections", "register_tools", "setup" ] @@ -3982,7 +4016,6 @@ "get_instance_key", "get_name", "get_parameter_schema", - "get_prompt_sections", "register_tools", "setup", "supports_multiple_instances" @@ -3998,7 +4031,6 @@ "get_hints", "get_name", "get_parameter_schema", - "get_prompt_sections", "get_swaig_functions", "register_tools", "setup" @@ -4013,7 +4045,6 @@ "get_hints", "get_name", "get_parameter_schema", - "get_prompt_sections", "register_tools", "setup", "supports_multiple_instances" @@ -4029,7 +4060,6 @@ "get_hints", "get_name", "get_parameter_schema", - "get_prompt_sections", "get_required_packages", "get_version", "register_tools", @@ -4048,7 +4078,6 @@ "get_instance_key", "get_name", "get_parameter_schema", - "get_prompt_sections", "register_tools", "setup", "supports_multiple_instances" @@ -4112,6 +4141,7 @@ "get_name", "get_parameter_schema", "register_tools", + "remove_xpaths", "setup", "supports_multiple_instances" ] @@ -4126,7 +4156,6 @@ "get_instance_key", "get_name", "get_parameter_schema", - "get_prompt_sections", "get_swaig_functions", "register_tools", "setup", @@ -4158,7 +4187,6 @@ "get_instance_key", "get_name", "get_parameter_schema", - "get_prompt_sections", "get_version", "register_tools", "setup", @@ -4174,7 +4202,6 @@ "get_hints", "get_name", "get_parameter_schema", - "get_prompt_sections", "register_tools", "search_wiki", "setup" diff --git a/port_surface_native.json b/port_surface_native.json index 3809384b..a6c2e81d 100644 --- a/port_surface_native.json +++ b/port_surface_native.json @@ -1,5 +1,5 @@ { - "generated_from": "signalwire-java @ 2b848d283a2d33e7b177be4e430b6af8c9c87a78", + "generated_from": "signalwire-java @ 97b2e51c9cb408dab9f4fc5923c7ff412a0f9cf2", "language": "java", "modules": { "signalwire.agent.agent_base_builder": { @@ -556,6 +556,14 @@ "verify_api_key", "verify_basic_auth", "verify_bearer_token" + ], + "BasicCredentials": [ + "password", + "username" + ], + "BearerCredentials": [ + "credentials", + "scheme" ] }, "functions": [] @@ -737,7 +745,6 @@ "classes": { "DataMap": [ "DataMap", - "body", "data_map", "description", "errorKeys", @@ -1282,6 +1289,8 @@ "AIPostPromptText": [], "AIPromptPom": [], "AIPromptText": [], + "AiSidecar": [], + "AiSidecarConfig": [], "AllOfProperty": [], "AmazonBedrock": [], "AmazonBedrockObject": [], @@ -1381,6 +1390,7 @@ "Request": [], "RequestConfig": [], "Return": [], + "RingbackConfig": [], "SIPRefer": [], "SMSWithBody": [], "SMSWithMedia": [], @@ -1683,10 +1693,12 @@ "action", "await", "getCall", + "getCompleted", "getControlId", "getResult", "getState", "get_call", + "get_completed", "get_control_id", "get_result", "get_state", @@ -4397,7 +4409,11 @@ }, "signalwire.runtime.serverless_adapter_response": { "classes": { - "ServerlessAdapterResponse": [] + "ServerlessAdapterResponse": [ + "body", + "headers", + "status" + ] }, "functions": [] }, @@ -4857,13 +4873,17 @@ "getInstanceKey", "getName", "getParameterSchema", + "getRemoveXpaths", "get_description", "get_hints", "get_instance_key", "get_name", "get_parameter_schema", + "get_remove_xpaths", "registerTools", "register_tools", + "setRemoveXpaths", + "set_remove_xpaths", "setup", "supportsMultipleInstances", "supports_multiple_instances" @@ -5092,6 +5112,7 @@ "getBasicAuthCredentialsWithSource", "getConfigFile", "getDocument", + "getDomain", "getFunction", "getHost", "getName", @@ -5102,6 +5123,8 @@ "getSchemaPath", "getSchemaUtils", "getSecurity", + "getSslCertPath", + "getSslKeyPath", "get_all_functions", "get_auth_password", "get_auth_user", @@ -5109,6 +5132,7 @@ "get_basic_auth_credentials_with_source", "get_config_file", "get_document", + "get_domain", "get_function", "get_host", "get_name", @@ -5118,6 +5142,8 @@ "get_route", "get_schema_path", "get_security", + "get_ssl_cert_path", + "get_ssl_key_path", "gotoLabel", "goto_label", "handleRequest", @@ -5126,7 +5152,9 @@ "hasFunction", "has_function", "isSchemaValidation", + "isSslEnabled", "is_schema_validation", + "is_ssl_enabled", "joinConference", "joinRoom", "join_conference", @@ -5208,7 +5236,11 @@ }, "signalwire.swml.service_http_result": { "classes": { - "ServiceHttpResult": [] + "ServiceHttpResult": [ + "body", + "headers", + "status" + ] }, "functions": [] }, diff --git a/relay/examples/RelayDialAndPlay.java b/relay/examples/RelayDialAndPlay.java index 9406dcc2..5a8295c8 100644 --- a/relay/examples/RelayDialAndPlay.java +++ b/relay/examples/RelayDialAndPlay.java @@ -1,77 +1,78 @@ -/** +/* * Dial a number and play "Welcome to SignalWire" using the RELAY client. * - * The Java RELAY client runs a blocking event loop inside - * {@link com.signalwire.sdk.relay.RelayClient#run()} (it owns the WebSocket - * and JSON-RPC dispatcher). To place an outbound call without inheriting - * the lifecycle of an inbound handler, start {@code run()} in a background - * thread, then issue the dial from the main thread. Hang-up is driven by - * observing the call's state via {@code getState()} or by waiting on a - * specific action (such as the TTS playback). + *

    The Java RELAY client runs a blocking event loop inside {@link + * com.signalwire.sdk.relay.RelayClient#run()} (it owns the WebSocket and JSON-RPC dispatcher). To + * place an outbound call without inheriting the lifecycle of an inbound handler, start {@code + * run()} in a background thread, then issue the dial from the main thread. Hang-up is driven by + * observing the call's state via {@code getState()} or by waiting on a specific action (such as the + * TTS playback). * - * Requires env vars: - * SIGNALWIRE_PROJECT_ID - * SIGNALWIRE_API_TOKEN - * SIGNALWIRE_SPACE - * RELAY_FROM_NUMBER - a number on your SignalWire project - * RELAY_TO_NUMBER - destination to call + *

    Requires env vars: SIGNALWIRE_PROJECT_ID SIGNALWIRE_API_TOKEN SIGNALWIRE_SPACE + * RELAY_FROM_NUMBER - a number on your SignalWire project RELAY_TO_NUMBER - destination to call */ - import com.signalwire.sdk.relay.RelayClient; - import java.util.List; import java.util.Map; public class RelayDialAndPlay { - public static void main(String[] args) throws Exception { - String fromNumber = System.getenv("RELAY_FROM_NUMBER"); - String toNumber = System.getenv("RELAY_TO_NUMBER"); + public static void main(String[] args) throws Exception { + String fromNumber = System.getenv("RELAY_FROM_NUMBER"); + String toNumber = System.getenv("RELAY_TO_NUMBER"); - if (fromNumber == null || toNumber == null) { - System.err.println("Set RELAY_FROM_NUMBER and RELAY_TO_NUMBER env vars"); - System.exit(1); - } + if (fromNumber == null || toNumber == null) { + System.err.println("Set RELAY_FROM_NUMBER and RELAY_TO_NUMBER env vars"); + System.exit(1); + } - var client = RelayClient.builder().build(); + var client = RelayClient.builder().build(); - // Start the event loop in a background thread so the main thread - // can drive dial → play → hangup. - Thread loop = new Thread(client::run, "relay-client"); - loop.setDaemon(true); - loop.start(); + // Start the event loop in a background thread so the main thread + // can drive dial → play → hangup. + Thread loop = new Thread(client::run, "relay-client"); + loop.setDaemon(true); + loop.start(); - // Give the WebSocket a moment to connect and negotiate protocol. - Thread.sleep(1000); + // Give the WebSocket a moment to connect and negotiate protocol. + Thread.sleep(1000); - // Dial an outbound call. - var devices = List.of(List.of(Map.of( - "type", "phone", - "params", Map.of( + // Dial an outbound call. + var devices = + List.of( + List.of( + Map.of( + "type", + "phone", + "params", + Map.of( "to_number", toNumber, - "from_number", fromNumber - ) - ))); + "from_number", fromNumber)))); - var call = client.dial(devices); - System.out.println("Dialing " + toNumber + " from " + fromNumber - + " - call_id: " + call.getCallId() - + " - state: " + call.getState()); + var call = client.dial(devices); + System.out.println( + "Dialing " + + toNumber + + " from " + + fromNumber + + " - call_id: " + + call.getCallId() + + " - state: " + + call.getState()); - // Play TTS — blocks until playback finishes via the action handle. - System.out.println("Playing TTS..."); - var playAction = call.play(List.of(Map.of( - "type", "tts", - "params", Map.of("text", "Welcome to SignalWire") - ))); - playAction.waitForCompletion(15_000); - System.out.println("Playback finished, hanging up"); + // Play TTS — blocks until playback finishes via the action handle. + System.out.println("Playing TTS..."); + var playAction = + call.play( + List.of(Map.of("type", "tts", "params", Map.of("text", "Welcome to SignalWire")))); + playAction.waitForCompletion(15_000); + System.out.println("Playback finished, hanging up"); - call.hangup(); - System.out.println("Hung up - final state: " + call.getState()); + call.hangup(); + System.out.println("Hung up - final state: " + call.getState()); - client.disconnect(); - loop.join(5_000); - System.out.println("Disconnected"); - } + client.disconnect(); + loop.join(5_000); + System.out.println("Disconnected"); + } } diff --git a/relay/examples/RelayIvrConnect.java b/relay/examples/RelayIvrConnect.java index 8d8d5369..0249ec89 100644 --- a/relay/examples/RelayIvrConnect.java +++ b/relay/examples/RelayIvrConnect.java @@ -1,149 +1,132 @@ -/** +/* * Example: IVR menu with DTMF collection, playback, and call connect. * - * Answers an inbound call, plays a greeting, collects a digit, and routes - * the caller based on their choice: - * 1 - Hear a sales message - * 2 - Hear a support message - * 0 - Connect to a live agent at +19184238080 + *

    Answers an inbound call, plays a greeting, collects a digit, and routes the caller based on + * their choice: 1 - Hear a sales message 2 - Hear a support message 0 - Connect to a live agent at + * +19184238080 * - * The Java RELAY API differs from Python in a few spots used below: - * - {@code playAndCollect(media, collectConfig, options)} takes three - * arguments — the trailing {@code options} map is required (pass an - * empty {@code Map.of()} when you have nothing to add). - * - {@code connect(devices, options)} takes only a devices matrix and - * options; there is no ring-back media parameter (play the ring-back - * TTS separately beforehand). - * - {@code Call} exposes no {@code waitForEnded()} — poll - * {@code getState()} / {@code isEnded()} or wait on the specific - * action's completion future instead. + *

    The Java RELAY API differs from Python in a few spots used below: - {@code + * playAndCollect(media, collectConfig, options)} takes three arguments — the trailing {@code + * options} map is required (pass an empty {@code Map.of()} when you have nothing to add). - {@code + * connect(devices, options)} takes only a devices matrix and options; there is no ring-back media + * parameter (play the ring-back TTS separately beforehand). - {@code Call} exposes no {@code + * waitForEnded()} — poll {@code getState()} / {@code isEnded()} or wait on the specific action's + * completion future instead. * - * Set these env vars: - * SIGNALWIRE_PROJECT_ID - your SignalWire project ID - * SIGNALWIRE_API_TOKEN - your SignalWire API token - * SIGNALWIRE_SPACE - your SignalWire space + *

    Set these env vars: SIGNALWIRE_PROJECT_ID - your SignalWire project ID SIGNALWIRE_API_TOKEN - + * your SignalWire API token SIGNALWIRE_SPACE - your SignalWire space * - * For full WebSocket / JSON-RPC debug output: - * SIGNALWIRE_LOG_LEVEL=debug + *

    For full WebSocket / JSON-RPC debug output: SIGNALWIRE_LOG_LEVEL=debug */ - import com.signalwire.sdk.relay.RelayClient; - import java.util.List; import java.util.Map; public class RelayIvrConnect { - private static final String AGENT_NUMBER = "+19184238080"; - - /** - * Helper to build a TTS play element. - */ - private static Map tts(String text) { - return Map.of("type", "tts", "params", Map.of("text", text)); - } + private static final String AGENT_NUMBER = "+19184238080"; + + /** Helper to build a TTS play element. */ + private static Map tts(String text) { + return Map.of("type", "tts", "params", Map.of("text", text)); + } + + public static void main(String[] args) throws Exception { + var client = RelayClient.builder().contexts(List.of("default")).build(); + + client.onCall( + call -> { + System.out.println("Incoming call: " + call); + call.answer(); + + // Play greeting and collect a single digit. + var collectAction = + call.playAndCollect( + List.of( + tts("Welcome to SignalWire!"), + tts( + "Press 1 for sales. Press 2 for support. Press 0 to speak with an agent.")), + Map.of("digits", Map.of("max", 1, "digit_timeout", 5.0), "initial_timeout", 10.0), + Map.of()); + + var resultEvent = collectAction.waitForCompletion(); + Map eventParams = + resultEvent != null ? resultEvent.getParams() : Map.of(); + @SuppressWarnings("unchecked") + var result = (Map) eventParams.getOrDefault("result", Map.of()); + String resultType = (String) result.getOrDefault("type", ""); + @SuppressWarnings("unchecked") + var resultParams = (Map) result.getOrDefault("params", Map.of()); + String digits = (String) resultParams.getOrDefault("digits", ""); + + System.out.println("Collect result: type=" + resultType + " digits=" + digits); + + if ("digit".equals(resultType) && "1".equals(digits)) { + // Sales. + var action = + call.play( + List.of( + tts( + "Thank you for your interest! A sales representative will be with you shortly."))); + action.waitForCompletion(); + + } else if ("digit".equals(resultType) && "2".equals(digits)) { + // Support. + var action = + call.play(List.of(tts("Please hold while we connect you to our support team."))); + action.waitForCompletion(); + + } else if ("digit".equals(resultType) && "0".equals(digits)) { + // Connect to a live agent. Play ring-back TTS first, then + // fire the connect — the Java API's connect() has no + // ring-back media parameter. + var ringBack = call.play(List.of(tts("Connecting you to an agent now. Please hold."))); + ringBack.waitForCompletion(); - public static void main(String[] args) throws Exception { - var client = RelayClient.builder() - .contexts(List.of("default")) - .build(); + @SuppressWarnings("unchecked") + var device = call.getDevice(); + @SuppressWarnings("unchecked") + var deviceParams = (Map) device.getOrDefault("params", Map.of()); + String fromNumber = (String) deviceParams.getOrDefault("to_number", ""); - client.onCall(call -> { - System.out.println("Incoming call: " + call); - call.answer(); + System.out.println("Connecting to " + AGENT_NUMBER + " from " + fromNumber); - // Play greeting and collect a single digit. - var collectAction = call.playAndCollect( + call.connect( + List.of( List.of( - tts("Welcome to SignalWire!"), - tts("Press 1 for sales. Press 2 for support. Press 0 to speak with an agent.") - ), - Map.of( - "digits", Map.of( - "max", 1, - "digit_timeout", 5.0 - ), - "initial_timeout", 10.0 - ), - Map.of() - ); - - var resultEvent = collectAction.waitForCompletion(); - Map eventParams = resultEvent != null - ? resultEvent.getParams() : Map.of(); - @SuppressWarnings("unchecked") - var result = (Map) eventParams.getOrDefault("result", Map.of()); - String resultType = (String) result.getOrDefault("type", ""); - @SuppressWarnings("unchecked") - var resultParams = (Map) result.getOrDefault("params", Map.of()); - String digits = (String) resultParams.getOrDefault("digits", ""); - - System.out.println("Collect result: type=" + resultType + " digits=" + digits); - - if ("digit".equals(resultType) && "1".equals(digits)) { - // Sales. - var action = call.play(List.of( - tts("Thank you for your interest! A sales representative will be with you shortly."))); - action.waitForCompletion(); - - } else if ("digit".equals(resultType) && "2".equals(digits)) { - // Support. - var action = call.play(List.of( - tts("Please hold while we connect you to our support team."))); - action.waitForCompletion(); - - } else if ("digit".equals(resultType) && "0".equals(digits)) { - // Connect to a live agent. Play ring-back TTS first, then - // fire the connect — the Java API's connect() has no - // ring-back media parameter. - var ringBack = call.play(List.of( - tts("Connecting you to an agent now. Please hold."))); - ringBack.waitForCompletion(); - - @SuppressWarnings("unchecked") - var device = call.getDevice(); - @SuppressWarnings("unchecked") - var deviceParams = (Map) device.getOrDefault("params", Map.of()); - String fromNumber = (String) deviceParams.getOrDefault("to_number", ""); - - System.out.println("Connecting to " + AGENT_NUMBER + " from " + fromNumber); - - call.connect( - List.of(List.of(Map.of( - "type", "phone", - "params", Map.of( - "to_number", AGENT_NUMBER, - "from_number", fromNumber, - "timeout", 30 - ) - ))), - Map.of() - ); - - // Stay on the call until state flips to "ended". isEnded() - // covers both graceful and error terminations. - try { - while (!call.isEnded()) { - Thread.sleep(500); - } - } catch (InterruptedException ie) { - Thread.currentThread().interrupt(); - } - System.out.println("Connected call ended: " + call.getCallId()); - return; - - } else { - // No input or invalid. - var action = call.play(List.of( - tts("We didn't receive a valid selection."))); - action.waitForCompletion(); + Map.of( + "type", + "phone", + "params", + Map.of( + "to_number", AGENT_NUMBER, + "from_number", fromNumber, + "timeout", 30)))), + Map.of()); + + // Stay on the call until state flips to "ended". isEnded() + // covers both graceful and error terminations. + try { + while (!call.isEnded()) { + Thread.sleep(500); + } + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); } + System.out.println("Connected call ended: " + call.getCallId()); + return; + + } else { + // No input or invalid. + var action = call.play(List.of(tts("We didn't receive a valid selection."))); + action.waitForCompletion(); + } - call.hangup(); - System.out.println("Call ended: " + call.getCallId()); + call.hangup(); + System.out.println("Call ended: " + call.getCallId()); }); - System.out.println("Waiting for inbound calls on context 'default' ..."); - client.run(); - } + System.out.println("Waiting for inbound calls on context 'default' ..."); + client.run(); + } } diff --git a/rest/examples/Rest10dlcRegistration.java b/rest/examples/Rest10dlcRegistration.java index 49d1b763..8974a494 100644 --- a/rest/examples/Rest10dlcRegistration.java +++ b/rest/examples/Rest10dlcRegistration.java @@ -1,64 +1,73 @@ -/** +/* * Example: 10DLC campaign registration — brand and campaign management. * - * Java exposes 10DLC / TCR registration through {@code client.registry()} - * (the canonical {@code /api/relay/rest/registry/beta} API): {@code brands()}, - * {@code campaigns()}, {@code orders()}, {@code numbers()}. Pick the specific - * sub-resource first — there is no flat {@code .create(...)} / {@code .list()} - * on the namespace itself. + *

    Java exposes 10DLC / TCR registration through {@code client.registry()} (the canonical {@code + * /api/relay/rest/registry/beta} API): {@code brands()}, {@code campaigns()}, {@code orders()}, + * {@code numbers()}. Pick the specific sub-resource first — there is no flat {@code .create(...)} / + * {@code .list()} on the namespace itself. * - * Set these env vars: - * SIGNALWIRE_PROJECT_ID - your SignalWire project ID - * SIGNALWIRE_API_TOKEN - your SignalWire API token - * SIGNALWIRE_SPACE - your SignalWire space + *

    Set these env vars: SIGNALWIRE_PROJECT_ID - your SignalWire project ID SIGNALWIRE_API_TOKEN - + * your SignalWire API token SIGNALWIRE_SPACE - your SignalWire space */ - import com.signalwire.sdk.rest.RestClient; import com.signalwire.sdk.rest.RestError; - import java.util.Map; public class Rest10dlcRegistration { - public static void main(String[] args) { - var client = RestClient.builder().build(); + public static void main(String[] args) { + var client = RestClient.builder().build(); - // 1. Create a 10DLC brand via the brands sub-resource. - System.out.println("Creating 10DLC brand..."); - try { - var brand = client.registry().brands().create(Map.of( - "name", "Acme Corp", - "company_name", "Acme Corporation", - "contact_email", "brand@acme.example.com", - "contact_phone", "+15551234567", - "ein_issuing_country", "United States", - "legal_entity_type", "PRIVATE_PROFIT", - "ein", "12-3456789", - "company_address", "123 Main St, Austin TX, 78701", - "company_vertical", "COMMUNICATION", - "company_website", "https://acme.example.com" - )); - System.out.println(" Brand: " + brand); - } catch (RestError e) { - System.out.println(" Create failed (expected in demo): " + e.getStatusCode()); - } + // 1. Create a 10DLC brand via the brands sub-resource. + System.out.println("Creating 10DLC brand..."); + try { + var brand = + client + .registry() + .brands() + .create( + Map.of( + "name", "Acme Corp", + "company_name", "Acme Corporation", + "contact_email", "brand@acme.example.com", + "contact_phone", "+15551234567", + "ein_issuing_country", "United States", + "legal_entity_type", "PRIVATE_PROFIT", + "ein", "12-3456789", + "company_address", "123 Main St, Austin TX, 78701", + "company_vertical", "COMMUNICATION", + "company_website", "https://acme.example.com")); + // BrandResponse is a pure-data DTO with no toString(); concatenating it printed the + // identity hash ("BrandResponse@4488aabb") instead of any result. Print the fields the demo + // is about. + System.out.println(" Brand: " + brand.id + " " + brand.name + " (" + brand.state + ")"); + } catch (RestError e) { + System.out.println(" Create failed (expected in demo): " + e.getStatusCode()); + } - // 2. List brands. - System.out.println("\nListing 10DLC brands..."); - try { - var brands = client.registry().brands().list(Map.of()); - System.out.println(" Brands: " + brands); - } catch (RestError e) { - System.out.println(" List failed: " + e.getStatusCode()); - } + // 2. List brands. + System.out.println("\nListing 10DLC brands..."); + try { + var brands = client.registry().brands().list(Map.of()); + // BrandListResponse is a pure-data DTO with no toString(); concatenating it printed the + // identity hash ("BrandListResponse@4488aabb") instead of any result. The brands live on + // `data`. + System.out.println(" Brands: " + brands.data); + } catch (RestError e) { + System.out.println(" List failed: " + e.getStatusCode()); + } - // 3. Inspect a campaign by id. - System.out.println("\nRetrieving a 10DLC campaign..."); - try { - var campaign = client.registry().campaigns().get("campaign-id", Map.of()); - System.out.println(" Campaign: " + campaign); - } catch (RestError e) { - System.out.println(" Retrieve failed: " + e.getStatusCode()); - } + // 3. Inspect a campaign by id. + System.out.println("\nRetrieving a 10DLC campaign..."); + try { + var campaign = client.registry().campaigns().get("campaign-id", Map.of()); + // CampaignResponse is a pure-data DTO with no toString(); concatenating it printed the + // identity hash ("CampaignResponse@4488aabb") instead of any result. Print the fields the + // demo is about. + System.out.println( + " Campaign: " + campaign.id + " " + campaign.name + " (" + campaign.state + ")"); + } catch (RestError e) { + System.out.println(" Retrieve failed: " + e.getStatusCode()); } + } } diff --git a/rest/examples/RestBindPhoneToSwmlWebhook.java b/rest/examples/RestBindPhoneToSwmlWebhook.java index 59d3209a..ec3acabd 100644 --- a/rest/examples/RestBindPhoneToSwmlWebhook.java +++ b/rest/examples/RestBindPhoneToSwmlWebhook.java @@ -1,73 +1,64 @@ -/** +/* * Example: bind an inbound phone number to an SWML webhook (the happy path). * - * This is the simplest way to route a SignalWire phone number to a backend - * that returns an SWML document per inbound call. You set call_handler on - * the phone number; the server auto-materializes a swml_webhook Fabric - * resource pointing at your URL. You do NOT need to create the Fabric - * webhook resource manually; you do NOT call assign_phone_route. + *

    This is the simplest way to route a SignalWire phone number to a backend that returns an SWML + * document per inbound call. You set call_handler on the phone number; the server auto-materializes + * a swml_webhook Fabric resource pointing at your URL. You do NOT need to create the Fabric webhook + * resource manually; you do NOT call assign_phone_route. * - * Set these env vars: - * SIGNALWIRE_PROJECT_ID - your SignalWire project ID - * SIGNALWIRE_API_TOKEN - your SignalWire API token - * SIGNALWIRE_SPACE - your SignalWire space (e.g. example.signalwire.com) - * PHONE_NUMBER_SID - SID of a phone number you own (pn-...) - * SWML_WEBHOOK_URL - your backend's SWML endpoint + *

    Set these env vars: SIGNALWIRE_PROJECT_ID - your SignalWire project ID SIGNALWIRE_API_TOKEN - + * your SignalWire API token SIGNALWIRE_SPACE - your SignalWire space (e.g. example.signalwire.com) + * PHONE_NUMBER_SID - SID of a phone number you own (pn-...) SWML_WEBHOOK_URL - your backend's SWML + * endpoint */ - -import com.signalwire.sdk.rest.PhoneCallHandler; import com.signalwire.sdk.rest.RestClient; - import java.util.Map; public class RestBindPhoneToSwmlWebhook { - public static void main(String[] args) { - String project = System.getenv("SIGNALWIRE_PROJECT_ID"); - String token = System.getenv("SIGNALWIRE_API_TOKEN"); - String space = System.getenv("SIGNALWIRE_SPACE"); - // PHONE_NUMBER_SID / SWML_WEBHOOK_URL identify YOUR phone number + backend. - // They are resource identifiers, not secrets — default them to placeholders so - // the example runs verbatim against the mock (which serves /phone_numbers/{id} - // for any id); a real run overrides them via the environment. - String pnSid = getenvOr("PHONE_NUMBER_SID", "b901c2e5-0000-4000-8000-000000000001"); - String webhookUrl = getenvOr("SWML_WEBHOOK_URL", "https://example.com/swml"); + public static void main(String[] args) { + String project = System.getenv("SIGNALWIRE_PROJECT_ID"); + String token = System.getenv("SIGNALWIRE_API_TOKEN"); + String space = System.getenv("SIGNALWIRE_SPACE"); + // PHONE_NUMBER_SID / SWML_WEBHOOK_URL identify YOUR phone number + backend. + // They are resource identifiers, not secrets — default them to placeholders so + // the example runs verbatim against the mock (which serves /phone_numbers/{id} + // for any id); a real run overrides them via the environment. + String pnSid = getenvOr("PHONE_NUMBER_SID", "b901c2e5-0000-4000-8000-000000000001"); + String webhookUrl = getenvOr("SWML_WEBHOOK_URL", "https://example.com/swml"); - var client = RestClient.builder() - .project(project) - .token(token) - .space(space) - .build(); + var client = RestClient.builder().project(project).token(token).space(space).build(); - // The typed helper — one line: - System.out.printf("Binding %s to %s ...%n", pnSid, webhookUrl); - client.phoneNumbers().setSwmlWebhook(pnSid, webhookUrl, Map.of()); + // The typed helper — one line: + System.out.printf("Binding %s to %s ...%n", pnSid, webhookUrl); + client.phoneNumbers().setSwmlWebhook(pnSid, webhookUrl, Map.of()); - // The equivalent wire-level form (use this if you need unusual fields): - // - // client.phoneNumbers().update(pnSid, Map.of( - // "call_handler", PhoneCallHandler.RELAY_SCRIPT.wireValue(), - // "call_relay_script_url", webhookUrl - // )); + // The equivalent wire-level form (use this if you need unusual fields): + // + // client.phoneNumbers().update(pnSid, Map.of( + // "call_handler", PhoneCallHandler.RELAY_SCRIPT.wireValue(), + // "call_relay_script_url", webhookUrl + // )); - // Verify: the server auto-created a swml_webhook Fabric resource. - Map pn = client.phoneNumbers().get(pnSid); - System.out.printf(" call_handler = %s%n", pn.get("call_handler")); - System.out.printf(" call_relay_script_url = %s%n", pn.get("call_relay_script_url")); - System.out.printf(" calling_handler_resource_id (server-derived) = %s%n", - pn.get("calling_handler_resource_id")); + // Verify: the server auto-created a swml_webhook Fabric resource. + Map pn = client.phoneNumbers().get(pnSid); + System.out.printf(" call_handler = %s%n", pn.get("call_handler")); + System.out.printf(" call_relay_script_url = %s%n", pn.get("call_relay_script_url")); + System.out.printf( + " calling_handler_resource_id (server-derived) = %s%n", + pn.get("calling_handler_resource_id")); - // To route to something other than an SWML webhook, use: - // client.phoneNumbers().setCxmlWebhook(sid, url) // LAML / Twilio-compat - // client.phoneNumbers().setAiAgent(sid, agentId) // AI Agent - // client.phoneNumbers().setCallFlow(sid, flowId) // Call Flow - // client.phoneNumbers().setRelayApplication(sid, name) // Named RELAY app - // client.phoneNumbers().setRelayTopic(sid, topic) // RELAY topic - } + // To route to something other than an SWML webhook, use: + // client.phoneNumbers().setCxmlWebhook(sid, url) // LAML / Twilio-compat + // client.phoneNumbers().setAiAgent(sid, agentId) // AI Agent + // client.phoneNumbers().setCallFlow(sid, flowId) // Call Flow + // client.phoneNumbers().setRelayApplication(sid, name) // Named RELAY app + // client.phoneNumbers().setRelayTopic(sid, topic) // RELAY topic + } - /** Return the env var {@code name} if set and non-empty, else {@code fallback}. */ - private static String getenvOr(String name, String fallback) { - String v = System.getenv(name); - return (v != null && !v.isEmpty()) ? v : fallback; - } + /** Return the env var {@code name} if set and non-empty, else {@code fallback}. */ + private static String getenvOr(String name, String fallback) { + String v = System.getenv(name); + return (v != null && !v.isEmpty()) ? v : fallback; + } } diff --git a/rest/examples/RestCallingIvrAndAi.java b/rest/examples/RestCallingIvrAndAi.java index a27e711b..ccb06a70 100644 --- a/rest/examples/RestCallingIvrAndAi.java +++ b/rest/examples/RestCallingIvrAndAi.java @@ -1,81 +1,89 @@ -/** +/* * Example: IVR with AI hand-off via REST. * - * Java drives REST calls through the command API on - * {@code client.calling()}, mirroring Python's per-command methods: - * {@code dial(...)} starts a call, then {@code collect(callId, ...)}, - * {@code aiMessage(callId, ...)}, {@code end(callId, ...)} etc. issue - * the individual call commands. + *

    Java drives REST calls through the command API on {@code client.calling()}, mirroring Python's + * per-command methods: {@code dial(...)} starts a call, then {@code collect(callId, ...)}, {@code + * aiMessage(callId, ...)}, {@code end(callId, ...)} etc. issue the individual call commands. * - * Set these env vars: - * SIGNALWIRE_PROJECT_ID - your SignalWire project ID - * SIGNALWIRE_API_TOKEN - your SignalWire API token - * SIGNALWIRE_SPACE - your SignalWire space + *

    Set these env vars: SIGNALWIRE_PROJECT_ID - your SignalWire project ID SIGNALWIRE_API_TOKEN - + * your SignalWire API token SIGNALWIRE_SPACE - your SignalWire space */ - import com.signalwire.sdk.rest.RestClient; import com.signalwire.sdk.rest.RestError; import com.signalwire.sdk.rest.namespaces.generated.Calling; - import java.util.List; import java.util.Map; public class RestCallingIvrAndAi { - public static void main(String[] args) { - var client = RestClient.builder().build(); + public static void main(String[] args) { + var client = RestClient.builder().build(); - // 1. Dial — start a call via the calling command API. - System.out.println("Dialing..."); - String callId; - try { - var result = client.calling().dial( - Calling.DialRequest.builder() - .from("+15559876543") - .to("+15551234567") - .extras(Map.of("timeout", 30)) - .build()); - callId = (String) result.get("call_id"); - System.out.println(" Call started: " + callId); - } catch (RestError e) { - System.out.println(" Dial failed (expected in demo): " + e.getStatusCode()); - return; - } + // 1. Dial — start a call via the calling command API. + System.out.println("Dialing..."); + String callId; + try { + var result = + client + .calling() + .dial( + Calling.DialRequest.builder() + .from("+15559876543") + .to("+15551234567") + .extras(Map.of("timeout", 30)) + .build()); + callId = (String) result.get("call_id"); + System.out.println(" Call started: " + callId); + } catch (RestError e) { + System.out.println(" Dial failed (expected in demo): " + e.getStatusCode()); + return; + } - // 2. Play an IVR menu and collect digits via the collect command. - System.out.println("Playing IVR menu and collecting digits..."); - try { - var collectResult = client.calling().collect(callId, - Calling.CollectRequest.builder() - .initialTimeout(10.0) - .digits(Map.of("max", 1, "digit_timeout", 5.0)) - .extras(Map.of( - "media", List.of(Map.of( - "type", "tts", - "params", Map.of("text", - "Press 1 for sales. Press 2 for support. Press 3 for AI assistant.") - )) - )) - .build()); - System.out.println(" Collect result: " + collectResult); - } catch (RestError e) { - System.out.println(" Collect failed: " + e.getStatusCode()); - } + // 2. Play an IVR menu and collect digits via the collect command. + System.out.println("Playing IVR menu and collecting digits..."); + try { + var collectResult = + client + .calling() + .collect( + callId, + Calling.CollectRequest.builder() + .initialTimeout(10.0) + .digits(Map.of("max", 1, "digit_timeout", 5.0)) + .extras( + Map.of( + "media", + List.of( + Map.of( + "type", + "tts", + "params", + Map.of( + "text", + "Press 1 for sales. Press 2 for support. Press 3 for AI assistant."))))) + .build()); + System.out.println(" Collect result: " + collectResult); + } catch (RestError e) { + System.out.println(" Collect failed: " + e.getStatusCode()); + } - // 3. Hand off to an AI agent on the call. - System.out.println("Starting AI agent on call..."); - try { - client.calling().aiMessage(callId, - Calling.AiMessageRequest.builder() - .extras(Map.of( - "prompt", Map.of("text", "You are a helpful support agent."), - "post_prompt", Map.of("text", "Summarize the conversation."), - "params", Map.of("temperature", 0.3) - )) - .build()); - System.out.println(" AI agent started."); - } catch (RestError e) { - System.out.println(" AI failed: " + e.getStatusCode()); - } + // 3. Hand off to an AI agent on the call. + System.out.println("Starting AI agent on call..."); + try { + client + .calling() + .aiMessage( + callId, + Calling.AiMessageRequest.builder() + .extras( + Map.of( + "prompt", Map.of("text", "You are a helpful support agent."), + "post_prompt", Map.of("text", "Summarize the conversation."), + "params", Map.of("temperature", 0.3))) + .build()); + System.out.println(" AI agent started."); + } catch (RestError e) { + System.out.println(" AI failed: " + e.getStatusCode()); } + } } diff --git a/rest/examples/RestCallingPlayAndRecord.java b/rest/examples/RestCallingPlayAndRecord.java index cf430282..1b335704 100644 --- a/rest/examples/RestCallingPlayAndRecord.java +++ b/rest/examples/RestCallingPlayAndRecord.java @@ -1,78 +1,87 @@ -/** +/* * Example: Place a call via the REST API and inspect the result. * - * The Java SDK surfaces native calling via the command API on - * {@code client.calling()} ({@code dial}, {@code play}, {@code end}, ...), - * mirroring Python's per-command methods. See {@code rest/docs/calling.md}. + *

    The Java SDK surfaces native calling via the command API on {@code client.calling()} ({@code + * dial}, {@code play}, {@code end}, ...), mirroring Python's per-command methods. See {@code + * rest/docs/calling.md}. * - * Set these env vars: - * SIGNALWIRE_PROJECT_ID - your SignalWire project ID - * SIGNALWIRE_API_TOKEN - your SignalWire API token - * SIGNALWIRE_SPACE - your SignalWire space + *

    Set these env vars: SIGNALWIRE_PROJECT_ID - your SignalWire project ID SIGNALWIRE_API_TOKEN - + * your SignalWire API token SIGNALWIRE_SPACE - your SignalWire space */ - import com.signalwire.sdk.rest.RestClient; import com.signalwire.sdk.rest.RestError; import com.signalwire.sdk.rest.namespaces.generated.Calling; - import java.util.List; import java.util.Map; public class RestCallingPlayAndRecord { - public static void main(String[] args) { - var client = RestClient.builder().build(); + public static void main(String[] args) { + var client = RestClient.builder().build(); - String callId = null; + String callId = null; - // 1. Dial a number via the calling command API. - System.out.println("Dialing..."); - try { - var result = client.calling().dial( - Calling.DialRequest.builder() - .from("+15559876543") - .to("+15551234567") - .extras(Map.of("timeout", 30)) - .build()); - callId = (String) result.get("call_id"); - System.out.println(" Call started: " + callId); - } catch (RestError e) { - System.out.println(" Dial failed (expected in demo): " + e.getStatusCode()); - return; - } + // 1. Dial a number via the calling command API. + System.out.println("Dialing..."); + try { + var result = + client + .calling() + .dial( + Calling.DialRequest.builder() + .from("+15559876543") + .to("+15551234567") + .extras(Map.of("timeout", 30)) + .build()); + callId = (String) result.get("call_id"); + System.out.println(" Call started: " + callId); + } catch (RestError e) { + System.out.println(" Dial failed (expected in demo): " + e.getStatusCode()); + return; + } - // 2. Play a TTS prompt via the play command. - System.out.println("Sending play..."); - try { - client.calling().play(callId, - Calling.PlayRequest.builder() - .play(List.of(Map.of( - "type", "tts", - "params", Map.of("text", "Please leave a message after the beep.")))) - .extras(Map.of("beep", true)) - .build()); - } catch (RestError e) { - System.out.println(" Play failed: " + e.getStatusCode()); - } + // 2. Play a TTS prompt via the play command. + System.out.println("Sending play..."); + try { + client + .calling() + .play( + callId, + Calling.PlayRequest.builder() + .play( + List.of( + Map.of( + "type", + "tts", + "params", + Map.of("text", "Please leave a message after the beep.")))) + .extras(Map.of("beep", true)) + .build()); + } catch (RestError e) { + System.out.println(" Play failed: " + e.getStatusCode()); + } - // 3. Start recording the call via the record command. - System.out.println("Starting recording..."); - try { - client.calling().record(callId, - Calling.RecordRequest.builder() - .audio(Map.of("format", "mp3", "stereo", true)) - .build()); - } catch (RestError e) { - System.out.println(" Record failed: " + e.getStatusCode()); - } + // 3. Start recording the call via the record command. + System.out.println("Starting recording..."); + try { + client + .calling() + .record( + callId, + Calling.RecordRequest.builder() + .audio(Map.of("format", "mp3", "stereo", true)) + .build()); + } catch (RestError e) { + System.out.println(" Record failed: " + e.getStatusCode()); + } - // 4. Hang up via the end command. - System.out.println("Hanging up..."); - try { - client.calling().end(callId, Calling.EndRequest.builder().build()); - System.out.println(" Call ended."); - } catch (RestError e) { - System.out.println(" Hangup failed: " + e.getStatusCode()); - } + // 4. Hang up via the end command. + System.out.println("Hanging up..."); + try { + client.calling().end(callId, Calling.EndRequest.builder().build()); + System.out.println(" Call ended."); + } catch (RestError e) { + System.out.println(" Hangup failed: " + e.getStatusCode()); } + } } diff --git a/rest/examples/RestDatasphereSearch.java b/rest/examples/RestDatasphereSearch.java index 8bb31d7b..43d793bc 100644 --- a/rest/examples/RestDatasphereSearch.java +++ b/rest/examples/RestDatasphereSearch.java @@ -1,50 +1,59 @@ -/** +/* * Example: Upload a document to Datasphere and run a semantic search. * - * Set these env vars: - * SIGNALWIRE_PROJECT_ID - your SignalWire project ID - * SIGNALWIRE_API_TOKEN - your SignalWire API token - * SIGNALWIRE_SPACE - your SignalWire space + *

    Set these env vars: SIGNALWIRE_PROJECT_ID - your SignalWire project ID SIGNALWIRE_API_TOKEN - + * your SignalWire API token SIGNALWIRE_SPACE - your SignalWire space */ - import com.signalwire.sdk.rest.RestClient; import com.signalwire.sdk.rest.namespaces.generated.DatasphereDocuments; - import java.util.Map; public class RestDatasphereSearch { - public static void main(String[] args) { - var client = RestClient.builder().build(); - - // 1. Create a document. Datasphere ingests documents by URL (the server - // fetches + chunks the content); the request carries `url` (+ optional - // `tags`), not inline text. - System.out.println("Creating document..."); - var doc = client.datasphere().documents().create(Map.of( - "url", "https://example.com/faq.pdf", - "tags", java.util.List.of("faq", "support") - )); - String docId = (String) doc.get("id"); - System.out.println(" Created document: " + docId); - - // 2. Search - System.out.println("\nSearching for 'voice API'..."); - var results = client.datasphere().documents().search( + public static void main(String[] args) { + var client = RestClient.builder().build(); + + // 1. Create a document. Datasphere ingests documents by URL (the server + // fetches + chunks the content); the request carries `url` (+ optional + // `tags`), not inline text. + System.out.println("Creating document..."); + var doc = + client + .datasphere() + .documents() + .create( + Map.of( + "url", + "https://example.com/faq.pdf", + "tags", + java.util.List.of("faq", "support"))); + String docId = (String) doc.get("id"); + System.out.println(" Created document: " + docId); + + // 2. Search + System.out.println("\nSearching for 'voice API'..."); + var results = + client + .datasphere() + .documents() + .search( DatasphereDocuments.SearchRequest.builder() - .queryString("voice API") - .count(5L) - .build()); - System.out.println(" Results: " + results); - - // 3. List all documents - System.out.println("\nListing documents..."); - var docs = client.datasphere().documents().list(); - System.out.println(" Documents: " + docs); - - // 4. Clean up - System.out.println("\nDeleting document " + docId + "..."); - client.datasphere().documents().delete(docId); - System.out.println(" Deleted."); - } + .queryString("voice API") + .count(5L) + .build()); + // SearchResponse is a pure-data DTO with no toString(); concatenating it printed the + // identity hash ("SearchResponse@4488aabb") instead of any result. The results live on + // `chunks`. + System.out.println(" Results: " + results.chunks); + + // 3. List all documents + System.out.println("\nListing documents..."); + var docs = client.datasphere().documents().list(); + System.out.println(" Documents: " + docs); + + // 4. Clean up + System.out.println("\nDeleting document " + docId + "..."); + client.datasphere().documents().delete(docId); + System.out.println(" Deleted."); + } } diff --git a/rest/examples/RestFabricConferencesAndRouting.java b/rest/examples/RestFabricConferencesAndRouting.java index dd44627b..517b2b54 100644 --- a/rest/examples/RestFabricConferencesAndRouting.java +++ b/rest/examples/RestFabricConferencesAndRouting.java @@ -1,69 +1,66 @@ -/** +/* * Example: Conference and call-flow resources via the Fabric API. * - * Fabric subresources have dedicated accessors that mirror Python's - * ({@code client.fabric().callFlows()}, {@code .swmlScripts()}, - * {@code .aiAgents()}, {@code .subscribers().sipEndpoints()}, ...). Live - * video conference sessions are listed via {@code client.video().conferences()}. + *

    Fabric subresources have dedicated accessors that mirror Python's ({@code + * client.fabric().callFlows()}, {@code .swmlScripts()}, {@code .aiAgents()}, {@code + * .subscribers().sipEndpoints()}, ...). Live video conference sessions are listed via {@code + * client.video().conferences()}. * - * Set these env vars: - * SIGNALWIRE_PROJECT_ID - your SignalWire project ID - * SIGNALWIRE_API_TOKEN - your SignalWire API token - * SIGNALWIRE_SPACE - your SignalWire space + *

    Set these env vars: SIGNALWIRE_PROJECT_ID - your SignalWire project ID SIGNALWIRE_API_TOKEN - + * your SignalWire API token SIGNALWIRE_SPACE - your SignalWire space */ - import com.signalwire.sdk.rest.RestClient; import com.signalwire.sdk.rest.RestError; - import java.util.Map; public class RestFabricConferencesAndRouting { - public static void main(String[] args) { - var client = RestClient.builder().build(); + public static void main(String[] args) { + var client = RestClient.builder().build(); - // 1. Create a conference room via the typed sub-namespace - // (Python parity: client.fabric.conference_rooms.create(...)). - System.out.println("Creating conference resource..."); - try { - var conference = client.fabric().conferenceRooms().create(Map.of( - "name", "team-standup", - "max_members", 25, - "record_on_start", true - )); - System.out.println(" Conference: " + conference); - } catch (RestError e) { - System.out.println(" Create failed: " + e.getStatusCode()); - } + // 1. Create a conference room via the typed sub-namespace + // (Python parity: client.fabric.conference_rooms.create(...)). + System.out.println("Creating conference resource..."); + try { + var conference = + client + .fabric() + .conferenceRooms() + .create(Map.of("name", "team-standup", "max_members", 25, "record_on_start", true)); + System.out.println(" Conference: " + conference); + } catch (RestError e) { + System.out.println(" Create failed: " + e.getStatusCode()); + } - // 2. List Fabric resources (filter client-side to type="conference_room"). - System.out.println("\nListing Fabric resources..."); - try { - var items = client.fabric().resources().list(Map.of()); - System.out.println(" Items: " + items); - } catch (RestError e) { - System.out.println(" List failed: " + e.getStatusCode()); - } + // 2. List Fabric resources (filter client-side to type="conference_room"). + System.out.println("\nListing Fabric resources..."); + try { + var items = client.fabric().resources().list(Map.of()); + // ResourceListResponse is a pure-data DTO with no toString(); concatenating it printed the + // identity hash ("ResourceListResponse@4488aabb") instead of any result. The resources live + // on `data`. + System.out.println(" Items: " + items.data); + } catch (RestError e) { + System.out.println(" List failed: " + e.getStatusCode()); + } - // 3. Create a call-flow resource via the typed sub-namespace - // (Python parity: client.fabric.call_flows.create(...)). - System.out.println("\nCreating call flow..."); - try { - var callFlow = client.fabric().callFlows().create(Map.of( - "title", "main-ivr" - )); - System.out.println(" Call flow: " + callFlow); - } catch (RestError e) { - System.out.println(" Create failed: " + e.getStatusCode()); - } + // 3. Create a call-flow resource via the typed sub-namespace + // (Python parity: client.fabric.call_flows.create(...)). + System.out.println("\nCreating call flow..."); + try { + var callFlow = client.fabric().callFlows().create(Map.of("title", "main-ivr")); + System.out.println(" Call flow: " + callFlow); + } catch (RestError e) { + System.out.println(" Create failed: " + e.getStatusCode()); + } - // 4. List live conference sessions via the video namespace. - System.out.println("\nListing live conferences..."); - try { - var liveConferences = client.video().conferences().list(); - System.out.println(" Live: " + liveConferences); - } catch (RestError e) { - System.out.println(" List failed: " + e.getStatusCode()); - } + // 4. List live conference sessions via the video namespace. + System.out.println("\nListing live conferences..."); + try { + var liveConferences = client.video().conferences().list(); + System.out.println(" Live: " + liveConferences); + } catch (RestError e) { + System.out.println(" List failed: " + e.getStatusCode()); } + } } diff --git a/rest/examples/RestFabricSubscribersAndSip.java b/rest/examples/RestFabricSubscribersAndSip.java index e5c334df..c374a277 100644 --- a/rest/examples/RestFabricSubscribersAndSip.java +++ b/rest/examples/RestFabricSubscribersAndSip.java @@ -1,74 +1,86 @@ -/** +/* * Example: Subscriber and SIP endpoint management via the REST API. * - * Java routes Fabric subscribers through {@code client.fabric().subscribers()}; - * SIP endpoints are subscriber-scoped Fabric resources reached via - * {@code client.fabric().subscribers().createSipEndpoint(...)} / - * {@code listSipEndpoints(...)} (matching python/go — there is no standalone - * relay-rest SIP-endpoints namespace). + *

    Java routes Fabric subscribers through {@code client.fabric().subscribers()}; SIP endpoints + * are subscriber-scoped Fabric resources reached via {@code + * client.fabric().subscribers().createSipEndpoint(...)} / {@code listSipEndpoints(...)} (matching + * python/go — there is no standalone relay-rest SIP-endpoints namespace). * - * Set these env vars: - * SIGNALWIRE_PROJECT_ID - your SignalWire project ID - * SIGNALWIRE_API_TOKEN - your SignalWire API token - * SIGNALWIRE_SPACE - your SignalWire space + *

    Set these env vars: SIGNALWIRE_PROJECT_ID - your SignalWire project ID SIGNALWIRE_API_TOKEN - + * your SignalWire API token SIGNALWIRE_SPACE - your SignalWire space */ - import com.signalwire.sdk.rest.RestClient; import com.signalwire.sdk.rest.RestError; import com.signalwire.sdk.rest.namespaces.generated.Subscribers; - import java.util.Map; public class RestFabricSubscribersAndSip { - public static void main(String[] args) { - var client = RestClient.builder().build(); + public static void main(String[] args) { + var client = RestClient.builder().build(); - // 1. Create a Fabric subscriber. - System.out.println("Creating subscriber..."); - try { - var subscriber = client.fabric().subscribers().create(Map.of( - "first_name", "Jane", - "last_name", "Doe", - "email", "jane.doe@example.com" - )); - System.out.println(" Subscriber: " + subscriber); - } catch (RestError e) { - System.out.println(" Create failed: " + e.getStatusCode()); - } + // 1. Create a Fabric subscriber. + System.out.println("Creating subscriber..."); + try { + var subscriber = + client + .fabric() + .subscribers() + .create( + Map.of( + "first_name", "Jane", + "last_name", "Doe", + "email", "jane.doe@example.com")); + System.out.println(" Subscriber: " + subscriber); + } catch (RestError e) { + System.out.println(" Create failed: " + e.getStatusCode()); + } - // 2. List Fabric subscribers. - System.out.println("\nListing subscribers..."); - try { - var subscribers = client.fabric().subscribers().list(); - System.out.println(" Subscribers: " + subscribers); - } catch (RestError e) { - System.out.println(" List failed: " + e.getStatusCode()); - } + // 2. List Fabric subscribers. + System.out.println("\nListing subscribers..."); + try { + var subscribers = client.fabric().subscribers().list(); + System.out.println(" Subscribers: " + subscribers); + } catch (RestError e) { + System.out.println(" List failed: " + e.getStatusCode()); + } - // 3. Create a SIP endpoint for the subscriber (Fabric-scoped). - System.out.println("\nCreating SIP endpoint..."); - try { - var sipEndpoint = client.fabric().subscribers().createSipEndpoint("subscriber-id", - Subscribers.CreateSipEndpointRequest.builder() - .username("jane.doe") - .password("secure-password-here") - // `caller_id` is a spec-declared optional field; extras carries - // any additional spec key not surfaced on the builder. - .extras(Map.of("caller_id", "Jane Doe")) - .build()); - System.out.println(" SIP endpoint: " + sipEndpoint); - } catch (RestError e) { - System.out.println(" Create failed: " + e.getStatusCode()); - } + // 3. Create a SIP endpoint for the subscriber (Fabric-scoped). + System.out.println("\nCreating SIP endpoint..."); + try { + var sipEndpoint = + client + .fabric() + .subscribers() + .createSipEndpoint( + "subscriber-id", + Subscribers.CreateSipEndpointRequest.builder() + .username("jane.doe") + .password("secure-password-here") + // `caller_id` is a spec-declared optional field; extras carries + // any additional spec key not surfaced on the builder. + .extras(Map.of("caller_id", "Jane Doe")) + .build()); + // SubscriberSIPEndpoint is a pure-data DTO with no toString(); concatenating it + // printed the identity hash ("SubscriberSIPEndpoint@4488aabb") instead of the + // endpoint. Print the fields the demo is about. + System.out.println(" SIP endpoint: " + sipEndpoint.id + " " + sipEndpoint.username); + } catch (RestError e) { + System.out.println(" Create failed: " + e.getStatusCode()); + } - // 4. List the subscriber's SIP endpoints. - System.out.println("\nListing SIP endpoints..."); - try { - var sipEndpoints = client.fabric().subscribers().listSipEndpoints("subscriber-id", Map.of()); - System.out.println(" SIP endpoints: " + sipEndpoints); - } catch (RestError e) { - System.out.println(" List failed: " + e.getStatusCode()); - } + // 4. List the subscriber's SIP endpoints. + System.out.println("\nListing SIP endpoints..."); + try { + var sipEndpoints = client.fabric().subscribers().listSipEndpoints("subscriber-id", Map.of()); + // SubscriberSipEndpointListResponse is a pure-data DTO with no toString(); concatenating it + // printed the + // identity hash ("SubscriberSipEndpointListResponse@4488aabb") instead of any result. The + // results live on + // `data`. + System.out.println(" SIP endpoints: " + sipEndpoints.data); + } catch (RestError e) { + System.out.println(" List failed: " + e.getStatusCode()); } + } } diff --git a/rest/examples/RestFabricSwmlAndCallflows.java b/rest/examples/RestFabricSwmlAndCallflows.java index 6c23821c..ea500272 100644 --- a/rest/examples/RestFabricSwmlAndCallflows.java +++ b/rest/examples/RestFabricSwmlAndCallflows.java @@ -1,64 +1,62 @@ -/** +/* * Example: SWML scripts and call flow management via the REST API. * - * SWML scripts live under Fabric at {@code client.fabric().swmlScripts()} - * (matching python/go). Call flows live under {@code client.fabric().callFlows()} - * — the typed sub-namespace that mirrors Python's {@code fabric.call_flows}. + *

    SWML scripts live under Fabric at {@code client.fabric().swmlScripts()} (matching python/go). + * Call flows live under {@code client.fabric().callFlows()} — the typed sub-namespace that mirrors + * Python's {@code fabric.call_flows}. * - * Set these env vars: - * SIGNALWIRE_PROJECT_ID - your SignalWire project ID - * SIGNALWIRE_API_TOKEN - your SignalWire API token - * SIGNALWIRE_SPACE - your SignalWire space + *

    Set these env vars: SIGNALWIRE_PROJECT_ID - your SignalWire project ID SIGNALWIRE_API_TOKEN - + * your SignalWire API token SIGNALWIRE_SPACE - your SignalWire space */ - import com.signalwire.sdk.rest.RestClient; import com.signalwire.sdk.rest.RestError; - -import java.util.List; import java.util.Map; public class RestFabricSwmlAndCallflows { - public static void main(String[] args) { - var client = RestClient.builder().build(); + public static void main(String[] args) { + var client = RestClient.builder().build(); - // 1. Create a SWML script via the Fabric swml_scripts resource. - System.out.println("Creating SWML script..."); - try { - // `contents` is the SWML document as a string (the spec declares it a - // string, not a nested object). - var swmlScript = client.fabric().swmlScripts().create(Map.of( - "name", "greeting-script", - "contents", - "{\"version\":\"1.0.0\",\"sections\":{\"main\":[" - + "{\"answer\":{}}," - + "{\"play\":{\"url\":\"say:Welcome to our service\"}}," - + "{\"hangup\":{}}]}}" - )); - System.out.println(" SWML script: " + swmlScript); - } catch (RestError e) { - System.out.println(" Create failed: " + e.getStatusCode()); - } + // 1. Create a SWML script via the Fabric swml_scripts resource. + System.out.println("Creating SWML script..."); + try { + // `contents` is the SWML document as a string (the spec declares it a + // string, not a nested object). + var swmlScript = + client + .fabric() + .swmlScripts() + .create( + Map.of( + "name", + "greeting-script", + "contents", + "{\"version\":\"1.0.0\",\"sections\":{\"main\":[" + + "{\"answer\":{}}," + + "{\"play\":{\"url\":\"say:Welcome to our service\"}}," + + "{\"hangup\":{}}]}}")); + System.out.println(" SWML script: " + swmlScript); + } catch (RestError e) { + System.out.println(" Create failed: " + e.getStatusCode()); + } - // 2. List SWML scripts. - System.out.println("\nListing SWML scripts..."); - try { - var swmlScripts = client.fabric().swmlScripts().list(); - System.out.println(" Scripts: " + swmlScripts); - } catch (RestError e) { - System.out.println(" List failed: " + e.getStatusCode()); - } + // 2. List SWML scripts. + System.out.println("\nListing SWML scripts..."); + try { + var swmlScripts = client.fabric().swmlScripts().list(); + System.out.println(" Scripts: " + swmlScripts); + } catch (RestError e) { + System.out.println(" List failed: " + e.getStatusCode()); + } - // 3. Create a call flow via the typed sub-namespace - // (Python parity: client.fabric.call_flows.create(...)). - System.out.println("\nCreating call flow..."); - try { - var callFlow = client.fabric().callFlows().create(Map.of( - "title", "main-routing" - )); - System.out.println(" Call flow: " + callFlow); - } catch (RestError e) { - System.out.println(" Create failed: " + e.getStatusCode()); - } + // 3. Create a call flow via the typed sub-namespace + // (Python parity: client.fabric.call_flows.create(...)). + System.out.println("\nCreating call flow..."); + try { + var callFlow = client.fabric().callFlows().create(Map.of("title", "main-routing")); + System.out.println(" Call flow: " + callFlow); + } catch (RestError e) { + System.out.println(" Create failed: " + e.getStatusCode()); } + } } diff --git a/rest/examples/RestManageResources.java b/rest/examples/RestManageResources.java index 1c39f572..98802225 100644 --- a/rest/examples/RestManageResources.java +++ b/rest/examples/RestManageResources.java @@ -1,72 +1,83 @@ -/** +/* * Example: Create an AI agent, search phone numbers, and place a test call. * - * Java funnels AI-agent CRUD through the generic Fabric resources handle - * with {@code type="ai_agent"} — Python's dedicated {@code fabric.ai_agents} - * accessor is not ported (see {@code PORT_OMISSIONS.md}). Phone-number - * search uses the {@code Map} query-param contract; pass - * all values as strings. + *

    Java funnels AI-agent CRUD through the generic Fabric resources handle with {@code + * type="ai_agent"} — Python's dedicated {@code fabric.ai_agents} accessor is not ported (see {@code + * PORT_OMISSIONS.md}). Phone-number search uses the {@code Map} query-param + * contract; pass all values as strings. * - * Set these env vars: - * SIGNALWIRE_PROJECT_ID - your SignalWire project ID - * SIGNALWIRE_API_TOKEN - your SignalWire API token - * SIGNALWIRE_SPACE - your SignalWire space (e.g. example.signalwire.com) + *

    Set these env vars: SIGNALWIRE_PROJECT_ID - your SignalWire project ID SIGNALWIRE_API_TOKEN - + * your SignalWire API token SIGNALWIRE_SPACE - your SignalWire space (e.g. example.signalwire.com) * - * For full HTTP debug output: - * SIGNALWIRE_LOG_LEVEL=debug + *

    For full HTTP debug output: SIGNALWIRE_LOG_LEVEL=debug */ - import com.signalwire.sdk.rest.RestClient; import com.signalwire.sdk.rest.RestError; import com.signalwire.sdk.rest.namespaces.generated.Calling; - import java.util.Map; public class RestManageResources { - public static void main(String[] args) { - var client = RestClient.builder().build(); + public static void main(String[] args) { + var client = RestClient.builder().build(); - // 1. Create an AI agent via the typed sub-namespace - // (Python parity: client.fabric.ai_agents.create(...)). - System.out.println("Creating AI agent..."); - var agent = client.fabric().aiAgents().create(Map.of( - "name", "Demo Support Bot", - "prompt", Map.of("text", "You are a friendly support agent for Acme Corp.") - )); - String agentId = (String) agent.get("id"); - System.out.println(" Created agent: " + agentId); + // 1. Create an AI agent via the typed sub-namespace + // (Python parity: client.fabric.ai_agents.create(...)). + System.out.println("Creating AI agent..."); + var agent = + client + .fabric() + .aiAgents() + .create( + Map.of( + "name", + "Demo Support Bot", + "prompt", + Map.of("text", "You are a friendly support agent for Acme Corp."))); + String agentId = (String) agent.get("id"); + System.out.println(" Created agent: " + agentId); - // 2. List AI agents via the typed sub-namespace. - System.out.println("\nListing AI agents..."); - var resources = client.fabric().aiAgents().list(); - System.out.println(" Found: " + resources); + // 2. List AI agents via the typed sub-namespace. + System.out.println("\nListing AI agents..."); + var resources = client.fabric().aiAgents().list(); + System.out.println(" Found: " + resources); - // 3. Search for a phone number. search() takes Map. - System.out.println("\nSearching for available phone numbers..."); - var available = client.phoneNumbers().search(Map.of( - "areacode", "512", - "max_results", "3" - )); - System.out.println(" Available: " + available); + // 3. Search for a phone number. search() takes Map. + System.out.println("\nSearching for available phone numbers..."); + var available = + client + .phoneNumbers() + .search( + Map.of( + "areacode", "512", + "max_results", "3")); + // AvailablePhoneNumbersResponse is a pure-data DTO with no toString(); concatenating it printed + // the + // identity hash ("AvailablePhoneNumbersResponse@4488aabb") instead of any result. The results + // live on + // `data`. + System.out.println(" Available: " + available.data); - // 4. Place a test call via the calling command API (dial). - System.out.println("\nPlacing a test call..."); - try { - var result = client.calling().dial( - Calling.DialRequest.builder() - .from("+15559876543") - .to("+15551234567") - .url("https://example.com/call-handler") - .build()); - System.out.println(" Call initiated: " + result); - } catch (RestError e) { - System.out.println(" Call failed (expected in demo): " + e.getStatusCode()); - } - - // 5. Clean up: delete the agent. - System.out.println("\nDeleting agent " + agentId + "..."); - client.fabric().aiAgents().delete(agentId); - System.out.println(" Deleted."); + // 4. Place a test call via the calling command API (dial). + System.out.println("\nPlacing a test call..."); + try { + var result = + client + .calling() + .dial( + Calling.DialRequest.builder() + .from("+15559876543") + .to("+15551234567") + .url("https://example.com/call-handler") + .build()); + System.out.println(" Call initiated: " + result); + } catch (RestError e) { + System.out.println(" Call failed (expected in demo): " + e.getStatusCode()); } + + // 5. Clean up: delete the agent. + System.out.println("\nDeleting agent " + agentId + "..."); + client.fabric().aiAgents().delete(agentId); + System.out.println(" Deleted."); + } } diff --git a/rest/examples/RestPhoneNumberManagement.java b/rest/examples/RestPhoneNumberManagement.java index be8f990d..8dd29fdc 100644 --- a/rest/examples/RestPhoneNumberManagement.java +++ b/rest/examples/RestPhoneNumberManagement.java @@ -1,73 +1,70 @@ -/** +/* * Example: Search, buy, update, and release phone numbers. * - * Java's {@code client.phoneNumbers()} namespace exposes CRUD (list / get / - * create / update / delete) plus a {@code search} helper. Python's - * {@code purchase} / {@code release} convenience aliases are folded into - * {@code create} (body includes the number to buy) and {@code delete} - * (releases by ID). Search takes {@code Map} — pass every - * value as a string. + *

    Java's {@code client.phoneNumbers()} namespace exposes CRUD (list / get / create / update / + * delete) plus a {@code search} helper. Python's {@code purchase} / {@code release} convenience + * aliases are folded into {@code create} (body includes the number to buy) and {@code delete} + * (releases by ID). Search takes {@code Map} — pass every value as a string. * - * Set these env vars: - * SIGNALWIRE_PROJECT_ID - your SignalWire project ID - * SIGNALWIRE_API_TOKEN - your SignalWire API token - * SIGNALWIRE_SPACE - your SignalWire space + *

    Set these env vars: SIGNALWIRE_PROJECT_ID - your SignalWire project ID SIGNALWIRE_API_TOKEN - + * your SignalWire API token SIGNALWIRE_SPACE - your SignalWire space */ - import com.signalwire.sdk.rest.RestClient; import com.signalwire.sdk.rest.RestError; - import java.util.Map; public class RestPhoneNumberManagement { - public static void main(String[] args) { - var client = RestClient.builder().build(); + public static void main(String[] args) { + var client = RestClient.builder().build(); - // 1. Search for available numbers (all values as strings). - System.out.println("Searching for available phone numbers in area code 512..."); - try { - var results = client.phoneNumbers().search(Map.of( - "areacode", "512", - "max_results", "5" - )); - System.out.println(" Available: " + results); - } catch (RestError e) { - System.out.println(" Search failed: " + e.getStatusCode()); - } + // 1. Search for available numbers (all values as strings). + System.out.println("Searching for available phone numbers in area code 512..."); + try { + var results = + client + .phoneNumbers() + .search( + Map.of( + "areacode", "512", + "max_results", "5")); + // AvailablePhoneNumbersResponse is a pure-data DTO with no toString(); concatenating it + // printed the + // identity hash ("AvailablePhoneNumbersResponse@4488aabb") instead of any result. The numbers + // live on `data`. + System.out.println(" Available: " + results.data); + } catch (RestError e) { + System.out.println(" Search failed: " + e.getStatusCode()); + } - // 2. List owned numbers. - System.out.println("\nListing owned phone numbers..."); - try { - var owned = client.phoneNumbers().list(); - System.out.println(" Owned numbers: " + owned); - } catch (RestError e) { - System.out.println(" List failed: " + e.getStatusCode()); - } + // 2. List owned numbers. + System.out.println("\nListing owned phone numbers..."); + try { + var owned = client.phoneNumbers().list(); + System.out.println(" Owned numbers: " + owned); + } catch (RestError e) { + System.out.println(" List failed: " + e.getStatusCode()); + } - // 3. Purchase a number via create(). - System.out.println("\nPurchasing a phone number..."); - try { - var purchased = client.phoneNumbers().create(Map.of( - "number", "+15125551234" - )); - String numberId = (String) purchased.get("id"); - System.out.println(" Purchased: " + numberId); + // 3. Purchase a number via create(). + System.out.println("\nPurchasing a phone number..."); + try { + var purchased = client.phoneNumbers().create(Map.of("number", "+15125551234")); + String numberId = (String) purchased.get("id"); + System.out.println(" Purchased: " + numberId); - // 4. Update the number (e.g. rename). - System.out.println("\nUpdating phone number..."); - client.phoneNumbers().update(numberId, Map.of( - "name", "Main Office Line" - )); - System.out.println(" Updated."); + // 4. Update the number (e.g. rename). + System.out.println("\nUpdating phone number..."); + client.phoneNumbers().update(numberId, Map.of("name", "Main Office Line")); + System.out.println(" Updated."); - // 5. Release the number via delete(). - System.out.println("\nReleasing phone number..."); - client.phoneNumbers().delete(numberId); - System.out.println(" Released."); + // 5. Release the number via delete(). + System.out.println("\nReleasing phone number..."); + client.phoneNumbers().delete(numberId); + System.out.println(" Released."); - } catch (RestError e) { - System.out.println(" Operation failed (expected in demo): " + e.getStatusCode()); - } + } catch (RestError e) { + System.out.println(" Operation failed (expected in demo): " + e.getStatusCode()); } + } } diff --git a/rest/examples/RestQueuesMfaAndRecordings.java b/rest/examples/RestQueuesMfaAndRecordings.java index f91515ea..c9f5796f 100644 --- a/rest/examples/RestQueuesMfaAndRecordings.java +++ b/rest/examples/RestQueuesMfaAndRecordings.java @@ -1,66 +1,60 @@ -/** +/* * Example: Queue and recording management via the REST API. * - * The Java SDK exposes queue CRUD directly on {@code client.queues()} - * (list/create/get/update/delete) and recordings (read-only list/get/delete) - * directly on {@code client.recordings()}, matching Python parity. MFA - * verification is not - * surfaced on the Java port — see {@code PORT_OMISSIONS.md}; it is - * typically invoked via the messaging or voice flows. + *

    The Java SDK exposes queue CRUD directly on {@code client.queues()} + * (list/create/get/update/delete) and recordings (read-only list/get/delete) directly on {@code + * client.recordings()}, matching Python parity. MFA verification is not surfaced on the Java port — + * see {@code PORT_OMISSIONS.md}; it is typically invoked via the messaging or voice flows. * - * Set these env vars: - * SIGNALWIRE_PROJECT_ID - your SignalWire project ID - * SIGNALWIRE_API_TOKEN - your SignalWire API token - * SIGNALWIRE_SPACE - your SignalWire space + *

    Set these env vars: SIGNALWIRE_PROJECT_ID - your SignalWire project ID SIGNALWIRE_API_TOKEN - + * your SignalWire API token SIGNALWIRE_SPACE - your SignalWire space */ - import com.signalwire.sdk.rest.RestClient; import com.signalwire.sdk.rest.RestError; - import java.util.Map; public class RestQueuesMfaAndRecordings { - public static void main(String[] args) { - var client = RestClient.builder().build(); + public static void main(String[] args) { + var client = RestClient.builder().build(); - // 1. List call queues via the queues namespace. - System.out.println("Listing queues..."); - try { - var queues = client.queues().list(); - System.out.println(" Queues: " + queues); - } catch (RestError e) { - System.out.println(" List failed: " + e.getStatusCode()); - } + // 1. List call queues via the queues namespace. + System.out.println("Listing queues..."); + try { + var queues = client.queues().list(); + System.out.println(" Queues: " + queues); + } catch (RestError e) { + System.out.println(" List failed: " + e.getStatusCode()); + } - // 2. Create a queue. - System.out.println("\nCreating a queue..."); - try { - var queue = client.queues().create(Map.of( - "name", "support-queue", - "max_size", 50 - )); - System.out.println(" Queue created: " + queue); - } catch (RestError e) { - System.out.println(" Create failed: " + e.getStatusCode()); - } + // 2. Create a queue. + System.out.println("\nCreating a queue..."); + try { + var queue = client.queues().create(Map.of("name", "support-queue", "max_size", 50)); + System.out.println(" Queue created: " + queue); + } catch (RestError e) { + System.out.println(" Create failed: " + e.getStatusCode()); + } - // 3. List recordings via the recordings namespace. - System.out.println("\nListing recordings..."); - try { - var recordings = client.recordings().list(Map.of()); - System.out.println(" Recordings: " + recordings); - } catch (RestError e) { - System.out.println(" List failed: " + e.getStatusCode()); - } + // 3. List recordings via the recordings namespace. + System.out.println("\nListing recordings..."); + try { + var recordings = client.recordings().list(Map.of()); + // RecordingListResponse is a pure-data DTO with no toString(); concatenating it printed the + // identity hash ("RecordingListResponse@4488aabb") instead of any result. The results live on + // `data`. + System.out.println(" Recordings: " + recordings.data); + } catch (RestError e) { + System.out.println(" List failed: " + e.getStatusCode()); + } - // 4. Fetch a specific recording by ID (demo). - System.out.println("\nFetching a recording by ID (demo)..."); - try { - var recording = client.recordings().get("example-recording-id", Map.of()); - System.out.println(" Recording: " + recording); - } catch (RestError e) { - System.out.println(" Fetch failed (expected in demo): " + e.getStatusCode()); - } + // 4. Fetch a specific recording by ID (demo). + System.out.println("\nFetching a recording by ID (demo)..."); + try { + var recording = client.recordings().get("example-recording-id", Map.of()); + System.out.println(" Recording: " + recording); + } catch (RestError e) { + System.out.println(" Fetch failed (expected in demo): " + e.getStatusCode()); } + } } diff --git a/rest/examples/RestVideoRooms.java b/rest/examples/RestVideoRooms.java index 6e394cd1..655dbe78 100644 --- a/rest/examples/RestVideoRooms.java +++ b/rest/examples/RestVideoRooms.java @@ -1,61 +1,66 @@ -/** +/* * Example: Video room management -- create, list, and manage video rooms. * - * Set these env vars: - * SIGNALWIRE_PROJECT_ID - your SignalWire project ID - * SIGNALWIRE_API_TOKEN - your SignalWire API token - * SIGNALWIRE_SPACE - your SignalWire space + *

    Set these env vars: SIGNALWIRE_PROJECT_ID - your SignalWire project ID SIGNALWIRE_API_TOKEN - + * your SignalWire API token SIGNALWIRE_SPACE - your SignalWire space */ - import com.signalwire.sdk.rest.RestClient; import com.signalwire.sdk.rest.RestError; - import java.util.Map; public class RestVideoRooms { - public static void main(String[] args) { - var client = RestClient.builder().build(); + public static void main(String[] args) { + var client = RestClient.builder().build(); - // 1. Create a video room - System.out.println("Creating video room..."); - try { - var room = client.video().rooms().create(Map.of( - "name", "team-meeting", - "max_members", 10, - "quality", "1080p", - "layout", "grid-responsive" - )); - System.out.println(" Room: " + room); - } catch (RestError e) { - System.out.println(" Create failed: " + e.getStatusCode()); - } + // 1. Create a video room + System.out.println("Creating video room..."); + try { + var room = + client + .video() + .rooms() + .create( + Map.of( + "name", "team-meeting", + "max_members", 10, + "quality", "1080p", + "layout", "grid-responsive")); + System.out.println(" Room: " + room); + } catch (RestError e) { + System.out.println(" Create failed: " + e.getStatusCode()); + } - // 2. List video rooms - System.out.println("\nListing video rooms..."); - try { - var rooms = client.video().rooms().list(); - System.out.println(" Rooms: " + rooms); - } catch (RestError e) { - System.out.println(" List failed: " + e.getStatusCode()); - } + // 2. List video rooms + System.out.println("\nListing video rooms..."); + try { + var rooms = client.video().rooms().list(); + System.out.println(" Rooms: " + rooms); + } catch (RestError e) { + System.out.println(" List failed: " + e.getStatusCode()); + } - // 3. List video room sessions (the live / historical room-instance feed). - System.out.println("\nListing video sessions..."); - try { - var sessions = client.video().roomSessions().list(); - System.out.println(" Sessions: " + sessions); - } catch (RestError e) { - System.out.println(" List failed: " + e.getStatusCode()); - } + // 3. List video room sessions (the live / historical room-instance feed). + System.out.println("\nListing video sessions..."); + try { + var sessions = client.video().roomSessions().list(); + System.out.println(" Sessions: " + sessions); + } catch (RestError e) { + System.out.println(" List failed: " + e.getStatusCode()); + } - // 4. List video recordings - System.out.println("\nListing video recordings..."); - try { - var recordings = client.video().roomRecordings().list(Map.of()); - System.out.println(" Recordings: " + recordings); - } catch (RestError e) { - System.out.println(" List failed: " + e.getStatusCode()); - } + // 4. List video recordings + System.out.println("\nListing video recordings..."); + try { + var recordings = client.video().roomRecordings().list(Map.of()); + // ListRoomRecordingsResponse is a pure-data DTO with no toString(); concatenating it printed + // the + // identity hash ("ListRoomRecordingsResponse@4488aabb") instead of any result. The results + // live on + // `data`. + System.out.println(" Recordings: " + recordings.data); + } catch (RestError e) { + System.out.println(" List failed: " + e.getStatusCode()); } + } } diff --git a/scripts/SignatureDump.java b/scripts/SignatureDump.java index 26d11155..8ddbb253 100644 --- a/scripts/SignatureDump.java +++ b/scripts/SignatureDump.java @@ -3,7 +3,8 @@ // // Usage: // javac scripts/SignatureDump.java -d build/scripts -// java -cp build/scripts:build/libs/signalwire-sdk-4.0.0.jar: SignatureDump > raw_dump.json +// java -cp build/scripts:build/libs/signalwire-sdk-4.0.0.jar: SignatureDump > +// raw_dump.json // // The Python wrapper (enumerate_signatures.py) consumes this JSON, // applies the existing class/method-name translation tables from @@ -40,8 +41,8 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.lang.reflect.Parameter; -import java.lang.reflect.Type; import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; @@ -56,305 +57,325 @@ public class SignatureDump { - public static void main(String[] args) throws Exception { - if (args.length < 1) { - System.err.println("usage: SignatureDump "); - System.exit(2); - } - String jarPath = args[0]; - - URL[] urls = { new File(jarPath).toURI().toURL() }; - // Parent loader is system so JDK types resolve; SDK types come from - // the URL classloader. - URLClassLoader loader = new URLClassLoader(urls, SignatureDump.class.getClassLoader()); + public static void main(String[] args) throws Exception { + if (args.length < 1) { + System.err.println("usage: SignatureDump "); + System.exit(2); + } + String jarPath = args[0]; - List classNames = new ArrayList<>(); - try (JarFile jar = new JarFile(jarPath)) { - Enumeration entries = jar.entries(); - while (entries.hasMoreElements()) { - JarEntry e = entries.nextElement(); - String n = e.getName(); - if (!n.endsWith(".class")) continue; - if (n.contains("$")) continue; // skip nested / synthetic - if (n.equals("module-info.class")) continue; - String cls = n.substring(0, n.length() - ".class".length()).replace('/', '.'); - if (!cls.startsWith("com.signalwire")) continue; - classNames.add(cls); - } - } - Collections.sort(classNames); + URL[] urls = {new File(jarPath).toURI().toURL()}; + // Parent loader is system so JDK types resolve; SDK types come from + // the URL classloader. + URLClassLoader loader = new URLClassLoader(urls, SignatureDump.class.getClassLoader()); - StringBuilder out = new StringBuilder(); - out.append("{\n \"types\": ["); - boolean first = true; - for (String cls : classNames) { - Class c; - try { - c = Class.forName(cls, false, loader); - } catch (Throwable t) { - System.err.println("skipping " + cls + ": " + t.getMessage()); - continue; - } - int mods = c.getModifiers(); - if (!Modifier.isPublic(mods)) continue; - if (!first) out.append(","); - first = false; - out.append("\n ").append(dumpType(c)); - // Walk public nested classes (Java idiom collapses related - // resource classes into a single namespace file; cross-language - // surface auditing needs each nested class as its own type entry - // so it lines up with Python's class-per-file layout). - for (Class nested : collectNestedPublic(c)) { - out.append(","); - out.append("\n ").append(dumpType(nested)); - } - } - out.append("\n ]\n}\n"); - System.out.print(out.toString()); + List classNames = new ArrayList<>(); + try (JarFile jar = new JarFile(jarPath)) { + Enumeration entries = jar.entries(); + while (entries.hasMoreElements()) { + JarEntry e = entries.nextElement(); + String n = e.getName(); + if (!n.endsWith(".class")) continue; + if (n.contains("$")) continue; // skip nested / synthetic + if ("module-info.class".equals(n)) continue; + String cls = n.substring(0, n.length() - ".class".length()).replace('/', '.'); + if (!cls.startsWith("com.signalwire")) continue; + classNames.add(cls); + } } + Collections.sort(classNames); - /** - * Recursively collect every public nested class within {@code outer}, - * skipping nested annotations and the outer class itself. - */ - static List> collectNestedPublic(Class outer) { - List> result = new ArrayList<>(); - try { - Class[] declared = outer.getDeclaredClasses(); - Arrays.sort(declared, Comparator.comparing(Class::getSimpleName)); - for (Class nested : declared) { - if (!Modifier.isPublic(nested.getModifiers())) continue; - if (nested.isAnnotation()) continue; - result.add(nested); - result.addAll(collectNestedPublic(nested)); - } - } catch (Throwable t) { - // best-effort - } - return result; + StringBuilder out = new StringBuilder(); + out.append("{\n \"types\": ["); + boolean first = true; + for (String cls : classNames) { + Class c; + try { + c = Class.forName(cls, false, loader); + } catch (Exception | LinkageError t) { + // A class whose optional compile-only dep (e.g. javax.servlet) is absent + // from this classpath raises NoClassDefFoundError — a LinkageError, not an + // Exception — so both arms are required. Narrower than Throwable, which + // would also swallow OutOfMemoryError/StackOverflowError and turn a real + // JVM failure into a silently short signature dump. + System.err.println("skipping " + cls + ": " + t.getMessage()); + continue; + } + int mods = c.getModifiers(); + if (!Modifier.isPublic(mods)) continue; + if (!first) out.append(","); + first = false; + out.append("\n ").append(dumpType(c)); + // Walk public nested classes (Java idiom collapses related + // resource classes into a single namespace file; cross-language + // surface auditing needs each nested class as its own type entry + // so it lines up with Python's class-per-file layout). + for (Class nested : collectNestedPublic(c)) { + out.append(","); + out.append("\n ").append(dumpType(nested)); + } } + out.append("\n ]\n}\n"); + System.out.print(out.toString()); + } - /** - * True when {@code c} is a strict subclass of the REST {@code ReadResource} base (i.e. inherits - * its {@code paginate()} / {@code list()} / {@code get()}), but not {@code ReadResource} itself. - * Detected by simple-name walk up the superclass chain to avoid a hard dependency on the class - * being loadable by name. - */ - static boolean extendsReadResource(Class c) { - for (Class s = c.getSuperclass(); s != null && s != Object.class; s = s.getSuperclass()) { - if ("ReadResource".equals(s.getSimpleName()) - && s.getName().startsWith("com.signalwire.sdk.rest.")) { - return true; - } - } - return false; + /** + * Recursively collect every public nested class within {@code outer}, skipping nested annotations + * and the outer class itself. + */ + static List> collectNestedPublic(Class outer) { + List> result = new ArrayList<>(); + try { + Class[] declared = outer.getDeclaredClasses(); + Arrays.sort(declared, Comparator.comparing(Class::getSimpleName)); + for (Class nested : declared) { + if (!Modifier.isPublic(nested.getModifiers())) continue; + if (nested.isAnnotation()) continue; + result.add(nested); + result.addAll(collectNestedPublic(nested)); + } + } catch (Exception | LinkageError t) { + // best-effort: getDeclaredClasses() raises NoClassDefFoundError (a LinkageError) + // when a nested type references an absent optional dep. Not Throwable — a JVM + // Error must still propagate. } + return result; + } - static String dumpType(Class c) { - StringBuilder sb = new StringBuilder(); - String pkg = c.getPackageName(); - String name = c.getSimpleName(); - String kind = c.isInterface() ? "interface" - : c.isEnum() ? "enum" - : c.isAnnotation() ? "annotation" - : "class"; - - sb.append("{\n"); - sb.append(" \"package\": ").append(jsonString(pkg)).append(",\n"); - sb.append(" \"name\": ").append(jsonString(name)).append(",\n"); - sb.append(" \"kind\": ").append(jsonString(kind)).append(",\n"); - sb.append(" \"methods\": ["); - - List methodEntries = new ArrayList<>(); + /** + * True when {@code c} is a strict subclass of the REST {@code ReadResource} base (i.e. inherits + * its {@code paginate()} / {@code list()} / {@code get()}), but not {@code ReadResource} itself. + * Detected by simple-name walk up the superclass chain to avoid a hard dependency on the class + * being loadable by name. + */ + static boolean extendsReadResource(Class c) { + for (Class s = c.getSuperclass(); s != null && s != Object.class; s = s.getSuperclass()) { + if ("ReadResource".equals(s.getSimpleName()) + && s.getName().startsWith("com.signalwire.sdk.rest.")) { + return true; + } + } + return false; + } - // Constructors. Sort by param count, then by the full parameter-type - // signature so overloaded ctors with the SAME count get a stable total - // order — reflection's getDeclaredConstructors() order is unspecified - // and varies run-to-run, which otherwise churns port_signatures.json. - Constructor[] ctors = c.getDeclaredConstructors(); - Arrays.sort( - ctors, - Comparator.>comparingInt(Constructor::getParameterCount) - .thenComparing(SignatureDump::paramTypeSig)); - for (Constructor k : ctors) { - if (!Modifier.isPublic(k.getModifiers())) continue; - methodEntries.add(dumpConstructor(k)); - } + static String dumpType(Class c) { + StringBuilder sb = new StringBuilder(); + String pkg = c.getPackageName(); + String name = c.getSimpleName(); + String kind = + c.isInterface() + ? "interface" + : c.isEnum() ? "enum" : c.isAnnotation() ? "annotation" : "class"; - // Methods. Sort by name, then by the full parameter-type signature: - // OVERLOADED methods share a name, and Comparator.comparing is stable, - // so name-only ties keep getDeclaredMethods()'s order — which the JVM - // does NOT guarantee across runs, making port_signatures.json - // non-deterministic. The param-type tiebreaker gives a stable total order. - Method[] methods = c.getDeclaredMethods(); - Arrays.sort( - methods, - Comparator.comparing(Method::getName) - .thenComparing(SignatureDump::paramTypeSig)); - Set declaredMethodNames = new java.util.HashSet<>(); - for (Method m : methods) { - if (!Modifier.isPublic(m.getModifiers())) continue; - if (m.isSynthetic() || m.isBridge()) continue; - // Skip Object overrides - if (m.getDeclaringClass() == Object.class) continue; - declaredMethodNames.add(m.getName()); - methodEntries.add(dumpMethod(m)); - } + sb.append("{\n"); + sb.append(" \"package\": ").append(jsonString(pkg)).append(",\n"); + sb.append(" \"name\": ").append(jsonString(name)).append(",\n"); + sb.append(" \"kind\": ").append(jsonString(kind)).append(",\n"); + sb.append(" \"methods\": ["); - // Inherited paginate(): the read/CRUD leaf resources (FaxLogs, VoiceLogs, - // MessageLogs, VideoRoomSessions, FabricAddresses, ...) extend ReadResource - // and inherit its paginate() but DECLARE only their constructor. Python's - // reference enumerator surfaces inherited paginate() on those subclasses, - // and the cross-port signature differ checks paginate per-method (it is not - // a CRUD verb the crud_base binding covers). So project the inherited - // ReadResource.paginate() onto every ReadResource subclass here, matching - // how list/get are inherited — otherwise every read-resource leaf drifts on - // a phantom "missing-port paginate". Only the no-arg overload is projected - // (the oracle records paginate(self)); a subclass that overrides paginate - // keeps its own declaration. - if (extendsReadResource(c) && !declaredMethodNames.contains("paginate")) { - try { - Method pag = c.getMethod("paginate"); - methodEntries.add(dumpMethod(pag)); - } catch (Throwable ignored) { - // best-effort: if paginate can't be resolved, skip. - } - } + List methodEntries = new ArrayList<>(); - // Public fields — Python's reference adapter projects instance - // attributes whose type is an SDK class as zero-arg accessor - // methods (RestClient.fabric -> FabricNamespace). Mirror that for - // Java's idiomatic ``public final FabricNamespace fabric;`` so - // the cross-language audit lines up. Filtering to SDK classes - // happens later in enumerate_signatures.py via the same rule. - java.lang.reflect.Field[] fields = c.getDeclaredFields(); - Arrays.sort(fields, Comparator.comparing(java.lang.reflect.Field::getName)); - for (java.lang.reflect.Field f : fields) { - if (!Modifier.isPublic(f.getModifiers())) continue; - if (f.isSynthetic()) continue; - methodEntries.add(dumpField(f)); - } + // Constructors. Sort by param count, then by the full parameter-type + // signature so overloaded ctors with the SAME count get a stable total + // order — reflection's getDeclaredConstructors() order is unspecified + // and varies run-to-run, which otherwise churns port_signatures.json. + Constructor[] ctors = c.getDeclaredConstructors(); + Arrays.sort( + ctors, + Comparator.>comparingInt(Constructor::getParameterCount) + .thenComparing(SignatureDump::paramTypeSig)); + for (Constructor k : ctors) { + if (!Modifier.isPublic(k.getModifiers())) continue; + methodEntries.add(dumpConstructor(k)); + } - for (int i = 0; i < methodEntries.size(); i++) { - if (i > 0) sb.append(","); - sb.append("\n ").append(methodEntries.get(i)); - } - sb.append("\n ]\n }"); - return sb.toString(); + // Methods. Sort by name, then by the full parameter-type signature: + // OVERLOADED methods share a name, and Comparator.comparing is stable, + // so name-only ties keep getDeclaredMethods()'s order — which the JVM + // does NOT guarantee across runs, making port_signatures.json + // non-deterministic. The param-type tiebreaker gives a stable total order. + Method[] methods = c.getDeclaredMethods(); + Arrays.sort( + methods, Comparator.comparing(Method::getName).thenComparing(SignatureDump::paramTypeSig)); + Set declaredMethodNames = new java.util.HashSet<>(); + for (Method m : methods) { + if (!Modifier.isPublic(m.getModifiers())) continue; + if (m.isSynthetic() || m.isBridge()) continue; + // Skip Object overrides + if (m.getDeclaringClass() == Object.class) continue; + declaredMethodNames.add(m.getName()); + methodEntries.add(dumpMethod(m)); } - /** - * A stable, deterministic string of an executable's parameter types, used - * ONLY as a sort tiebreaker so overloaded methods/constructors (same name / - * same param count) get a fixed order independent of reflection's - * unspecified getDeclared*() ordering. Not emitted into the output — purely - * for sorting. Uses Type.getTypeName() for the full (generic-aware) spelling. - */ - static String paramTypeSig(java.lang.reflect.Executable e) { - StringBuilder sb = new StringBuilder(); - for (Type t : e.getGenericParameterTypes()) { - sb.append(t.getTypeName()).append(','); - } - return sb.toString(); + // Inherited paginate(): the read/CRUD leaf resources (FaxLogs, VoiceLogs, + // MessageLogs, VideoRoomSessions, FabricAddresses, ...) extend ReadResource + // and inherit its paginate() but DECLARE only their constructor. Python's + // reference enumerator surfaces inherited paginate() on those subclasses, + // and the cross-port signature differ checks paginate per-method (it is not + // a CRUD verb the crud_base binding covers). So project the inherited + // ReadResource.paginate() onto every ReadResource subclass here, matching + // how list/get are inherited — otherwise every read-resource leaf drifts on + // a phantom "missing-port paginate". Only the no-arg overload is projected + // (the oracle records paginate(self)); a subclass that overrides paginate + // keeps its own declaration. + if (extendsReadResource(c) && !declaredMethodNames.contains("paginate")) { + try { + Method pag = c.getMethod("paginate"); + methodEntries.add(dumpMethod(pag)); + } catch (Exception | LinkageError ignored) { + // best-effort: if paginate can't be resolved, skip. NoSuchMethodException is an + // Exception; a paginate() whose signature references an absent optional dep + // raises NoClassDefFoundError (a LinkageError). Not Throwable. + } } - static String dumpConstructor(Constructor k) { - StringBuilder sb = new StringBuilder(); - sb.append("{"); - sb.append("\"name\":\"\","); - sb.append("\"is_constructor\":true,"); - sb.append("\"is_static\":false,"); - sb.append("\"parameters\":").append(dumpParams(k.getParameters(), k.getGenericParameterTypes())).append(","); - sb.append("\"return_type\":\"void\""); - sb.append("}"); - return sb.toString(); + // Public fields — Python's reference adapter projects instance + // attributes whose type is an SDK class as zero-arg accessor + // methods (RestClient.fabric -> FabricNamespace). Mirror that for + // Java's idiomatic ``public final FabricNamespace fabric;`` so + // the cross-language audit lines up. Filtering to SDK classes + // happens later in enumerate_signatures.py via the same rule. + java.lang.reflect.Field[] fields = c.getDeclaredFields(); + Arrays.sort(fields, Comparator.comparing(java.lang.reflect.Field::getName)); + for (java.lang.reflect.Field f : fields) { + if (!Modifier.isPublic(f.getModifiers())) continue; + if (f.isSynthetic()) continue; + methodEntries.add(dumpField(f)); } - static String dumpMethod(Method m) { - StringBuilder sb = new StringBuilder(); - sb.append("{"); - sb.append("\"name\":").append(jsonString(m.getName())).append(","); - sb.append("\"is_constructor\":false,"); - sb.append("\"is_static\":").append(Modifier.isStatic(m.getModifiers())).append(","); - sb.append("\"parameters\":").append(dumpParams(m.getParameters(), m.getGenericParameterTypes())).append(","); - sb.append("\"return_type\":").append(jsonString(typeName(m.getGenericReturnType()))); - sb.append("}"); - return sb.toString(); + for (int i = 0; i < methodEntries.size(); i++) { + if (i > 0) sb.append(","); + sb.append("\n ").append(methodEntries.get(i)); } + sb.append("\n ]\n }"); + return sb.toString(); + } - // Synthesize a "method" entry from a public field so Python's - // attribute-projection convention (RestClient.fabric) lines up with - // Java's ``public final FabricNamespace fabric``. - static String dumpField(java.lang.reflect.Field f) { - StringBuilder sb = new StringBuilder(); - sb.append("{"); - sb.append("\"name\":").append(jsonString(f.getName())).append(","); - sb.append("\"is_constructor\":false,"); - sb.append("\"is_field\":true,"); - sb.append("\"is_static\":").append(Modifier.isStatic(f.getModifiers())).append(","); - sb.append("\"parameters\":[],"); - sb.append("\"return_type\":").append(jsonString(typeName(f.getGenericType()))); - sb.append("}"); - return sb.toString(); + /** + * A stable, deterministic string of an executable's parameter types, used ONLY as a sort + * tiebreaker so overloaded methods/constructors (same name / same param count) get a fixed order + * independent of reflection's unspecified getDeclared*() ordering. Not emitted into the output — + * purely for sorting. Uses Type.getTypeName() for the full (generic-aware) spelling. + */ + static String paramTypeSig(java.lang.reflect.Executable e) { + StringBuilder sb = new StringBuilder(); + for (Type t : e.getGenericParameterTypes()) { + sb.append(t.getTypeName()).append(','); } + return sb.toString(); + } + + static String dumpConstructor(Constructor k) { + StringBuilder sb = new StringBuilder(); + sb.append("{"); + sb.append("\"name\":\"\","); + sb.append("\"is_constructor\":true,"); + sb.append("\"is_static\":false,"); + sb.append("\"parameters\":") + .append(dumpParams(k.getParameters(), k.getGenericParameterTypes())) + .append(","); + sb.append("\"return_type\":\"void\""); + sb.append("}"); + return sb.toString(); + } - static String dumpParams(Parameter[] params, Type[] genericTypes) { - StringBuilder sb = new StringBuilder("["); - for (int i = 0; i < params.length; i++) { - if (i > 0) sb.append(","); - Parameter p = params[i]; - Type t = genericTypes[i]; - sb.append("{"); - sb.append("\"name\":").append(jsonString(p.getName())).append(","); - sb.append("\"type\":").append(jsonString(typeName(t))).append(","); - sb.append("\"is_varargs\":").append(p.isVarArgs()); - sb.append("}"); - } - sb.append("]"); - return sb.toString(); + static String dumpMethod(Method m) { + StringBuilder sb = new StringBuilder(); + sb.append("{"); + sb.append("\"name\":").append(jsonString(m.getName())).append(","); + sb.append("\"is_constructor\":false,"); + sb.append("\"is_static\":").append(Modifier.isStatic(m.getModifiers())).append(","); + sb.append("\"parameters\":") + .append(dumpParams(m.getParameters(), m.getGenericParameterTypes())) + .append(","); + sb.append("\"return_type\":").append(jsonString(typeName(m.getGenericReturnType()))); + sb.append("}"); + return sb.toString(); + } + + // Synthesize a "method" entry from a public field so Python's + // attribute-projection convention (RestClient.fabric) lines up with + // Java's ``public final FabricNamespace fabric``. + static String dumpField(java.lang.reflect.Field f) { + StringBuilder sb = new StringBuilder(); + sb.append("{"); + sb.append("\"name\":").append(jsonString(f.getName())).append(","); + sb.append("\"is_constructor\":false,"); + sb.append("\"is_field\":true,"); + sb.append("\"is_static\":").append(Modifier.isStatic(f.getModifiers())).append(","); + sb.append("\"parameters\":[],"); + sb.append("\"return_type\":").append(jsonString(typeName(f.getGenericType()))); + sb.append("}"); + return sb.toString(); + } + + static String dumpParams(Parameter[] params, Type[] genericTypes) { + StringBuilder sb = new StringBuilder("["); + for (int i = 0; i < params.length; i++) { + if (i > 0) sb.append(","); + Parameter p = params[i]; + Type t = genericTypes[i]; + sb.append("{"); + sb.append("\"name\":").append(jsonString(p.getName())).append(","); + sb.append("\"type\":").append(jsonString(typeName(t))).append(","); + sb.append("\"is_varargs\":").append(p.isVarArgs()); + sb.append("}"); } + sb.append("]"); + return sb.toString(); + } - static String typeName(Type t) { - if (t instanceof Class) { - Class c = (Class) t; - if (c.isArray()) { - return typeName(c.getComponentType()) + "[]"; - } - return c.getName(); - } - if (t instanceof ParameterizedType) { - ParameterizedType pt = (ParameterizedType) t; - StringBuilder sb = new StringBuilder(); - sb.append(typeName(pt.getRawType())); - sb.append("<"); - Type[] args = pt.getActualTypeArguments(); - for (int i = 0; i < args.length; i++) { - if (i > 0) sb.append(","); - sb.append(typeName(args[i])); - } - sb.append(">"); - return sb.toString(); - } - return t.getTypeName(); + static String typeName(Type t) { + if (t instanceof Class) { + Class c = (Class) t; + if (c.isArray()) { + return typeName(c.getComponentType()) + "[]"; + } + return c.getName(); + } + if (t instanceof ParameterizedType) { + ParameterizedType pt = (ParameterizedType) t; + StringBuilder sb = new StringBuilder(); + sb.append(typeName(pt.getRawType())); + sb.append("<"); + Type[] args = pt.getActualTypeArguments(); + for (int i = 0; i < args.length; i++) { + if (i > 0) sb.append(","); + sb.append(typeName(args[i])); + } + sb.append(">"); + return sb.toString(); } + return t.getTypeName(); + } - static String jsonString(String s) { - if (s == null) return "null"; - StringBuilder sb = new StringBuilder("\""); - for (int i = 0; i < s.length(); i++) { - char c = s.charAt(i); - switch (c) { - case '"': sb.append("\\\""); break; - case '\\': sb.append("\\\\"); break; - case '\n': sb.append("\\n"); break; - case '\r': sb.append("\\r"); break; - case '\t': sb.append("\\t"); break; - default: - if (c < 0x20) sb.append(String.format("\\u%04x", (int) c)); - else sb.append(c); - } - } - sb.append("\""); - return sb.toString(); + static String jsonString(String s) { + if (s == null) return "null"; + StringBuilder sb = new StringBuilder("\""); + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + switch (c) { + case '"': + sb.append("\\\""); + break; + case '\\': + sb.append("\\\\"); + break; + case '\n': + sb.append("\\n"); + break; + case '\r': + sb.append("\\r"); + break; + case '\t': + sb.append("\\t"); + break; + default: + if (c < 0x20) sb.append(String.format("\\u%04x", (int) c)); + else sb.append(c); + } } + sb.append("\""); + return sb.toString(); + } } diff --git a/scripts/_env.sh b/scripts/_env.sh index 54a890fe..7f6ebe3a 100755 --- a/scripts/_env.sh +++ b/scripts/_env.sh @@ -127,3 +127,70 @@ sw_gradle() { # shellcheck disable=SC2086 (cd "$REPO_ROOT" && "$GRADLEW" $GRADLE_DAEMON_FLAG --build-cache "$@") } + +# --------------------------------------------------------------------------- +# Python toolchain (ruff) — this repo is a Java SDK, but scripts/ holds +# hand-written Python that is fully load-bearing: the enumerators that produce +# port_signatures.json / port_surface.json (the inputs to the SIGNATURES, SURFACE +# and DRIFT gates) and the generators that emit the committed REST/RELAY/SWML/ +# SWAIG trees. It is linted + formatted at the same bar as everything else, via +# ruff, configured in the repo-root ruff.toml. +# --------------------------------------------------------------------------- + +# sw_ruff — run ruff from the repo root with the repo's config. +# +# The config lives at eng/ruff.toml, NOT the repo root: every other port keeps its +# linter config at the root (.golangci.yml, .rubocop.yml, phpstan.neon, +# clippy.toml, .clang-tidy), but porting-sdk's ROOT-HYGIENE gate has no entry for +# `ruff.toml` and reds on it as root clutter. Since ruff takes --config, filing it +# under eng/ is the honest fix rather than an allowlist entry for a file that can +# perfectly well move. --config is passed HERE, once, so no call site can forget +# it and silently lint under ruff's defaults instead (which would drop the whole +# rule selection and every per-file exemption). +# +# --- PINNED ruff VERSION (local MUST match CI) ------------------------------- +# A floating linter version is a green-locally/red-in-CI generator: CI installs +# fresh (newest release at run time) while local runs whatever was installed +# months ago, so a ruff release that adds a rule or changes a format heuristic +# fails FMT/LINT on code that never changed. The Java half of this repo is +# already fully pinned (spotless 6.25.0, googleJavaFormat 1.22.0, checkstyle +# 10.17.0, errorprone 2.27.1); the Python half was the one hole. +# +# Keep in lockstep with `pip install "ruff==…"` in .github/workflows/{test, +# nightly,publish}.yml. 0.15.21 is the fleet-wide ruff (signalwire-python/perl/ +# php/typescript pin the same). Bump every port at once, with the resulting +# fixes in the same commit. +SW_RUFF_VERSION="0.15.21" +export SW_RUFF_VERSION + +# Fails LOUD with an install hint when ruff is absent, rather than skipping the +# Python half of the gate silently — a gate that quietly does nothing is worse +# than no gate. Also fails loud when the ruff on PATH is not the PINNED version, +# because a local run that disagrees with CI about what passes is exactly the +# failure the pin exists to prevent. SW_ALLOW_TOOL_VERSION_DRIFT=1 downgrades +# the mismatch to a warning, for a deliberate bump-and-reformat run only. +sw_ruff() { + local ver + if ! command -v ruff >/dev/null 2>&1; then + echo "FATAL: ruff not found on PATH — the Python half of FMT/LINT cannot run." >&2 + echo " Install the PINNED version, e.g.:" >&2 + echo " pip install ruff==$SW_RUFF_VERSION" >&2 + echo " pipx install ruff==$SW_RUFF_VERSION" >&2 + return 1 + fi + ver="$(ruff --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)" + if [ "$ver" != "$SW_RUFF_VERSION" ]; then + if [ "${SW_ALLOW_TOOL_VERSION_DRIFT:-0}" = "1" ]; then + echo "WARNING: ruff is '${ver:-unknown}', not the pinned $SW_RUFF_VERSION (drift allowed)." >&2 + else + echo "FATAL: ruff on PATH is '${ver:-unknown}', not the pinned $SW_RUFF_VERSION." >&2 + echo " CI installs exactly $SW_RUFF_VERSION, so a different version here" >&2 + echo " means local and CI disagree about what passes FMT/LINT." >&2 + echo " Install the pin: pip install ruff==$SW_RUFF_VERSION" >&2 + echo " Or set SW_ALLOW_TOOL_VERSION_DRIFT=1 for a deliberate bump run" >&2 + echo " (then update scripts/_env.sh + .github/workflows/*.yml together)." >&2 + return 1 + fi + fi + (cd "$REPO_ROOT" && ruff "$@" --config eng/ruff.toml) +} diff --git a/scripts/enumerate_signatures.py b/scripts/enumerate_signatures.py index c0330c1e..1a1bf507 100644 --- a/scripts/enumerate_signatures.py +++ b/scripts/enumerate_signatures.py @@ -43,15 +43,26 @@ PORT_ROOT.parent / "porting-sdk", Path.home() / "src" / "porting-sdk", ] -PSDK = next((c.resolve() for c in _psdk_candidates if c and c.is_dir()), - (PORT_ROOT.parent / "porting-sdk").resolve()) +PSDK = next( + (c.resolve() for c in _psdk_candidates if c and c.is_dir()), + (PORT_ROOT.parent / "porting-sdk").resolve(), +) +# E402: this import is structurally forced to come after the sys.path insert +# above — enumerate_surface is a SIBLING script in scripts/, not an installed +# package, so it is unimportable until scripts/ is on sys.path. Same shape as the +# reference's tests/conftest.py, which patches sys.path before importing the SDK. sys.path.insert(0, str(HERE)) -from enumerate_surface import ( # type: ignore - _CLASS_RENAMES, _EVENT_METHOD_RENAMES_BY_CLASS, _METHOD_RENAMES, _PY_KEYWORDS, +from enumerate_surface import ( # noqa: E402 # type: ignore + _CLASS_RENAMES, + _EVENT_METHOD_RENAMES_BY_CLASS, + _METHOD_RENAMES, + _PY_KEYWORDS, _SURFACE_METHOD_ALIASES, - build_class_to_module_map, camel_to_snake, translate_method_name, - _gen_type_module, _gen_type_unrename, + build_class_to_module_map, + camel_to_snake, + _gen_type_module, + _gen_type_unrename, ) @@ -60,14 +71,62 @@ # field-accessor recording strips that suffix back to the bare wire key the oracle # records. Kept in sync with generate_rest.JAVA_KEYWORDS. _JAVA_FIELD_KEYWORDS = { - "abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", - "class", "const", "continue", "default", "do", "double", "else", "enum", - "extends", "final", "finally", "float", "for", "goto", "if", "implements", - "import", "instanceof", "int", "interface", "long", "native", "new", - "package", "private", "protected", "public", "return", "short", "static", - "strictfp", "super", "switch", "synchronized", "this", "throw", "throws", - "transient", "try", "void", "volatile", "while", "true", "false", "null", - "var", "record", "yield", + "abstract", + "assert", + "boolean", + "break", + "byte", + "case", + "catch", + "char", + "class", + "const", + "continue", + "default", + "do", + "double", + "else", + "enum", + "extends", + "final", + "finally", + "float", + "for", + "goto", + "if", + "implements", + "import", + "instanceof", + "int", + "interface", + "long", + "native", + "new", + "package", + "private", + "protected", + "public", + "return", + "short", + "static", + "strictfp", + "super", + "switch", + "synchronized", + "this", + "throw", + "throws", + "transient", + "try", + "void", + "volatile", + "while", + "true", + "false", + "null", + "var", + "record", + "yield", } @@ -112,8 +171,17 @@ def load_rest_sidecar() -> dict[str, list[dict]]: resource methods. Keyed by ``::`` → param list (each ``{name, kind, type, required[, default]}``).""" path = ( - PORT_ROOT / "src" / "main" / "java" / "com" / "signalwire" / "sdk" - / "rest" / "namespaces" / "generated" / "rest_signatures.json" + PORT_ROOT + / "src" + / "main" + / "java" + / "com" + / "signalwire" + / "sdk" + / "rest" + / "namespaces" + / "generated" + / "rest_signatures.json" ) if not path.is_file(): return {} @@ -130,8 +198,17 @@ def load_rest_crud_bases() -> dict[str, dict]: The enumerator attaches it to the class entry as ``crud_base`` so the drift gate compares bindings for equivalence (diff_port_signatures ``crud_bases_equivalent``).""" path = ( - PORT_ROOT / "src" / "main" / "java" / "com" / "signalwire" / "sdk" - / "rest" / "namespaces" / "generated" / "rest_signatures.json" + PORT_ROOT + / "src" + / "main" + / "java" + / "com" + / "signalwire" + / "sdk" + / "rest" + / "namespaces" + / "generated" + / "rest_signatures.json" ) if not path.is_file(): return {} @@ -175,7 +252,7 @@ def translate_java_type(t: str, aliases: dict[str, str], context: str) -> str: # ``? super Foo`` collapses to ``any`` (covariant write-side has no # canonical analog), bare ``?`` collapses to ``any``. if t.startswith("? extends "): - return translate_java_type(t[len("? extends "):], aliases, context) + return translate_java_type(t[len("? extends ") :], aliases, context) if t.startswith("? super "): return "any" if t == "?": @@ -211,21 +288,32 @@ def translate_java_type(t: str, aliases: dict[str, str], context: str) -> str: args = split_generic_args(inner) canon_args = [translate_java_type(a, aliases, context) for a in args] if head in ( - "java.util.List", "java.util.ArrayList", "java.util.LinkedList", - "java.util.Set", "java.util.HashSet", "java.util.LinkedHashSet", - "java.util.Collection", "java.lang.Iterable", + "java.util.List", + "java.util.ArrayList", + "java.util.LinkedList", + "java.util.Set", + "java.util.HashSet", + "java.util.LinkedHashSet", + "java.util.Collection", + "java.lang.Iterable", ): return f"list<{canon_args[0]}>" if canon_args else "list" if head in ( - "java.util.Map", "java.util.HashMap", "java.util.LinkedHashMap", - "java.util.TreeMap", "java.util.concurrent.ConcurrentHashMap", + "java.util.Map", + "java.util.HashMap", + "java.util.LinkedHashMap", + "java.util.TreeMap", + "java.util.concurrent.ConcurrentHashMap", ): if len(canon_args) >= 2: return f"dict<{canon_args[0]},{canon_args[1]}>" return "dict" if head == "java.util.Optional": return f"optional<{canon_args[0]}>" if canon_args else "optional" - if head in ("java.util.concurrent.CompletableFuture", "java.util.concurrent.Future"): + if head in ( + "java.util.concurrent.CompletableFuture", + "java.util.concurrent.Future", + ): return canon_args[0] if canon_args else "any" if head == "java.util.Map$Entry": # Java's Map.Entry is the idiomatic two-arity tuple shape; @@ -257,9 +345,7 @@ def translate_java_type(t: str, aliases: dict[str, str], context: str) -> str: return _translate_sdk_class_ref(t) if t in ("byte", "short", "int", "long", "float", "double", "boolean", "char"): # Should have been hit in aliases - raise TypeTranslationError( - f"primitive {t!r} not in aliases at {context}" - ) + raise TypeTranslationError(f"primitive {t!r} not in aliases at {context}") # Fall back to last segment lookup last = t.rsplit(".", 1)[-1] @@ -290,7 +376,7 @@ def _pkg_to_module(pkg: str) -> str: """com.signalwire.sdk.agent → signalwire.agent_base / signalwire.""" if not pkg.startswith("com.signalwire.sdk"): return "signalwire." + pkg.lower() - rest = pkg[len("com.signalwire.sdk"):].lstrip(".") + rest = pkg[len("com.signalwire.sdk") :].lstrip(".") if not rest: return "signalwire" parts = [camel_to_snake(p) for p in rest.split(".")] @@ -323,8 +409,8 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: # Additional Java class renames not in enumerate_surface.py: # These are core SDK classes that Java names differently from Python. JAVA_EXTRA_RENAMES = { - "Service": "SWMLService", # SignalWire.SWML.Service → core.swml_service.SWMLService - "AgentBase": "AgentBase", # already matches + "Service": "SWMLService", # SignalWire.SWML.Service → core.swml_service.SWMLService + "AgentBase": "AgentBase", # already matches } # Nested-class qualification: SignatureDump emits each nested class with its @@ -341,17 +427,39 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: # convention plus its ``java_to_python_module`` placement, so the two layers # end up at identical fully-qualified symbol paths. JAVA_NESTED_CLASS_RENAMES: dict[tuple[str, str], tuple[str, str]] = { + # AuthHandler.BasicCredentials / .BearerCredentials (records nested in + # AuthHandler.java). They land in signalwire.core.auth_handler — NOT a per-class + # module — because that is where the reference records them (it re-exports + # FastAPI's HTTPBasicCredentials / HTTPAuthorizationCredentials under these + # names). Without this, SignatureDump's bare simple name would not match the + # reference's identity. See the note in _SIG_EXCLUDED_SIMPLE_NAMES. + ("com.signalwire.sdk.core", "BasicCredentials"): ( + "BasicCredentials", + "signalwire.core.auth_handler", + ), + ("com.signalwire.sdk.core", "BearerCredentials"): ( + "BearerCredentials", + "signalwire.core.auth_handler", + ), # AgentBase.Builder, AgentBase.DynamicConfigCallback (nested in AgentBase.java) - ("com.signalwire.sdk.agent", "Builder"): - ("AgentBaseBuilder", "signalwire.agent.agent_base_builder"), - ("com.signalwire.sdk.agent", "DynamicConfigCallback"): - ("AgentBaseDynamicConfigCallback", "signalwire.agent.agent_base_dynamic_config_callback"), + ("com.signalwire.sdk.agent", "Builder"): ( + "AgentBaseBuilder", + "signalwire.agent.agent_base_builder", + ), + ("com.signalwire.sdk.agent", "DynamicConfigCallback"): ( + "AgentBaseDynamicConfigCallback", + "signalwire.agent.agent_base_dynamic_config_callback", + ), # RelayClient.Builder (nested in RelayClient.java) - ("com.signalwire.sdk.relay", "Builder"): - ("RelayClientBuilder", "signalwire.relay.relay_client_builder"), + ("com.signalwire.sdk.relay", "Builder"): ( + "RelayClientBuilder", + "signalwire.relay.relay_client_builder", + ), # RestClient.Builder (nested in RestClient.java) - ("com.signalwire.sdk.rest", "Builder"): - ("RestClientBuilder", "signalwire.rest.rest_client_builder"), + ("com.signalwire.sdk.rest", "Builder"): ( + "RestClientBuilder", + "signalwire.rest.rest_client_builder", + ), # Action subtypes nested under Call.java's relay package. The reference # projects each concrete action's control methods (stop/pause/resume/volume) # directly onto the action class in ``signalwire.relay.call``, so these must @@ -362,42 +470,65 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: # ``CollectAction``; Java's ``CollectAction`` (prefix ``collect``, # stop + start_input_timers) IS the reference's ``StandaloneCollectAction``. # Java's inbound ``ReceiveFaxAction`` is the reference's ``FaxAction``. - ("com.signalwire.sdk.relay", "PlayAndCollectAction"): - ("CollectAction", "signalwire.relay.call"), - ("com.signalwire.sdk.relay", "CollectAction"): - ("StandaloneCollectAction", "signalwire.relay.call"), - ("com.signalwire.sdk.relay", "ReceiveFaxAction"): - ("FaxAction", "signalwire.relay.call"), - ("com.signalwire.sdk.relay", "SendFaxAction"): - ("CallSendFaxAction", "signalwire.relay.call_send_fax_action"), + ("com.signalwire.sdk.relay", "PlayAndCollectAction"): ( + "CollectAction", + "signalwire.relay.call", + ), + ("com.signalwire.sdk.relay", "CollectAction"): ( + "StandaloneCollectAction", + "signalwire.relay.call", + ), + ("com.signalwire.sdk.relay", "ReceiveFaxAction"): ( + "FaxAction", + "signalwire.relay.call", + ), + ("com.signalwire.sdk.relay", "SendFaxAction"): ( + "CallSendFaxAction", + "signalwire.relay.call_send_fax_action", + ), # AuthorizationStateEvent — nested under RelayEvent in Java - ("com.signalwire.sdk.relay", "AuthorizationStateEvent"): - ("RelayEventAuthorizationStateEvent", "signalwire.relay.relay_event_authorization_state_event"), + ("com.signalwire.sdk.relay", "AuthorizationStateEvent"): ( + "RelayEventAuthorizationStateEvent", + "signalwire.relay.relay_event_authorization_state_event", + ), # Constants — top-level in Java but with no Python counterpart - ("com.signalwire.sdk.relay", "Constants"): - ("RelayConstants", "signalwire.relay.relay_constants"), + ("com.signalwire.sdk.relay", "Constants"): ( + "RelayConstants", + "signalwire.relay.relay_constants", + ), # SwaigTest.Platform (the inner enum in SwaigTest.java) - ("com.signalwire.sdk.cli", "SwaigTest"): - ("SwaigTest", "signalwire.cli.swaig_test"), + ("com.signalwire.sdk.cli", "SwaigTest"): ("SwaigTest", "signalwire.cli.swaig_test"), # ServerlessSimulator.Platform — Java nests Platform inside ServerlessSimulator - ("com.signalwire.sdk.cli.simulation", "Platform"): - ("ServerlessSimulatorPlatform", "signalwire.cli.simulation.serverless_simulator_platform"), + ("com.signalwire.sdk.cli.simulation", "Platform"): ( + "ServerlessSimulatorPlatform", + "signalwire.cli.simulation.serverless_simulator_platform", + ), # Logger — top-level in com.signalwire.sdk.logging - ("com.signalwire.sdk.logging", "Logger"): - ("Logger", "signalwire.core.logging_config"), - ("com.signalwire.sdk.logging", "Level"): - ("LoggingLevel", "signalwire.logging.logging_level"), + ("com.signalwire.sdk.logging", "Logger"): ( + "Logger", + "signalwire.core.logging_config", + ), + ("com.signalwire.sdk.logging", "Level"): ( + "LoggingLevel", + "signalwire.logging.logging_level", + ), # ToolDefinition / ToolHandler — top-level swaig classes - ("com.signalwire.sdk.swaig", "ToolDefinition"): - ("ToolDefinition", "signalwire.swaig.tool_definition"), - ("com.signalwire.sdk.swaig", "ToolHandler"): - ("ToolHandler", "signalwire.swaig.tool_handler"), + ("com.signalwire.sdk.swaig", "ToolDefinition"): ( + "ToolDefinition", + "signalwire.swaig.tool_definition", + ), + ("com.signalwire.sdk.swaig", "ToolHandler"): ( + "ToolHandler", + "signalwire.swaig.tool_handler", + ), # ParameterSchema.Builder (nested in ParameterSchema.java) — like # AgentBase.Builder, the bare ``Builder`` is qualified with its outer # class to avoid collision, mirroring the surface enumerator's # ``effective_name = outer_name + renamed`` → ``ParameterSchemaBuilder``. - ("com.signalwire.sdk.swaig", "Builder"): - ("ParameterSchemaBuilder", "signalwire.swaig.parameter_schema_builder"), + ("com.signalwire.sdk.swaig", "Builder"): ( + "ParameterSchemaBuilder", + "signalwire.swaig.parameter_schema_builder", + ), # Document — Java's swml.Document (note: there's also a JAVA_MODULE_OVERRIDES entry # routing it to signalwire.core.swml_builder; the projection here keeps the class # name aligned with the surface emission for the audit walker). @@ -405,54 +536,93 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: # Skill builtin classes — Java exposes builtin skills under # signalwire.skills.builtin.* with their own naming, but Python uses # signalwire.skills..skill.. Map per-class. - ("com.signalwire.sdk.skills.builtin", "ApiNinjasTriviaSkill"): - ("ApiNinjasTriviaSkill", "signalwire.skills.builtin"), - ("com.signalwire.sdk.skills.builtin", "DateTimeSkill"): - ("DateTimeSkill", "signalwire.skills.builtin"), + ("com.signalwire.sdk.skills.builtin", "ApiNinjasTriviaSkill"): ( + "ApiNinjasTriviaSkill", + "signalwire.skills.builtin", + ), + ("com.signalwire.sdk.skills.builtin", "DateTimeSkill"): ( + "DateTimeSkill", + "signalwire.skills.builtin", + ), # PhoneCallHandler — top-level enum in rest.call_handler - ("com.signalwire.sdk.rest", "PhoneCallHandler"): - ("PhoneCallHandler", "signalwire.rest.call_handler"), + ("com.signalwire.sdk.rest", "PhoneCallHandler"): ( + "PhoneCallHandler", + "signalwire.rest.call_handler", + ), # HttpClient (rest._base) — top-level - ("com.signalwire.sdk.rest", "HttpClient"): - ("HttpClient", "signalwire.rest._base"), + ("com.signalwire.sdk.rest", "HttpClient"): ("HttpClient", "signalwire.rest._base"), # Lambda runtime — Java nests handlers under runtime.lambda - ("com.signalwire.sdk.runtime.lambda", "LambdaAgentHandler"): - ("LambdaAgentHandler", "signalwire.runtime.lambda.lambda_agent_handler"), - ("com.signalwire.sdk.runtime.lambda", "LambdaResponse"): - ("LambdaResponse", "signalwire.runtime.lambda.lambda_response"), + ("com.signalwire.sdk.runtime.lambda", "LambdaAgentHandler"): ( + "LambdaAgentHandler", + "signalwire.runtime.lambda.lambda_agent_handler", + ), + ("com.signalwire.sdk.runtime.lambda", "LambdaResponse"): ( + "LambdaResponse", + "signalwire.runtime.lambda.lambda_response", + ), # EnvProvider / ExecutionMode — runtime helpers (top-level interfaces/enums) - ("com.signalwire.sdk.runtime", "EnvProvider"): - ("EnvProvider", "signalwire.runtime.env_provider"), - ("com.signalwire.sdk.runtime", "ExecutionMode"): - ("ExecutionMode", "signalwire.runtime.execution_mode"), + ("com.signalwire.sdk.runtime", "EnvProvider"): ( + "EnvProvider", + "signalwire.runtime.env_provider", + ), + ("com.signalwire.sdk.runtime", "ExecutionMode"): ( + "ExecutionMode", + "signalwire.runtime.execution_mode", + ), # REST namespace classes — Java exposes Namespace at top-level rest.namespaces; # Python doesn't have these classes (they're erased through indexed CrudResource). - ("com.signalwire.sdk.rest.namespaces", "BillingNamespace"): - ("BillingNamespace", "signalwire.rest.namespaces.billing"), - ("com.signalwire.sdk.rest.namespaces", "CampaignNamespace"): - ("CampaignNamespace", "signalwire.rest.namespaces.campaign"), - ("com.signalwire.sdk.rest.namespaces", "ChatNamespace"): - ("ChatNamespace", "signalwire.rest.namespaces.chat"), - ("com.signalwire.sdk.rest.namespaces", "ComplianceNamespace"): - ("ComplianceNamespace", "signalwire.rest.namespaces.compliance"), - ("com.signalwire.sdk.rest.namespaces", "ConferenceNamespace"): - ("ConferenceNamespace", "signalwire.rest.namespaces.conference"), - ("com.signalwire.sdk.rest.namespaces", "FaxNamespace"): - ("FaxNamespace", "signalwire.rest.namespaces.fax"), - ("com.signalwire.sdk.rest.namespaces", "MessagingNamespace"): - ("MessagingNamespace", "signalwire.rest.namespaces.messaging"), - ("com.signalwire.sdk.rest.namespaces", "NumberLookupNamespace"): - ("NumberLookupNamespace", "signalwire.rest.namespaces.number_lookup"), - ("com.signalwire.sdk.rest.namespaces", "PubSubNamespace"): - ("PubSubNamespace", "signalwire.rest.namespaces.pub_sub"), - ("com.signalwire.sdk.rest.namespaces", "SipNamespace"): - ("SipNamespace", "signalwire.rest.namespaces.sip"), - ("com.signalwire.sdk.rest.namespaces", "StreamNamespace"): - ("StreamNamespace", "signalwire.rest.namespaces.stream"), - ("com.signalwire.sdk.rest.namespaces", "SwmlNamespace"): - ("SwmlNamespace", "signalwire.rest.namespaces.swml"), - ("com.signalwire.sdk.rest.namespaces", "TranscriptionNamespace"): - ("TranscriptionNamespace", "signalwire.rest.namespaces.transcription"), + ("com.signalwire.sdk.rest.namespaces", "BillingNamespace"): ( + "BillingNamespace", + "signalwire.rest.namespaces.billing", + ), + ("com.signalwire.sdk.rest.namespaces", "CampaignNamespace"): ( + "CampaignNamespace", + "signalwire.rest.namespaces.campaign", + ), + ("com.signalwire.sdk.rest.namespaces", "ChatNamespace"): ( + "ChatNamespace", + "signalwire.rest.namespaces.chat", + ), + ("com.signalwire.sdk.rest.namespaces", "ComplianceNamespace"): ( + "ComplianceNamespace", + "signalwire.rest.namespaces.compliance", + ), + ("com.signalwire.sdk.rest.namespaces", "ConferenceNamespace"): ( + "ConferenceNamespace", + "signalwire.rest.namespaces.conference", + ), + ("com.signalwire.sdk.rest.namespaces", "FaxNamespace"): ( + "FaxNamespace", + "signalwire.rest.namespaces.fax", + ), + ("com.signalwire.sdk.rest.namespaces", "MessagingNamespace"): ( + "MessagingNamespace", + "signalwire.rest.namespaces.messaging", + ), + ("com.signalwire.sdk.rest.namespaces", "NumberLookupNamespace"): ( + "NumberLookupNamespace", + "signalwire.rest.namespaces.number_lookup", + ), + ("com.signalwire.sdk.rest.namespaces", "PubSubNamespace"): ( + "PubSubNamespace", + "signalwire.rest.namespaces.pub_sub", + ), + ("com.signalwire.sdk.rest.namespaces", "SipNamespace"): ( + "SipNamespace", + "signalwire.rest.namespaces.sip", + ), + ("com.signalwire.sdk.rest.namespaces", "StreamNamespace"): ( + "StreamNamespace", + "signalwire.rest.namespaces.stream", + ), + ("com.signalwire.sdk.rest.namespaces", "SwmlNamespace"): ( + "SwmlNamespace", + "signalwire.rest.namespaces.swml", + ), + ("com.signalwire.sdk.rest.namespaces", "TranscriptionNamespace"): ( + "TranscriptionNamespace", + "signalwire.rest.namespaces.transcription", + ), } # Overloaded methods where the canonical projection must surface the @@ -477,12 +647,18 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: # surface, so emit it (and the PORT_SIGNATURE_OMISSIONS entries that # excused the old collapsed shape are removed — these are now drift-0 # parity, like join_conference). - ("FunctionResult", "pay"), # +16 params, caller-overridable ai_response - ("FunctionResult", "tap"), # +rtp_ptime/status_url, +direction/codec/rtp_ptime validation - ("FunctionResult", "record_call"), # +5 params, always-emit beep/input_sensitivity, +format/direction validation - ("FunctionResult", "send_sms"), # +region - ("FunctionResult", "rpc_dial"), # +device_type (was hard-coded "phone") - ("FunctionResult", "rpc_ai_message"), # +role (was hard-coded "system") + ("FunctionResult", "pay"), # +16 params, caller-overridable ai_response + ( + "FunctionResult", + "tap", + ), # +rtp_ptime/status_url, +direction/codec/rtp_ptime validation + ( + "FunctionResult", + "record_call", + ), # +5 params, always-emit beep/input_sensitivity, +format/direction validation + ("FunctionResult", "send_sms"), # +region + ("FunctionResult", "rpc_dial"), # +device_type (was hard-coded "phone") + ("FunctionResult", "rpc_ai_message"), # +role (was hard-coded "system") # RELAY action pause() exposes the reference's optional ``behavior`` kwarg via # a ``pause(String behavior)`` overload alongside the no-arg convenience # ``pause()``. The full overload is the parity surface (matches the oracle's @@ -506,6 +682,75 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: # surface (matches the oracle's 4-param set_gather_info); the 3-arg form # would hide ``isolated``. ("Step", "set_gather_info"), + # ---- Overload-derived optionality (see optional_param_names) -------------- + # Each of these gained a shorter delegating overload that supplies the + # reference's default, which is how Java says "this param is optional". + # optional_param_names() reads that overload set and marks the omitted params + # ``required: false`` ON THE FULL-ARITY SIGNATURE — so the full signature must + # stay the recorded surface. Without a PREFER_FULL entry the default + # fewest-param collapse would pick the NEW short overload instead, hiding the + # very params we just made optional and turning a ``required-flip`` into a + # ``param-count-mismatch`` (measured: exactly these 20 symbols). + ("FunctionResult", "swml_transfer"), # +final=True + ("FunctionResult", "hold"), # +timeout=300 + ("FunctionResult", "replace_in_history"), # +text=True + ("FunctionResult", "enable_functions_on_timeout"), # +enabled=True + ("FunctionResult", "enable_extensive_data"), # +enabled=True + ("FunctionResult", "create_payment_prompt"), # +card_type/error_type=None + ("AgentServer", "serve_static_files"), # +route="/" + ("BedrockAgent", "set_inference_params"), # +temperature/top_p/max_tokens=None + ("AgentBase", "add_pronunciation"), # +ignore_case=False + ("AgentBase", "on_function_call"), # +raw_data=None + # AgentBase.enableDebugEvents() delegates to enableDebugEvents(level) supplying + # the reference's own default 1 (AgentBase.java:1807) — Java's way of spelling + # ``level: int = 1``. The oracle records enable_debug_events(level=1); the + # fewest-param collapse picked the 0-arg convenience form, which is the ONLY + # reason the recorded arity was 0 vs the oracle's 1. The PORT_SIGNATURE_OMISSIONS + # entry that excused it claimed the method "collapses the Python kwargs into + # typed Builder+setters" with "optional args (meta_data/replace/ignore_case/etc.) + # reachable via additional fluent calls" — false of the source: there is no + # builder, no fluent setter, and none of those params exist on this method. Same + # shape (and same boilerplate rationale) as register_routing_callback. + ("AgentBase", "enable_debug_events"), # +level=1 + # com.signalwire.sdk.swml.Service canonicalizes to SWMLService (see + # JAVA_MODULE_OVERRIDES / _CLASS_RENAMES) — key on the CANONICAL name. + ("SWMLService", "on_function_call"), # +raw_data=None + ("SWMLService", "on_request"), # +request_data/callback_path=None + # Service.registerRoutingCallback(callback) delegates to + # registerRoutingCallback(callback, path) supplying the reference's own default + # "/sip" (Service.java:767) — Java's way of spelling ``path="/sip"``. The + # fewest-param collapse picked the 1-arg convenience form, which is the ONLY + # reason the recorded arity was 1 vs the oracle's 2. The two + # PORT_SIGNATURE_OMISSIONS entries that excused it claimed "the port collapses + # Python's optional kwargs ... so the param count differs" — false of the + # source: the declaration is (callback, path) in the reference's own order with + # the reference's own default. Removed; this is now drift-0 parity. + ("SWMLService", "register_routing_callback"), # +path="/sip" + ("PomBuilder", "add_to_section"), # +body/bullet/bullets=None + ("SWAIGFunction", "execute"), # +raw_data=None + ("InfoGathererAgent", "on_swml_request"), # +callback_path/request=None + ("Call", "ai_unhold"), # +prompt=None (options bag) + ("Call", "join_room"), # +status_url=None (options bag) + ("Call", "live_translate"), # +status_url=None (options bag) + ("Call", "refer"), # +status_url=None (options bag) + ("Call", "user_event"), # +event=None + # The typed call-state waits expose the reference's optional ``timeout`` + # (``wait_for_answered(timeout: float | None = None)``) via a trailing-param + # overload alongside the no-arg convenience form. The underlying + # ``waitFor(targetState, timeout)`` already carried the timeout; only the + # four typed wrappers hid it. Their PORT_SIGNATURE_OMISSIONS entries claimed + # "no relay Call state-wait primitive in the Java port" — false: waitFor / + # waitForAnswered / waitForRinging / waitForEnding / waitForEnded all exist. + ("Call", "wait_for_answered"), # +timeout=None + ("Call", "wait_for_ringing"), # +timeout=None + ("Call", "wait_for_ending"), # +timeout=None + ("Call", "wait_for_ended"), # +timeout=None + # Action/Message `await(Double timeout)` — canonical name `wait` via the + # `await_` → `wait` rename (java.lang.Object.wait is final, so `await` is the + # reserved-name escape). The no-arg `await()` convenience would otherwise win + # the collapse and hide the reference's optional `timeout`. + ("Action", "wait"), # +timeout=None + ("Message", "wait"), # +timeout=None # HttpClient verbs + constructor expose the optional request_options envelope # (plan 4.2) via a trailing-param overload alongside the convenience overloads. # The full overload is the parity surface (matches the oracle's request_options @@ -540,6 +785,17 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: ("SWMLService", "__init__"), } +# PREFER_FULL_OVERLOAD's twin for FREE-FUNCTION projections (a static Java method +# projected to a module-level Python function). Same reason: the shorter overload +# exists only to supply the reference's default, so the FULL signature is the +# parity surface. Keyed by the PROJECTED ``(module, function)``, since that is what +# the free-function collapse sees. +PREFER_FULL_OVERLOAD_FREE_FUNCTIONS: set[tuple[str, str]] = { + # UrlValidator.validateUrl(url) delegates to validateUrl(url, allowPrivate) + # with the reference's default False (signalwire/utils/url_validator.py:34). + ("signalwire.utils.url_validator", "validate_url"), +} + # Java skill class renames to match Python casing JAVA_SKILL_RENAMES = { "DatasphereSkill": "DataSphereSkill", @@ -621,51 +877,84 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: # the audit would be looking for "signalwire.utils.url_validator.validate_url" # but the port emits "signalwire.utils.url_validator.UrlValidator.validate_url". FREE_FUNCTION_PROJECTIONS = { - ("com.signalwire.sdk.utils.UrlValidator", "validateUrl"): - ("signalwire.utils.url_validator", "validate_url"), + ("com.signalwire.sdk.utils.UrlValidator", "validateUrl"): ( + "signalwire.utils.url_validator", + "validate_url", + ), # RelayEvent.parseEvent → module-level signalwire.relay.event.parse_event # (Python free function; Java groups it as a static factory on RelayEvent). - ("com.signalwire.sdk.relay.RelayEvent", "parseEvent"): - ("signalwire.relay.event", "parse_event"), + ("com.signalwire.sdk.relay.RelayEvent", "parseEvent"): ( + "signalwire.relay.event", + "parse_event", + ), # ExecutionMode helpers — Python ships them as free functions in # two distinct modules; Java groups both static methods on the # ExecutionMode enum for cohesion. - ("com.signalwire.sdk.runtime.ExecutionMode", "getExecutionMode"): - ("signalwire.core.logging_config", "get_execution_mode"), + ("com.signalwire.sdk.runtime.ExecutionMode", "getExecutionMode"): ( + "signalwire.core.logging_config", + "get_execution_mode", + ), # logging_config module-level free functions grouped on Logger's static # helpers (mirrors _FREE_FUNCTION_SURFACE_PROJECTIONS in enumerate_surface.py). - ("com.signalwire.sdk.logging.Logger", "configureLogging"): - ("signalwire.core.logging_config", "configure_logging"), - ("com.signalwire.sdk.logging.Logger", "resetLoggingConfiguration"): - ("signalwire.core.logging_config", "reset_logging_configuration"), - ("com.signalwire.sdk.logging.Logger", "stripControlChars"): - ("signalwire.core.logging_config", "strip_control_chars"), - ("com.signalwire.sdk.runtime.ExecutionMode", "isServerlessMode"): - ("signalwire.utils", "is_serverless_mode"), + # ``getLogger`` is overloaded (String name / Class clazz); the generic + # overload-collapse tie-break (equal arity) would pick the Class one and + # emit ``get_logger(clazz: any)``, so its canonical shape is pinned via + # FREE_FUNCTION_SIGNATURE_OVERRIDES below to the reference's + # ``get_logger(name: string) -> any`` (the String overload). Keeping this + # line here restores lockstep with enumerate_surface.py, which has always + # projected ("Logger", "getLogger"). + ("com.signalwire.sdk.logging.Logger", "getLogger"): ( + "signalwire.core.logging_config", + "get_logger", + ), + ("com.signalwire.sdk.logging.Logger", "configureLogging"): ( + "signalwire.core.logging_config", + "configure_logging", + ), + ("com.signalwire.sdk.logging.Logger", "resetLoggingConfiguration"): ( + "signalwire.core.logging_config", + "reset_logging_configuration", + ), + ("com.signalwire.sdk.logging.Logger", "stripControlChars"): ( + "signalwire.core.logging_config", + "strip_control_chars", + ), + ("com.signalwire.sdk.runtime.ExecutionMode", "isServerlessMode"): ( + "signalwire.utils", + "is_serverless_mode", + ), # Top-level Signalwire class projects each static helper onto the # canonical signalwire. free function. The Java method is # PascalCase ``RestClient`` to mirror Python's same-cased function; # other helpers use camelCase that converts to snake_case via # camel_to_snake (registerSkill -> register_skill, etc.). - ("com.signalwire.sdk.Signalwire", "RestClient"): - ("signalwire", "RestClient"), - ("com.signalwire.sdk.Signalwire", "registerSkill"): - ("signalwire", "register_skill"), - ("com.signalwire.sdk.Signalwire", "addSkillDirectory"): - ("signalwire", "add_skill_directory"), - ("com.signalwire.sdk.Signalwire", "listSkillsWithParams"): - ("signalwire", "list_skills_with_params"), - ("com.signalwire.sdk.Signalwire", "listSkills"): - ("signalwire", "list_skills"), + ("com.signalwire.sdk.Signalwire", "RestClient"): ("signalwire", "RestClient"), + ("com.signalwire.sdk.Signalwire", "registerSkill"): ( + "signalwire", + "register_skill", + ), + ("com.signalwire.sdk.Signalwire", "addSkillDirectory"): ( + "signalwire", + "add_skill_directory", + ), + ("com.signalwire.sdk.Signalwire", "listSkillsWithParams"): ( + "signalwire", + "list_skills_with_params", + ), + ("com.signalwire.sdk.Signalwire", "listSkills"): ("signalwire", "list_skills"), # WebhookValidator static methods → Python module-level free functions # in signalwire.core.security.webhook_validator. Java collapses both # entry points onto a static-only utility class for namespacing; the # projection lifts them back to the canonical Python locations so the # cross-port audit sees the same symbols. - ("com.signalwire.sdk.security.WebhookValidator", "validateWebhookSignature"): - ("signalwire.core.security.webhook_validator", "validate_webhook_signature"), - ("com.signalwire.sdk.security.WebhookValidator", "validateRequest"): - ("signalwire.core.security.webhook_validator", "validate_request"), + ("com.signalwire.sdk.security.WebhookValidator", "validateWebhookSignature"): ( + "signalwire.core.security.webhook_validator", + "validate_webhook_signature", + ), + ("com.signalwire.sdk.security.WebhookValidator", "validateRequest"): ( + "signalwire.core.security.webhook_validator", + "validate_request", + ), # WebhookValidator.validate → the framework-free decomposed webhook-validation # core (signalwire.core.security.webhook_middleware.validate). Java's method # returns a WebhookRejection record (status, headers, body) or null; the oracle @@ -674,19 +963,27 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: # FREE_FUNCTION_SIGNATURE_OVERRIDES below to the canonical tuple (same as .NET's # ValueTuple-based WebhookValidationMiddleware.Validate). The WebhookFilter # servlet wrapper on top of it stays a PORT_ADDITION idiom. - ("com.signalwire.sdk.security.WebhookValidator", "validate"): - ("signalwire.core.security.webhook_middleware", "validate"), + ("com.signalwire.sdk.security.WebhookValidator", "validate"): ( + "signalwire.core.security.webhook_middleware", + "validate", + ), # SecurityUtils static methods → Python module-level free functions in # signalwire.core.security.security_utils. The Python reference exports # these as bare module functions (filter_sensitive_headers, redact_url, # is_valid_hostname); Java groups them on a static-only utility class for # namespacing, so lift them back to the canonical free-function home. - ("com.signalwire.sdk.security.SecurityUtils", "filterSensitiveHeaders"): - ("signalwire.core.security.security_utils", "filter_sensitive_headers"), - ("com.signalwire.sdk.security.SecurityUtils", "redactUrl"): - ("signalwire.core.security.security_utils", "redact_url"), - ("com.signalwire.sdk.security.SecurityUtils", "isValidHostname"): - ("signalwire.core.security.security_utils", "is_valid_hostname"), + ("com.signalwire.sdk.security.SecurityUtils", "filterSensitiveHeaders"): ( + "signalwire.core.security.security_utils", + "filter_sensitive_headers", + ), + ("com.signalwire.sdk.security.SecurityUtils", "redactUrl"): ( + "signalwire.core.security.security_utils", + "redact_url", + ), + ("com.signalwire.sdk.security.SecurityUtils", "isValidHostname"): ( + "signalwire.core.security.security_utils", + "is_valid_hostname", + ), # TypeInference static methods → Python module-level free functions in # signalwire.core.agent.tools.type_inference. Python reflects a handler's # signature; Java has no runtime lambda-parameter reflection, so the typed @@ -696,10 +993,14 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: # Java groups both on a static-only utility class; lift them back to the # canonical free-function home. Native shapes are recorded canonically via # FREE_FUNCTION_SIGNATURE_OVERRIDES below. - ("com.signalwire.sdk.core.agent.tools.TypeInference", "inferSchema"): - ("signalwire.core.agent.tools.type_inference", "infer_schema"), - ("com.signalwire.sdk.core.agent.tools.TypeInference", "createTypedHandlerWrapper"): - ("signalwire.core.agent.tools.type_inference", "create_typed_handler_wrapper"), + ("com.signalwire.sdk.core.agent.tools.TypeInference", "inferSchema"): ( + "signalwire.core.agent.tools.type_inference", + "infer_schema", + ), + ( + "com.signalwire.sdk.core.agent.tools.TypeInference", + "createTypedHandlerWrapper", + ): ("signalwire.core.agent.tools.type_inference", "create_typed_handler_wrapper"), # RequestOptionsSupport static methods → Python module-level free functions in # signalwire.rest._request_options. The reference exports resolve / # status_is_retryable as bare module functions; Java has no module-level free @@ -708,10 +1009,14 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: # recorded canonically via FREE_FUNCTION_SIGNATURE_OVERRIDES below (Java's # EffectiveOptions record stands in for the reference's private # _EffectiveOptions, and the AbortSignal interface for _AbortSignal). - ("com.signalwire.sdk.rest.RequestOptionsSupport", "resolve"): - ("signalwire.rest._request_options", "resolve"), - ("com.signalwire.sdk.rest.RequestOptionsSupport", "statusIsRetryable"): - ("signalwire.rest._request_options", "status_is_retryable"), + ("com.signalwire.sdk.rest.RequestOptionsSupport", "resolve"): ( + "signalwire.rest._request_options", + "resolve", + ), + ("com.signalwire.sdk.rest.RequestOptionsSupport", "statusIsRetryable"): ( + "signalwire.rest._request_options", + "status_is_retryable", + ), } @@ -727,13 +1032,32 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: # param is keyword-only in the Python reference (``*, signing_key``); recording # it as ``kind: keyword`` keeps the drift compare exact. FREE_FUNCTION_SIGNATURE_OVERRIDES: dict[tuple[str, str], dict] = { + # get_logger(name) -> logger. Java's Logger.getLogger is overloaded + # (String name / Class clazz) and both overloads have arity 1, so the + # generic fewer-param collapse cannot separate them and the Class one + # wins the tie — emitting ``get_logger(clazz: any)``. Pin the String + # overload, which is the reference's shape. The Class overload stays a + # Java-idiom convenience the overload-collapse drops (same model as every + # other Java overload); the returned Logger is the port's logger handle, + # recorded as the oracle's ``any``. + ("com.signalwire.sdk.logging.Logger", "getLogger"): { + "params": [ + {"name": "name", "type": "string", "required": True}, + ], + "returns": "any", + }, ("com.signalwire.sdk.security.WebhookValidator", "validate"): { "params": [ {"name": "method", "type": "string", "required": True}, {"name": "url", "type": "string", "required": True}, {"name": "headers", "type": "dict", "required": True}, {"name": "body", "type": "string", "required": True}, - {"name": "signing_key", "kind": "keyword", "type": "string", "required": True}, + { + "name": "signing_key", + "kind": "keyword", + "type": "string", + "required": True, + }, ], "returns": "optional,string>>", }, @@ -746,13 +1070,15 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: "params": [ {"name": "func", "type": "callable,any>", "required": True}, ], - "returns": - "tuple>,list,optional,bool,bool>", + "returns": "tuple>,list,optional,bool,bool>", }, # create_typed_handler_wrapper(func, has_raw_data) -> callable. Java's method # takes a ToolHandler + boolean and returns a ToolHandler; recorded as the # canonical callable shape. - ("com.signalwire.sdk.core.agent.tools.TypeInference", "createTypedHandlerWrapper"): { + ( + "com.signalwire.sdk.core.agent.tools.TypeInference", + "createTypedHandlerWrapper", + ): { "params": [ {"name": "func", "type": "callable,any>", "required": True}, {"name": "has_raw_data", "type": "bool", "required": True}, @@ -765,12 +1091,16 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: # return and both params as required (positional) optional. ("com.signalwire.sdk.rest.RequestOptionsSupport", "resolve"): { "params": [ - {"name": "client_default", - "type": "optional", - "required": True}, - {"name": "per_request", - "type": "optional", - "required": True}, + { + "name": "client_default", + "type": "optional", + "required": True, + }, + { + "name": "per_request", + "type": "optional", + "required": True, + }, ], "returns": "class:signalwire.rest._request_options._EffectiveOptions", }, @@ -780,9 +1110,11 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: "params": [ {"name": "method", "type": "string", "required": True}, {"name": "status", "type": "int", "required": True}, - {"name": "opts", - "type": "class:signalwire.rest._request_options._EffectiveOptions", - "required": True}, + { + "name": "opts", + "type": "class:signalwire.rest._request_options._EffectiveOptions", + "required": True, + }, ], "returns": "bool", }, @@ -812,8 +1144,12 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: {"name": "method", "type": "string", "required": True}, {"name": "url", "type": "string", "required": True}, {"name": "headers", "type": "dict", "required": True}, - {"name": "body", "type": "optional>", "required": False, - "default": None}, + { + "name": "body", + "type": "optional>", + "required": False, + "default": None, + }, ], "returns": "tuple,string>", }, @@ -823,8 +1159,12 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: {"name": "method", "type": "string", "required": True}, {"name": "url", "type": "string", "required": True}, {"name": "headers", "type": "dict", "required": True}, - {"name": "body", "type": "optional>", "required": False, - "default": None}, + { + "name": "body", + "type": "optional>", + "required": False, + "default": None, + }, ], "returns": "tuple,string>", }, @@ -847,15 +1187,23 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: (_cls, "paginate"): { "params": [ {"name": "self", "kind": "self"}, - {"name": "request_options", "kind": "keyword", - "type": "optional", - "required": False, "default": None}, + { + "name": "request_options", + "kind": "keyword", + "type": "optional", + "required": False, + "default": None, + }, ], "returns": "class:signalwire.rest._pagination.PaginatedIterator", } for _cls in ( - "ReadResource", "FabricAddresses", "FaxLogs", "MessageLogs", - "VideoRoomSessions", "VoiceLogs", + "ReadResource", + "FabricAddresses", + "FaxLogs", + "MessageLogs", + "VideoRoomSessions", + "VoiceLogs", ) }, # AI Chat client verbs: Java collapses the reference's optional kwargs into a @@ -869,12 +1217,24 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: {"name": "conversation_id", "type": "string", "required": True}, {"name": "message", "type": "string", "required": True}, {"name": "role", "type": "string", "required": False, "default": "user"}, - {"name": "config_url", "type": "optional", "required": False, - "default": None}, - {"name": "user_metadata", "type": "optional>", - "required": False, "default": None}, - {"name": "timeout", "type": "optional", "required": False, - "default": None}, + { + "name": "config_url", + "type": "optional", + "required": False, + "default": None, + }, + { + "name": "user_metadata", + "type": "optional>", + "required": False, + "default": None, + }, + { + "name": "timeout", + "type": "optional", + "required": False, + "default": None, + }, {"name": "reinit", "type": "bool", "required": False, "default": False}, ], "returns": "class:signalwire.ai_chat.client.ChatResponse", @@ -884,12 +1244,24 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: {"name": "self", "kind": "self"}, {"name": "conversation_id", "type": "string", "required": True}, {"name": "config_url", "type": "string", "required": True}, - {"name": "user_message", "type": "optional", "required": False, - "default": None}, - {"name": "timeout", "type": "optional", "required": False, - "default": None}, - {"name": "user_metadata", "type": "optional>", - "required": False, "default": None}, + { + "name": "user_message", + "type": "optional", + "required": False, + "default": None, + }, + { + "name": "timeout", + "type": "optional", + "required": False, + "default": None, + }, + { + "name": "user_metadata", + "type": "optional>", + "required": False, + "default": None, + }, {"name": "reinit", "type": "bool", "required": False, "default": False}, ], "returns": "class:signalwire.ai_chat.client.ConversationInfo", @@ -898,8 +1270,12 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: "params": [ {"name": "self", "kind": "self"}, {"name": "conversation_id", "type": "string", "required": True}, - {"name": "summary_prompt", "type": "optional", "required": False, - "default": None}, + { + "name": "summary_prompt", + "type": "optional", + "required": False, + "default": None, + }, ], "returns": "string", }, @@ -911,14 +1287,30 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: ("AIChatClient", "__init__"): { "params": [ {"name": "self", "kind": "self"}, - {"name": "project", "type": "optional", "required": False, - "default": None}, - {"name": "token", "type": "optional", "required": False, - "default": None}, - {"name": "space", "type": "optional", "required": False, - "default": None}, - {"name": "url", "type": "optional", "required": False, - "default": None}, + { + "name": "project", + "type": "optional", + "required": False, + "default": None, + }, + { + "name": "token", + "type": "optional", + "required": False, + "default": None, + }, + { + "name": "space", + "type": "optional", + "required": False, + "default": None, + }, + { + "name": "url", + "type": "optional", + "required": False, + "default": None, + }, ], "returns": "void", }, @@ -930,8 +1322,12 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: {"name": "self", "kind": "self"}, {"name": "id", "type": "string", "required": True}, {"name": "status", "type": "string", "required": True}, - {"name": "initial_message", "type": "optional", "required": False, - "default": None}, + { + "name": "initial_message", + "type": "optional", + "required": False, + "default": None, + }, ], "returns": "void", }, @@ -940,18 +1336,30 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: {"name": "self", "kind": "self"}, {"name": "text", "type": "string", "required": True}, {"name": "conversation_id", "type": "string", "required": True}, - {"name": "user_event", "type": "optional>", - "required": False, "default": None}, + { + "name": "user_event", + "type": "optional>", + "required": False, + "default": None, + }, ], "returns": "void", }, ("ChatLog", "__init__"): { "params": [ {"name": "self", "kind": "self"}, - {"name": "messages", "type": "list>", "required": False, - "default": "list()"}, - {"name": "call_timeline", "type": "list>", - "required": False, "default": "list()"}, + { + "name": "messages", + "type": "list>", + "required": False, + "default": "list()", + }, + { + "name": "call_timeline", + "type": "list>", + "required": False, + "default": "list()", + }, ], "returns": "void", }, @@ -995,17 +1403,36 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: ("signalwire.rest._request_options", "RequestOptions"): { "params": [ {"name": "self", "kind": "self"}, - {"name": "timeout", "type": "optional", "required": False, - "default": None}, - {"name": "retries", "type": "optional", "required": False, - "default": None}, - {"name": "retry_on_status", "type": "optional>", "required": False, - "default": None}, - {"name": "retry_backoff", "type": "optional", "required": False, - "default": None}, - {"name": "abort_signal", - "type": "optional", - "required": False, "default": None}, + { + "name": "timeout", + "type": "optional", + "required": False, + "default": None, + }, + { + "name": "retries", + "type": "optional", + "required": False, + "default": None, + }, + { + "name": "retry_on_status", + "type": "optional>", + "required": False, + "default": None, + }, + { + "name": "retry_backoff", + "type": "optional", + "required": False, + "default": None, + }, + { + "name": "abort_signal", + "type": "optional", + "required": False, + "default": None, + }, ], "returns": "void", }, @@ -1014,21 +1441,44 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: MIXIN_PROJECTIONS = { ("signalwire.core.mixins.ai_config_mixin", "AIConfigMixin"): [ - "add_function_include", "add_hint", "add_hints", "add_internal_filler", - "add_language", "add_mcp_server", "add_pattern_hint", "add_pronunciation", - "enable_debug_events", "enable_mcp_server", "get_language_params", - "set_function_includes", "set_global_data", "set_internal_fillers", - "set_language_params", "set_languages", "set_multilingual", - "set_native_functions", "set_param", "set_params", - "set_post_prompt_llm_params", "set_prompt_llm_params", - "set_pronunciations", "update_global_data", + "add_function_include", + "add_hint", + "add_hints", + "add_internal_filler", + "add_language", + "add_mcp_server", + "add_pattern_hint", + "add_pronunciation", + "enable_debug_events", + "enable_mcp_server", + "get_language_params", + "set_function_includes", + "set_global_data", + "set_internal_fillers", + "set_language_params", + "set_languages", + "set_multilingual", + "set_native_functions", + "set_param", + "set_params", + "set_post_prompt_llm_params", + "set_prompt_llm_params", + "set_pronunciations", + "update_global_data", ], ("signalwire.core.mixins.prompt_mixin", "PromptMixin"): [ - "contexts", "define_contexts", "get_post_prompt", "get_prompt", + "contexts", + "define_contexts", + "get_post_prompt", + "get_prompt", "prompt_add_section", - "prompt_add_subsection", "prompt_add_to_section", - "prompt_has_section", "reset_contexts", "set_post_prompt", - "set_prompt_pom", "set_prompt_text", + "prompt_add_subsection", + "prompt_add_to_section", + "prompt_has_section", + "reset_contexts", + "set_post_prompt", + "set_prompt_pom", + "set_prompt_text", ], # Python additionally extracted a ``PromptManager`` class that # PromptMixin delegates to. The user-facing surface is identical @@ -1036,31 +1486,55 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: # AgentBase methods to PromptManager so the cross-language audit # treats both paths as covered. ("signalwire.core.agent.prompt.manager", "PromptManager"): [ - "define_contexts", "get_contexts", "get_post_prompt", "get_prompt", + "define_contexts", + "get_contexts", + "get_post_prompt", + "get_prompt", "get_raw_prompt", - "prompt_add_section", "prompt_add_subsection", "prompt_add_to_section", - "prompt_has_section", "set_post_prompt", "set_prompt_pom", + "prompt_add_section", + "prompt_add_subsection", + "prompt_add_to_section", + "prompt_has_section", + "set_post_prompt", + "set_prompt_pom", "set_prompt_text", ], ("signalwire.core.mixins.skill_mixin", "SkillMixin"): [ - "add_skill", "has_skill", "list_skills", "remove_skill", + "add_skill", + "has_skill", + "list_skills", + "remove_skill", ], ("signalwire.core.mixins.tool_mixin", "ToolMixin"): [ - "define_tool", "define_tools", "on_function_call", + "define_tool", + "define_tools", + "on_function_call", "register_swaig_function", ], ("signalwire.core.agent.tools.registry", "ToolRegistry"): [ - "define_tool", "register_swaig_function", - "has_function", "get_function", "get_all_functions", + "define_tool", + "register_swaig_function", + "has_function", + "get_function", + "get_all_functions", "remove_function", ], ("signalwire.core.mixins.auth_mixin", "AuthMixin"): [ - "validate_basic_auth", "get_basic_auth_credentials", + "validate_basic_auth", + "get_basic_auth_credentials", ], ("signalwire.core.mixins.web_mixin", "WebMixin"): [ - "as_router", "enable_debug_routes", "get_app", "manual_set_proxy_url", - "on_request", "on_swml_request", "register_routing_callback", "run", - "serve", "set_dynamic_config_callback", "setup_graceful_shutdown", + "as_router", + "enable_debug_routes", + "get_app", + "manual_set_proxy_url", + "on_request", + "on_swml_request", + "register_routing_callback", + "run", + "serve", + "set_dynamic_config_callback", + "setup_graceful_shutdown", ], ("signalwire.core.mixins.state_mixin", "StateMixin"): [ "validate_tool_token", @@ -1084,8 +1558,16 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: # position (last param) so the specific open-map value type doesn't matter. KWARGS_TAIL_OPTIONAL: set[tuple[str, str | None, str]] = { ("signalwire", None, "RestClient"), - ("signalwire.core.mixins.ai_config_mixin", "AIConfigMixin", "set_prompt_llm_params"), - ("signalwire.core.mixins.ai_config_mixin", "AIConfigMixin", "set_post_prompt_llm_params"), + ( + "signalwire.core.mixins.ai_config_mixin", + "AIConfigMixin", + "set_prompt_llm_params", + ), + ( + "signalwire.core.mixins.ai_config_mixin", + "AIConfigMixin", + "set_post_prompt_llm_params", + ), # BedrockAgent overrides both LLM-param setters (Python: `set_prompt_llm_params(self, # **params)` / `set_post_prompt_llm_params(self, **params)`); the oracle strips the # `**params` tail (self-only) while Java exposes it as one trailing `Map @@ -1096,6 +1578,50 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: } +# The var-POSITIONAL twin of KWARGS_TAIL_OPTIONAL. Where the reference declares a +# leading ``*args`` var-positional door, the oracle records it ``required: false`` +# (a caller may pass zero positional extras — its default is the empty tuple). +# Java expresses the same door as a leading ``List<...> args`` param, which +# reflection reports ``required: True`` (Java has no defaults), producing a +# spurious ``required-flip``. Mark the LEADING param optional so the port states +# the same contract the reference does. Keyed like KWARGS_TAIL_OPTIONAL; a +# ``None`` class targets a module-level free function. +VARARGS_HEAD_OPTIONAL: set[tuple[str, str | None, str]] = { + # signalwire/__init__.py:194 — ``def RestClient(*args, **kwargs)``. The + # trailing kwargs door is already handled by KWARGS_TAIL_OPTIONAL above; this + # covers the leading ``*args`` half of the same signature. + ("signalwire", None, "RestClient"), +} + + +def _mark_varargs_heads_optional(out_modules: dict) -> None: + """Flip the LEADING var-positional-door param of each VARARGS_HEAD_OPTIONAL + method to ``required: false``. Fail loud if a keyed symbol/param can't be + found, mirroring _mark_kwargs_tails_optional.""" + for module, cls, method in VARARGS_HEAD_OPTIONAL: + mod_entry = out_modules.get(module) + if not mod_entry: + raise RuntimeError(f"VARARGS_HEAD_OPTIONAL: module {module!r} not found") + if cls is None: + sig = mod_entry.get("functions", {}).get(method) + else: + sig = ( + mod_entry.get("classes", {}).get(cls, {}).get("methods", {}).get(method) + ) + if not sig: + raise RuntimeError( + f"VARARGS_HEAD_OPTIONAL: symbol {module}.{cls or ''}.{method} not found" + ) + head = [ + p for p in sig.get("params", []) if p.get("kind") not in ("self", "cls") + ] + if not head: + raise RuntimeError( + f"VARARGS_HEAD_OPTIONAL: {module}.{cls or ''}.{method} has no value param to mark" + ) + head[0]["required"] = False + + _ACCESSOR_PREFIX_RE_SIG = re.compile(r"^(?:get|set|is|has|with)_(?P.+)$") # Constructor / dunder names that are never a surface CAPABILITY difference. When @@ -1104,14 +1630,33 @@ def _pkg_to_module_with_class(pkg: str, class_name: str) -> str: # from emission rather than allow-list it (idiom_reaudit_brief cat3). Excluded # ONLY when the reference does NOT record the same dunder on that class (so a # class whose reference twin genuinely declares __init__ still matches). -_CTOR_DUNDER_NAMES = frozenset({ - "__init__", "__repr__", "__str__", "__eq__", "__hash__", - "__enter__", "__exit__", -}) +_CTOR_DUNDER_NAMES = frozenset( + { + "__init__", + "__repr__", + "__str__", + "__eq__", + "__hash__", + "__enter__", + "__exit__", + # Java's identity trio, under the names SignatureDump emits after snake_casing. + # These are the SAME construction/identity idiom as the Python dunders above, + # just spelled the JVM way: `equals` IS `__eq__`, `hash_code` IS `__hash__`, + # `to_string` IS `__str__`/`__repr__`. javac GENERATES all three for every + # `record`, so a port carrying a record gets them whether or not the author + # wrote them — they are not a capability the reference lacks. + # The guard below still applies: they are dropped ONLY when the reference + # records no member of that name on that class, so a genuine twin still matches. + "equals", + "hash_code", + "to_string", + } +) -def _exclude_ctor_dunder_sig(out_modules: dict, - oracle_members: dict[tuple[str, str], set[str]]) -> None: +def _exclude_ctor_dunder_sig( + out_modules: dict, oracle_members: dict[tuple[str, str], set[str]] +) -> None: """In-place: drop ctor/dunder method keys that would be port-only ADDITIONS (the reference records no such dunder on that class). Lockstep with the surface enumerator's exclusion.""" @@ -1135,8 +1680,9 @@ def _load_oracle_sig_members(reference_json: Path) -> dict[tuple[str, str], set[ return out -def _fold_accessors_sig(out_modules: dict, - oracle_members: dict[tuple[str, str], set[str]]) -> None: +def _fold_accessors_sig( + out_modules: dict, oracle_members: dict[tuple[str, str], set[str]] +) -> None: """In-place accessor→member fold on the signature dict, lockstep with the surface enumerator's ``fold_accessors_to_members``. Renames a class's ``getX``/``setX``/``isX``/``hasX``/``withX`` method KEY onto the reference @@ -1153,8 +1699,7 @@ def _fold_accessors_sig(out_modules: dict, renames: list[tuple[str, str]] = [] for name in list(methods): m = _ACCESSOR_PREFIX_RE_SIG.match(name) - if (m and m.group("field") in ref_members - and name not in ref_members): + if m and m.group("field") in ref_members and name not in ref_members: renames.append((name, m.group("field"))) for src_name, dst_name in renames: sig = methods.pop(src_name, None) @@ -1163,16 +1708,24 @@ def _fold_accessors_sig(out_modules: dict, # Getter (0 non-receiver params) wins over setter on collision. existing = methods.get(dst_name) if existing is not None: + def _arity(s: dict) -> int: - return len([p for p in s.get("params", []) - if p.get("kind") not in ("self", "cls")]) + return len( + [ + p + for p in s.get("params", []) + if p.get("kind") not in ("self", "cls") + ] + ) + if _arity(existing) <= _arity(sig): continue methods[dst_name] = sig -def _apply_method_aliases_sig(out_modules: dict, - oracle_members: dict[tuple[str, str], set[str]]) -> None: +def _apply_method_aliases_sig( + out_modules: dict, oracle_members: dict[tuple[str, str], set[str]] +) -> None: """In-place per-(module, class) method-key rename, lockstep with the surface enumerator's ``_SURFACE_METHOD_ALIASES`` application. @@ -1219,7 +1772,9 @@ def _mark_kwargs_tails_optional(out_modules: dict) -> None: if cls is None: sig = mod_entry.get("functions", {}).get(method) else: - sig = mod_entry.get("classes", {}).get(cls, {}).get("methods", {}).get(method) + sig = ( + mod_entry.get("classes", {}).get(cls, {}).get("methods", {}).get(method) + ) if not sig: raise RuntimeError( f"KWARGS_TAIL_OPTIONAL: symbol {module}.{cls or ''}.{method} not found" @@ -1239,22 +1794,30 @@ def _mark_kwargs_tails_optional(out_modules: dict) -> None: # emits for the nested/helper type). All are port-only value/builder types with # no reference counterpart. _SIG_EXCLUDED_SIMPLE_NAMES: set[str] = { - "RenderOptions", # SwmlRenderer options-builder - "SWAIGFunctionBuilder", # SWAIGFunction options-builder - "ValidationResult", # (valid, errors) tuple record (swml/swaig/security) - "AuthException", # AuthHandler nested exception - "AuthResult", # AuthHandler nested result - "BasicCredentials", # AuthHandler nested credential type - "BearerCredentials", # AuthHandler nested credential type - "RequestHandler", # AuthHandler framework-neutral middleware wrapper - "Response", # AuthHandler nested response value - "LoggingLevel", # logging enum helper (Logger.Level is the surface) - "SkillParams", # package-private skill base-schema helper - "SWAIGFunctionHandler", # @FunctionalInterface handler - "ToolRegistryTool", # ToolRegistry nested tool value - "WebhookRejection", # WebhookValidator.validate reject-triple record - "HttpResult", # Service.handleRequest (status, headers, body) triple record - "InferredSchema", # TypeInference.inferSchema 5-tuple stand-in record + "RenderOptions", # SwmlRenderer options-builder + "SWAIGFunctionBuilder", # SWAIGFunction options-builder + "ValidationResult", # (valid, errors) tuple record (swml/swaig/security) + "AuthException", # AuthHandler nested exception + "AuthResult", # AuthHandler nested result + # BasicCredentials / BearerCredentials are DELIBERATELY NOT excluded. They were + # listed here as "port-only value types with no reference counterpart", which was + # true only while griffe could not resolve FastAPI's HTTPBasicCredentials / + # HTTPAuthorizationCredentials into the `signalwire.` tree — the oracle emitted + # dangling class refs a port could neither match nor miss. porting-sdk dcff742 + # filled them in as the real two-field classes they always were on the wire + # (username/password, scheme/credentials), so the reference DOES record them and + # excluding them here made four members read as missing-port while the code + # implemented them correctly. Java carries them as records nested in AuthHandler; + # JAVA_NESTED_CLASS_RENAMES maps them into signalwire.core.auth_handler. + "RequestHandler", # AuthHandler framework-neutral middleware wrapper + "Response", # AuthHandler nested response value + "LoggingLevel", # logging enum helper (Logger.Level is the surface) + "SkillParams", # package-private skill base-schema helper + "SWAIGFunctionHandler", # @FunctionalInterface handler + "ToolRegistryTool", # ToolRegistry nested tool value + "WebhookRejection", # WebhookValidator.validate reject-triple record + "HttpResult", # Service.handleRequest (status, headers, body) triple record + "InferredSchema", # TypeInference.inferSchema 5-tuple stand-in record # RequestOptions envelope (plan 4.2) helper types with no PUBLIC reference # counterpart: EffectiveOptions is the port's stand-in for the reference's # PRIVATE _EffectiveOptions (underscore classes are not enumerated by the @@ -1278,8 +1841,12 @@ def _mark_kwargs_tails_optional(out_modules: dict) -> None: } -def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = None, - crud_bases: dict[str, dict] | None = None) -> tuple[dict, list]: +def collect( + raw: dict, + aliases: dict, + sidecar: dict[str, list[dict]] | None = None, + crud_bases: dict[str, dict] | None = None, +) -> tuple[dict, list]: out_modules: dict = {} failures: list = [] sidecar = sidecar or {} @@ -1316,15 +1883,44 @@ def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = No # ``Builder`` (the Java NAMED idiom for keyword params, L13) — is # implementation detail of the typed input, not a route/resource, so # the oracle has no counterpart. Drop these here exactly as the - # surface enumerator drops all nested classes in the package. Also - # drop the ``ResourceTree`` plumbing base entirely (the oracle has no - # ResourceTree; the RestClient's namespace accessors map to Python - # instance attributes and are covered by PORT_ADDITIONS). The resource - # classes (Mfa, Calling, …) and the namespace CONTAINERS + # surface enumerator drops all nested classes in the package. The + # resource classes (Mfa, Calling, …) and the namespace CONTAINERS # (RegistryNamespace, …) are kept. - if pkg == _GENERATED_PKG: - if java_name == "ResourceTree" or java_name.endswith("Request") or java_name == "Builder": - continue + if pkg == _GENERATED_PKG and ( + java_name.endswith("Request") or java_name == "Builder" + ): + continue + + # ``ResourceTree`` plumbing base → RETARGET onto RestClient. + # + # ``RestClient extends ResourceTree`` (rest/RestClient.java), so every + # client-tree accessor — ``calling()``, ``fabric()``, ``video()``, the + # other 19 — is DECLARED on ResourceTree and merely INHERITED by + # RestClient. SignatureDump walks ``getDeclaredMethods()``, so it sees + # those accessors only on ResourceTree; and RestClient's sole + # constructor is private, so it dumps no ```` either. Dropping + # ResourceTree therefore left ``RestClient`` with ZERO recorded members + # while the oracle records 22 accessors + ``__init__`` on + # ``signalwire.rest.client.RestClient`` — a pure ENUMERATOR blind spot, + # not a missing capability (ResourceTreeReachabilityMockTest proves all + # 22 reach the wire). + # + # The oracle has no ``ResourceTree`` class of its own: Python wires the + # same accessors as instance attributes on RestClient via + # ``_GeneratedResourceTree``. So route ResourceTree's members onto the + # reference's ``signalwire.rest.client.RestClient``, exactly as + # enumerate_surface.py already does for the surface axis. Members MERGE + # (RestClient's own declared methods are recorded from its own type + # entry) — see the merge at the out_modules write below. + if pkg == _GENERATED_PKG and java_name == "ResourceTree": + # Re-labelling pkg+name is enough: ``full_pkg``, ``canonical_name`` + # and ``mod`` are all derived from them further down, so the entry + # resolves to signalwire.rest.client.RestClient by the normal path. + pkg = "com.signalwire.sdk.rest" + java_name = "RestClient" + retargeted_from_base = True + else: + retargeted_from_base = False # AI Chat options-builders: SignatureDump emits each nested Options.Builder # with the bare simple name ``Builder``; they all live in the aichat package @@ -1362,7 +1958,11 @@ def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = No # Undo the generator's reserved-word field suffix (`default_` → # `default`, `enum_` → `enum`) so the recorded name is the bare wire # key the oracle records. The generator suffixed on a JAVA keyword. - recorded = wire[:-1] if (wire.endswith("_") and wire[:-1] in _JAVA_FIELD_KEYWORDS) else wire + recorded = ( + wire[:-1] + if (wire.endswith("_") and wire[:-1] in _JAVA_FIELD_KEYWORDS) + else wire + ) # The wire-type DTO fields are LOOSELY typed (boxed scalar / Map / # List / Object — never a ref to another generated class, to keep the # emitter deterministic). The reference records the RICH field type @@ -1374,8 +1974,10 @@ def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = No # the sig-oracle-ABSENT modules — so no un-excused return-mismatch and # no diff-tool change needed. (The RICH types live in the SURFACE, which # records only the class name; the field-level shape is not compared.) - members[recorded] = {"params": [{"name": "self", "kind": "self"}], - "returns": "any"} + members[recorded] = { + "params": [{"name": "self", "kind": "self"}], + "returns": "any", + } if members: out_modules.setdefault(gen_type_mod, {"classes": {}}) out_modules[gen_type_mod]["classes"][canonical_name] = { @@ -1412,7 +2014,9 @@ def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = No mod = _pkg_to_module_with_class(pkg, canonical_name) methods_out: dict = {} - free_functions_out: list[tuple[str, str, dict]] = [] # (target_mod, target_fn, sig) + free_functions_out: list[ + tuple[str, str, dict] + ] = [] # (target_mod, target_fn, sig) for m in type_entry.get("methods", []): native = m.get("name", "") if native == "": @@ -1421,6 +2025,23 @@ def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = No if native.startswith("$"): continue snake = camel_to_snake(native) + # Python-keyword escape, lockstep with the surface enumerator + # (enumerate_surface.py `if snake in _PY_KEYWORDS: snake += "_"`). + # Python renames a keyword-colliding method by appending "_" + # (`Call.pass_`), so the Java spelling `pass()` canonicalizes to + # `pass_` — a RENAME, per RULES.md §2, and it is the documented + # pre-rename form `_METHOD_RENAMES` keys on (`await_` → `wait`). + # Dropping it here instead made three reference members look + # unimplemented and cost three omission entries that hid + # fully-working methods. + # + # ENUMS ARE EXCLUDED: an enum CONSTANT is not a method, so a + # constant named `LAMBDA` must not become `lambda_` — the + # reference has no such member either way, and escaping it only + # renames pre-existing drift (`ExecutionMode.lambda` is a + # sibling of the already-drifting `cgi`/`server`/`detect`). + if snake in _PY_KEYWORDS and type_entry.get("kind") != "enum": + snake += "_" # Class-scoped getter→field fold for the relay Event / AI-Chat DTO # @dataclass surface (keyed by the raw Java simple class name), lockstep # with the surface enumerator. Precedence over the global _METHOD_RENAMES. @@ -1429,8 +2050,6 @@ def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = No method_canonical = scoped[snake] else: method_canonical = _METHOD_RENAMES.get(snake, snake) - if method_canonical in _PY_KEYWORDS: - continue # Idiom-scaffolding method with no reference counterpart (e.g. a # builder-factory on a builder-pattern value object). Drop it. if (canonical_name, method_canonical) in _METHOD_DROP: @@ -1463,6 +2082,12 @@ def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = No params = sig.get("params", []) if params and params[0].get("kind") == "self": sig["params"] = params[1:] + # Overload-derived optionality applies to projected free functions too. + _optf = optional_param_names(type_entry, native) + if _optf: + for _p in sig.get("params", []): + if _p.get("name") in _optf: + _p["required"] = False free_functions_out.append((target_mod, target_fn, sig)) continue ctx = f"{mod}.{canonical_name}.{method_canonical}" @@ -1471,13 +2096,25 @@ def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = No except TypeTranslationError as e: failures.append(str(e)) continue + # Java expresses "this param has a default" as a shorter overload that + # omits it and supplies the default. Reflection flattens that away, so + # recover the optionality from the overload set (see + # optional_param_names) before any override/unfold replaces the params. + _opt = optional_param_names(type_entry, native) + if _opt: + for _p in sig.get("params", []): + if _p.get("name") in _opt and _p.get("kind") not in ("self", "cls"): + _p["required"] = False # Method-level signature override (regular methods whose native Java # shape — e.g. a value-tuple stand-in record return — doesn't # translate via reflection alone). Replace the reflected signature # with the canonical one keyed by (canonical_class, method). mo = METHOD_SIGNATURE_OVERRIDES.get((canonical_name, method_canonical)) if mo is not None: - sig = {"params": [dict(p) for p in mo["params"]], "returns": mo["returns"]} + sig = { + "params": [dict(p) for p in mo["params"]], + "returns": mo["returns"], + } methods_out[method_canonical] = sig continue # Generated-REST typed-input unfold (L10). Java reflection sees a @@ -1526,24 +2163,29 @@ def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = No # the MOST-param overload there instead. if method_canonical in methods_out: existing = methods_out[method_canonical] - if (canonical_name, method_canonical) in PREFER_FULL_OVERLOAD: + if ( + canonical_name, + method_canonical, + ) in PREFER_FULL_OVERLOAD or _delegating_overload_set( + type_entry, native + ): n_new, n_old = len(sig["params"]), len(existing["params"]) if n_new < n_old: continue - if n_new == n_old: - # Same arity (e.g. the all-String full-arity overload vs - # the SAME-arity fully-typed overload that swaps a couple - # closed-set params to enums — record_call format/direction, - # tap direction/codec). Both reach full reference parity; - # break the tie toward the overload that types MORE params - # (more ``class:`` refs) so the knowable closed sets surface - # as the wave-1 ``enum<...>`` contract instead of bare - # ``string``. The String full-arity overload is then just a - # forward-compat escape hatch the Java overload-collapse - # drops (no separate surface entry — same collapse model as - # every other Java overload). - if _typed_param_count(sig) <= _typed_param_count(existing): - continue + # Same arity (e.g. the all-String full-arity overload vs the + # SAME-arity fully-typed overload that swaps a couple closed-set + # params to enums — record_call format/direction, tap + # direction/codec). Both reach full reference parity; break the + # tie toward the overload that types MORE params (more ``class:`` + # refs) so the knowable closed sets surface as the wave-1 + # ``enum<...>`` contract instead of bare ``string``. The String + # full-arity overload is then just a forward-compat escape hatch + # the Java overload-collapse drops (no separate surface entry — + # same collapse model as every other Java overload). + if n_new == n_old and _typed_param_count(sig) <= _typed_param_count( + existing + ): + continue elif len(sig["params"]) >= len(existing["params"]): continue methods_out[method_canonical] = sig @@ -1552,9 +2194,20 @@ def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = No out_modules.setdefault(target_mod, {"classes": {}}) out_modules[target_mod].setdefault("functions", {}) # Java overloads collapse — prefer the fewer-param overload so - # the projection lines up with Python's single signature. + # the projection lines up with Python's single signature. Exception + # (PREFER_FULL_OVERLOAD_FREE_FUNCTIONS): where the shorter overload only + # exists to supply the reference's default, the FULL signature is the + # parity surface — optional_param_names has already marked the omitted + # params optional on it, and the short form would hide them. existing = out_modules[target_mod]["functions"].get(target_fn) - if existing is not None and len(sig.get("params", [])) >= len(existing.get("params", [])): + if (target_mod, target_fn) in PREFER_FULL_OVERLOAD_FREE_FUNCTIONS: + if existing is not None and len(sig.get("params", [])) <= len( + existing.get("params", []) + ): + continue + elif existing is not None and len(sig.get("params", [])) >= len( + existing.get("params", []) + ): continue out_modules[target_mod]["functions"][target_fn] = sig @@ -1581,13 +2234,52 @@ def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = No cb = crud_bases.get(java_name) if cb and pkg == _GENERATED_PKG: cls_entry["crud_base"] = cb + # MERGE, don't clobber: one canonical class can be fed by more than one + # Java type entry. ``RestClient`` is the live case — its own declared + # methods come from com.signalwire.sdk.rest.RestClient while the 22 + # inherited client-tree accessors arrive via the retargeted + # ``ResourceTree`` entry (see the retarget above). Whichever arrives + # second must ADD to the first, not replace it. + # + # Precedence is by ROLE, not arrival order (reflection's type order is + # not specified): on a name collision the SUBCLASS's own declaration + # wins, because an override is the real resolved signature — so the + # base-retargeted entry only fills names the subclass does not declare. + prior = out_modules[mod]["classes"].get(canonical_name) + if prior is not None: + if retargeted_from_base: + # This entry is the BASE: it may only fill gaps. + merged = dict(cls_entry["methods"]) + merged.update(prior.get("methods", {})) + cls_entry = { + **cls_entry, + **prior, + "methods": dict(sorted(merged.items())), + } + else: + # This entry is the SUBCLASS: its declarations win. + merged = dict(prior.get("methods", {})) + merged.update(cls_entry["methods"]) + cls_entry = { + **prior, + **cls_entry, + "methods": dict(sorted(merged.items())), + } out_modules[mod]["classes"][canonical_name] = cls_entry # Mixin projection — methods may live on AgentBase OR on SWMLService # (its parent class). Tool/auth/state helpers are typically declared # on Service and inherited. - ab_entry = out_modules.get("signalwire.core.agent_base", {}).get("classes", {}).get("AgentBase") - svc_entry = out_modules.get("signalwire.core.swml_service", {}).get("classes", {}).get("SWMLService") + ab_entry = ( + out_modules.get("signalwire.core.agent_base", {}) + .get("classes", {}) + .get("AgentBase") + ) + svc_entry = ( + out_modules.get("signalwire.core.swml_service", {}) + .get("classes", {}) + .get("SWMLService") + ) if ab_entry or svc_entry: ab_methods = ab_entry["methods"] if ab_entry else {} svc_methods = svc_entry["methods"] if svc_entry else {} @@ -1601,9 +2293,24 @@ def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = No out_modules[target_mod]["classes"].setdefault(target_cls, {"methods": {}}) out_modules[target_mod]["classes"][target_cls]["methods"].update(present) projected.update(present) - # Drop projected methods from AgentBase only. + # Drop projected methods from AgentBase, and from SWMLService when the + # reference does not record them there. Java flattens Python's composed + # mixins / ToolRegistry onto its Service base, so a method sourced from + # ``svc_methods`` was projected to its canonical mixin home but left + # behind on SWMLService too — a duplicate port-only symbol. ORACLE-KEYED + # (never a hardcoded list), lockstep with enumerate_surface.py: a method + # the reference genuinely records on SWMLService stays put. for n in projected: ab_methods.pop(n, None) + _svc_ref = PSDK / "python_signatures.json" + _ref_svc_members: set[str] = set() + if _svc_ref.is_file(): + _ref_svc_members = _load_oracle_sig_members(_svc_ref).get( + ("signalwire.core.swml_service", "SWMLService"), set() + ) + for n in projected: + if n in svc_methods and n not in _ref_svc_members: + svc_methods.pop(n, None) # ``handle_request`` is declared on both Java classes (SWMLService is the # framework-free dispatch core; AgentBase overrides it to render via its # own SWML pipeline). The SIGNATURE oracle records it only once — on the @@ -1635,6 +2342,7 @@ def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = No # methods (post-#58 the oracle strips the tail; keep the port's optional # kwargs door excused as an optional extra, not an omission). _mark_kwargs_tails_optional(out_modules) + _mark_varargs_heads_optional(out_modules) sorted_modules = {} for k in sorted(out_modules): @@ -1675,10 +2383,8 @@ def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = No # canonical snake_case by translate_method_name, so no name mapping is needed here; # only the BINDING was missing. _BUILDER_CONSTRUCTS: dict[str, str] = { - "signalwire.agent.agent_base_builder.AgentBaseBuilder": - "signalwire.core.agent_base.AgentBase", - "signalwire.relay.relay_client_builder.RelayClientBuilder": - "signalwire.relay.client.RelayClient", + "signalwire.agent.agent_base_builder.AgentBaseBuilder": "signalwire.core.agent_base.AgentBase", + "signalwire.relay.relay_client_builder.RelayClientBuilder": "signalwire.relay.client.RelayClient", } # Builder members that are the builder MECHANISM, not construction parameters. @@ -1700,10 +2406,18 @@ def collect(raw: dict, aliases: dict, sidecar: dict[str, list[dict]] | None = No # (name, route, host, port, authUser, authPassword) and the full 9-arg # constructor — so everything after ``name`` is optional by construction, # matching the reference's defaulted SWMLService.__init__ params. - "signalwire.core.swml_service.SWMLService": frozenset({ - "route", "host", "port", "auth_user", "auth_password", - "schema_path", "config_file", "schema_validation", - }), + "signalwire.core.swml_service.SWMLService": frozenset( + { + "route", + "host", + "port", + "auth_user", + "auth_password", + "schema_path", + "config_file", + "schema_validation", + } + ), } @@ -1730,8 +2444,12 @@ def _params_from(sig: dict) -> dict: for p in sig.get("params", []): if not isinstance(p, dict): continue - if (p.get("kind") or "positional") in ("self", "cls", "var_keyword", - "var_positional"): + if (p.get("kind") or "positional") in ( + "self", + "cls", + "var_keyword", + "var_positional", + ): continue name = p.get("name") if not name or name.startswith("_"): @@ -1768,17 +2486,23 @@ def _params_from(sig: dict) -> dict: continue if not isinstance(msig, dict): continue - args = [p for p in msig.get("params", []) - if (p.get("kind") or "positional") not in ("self", "cls")] + args = [ + p + for p in msig.get("params", []) + if (p.get("kind") or "positional") not in ("self", "cls") + ] if len(args) != 1: continue # A builder setter is optional by construction; only fill in what the # class's own __init__ did not already declare, so a real ctor param's # required flag wins over the builder's implicit optionality. - params.setdefault(mname, { - "type": args[0].get("type", "any"), - "required": False, - }) + params.setdefault( + mname, + { + "type": args[0].get("type", "any"), + "required": False, + }, + ) out[target]["params"] = dict(sorted(params.items())) return dict(sorted(out.items())) @@ -1797,7 +2521,123 @@ def _typed_param_count(sig: dict) -> int: return n -def build_signature(method: dict, aliases: dict, context: str, mod: str, class_name: str) -> dict: +# Classes whose fluent methods the REFERENCE annotates with the ``Self`` +# type-var, so the oracle records ``returns: class:Self``. Java has no Self type +# and returns the concrete declaring class instead; ``build_signature`` +# canonicalizes onto the oracle's spelling for exactly these, and only when the +# Java return already IS the declaring class. +# +# Verified against the oracle, not assumed: ``class:Self`` appears as a return +# type 7 times in python_signatures.json, all 7 on SWMLBuilder. Re-derive with +# a scan for ``"returns": "class:Self"`` before adding a class here — a class +# whose reference methods return the CONCRETE type must NOT be listed, or a real +# return-type difference would be rewritten away. +SELF_RETURNING_CLASSES: set[tuple[str, str]] = { + ("signalwire.core.swml_builder", "SWMLBuilder"), +} + + +def _delegating_overload_set(type_entry: dict, native_method: str) -> bool: + """True when this method's shorter overloads are TRAILING-PREFIX DELEGATES. + + Java has no default arguments; the idiomatic substitute is a shorter + overload that omits the trailing params and forwards the reference's + defaults — ``pause()`` delegating to ``pause(behavior)`` IS + ``behavior: str | None = None``. When the overload set has that shape the + FULL-arity overload is the parity surface: it carries every parameter the + reference declares, and ``optional_param_names`` has already marked the + omitted ones ``required: false``. Collapsing to the FEWEST-param overload + instead would drop those params from the recorded signature entirely and + surface as a ``param-count-mismatch`` that is pure idiom — the very shape + the hand-maintained ``PREFER_FULL_OVERLOAD`` set was itemising one method + at a time. + + Reusing ``optional_param_names``' predicate keeps the two decisions from + drifting: the same prefix test that says "these params are optional" is + what says "keep the overload that HAS them". + + Deliberately narrow, and the narrowing is load-bearing. EVERY shorter + overload must be a trailing prefix of the full one — not merely one of + them. A set that MIXES a delegate with an unrelated same-arity type-swap + sibling is not a defaults chain, and preferring its full-arity member picks + an arbitrary form: ``SessionManager`` offers ``(int defaultExpiry, String + secretKey)`` beside ``(byte[] secretKey, int defaultExpiry)``, whose + parameters are REORDERED and RETYPED rather than extended. Requiring the + whole set to be prefix-consistent keeps the fewest-param default there, so + a genuine surface collapse (an options-object, a type-swap) still reports + instead of being silently re-picked. + """ + overloads = [ + m for m in type_entry.get("methods", []) if m.get("name") == native_method + ] + if len(overloads) < 2: + return False + names = [ + [camel_to_snake(p.get("name", "")) for p in m.get("parameters", [])] + for m in overloads + ] + full = max(names, key=len) + # Unique arities only: two overloads of the SAME arity cannot both be + # trailing prefixes of the full one, so their presence proves a type-swap. + if len(names) != len({len(n) for n in names}): + return False + return all(n == full[: len(n)] for n in names) + + +def optional_param_names(type_entry: dict, native_method: str) -> set[str]: + """CANONICAL names of the params some SHORTER public overload of + ``native_method`` omits — i.e. the params this method treats as OPTIONAL. + + Java has no default arguments; its idiomatic substitute is METHOD + OVERLOADING — ``pause()`` delegating to ``pause(behavior)`` with the + reference's default is exactly how ``behavior: str | None = None`` is + expressed here. Reflection reports every parameter of every overload + positionally, so ``build_signature`` alone can only mark them all + ``required: True``; that erases the optionality the source really has and + reads downstream as a spurious ``required-flip`` against the reference. + + We recover it structurally: take the FULL-arity overload (the one the Java + overload collapse keeps as the parity surface) and mark a param optional + when at least one shorter overload of the same name omits it. Only trailing + prefix-overloads count — the shorter overload's parameter names must be a + PREFIX of the full one's — because that is the shape a delegating + convenience overload takes; a same-arity type-swap overload (``tap`` with + enum vs String) is not an optionality statement and must not be read as one. + + We deliberately do NOT synthesize a ``default`` value: reflection cannot see + what constant the short overload forwards, and the diff checker treats + "port marks it optional but records no default" as UNRECORDED, not drift + (``Coverage.default_unrecorded``). Recording ``required: false`` is the + honest, verifiable half; inventing the value would not be. + """ + overloads = [ + m for m in type_entry.get("methods", []) if m.get("name") == native_method + ] + if len(overloads) < 2: + return set() + + def canon_names(m: dict) -> list[str]: + return [camel_to_snake(p.get("name", "")) for p in m.get("parameters", [])] + + full = max(overloads, key=lambda m: len(m.get("parameters", []))) + full_names = canon_names(full) + optional: set[str] = set() + for m in overloads: + if m is full: + continue + names = canon_names(m) + if len(names) >= len(full_names): + continue + # Trailing-omission (prefix) overload only — see docstring. + if names != full_names[: len(names)]: + continue + optional.update(full_names[len(names) :]) + return optional + + +def build_signature( + method: dict, aliases: dict, context: str, mod: str, class_name: str +) -> dict: params_out: list = [] is_static = method.get("is_static", False) if not is_static: @@ -1821,7 +2661,27 @@ def build_signature(method: dict, aliases: dict, context: str, mod: str, class_n if method.get("name") == "": return_canon = "void" else: - return_canon = translate_java_type(method.get("return_type", "void"), aliases, context + "[->]") + return_canon = translate_java_type( + method.get("return_type", "void"), aliases, context + "[->]" + ) + # Fluent self-return: the reference annotates "returns the receiver" with + # the ``Self`` type-var (``def say(...) -> Self: ... return self``), which + # the oracle records as ``class:Self``. Java has no Self type and spells + # the identical contract as the concrete declaring class + # (``SWMLBuilder say(...) { ...; return this; }``). Same fluent contract, + # two spellings, so canonicalize onto the oracle's. + # + # Scoped to the classes the reference actually declares ``Self`` on + # (SELF_RETURNING_CLASSES), and additionally requires the Java return to + # BE that class. Both halves matter: rewriting every self-returning method + # would erase a real difference wherever the reference returns the + # CONCRETE class, and rewriting a non-self return on a listed class would + # invent a fluent contract the method does not have. + if ( + mod, + class_name, + ) in SELF_RETURNING_CLASSES and return_canon == f"class:{mod}.{class_name}": + return_canon = "class:Self" return {"params": params_out, "returns": return_canon} @@ -1829,6 +2689,7 @@ def build_signature(method: dict, aliases: dict, context: str, mod: str, class_n # CLI # --------------------------------------------------------------------------- + def run_dump() -> dict: """Build SDK JAR + run SignatureDump.""" # Compile the helper if needed. Recompile when the .class is missing OR the @@ -1837,10 +2698,21 @@ def run_dump() -> dict: # behavior, which once hid a sort-determinism fix). helper_src = HERE / "SignatureDump.java" helper_class = PORT_ROOT / "build" / "scripts" / "SignatureDump.class" - if not helper_class.exists() or helper_src.stat().st_mtime > helper_class.stat().st_mtime: + if ( + not helper_class.exists() + or helper_src.stat().st_mtime > helper_class.stat().st_mtime + ): cp = subprocess.run( - ["javac", "-parameters", str(HERE / "SignatureDump.java"), "-d", str(PORT_ROOT / "build" / "scripts")], - capture_output=True, text=True, timeout=120, + [ + "javac", + "-parameters", + str(HERE / "SignatureDump.java"), + "-d", + str(PORT_ROOT / "build" / "scripts"), + ], + capture_output=True, + text=True, + timeout=120, ) if cp.returncode != 0: raise RuntimeError(f"javac failed:\n{cp.stderr}") @@ -1858,12 +2730,15 @@ def run_dump() -> dict: # Build classpath: helper + SDK + ~/.gradle dep cache (gson, websocket, slf4j) cp_parts = [str(PORT_ROOT / "build" / "scripts"), str(jar)] - for dep_jar in (Path.home() / ".gradle" / "caches").rglob("*.jar"): - cp_parts.append(str(dep_jar)) + cp_parts.extend( + str(dep_jar) for dep_jar in (Path.home() / ".gradle" / "caches").rglob("*.jar") + ) classpath = ":".join(cp_parts) cp = subprocess.run( ["java", "-cp", classpath, "SignatureDump", str(jar)], - capture_output=True, text=True, timeout=300, + capture_output=True, + text=True, + timeout=300, ) if cp.returncode != 0: raise RuntimeError(f"SignatureDump failed:\n{cp.stderr}") @@ -1872,11 +2747,22 @@ def run_dump() -> dict: def main() -> int: parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument("--raw", type=Path, default=None, - help="Path to a pre-dumped SignatureDump JSON") - parser.add_argument("--out", type=Path, - default=PORT_ROOT / "port_signatures.json") - parser.add_argument("--strict", action="store_true") + parser.add_argument( + "--raw", type=Path, default=None, help="Path to a pre-dumped SignatureDump JSON" + ) + parser.add_argument("--out", type=Path, default=PORT_ROOT / "port_signatures.json") + # Fail-loud is the DEFAULT, not an opt-in. As `store_true` this flag was dead + # code: the usage header advertised it, but no gate ever passed it, so a type + # that failed to translate silently DROPPED THE WHOLE SYMBOL and the artifact + # was written anyway at exit 0 — the port then got blamed for an omission it + # never had. `--no-strict` remains as the explicit escape hatch. + parser.add_argument( + "--strict", + action=argparse.BooleanOptionalAction, + default=True, + help="fail (exit 1) on any type-translation failure instead of silently " + "dropping the symbol (default: on; use --no-strict to opt out)", + ) args = parser.parse_args() global CLASS_TO_MODULE @@ -1893,7 +2779,10 @@ def main() -> int: canonical, failures = collect(raw, aliases, sidecar, crud_bases) if failures: - print(f"enumerate_signatures: {len(failures)} translation failure(s)", file=sys.stderr) + print( + f"enumerate_signatures: {len(failures)} translation failure(s)", + file=sys.stderr, + ) for f in failures[:30]: print(f" - {f}", file=sys.stderr) if len(failures) > 30: @@ -1901,10 +2790,17 @@ def main() -> int: if args.strict: return 1 - args.out.write_text(json.dumps(canonical, indent=2, sort_keys=False) + "\n", encoding="utf-8") + args.out.write_text( + json.dumps(canonical, indent=2, sort_keys=False) + "\n", encoding="utf-8" + ) n_mods = len(canonical["modules"]) - n_methods = sum(sum(len(c["methods"]) for c in m.get("classes", {}).values()) for m in canonical["modules"].values()) - print(f"enumerate_signatures: wrote {args.out} ({n_mods} modules, {n_methods} methods)") + n_methods = sum( + sum(len(c["methods"]) for c in m.get("classes", {}).values()) + for m in canonical["modules"].values() + ) + print( + f"enumerate_signatures: wrote {args.out} ({n_mods} modules, {n_methods} methods)" + ) return 0 diff --git a/scripts/enumerate_surface.py b/scripts/enumerate_surface.py index 067866ee..f41b39cd 100755 --- a/scripts/enumerate_surface.py +++ b/scripts/enumerate_surface.py @@ -28,9 +28,19 @@ ``audit_docs.py``, which extracts method-call patterns from ``docs/`` and ``examples/*.java`` in their natural Java form. +An output destination is MANDATORY — ``--output PATH`` (write the file) or +``--stdout`` (pipe it). A bare run FAILS LOUD with a usage error. It used to +default to stdout, and that default was a silent wrong-green: a bare run printed +the snapshot to a stdout the caller discarded, wrote NOTHING, and exited 0 — so a +clean ``git status`` afterwards read as "no change was needed" when it actually +meant "nothing was written" (it cost a 7-port surface-audit red). php / rust / +cpp / dotnet / perl / ts / go all write the file rather than defaulting to a pipe; +this makes Java's enumerator stop being the fleet's one exception. + Usage:: - python3 scripts/enumerate_surface.py # stdout + python3 scripts/enumerate_surface.py # ERROR: names no destination + python3 scripts/enumerate_surface.py --stdout # explicit pipe python3 scripts/enumerate_surface.py --output port_surface.json python3 scripts/enumerate_surface.py --check --output port_surface.json python3 scripts/enumerate_surface.py --native --output port_surface_native.json @@ -52,6 +62,7 @@ # A Java class translates to the Python module that owns the same class name. # --------------------------------------------------------------------------- + def build_class_to_module_map(reference_json: Path) -> dict[str, str]: """Return {ClassName: python.module} from the reference surface.""" mapping: dict[str, str] = {} @@ -115,10 +126,17 @@ def load_oracle_class_members( # Ctor / dunder names — never a surface CAPABILITY difference. Excluded from # emission when they would be a port-only ADDITION (idiom_reaudit_brief cat3); # kept only where the reference records the same dunder on that class. -_CTOR_DUNDER_NAMES = frozenset({ - "__init__", "__repr__", "__str__", "__eq__", "__hash__", - "__enter__", "__exit__", -}) +_CTOR_DUNDER_NAMES = frozenset( + { + "__init__", + "__repr__", + "__str__", + "__eq__", + "__hash__", + "__enter__", + "__exit__", + } +) def exclude_ctor_dunder( @@ -132,7 +150,8 @@ def exclude_ctor_dunder( for cls, methods in entry.get("classes", {}).items(): ref_members = oracle_class_members.get((mod, cls), set()) entry["classes"][cls] = [ - m for m in methods + m + for m in methods if not (m in _CTOR_DUNDER_NAMES and m not in ref_members) ] @@ -170,8 +189,7 @@ def fold_accessors_to_members( # the reference deliberately records both the attribute AND its # accessor (e.g. AgentServer records both ``agents`` and # ``get_agents``), so ``get_agents`` must stay to match its twin. - if (m and m.group("field") in ref_members - and name not in twin_names): + if m and m.group("field") in ref_members and name not in twin_names: folded.add(m.group("field")) else: folded.add(name) @@ -232,10 +250,10 @@ def load_oracle_generated_members( _PUBLIC_FIELD_RE = re.compile( r"(?:@com\.google\.gson\.annotations\.SerializedName\(\s*\"(?P[^\"]*)\"\s*\)" r"|@SerializedName\(\s*\"(?P[^\"]*)\"\s*\)\s*)?" # optional wire-key annotation - r"\s*\bpublic\s+(?:static\s+|final\s+)*" # modifiers (not a method: no '(') - r"[\w.$]+(?:\s*<[^;{}()]*>)?(?:\s*\[\s*\])*" # type (generics / arrays) - r"\s+(?P[A-Za-z_$][\w$]*)\s*" # field name - r"(?:=[^;{}()]*)?;", # optional initializer, ';' + r"\s*\bpublic\s+(?:static\s+|final\s+)*" # modifiers (not a method: no '(') + r"[\w.$]+(?:\s*<[^;{}()]*>)?(?:\s*\[\s*\])*" # type (generics / arrays) + r"\s+(?P[A-Za-z_$][\w$]*)\s*" # field name + r"(?:=[^;{}()]*)?;", # optional initializer, ';' ) @@ -356,8 +374,12 @@ def oracle_gated_field_accessors( # records these with ONLY ``__init__``; their Java lazy-accessor methods are the # client-tree wiring the oracle does not compare. Restrict them to ``__init__``. _GENERATED_CONTAINERS = { - "FabricNamespace", "VideoNamespace", "LogsNamespace", - "RegistryNamespace", "ProjectNamespace", "DatasphereNamespace", + "FabricNamespace", + "VideoNamespace", + "LogsNamespace", + "RegistryNamespace", + "ProjectNamespace", + "DatasphereNamespace", } # Generated-resource bases whose subclasses inherit create + update (the oracle @@ -420,11 +442,39 @@ def oracle_gated_field_accessors( _GEN_TYPE_COLLISION_NAMES = { # java.lang built-ins that clash (PascalCase class names never hit a lowercase # keyword, so this set is the java.lang collision set generate_rest suffixes). - "Record", "String", "Integer", "Long", "Double", "Boolean", "Object", "Void", - "Number", "Character", "Byte", "Short", "Float", "System", "Thread", "Runnable", - "Comparable", "Cloneable", "Iterable", "Error", "Exception", "Class", "Enum", - "Math", "Process", "Runtime", "Package", "Module", "Override", "Deprecated", - "SuppressWarnings", "FunctionalInterface", "SafeVarargs", + "Record", + "String", + "Integer", + "Long", + "Double", + "Boolean", + "Object", + "Void", + "Number", + "Character", + "Byte", + "Short", + "Float", + "System", + "Thread", + "Runnable", + "Comparable", + "Cloneable", + "Iterable", + "Error", + "Exception", + "Class", + "Enum", + "Math", + "Process", + "Runtime", + "Package", + "Module", + "Override", + "Deprecated", + "SuppressWarnings", + "FunctionalInterface", + "SafeVarargs", } @@ -442,10 +492,11 @@ def _gen_type_module(java_package: str) -> str | None: if java_package in _GEN_TYPE_PKG_TO_MODULE: return _GEN_TYPE_PKG_TO_MODULE[java_package] if java_package.startswith(_GEN_TYPE_PKG_PREFIX): - sub = java_package[len(_GEN_TYPE_PKG_PREFIX):].split(".", 1)[0] + sub = java_package[len(_GEN_TYPE_PKG_PREFIX) :].split(".", 1)[0] return _GEN_TYPE_REST_SUB_TO_MODULE.get(sub) return None + # ``public class Foo extends Bar {`` header of a generated resource. Read from # the RAW source (comments/imports already name ``BaseResource`` etc., so match # the class-declaration line specifically). @@ -461,10 +512,25 @@ def _generated_extends(raw_src: str) -> str | None: m = _GENERATED_EXTENDS_RE.search(raw_src) return m.group(1) if m else None + _CAMEL_RE_1 = re.compile(r"(.)([A-Z][a-z]+)") _CAMEL_RE_2 = re.compile(r"([a-z0-9])([A-Z])") -_PY_KEYWORDS = {"pass", "class", "def", "from", "import", "return", "yield", - "global", "lambda", "raise", "try", "with", "async", "await"} +_PY_KEYWORDS = { + "pass", + "class", + "def", + "from", + "import", + "return", + "yield", + "global", + "lambda", + "raise", + "try", + "with", + "async", + "await", +} # Java method name → Python-reference method name. Applied after the usual # camel→snake translation to bridge idiomatic naming gaps (Java's @@ -535,34 +601,133 @@ def _generated_extends(raw_src: str) -> str | None: # are deliberately absent here — they remain annotated PORT_ADDITIONS (extra Java # accessor surface the reference lacks). _EVENT_METHOD_RENAMES_BY_CLASS: dict[str, dict[str, str]] = { - "CallCollectEvent": {"get_control_id": "control_id", "get_final": "final", "get_result": "result", "get_state": "state"}, + "CallCollectEvent": { + "get_control_id": "control_id", + "get_final": "final", + "get_result": "result", + "get_state": "state", + }, "CallConnectEvent": {"get_connect_state": "connect_state", "get_peer": "peer"}, "CallDetectEvent": {"get_control_id": "control_id", "get_detect": "detect"}, - "CallDialEvent": {"get_call": "call", "get_dial_state": "dial_state", "get_tag": "tag"}, + "CallDialEvent": { + "get_call": "call", + "get_dial_state": "dial_state", + "get_tag": "tag", + }, "CallFaxEvent": {"get_control_id": "control_id", "get_fax": "fax"}, "CallPayEvent": {"get_control_id": "control_id", "get_state": "state"}, "CallPlayEvent": {"get_control_id": "control_id", "get_state": "state"}, - "CallReceiveEvent": {"get_call_state": "call_state", "get_context": "context", "get_device": "device", "get_direction": "direction", "get_node_id": "node_id", "get_project_id": "project_id", "get_segment_id": "segment_id", "get_tag": "tag"}, - "CallRecordEvent": {"get_control_id": "control_id", "get_duration": "duration", "get_record": "record", "get_size": "size", "get_state": "state", "get_url": "url"}, - "CallReferEvent": {"get_sip_notify_response_code": "sip_notify_response_code", "get_sip_refer_response_code": "sip_refer_response_code", "get_sip_refer_to": "sip_refer_to", "get_state": "state"}, + "CallReceiveEvent": { + "get_call_state": "call_state", + "get_context": "context", + "get_device": "device", + "get_direction": "direction", + "get_node_id": "node_id", + "get_project_id": "project_id", + "get_segment_id": "segment_id", + "get_tag": "tag", + }, + "CallRecordEvent": { + "get_control_id": "control_id", + "get_duration": "duration", + "get_record": "record", + "get_size": "size", + "get_state": "state", + "get_url": "url", + }, + "CallReferEvent": { + "get_sip_notify_response_code": "sip_notify_response_code", + "get_sip_refer_response_code": "sip_refer_response_code", + "get_sip_refer_to": "sip_refer_to", + "get_state": "state", + }, "CallSendDigitsEvent": {"get_control_id": "control_id", "get_state": "state"}, - "CallStateEvent": {"get_call_state": "call_state", "get_device": "device", "get_direction": "direction", "get_end_reason": "end_reason"}, - "CallStreamEvent": {"get_control_id": "control_id", "get_name": "name", "get_state": "state", "get_url": "url"}, - "CallTapEvent": {"get_control_id": "control_id", "get_device": "device", "get_state": "state", "get_tap": "tap"}, - "CallTranscribeEvent": {"get_control_id": "control_id", "get_duration": "duration", "get_recording_id": "recording_id", "get_size": "size", "get_state": "state", "get_url": "url"}, + "CallStateEvent": { + "get_call_state": "call_state", + "get_device": "device", + "get_direction": "direction", + "get_end_reason": "end_reason", + }, + "CallStreamEvent": { + "get_control_id": "control_id", + "get_name": "name", + "get_state": "state", + "get_url": "url", + }, + "CallTapEvent": { + "get_control_id": "control_id", + "get_device": "device", + "get_state": "state", + "get_tap": "tap", + }, + "CallTranscribeEvent": { + "get_control_id": "control_id", + "get_duration": "duration", + "get_recording_id": "recording_id", + "get_size": "size", + "get_state": "state", + "get_url": "url", + }, "CallingErrorEvent": {"get_code": "code", "get_message": "message"}, - "ConferenceEvent": {"get_conference_id": "conference_id", "get_name": "name", "get_status": "status"}, + "ConferenceEvent": { + "get_conference_id": "conference_id", + "get_name": "name", + "get_status": "status", + }, "DenoiseEvent": {"is_denoised": "denoised"}, "EchoEvent": {"get_state": "state"}, "HoldEvent": {"get_state": "state"}, - "MessagingReceiveEvent": {"get_body": "body", "get_context": "context", "get_direction": "direction", "get_from_number": "from_number", "get_media": "media", "get_message_id": "message_id", "get_message_state": "message_state", "get_segments": "segments", "get_tags": "tags", "get_to_number": "to_number"}, - "MessagingStateEvent": {"get_body": "body", "get_context": "context", "get_direction": "direction", "get_from_number": "from_number", "get_media": "media", "get_message_id": "message_id", "get_message_state": "message_state", "get_reason": "reason", "get_segments": "segments", "get_tags": "tags", "get_to_number": "to_number"}, - "QueueEvent": {"get_control_id": "control_id", "get_position": "position", "get_queue_id": "queue_id", "get_queue_name": "queue_name", "get_size": "size", "get_status": "status"}, - "RelayEvent": {"get_call_id": "call_id", "get_event_type": "event_type", "get_params": "params", "get_timestamp": "timestamp"}, + "MessagingReceiveEvent": { + "get_body": "body", + "get_context": "context", + "get_direction": "direction", + "get_from_number": "from_number", + "get_media": "media", + "get_message_id": "message_id", + "get_message_state": "message_state", + "get_segments": "segments", + "get_tags": "tags", + "get_to_number": "to_number", + }, + "MessagingStateEvent": { + "get_body": "body", + "get_context": "context", + "get_direction": "direction", + "get_from_number": "from_number", + "get_media": "media", + "get_message_id": "message_id", + "get_message_state": "message_state", + "get_reason": "reason", + "get_segments": "segments", + "get_tags": "tags", + "get_to_number": "to_number", + }, + "QueueEvent": { + "get_control_id": "control_id", + "get_position": "position", + "get_queue_id": "queue_id", + "get_queue_name": "queue_name", + "get_size": "size", + "get_status": "status", + }, + "RelayEvent": { + "get_call_id": "call_id", + "get_event_type": "event_type", + "get_params": "params", + "get_timestamp": "timestamp", + }, # AI-Chat response @dataclass DTOs (java source class names == reference names). "ChatLog": {"get_call_timeline": "call_timeline", "get_messages": "messages"}, - "ChatResponse": {"get_conversation_id": "conversation_id", "get_text": "text", "get_user_event": "user_event"}, - "ConversationInfo": {"get_id": "id", "get_initial_message": "initial_message", "get_status": "status"}, + "ChatResponse": { + "get_conversation_id": "conversation_id", + "get_text": "text", + "get_user_event": "user_event", + }, + "ConversationInfo": { + "get_id": "id", + "get_initial_message": "initial_message", + "get_status": "status", + }, # AI-Chat class-B2 attributes: the oracle records ``AIChatError.code``/``.message`` # and ``AIChatClient.url`` as members (public __init__ attributes that are also # ctor params). Java's read side is getCode()/getServerMessage()/getUrl() — fold @@ -627,10 +792,8 @@ def _generated_extends(raw_src: str) -> str | None: # leaf verbatim, but these packages differ from the natural fallback). "com.signalwire.sdk.swaig.SWAIGFunction": "signalwire.core.swaig_function", "com.signalwire.sdk.agents.BedrockAgent": "signalwire.agents.bedrock", - "com.signalwire.sdk.core.agent.prompt.PromptManager": - "signalwire.core.agent.prompt.manager", - "com.signalwire.sdk.core.agent.tools.ToolRegistry": - "signalwire.core.agent.tools.registry", + "com.signalwire.sdk.core.agent.prompt.PromptManager": "signalwire.core.agent.prompt.manager", + "com.signalwire.sdk.core.agent.tools.ToolRegistry": "signalwire.core.agent.tools.registry", "com.signalwire.sdk.swml.SWMLBuilder": "signalwire.core.swml_builder", "com.signalwire.sdk.swml.SwmlRenderer": "signalwire.core.swml_renderer", "com.signalwire.sdk.swml.SWMLVerbHandler": "signalwire.core.swml_handler", @@ -663,15 +826,26 @@ def _generated_extends(raw_src: str) -> str | None: ("Signalwire", "listSkillsWithParams"): ("signalwire", "list_skills_with_params"), ("Signalwire", "listSkills"): ("signalwire", "list_skills"), # ExecutionMode helpers - ("ExecutionMode", "getExecutionMode"): ("signalwire.core.logging_config", "get_execution_mode"), + ("ExecutionMode", "getExecutionMode"): ( + "signalwire.core.logging_config", + "get_execution_mode", + ), # logging_config module-level free functions — Java groups them on the # Logger static-helper class; project back to the reference free-function # names (mirrors enumerate_signatures.py's FREE_FUNCTION_PROJECTIONS). ("Logger", "getLogger"): ("signalwire.core.logging_config", "get_logger"), - ("Logger", "configureLogging"): ("signalwire.core.logging_config", "configure_logging"), - ("Logger", "resetLoggingConfiguration"): - ("signalwire.core.logging_config", "reset_logging_configuration"), - ("Logger", "stripControlChars"): ("signalwire.core.logging_config", "strip_control_chars"), + ("Logger", "configureLogging"): ( + "signalwire.core.logging_config", + "configure_logging", + ), + ("Logger", "resetLoggingConfiguration"): ( + "signalwire.core.logging_config", + "reset_logging_configuration", + ), + ("Logger", "stripControlChars"): ( + "signalwire.core.logging_config", + "strip_control_chars", + ), ("ExecutionMode", "isServerlessMode"): ("signalwire.utils", "is_serverless_mode"), # UrlValidator ("UrlValidator", "validateUrl"): ("signalwire.utils.url_validator", "validate_url"), @@ -681,41 +855,61 @@ def _generated_extends(raw_src: str) -> str | None: # SecurityUtils static helpers → signalwire.core.security.security_utils # free functions (the Python reference exports them as bare module # functions; Java groups them on a static-only utility class). - ("SecurityUtils", "filterSensitiveHeaders"): - ("signalwire.core.security.security_utils", "filter_sensitive_headers"), - ("SecurityUtils", "redactUrl"): - ("signalwire.core.security.security_utils", "redact_url"), - ("SecurityUtils", "isValidHostname"): - ("signalwire.core.security.security_utils", "is_valid_hostname"), + ("SecurityUtils", "filterSensitiveHeaders"): ( + "signalwire.core.security.security_utils", + "filter_sensitive_headers", + ), + ("SecurityUtils", "redactUrl"): ( + "signalwire.core.security.security_utils", + "redact_url", + ), + ("SecurityUtils", "isValidHostname"): ( + "signalwire.core.security.security_utils", + "is_valid_hostname", + ), # WebhookValidator static helpers → signalwire.core.security.webhook_validator # free functions (mirrors FREE_FUNCTION_PROJECTIONS in enumerate_signatures.py). - ("WebhookValidator", "validateWebhookSignature"): - ("signalwire.core.security.webhook_validator", "validate_webhook_signature"), - ("WebhookValidator", "validateRequest"): - ("signalwire.core.security.webhook_validator", "validate_request"), + ("WebhookValidator", "validateWebhookSignature"): ( + "signalwire.core.security.webhook_validator", + "validate_webhook_signature", + ), + ("WebhookValidator", "validateRequest"): ( + "signalwire.core.security.webhook_validator", + "validate_request", + ), # WebhookValidator.validate → the framework-free decomposed webhook-validation # core in signalwire.core.security.webhook_middleware (mirrors the same # projection in enumerate_signatures.py). The WebhookFilter servlet wrapper on # top of it stays a PORT_ADDITION idiom. - ("WebhookValidator", "validate"): - ("signalwire.core.security.webhook_middleware", "validate"), + ("WebhookValidator", "validate"): ( + "signalwire.core.security.webhook_middleware", + "validate", + ), # TypeInference static helpers → signalwire.core.agent.tools.type_inference # free functions (mirrors FREE_FUNCTION_PROJECTIONS in enumerate_signatures.py). # Java has no runtime lambda reflection; the typed params come from the # ParameterSchema builder and inferSchema decomposes that built schema. - ("TypeInference", "inferSchema"): - ("signalwire.core.agent.tools.type_inference", "infer_schema"), - ("TypeInference", "createTypedHandlerWrapper"): - ("signalwire.core.agent.tools.type_inference", "create_typed_handler_wrapper"), + ("TypeInference", "inferSchema"): ( + "signalwire.core.agent.tools.type_inference", + "infer_schema", + ), + ("TypeInference", "createTypedHandlerWrapper"): ( + "signalwire.core.agent.tools.type_inference", + "create_typed_handler_wrapper", + ), # RequestOptionsSupport static helpers → signalwire.rest._request_options free # functions (mirrors FREE_FUNCTION_PROJECTIONS in enumerate_signatures.py). The # reference exports resolve / status_is_retryable as bare module functions; Java # has no module-level free functions, so they live on a static-only facade and # are lifted back to the canonical free-function home. - ("RequestOptionsSupport", "resolve"): - ("signalwire.rest._request_options", "resolve"), - ("RequestOptionsSupport", "statusIsRetryable"): - ("signalwire.rest._request_options", "status_is_retryable"), + ("RequestOptionsSupport", "resolve"): ( + "signalwire.rest._request_options", + "resolve", + ), + ("RequestOptionsSupport", "statusIsRetryable"): ( + "signalwire.rest._request_options", + "status_is_retryable", + ), } @@ -742,36 +936,73 @@ def _generated_extends(raw_src: str) -> str | None: # does not flag a port-side extra. _MIXIN_SURFACE_PROJECTIONS: dict[tuple[str, str], list[str]] = { ("signalwire.core.mixins.ai_config_mixin", "AIConfigMixin"): [ - "add_function_include", "add_hint", "add_hints", "add_internal_filler", - "add_language", "add_mcp_server", "add_pattern_hint", "add_pronunciation", - "enable_debug_events", "enable_mcp_server", "get_language_params", - "set_function_includes", "set_global_data", "set_internal_fillers", - "set_language_params", "set_languages", "set_multilingual", - "set_native_functions", "set_param", "set_params", - "set_post_prompt_llm_params", "set_prompt_llm_params", - "set_pronunciations", "update_global_data", + "add_function_include", + "add_hint", + "add_hints", + "add_internal_filler", + "add_language", + "add_mcp_server", + "add_pattern_hint", + "add_pronunciation", + "enable_debug_events", + "enable_mcp_server", + "get_language_params", + "set_function_includes", + "set_global_data", + "set_internal_fillers", + "set_language_params", + "set_languages", + "set_multilingual", + "set_native_functions", + "set_param", + "set_params", + "set_post_prompt_llm_params", + "set_prompt_llm_params", + "set_pronunciations", + "update_global_data", ], ("signalwire.core.mixins.prompt_mixin", "PromptMixin"): [ - "contexts", "define_contexts", "get_post_prompt", "get_prompt", + "contexts", + "define_contexts", + "get_post_prompt", + "get_prompt", "prompt_add_section", - "prompt_add_subsection", "prompt_add_to_section", - "prompt_has_section", "reset_contexts", "set_post_prompt", - "set_prompt_pom", "set_prompt_text", + "prompt_add_subsection", + "prompt_add_to_section", + "prompt_has_section", + "reset_contexts", + "set_post_prompt", + "set_prompt_pom", + "set_prompt_text", ], ("signalwire.core.mixins.skill_mixin", "SkillMixin"): [ - "add_skill", "has_skill", "list_skills", "remove_skill", + "add_skill", + "has_skill", + "list_skills", + "remove_skill", ], ("signalwire.core.mixins.tool_mixin", "ToolMixin"): [ - "define_tool", "define_tools", "on_function_call", + "define_tool", + "define_tools", + "on_function_call", "register_swaig_function", ], ("signalwire.core.mixins.auth_mixin", "AuthMixin"): [ - "validate_basic_auth", "get_basic_auth_credentials", + "validate_basic_auth", + "get_basic_auth_credentials", ], ("signalwire.core.mixins.web_mixin", "WebMixin"): [ - "as_router", "enable_debug_routes", "get_app", "manual_set_proxy_url", - "on_request", "on_swml_request", "register_routing_callback", "run", - "serve", "set_dynamic_config_callback", "setup_graceful_shutdown", + "as_router", + "enable_debug_routes", + "get_app", + "manual_set_proxy_url", + "on_request", + "on_swml_request", + "register_routing_callback", + "run", + "serve", + "set_dynamic_config_callback", + "setup_graceful_shutdown", ], ("signalwire.core.mixins.state_mixin", "StateMixin"): [ "validate_tool_token", @@ -899,27 +1130,33 @@ def _generated_extends(raw_src: str) -> str | None: # computed, not hand-maintained: if a later oracle revision starts recording one of # these fields, the strip stops applying to it automatically. _CONSTRUCTION_PARAM_ACCESSORS: dict[tuple[str, str], frozenset[str]] = { - ("signalwire.core.agent_base", "AgentBase"): frozenset({ - "get_agent_id", # agent_id - "get_default_webhook_url", # default_webhook_url - "get_native_functions", # native_functions - "get_token_expiry_secs", # token_expiry_secs - "is_check_for_input_override", # check_for_input_override - "is_enable_post_prompt_override", # enable_post_prompt_override - "is_suppress_logs", # suppress_logs - "is_use_pom", # use_pom - }), - ("signalwire.core.swml_service", "SWMLService"): frozenset({ - "get_config_file", # config_file - "get_schema_path", # schema_path - "is_schema_validation", # schema_validation - }), + ("signalwire.core.agent_base", "AgentBase"): frozenset( + { + "get_agent_id", # agent_id + "get_default_webhook_url", # default_webhook_url + "get_native_functions", # native_functions + "get_token_expiry_secs", # token_expiry_secs + "is_check_for_input_override", # check_for_input_override + "is_enable_post_prompt_override", # enable_post_prompt_override + "is_suppress_logs", # suppress_logs + "is_use_pom", # use_pom + } + ), + ("signalwire.core.swml_service", "SWMLService"): frozenset( + { + "get_config_file", # config_file + "get_schema_path", # schema_path + "is_schema_validation", # schema_validation + } + ), # SchemaUtils.__init__(schema_path, schema_validation) — ``getSchemaPath()`` is # the read side of its own ``schema_path`` construction param (the reference # reads it as ``self.schema_utils.schema_path`` at agent_base.py:210). - ("signalwire.utils.schema_utils", "SchemaUtils"): frozenset({ - "get_schema_path", # schema_path - }), + ("signalwire.utils.schema_utils", "SchemaUtils"): frozenset( + { + "get_schema_path", # schema_path + } + ), # The WRITE side of the same contract. AgentBaseBuilder's setters ARE # AgentBase's construction parameter set — ``_BUILDER_CONSTRUCTS`` in # enumerate_signatures.py binds them to the ``construction`` node for @@ -929,19 +1166,21 @@ def _generated_extends(raw_src: str) -> str | None: # independent surface. (The pre-existing builder setters are still carried in # PORT_ADDITIONS.md as self-declared idiom; that whole block is slated for the # fold-to-zero campaign — this table is where they land when it runs.) - ("signalwire.agent.agent_base_builder", "AgentBaseBuilder"): frozenset({ - "agent_id", - "check_for_input_override", - "config_file", - "default_webhook_url", - "enable_post_prompt_override", - "native_functions", - "schema_path", - "schema_validation", - "suppress_logs", - "token_expiry_secs", - "use_pom", - }), + ("signalwire.agent.agent_base_builder", "AgentBaseBuilder"): frozenset( + { + "agent_id", + "check_for_input_override", + "config_file", + "default_webhook_url", + "enable_post_prompt_override", + "native_functions", + "schema_path", + "schema_validation", + "suppress_logs", + "token_expiry_secs", + "use_pom", + } + ), } @@ -978,7 +1217,8 @@ def strip_construction_param_accessors( continue ref_members = oracle_class_members.get((mod, cls), set()) drop = { - name for name in names + name + for name in names if _construction_accessor_field(name) not in ref_members } entry["classes"][cls] = [m for m in methods if m not in drop] @@ -989,10 +1229,85 @@ def _construction_accessor_field(accessor: str) -> str: builder-setter name (``schema_path``) is already the field name.""" for prefix in ("get_", "is_", "has_"): if accessor.startswith(prefix): - return accessor[len(prefix):] + return accessor[len(prefix) :] return accessor +# The built-in skill classes' reference modules. Keyed on the module PREFIX, not +# a hand list of class names, so a new built-in skill is covered the day it lands +# with no table edit. ``signalwire.skills.registry`` / ``.skill_name`` also live +# under this prefix; they are not SkillBase subclasses and carry none of the base +# hooks, so the strip below is inert on them. +_SKILL_MODULE_PREFIX = "signalwire.skills." +_SKILL_BASE_KEY = ("signalwire.core.skill_base", "SkillBase") + + +def _base_only_skill_hooks( + oracle_class_members: dict[tuple[str, str], set[str]], +) -> set[str]: + """Hooks the reference records on ``SkillBase`` and on ZERO skill subclass. + + That shape is exactly a FINAL template method: the reference exposes the + public member on the base and routes subclass specialization through a + separate, non-recorded hook. ``get_prompt_sections`` became one when the + reference wrapped it around the ``skip_prompt`` guard and delegated to a + PROTECTED ``_get_prompt_sections()`` (signalwire-python + ``core/skill_base.py``), which no oracle records; the same is true of + ``validate_env_vars`` / ``validate_packages`` / ``update_skill_data`` and the + ``agent`` / ``params`` attributes. + + Derived from the oracle at CALL time, never hand-kept: if the reference ever + starts recording one of these on a subclass, it drops out of this set on the + next regen and the port's override is emitted again with no code edit. + """ + base = oracle_class_members.get(_SKILL_BASE_KEY, set()) + if not base: + return set() + on_subclass: set[str] = set() + for (mod, _cls), members in oracle_class_members.items(): + if mod.startswith(_SKILL_MODULE_PREFIX): + on_subclass |= members + return base - on_subclass + + +def strip_base_only_skill_hooks( + modules: dict[str, dict], + oracle_class_members: dict[tuple[str, str], set[str]], +) -> None: + """In-place: drop a base-only ``SkillBase`` hook from a concrete skill class. + + ORACLE-KEYED, never a hand list (see ``_base_only_skill_hooks``). Java's + ``SkillBase`` is an interface whose ``default getPromptSections()`` IS the + override point — it has no protected-hook twin, and the ``skip_prompt`` guard + the reference put in the template method lives in Java's CALLER instead + (``SkillManager.java:116-118``), so the WIRE behaviour matches. But emitting + each subclass override as public surface claims 11 public members the + reference does not expose, which is a phantom ``missing-reference`` addition + on every built-in skill. + + This cannot hide a real member: a hook the reference DOES record on any + subclass (``setup``, ``register_tools``, ``get_hints``, ``get_global_data``, + ``get_parameter_schema``, ``get_instance_key``, ``cleanup``) never enters the + base-only set, and ``SkillBase``'s own copy is out of scope (it lives in + ``signalwire.core.skill_base``, not under the skills prefix). + + Fail-safe: an unresolvable oracle yields an EMPTY hook set and strips + nothing, rather than emptying every skill class — a mass false deletion would + read as a real regression. + """ + hooks = _base_only_skill_hooks(oracle_class_members) + if not hooks: + return + for mod, entry in modules.items(): + if not mod.startswith(_SKILL_MODULE_PREFIX): + continue + for cls, methods in entry.get("classes", {}).items(): + ref_members = oracle_class_members.get((mod, cls), set()) + entry["classes"][cls] = [ + m for m in methods if not (m in hooks and m not in ref_members) + ] + + # Idiom-scaffolding classes to DROP from the compared surface. These are the # Java expression of a Python kwargs bundle / return tuple / value object — a # static-typing NECESSITY, not reference surface: options-builders (the Java @@ -1111,13 +1426,63 @@ def _construction_accessor_field(accessor: str) -> str: # are INJECTED into the surface (see the injection at the override apply site below) — # target ZERO ai_chat omissions, exactly as .NET folds IDisposable/``using`` (its # SURFACE_METHOD_INJECTIONS injects the same names). +# Java RECORDS whose components are reference-recorded surface. A record declares +# its state in the HEADER — `record BasicCredentials(String username, String password)` +# — and javac generates the canonical constructor plus one public accessor per +# component. This enumerator reads the class BODY (empty for these), so it saw nothing +# and the members read as missing-port once porting-sdk 8828dd2 made `__init__` +# mandatory. The reference counterparts are @dataclasses whose `__init__` is likewise +# decorator-generated, so both sides synthesize construction the same way. +# {simple_class_name: [reference member names]} — every non-`__init__` name is checked +# against the PARSED record header before emission, so a stale entry emits nothing +# rather than inventing surface. +_RECORD_SURFACE_MEMBERS: dict[str, list[str]] = { + "BasicCredentials": ["__init__", "username", "password"], + "BearerCredentials": ["__init__", "scheme", "credentials"], +} + +# Java classes whose only constructor is PRIVATE but which are still constructible +# through a public factory — the capability is real, the ctor is simply not the entry +# point. RequestOptions has `private RequestOptions(Builder)` plus a public +# `builder()`; the reference records a plain `__init__`, so emit it. Same doctrine the +# .NET port applies to its private-ctor singletons (SkillRegistry / SchemaUtils). +# Gated on the factory actually being present, so a class that loses its builder stops +# emitting `__init__` instead of silently claiming construction it no longer offers. +_PRIVATE_CTOR_PUBLIC_FACTORY: dict[str, str] = { + "RequestOptions": "builder", +} + +# A named record's parenthesised component list: `record X(A a, B b)`. +_RECORD_HEADER_RE = re.compile( + r"\brecord\s+(?P[A-Za-z_$][\w$]*)\s*\((?P[^)]*)\)" +) +_RECORD_COMPONENT_RE = re.compile(r"[\w.$<>\[\], ]*?\s+(?P[A-Za-z_$][\w$]*)\s*$") + + +def _record_components(source: str, cls: str) -> set[str]: + """Component names of `record (...)`, snake_cased; empty if not a record.""" + for m in _RECORD_HEADER_RE.finditer(source): + if m.group("name") != cls: + continue + out: set[str] = set() + for part in m.group("components").split(","): + part = part.strip() + if not part: + continue + cm = _RECORD_COMPONENT_RE.match(part) + if cm: + out.add(camel_to_snake(cm.group("name"))) + return out + return set() + + _AI_CHAT_MEMBER_OVERRIDES: dict[str, list[str]] = { # Response @dataclasses — the oracle now records their @dataclass FIELDS as members; # Java's getters fold onto those field names via _EVENT_METHOD_RENAMES_BY_CLASS, so # keep exactly the reference field set here. - "ConversationInfo": ["id", "initial_message", "status"], - "ChatResponse": ["conversation_id", "text", "user_event"], - "ChatLog": ["call_timeline", "messages"], + "ConversationInfo": ["__init__", "id", "initial_message", "status"], + "ChatResponse": ["__init__", "conversation_id", "text", "user_event"], + "ChatLog": ["__init__", "call_timeline", "messages"], # Error hierarchy — AIChatError keeps its explicit __init__ (oracle records it) # PLUS the two class-B2 attributes the oracle now records (``code``/``message`` # are public __init__ attributes that are also ctor params). Java's getCode() / @@ -1140,8 +1505,17 @@ def _construction_accessor_field(accessor: str) -> str: # onto it, so the MEMBER name is kept here — dropping it would take the read-back # away from Java callers that the reference gives Python callers. "AIChatClient": [ - "__aenter__", "__aexit__", "__init__", "chat", "close", "create_conversation", - "delete", "end", "log", "summarize", "url", + "__aenter__", + "__aexit__", + "__init__", + "chat", + "close", + "create_conversation", + "delete", + "end", + "log", + "summarize", + "url", ], } @@ -1156,8 +1530,9 @@ def camel_to_snake(name: str) -> str: return s2 -def translate_method_name(java_name: str, class_name: str, - native: bool = False) -> str | list[str] | None: +def translate_method_name( + java_name: str, class_name: str, native: bool = False +) -> str | list[str] | None: """Java method → Python-reference method name, or None if skipped. - Constructors (``ClassName``) map to ``__init__``. @@ -1318,14 +1693,92 @@ def strip_comments_and_strings(src: str) -> str: r"(?P[A-Za-z_$][\w$]*)" ) + +def record_component_accessors(src: str, header_end: int) -> list[str]: + """Return the accessor names a compact ``record`` header declares. + + A Java ``record Foo(int status, Map headers, String body) {}`` + implicitly declares a public accessor per component — ``status()``, + ``headers()``, ``body()`` — which are REAL public API even though no method + body appears in the source. The walker only ever matched explicit method + headers, so these 30 accessors across the SDK's 10 public records were + invisible to the NATIVE surface, and therefore to DOC-AUDIT, which resolves + every identifier a doc snippet writes against that file. + + ``src`` must be the comment/string-stripped source and ``header_end`` the end + of the ``_TYPE_HEADER`` match, i.e. just past the record's NAME. Returns [] + for a non-compact header (``record Foo {`` — no parameter list) and for the + empty component list ``record Foo() {}``. + + Generic parameters are depth-tracked, so ``Map headers`` + contributes one accessor (``headers``), not two. + """ + j = header_end + while j < len(src) and src[j].isspace(): + j += 1 + # A generic record header (``record Box(T value)``) puts the type + # parameters before the component list; step over them. + if j < len(src) and src[j] == "<": + depth = 0 + while j < len(src): + if src[j] == "<": + depth += 1 + elif src[j] == ">": + depth -= 1 + if depth == 0: + j += 1 + break + j += 1 + while j < len(src) and src[j].isspace(): + j += 1 + if j >= len(src) or src[j] != "(": + return [] + depth = 0 + close = -1 + for k in range(j, len(src)): + if src[k] == "(": + depth += 1 + elif src[k] == ")": + depth -= 1 + if depth == 0: + close = k + break + if close < 0: + return [] + params = src[j + 1 : close] + out: list[str] = [] + depth = 0 + current = "" + for ch in params: + if ch in "<([": + depth += 1 + elif ch in ">)]": + depth -= 1 + if ch == "," and depth == 0: + out.append(current) + current = "" + else: + current += ch + if current.strip(): + out.append(current) + names: list[str] = [] + for comp in out: + tokens = comp.replace("\n", " ").split() + # The component NAME is the last token; everything before it is the + # (possibly annotated, possibly generic) type. + if tokens and re.fullmatch(r"[A-Za-z_$][\w$]*", tokens[-1]): + names.append(tokens[-1]) + return names + + # Matches a ``public ... methodName(...)`` or constructor signature. The type # can be arbitrarily complex (generics, arrays, qualified names), so we allow # any run of non-special characters up to the identifier + ``(``. _METHOD_HEADER = re.compile( r"\bpublic\s+" r"(?:static\s+|final\s+|abstract\s+|synchronized\s+|native\s+|default\s+|strictfp\s+)*" - r"(?:<[^>]+>\s+)?" # generic params - r"(?:[\w.$<>,\[\]\s?]+\s+)?" # return type (omitted for ctors) + r"(?:<[^>]+>\s+)?" # generic params + r"(?:[\w.$<>,\[\]\s?]+\s+)?" # return type (omitted for ctors) r"(?P[A-Za-z_$][\w$]*)" r"\s*\(" ) @@ -1341,8 +1794,8 @@ def strip_comments_and_strings(src: str) -> str: _INTERFACE_METHOD_HEADER = re.compile( r"(?:^|[{};])\s*" r"(?P(?:default\s+|static\s+|abstract\s+|strictfp\s+|final\s+)*)" - r"(?:<[^>]+>\s+)?" # generic params - r"(?P[A-Za-z_$][\w.$<>,\[\]?\s]*?\s+)" # return type (required) + r"(?:<[^>]+>\s+)?" # generic params + r"(?P[A-Za-z_$][\w.$<>,\[\]?\s]*?\s+)" # return type (required) r"(?P[A-Za-z_$][\w$]*)" r"\s*\(", re.MULTILINE, @@ -1366,7 +1819,8 @@ def find_matching_brace(src: str, open_idx: int) -> int: def parse_type_body( - src: str, outer_name: str, + src: str, + outer_name: str, known_python_classes: set[str] | None = None, java_outer_name: str | None = None, native: bool = False, @@ -1413,7 +1867,11 @@ def parse_type_body( # A non-public nested type reached before the next public type/method: # skip its ENTIRE body so its members (which may be ``@Override public``, # e.g. a private HttpServer-decorator) don't leak up to this class. - if m_priv is not None and next_priv_pos < next_type_pos and next_priv_pos < next_meth_pos: + if ( + m_priv is not None + and next_priv_pos < next_type_pos + and next_priv_pos < next_meth_pos + ): body_open = src.find("{", m_priv.end()) if body_open < 0: i = m_priv.end() @@ -1431,10 +1889,20 @@ def parse_type_body( # Qualify port-only nested class names with their outer class # to avoid collisions across files (multiple ``Builder``s). effective_name = ( - renamed if renamed in known_python_classes - else outer_name + renamed + renamed if renamed in known_python_classes else outer_name + renamed ) - # Skip compact record headers (record Foo(...) {}) — still treat body. + # A compact record header declares an implicit public accessor per + # component; harvest them BEFORE stepping over the header into the + # body (the body holds only the explicitly-written members). + # NATIVE ONLY: the native surface answers "does this identifier exist + # in the Java API", which DOC-AUDIT resolves doc snippets against, and + # these accessors demonstrably do. The parity surface is oracle-keyed + # and already carries the components the reference records + # (BasicCredentials/BearerCredentials), so adding them there would + # emit members the reference does not expose. + record_members: list[str] = [] + if native and m_type.group("kind") == "record": + record_members = record_component_accessors(src, m_type.end()) body_open = src.find("{", m_type.end()) if body_open < 0: i = m_type.end() @@ -1443,10 +1911,15 @@ def parse_type_body( inner_body = src[body_open + 1 : body_close] inner_is_interface = m_type.group("kind") == "interface" inner_classes = parse_type_body( - inner_body, effective_name, known_python_classes, - java_outer_name=name, native=native, + inner_body, + effective_name, + known_python_classes, + java_outer_name=name, + native=native, is_interface=inner_is_interface, ) + if record_members: + inner_classes.setdefault(effective_name, []).extend(record_members) for cls_name, cls_methods in inner_classes.items(): if cls_name in classes: classes[cls_name].extend(cls_methods) @@ -1461,9 +1934,22 @@ def parse_type_body( if is_interface: rtype = (m_meth.groupdict().get("rtype") or "").strip() first = rtype.split()[0] if rtype.split() else "" - if first in ("private", "protected", "return", "if", "for", - "while", "switch", "catch", "new", "throw", "else", - "do", "synchronized", "assert"): + if first in ( + "private", + "protected", + "return", + "if", + "for", + "while", + "switch", + "catch", + "new", + "throw", + "else", + "do", + "synchronized", + "assert", + ): i = m_meth.end() continue # Skip if this identifier is actually a type header (we saw @@ -1472,7 +1958,6 @@ def parse_type_body( # parens; filter those out by checking the word before ``name``). # Also skip method headers inside the body of a nested type: the # walker above routes to ``parse_type_body`` for those. - head_start = m_meth.start() # Ensure we don't treat "public SomeClass foo" inside a nested # body — but since we only reach here when we didn't see a nested # type header closer, this is safe. @@ -1520,8 +2005,10 @@ def parse_type_body( # Module-path derivation. # --------------------------------------------------------------------------- -def java_to_python_module(java_package: str, class_name: str, - class_to_module: dict[str, str]) -> str: + +def java_to_python_module( + java_package: str, class_name: str, class_to_module: dict[str, str] +) -> str: """Pick the Python module path to emit a class under. Priority: @@ -1547,11 +2034,11 @@ def java_to_python_module(java_package: str, class_name: str, # Strip com.signalwire.sdk. prefix. pkg = java_package if pkg.startswith("com.signalwire.sdk"): - pkg = pkg[len("com.signalwire.sdk"):].lstrip(".") + pkg = pkg[len("com.signalwire.sdk") :].lstrip(".") parts = [p for p in pkg.split(".") if p] # Each package segment is already lowercase by convention; pass through. - segments = ["signalwire"] + parts + segments = ["signalwire", *parts] # Append a snake-cased class-name segment so we get a unique module per # class — mirrors the Python reference style (one .py per class). segments.append(camel_to_snake(class_name)) @@ -1565,11 +2052,12 @@ def java_to_python_module(java_package: str, class_name: str, _PACKAGE_RE = re.compile(r"^\s*package\s+([\w.]+)\s*;", re.MULTILINE) -def enumerate_file(path: Path, class_to_module: dict[str, str], - native: bool = False, - oracle_generated_members: - dict[tuple[str, str], set[str]] | None = None, - ) -> dict[str, dict]: +def enumerate_file( + path: Path, + class_to_module: dict[str, str], + native: bool = False, + oracle_generated_members: dict[tuple[str, str], set[str]] | None = None, +) -> dict[str, dict]: """Return {module: {"classes": {Name: [methods]}, "functions": []}}.""" oracle_generated_members = oracle_generated_members or {} raw = path.read_text(encoding="utf-8", errors="replace") @@ -1586,8 +2074,9 @@ def enumerate_file(path: Path, class_to_module: dict[str, str], outer_name_raw = m_type.group("name") # In native mode we skip the Python-reference class renames — Java docs # reference Java names like CallDialEvent, not DialEvent. - outer_name = (outer_name_raw if native - else _CLASS_RENAMES.get(outer_name_raw, outer_name_raw)) + outer_name = ( + outer_name_raw if native else _CLASS_RENAMES.get(outer_name_raw, outer_name_raw) + ) body_open = stripped.find("{", m_type.end()) if body_open < 0: return {} @@ -1596,10 +2085,18 @@ def enumerate_file(path: Path, class_to_module: dict[str, str], known_python_classes = set(class_to_module.keys()) classes = parse_type_body( - body, outer_name, known_python_classes, - java_outer_name=outer_name_raw, native=native, + body, + outer_name, + known_python_classes, + java_outer_name=outer_name_raw, + native=native, is_interface=(m_type.group("kind") == "interface"), ) + # Top-level compact record (see the nested-type site for the rationale). + if native and m_type.group("kind") == "record": + top_components = record_component_accessors(stripped, m_type.end()) + if top_components: + classes.setdefault(outer_name, []).extend(top_components) # Generated wire-type / read-side-payload files (item A/H + D): a method-less # DTO class (or a public enum) per components/schemas / $defs OBJECT. Route the @@ -1621,7 +2118,10 @@ def enumerate_file(path: Path, class_to_module: dict[str, str], # literals are blanked in ``stripped``, indices are length-preserved. raw_body = raw[body_open + 1 : body_close] members = oracle_gated_field_accessors( - raw_body, gen_type_mod, canonical, oracle_generated_members, + raw_body, + gen_type_mod, + canonical, + oracle_generated_members, ) return {gen_type_mod: {"classes": {canonical: members}, "functions": []}} @@ -1670,11 +2170,13 @@ def enumerate_file(path: Path, class_to_module: dict[str, str], # spellings and any ``__init__``/``generated_http_client`` plumbing # (``generatedHttpClient`` is protected+abstract, not public API). if outer_name == "ResourceTree": - ctor_names = {outer_name, camel_to_snake(outer_name), "__init__", - "generated_http_client"} - accessors = sorted( - {m for m in classes[outer_name] if m not in ctor_names} - ) + ctor_names = { + outer_name, + camel_to_snake(outer_name), + "__init__", + "generated_http_client", + } + accessors = sorted({m for m in classes[outer_name] if m not in ctor_names}) return { "signalwire.rest.client": { "classes": {"RestClient": accessors}, @@ -1691,8 +2193,9 @@ def enumerate_file(path: Path, class_to_module: dict[str, str], # oracle records these containers with only ``__init__``). if outer_name in _GENERATED_CONTAINERS: ctor_names = {outer_name, camel_to_snake(outer_name)} - classes[outer_name] = [m for m in classes[outer_name] - if m not in ctor_names] + classes[outer_name] = [ + m for m in classes[outer_name] if m not in ctor_names + ] else: # 4. Implicit-base projection. SignatureDump/the text parser only see # DECLARED methods, so a generated resource that INHERITS @@ -1718,9 +2221,10 @@ def enumerate_file(path: Path, class_to_module: dict[str, str], # at the source-file level, one Java type per file. projected_free_fns: list[tuple[str, str]] = [] # (target_mod, target_fn) if not native: - for (java_cls, java_method), (target_mod, target_fn) in ( - _FREE_FUNCTION_SURFACE_PROJECTIONS.items() - ): + for (java_cls, java_method), ( + target_mod, + target_fn, + ) in _FREE_FUNCTION_SURFACE_PROJECTIONS.items(): if java_cls != outer_name_raw: continue cls_methods = classes.get(outer_name, []) @@ -1766,6 +2270,29 @@ def enumerate_file(path: Path, class_to_module: dict[str, str], for injected in ("__aenter__", "__aexit__"): if injected in keep and "close" in methods: methods.append(injected) + # RECORD components + canonical ctor. A Java `record X(A a, B b)` declares its + # state in the HEADER and javac generates the canonical constructor plus one + # public accessor per component — none of which this text-based enumerator can + # see, because it reads the class BODY (empty for these records). The reference + # counterparts are Python @dataclasses, so porting-sdk 8828dd2's mandatory + # `__init__` plus the recorded fields both went missing at once. + # + # EMISSION of a real capability, not an omission (RULES.md §2): the components + # ARE public API. Gated on _RECORD_SURFACE_MEMBERS, whose keys are checked + # against the parsed record header below — a class that is not actually a + # record with those components emits nothing, so this cannot invent surface. + if ( + not native + and cls_name in _PRIVATE_CTOR_PUBLIC_FACTORY + and _PRIVATE_CTOR_PUBLIC_FACTORY[cls_name] in methods + ): + methods.append("__init__") + if not native and cls_name in _RECORD_SURFACE_MEMBERS: + components = _record_components(raw, cls_name) + if components: + for member in _RECORD_SURFACE_MEMBERS[cls_name]: + if member == "__init__" or member in components: + methods.append(member) # Deduplicate overloaded methods; stable ordering. unique_sorted = sorted(set(methods)) entry = out.setdefault(mod, {"classes": {}, "functions": []}) @@ -1786,18 +2313,20 @@ def enumerate_file(path: Path, class_to_module: dict[str, str], return out -def enumerate_sdk(java_src_root: Path, class_to_module: dict[str, str], - native: bool = False, - oracle_generated_members: - dict[tuple[str, str], set[str]] | None = None, - oracle_class_members: - dict[tuple[str, str], set[str]] | None = None, - ) -> dict[str, dict]: +def enumerate_sdk( + java_src_root: Path, + class_to_module: dict[str, str], + native: bool = False, + oracle_generated_members: dict[tuple[str, str], set[str]] | None = None, + oracle_class_members: dict[tuple[str, str], set[str]] | None = None, +) -> dict[str, dict]: """Walk ``java_src_root/com/signalwire/sdk`` and collect all classes.""" merged: dict[str, dict] = {} for path in sorted(java_src_root.rglob("*.java")): per_file = enumerate_file( - path, class_to_module, native=native, + path, + class_to_module, + native=native, oracle_generated_members=oracle_generated_members, ) for mod, entry in per_file.items(): @@ -1809,9 +2338,7 @@ def enumerate_sdk(java_src_root: Path, class_to_module: dict[str, str], ) else: dest["classes"][cls_name] = methods - dest["functions"] = sorted( - set(dest["functions"]) | set(entry["functions"]) - ) + dest["functions"] = sorted(set(dest["functions"]) | set(entry["functions"])) # Accessor→member fold (RULES.md §2): collapse each class's getX/setX/isX/ # hasX/withX onto the reference member X it re-expresses. Reference-keyed, so @@ -1820,6 +2347,12 @@ def enumerate_sdk(java_src_root: Path, class_to_module: dict[str, str], if not native and oracle_class_members: fold_accessors_to_members(merged, oracle_class_members) exclude_ctor_dunder(merged, oracle_class_members) + # Base-only SkillBase-hook strip: a hook the reference exposes on + # SkillBase alone (final template method + protected hook) is not + # subclass surface, however each built-in skill overrides Java's + # interface default. Runs AFTER the accessor fold so it sees the + # snake-cased member names the oracle is keyed by. + strip_base_only_skill_hooks(merged, oracle_class_members) # Construction-param accessor strip (RULES.md §2 / ALLOWLIST_DISCIPLINE.md §0): # the read+write accessors for params already compared by the ``construction`` @@ -1845,15 +2378,30 @@ def enumerate_sdk(java_src_root: Path, class_to_module: dict[str, str], # detecting which mixin methods are "present on AgentBase" so the # WebMixin/AuthMixin projections fire for inherited methods too. The # signature enumerator sees these via JAR reflection; this restores - # parity for the source-based surface enumerator. Inherited methods are - # ADDED to the mixin path but NOT removed from SWMLService (they - # legitimately belong to both — the reference records them on both). - svc_methods = ( - merged.get("signalwire.core.swml_service", {}) - .get("classes", {}) - .get("SWMLService", []) + # parity for the source-based surface enumerator. + # + # A projected method is ALSO stripped from SWMLService when the + # reference does not record it there. The previous premise here — + # "inherited methods legitimately belong to both, the reference records + # them on both" — is FALSE and was measured so: of the nine mixin + # methods Java declares on Service (define_tool, define_tools, + # on_function_call, register_swaig_function, has_function, get_function, + # remove_function, validate_basic_auth, on_swml_request), the surface + # oracle records ZERO on SWMLService. Java flattens Python's composed + # mixins/ToolRegistry onto its Service base; the projection is what + # re-files them, so leaving the Service copy behind emits a duplicate + # port-only symbol that then needs a PORT_ADDITIONS excuse. The strip is + # ORACLE-KEYED, never a hardcoded list: a method the reference genuinely + # DOES record on SWMLService (get_basic_auth_credentials, serve, + # on_request …) stays, so this cannot hide a real member. + svc_entry_cls = merged.get("signalwire.core.swml_service", {}).get( + "classes", {} ) + svc_methods = svc_entry_cls.get("SWMLService", []) ab_visible = set(ab_methods) | set(svc_methods) + _ref_svc_members = oracle_class_members.get( + ("signalwire.core.swml_service", "SWMLService"), set() + ) # Composition-delegate strip (§4c.1): drop the flattened pass-through copy # of a helper-object method from AgentBase when the SAME method is already # emitted on its canonical helper class (so the reference's helper filing is @@ -1862,9 +2410,7 @@ def enumerate_sdk(java_src_root: Path, class_to_module: dict[str, str], for _dm, (_hmod, _hcls) in _COMPOSITION_DELEGATE_STRIP.items(): if _dm not in ab_methods: continue - helper_members = ( - merged.get(_hmod, {}).get("classes", {}).get(_hcls, []) - ) + helper_members = merged.get(_hmod, {}).get("classes", {}).get(_hcls, []) if _dm in helper_members: ab_methods = [m for m in ab_methods if m != _dm] for (target_mod, target_cls), expected in _MIXIN_SURFACE_PROJECTIONS.items(): @@ -1874,9 +2420,16 @@ def enumerate_sdk(java_src_root: Path, class_to_module: dict[str, str], target = merged.setdefault(target_mod, {"classes": {}, "functions": []}) existing = target["classes"].get(target_cls, []) target["classes"][target_cls] = sorted(set(existing) | set(present)) - # Only strip the projected methods from AgentBase's OWN declared - # list (never from the inherited SWMLService copy). + # Strip the projected methods from AgentBase's OWN declared list, + # and from the inherited SWMLService copy when the reference does + # not record them on SWMLService (see the premise correction above). ab_methods = [m for m in ab_methods if m not in present] + _strip_svc = [ + m for m in present if m in svc_methods and m not in _ref_svc_members + ] + if _strip_svc: + svc_methods = [m for m in svc_methods if m not in _strip_svc] + svc_entry_cls["SWMLService"] = sorted(set(svc_methods)) if ab_entry: if ab_methods: ab_entry["classes"]["AgentBase"] = sorted(set(ab_methods)) @@ -1900,16 +2453,21 @@ def enumerate_sdk(java_src_root: Path, class_to_module: dict[str, str], def git_sha(repo: Path) -> str: try: - return subprocess.check_output( - ["git", "-C", str(repo), "rev-parse", "HEAD"], - stderr=subprocess.DEVNULL, - ).decode().strip() + return ( + subprocess.check_output( + ["git", "-C", str(repo), "rev-parse", "HEAD"], + stderr=subprocess.DEVNULL, + ) + .decode() + .strip() + ) except Exception: return "N/A" -def _collect_crud_bases(repo_root: Path, - class_to_module: dict[str, str]) -> dict[str, dict]: +def _collect_crud_bases( + repo_root: Path, class_to_module: dict[str, str] +) -> dict[str, dict]: """Emit the top-level ``crud_bases`` map (spec-driven REST parity, class D1). ``scripts/generate_rest.py`` already records each generated REST resource's @@ -1930,8 +2488,17 @@ def _collect_crud_bases(repo_root: Path, resource) is skipped rather than emitted under a degraded path. """ sidecar = ( - repo_root / "src" / "main" / "java" / "com" / "signalwire" / "sdk" - / "rest" / "namespaces" / "generated" / "rest_signatures.json" + repo_root + / "src" + / "main" + / "java" + / "com" + / "signalwire" + / "sdk" + / "rest" + / "namespaces" + / "generated" + / "rest_signatures.json" ) if not sidecar.is_file(): return {} @@ -1949,8 +2516,7 @@ def _collect_crud_bases(repo_root: Path, return out -def build_snapshot(repo_root: Path, reference_json: Path, - native: bool = False) -> dict: +def build_snapshot(repo_root: Path, reference_json: Path, native: bool = False) -> dict: class_to_module = build_class_to_module_map(reference_json) # In native mode the class names stay Java-spelled and don't line up with the # oracle's reference class keys, so the field-accessor emission (which is @@ -1958,14 +2524,14 @@ def build_snapshot(repo_root: Path, reference_json: Path, oracle_generated_members = ( {} if native else load_oracle_generated_members(reference_json) ) - oracle_class_members = ( - {} if native else load_oracle_class_members(reference_json) - ) + oracle_class_members = {} if native else load_oracle_class_members(reference_json) java_src = repo_root / "src" / "main" / "java" if not java_src.is_dir(): raise SystemExit(f"error: java source not found at {java_src}") modules = enumerate_sdk( - java_src, class_to_module, native=native, + java_src, + class_to_module, + native=native, oracle_generated_members=oracle_generated_members, oracle_class_members=oracle_class_members, ) @@ -1997,8 +2563,8 @@ def _default_reference() -> Path: repo_root = Path(__file__).resolve().parent.parent candidates = [ Path(os.environ["PORTING_SDK"]) if os.environ.get("PORTING_SDK") else None, - repo_root.parent / "porting-sdk", # adjacency (CI + local) - Path.home() / "src" / "porting-sdk", # legacy local fallback + repo_root.parent / "porting-sdk", # adjacency (CI + local) + Path.home() / "src" / "porting-sdk", # legacy local fallback ] for base in candidates: if base is not None and (base / "python_surface.json").is_file(): @@ -2010,33 +2576,65 @@ def _default_reference() -> Path: def main(argv: list[str]) -> int: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument( - "--repo", type=Path, default=Path(__file__).resolve().parent.parent, + "--repo", + type=Path, + default=Path(__file__).resolve().parent.parent, help="Path to the signalwire-java repo root (default: script's repo)", ) parser.add_argument( - "--reference", type=Path, + "--reference", + type=Path, default=_default_reference(), help="Path to porting-sdk/python_surface.json for class→module lookup " - "(default: $PORTING_SDK or porting-sdk adjacent to this repo)", + "(default: $PORTING_SDK or porting-sdk adjacent to this repo)", + ) + parser.add_argument( + "--output", + type=Path, + default=None, + help="Write JSON to this path. Required unless --stdout is given.", ) parser.add_argument( - "--output", type=Path, default=None, - help="Write JSON to this path (default: stdout)", + "--stdout", + action="store_true", + help="Print JSON to stdout instead of writing --output. Explicit opt-in: " + "there is no stdout DEFAULT (see the fail-loud check below).", ) parser.add_argument( - "--check", action="store_true", + "--check", + action="store_true", help="Compare against file at --output; exit 1 on drift", ) parser.add_argument( - "--native", action="store_true", + "--native", + action="store_true", help="Emit Java-native method names (camelCase) instead of " - "Python-reference snake_case. Used for Layer C doc↔code " - "alignment auditing via audit_docs.py.", + "Python-reference snake_case. Used for Layer C doc↔code " + "alignment auditing via audit_docs.py.", ) args = parser.parse_args(argv) if args.check and not args.output: parser.error("--check requires --output") + if args.stdout and args.output: + parser.error("--stdout and --output are mutually exclusive") + if args.check and args.stdout: + parser.error( + "--check compares against --output; it cannot be used with --stdout" + ) + # FAIL LOUD on a bare run. This used to default to stdout, which made a bare + # invocation a silent WRONG-GREEN: it printed the snapshot to a stdout the caller + # discarded, wrote NOTHING, and exited 0 — so a clean `git status` afterwards read + # as "no change was needed" when it actually meant "nothing was written". That cost + # a 7-port surface-audit red. Writing the file is now never implicit and neither is + # piping: state one. + if not args.output and not args.stdout: + parser.error( + "no output destination: pass --output PATH to write the surface JSON, or " + "--stdout to pipe it. There is deliberately no default — a bare run used " + "to print to stdout and write nothing while exiting 0, which reads as " + "'no change was needed' when it means 'nothing was written'." + ) if not args.reference.is_file(): print(f"error: reference {args.reference} not found", file=sys.stderr) return 1 @@ -2066,10 +2664,11 @@ def strip_meta(s: str) -> str: return 1 return 0 - if args.output: - args.output.write_text(rendered, encoding="utf-8") - else: + if args.stdout: sys.stdout.write(rendered) + else: + args.output.write_text(rendered, encoding="utf-8") + print(f"wrote {args.output}", file=sys.stderr) return 0 diff --git a/scripts/generate_exemptions.py b/scripts/generate_exemptions.py index f210dcbb..286c3fdd 100755 --- a/scripts/generate_exemptions.py +++ b/scripts/generate_exemptions.py @@ -70,7 +70,6 @@ "handled by phone_numbers.set_* helpers per porting-sdk/" "phone-binding.md", ), - # --- Whole subsystems intentionally not ported --- ( "signalwire.search.", @@ -103,7 +102,6 @@ "POM (Prompt Object Model) is embedded directly in Java's " "AgentBase.setPromptPom / addPomSection helpers; no separate class", ), - # --- CLI & tooling --- ( "signalwire.cli.init_project.", @@ -126,8 +124,7 @@ ), ( "signalwire.cli.output.", - "CLI pretty-print helpers; Java's SwaigTest prints via the standard " - "logger", + "CLI pretty-print helpers; Java's SwaigTest prints via the standard logger", ), ( "signalwire.cli.simulation.", @@ -147,7 +144,6 @@ "signalwire.cli.", "Python-only CLI helper not mirrored in Java's SwaigTest", ), - # --- Core internals / mixins --- ( "signalwire.core.mixins.", @@ -252,7 +248,6 @@ "constructor is package-private in Java — public initialization " "goes through AgentBase.builder() to enforce required fields", ), - # --- REST namespaces: Java merges Python's *Resource/*Namespace pairs --- ( "signalwire.rest._base.", @@ -352,8 +347,7 @@ ), ( "signalwire.rest.namespaces.queues.", - "Java's QueueNamespace exposes the queues API via CrudResource " - "accessors", + "Java's QueueNamespace exposes the queues API via CrudResource accessors", ), ( "signalwire.rest.namespaces.recordings.", @@ -379,7 +373,6 @@ "signalwire.rest.namespaces.", "Python-only REST namespace not yet ported to Java", ), - # --- Skills --- ( "signalwire.skills.web_search.skill_improved.", @@ -428,14 +421,12 @@ "Java ships a leaner skill class with the same public surface; " "helper methods from Python's skill modules are inlined", ), - # --- Prefabs --- ( "signalwire.prefabs.", "Python prefab exposes additional internal helpers not needed in " "Java's equivalent prefab class", ), - # --- Relay internals --- ( "signalwire.relay.call.", @@ -458,14 +449,12 @@ "Python Message exposes additional internal helpers; Java's Message " "sticks to the public send/reply API", ), - # --- Utilities --- ( "signalwire.utils.schema_utils.", "Python's schema utils include load/validate helpers used by the " "SWMLService; Java does schema loading inline in Document/Schema", ), - # --- Top-level re-exports --- ( "signalwire.RestClient", @@ -492,15 +481,13 @@ ), ( "signalwire.run_agent", - "Python top-level helper; Java users call AgentBase.run() on their " - "built agent", + "Python top-level helper; Java users call AgentBase.run() on their built agent", ), ( "signalwire.start_agent", "Python top-level helper; Java users call AgentBase.run() or " "AgentServer.register() + run()", ), - # --- Other specific symbols --- ( "signalwire.core.agent.tools.type_inference.", @@ -556,7 +543,6 @@ "Python URL-validation helper used by SWMLService; Java's " "Document.addExternal / addWebhook validate URLs at call time", ), - # --- AgentServer extras --- ( "signalwire.agent_server.AgentServer.get_agents", @@ -593,8 +579,10 @@ def rationale_for(sym: str) -> str: for prefix, rationale in OMISSION_RATIONALES: if prefix.endswith(".") and sym.startswith(prefix): return rationale - return ("not_yet_implemented: Python surface has no matching Java " - "symbol — a follow-up PR will add equivalent functionality") + return ( + "not_yet_implemented: Python surface has no matching Java " + "symbol — a follow-up PR will add equivalent functionality" + ) # -- Additions rationales -------------------------------------------------- @@ -643,8 +631,7 @@ def rationale_for(sym: str) -> str: ), ( "signalwire.relay.relay_client_builder.", - "Java builder pattern — RelayClient.builder() is the idiomatic " - "constructor", + "Java builder pattern — RelayClient.builder() is the idiomatic constructor", ), ( "signalwire.rest.client.RestClient.Builder", @@ -682,8 +669,7 @@ def rationale_for(sym: str) -> str: ), ( "signalwire.cli.simulation.serverless_simulator_platform.", - "Java enum for ServerlessSimulator.Platform; Python uses string " - "constants", + "Java enum for ServerlessSimulator.Platform; Python uses string constants", ), ( "signalwire.cli.simulation.mock_env.ServerlessSimulator.parse_platform", @@ -818,8 +804,7 @@ def rationale_for(sym: str) -> str: ), ( "signalwire.agent_server.AgentServer.get_routes", - "Java accessor exposing the registered-agent route list for " - "diagnostics", + "Java accessor exposing the registered-agent route list for diagnostics", ), ( "signalwire.agent_server.AgentServer.get_sip_route", @@ -847,12 +832,15 @@ def rationale_for_addition(sym: str) -> str: for prefix, rationale in ADDITIONS_RATIONALES: if prefix.endswith(".") and sym.startswith(prefix): return rationale - return ("idiomatic Java surface extension (builder, getter/setter, " - "or overload) not present in Python") + return ( + "idiomatic Java surface extension (builder, getter/setter, " + "or overload) not present in Python" + ) # -- IO -------------------------------------------------------------------- + def run_diff(diff_script: Path, reference: Path, port_surface: Path) -> dict: """Run the diff in --json mode and return its parsed payload. @@ -861,9 +849,12 @@ def run_diff(diff_script: Path, reference: Path, port_surface: Path) -> dict: """ result = subprocess.run( [ - sys.executable, str(diff_script), - "--reference", str(reference), - "--port-surface", str(port_surface), + sys.executable, + str(diff_script), + "--reference", + str(reference), + "--port-surface", + str(port_surface), "--json", ], capture_output=True, @@ -872,15 +863,17 @@ def run_diff(diff_script: Path, reference: Path, port_surface: Path) -> dict: ) if result.returncode not in (0, 1): raise SystemExit( - f"diff_port_surface.py failed (code {result.returncode}): " - f"{result.stderr}" + f"diff_port_surface.py failed (code {result.returncode}): {result.stderr}" ) return json.loads(result.stdout) def write_exemption_file( - path: Path, title: str, intro: str, - symbols: list[str], rationale: callable, + path: Path, + title: str, + intro: str, + symbols: list[str], + rationale: callable, ) -> None: """Write an ordered markdown file keyed on symbol name.""" lines: list[str] = [] @@ -888,22 +881,23 @@ def write_exemption_file( lines.append(intro.rstrip() + "\n") lines.append("") lines.append("# Format: `: `") - lines.append( - "# Regenerate with `python3 scripts/generate_exemptions.py` after") + lines.append("# Regenerate with `python3 scripts/generate_exemptions.py` after") lines.append("# a surface change.") lines.append("") - for sym in sorted(symbols): - lines.append(f"{sym}: {rationale(sym)}") + lines.extend(f"{sym}: {rationale(sym)}" for sym in sorted(symbols)) path.write_text("\n".join(lines) + "\n", encoding="utf-8") def main(argv: list[str]) -> int: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument( - "--repo", type=Path, default=Path(__file__).resolve().parent.parent, + "--repo", + type=Path, + default=Path(__file__).resolve().parent.parent, ) parser.add_argument( - "--porting-sdk", type=Path, + "--porting-sdk", + type=Path, default=Path.home() / "src" / "porting-sdk", ) args = parser.parse_args(argv) @@ -913,8 +907,10 @@ def main(argv: list[str]) -> int: [ sys.executable, str(args.repo / "scripts" / "enumerate_surface.py"), - "--output", str(args.repo / "port_surface.json"), - "--reference", str(args.porting_sdk / "python_surface.json"), + "--output", + str(args.repo / "port_surface.json"), + "--reference", + str(args.porting_sdk / "python_surface.json"), ] ) @@ -960,10 +956,7 @@ def main(argv: list[str]) -> int: symbols=additions, rationale=rationale_for_addition, ) - print( - f"Wrote {len(omissions)} omission(s) and {len(additions)} " - f"addition(s)." - ) + print(f"Wrote {len(omissions)} omission(s) and {len(additions)} addition(s).") return 0 diff --git a/scripts/generate_relay_protocol.py b/scripts/generate_relay_protocol.py index 87e7138a..be399899 100644 --- a/scripts/generate_relay_protocol.py +++ b/scripts/generate_relay_protocol.py @@ -6,18 +6,27 @@ ``generate_relay_protocol``, php's ``generate_relay_protocol.py``, go's ``pkg/relay/protocol_types_generated.go`` and TS's ``protocol.types.generated.ts``. -Source: the canonical porting-sdk ``relay-protocol/*.json`` — one standalone -JSON-Schema file per RELAY WS method+phase, named -``..(params|result).json`` (draft-2020-12, extracted from the C# -switchblade Params/Result classes). NOT derived from openapi (a separate -generator), which is why it lives in its own script rather than generate_rest.py. - -The class name derives from the schema's ``x-method`` (fallback: the filename -base) with dots/underscores folded and PascalCased, plus the phase suffix: - - calling.ai_hold.params.json (x-method "calling.ai_hold", x-phase "params") - -> class CallingAiHoldParams - signalwire.connect.result.json -> SignalwireConnectResult +Source: the canonical porting-sdk ``combined-specs/relay.yaml``, read through the +shared reader ``porting-sdk/scripts/relay_protocol_shapes.py`` (ledger row R11). +That reader serves ``{method: schema_node}`` per phase, merging the shapes carried +on a registered method (``methods..request.params_dto`` / +``.response.result``) with the six per phase the extractor found for methods the +vendored spec does not register (``_shapes_unattached.methods.``) — +64 methods per phase either way. + +This replaced a directory of standalone per-method JSON-Schema files +(``relay-protocol/..(params|result).json``, draft-2020-12, +extracted from the C# switchblade Params/Result classes). The method name now +comes from the document's own key rather than from an ``x-method`` field with a +filename fallback, and the phase from the block it was carried in rather than from +a filename suffix. NOT derived from openapi (a separate generator), which is why +this lives in its own script rather than generate_rest.py. + +The class name is the PascalCased method identifier — dots and underscores folded +— plus the phase suffix: + + calling.ai_hold (params phase) -> class CallingAiHoldParams + signalwire.connect (result phase) -> class SignalwireConnectResult The emit/drop rule is the SAME as generate_rest.py's / generate_swml_verbs.py's wire-type emitter (the shared ``is_object_schema`` test): an OBJECT schema WITH @@ -25,12 +34,18 @@ properties (or a non-object / scalar / union) is NOT surfaced — the reference records those as a module-level ``TypeAlias = dict[str, Any]`` its enumerator drops. -That drop accounts for the 128 source files -> 123 surfaced classes exactly: - * 2 files are the ``.event.json`` phase (messaging.receive / messaging.state) - — NOT params/result, so not part of this params/result module at all. - * 126 params/result files -> 126 candidate names, of which 3 are empty-object - placeholder schemas with no properties -> aliases, NOT surfaced. - 126 - 3 = 123 == the oracle's 123 method-less classes exactly (0/0). +That drop accounts for 128 candidate shapes -> 123 surfaced classes exactly: + * 64 params shapes, of which 2 are permissive placeholders with no ``properties`` + (calling.call, calling.conference — registered by the server but never given a + switchblade Params class) -> 62 classes. + * 64 result shapes, of which 3 have no ``properties`` (the same two, plus + signalwire.disconnect, whose Result class is genuinely empty) -> 61 classes. + 62 + 61 = 123 == the oracle's 123 method-less classes exactly (0/0). + +(The combined document omits the ``type: object`` the per-file envelope used to +declare; ``is_object_schema``'s ``(type is None and properties)`` branch covers +that, so the emit verdict is unchanged. Pinned by +``porting-sdk/tests/test_relay_protocol_shapes.py``.) Output layout: one class per file under src/main/java/com/signalwire/sdk/relay/generated/.java @@ -44,11 +59,11 @@ python3 scripts/generate_relay_protocol.py --check # GEN-FRESH: fail if stale python3 scripts/generate_relay_protocol.py --out DIR # scratch: emit into DIR """ + from __future__ import annotations import argparse import importlib.util -import json import re import sys from pathlib import Path @@ -56,7 +71,9 @@ def _load_rest_generator(): here = Path(__file__).resolve().parent - spec = importlib.util.spec_from_file_location("generate_rest", here / "generate_rest.py") + spec = importlib.util.spec_from_file_location( + "generate_rest", here / "generate_rest.py" + ) if spec is None or spec.loader is None: # pragma: no cover raise SystemExit("generate_relay_protocol.py: cannot load generate_rest.py") mod = importlib.util.module_from_spec(spec) @@ -78,8 +95,8 @@ def repo_root() -> Path: return Path(__file__).resolve().parents[1] -# (filename phase tail, Java class-name suffix). Only params/result are surfaced; -# the ``.event.json`` files (x-phase "event") are a different phase and excluded. +# (phase, Java class-name suffix). Only params/result are surfaced; the ``event`` +# phase is a different phase and is not served by the shared reader at all. _PHASES = (("params", "Params"), ("result", "Result")) @@ -92,30 +109,35 @@ def _pascal_method(method: str) -> str: return "".join(w[:1].upper() + w[1:] for w in parts) -def build_outputs(psdk: Path) -> dict[str, str]: - relay_dir = psdk / "relay-protocol" - if not relay_dir.is_dir(): +def _load_relay_shapes(psdk: Path): + """The shared porting-sdk reader for ``combined-specs/relay.yaml`` (ledger R11). + + Loaded by FILE PATH — the same way this script already loads generate_rest.py — + because porting-sdk is a sibling checkout, not an installed package. + """ + path = psdk / "scripts" / "relay_protocol_shapes.py" + if not path.is_file(): raise SystemExit( - f"generate_relay_protocol.py: {relay_dir} not found (need porting-sdk adjacency)" + f"generate_relay_protocol.py: {path} not found (need porting-sdk adjacency)" ) + spec = importlib.util.spec_from_file_location("relay_protocol_shapes", path) + if spec is None or spec.loader is None: # pragma: no cover + raise SystemExit(f"generate_relay_protocol.py: cannot load {path}") + mod = importlib.util.module_from_spec(spec) + spec.loader.exec_module(mod) + return mod - by_name: dict[str, Path] = {} - for p in relay_dir.iterdir(): - if p.is_file() and p.suffix == ".json": - by_name[p.name] = p + +def build_outputs(psdk: Path) -> dict[str, str]: + RPS = _load_relay_shapes(psdk) outs: dict[str, str] = {} emitted_names: set[str] = set() - # Iterate params files first, then result files — sorted within each phase — - # to reproduce the reference decl order (Params block, then Result block). + # Params first, then result — each mapping already ordered by method name — to + # reproduce the reference decl order (Params block, then Result block). for phase, suffix in _PHASES: - tail = "." + phase + ".json" - for name in sorted(n for n in by_name if n.endswith(tail)): - node = json.loads(by_name[name].read_text()) - if not isinstance(node, dict): - continue - method = node.get("x-method") or name[: -len(tail)] + for method, node in RPS.shapes(psdk, phase).items(): java_name = GR.type_name(_pascal_method(method) + suffix) # Same object-vs-alias split as the REST / SWML wire-type emitters: an # object WITH properties -> data class; an empty-object / scalar / union @@ -129,17 +151,22 @@ def build_outputs(psdk: Path) -> dict[str, str]: # The relay JSON schemas carry no in-file $ref (every nested object is # inline), so no schemas node is needed (inline objects collapse to Map). outs[f"{java_name}.java"] = GR.emit_type_class( - GEN_PACKAGE, java_name, node, - f"RELAY method {method!r}, {phase} phase", class_name=java_name) - - for fn, formatted in GR.gjf_format_many(outs).items(): - outs[fn] = formatted + GEN_PACKAGE, + java_name, + node, + f"RELAY method {method!r}, {phase} phase", + class_name=java_name, + ) + + outs.update(GR.gjf_format_many(outs)) return outs def main(argv: list[str]) -> int: ap = argparse.ArgumentParser(description=__doc__) - ap.add_argument("--check", action="store_true", help="GEN-FRESH: exit non-zero if stale") + ap.add_argument( + "--check", action="store_true", help="GEN-FRESH: exit non-zero if stale" + ) ap.add_argument("--out", default="", help="scratch: emit into this dir") args = ap.parse_args(argv) @@ -164,11 +191,15 @@ def main(argv: list[str]) -> int: if rel not in expected: stale.append(f"{p} (leftover — not in generator output)") if stale: - sys.stderr.write("GEN-FRESH FAIL: %d generated RELAY-protocol file(s) stale:\n" % len(stale)) + sys.stderr.write( + f"GEN-FRESH FAIL: {len(stale)} generated RELAY-protocol file(s) stale:\n" + ) for s in stale: - sys.stderr.write(" - %s\n" % s) + sys.stderr.write(f" - {s}\n") return 1 - print("GEN-FRESH: generated RELAY-protocol files match porting-sdk/relay-protocol/*.json.") + print( + "GEN-FRESH: generated RELAY-protocol files match porting-sdk/combined-specs/relay.yaml." + ) return 0 out_dir.mkdir(parents=True, exist_ok=True) diff --git a/scripts/generate_rest.py b/scripts/generate_rest.py index 84a64b4f..8f307298 100644 --- a/scripts/generate_rest.py +++ b/scripts/generate_rest.py @@ -37,6 +37,7 @@ python3 scripts/generate_rest.py # write into the repo tree python3 scripts/generate_rest.py --check # GEN-FRESH: fail if stale """ + from __future__ import annotations import argparse @@ -72,13 +73,20 @@ # --add-exports needed on JDK 16+ for gjf to reach jdk.compiler internals # (the same flags spotless passes when it runs gjf out-of-process). _GJF_ADD_EXPORTS = [ - "--add-exports", "jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", - "--add-exports", "jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED", - "--add-exports", "jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED", - "--add-exports", "jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED", - "--add-exports", "jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", ] -_GJF_VERSION = "1.22.0" # must match the spotless googleJavaFormat() version in build.gradle +_GJF_VERSION = ( + "1.22.0" # must match the spotless googleJavaFormat() version in build.gradle +) def _resolve_gjf_classpath() -> str: @@ -90,7 +98,8 @@ def _resolve_gjf_classpath() -> str: f"{cache}; run ./gradlew build once so spotless resolves it into the cache." ) guavas = [ - p for p in cache.rglob("guava-*.jar") + p + for p in cache.rglob("guava-*.jar") if "sources" not in p.name and "android" not in p.name ] if not guavas: @@ -110,9 +119,17 @@ def gjf_format(source: str) -> str: if _GJF_CP is None: _GJF_CP = _resolve_gjf_classpath() proc = subprocess.run( - ["java", *_GJF_ADD_EXPORTS, "-cp", _GJF_CP, - "com.google.googlejavaformat.java.Main", "-"], - input=source, capture_output=True, text=True, + [ + "java", + *_GJF_ADD_EXPORTS, + "-cp", + _GJF_CP, + "com.google.googlejavaformat.java.Main", + "-", + ], + input=source, + capture_output=True, + text=True, ) if proc.returncode != 0: raise SystemExit(f"generate_rest.py: google-java-format failed:\n{proc.stderr}") @@ -144,13 +161,22 @@ def gjf_format_many(sources: dict[str, str]) -> dict[str, str]: # gjf caps its own arg list fine for ~1000 files; if it ever grows past # the OS argv limit, chunk here. Today (~1000) it is well under. proc = subprocess.run( - ["java", *_GJF_ADD_EXPORTS, "-cp", _GJF_CP, - "com.google.googlejavaformat.java.Main", "-i", *paths], - capture_output=True, text=True, + [ + "java", + *_GJF_ADD_EXPORTS, + "-cp", + _GJF_CP, + "com.google.googlejavaformat.java.Main", + "-i", + *paths, + ], + capture_output=True, + text=True, ) if proc.returncode != 0: raise SystemExit( - f"generate_rest.py: batch google-java-format failed:\n{proc.stderr}") + f"generate_rest.py: batch google-java-format failed:\n{proc.stderr}" + ) return {idx_to_key[p]: Path(p).read_text() for p in paths} @@ -200,8 +226,20 @@ def gjf_format_many(sources: dict[str, str]) -> dict[str, str]: # is identical regardless), pinned so the generated tree stays byte-stable; a # newly-discovered spec not listed here is appended in sorted-glob order. _PRESENTATION_ORDER = ( - "relay-rest", "fabric", "calling", "video", "datasphere", - "logs", "message", "messages", "voice", "fax", "project", "projects", "chat", "pubsub", + "relay-rest", + "fabric", + "calling", + "video", + "datasphere", + "logs", + "message", + "messages", + "voice", + "fax", + "project", + "projects", + "chat", + "pubsub", "swml-webhooks", ) @@ -244,10 +282,14 @@ def discover_specs(psdk: Path) -> tuple[list[str], list[tuple[str, str, str]]]: if has_resource or types_only: type_set.append(ns) if not resource_set: - raise SystemExit("discover_specs: no REST resource specs found under rest-apis/") + raise SystemExit( + "discover_specs: no REST resource specs found under rest-apis/" + ) resource_dirs = _in_presentation_order(resource_set) - type_ns = [(ns, ns.replace("-", ""), ns.replace("-", "_")) - for ns in _in_presentation_order(type_set)] + type_ns = [ + (ns, ns.replace("-", ""), ns.replace("-", "_")) + for ns in _in_presentation_order(type_set) + ] return resource_dirs, type_ns @@ -258,14 +300,62 @@ def discover_specs(psdk: Path) -> tuple[list[str], list[tuple[str, str, str]]]: REST_PACKAGE = "com.signalwire.sdk.rest" JAVA_KEYWORDS = { - "abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", - "class", "const", "continue", "default", "do", "double", "else", "enum", - "extends", "final", "finally", "float", "for", "goto", "if", "implements", - "import", "instanceof", "int", "interface", "long", "native", "new", - "package", "private", "protected", "public", "return", "short", "static", - "strictfp", "super", "switch", "synchronized", "this", "throw", "throws", - "transient", "try", "void", "volatile", "while", "true", "false", "null", - "var", "record", "yield", + "abstract", + "assert", + "boolean", + "break", + "byte", + "case", + "catch", + "char", + "class", + "const", + "continue", + "default", + "do", + "double", + "else", + "enum", + "extends", + "final", + "finally", + "float", + "for", + "goto", + "if", + "implements", + "import", + "instanceof", + "int", + "interface", + "long", + "native", + "new", + "package", + "private", + "protected", + "public", + "return", + "short", + "static", + "strictfp", + "super", + "switch", + "synchronized", + "this", + "throw", + "throws", + "transient", + "try", + "void", + "volatile", + "while", + "true", + "false", + "null", + "var", + "record", + "yield", } @@ -273,6 +363,7 @@ def discover_specs(psdk: Path) -> tuple[list[str], list[tuple[str, str, str]]]: # Resolution. # --------------------------------------------------------------------------- + def resolve_porting_sdk() -> Path: env = os.environ.get("PORTING_SDK") if env and (Path(env) / "rest-apis").is_dir(): @@ -282,7 +373,9 @@ def resolve_porting_sdk() -> Path: cand = parent.parent / "porting-sdk" if (cand / "rest-apis").is_dir(): return cand.resolve() - raise SystemExit("generate_rest.py: porting-sdk not found (set $PORTING_SDK or clone adjacent)") + raise SystemExit( + "generate_rest.py: porting-sdk not found (set $PORTING_SDK or clone adjacent)" + ) def repo_root() -> Path: @@ -302,31 +395,38 @@ def repo_root() -> Path: # emit), so the scope value is identical across all ports. # --------------------------------------------------------------------------- -_overlay_cache: "dict[str, set[tuple[str, str | None]]] | None" = None +_overlay_cache: dict[str, set[tuple[str, str | None]]] | None = None def _overlay_path() -> Path: return resolve_porting_sdk() / "rest-apis" / "x-sdk-overlay.yaml" -def _load_overlay() -> "dict[str, set[tuple[str, str | None]]]": +def _load_overlay() -> dict[str, set[tuple[str, str | None]]]: global _overlay_cache if _overlay_cache is None: - def rules(key: str, data: dict) -> "set[tuple[str, str | None]]": + + def rules(key: str, data: dict) -> set[tuple[str, str | None]]: out: set[tuple[str, str | None]] = set() for entry in data.get(key) or []: if isinstance(entry, dict) and entry.get("field"): out.add((entry["field"], entry.get("scope"))) return out + data = {} path = _overlay_path() if path.is_file(): data = yaml.safe_load(path.read_text()) or {} - _overlay_cache = {"hidden": rules("hidden", data), "deprecated": rules("deprecated", data)} + _overlay_cache = { + "hidden": rules("hidden", data), + "deprecated": rules("deprecated", data), + } return _overlay_cache -def _overlay_match(rules: "set[tuple[str, str | None]]", field: str, schema_name: str | None) -> bool: +def _overlay_match( + rules: set[tuple[str, str | None]], field: str, schema_name: str | None +) -> bool: # A rule matches when its field equals `field` AND (it is unscoped OR its scope # equals the containing SPEC schema name). `schema_name` is the schema's name as it # appears in the spec (the $defs / components.schemas key) — NOT the java type name. @@ -348,12 +448,13 @@ def overlay_deprecated(field: str, schema_name: str | None = None) -> bool: # Base loading (x-sdk-bases; §2) — fail-loud on cyclic/undefined extends. # --------------------------------------------------------------------------- + def load_bases(psdk: Path) -> dict[str, list[str]]: raw = yaml.safe_load((psdk / "rest-apis" / "x-sdk-bases.yaml").read_text()) bases = dict(raw.get("x-sdk-bases") or {}) fab = psdk / "rest-apis" / "fabric" / "x-sdk-bases.yaml" if fab.is_file(): - bases.update((yaml.safe_load(fab.read_text()).get("x-sdk-bases") or {})) + bases.update(yaml.safe_load(fab.read_text()).get("x-sdk-bases") or {}) def resolve(name: str, seen: set[str]) -> list[str]: if name in seen: @@ -375,6 +476,7 @@ def resolve(name: str, seen: set[str]) -> list[str]: # Spec model. # --------------------------------------------------------------------------- + class Spec: def __init__(self, name: str, doc: dict): self.name = name @@ -382,7 +484,9 @@ def __init__(self, name: str, doc: dict): self.server_path = _strip_api(_url_path(doc["servers"][0]["url"])) raw_path = _url_path(doc["servers"][0]["url"]) if raw_path != "/" and raw_path.endswith("/"): - raise SystemExit(f"{name}: servers[0].url path {raw_path!r} has a trailing slash") + raise SystemExit( + f"{name}: servers[0].url path {raw_path!r} has a trailing slash" + ) self.namespace_attr = (doc.get("x-sdk-namespace") or {}).get("attr") or "" self.ops: dict[str, tuple[str, str, bool]] = {} self.op_body: dict[str, dict] = {} @@ -392,16 +496,31 @@ def __init__(self, name: str, doc: dict): for verb in ("get", "post", "put", "patch", "delete"): o = item.get(verb) if o and o.get("operationId"): - self.ops[o["operationId"]] = (verb, path, bool(o.get("requestBody"))) + self.ops[o["operationId"]] = ( + verb, + path, + bool(o.get("requestBody")), + ) body = o.get("requestBody") or {} content = body.get("content") or {} - media = content.get("application/json") or (next(iter(content.values())) if content else {}) + media = content.get("application/json") or ( + next(iter(content.values())) if content else {} + ) self.op_body[o["operationId"]] = (media or {}).get("schema") or {} responses = o.get("responses") or {} - ok = responses.get("200") or responses.get("201") or responses.get("2XX") or {} - rc = (ok.get("content") or {}) - rmedia = rc.get("application/json") or (next(iter(rc.values())) if rc else {}) - self.op_response[o["operationId"]] = (rmedia or {}).get("schema") or {} + ok = ( + responses.get("200") + or responses.get("201") + or responses.get("2XX") + or {} + ) + rc = ok.get("content") or {} + rmedia = rc.get("application/json") or ( + next(iter(rc.values())) if rc else {} + ) + self.op_response[o["operationId"]] = (rmedia or {}).get( + "schema" + ) or {} self.schemas = ((doc.get("components") or {}).get("schemas")) or {} def resources(self) -> list[tuple[str, dict]]: @@ -426,18 +545,21 @@ def _strip_api(path: str) -> str: if path == "/api": return "" if path.startswith("/api/"): - return path[len("/api"):] + return path[len("/api") :] return path def load_spec(psdk: Path, ns: str) -> Spec: - return Spec(ns, yaml.safe_load((psdk / "rest-apis" / ns / "openapi.yaml").read_text())) + return Spec( + ns, yaml.safe_load((psdk / "rest-apis" / ns / "openapi.yaml").read_text()) + ) # --------------------------------------------------------------------------- # Path composition (§4). # --------------------------------------------------------------------------- + def join_path(a: str, b: str) -> str: if not b: return a @@ -463,7 +585,7 @@ def relative_tail(spec: Spec, anchor: str, markup: dict, op_path: str): full = join_path(spec.server_path, coll) absp = join_path(spec.server_path, op_path) if coll and absp.startswith(full + "/"): - return ([s for s in absp[len(full) + 1:].split("/") if s], False) + return ([s for s in absp[len(full) + 1 :].split("/") if s], False) if coll and absp == full: return ([], False) return ([s for s in absp.lstrip("/").split("/") if s], True) @@ -473,6 +595,7 @@ def relative_tail(spec: Spec, anchor: str, markup: dict, op_path: str): # Naming. # --------------------------------------------------------------------------- + def snake_to_lower_camel(snake: str) -> str: parts = [p for p in snake.replace("-", "_").replace(".", "_").split("_") if p] if not parts: @@ -491,11 +614,20 @@ def escape_ident(field: str) -> str: PARAM_ARG_NAME = { - "id": "id", "queue_id": "queueId", "NumberGroupId": "groupId", - "documentId": "documentId", "chunkId": "chunkId", "mfa_request_id": "requestId", - "e164_number": "e164", "fabric_subscriber_id": "subscriberId", - "ai_agent_id": "id", "cxml_webhook_id": "id", "swml_webhook_id": "id", - "token_id": "tokenId", "room_id": "roomId", "resource_id": "resourceId", + "id": "id", + "queue_id": "queueId", + "NumberGroupId": "groupId", + "documentId": "documentId", + "chunkId": "chunkId", + "mfa_request_id": "requestId", + "e164_number": "e164", + "fabric_subscriber_id": "subscriberId", + "ai_agent_id": "id", + "cxml_webhook_id": "id", + "swml_webhook_id": "id", + "token_id": "tokenId", + "room_id": "roomId", + "resource_id": "resourceId", "sip_endpoint_id": "sipEndpointId", } @@ -536,6 +668,7 @@ def java_str(s: str) -> str: # Command-dispatch (§6). # --------------------------------------------------------------------------- + def command_method_name(cmd: str) -> str: s = cmd if "." in s: @@ -545,17 +678,21 @@ def command_method_name(cmd: str) -> str: def command_py_name(cmd: str) -> str: - s = cmd[len("calling."):] if cmd.startswith("calling.") else cmd + s = cmd[len("calling.") :] if cmd.startswith("calling.") else cmd return s.replace(".", "_") def discriminator_mapping(spec: Spec, schema_name: str) -> list[str]: sch = spec.schemas.get(schema_name) if sch is None: - raise SystemExit(f"command-dispatch request {schema_name!r} not in components.schemas") + raise SystemExit( + f"command-dispatch request {schema_name!r} not in components.schemas" + ) mapping = (sch.get("discriminator") or {}).get("mapping") if not mapping: - raise SystemExit(f"command-dispatch request {schema_name!r} has no discriminator.mapping") + raise SystemExit( + f"command-dispatch request {schema_name!r} has no discriminator.mapping" + ) return list(mapping.keys()) @@ -563,6 +700,7 @@ def discriminator_mapping(spec: Spec, schema_name: str) -> list[str]: # Typed inputs (§5) — schema → Java native type + canonical audit type. # --------------------------------------------------------------------------- + def resolve_schema(spec: Spec, schema: dict | None, seen=None) -> dict: if not schema: return {} @@ -576,7 +714,12 @@ def resolve_schema(spec: Spec, schema: dict | None, seen=None) -> dict: seen.add(leaf) return resolve_schema(spec, spec.schemas.get(leaf), seen) allof = schema.get("allOf") - if allof and len(allof) == 1 and not schema.get("properties") and not schema.get("type"): + if ( + allof + and len(allof) == 1 + and not schema.get("properties") + and not schema.get("type") + ): return resolve_schema(spec, allof[0], seen) return schema @@ -587,7 +730,12 @@ def _is_named_ref(schema: dict) -> bool: if schema.get("$ref"): return True allof = schema.get("allOf") - if allof and len(allof) == 1 and not schema.get("properties") and not schema.get("type"): + if ( + allof + and len(allof) == 1 + and not schema.get("properties") + and not schema.get("type") + ): return _is_named_ref(allof[0]) return False @@ -601,10 +749,20 @@ def _json_type(schema: dict) -> str | None: # Java native scalar (boxed types — nullability + Map uniformity). -_SCALAR_JAVA = {"string": "String", "integer": "Long", "number": "Double", "boolean": "Boolean"} +_SCALAR_JAVA = { + "string": "String", + "integer": "Long", + "number": "Double", + "boolean": "Boolean", +} # Canonical audit type (the oracle records int/float; java has distinct int/long # /float/double so it is NOT numeric-monotype — integer→int, number→float). -_SCALAR_CANON = {"string": "string", "integer": "int", "number": "float", "boolean": "bool"} +_SCALAR_CANON = { + "string": "string", + "integer": "int", + "number": "float", + "boolean": "bool", +} def java_field_type(spec: Spec, schema: dict) -> str: @@ -648,7 +806,9 @@ def object_body_fields(spec: Spec, body_schema: dict) -> list[tuple[str, dict, b return [(name, psc, name in required) for name, psc in props.items()] -def command_param_fields(spec: Spec, command_schema: dict) -> tuple[list[tuple[str, dict, bool]], bool]: +def command_param_fields( + spec: Spec, command_schema: dict +) -> tuple[list[tuple[str, dict, bool]], bool]: """§6 union-flatten: union of all variants' fields; required iff EVERY variant requires it. has_id = command schema declares an ``id`` property.""" cs = resolve_schema(spec, command_schema) @@ -740,8 +900,10 @@ def _register_sidecar(cls: str, java_method: str, records: list[dict]) -> None: # Builder emission (§5 / L13) — a closed Request builder + extras door. # --------------------------------------------------------------------------- -def emit_request_builder(cls: str, method: str, - fields: list[tuple[str, str, bool, str]]) -> str: + +def emit_request_builder( + cls: str, method: str, fields: list[tuple[str, str, bool, str]] +) -> str: """Emit a nested static Request builder class. fields: list of (wireName, javaFieldType, required, ident). Produces: @@ -752,39 +914,47 @@ def emit_request_builder(cls: str, method: str, """ req_cls = snake_to_pascal(method) + "Request" lines = [] - lines.append(f" /** Closed typed request for {{@link #{snake_to_lower_camel(method)}}} (builder + extras door). */") + lines.append( + f" /** Closed typed request for {{@link #{snake_to_lower_camel(method)}}} (builder + extras door). */" + ) lines.append(f" public static final class {req_cls} {{") - for wire, jtype, required, ident in fields: + for _wire, jtype, _required, ident in fields: lines.append(f" private final {jtype} {ident};") lines.append(" private final java.util.Map extras;") lines.append("") # private ctor from builder ctor_args = ", ".join(f"{jtype} {ident}" for wire, jtype, required, ident in fields) sep = ", " if fields else "" - lines.append(f" private {req_cls}({ctor_args}{sep}java.util.Map extras) {{") - for wire, jtype, required, ident in fields: + lines.append( + f" private {req_cls}({ctor_args}{sep}java.util.Map extras) {{" + ) + for _wire, _jtype, _required, ident in fields: lines.append(f" this.{ident} = {ident};") lines.append(" this.extras = extras;") lines.append(" }") lines.append("") - lines.append(f" public static Builder builder() {{ return new Builder(); }}") + lines.append(" public static Builder builder() { return new Builder(); }") lines.append("") # toBody lines.append(" java.util.Map toBody() {") - lines.append(" java.util.Map body = new java.util.LinkedHashMap<>();") - for wire, jtype, required, ident in fields: - lines.append(f" if (this.{ident} != null) {{ body.put({java_str(wire)}, this.{ident}); }}") + lines.append( + " java.util.Map body = new java.util.LinkedHashMap<>();" + ) + for wire, _jtype, _required, ident in fields: + lines.append( + f" if (this.{ident} != null) {{ body.put({java_str(wire)}, this.{ident}); }}" + ) lines.append(" if (this.extras != null) { body.putAll(this.extras); }") lines.append(" return body;") lines.append(" }") lines.append("") # Builder - lines.append(f" public static final class Builder {{") - for wire, jtype, required, ident in fields: + lines.append(" public static final class Builder {") + for _wire, jtype, _required, ident in fields: lines.append(f" private {jtype} {ident};") lines.append(" private java.util.Map extras;") lines.append("") - for wire, jtype, required, ident in fields: + for _wire, jtype, _required, ident in fields: lines.append(f" public Builder {ident}({jtype} {ident}) {{") lines.append(f" this.{ident} = {ident};") lines.append(" return this;") @@ -796,7 +966,9 @@ def emit_request_builder(cls: str, method: str, lines.append("") call = ", ".join(ident for wire, jtype, required, ident in fields) csep = ", " if fields else "" - lines.append(f" public {req_cls} build() {{ return new {req_cls}({call}{csep}extras); }}") + lines.append( + f" public {req_cls} build() {{ return new {req_cls}({call}{csep}extras); }}" + ) lines.append(" }") lines.append(" }") return "\n".join(lines) @@ -813,11 +985,24 @@ def build_field_tuples(spec, fields): def sidecar_records_for_fields(spec, fields, leading, door_name="extras"): records: list[dict] = list(leading) for wire, schema, required in ordered_fields(fields): - records.append({"name": wire, "kind": "keyword", - "type": canonical_type(spec, schema, required), - "required": required, **({"default": None} if not required else {})}) - records.append({"name": door_name, "kind": "keyword", - "type": "optional>", "required": False, "default": None}) + records.append( + { + "name": wire, + "kind": "keyword", + "type": canonical_type(spec, schema, required), + "required": required, + **({"default": None} if not required else {}), + } + ) + records.append( + { + "name": door_name, + "kind": "keyword", + "type": "optional>", + "required": False, + "default": None, + } + ) return records @@ -825,6 +1010,7 @@ def sidecar_records_for_fields(spec, fields, leading, door_name="extras"): # Method emitters. # --------------------------------------------------------------------------- + def method_call_path(spec: Spec, anchor: str, markup: dict, op_path: str): """Return (id_args, java_path_expr) — a Java string expression for the path.""" segs, sibling = relative_tail(spec, anchor, markup, op_path) @@ -892,6 +1078,7 @@ def abs_java_path(full: str, id_args: list[str]) -> str: # reference's ``dict[str, Any]``. # --------------------------------------------------------------------------- + # The DTO java sub-package for a spec dir (strips '-', matching emit_types' `sub`). def _types_subpackage(spec_name: str) -> str: return spec_name.replace("-", "") @@ -942,7 +1129,11 @@ def item_java_type(spec: Spec, anchor: str, markup: dict) -> str: of create/update and the set_* helpers. Falls back to Map when absent.""" coll = collection_segment(anchor, markup) for path, item in (spec.doc.get("paths") or {}).items(): - if path.startswith(coll + "/{") and path.count("/{") == 1 and path.endswith("}"): + if ( + path.startswith(coll + "/{") + and path.count("/{") == 1 + and path.endswith("}") + ): op = item.get("get") if op and op.get("operationId"): return response_java_type(spec, op["operationId"]) @@ -975,7 +1166,11 @@ def _collection_roles(spec: Spec, anchor: str, markup: dict) -> dict[str, dict]: coll = collection_segment(anchor, markup) roles: dict[str, dict] = {} for path, item in (spec.doc.get("paths") or {}).items(): - is_item = path.startswith(coll + "/{") and path.count("/{") == 1 and path.endswith("}") + is_item = ( + path.startswith(coll + "/{") + and path.count("/{") == 1 + and path.endswith("}") + ) is_coll = path == coll if not (is_item or is_coll): continue @@ -999,14 +1194,22 @@ def _crud_bind(spec: Spec, anchor: str, markup: dict, base: str) -> list[str]: """The crud_base bind token list for a resource — ``class:`` for each bound generated type, in the reference's order. Returns [] when the base takes no bind.""" roles = _collection_roles(spec, anchor, markup) - item_leaf = _response_bind_leaf(spec.op_response.get((roles.get("get") or {}).get("op", ""), {}) or {}) - list_leaf = _response_bind_leaf(spec.op_response.get((roles.get("list") or {}).get("op", ""), {}) or {}) + item_leaf = _response_bind_leaf( + spec.op_response.get((roles.get("get") or {}).get("op", ""), {}) or {} + ) + list_leaf = _response_bind_leaf( + spec.op_response.get((roles.get("list") or {}).get("op", ""), {}) or {} + ) binds: list[str] = [] if base == "ReadResource": binds = [list_leaf or item_leaf, item_leaf] elif base in ("CrudResource", "FabricResource"): - create_leaf = _request_ref_leaf(spec.op_body.get((roles.get("create") or {}).get("op", ""), {}) or {}) - update_leaf = _request_ref_leaf(spec.op_body.get((roles.get("update") or {}).get("op", ""), {}) or {}) + create_leaf = _request_ref_leaf( + spec.op_body.get((roles.get("create") or {}).get("op", ""), {}) or {} + ) + update_leaf = _request_ref_leaf( + spec.op_body.get((roles.get("update") or {}).get("op", ""), {}) or {} + ) binds = [list_leaf or item_leaf, item_leaf, create_leaf, update_leaf] return [f"class:{b}" if b else "any" for b in binds] @@ -1023,8 +1226,15 @@ def _wrap_return(java_type: str, map_expr: str) -> str: return f"asType({map_expr}, {java_type}.class)" -def emit_method(spec: Spec, anchor: str, markup: dict, base: str, - method_snake: str, op_id: str, is_override: bool = False) -> tuple[str, str]: +def emit_method( + spec: Spec, + anchor: str, + markup: dict, + base: str, + method_snake: str, + op_id: str, + is_override: bool = False, +) -> tuple[str, str]: """Return (method_java, builder_java_or_empty).""" if op_id not in spec.ops: raise SystemExit(f"{markup['name']}.{method_snake}: op {op_id!r} not in spec") @@ -1033,8 +1243,10 @@ def emit_method(spec: Spec, anchor: str, markup: dict, base: str, name = snake_to_lower_camel(method_snake) cls = markup["name"] - id_records = [{"name": a, "kind": "positional", "type": "string", "required": True} - for a in id_args] + id_records = [ + {"name": a, "kind": "positional", "type": "string", "required": True} + for a in id_args + ] id_params = ["String " + a for a in id_args] write_verb = verb in ("post", "put", "patch") builder_src = "" @@ -1063,28 +1275,55 @@ def emit_method(spec: Spec, anchor: str, markup: dict, base: str, ftuples = build_field_tuples(spec, fields) req_cls = snake_to_pascal(method_snake) + "Request" builder_src = emit_request_builder(cls, method_snake, ftuples) - _register_sidecar(cls, name, sidecar_records_for_fields(spec, fields, id_records)) - base_params = id_params + [f"{req_cls} request"] - call_args = id_args + ["request"] + _register_sidecar( + cls, name, sidecar_records_for_fields(spec, fields, id_records) + ) + base_params = [*id_params, f"{req_cls} request"] + call_args = [*id_args, "request"] map_expr = f"{verb_fn}({path_expr}, request.toBody(), requestOptions)" else: # §5.2 union body → a single Map body param. - base_params = id_params + ["java.util.Map body"] - call_args = id_args + ["body"] - _register_sidecar(cls, name, id_records + [ - {"name": "body", "kind": "positional", "type": "dict", "required": True}]) + base_params = [*id_params, "java.util.Map body"] + call_args = [*id_args, "body"] + _register_sidecar( + cls, + name, + [ + *id_records, + { + "name": "body", + "kind": "positional", + "type": "dict", + "required": True, + }, + ], + ) map_expr = f"{verb_fn}({path_expr}, body, requestOptions)" elif write_verb: base_params = list(id_params) call_args = list(id_args) _register_sidecar(cls, name, list(id_records)) - map_expr = f"{verb_fn}({path_expr}, new java.util.LinkedHashMap<>(), requestOptions)" + map_expr = ( + f"{verb_fn}({path_expr}, new java.util.LinkedHashMap<>(), requestOptions)" + ) elif verb == "get": # §5.3 GET query door → a trailing query-params map (var_keyword). - base_params = id_params + ["java.util.Map params"] - call_args = id_args + ["params"] - _register_sidecar(cls, name, id_records + [ - {"name": "params", "kind": "var_keyword", "type": "any", "required": False, "default": {}}]) + base_params = [*id_params, "java.util.Map params"] + call_args = [*id_args, "params"] + _register_sidecar( + cls, + name, + [ + *id_records, + { + "name": "params", + "kind": "var_keyword", + "type": "any", + "required": False, + "default": {}, + }, + ], + ) map_expr = f"restGet({path_expr}, params, requestOptions)" else: # delete base_params = list(id_params) @@ -1094,9 +1333,9 @@ def emit_method(spec: Spec, anchor: str, markup: dict, base: str, call = f" return {_wrap_return(ret_type, map_expr)};" override = " @Override\n" if is_override else "" - full_sig = ", ".join(base_params + [ro_param]) + full_sig = ", ".join([*base_params, ro_param]) conv_sig = ", ".join(base_params) - conv_call_args = ", ".join(call_args + ["(RequestOptions) null"]) + conv_call_args = ", ".join([*call_args, "(RequestOptions) null"]) method = ( f" /** {name} (generated from operation {op_id!r}). */\n" f"{override} public {ret_type} {name}({conv_sig}) {{\n" @@ -1108,9 +1347,15 @@ def emit_method(spec: Spec, anchor: str, markup: dict, base: str, return method, builder_src -def emit_set_method(spec: Spec, markup: dict, sm_name: str, sm: dict, - update_schema_fields: set[str], field_schemas: dict[str, dict], - item_type: str = "java.util.Map") -> tuple[str, str]: +def emit_set_method( + spec: Spec, + markup: dict, + sm_name: str, + sm: dict, + update_schema_fields: set[str], + field_schemas: dict[str, dict], + item_type: str = "java.util.Map", +) -> tuple[str, str]: handler = sm.get("handler") if not handler: raise SystemExit(f"{markup['name']}.{sm_name}: set_method missing handler") @@ -1119,50 +1364,76 @@ def emit_set_method(spec: Spec, markup: dict, sm_name: str, sm: dict, args = sm.get("args") or {} params = ["String resourceId"] call_idents = ["resourceId"] - records: list[dict] = [{"name": "resource_id", "kind": "positional", "type": "string", "required": True}] - build = [" java.util.Map body = new java.util.LinkedHashMap<>();", - f" body.put(\"call_handler\", {java_str(handler)});"] + records: list[dict] = [ + { + "name": "resource_id", + "kind": "positional", + "type": "string", + "required": True, + } + ] + build = [ + " java.util.Map body = new java.util.LinkedHashMap<>();", + f' body.put("call_handler", {java_str(handler)});', + ] for arg_name, arg in args.items(): field = arg.get("field") if not field: - raise SystemExit(f"{markup['name']}.{sm_name}: arg {arg_name!r} missing field") + raise SystemExit( + f"{markup['name']}.{sm_name}: arg {arg_name!r} missing field" + ) if field not in update_schema_fields: raise SystemExit( - f"{markup['name']}.{sm_name}: arg field {field!r} not in update request schema") + f"{markup['name']}.{sm_name}: arg field {field!r} not in update request schema" + ) ident = escape_ident(arg_name) required = bool(arg.get("required")) jtype = java_field_type(spec, field_schemas.get(field, {})) params.append(f"{jtype} {ident}") call_idents.append(ident) - rec: dict = {"name": arg_name, "kind": "positional", - "type": canonical_type(spec, field_schemas.get(field, {}), required), - "required": required} + rec: dict = { + "name": arg_name, + "kind": "positional", + "type": canonical_type(spec, field_schemas.get(field, {}), required), + "required": required, + } if not required: rec["default"] = None - build.append(f" if ({ident} != null) {{ body.put({java_str(field)}, {ident}); }}") + build.append( + f" if ({ident} != null) {{ body.put({java_str(field)}, {ident}); }}" + ) else: build.append(f" body.put({java_str(field)}, {ident});") records.append(rec) params.append("java.util.Map extra") call_idents.append("extra") - records.append({"name": "extra", "kind": "var_keyword", "type": "any", "required": False, "default": {}}) + records.append( + { + "name": "extra", + "kind": "var_keyword", + "type": "any", + "required": False, + "default": {}, + } + ) _register_sidecar(cls, name, records) build.append(" if (extra != null) { body.putAll(extra); }") # set_* wraps update() and returns the resource item DTO (JAVA-1), mirroring the # reference whose set_* return the resource item type. build.append( - f" return {_wrap_return(item_type, 'update(resourceId, body, requestOptions)')};") + f" return {_wrap_return(item_type, 'update(resourceId, body, requestOptions)')};" + ) conv_sig = ", ".join(params) - full_sig = ", ".join(params + [_REQUEST_OPTIONS_JAVA_PARAM]) - conv_delegate = ", ".join(call_idents + ["(RequestOptions) null"]) + full_sig = ", ".join([*params, _REQUEST_OPTIONS_JAVA_PARAM]) + conv_delegate = ", ".join([*call_idents, "(RequestOptions) null"]) method = ( f" /** {name} — sets call_handler={handler!r} + bound update fields (§7). */\n" f" public {item_type} {name}({conv_sig}) {{\n" f" return {name}({conv_delegate});\n" f" }}\n" f" /** {name} with a per-request {{@link RequestOptions}} override. */\n" - f" public {item_type} {name}({full_sig}) {{\n" - + "\n".join(build) + "\n }") + f" public {item_type} {name}({full_sig}) {{\n" + "\n".join(build) + "\n }" + ) return method, "" @@ -1220,6 +1491,7 @@ def update_field_schemas(spec: Spec, anchor: str, markup: dict) -> dict[str, dic # File header. # --------------------------------------------------------------------------- + def gen_header(desc: str) -> str: return ( "// Code generated by scripts/generate_rest.py; DO NOT EDIT.\n" @@ -1239,6 +1511,7 @@ def gen_header(desc: str) -> str: # Command-dispatch resource emitter (§6). # --------------------------------------------------------------------------- + def emit_command_dispatch(spec: Spec, anchor: str, markup: dict) -> str: name = markup["name"] request = markup.get("request") @@ -1254,24 +1527,36 @@ def emit_command_dispatch(spec: Spec, anchor: str, markup: dict) -> str: # resolved once from the command op's response — matching the reference (JAVA-1). ret_type = response_java_type(spec, "call-commands") - lines = [gen_header(f"Generated command-dispatch resource for the {spec.name!r} namespace.")] - lines.append(f"/**\n * {name} — command-dispatch resource ({spec.name} spec). Each method POSTs\n" - f" * {{command, params, id?}} to {base}.\n */") + lines = [ + gen_header( + f"Generated command-dispatch resource for the {spec.name!r} namespace." + ) + ] + lines.append( + f"/**\n * {name} — command-dispatch resource ({spec.name} spec). Each method POSTs\n" + f" * {{command, params, id?}} to {base}.\n */" + ) lines.append(f"public final class {name} {{") lines.append(" private final HttpClient httpClient;") lines.append(f" private static final String BASE_PATH = {java_str(base)};") lines.append("") - lines.append(f" public {name}(HttpClient httpClient) {{ this.httpClient = httpClient; }}") + lines.append( + f" public {name}(HttpClient httpClient) {{ this.httpClient = httpClient; }}" + ) lines.append("") lines.append(" public String getBasePath() { return BASE_PATH; }") lines.append("") - lines.append(" private java.util.Map execute(" - "String command, String callId, java.util.Map params, " - "RequestOptions requestOptions) {") - lines.append(" java.util.Map body = new java.util.LinkedHashMap<>();") - lines.append(" body.put(\"command\", command);") - lines.append(" body.put(\"params\", params);") - lines.append(" if (callId != null) { body.put(\"id\", callId); }") + lines.append( + " private java.util.Map execute(" + "String command, String callId, java.util.Map params, " + "RequestOptions requestOptions) {" + ) + lines.append( + " java.util.Map body = new java.util.LinkedHashMap<>();" + ) + lines.append(' body.put("command", command);') + lines.append(' body.put("params", params);') + lines.append(' if (callId != null) { body.put("id", callId); }') lines.append(" return httpClient.post(BASE_PATH, body, requestOptions);") lines.append(" }") if not _is_map_type(ret_type): @@ -1279,18 +1564,26 @@ def emit_command_dispatch(spec: Spec, anchor: str, markup: dict) -> str: # decoded wire Map onto the typed response DTO with a local Gson (same lenient, # non-validating view BaseResource.asType gives the CRUD resources). lines.append("") - lines.append(" private static final com.google.gson.Gson RESPONSE_GSON =" - " new com.google.gson.Gson();") + lines.append( + " private static final com.google.gson.Gson RESPONSE_GSON =" + " new com.google.gson.Gson();" + ) lines.append("") - lines.append(" private static T asType(java.util.Map raw," - " Class type) {") + lines.append( + " private static T asType(java.util.Map raw," + " Class type) {" + ) lines.append(" if (raw == null) {") lines.append(" return null;") lines.append(" }") - lines.append(" return RESPONSE_GSON.fromJson(RESPONSE_GSON.toJsonTree(raw), type);") + lines.append( + " return RESPONSE_GSON.fromJson(RESPONSE_GSON.toJsonTree(raw), type);" + ) lines.append(" }") - mapping = (spec.schemas.get(request).get("discriminator") or {}).get("mapping") or {} + mapping = (spec.schemas.get(request).get("discriminator") or {}).get( + "mapping" + ) or {} builders: list[str] = [] for cmd in commands: mname = command_method_name(cmd) @@ -1303,24 +1596,38 @@ def emit_command_dispatch(spec: Spec, anchor: str, markup: dict) -> str: records: list[dict] = [] if with_id: - records.append({"name": "call_id", "kind": "positional", "type": "string", "required": True}) + records.append( + { + "name": "call_id", + "kind": "positional", + "type": "string", + "required": True, + } + ) records = sidecar_records_for_fields(spec, fields, records) _register_sidecar(name, mname, records) id_param = ["String callId"] if with_id else [] - base_params = id_param + [f"{req_cls} request"] - full_params = base_params + [_REQUEST_OPTIONS_JAVA_PARAM] - conv_delegate = (["callId"] if with_id else []) + ["request", "(RequestOptions) null"] + base_params = [*id_param, f"{req_cls} request"] + full_params = [*base_params, _REQUEST_OPTIONS_JAVA_PARAM] + conv_delegate = (["callId"] if with_id else []) + [ + "request", + "(RequestOptions) null", + ] call_arg = "callId" if with_id else "null" lines.append("") # Convenience overload (no requestOptions) delegating to the full form so existing # callers keep compiling; the full form is the parity surface (request_options). - exec_expr = f"execute({java_str(cmd)}, {call_arg}, request.toBody(), requestOptions)" + exec_expr = ( + f"execute({java_str(cmd)}, {call_arg}, request.toBody(), requestOptions)" + ) lines.append(f" /** {mname} — command {cmd!r}. */") lines.append(f" public {ret_type} {mname}({', '.join(base_params)}) {{") lines.append(f" return {mname}({', '.join(conv_delegate)});") lines.append(" }") - lines.append(f" /** {mname} — command {cmd!r} with a per-request {{@link RequestOptions}} override. */") + lines.append( + f" /** {mname} — command {cmd!r} with a per-request {{@link RequestOptions}} override. */" + ) lines.append(f" public {ret_type} {mname}({', '.join(full_params)}) {{") lines.append(f" return {_wrap_return(ret_type, exec_expr)};") lines.append(" }") @@ -1336,6 +1643,7 @@ def emit_command_dispatch(spec: Spec, anchor: str, markup: dict) -> str: # Standard resource emitter. # --------------------------------------------------------------------------- + def emit_resource(spec: Spec, anchor: str, markup: dict) -> str: name = markup["name"] base = markup["base"] @@ -1357,7 +1665,11 @@ def emit_resource(spec: Spec, anchor: str, markup: dict) -> str: spec_verb = None for path, item in (spec.doc.get("paths") or {}).items(): coll = collection_segment(anchor, markup) - if path.startswith(coll + "/{") and path.count("/{") == 1 and path.endswith("}"): + if ( + path.startswith(coll + "/{") + and path.count("/{") == 1 + and path.endswith("}") + ): if item.get("put"): spec_verb = "PUT" elif item.get("patch"): @@ -1366,13 +1678,21 @@ def emit_resource(spec: Spec, anchor: str, markup: dict) -> str: break if spec_verb is None: item = spec.doc["paths"][anchor] - spec_verb = "PUT" if item.get("put") else ("PATCH" if item.get("patch") else None) + spec_verb = ( + "PUT" if item.get("put") else ("PATCH" if item.get("patch") else None) + ) if spec_verb and upd != spec_verb: - raise SystemExit(f"{name}: update_method {upd} != spec update verb {spec_verb}") + raise SystemExit( + f"{name}: update_method {upd} != spec update verb {spec_verb}" + ) extends = EXTENDS[base] if base == "FabricResource": - extends = "FabricResourcePUT" if markup.get("update_method") == "PUT" else "FabricResource" + extends = ( + "FabricResourcePUT" + if markup.get("update_method") == "PUT" + else "FabricResource" + ) bp = base_path(spec, anchor, markup) # Register the structural CRUD contract (crud_base) for a method-contract base — the @@ -1387,7 +1707,9 @@ def emit_resource(spec: Spec, anchor: str, markup: dict) -> str: lines = [header] lines.append(f"import {REST_PACKAGE}.{extends};") lines.append("") - lines.append(f"/**\n * {name} — REST resource client for the {spec.name!r} API namespace.\n */") + lines.append( + f"/**\n * {name} — REST resource client for the {spec.name!r} API namespace.\n */" + ) lines.append(f"public class {name} extends {extends} {{") # Constructor bakes the base path (§4). @@ -1413,7 +1735,7 @@ def emit_resource(spec: Spec, anchor: str, markup: dict) -> str: is_override = False if method_snake in provided: if method_snake == "list_addresses": - verb, op_path, _ = spec.ops[op_id] + _verb, op_path, _ = spec.ops[op_id] _, sibling = relative_tail(spec, anchor, markup, op_path) if not sibling: continue @@ -1424,8 +1746,9 @@ def emit_resource(spec: Spec, anchor: str, markup: dict) -> str: is_override = True else: continue - method_src, builder_src = emit_method(spec, anchor, markup, base, method_snake, op_id, - is_override=is_override) + method_src, builder_src = emit_method( + spec, anchor, markup, base, method_snake, op_id, is_override=is_override + ) lines.append("") lines.append(method_src) if builder_src: @@ -1440,7 +1763,8 @@ def emit_resource(spec: Spec, anchor: str, markup: dict) -> str: sm_item_type = item_java_type(spec, anchor, markup) for sm_name, sm in set_methods.items(): method_src, _ = emit_set_method( - spec, markup, sm_name, sm, upd_fields, upd_field_schemas, sm_item_type) + spec, markup, sm_name, sm, upd_fields, upd_field_schemas, sm_item_type + ) lines.append("") lines.append(method_src) @@ -1465,10 +1789,15 @@ def emit_resource(spec: Spec, anchor: str, markup: dict) -> str: } ATTR_OVERRIDE = { - "GenericResources": "resources", "FabricAddresses": "addresses", - "FabricTokens": "tokens", "DatasphereDocuments": "documents", - "ProjectTokens": "tokens", "PubSub": "pubsub", - "MessageLogs": "messages", "VoiceLogs": "voice", "FaxLogs": "fax", + "GenericResources": "resources", + "FabricAddresses": "addresses", + "FabricTokens": "tokens", + "DatasphereDocuments": "documents", + "ProjectTokens": "tokens", + "PubSub": "pubsub", + "MessageLogs": "messages", + "VoiceLogs": "voice", + "FaxLogs": "fax", "ConferenceLogs": "conferences", } @@ -1479,7 +1808,7 @@ def container_accessor(markup: dict, name: str, container: str) -> str: if name in ATTR_OVERRIDE: return snake_to_lower_camel(ATTR_OVERRIDE[name]) lead = container[:1].upper() + container[1:] - stem = name[len(lead):] if name.startswith(lead) else name + stem = name[len(lead) :] if name.startswith(lead) else name return stem[:1].lower() + stem[1:] if stem else name[:1].lower() + name[1:] @@ -1500,18 +1829,28 @@ def resolve_placement(specs: list[Spec]): def emit_container(container: str, members: list[tuple[str, str]]) -> str: cls, _ = CONTAINERS[container] - lines = [gen_header(f"Generated REST client container for the {container} namespace (§8).")] - lines.append(f"/**\n * {cls} — generated container grouping the {container} namespace resources (§8).\n */") + lines = [ + gen_header( + f"Generated REST client container for the {container} namespace (§8)." + ) + ] + lines.append( + f"/**\n * {cls} — generated container grouping the {container} namespace resources (§8).\n */" + ) lines.append(f"public final class {cls} {{") lines.append(" private final HttpClient httpClient;") for accessor, class_name in members: lines.append(f" private {class_name} {accessor};") lines.append("") - lines.append(f" public {cls}(HttpClient httpClient) {{ this.httpClient = httpClient; }}") + lines.append( + f" public {cls}(HttpClient httpClient) {{ this.httpClient = httpClient; }}" + ) for accessor, class_name in members: lines.append("") lines.append(f" public {class_name} {accessor}() {{") - lines.append(f" if ({accessor} == null) {{ {accessor} = new {class_name}(httpClient); }}") + lines.append( + f" if ({accessor} == null) {{ {accessor} = new {class_name}(httpClient); }}" + ) lines.append(f" return {accessor};") lines.append(" }") lines.append("}") @@ -1524,7 +1863,7 @@ def emit_resource_tree(placed) -> str: flats = [] containers_seen = [] seen_c = set() - for spec, anchor, markup, container in placed: + for _spec, _anchor, markup, container in placed: name = markup["name"] if not container: flats.append((flat_accessor(name), name)) @@ -1533,10 +1872,14 @@ def emit_resource_tree(placed) -> str: seen_c.add(container) containers_seen.append(container) - lines = [gen_header("Generated REST resource tree the hand RestClient composes (§8).")] - lines.append("/**\n * ResourceTree — generated lazy accessors for every flat REST resource plus\n" - " * the namespace containers (§8). The hand RestClient extends this and supplies\n" - " * the HttpClient via generatedHttpClient().\n */") + lines = [ + gen_header("Generated REST resource tree the hand RestClient composes (§8).") + ] + lines.append( + "/**\n * ResourceTree — generated lazy accessors for every flat REST resource plus\n" + " * the namespace containers (§8). The hand RestClient extends this and supplies\n" + " * the HttpClient via generatedHttpClient().\n */" + ) lines.append("public abstract class ResourceTree {") for accessor, cls in flats: lines.append(f" private {cls} {accessor};") @@ -1548,14 +1891,18 @@ def emit_resource_tree(placed) -> str: for accessor, cls in flats: lines.append("") lines.append(f" public {cls} {accessor}() {{") - lines.append(f" if ({accessor} == null) {{ {accessor} = new {cls}(generatedHttpClient()); }}") + lines.append( + f" if ({accessor} == null) {{ {accessor} = new {cls}(generatedHttpClient()); }}" + ) lines.append(f" return {accessor};") lines.append(" }") for c in containers_seen: clsname, acc = CONTAINERS[c] lines.append("") lines.append(f" public {clsname} {acc}() {{") - lines.append(f" if ({acc} == null) {{ {acc} = new {clsname}(generatedHttpClient()); }}") + lines.append( + f" if ({acc} == null) {{ {acc} = new {clsname}(generatedHttpClient()); }}" + ) lines.append(f" return {acc};") lines.append(" }") lines.append("}") @@ -1599,11 +1946,39 @@ def emit_resource_tree(placed) -> str: # java.lang types (always in scope) need this; java.util (List/Map/Set) is # fully-qualified at every use so those names don't clash. JAVA_BUILTIN_COLLISION = { - "Record", "String", "Integer", "Long", "Double", "Boolean", "Object", "Void", - "Number", "Character", "Byte", "Short", "Float", "System", "Thread", "Runnable", - "Comparable", "Cloneable", "Iterable", "Error", "Exception", "Class", "Enum", - "Math", "Process", "Runtime", "Package", "Module", "Thread", "Override", - "Deprecated", "SuppressWarnings", "FunctionalInterface", "SafeVarargs", + "Record", + "String", + "Integer", + "Long", + "Double", + "Boolean", + "Object", + "Void", + "Number", + "Character", + "Byte", + "Short", + "Float", + "System", + "Thread", + "Runnable", + "Comparable", + "Cloneable", + "Iterable", + "Error", + "Exception", + "Class", + "Enum", + "Math", + "Process", + "Runtime", + "Package", + "Module", + "Override", + "Deprecated", + "SuppressWarnings", + "FunctionalInterface", + "SafeVarargs", } @@ -1642,7 +2017,11 @@ def is_object_schema(node: dict) -> bool: return False props = node.get("properties") t = _schema_type(node) - return (t == "object" or (t is None and props)) and isinstance(props, dict) and len(props) > 0 + return ( + (t == "object" or (t is None and props)) + and isinstance(props, dict) + and len(props) > 0 + ) def _resolve_type_ref(schema: dict, schemas: dict, seen: set | None = None) -> dict: @@ -1664,7 +2043,12 @@ def _resolve_type_ref(schema: dict, schemas: dict, seen: set | None = None) -> d seen.add(leaf) return _resolve_type_ref(schemas.get(leaf) or {}, schemas, seen) allof = schema.get("allOf") - if allof and len(allof) == 1 and not schema.get("properties") and not schema.get("type"): + if ( + allof + and len(allof) == 1 + and not schema.get("properties") + and not schema.get("type") + ): return _resolve_type_ref(allof[0], schemas, seen) return schema @@ -1688,8 +2072,10 @@ def type_field_type(schema: dict, schemas: dict | None = None) -> str: """ schemas = schemas or {} if schema.get("$ref") or ( - schema.get("allOf") and len(schema["allOf"]) == 1 - and not schema.get("properties") and not schema.get("type") + schema.get("allOf") + and len(schema["allOf"]) == 1 + and not schema.get("properties") + and not schema.get("type") ): schema = _resolve_type_ref(schema, schemas) # Nullable-scalar idiom: OpenAPI-3.1 spells ``X | null`` as @@ -1702,11 +2088,20 @@ def type_field_type(schema: dict, schemas: dict | None = None) -> str: for comb in ("anyOf", "oneOf"): variants = schema.get(comb) if variants: - non_null = [v for v in variants if _resolve_type_ref(v, schemas).get("type") != "null" - and v.get("type") != "null"] + non_null = [ + v + for v in variants + if _resolve_type_ref(v, schemas).get("type") != "null" + and v.get("type") != "null" + ] if len(non_null) == 1: return type_field_type(non_null[0], schemas) - if schema.get("allOf") or schema.get("oneOf") or schema.get("anyOf") or schema.get("$ref"): + if ( + schema.get("allOf") + or schema.get("oneOf") + or schema.get("anyOf") + or schema.get("$ref") + ): return "java.util.Map" t = _schema_type(schema) if t is None and "const" in schema: @@ -1795,8 +2190,14 @@ def type_gen_header(package: str, desc: str) -> str: ) -def emit_type_class(package: str, raw_name: str, node: dict, source_desc: str, - schemas: dict | None = None, class_name: str | None = None) -> str: +def emit_type_class( + package: str, + raw_name: str, + node: dict, + source_desc: str, + schemas: dict | None = None, + class_name: str | None = None, +) -> str: """Emit one method-less Java data class for an object schema. Returns RAW java (not gjf-formatted — the caller batch-formats). ``class_name`` overrides the derived name when a generator computes the class name itself (relay-protocol @@ -1806,8 +2207,10 @@ def emit_type_class(package: str, raw_name: str, node: dict, source_desc: str, lines.append("/**") lines.append(f" * {java_name} — generated wire type ({source_desc}).") lines.append(" *") - lines.append(" * Pure data DTO: public fields carrying the snake wire key; no methods (the") - lines.append(" * reference records this as a method-less type definition).") + lines.append( + " * Pure data DTO: public fields carrying the snake wire key, and no methods —" + ) + lines.append(" * read and write the fields directly.") lines.append(" */") lines.append(f"public final class {java_name} {{") props = node.get("properties") or {} @@ -1830,12 +2233,16 @@ def emit_type_class(package: str, raw_name: str, node: dict, source_desc: str, # collision). Gson matches by field name by default, so bind the exact # wire key explicitly — else the typed-return projection would silently # leave this field null. - lines.append(f" @com.google.gson.annotations.SerializedName({java_str(wire_key)})") + lines.append( + f" @com.google.gson.annotations.SerializedName({java_str(wire_key)})" + ) if overlay_deprecated(wire_key, raw_name): # deprecated: still emitted (back-compat), flagged idiomatically so tooling # and IDEs surface it. javadoc @deprecated + the @Deprecated annotation. lines.append(" /**") - lines.append(f" * @deprecated {wire_key} — superseded; retained for back-compat.") + lines.append( + f" * @deprecated {wire_key} — superseded; retained for back-compat." + ) lines.append(" */") lines.append(" @Deprecated") lines.append(f" public {jtype} {field};") @@ -1843,7 +2250,9 @@ def emit_type_class(package: str, raw_name: str, node: dict, source_desc: str, return type_gen_header(package, source_desc) + "\n".join(lines) + "\n" -def emit_type_enum(package: str, enum_name: str, values: list[str], source_desc: str) -> str: +def emit_type_enum( + package: str, enum_name: str, values: list[str], source_desc: str +) -> str: """Emit a Java enum for an x-sdk-enum public enum (only PhoneCallHandler today). Each constant carries its exact wire string. Surfaced as a class by the reference. Returns RAW java (caller batch-formats).""" @@ -1890,7 +2299,9 @@ def _load_types_schemas(psdk: Path, spec_dir: str) -> dict: return ((doc.get("components") or {}).get("schemas")) or {} -def emit_types(psdk: Path, outs: dict[str, str], type_ns: list[tuple[str, str, str]]) -> None: +def emit_types( + psdk: Path, outs: dict[str, str], type_ns: list[tuple[str, str, str]] +) -> None: """Emit every _types_generated Java data class / enum into ``types//.java`` keys of ``outs`` (relative to the generated dir). Values are RAW java (build_outputs batch-formats).""" @@ -1906,21 +2317,29 @@ def emit_types(psdk: Path, outs: dict[str, str], type_ns: list[tuple[str, str, s fn = f"types/{sub}/{enum_name}.java" if fn not in outs: outs[fn] = emit_type_enum( - pkg, enum_name, list(node.get("enum") or []), - f"x-sdk-enum on {ns_key!r} components/schemas {raw_name!r}") + pkg, + enum_name, + list(node.get("enum") or []), + f"x-sdk-enum on {ns_key!r} components/schemas {raw_name!r}", + ) if is_object_schema(node): java_name = type_name(raw_name) fn = f"types/{sub}/{java_name}.java" if fn not in outs: outs[fn] = emit_type_class( - pkg, raw_name, node, - f"{ns_key!r} spec, components/schemas {raw_name!r}", schemas) + pkg, + raw_name, + node, + f"{ns_key!r} spec, components/schemas {raw_name!r}", + schemas, + ) # --------------------------------------------------------------------------- # Driver. # --------------------------------------------------------------------------- + def build_outputs(psdk: Path) -> dict[str, str]: load_bases(psdk) # validate x-sdk-bases (fail loud) _SIDECAR.clear() @@ -1935,7 +2354,7 @@ def build_outputs(psdk: Path) -> dict[str, str]: placed = resolve_placement(specs) by_container: dict[str, list[tuple[str, str]]] = {} order: list[str] = [] - for spec, anchor, markup, container in placed: + for _spec, _anchor, markup, container in placed: if not container: continue if container not in by_container: @@ -1945,7 +2364,9 @@ def build_outputs(psdk: Path) -> dict[str, str]: by_container[container].append((acc, markup["name"])) for container in order: if container not in CONTAINERS: - raise SystemExit(f"container attr {container!r} has no java container class (add to CONTAINERS)") + raise SystemExit( + f"container attr {container!r} has no java container class (add to CONTAINERS)" + ) cls, _ = CONTAINERS[container] outs[cls + ".java"] = emit_container(container, by_container[container]) outs["ResourceTree.java"] = emit_resource_tree(placed) @@ -1956,23 +2377,28 @@ def build_outputs(psdk: Path) -> dict[str, str]: emit_types(psdk, outs, type_ns) import json as _json + sidecar: dict[str, list[dict]] = {} - for (cls, java_method) in sorted(_SIDECAR.keys()): + for cls, java_method in sorted(_SIDECAR.keys()): sidecar[f"{cls}::{java_method}"] = _SIDECAR[(cls, java_method)] crud_bases = {name: _CRUD_BASES[name] for name in sorted(_CRUD_BASES.keys())} - outs["rest_signatures.json"] = _json.dumps( - { - "_comment": "Code generated by scripts/generate_rest.py; DO NOT EDIT. " - "Canonical typed-param records for generated REST operation/" - "command/set methods; consumed by scripts/enumerate_signatures.py " - "to unfold the reflected Java builder params onto the oracle shape. " - "``crud_bases`` publishes each CRUD/Read/Fabric resource's structural " - "typed bind (the enumerator emits it as the class's ``crud_base``).", - "methods": sidecar, - "crud_bases": crud_bases, - }, - indent=2, sort_keys=False, - ) + "\n" + outs["rest_signatures.json"] = ( + _json.dumps( + { + "_comment": "Code generated by scripts/generate_rest.py; DO NOT EDIT. " + "Canonical typed-param records for generated REST operation/" + "command/set methods; consumed by scripts/enumerate_signatures.py " + "to unfold the reflected Java builder params onto the oracle shape. " + "``crud_bases`` publishes each CRUD/Read/Fabric resource's structural " + "typed bind (the enumerator emits it as the class's ``crud_base``).", + "methods": sidecar, + "crud_bases": crud_bases, + }, + indent=2, + sort_keys=False, + ) + + "\n" + ) # Format every emitted .java through google-java-format so the on-disk files # are byte-identical to what the FMT gate (spotless) would produce and clean @@ -1980,14 +2406,15 @@ def build_outputs(psdk: Path) -> dict[str, str]: # gjf invocation (not per-file) — the ~700 generated wire-type files make # per-file JVM spawns prohibitively slow. java_srcs = {fn: outs[fn] for fn in outs if fn.endswith(".java")} - for fn, formatted in gjf_format_many(java_srcs).items(): - outs[fn] = formatted + outs.update(gjf_format_many(java_srcs)) return outs def main(argv: list[str]) -> int: ap = argparse.ArgumentParser(description=__doc__) - ap.add_argument("--check", action="store_true", help="GEN-FRESH: exit non-zero if stale") + ap.add_argument( + "--check", action="store_true", help="GEN-FRESH: exit non-zero if stale" + ) ap.add_argument("--out", default="", help="scratch: emit flat into this dir") args = ap.parse_args(argv) @@ -2011,9 +2438,11 @@ def main(argv: list[str]) -> int: if rel not in expected: stale.append(f"{p} (leftover — not in generator output)") if stale: - sys.stderr.write("GEN-FRESH FAIL: %d generated REST file(s) stale:\n" % len(stale)) + sys.stderr.write( + f"GEN-FRESH FAIL: {len(stale)} generated REST file(s) stale:\n" + ) for s in stale: - sys.stderr.write(" - %s\n" % s) + sys.stderr.write(f" - {s}\n") return 1 print("GEN-FRESH: generated REST files match the canonical specs.") return 0 diff --git a/scripts/generate_rest_tests.py b/scripts/generate_rest_tests.py index 19f6dd85..978f2bbe 100644 --- a/scripts/generate_rest_tests.py +++ b/scripts/generate_rest_tests.py @@ -25,7 +25,7 @@ generator self-snapshot. Inputs joined by (METHOD, normalized-path) (RULES §2): the registry's deduped -routes (path params already {id}) × the spec operationIds (spec path normalized +routes (path params already {id}) CROSS the spec operationIds (spec path normalized the SAME way before the join). Routing collisions are resolved longest-template-wins (RULES §7) so the asserted route is the one the mock ACTUALLY journals (e.g. GET /rooms/{id} vs GET /rooms/{name}). @@ -43,6 +43,7 @@ python3 scripts/generate_rest_tests.py # (re)write the test files python3 scripts/generate_rest_tests.py --check # GEN-FRESH: fail if stale """ + from __future__ import annotations import argparse @@ -65,6 +66,7 @@ # Resolution. # --------------------------------------------------------------------------- + def resolve_porting_sdk() -> Path: env = os.environ.get("PORTING_SDK") if env and (Path(env) / "rest-apis").is_dir(): @@ -99,13 +101,20 @@ def gradlew() -> str: # --------------------------------------------------------------------------- _GJF_ADD_EXPORTS = [ - "--add-exports", "jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", - "--add-exports", "jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED", - "--add-exports", "jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED", - "--add-exports", "jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED", - "--add-exports", "jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED", + "--add-exports", + "jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", ] -_GJF_VERSION = "1.22.0" # must match the spotless googleJavaFormat() version in build.gradle +_GJF_VERSION = ( + "1.22.0" # must match the spotless googleJavaFormat() version in build.gradle +) _GJF_CP: str | None = None @@ -118,11 +127,14 @@ def _resolve_gjf_classpath() -> str: f"{cache}; run ./gradlew build once so spotless resolves it into the cache." ) guavas = [ - p for p in cache.rglob("guava-*.jar") + p + for p in cache.rglob("guava-*.jar") if "sources" not in p.name and "android" not in p.name ] if not guavas: - raise SystemExit("generate_rest_tests.py: guava jar not found in the gradle cache") + raise SystemExit( + "generate_rest_tests.py: guava jar not found in the gradle cache" + ) guava = sorted(guavas, key=lambda p: p.name)[-1] return ":".join([str(gjf[0]), str(guava)]) @@ -145,13 +157,22 @@ def gjf_format_many(sources: dict[str, str]) -> dict[str, str]: idx_to_key[str(p)] = key paths.append(str(p)) proc = subprocess.run( - ["java", *_GJF_ADD_EXPORTS, "-cp", _GJF_CP, - "com.google.googlejavaformat.java.Main", "-i", *paths], - capture_output=True, text=True, + [ + "java", + *_GJF_ADD_EXPORTS, + "-cp", + _GJF_CP, + "com.google.googlejavaformat.java.Main", + "-i", + *paths, + ], + capture_output=True, + text=True, ) if proc.returncode != 0: raise SystemExit( - f"generate_rest_tests.py: batch google-java-format failed:\n{proc.stderr}") + f"generate_rest_tests.py: batch google-java-format failed:\n{proc.stderr}" + ) return {idx_to_key[p]: Path(p).read_text() for p in paths} @@ -161,6 +182,7 @@ def gjf_format_many(sources: dict[str, str]) -> dict[str, str]: # RouteTestPlan: per-via call plan (chain, member, typed literal args). # --------------------------------------------------------------------------- + def _run_gradle_json(task: str) -> dict: proc = subprocess.run( [gradlew(), "--no-daemon", "-q", task], @@ -205,7 +227,7 @@ def load_plan() -> dict[str, list[dict]]: # --------------------------------------------------------------------------- -# 2. The join — registry routes × spec operationIds by (method, normalized-path). +# 2. The join — registry routes CROSS spec operationIds by (method, normalized-path). # --------------------------------------------------------------------------- _BRACE = re.compile(r"\{[^}]+\}") @@ -225,15 +247,13 @@ def wire_key(p: str) -> str: def spec_prefix(doc: dict) -> str: url = ((doc.get("servers") or [{}])[0]).get("url", "") i = url.find("signalwire.com") - return url[i + len("signalwire.com"):] if i >= 0 else "" + return url[i + len("signalwire.com") :] if i >= 0 else "" def spec_dirs_with_openapi(psdk: Path) -> list[str]: root = psdk / "rest-apis" out = [ - d.name - for d in root.iterdir() - if d.is_dir() and (d / "openapi.yaml").is_file() + d.name for d in root.iterdir() if d.is_dir() and (d / "openapi.yaml").is_file() ] return sorted(out) @@ -284,13 +304,15 @@ def build_join(routes: list[dict], psdk: Path, spec_dirs: list[str]) -> list[dic continue op_id = winner[1] spec = op_id[: op_id.index(".")] - rows.append({ - "method": method, - "path": np, - "op_id": op_id, - "via": via_list[0], - "spec": spec, - }) + rows.append( + { + "method": method, + "path": np, + "op_id": op_id, + "via": via_list[0], + "spec": spec, + } + ) return rows @@ -313,9 +335,12 @@ def pick_plan_entry(entries: list[dict], method: str, path: str) -> dict | None: # 3. Emit — one GeneratedTest.java per spec namespace. # --------------------------------------------------------------------------- + def pascal_spec(spec: str) -> str: """spec dir name → PascalCase class-name fragment (relay-rest → RelayRest).""" - return "".join(part[:1].upper() + part[1:] for part in re.split(r"[-_]", spec) if part) + return "".join( + part[:1].upper() + part[1:] for part in re.split(r"[-_]", spec) if part + ) def slug(via: str) -> str: @@ -327,7 +352,7 @@ def method_ident(slug_str: str) -> str: """A Java test-method identifier fragment from a slug (camelCase, stable).""" parts = [p for p in slug_str.split("_") if p] if not parts: - return "route"; + return "route" head, *rest = parts head = head[:1].lower() + head[1:] return head + "".join(p[:1].upper() + p[1:] for p in rest) @@ -441,6 +466,7 @@ def emit_spec_file(spec: str, rows: list[dict]) -> str: # Driver. # --------------------------------------------------------------------------- + def build_outputs(psdk: Path) -> tuple[dict[str, str], list[str], int]: """Return ({filename: source}, uncovered_vias, n_routes_covered).""" routes = load_routes() @@ -495,7 +521,9 @@ def build_outputs(psdk: Path) -> tuple[dict[str, str], list[str], int]: def main(argv: list[str]) -> int: ap = argparse.ArgumentParser(description=__doc__) - ap.add_argument("--check", action="store_true", help="GEN-FRESH: exit non-zero if stale") + ap.add_argument( + "--check", action="store_true", help="GEN-FRESH: exit non-zero if stale" + ) ap.add_argument("--out", default="", help="scratch: emit into this dir") args = ap.parse_args(argv) @@ -530,11 +558,15 @@ def main(argv: list[str]) -> int: stale.append(str(p)) expected = set(outs.keys()) if out_dir.is_dir(): - for p in sorted(out_dir.glob("*.java")): - if p.name not in expected: - stale.append(f"{p} (leftover — not in generator output)") + stale.extend( + f"{p} (leftover — not in generator output)" + for p in sorted(out_dir.glob("*.java")) + if p.name not in expected + ) if stale: - sys.stderr.write("GEN-FRESH FAIL: %d generated REST test file(s) stale:\n" % len(stale)) + sys.stderr.write( + f"GEN-FRESH FAIL: {len(stale)} generated REST test file(s) stale:\n" + ) for s in stale: sys.stderr.write(f" - {s}\n") return 1 diff --git a/scripts/generate_swaig_payloads.py b/scripts/generate_swaig_payloads.py index b4d8200f..3cf1df93 100644 --- a/scripts/generate_swaig_payloads.py +++ b/scripts/generate_swaig_payloads.py @@ -16,13 +16,15 @@ one class per components/schemas OBJECT schema; the ``PostPromptCallLogEntry`` oneOf alias is NOT surfaced (the reference records it as a module-level TypeAlias its enumerator drops), so 15 schemas - 1 alias = 14. - * ``swaig-response.yaml`` -> signalwire.core.swaig_actions_generated (4 classes) + * ``swaig-response.yaml`` -> signalwire.core.swaig_actions_generated (6 classes) one ```` class per action key whose value is an object-with-properties (a bare object OR an object variant of a oneOf): context_switch -> ContextSwitchAction, hold -> HoldAction, playback_bg -> PlaybackBgAction, - transfer -> TransferAction. + transfer -> TransferAction — PLUS the two ENVELOPE schemas the spec declares + in their own right, SwaigAction (the 27-key action object) and SwaigResponse + (the {response, action, post_process} handler-return body). - 2 + 14 + 4 = 20 classes == the surface oracle EXACTLY (0 missing / 0 extra). + 2 + 14 + 6 = 22 classes == the surface oracle EXACTLY (0 missing / 0 extra). Every emitted class is a method-less Java data DTO: public fields carrying the snake wire key, no methods. The emit/drop rule + field rendering reuse the SHARED helpers @@ -44,6 +46,7 @@ python3 scripts/generate_swaig_payloads.py --check # GEN-FRESH: fail if stale python3 scripts/generate_swaig_payloads.py --out DIR # scratch: emit into DIR """ + from __future__ import annotations import argparse @@ -55,7 +58,9 @@ def _load_rest_generator(): here = Path(__file__).resolve().parent - spec = importlib.util.spec_from_file_location("generate_rest", here / "generate_rest.py") + spec = importlib.util.spec_from_file_location( + "generate_rest", here / "generate_rest.py" + ) if spec is None or spec.loader is None: # pragma: no cover raise SystemExit("generate_swaig_payloads.py: cannot load generate_rest.py") mod = importlib.util.module_from_spec(spec) @@ -87,10 +92,14 @@ def _load_yaml(path: Path) -> dict: return yaml.safe_load(path.read_text()) -def _emit(sub: str, class_name: str, properties: dict, schemas: dict, source_desc: str) -> str: +def _emit( + sub: str, class_name: str, properties: dict, schemas: dict, source_desc: str +) -> str: pkg = f"{GEN_PACKAGE}.{sub}" node = {"type": "object", "properties": properties} - return GR.emit_type_class(pkg, class_name, node, source_desc, schemas, class_name=class_name) + return GR.emit_type_class( + pkg, class_name, node, source_desc, schemas, class_name=class_name + ) def _build_swaig_request(psdk: Path) -> dict[str, str]: @@ -104,12 +113,16 @@ def _build_swaig_request(psdk: Path) -> dict[str, str]: arg = props.get("argument") if isinstance(arg, dict) and arg.get("properties"): outs[f"{SUB_REQUEST}/SwaigArgument.java"] = _emit( - SUB_REQUEST, "SwaigArgument", arg["properties"], {}, - "inline swaig-request `argument` object") + SUB_REQUEST, + "SwaigArgument", + arg["properties"], + {}, + "inline swaig-request `argument` object", + ) outs[f"{SUB_REQUEST}/SwaigRequest.java"] = _emit( - SUB_REQUEST, "SwaigRequest", props, {}, - "swaig-request `SwaigRequest` schema") + SUB_REQUEST, "SwaigRequest", props, {}, "swaig-request `SwaigRequest` schema" + ) return outs @@ -131,8 +144,12 @@ def _build_post_prompt(psdk: Path) -> dict[str, str]: continue emitted.add(java_name) outs[f"{SUB_POSTPROMPT}/{java_name}.java"] = _emit( - SUB_POSTPROMPT, java_name, node.get("properties") or {}, schemas, - f"post-prompt components/schemas {raw_name!r}") + SUB_POSTPROMPT, + java_name, + node.get("properties") or {}, + schemas, + f"post-prompt components/schemas {raw_name!r}", + ) return outs @@ -144,13 +161,32 @@ def _pascal_verb(verb: str) -> str: def _build_swaig_actions(psdk: Path) -> dict[str, str]: """swaig-response.yaml -> one ```` class per action key whose value is an object-with-properties (bare object OR the object variant(s) of a oneOf). The - FIRST object variant is ``Action``; a second would be ``Action2``.""" + FIRST object variant is ``Action``; a second would be ``Action2``. + + PLUS the two ENVELOPE types the spec's own ``components/schemas`` declares — + ``SwaigAction`` (the action object: the full 27-key vocabulary, one or more set at + once) and ``SwaigResponse`` (the ``{response, action, post_process}`` body a + handler returns). This generator previously reached THROUGH ``SwaigAction`` into + its ``properties`` to lift the per-verb value objects and never emitted the + envelope itself, so both classes were absent from the port while the reference + declares them (``signalwire/core/swaig_actions_generated.py``: ``class + SwaigAction(TypedDict)`` / ``class SwaigResponse(TypedDict)``). They are also the + cross-file ``$ref`` target post-prompt.yaml names for ``post_response`` / + ``delayed_post_response``, which porting-sdk 4ddda70 taught the reference + generator to resolve. Same defect, same fix as go 41a012c. + """ spec_file = "swaig-response.yaml" spec = _load_yaml(psdk / "swaig-specs" / spec_file) - actions = spec["components"]["schemas"]["SwaigAction"]["properties"] + schemas = spec["components"]["schemas"] + action_envelope = schemas["SwaigAction"] + actions = action_envelope["properties"] def _is_obj(s: object) -> bool: - return isinstance(s, dict) and s.get("type") == "object" and bool(s.get("properties")) + return ( + isinstance(s, dict) + and s.get("type") == "object" + and bool(s.get("properties")) + ) outs: dict[str, str] = {} emitted: set[str] = set() @@ -164,14 +200,41 @@ def _is_obj(s: object) -> bool: if not _is_obj(b): continue obj_i += 1 - action_name = _pascal_verb(verb) + "Action" + ("" if obj_i == 1 else str(obj_i)) + action_name = ( + _pascal_verb(verb) + "Action" + ("" if obj_i == 1 else str(obj_i)) + ) java_name = GR.type_name(action_name) if java_name in emitted: continue emitted.add(java_name) outs[f"{SUB_ACTIONS}/{java_name}.java"] = _emit( - SUB_ACTIONS, java_name, b.get("properties") or {}, {}, - f"swaig-response action {verb!r} value object") + SUB_ACTIONS, + java_name, + b.get("properties") or {}, + {}, + f"swaig-response action {verb!r} value object", + ) + + # The two ENVELOPE types, emitted from the spec's own components/schemas (NOT + # lifted out of a value object). Their fields are the schema's declared keys, so + # SwaigAction carries all 27 action keys and SwaigResponse carries + # {response, action, post_process} — matching the reference TypedDicts key-for-key. + for env_name in ("SwaigAction", "SwaigResponse"): + env = schemas.get(env_name) + if not isinstance(env, dict) or not env.get("properties"): + # Fail loud: a spec revision that drops or renames an envelope must not + # silently shrink the emitted surface back to the pre-fix state. + raise SystemExit( + f"generate_swaig_payloads.py: {spec_file} components/schemas " + f"{env_name!r} missing or has no properties" + ) + outs[f"{SUB_ACTIONS}/{env_name}.java"] = _emit( + SUB_ACTIONS, + env_name, + env["properties"], + schemas, + f"swaig-response {env_name!r} envelope schema", + ) return outs @@ -185,14 +248,15 @@ def build_outputs(psdk: Path) -> dict[str, str]: outs.update(_build_post_prompt(psdk)) outs.update(_build_swaig_request(psdk)) outs.update(_build_swaig_actions(psdk)) - for fn, formatted in GR.gjf_format_many(outs).items(): - outs[fn] = formatted + outs.update(GR.gjf_format_many(outs)) return outs def main(argv: list[str]) -> int: ap = argparse.ArgumentParser(description=__doc__) - ap.add_argument("--check", action="store_true", help="GEN-FRESH: exit non-zero if stale") + ap.add_argument( + "--check", action="store_true", help="GEN-FRESH: exit non-zero if stale" + ) ap.add_argument("--out", default="", help="scratch: emit into this dir") args = ap.parse_args(argv) @@ -217,11 +281,15 @@ def main(argv: list[str]) -> int: if rel not in expected: stale.append(f"{p} (leftover — not in generator output)") if stale: - sys.stderr.write("GEN-FRESH FAIL: %d generated SWAIG-payload file(s) stale:\n" % len(stale)) + sys.stderr.write( + f"GEN-FRESH FAIL: {len(stale)} generated SWAIG-payload file(s) stale:\n" + ) for s in stale: - sys.stderr.write(" - %s\n" % s) + sys.stderr.write(f" - {s}\n") return 1 - print("GEN-FRESH: generated SWAIG-payload files match porting-sdk/swaig-specs/*.yaml.") + print( + "GEN-FRESH: generated SWAIG-payload files match porting-sdk/swaig-specs/*.yaml." + ) return 0 out_dir.mkdir(parents=True, exist_ok=True) diff --git a/scripts/generate_swml_verbs.py b/scripts/generate_swml_verbs.py index 1883763d..5bfa17b5 100644 --- a/scripts/generate_swml_verbs.py +++ b/scripts/generate_swml_verbs.py @@ -46,6 +46,7 @@ python3 scripts/generate_swml_verbs.py --check # GEN-FRESH: fail if stale python3 scripts/generate_swml_verbs.py --out DIR # scratch: emit into DIR """ + from __future__ import annotations import argparse @@ -62,9 +63,12 @@ # path so the two generators never diverge on the emit rule. # --------------------------------------------------------------------------- + def _load_rest_generator(): here = Path(__file__).resolve().parent - spec = importlib.util.spec_from_file_location("generate_rest", here / "generate_rest.py") + spec = importlib.util.spec_from_file_location( + "generate_rest", here / "generate_rest.py" + ) if spec is None or spec.loader is None: # pragma: no cover raise SystemExit("generate_swml_verbs.py: cannot load generate_rest.py") mod = importlib.util.module_from_spec(spec) @@ -159,8 +163,11 @@ def build_outputs(psdk: Path) -> dict[str, str]: continue emitted_names.add(java_name) outs[f"{java_name}.java"] = GR.emit_type_class( - GEN_PACKAGE, raw_name, node, - f"schema.json $defs schema {raw_name!r}", defs, + GEN_PACKAGE, + raw_name, + node, + f"schema.json $defs schema {raw_name!r}", + defs, ) # 2. One Config data class per SWMLMethod.anyOf verb whose inner schema @@ -190,14 +197,16 @@ def build_outputs(psdk: Path) -> dict[str, str]: continue emitted_names.add(java_name) outs[f"{java_name}.java"] = GR.emit_type_class( - GEN_PACKAGE, cfg_name, {"type": "object", "properties": props}, - f"flattened SWMLMethod verb {verb!r} config", defs, + GEN_PACKAGE, + cfg_name, + {"type": "object", "properties": props}, + f"flattened SWMLMethod verb {verb!r} config", + defs, ) # Batch-format through google-java-format (one JVM) so the on-disk files are # byte-identical to spotlessApply / clean under Checkstyle. - for fn, formatted in GR.gjf_format_many(outs).items(): - outs[fn] = formatted + outs.update(GR.gjf_format_many(outs)) return outs @@ -205,9 +214,12 @@ def build_outputs(psdk: Path) -> dict[str, str]: # Driver. # --------------------------------------------------------------------------- + def main(argv: list[str]) -> int: ap = argparse.ArgumentParser(description=__doc__) - ap.add_argument("--check", action="store_true", help="GEN-FRESH: exit non-zero if stale") + ap.add_argument( + "--check", action="store_true", help="GEN-FRESH: exit non-zero if stale" + ) ap.add_argument("--out", default="", help="scratch: emit into this dir") args = ap.parse_args(argv) @@ -232,11 +244,15 @@ def main(argv: list[str]) -> int: if rel not in expected: stale.append(f"{p} (leftover — not in generator output)") if stale: - sys.stderr.write("GEN-FRESH FAIL: %d generated SWML-verb file(s) stale:\n" % len(stale)) + sys.stderr.write( + f"GEN-FRESH FAIL: {len(stale)} generated SWML-verb file(s) stale:\n" + ) for s in stale: - sys.stderr.write(" - %s\n" % s) + sys.stderr.write(f" - {s}\n") return 1 - print("GEN-FRESH: generated SWML-verb files match porting-sdk/schema.json ($defs).") + print( + "GEN-FRESH: generated SWML-verb files match porting-sdk/schema.json ($defs)." + ) return 0 out_dir.mkdir(parents=True, exist_ok=True) diff --git a/scripts/run-ci.sh b/scripts/run-ci.sh index 72d236d3..a2ee1290 100755 --- a/scripts/run-ci.sh +++ b/scripts/run-ci.sh @@ -153,14 +153,54 @@ sched_gate TEST res=gradle defer=1 desc="run-tests.sh (gradle test)" \ sched_gate SURFACE res=gradle desc="surface parity suite (SIGNATURES/DRIFT/SURFACE-FRESH/SURFACE-DIFF/SEMVER-DIFF/GEN-TYPE-DEGENERACY/GEN-IDIOM/ROUTE-COLLISION)" \ -- python3 "$PORTING_SDK_DIR/scripts/suites/surface.py" --port java --repo "$PORT_ROOT" +# SIGNATURES-FRESH: the committed port_signatures.json must match a fresh regen. +# SURFACE-FRESH guards port_surface.json only, so nothing guarded the SIGNATURES +# artifact — and that file is DRIFT's INPUT, so a stale one makes the parity gate +# compare against a fiction and pass. res=gradle: java's enumerator rebuilds the JAR +# and reads it, so this must not overlap the other Gradle-touching gates NOR the +# SURFACE suite's own in-place regen-then-restore of the same artifacts. +sched_gate SIGNATURES-FRESH res=gradle desc="committed port_signatures.json matches a fresh regen" \ + -- python3 "$PORTING_SDK_DIR/scripts/suites/_signatures_fresh.py" \ + --port java --repo "$PORT_ROOT" --porting-sdk "$PORTING_SDK_DIR" + # TYPE-EROSION: a port may not erase a type the reference DECLARES. compare_param treats # `any` on EITHER side as matching anything, so a port emitting `any` silently satisfies # every reference declaration — an unlimited opt-out. ConciergeAgent.hours_of_operation is # declared optional> and go still shipped a bare string, with no gate # red. RATCHET, not a hard gate: dynamic languages cannot always express a type, so this # banks the current count and fails only on REGRESSION. Drive the number DOWN; never up. -sched_gate TYPE-EROSION res=gradle desc="port did not erase a reference-declared param type (ratchet 13)" \ - -- python3 "$PORTING_SDK_DIR/scripts/diff_port_type_erosion.py" --port java --repo "$PORT_ROOT" --max 13 +# The ratchet moved 12 -> 14 when the trailing-delegate overload union landed, and +# the 2 added slots are MEASUREMENT, not erosion. The union stopped collapsing +# overloads to their fewest-param form, so 44 methods whose arity previously +# differed from the reference became measurable (unmeasured 226 -> 182) — and 2 of +# them were already-eroded slots that the short overload had been hiding: +# +# FunctionResult.execute_swml(swml_content) already `any` in the PREVIOUS +# committed artifact; it was skipped only because the port recorded arity 1 +# against the reference's 2. Not a new erosion — a newly VISIBLE one. (The +# reference declares `str | dict[str, Any] | Any`, whose trailing `Any` +# makes it accept anything, so Java's `Object` is the exact equivalent; see +# the itemised checker note below.) +# Context.add_step(functions) the `Object functions` param has been in +# Context.java all along on the 6-arg overload; the 1-arg convenience form +# the collapse used to pick simply did not carry it. It is the SAME accepted +# class as the three `union>` slots already inside the +# ratchet (FunctionResult.remove_metadata / remove_global_data / +# Step.set_functions) — Java has no union type, so the whitelist that is +# "a List or the string "none"" can only be typed `Object`. +# +# Neither is a regression introduced by that commit; both are pre-existing source +# facts the wider measurement exposed. Widening what a gate can SEE must not read +# as the port getting worse. +# +# ITEMISED, not silenced (needs a porting-sdk decision, not a java change): +# diff_port_type_erosion counts a slot eroded when the port says `any` and the +# reference does not, using `_VACUOUS = {"any", "", None}`. A union that CONTAINS +# `any` is equally vacuous — it admits every value — but is not in that set, so +# `union>,any>` counts as a discarded type when the +# port cannot express anything narrower. execute_swml is that case. +sched_gate TYPE-EROSION res=gradle desc="port did not erase a reference-declared param type (ratchet 14)" \ + -- python3 "$PORTING_SDK_DIR/scripts/diff_port_type_erosion.py" --port java --repo "$PORT_ROOT" --max 14 # GEN (regen-from-specs family): the 5 GEN-FRESH rules. Most are pure-python # (--check against the on-disk generated tree), but GEN-FRESH-TESTS's @@ -176,14 +216,29 @@ sched_gate GEN res=gradle defer=1 desc="generated-code freshness suite (GEN-FRES # BEHAVIORAL (one Layer-D pass per rule): the per-PR rules. WAIT-LIVENESS (nightly) # is the separate line below. res=gradle: the *Dump tasks + REST-COVERAGE test run # shell to ./gradlew. NOTE java's hyphen spelling BEHAVIORAL-WIRE-RELAY. -sched_gate BEHAVIORAL res=gradle defer=1 desc="behavioral suite (BEHAVIORAL-*/EMISSION/ERROR-ENVELOPE/PAGINATION-WIRED/PAGINATION-CORPUS/DOC-WIRE/REST-COVERAGE/SPEC-PARITY/SKILL-CONTRACT/SWAIG-COVERAGE/SWAIG-CLI/SECURE-DEFAULT/CA-VAR/SECRET-SCRUB)" \ +sched_gate BEHAVIORAL res=gradle defer=1 desc="behavioral suite (BEHAVIORAL-*/EMISSION/ERROR-ENVELOPE/PAGINATION-WIRED/PAGINATION-CORPUS/DOC-WIRE/REST-COVERAGE/SPEC-PARITY/SKILL-CONTRACT/SWAIG-COVERAGE/SWAIG-CLI/SECURE-DEFAULT/CA-VAR/TLS-VERIFY/SECRET-SCRUB)" \ -- python3 "$PORTING_SDK_DIR/scripts/suites/behavioral.py" --port java --repo "$PORT_ROOT" \ - --rules BEHAVIORAL-WIRE,BEHAVIORAL-SWML,BEHAVIORAL-STRICT-RENDER,BEHAVIORAL-STATE,BEHAVIORAL-HTTP,BEHAVIORAL-WIRE-RELAY,EMISSION,ERROR-ENVELOPE,PAGINATION-WIRED,PAGINATION-CORPUS,DOC-WIRE,REST-COVERAGE,SPEC-PARITY,SKILL-CONTRACT,SWAIG-COVERAGE,SWAIG-CLI,SECURE-DEFAULT,CA-VAR,SECRET-SCRUB + --rules BEHAVIORAL-WIRE,BEHAVIORAL-SWML,BEHAVIORAL-STRICT-RENDER,BEHAVIORAL-STATE,BEHAVIORAL-HTTP,BEHAVIORAL-WIRE-RELAY,EMISSION,ERROR-ENVELOPE,PAGINATION-WIRED,PAGINATION-CORPUS,DOC-WIRE,REST-COVERAGE,SPEC-PARITY,SKILL-CONTRACT,SWAIG-COVERAGE,SWAIG-CLI,SECURE-DEFAULT,CA-VAR,TLS-VERIFY,SECRET-SCRUB sched_gate BEHAVIORAL-NIGHTLY tier=nightly res=gradle defer=1 desc="behavioral suite, nightly rules (WAIT-LIVENESS/RELAY-LIVENESS/SECRET-SCRUB-LIVE)" \ -- python3 "$PORTING_SDK_DIR/scripts/suites/behavioral.py" --port java --repo "$PORT_ROOT" \ --rules WAIT-LIVENESS,RELAY-LIVENESS,SECRET-SCRUB-LIVE +# TOKEN-INTEROP — property 3 of the SWAIG tool-token contract: a token this port MINTS +# must validate under the REFERENCE's own decoder. SECURE-DEFAULT proves a token is +# minted and the fleet keying check proves the HMAC key; NEITHER sees the base64 +# ENVELOPE, so a port can ship correct-key correct-HMAC tokens that no other +# implementation accepts — in production every secure tool call then fails auth. Six of +# the ten ports shipped exactly that (an unpadded envelope), invisible to their own tests +# because each port's DECODER tolerates missing padding while the reference's +# urlsafe_b64decode RAISES on it — so round-tripping against ourselves could never catch +# it. One mint + a pure-python validation → cheap, per-PR (a security property must not +# wait for nightly). Its OWN line rather than a member of the BEHAVIORAL suite line, +# which is defer=1 (heavy wave). +sched_gate TOKEN-INTEROP res=gradle desc="a token this port mints validates under the reference's decoder (padded urlsafe base64, ':'-signed / '.'-enveloped, hex HMAC keyed by the secret_key string)" \ + -- python3 "$PORTING_SDK_DIR/scripts/diff_port_token_interop.py" --port java \ + --mint-cmd "./gradlew --console=plain -q tokenInteropMint" + # DOC-TRUTH (one markdown walk): DOC-AUDIT/DOC-LINKS/DOC-LANG-PURITY/DOC-ENV/ # COUNT-CLAIM/ACCESSOR-TRUTH/STATUS-CLAIM/README-INCLUDE. res=gradle: DOC-AUDIT + # STATUS-CLAIM read the on-disk port_surface.json that the SURFACE suite @@ -272,15 +327,15 @@ sched_gate ROOT-HYGIENE res=dayone desc="no audit/scratch clutter tracked at rep sched_gate PUBLIC-JARGON res=dayone desc="no internal porting jargon in public doc comments" \ -- python3 "$PORTING_SDK_DIR/scripts/public_jargon.py" --port java --repo . -# DOC-SURFACE (plan §6.3): javadoc /** coverage floor on the public API surface. -# The floor is pinned in .doc_surface_floor (51.8% today) and ratchets up via -# --write-floor; report-only at graduation, so a doc regression is visible without -# failing the run yet (never-regress is enforced once the floor flips blocking). -# GUARDED: doc_surface.py ships on the porting-sdk plan branch; until it merges to -# porting-sdk main (which CI clones), skip-with-pass rather than red on a not-yet- -# landed sibling script. Remove the guard once it's on porting-sdk main. -sched_gate DOC-SURFACE res=dayone desc="javadoc coverage floor on the public API surface (report-only, ratchets via .doc_surface_floor)" \ - -- bash -c 'if [ -f "$1/scripts/doc_surface.py" ]; then python3 "$1/scripts/doc_surface.py" --port java --repo "$2" --report-only; else echo "[doc-surface] doc_surface.py not on porting-sdk main yet — skip-pass (plan-branch dep)"; fi' _ "$PORTING_SDK_DIR" "$PORT_ROOT" +# DOC-SURFACE (plan §6.3): javadoc coverage floor on the public API surface. +# BLOCKING. The port is at 100.0% (1631/1631) as of the 2026-07-29 burn and the floor in +# .doc_surface_floor is pinned there, so a newly-undocumented public symbol is a real +# regression with a pinned number to prove it — it must red the run, not print a note. +# Was report-only at graduation, and previously wrapped in a skip-with-pass guard for +# when doc_surface.py still lived only on the porting-sdk plan branch. Both are gone: the +# script is on the pinned PORTING_SDK_REF, and a MISSING gate script must fail, not pass. +sched_gate DOC-SURFACE res=dayone desc="javadoc coverage floor on the public API surface (100% — blocking; ratchets via .doc_surface_floor)" \ + -- python3 "$PORTING_SDK_DIR/scripts/doc_surface.py" --port java --repo "$PORT_ROOT" # WIRED-MODES (Part 1.6 / D7): the merge-coherence guard — greps this run-ci.sh for # every load-bearing env/mode line declared in WIRED_MODES.md (the strict-mocks diff --git a/scripts/run-format.sh b/scripts/run-format.sh index 4a94e144..64f9bdd3 100755 --- a/scripts/run-format.sh +++ b/scripts/run-format.sh @@ -39,12 +39,17 @@ fi if [ "$MODE" = "check" ]; then echo "==> FMT check (spotlessCheck, read-only) — repo: $REPO_ROOT" sw_gradle -q spotlessCheck + echo "==> FMT check — Python (ruff format --check, read-only)" + sw_ruff format --check . else echo "==> FMT apply (spotlessApply) — repo: $REPO_ROOT" sw_gradle -q spotlessApply + echo "==> FMT apply — Python (ruff format)" + sw_ruff format . if ! (cd "$REPO_ROOT" && git diff --quiet 2>/dev/null); then echo " (FMT applied formatting to your working tree — review & stage)" fi - # A residual issue spotlessApply can't fix must still fail the gate. + # A residual issue the apply step can't fix must still fail the gate. sw_gradle -q spotlessCheck + sw_ruff format --check . fi diff --git a/scripts/run-lint.sh b/scripts/run-lint.sh index e09d9425..e126e8b5 100755 --- a/scripts/run-lint.sh +++ b/scripts/run-lint.sh @@ -40,4 +40,14 @@ if [ -n "${1:-}" ]; then fi echo "==> LINT (errorprone warnings-as-errors + checkstyle, zero findings) — repo: $REPO_ROOT" +# `build` pulls in `check`, which runs checkstyle for EVERY source set — main, +# test, examples (examples/ + rest/examples/ + relay/examples/) and auditTools +# (scripts/SignatureDump.java). The two names below are redundant with that but +# kept explicit so a future `build` reshuffle cannot silently drop them. Error +# Prone runs inside each source set's javac, so it covers all four too. sw_gradle -q --no-build-cache clean build -x test checkstyleMain checkstyleTest + +# The Python half — the scripts/ enumerators and generators, at the same +# zero-findings bar. Config in the repo-root ruff.toml. +echo "==> LINT — Python (ruff check, zero findings)" +sw_ruff check --no-cache . diff --git a/scripts/run-tests.sh b/scripts/run-tests.sh index 85920314..31ef620c 100755 --- a/scripts/run-tests.sh +++ b/scripts/run-tests.sh @@ -14,22 +14,128 @@ # # class or fully-qualified method: # # com.signalwire.sdk.AgentBaseTest, # # or 'com.signalwire.sdk.rest.*'). +# bash scripts/run-tests.sh [] --rerun-tasks … +# # any argument beginning with `-` is +# # passed straight through to gradle, +# # so gradle flags are reachable +# # without bypassing this entry point. # # Exits non-zero on any test failure. Mock hygiene: any mocks spun up by the tests # self-terminate on parent death (the shared harness contract), so a filtered or # interrupted run leaves no squatting listener. +# +# PROOF OF EXECUTION (the reason this script is more than a one-line wrapper): +# `gradle test` exits 0 for three different outcomes — the task EXECUTED, the task +# was UP-TO-DATE, or the task came FROM-CACHE — and only the first ran a test. A +# bare exit-status check therefore cannot tell "2331 tests passed" from "nothing +# ran, here is a replay of last time", which is precisely the distinction that +# matters on a commit that changed generated types. So this script requires an +# EXECUTION RECEIPT that only a real run can produce (see the `test {}` block in +# build.gradle for the mechanism and why the alternatives do not work) and reports +# the counts the run actually produced. A replayed green is now a gate FAILURE +# with an actionable message, not a silent pass. +# +# This does NOT disable Gradle's caching, and it must not: cache/up-to-date reuse +# across the ~17 gradle invocations run-ci makes is a legitimate and large +# speedup, and the defect was never that the cache exists — it was a gate that +# treated a cache hit as evidence of execution. The ordinary path stays cached; +# it just has to say so instead of claiming a pass. +# +# COST, stated plainly (measured 2026-08-03, 8-core Apple Silicon): +# * The assertion itself costs NOTHING — it is one `rm -f` and one `[ -f ]` +# around an otherwise unchanged gradle invocation. No flag is forced: run-ci +# still calls this script bare, so the normal first-run-per-change path is +# byte-for-byte the gradle command it always was. +# * A genuine full run is ~22s (`--rerun-tasks`, 5 tasks executed, 2331 tests). +# A replayed no-op "pass" was ~0.6s. That ~21s is not a new cost the +# assertion adds; it is the cost of actually testing, which the gate was +# previously skipping while reporting success. +# * The BEHAVIOUR CHANGE the owner should weigh: a SECOND consecutive run over +# an UNCHANGED tree now EXITS 1 ("did NOT execute") where it used to print a +# hollow PASS. That is deliberate — the alternative is a gate that cannot +# fail — but it means a local re-run of run-ci with no edits in between now +# reports red on TEST. The remedy is in the failure message itself +# (`--rerun-tasks`), and any real edit to a test or source input makes the +# task execute normally with no flag at all. +# * On CI this is a non-event for ordinary PR runs: the pre-build warm-up step +# uses `-x test`, so it never populates a `:test` cache entry, and a commit +# with any change has different `:test` inputs. The one exposed case is +# re-running CI on an already-cached, byte-identical commit — which would +# now go red instead of green-without-testing. That is the correct verdict, +# but it is a real difference from today's behaviour. set -euo pipefail # shellcheck source=scripts/_env.sh source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/_env.sh" -FILTER="${1:-}" +# Split argv: the first non-flag argument is the --tests filter (the long-standing +# contract); everything starting with `-` is a gradle flag passed through. +FILTER="" +GRADLE_FLAGS=() +for arg in "$@"; do + case "$arg" in + -*) GRADLE_FLAGS+=("$arg") ;; + *) + if [ -n "$FILTER" ]; then + echo "FATAL: more than one test filter given ('$FILTER' and '$arg')." >&2 + echo " Pass ONE filter; use a wildcard for a set, e.g. 'com.signalwire.sdk.rest.*'." >&2 + exit 2 + fi + FILTER="$arg" + ;; + esac +done +TEST_ARGS=(test) if [ -n "$FILTER" ]; then - echo "==> TEST (gradle test --tests '$FILTER') — repo: $REPO_ROOT" - sw_gradle test --tests "$FILTER" -else - echo "==> TEST (gradle test) — repo: $REPO_ROOT" - sw_gradle test + TEST_ARGS+=(--tests "$FILTER") +fi +if [ ${#GRADLE_FLAGS[@]} -gt 0 ]; then + TEST_ARGS+=("${GRADLE_FLAGS[@]}") +fi + +# The receipt is written by the test task's doLast, which Gradle runs ONLY when the +# task really executes. It is not a declared task output, so the build cache +# neither stores nor restores it — unlike build/test-results/, which FROM-CACHE +# faithfully reproduces (files and fresh mtimes and all), and which therefore +# cannot serve as an execution signal. +RECEIPT="$REPO_ROOT/build/sw-test-execution-receipt.txt" +rm -f "$RECEIPT" + +echo "==> TEST (gradle ${TEST_ARGS[*]}) — repo: $REPO_ROOT" +sw_gradle "${TEST_ARGS[@]}" + +if [ ! -f "$RECEIPT" ]; then + echo "" >&2 + echo "FATAL: the test task did NOT execute — gradle reported success by reusing a" >&2 + echo " previous result (\`:test UP-TO-DATE\` or \`:test FROM-CACHE\`). No test" >&2 + echo " ran, so this build is ZERO evidence that the suite passes." >&2 + echo "" >&2 + echo " This is not a build failure to work around: it means the inputs are" >&2 + echo " unchanged since the last real run. If you need a genuine run anyway" >&2 + echo " (verifying regenerated code, chasing a suspected stale result):" >&2 + echo " bash scripts/run-tests.sh --rerun-tasks" >&2 + echo "" >&2 + exit 1 +fi + +echo "==> TEST executed for real (receipt: $RECEIPT)" +cat "$RECEIPT" + +# The receipt's own failure count is a second, independent check on the verdict: +# gradle's exit status is the primary signal, but a listener that counted failures +# while the build still reported success would be a contradiction worth failing on. +RECEIPT_FAILED="$(sed -n 's/^failed=//p' "$RECEIPT")" +if [ -n "$RECEIPT_FAILED" ] && [ "$RECEIPT_FAILED" != "0" ]; then + echo "FATAL: $RECEIPT_FAILED test(s) failed (per the execution receipt) although gradle" >&2 + echo " reported success. Treating this as a failure." >&2 + exit 1 +fi + +RECEIPT_EXECUTED="$(sed -n 's/^executed=//p' "$RECEIPT")" +if [ "${RECEIPT_EXECUTED:-0}" = "0" ]; then + echo "FATAL: the test task ran but executed ZERO tests. A suite that selects nothing" >&2 + echo " cannot pass. Check the filter${FILTER:+ ('$FILTER')} and the test discovery config." >&2 + exit 1 fi diff --git a/src/main/java/com/signalwire/sdk/Signalwire.java b/src/main/java/com/signalwire/sdk/Signalwire.java index 931ca864..cfe1c42d 100644 --- a/src/main/java/com/signalwire/sdk/Signalwire.java +++ b/src/main/java/com/signalwire/sdk/Signalwire.java @@ -17,16 +17,14 @@ import java.util.function.Supplier; /** - * Top-level convenience entry points — mirror Python's {@code signalwire/__init__.py} package-level - * helpers ({@code RestClient}, {@code register_skill}, {@code add_skill_directory}, {@code - * list_skills_with_params}). + * Top-level convenience entry points for the SDK: {@link #RestClient(List, Map) RestClient}, {@link + * #registerSkill}, {@link #addSkillDirectory}, {@link #listSkills}, and {@link + * #listSkillsWithParams}. * - *

    This is a static-only utility class; it cannot be instantiated. The helpers delegate to the - * underlying classes (RestClient, SkillRegistry) so they're a strict thin layer. - * - *

    The audit projects each method onto the canonical Python {@code signalwire.} - * free-function path via a per-port {@code FREE_FUNCTION_PROJECTIONS} entry in {@code - * scripts/enumerate_signatures.py}. + *

    This is a static-only utility class; it cannot be instantiated. Every helper delegates to the + * underlying class ({@link RestClient}, {@link SkillRegistry}), so it is a strict thin layer that + * adds no behaviour of its own — reach for the underlying class directly whenever you need more + * control than the one-line form gives you. */ public final class Signalwire { @@ -55,26 +53,21 @@ private static SkillRegistry getSingletonRegistry() { } /** - * Construct a {@link RestClient} from positional or keyword credentials. - * - *

    Mirrors Python's top-level {@code signalwire.RestClient(*args, **kwargs)} factory. Supports - * two call shapes: - * - *

      - *
    • {@code RestClient(project, token, space)} — three positional strings, mapping straight - * onto the Java builder. - *
    • {@code RestClient(args, kwargs)} — variadic-shaped form matching Python's signature - * exactly. {@code args} is an array of three strings (project/token/space) or empty; {@code - * kwargs} carries the same fields by name. - *
    + * Construct a {@link RestClient} from positional or named credentials. * - *

    The audit projects this method onto Python's {@code signalwire.RestClient(*args, **kwargs)} - * via {@code FREE_FUNCTION_PROJECTIONS}. + *

    Each credential is resolved independently, in this order: the positional {@code args} slot + * (project, token, space), then the matching {@code kwargs} key, then the environment variable + * ({@code SIGNALWIRE_PROJECT_ID} / {@code SIGNALWIRE_API_TOKEN} / {@code SIGNALWIRE_SPACE}). So + * {@code args} may be empty, partial, or complete, and the remaining fields fall through. Both + * arguments accept {@code null} as "not supplied". * - * @param args positional credentials — empty or {@code [project, token, space]} - * @param kwargs keyword credentials — recognised keys are {@code project} / {@code project_id}, + * @param args positional credentials in the order {@code [project, token, space]}; may be empty, + * shorter than three entries, or {@code null} + * @param kwargs named credentials — recognised keys are {@code project} / {@code project_id}, * {@code token}, and {@code space} / {@code host} * @return a fully wired {@link RestClient} instance + * @throws IllegalArgumentException if project, token, or space is still missing or empty after + * all three sources have been consulted */ public static RestClient RestClient(List args, Map kwargs) { if (args == null) args = java.util.Collections.emptyList(); @@ -111,13 +104,14 @@ public static RestClient RestClient(List args, Map kwarg /** * Register a custom skill class with the global {@link SkillRegistry}. * - *

    Mirrors Python's {@code signalwire.register_skill(skill_class)}. Java skills are constructed - * via a no-arg constructor (the registry stores {@code Supplier} factories), so we - * adapt the supplied class reference into a factory using reflection. Throws {@link - * IllegalArgumentException} when the class can't be instantiated reflectively or when its skill - * name cannot be derived. + *

    Skills are constructed via a no-arg constructor (the registry stores {@code + * Supplier} factories), so the supplied class reference is adapted into a factory + * using reflection. The registration name comes from a public static {@code SKILL_NAME} field, + * else a static {@code getSkillName()}, else the lower-cased simple class name. * * @param skillClass a {@link SkillBase} subclass + * @throws IllegalArgumentException if {@code skillClass} is {@code null}. Instantiation failure + * is reported later, from the registered factory, as the same exception type. */ public static void registerSkill(Class skillClass) { if (skillClass == null) { @@ -157,9 +151,9 @@ public static void registerSkill(Class skillClass) { /** * Add a directory to search for skills. * - *

    Mirrors Python's {@code signalwire.add_skill_directory(path)} — delegates to the singleton - * {@link SkillRegistry} instance so third-party skill collections can be registered by path. - * Subsequent calls accumulate (de-duplicated) into a shared external paths list. + *

    Delegates to the singleton {@link SkillRegistry} instance so third-party skill collections + * can be registered by path. Subsequent calls accumulate (de-duplicated) into a shared external + * paths list. * * @param path absolute or relative path to a directory containing skill subdirectories * @throws IllegalArgumentException when the path doesn't exist or isn't a directory @@ -171,13 +165,13 @@ public static void addSkillDirectory(String path) { /** * Get complete schema for all available skills. * - *

    Mirrors Python's {@code signalwire.list_skills_with_params()}. Returns a map keyed by skill - * name where each value contains parameter metadata. Useful for GUI configuration tools, API - * documentation, or programmatic skill discovery. + *

    Returns a map keyed by skill name where each value carries that skill's metadata. Useful for + * GUI configuration tools, API documentation, or programmatic skill discovery. * - *

    Java skills don't carry rich Python-style parameter introspection in v1, so each entry - * contains the skill name and an empty parameter map; built-in skills that expose {@code - * parameterSchema()} get richer detail. + *

    Every entry carries {@code name} and a {@code parameters} map, plus {@code description} and + * {@code version} for skills that expose {@code getSkillDescription()} / {@code + * getSkillVersion()}. The {@code parameters} map is currently empty for every skill; built-in + * skills that expose {@code parameterSchema()} are the place to read a real schema from. * * @return map of skill name to schema metadata */ @@ -215,9 +209,8 @@ public static Map> listSkillsWithParams() { } /** - * List all registered skills as a flat list of metadata maps. Mirrors the top-level Python free - * function {@code signalwire.list_skills()} (the list form; {@link #listSkillsWithParams()} is - * the keyed form). + * List all registered skills as a flat list of metadata maps — the same entries {@link + * #listSkillsWithParams()} returns, without the skill-name keys. * * @return one metadata map ({@code name} + optional {@code description}/{@code version}) per * skill diff --git a/src/main/java/com/signalwire/sdk/agent/AgentBase.java b/src/main/java/com/signalwire/sdk/agent/AgentBase.java index 567ede67..8d06687e 100644 --- a/src/main/java/com/signalwire/sdk/agent/AgentBase.java +++ b/src/main/java/com/signalwire/sdk/agent/AgentBase.java @@ -100,6 +100,7 @@ public class AgentBase extends Service { private List nativeFunctions; private final List> internalFillers = new ArrayList<>(); private boolean debugEventsEnabled = false; + private int debugEventsLevel = 1; private final List> functionIncludes = new ArrayList<>(); // --- Tools --- @@ -122,7 +123,11 @@ public class AgentBase extends Service { // --- Web --- private DynamicConfigCallback dynamicConfigCallback; private String webhookUrl; - private String proxyUrlBase; + // proxyUrlBase is INHERITED from Service (protected). AgentBase used to + // re-declare it privately, which shadowed the superclass field: overridden + // manualSetProxyUrl wrote the AgentBase copy while Service.manualSetProxyUrl + // wrote Service's, leaving the superclass field write-only dead state that no + // reader ever consulted. One field, one writer, one reader. private final Map swaigQueryParams = new LinkedHashMap<>(); // --- MCP --- @@ -167,8 +172,8 @@ protected AgentBase( /** * Full construction contract. Forwards {@code schemaPath} / {@code configFile} / {@code - * schemaValidation} to {@link Service} exactly as the reference's {@code AgentBase.__init__} - * forwards them to {@code super().__init__} (agent_base.py:205-207). + * schemaValidation} straight through to {@link Service}, which owns SWML schema loading and + * validation. * * @param name agent name/identifier. * @param route HTTP route path for this agent. @@ -204,10 +209,25 @@ protected AgentBase( // Builder // ============================================================ + /** + * Start configuring a new agent. + * + * @return a fresh {@link Builder} carrying the SDK defaults (route {@code /}, host {@code + * 0.0.0.0}, auto-answer on, 3600-second max duration, POM prompts, recording off). + */ public static Builder builder() { return new Builder(); } + /** + * Fluent constructor for {@link AgentBase}. + * + *

    Values are collected here and resolved once at {@link #build()}, because several of them + * compose with lower-precedence sources: a config file's {@code service} section and the {@code + * SWML_BASIC_AUTH_*} / {@code PORT} / {@code SWML_PROXY_URL_BASE} / {@code + * SIGNALWIRE_SIGNING_KEY} environment variables. In every such case the explicit builder value + * wins, the config file is next, and the environment is last. + */ public static class Builder { // Collect Service-level args until build(), then call super(..) once. private String name = "agent"; @@ -241,11 +261,25 @@ public static class Builder { // Forwarded to SessionManager (agent_base.py:247). private int tokenExpirySecs = 3600; + /** + * The agent's name. Also the default basic-auth username and the seed for the default config + * file search path. + * + * @param name the agent name. + * @return this builder. + */ public Builder name(String name) { this.name = name; return this; } + /** + * HTTP path the agent is served on. A trailing slash is stripped (except on the bare root + * {@code "/"}) so the mounted path matches what the SWAIG/post-prompt URLs are built from. + * + * @param route the route, e.g. {@code "/"} or {@code "/agent"}. + * @return this builder. + */ public Builder route(String route) { this.route = route.endsWith("/") && route.length() > 1 @@ -254,31 +288,73 @@ public Builder route(String route) { return this; } + /** + * Interface address to bind. Defaults to {@code 0.0.0.0} (all interfaces); use {@code + * 127.0.0.1} to keep the agent reachable only from the local host. + * + * @param host the bind address. + * @return this builder. + */ public Builder host(String host) { this.host = host; return this; } + /** + * TCP port to bind. Highest precedence — when unset, {@link #build()} falls back to the config + * file's {@code service.port}, then the {@code PORT} environment variable, then 3000. + * + * @param port the TCP port. + * @return this builder. + */ public Builder port(int port) { this.port = port; return this; } + /** + * Whether the rendered SWML answers the call before the AI verb runs. Default {@code true}. + * + * @param autoAnswer whether to auto-answer. + * @return this builder. + */ public Builder autoAnswer(boolean autoAnswer) { this.autoAnswer = autoAnswer; return this; } + /** + * Hard ceiling in seconds on how long the answered call may run before the platform ends it. + * Default {@code 3600}. + * + * @param maxDuration the limit in seconds. + * @return this builder. + */ public Builder maxDuration(int maxDuration) { this.maxDuration = maxDuration; return this; } + /** + * Whether the platform records the call. Default {@code false}. Recording call audio carries + * consent and retention obligations in most jurisdictions — enable it deliberately. + * + * @param recordCall whether to record. + * @return this builder. + */ public Builder recordCall(boolean recordCall) { this.recordCall = recordCall; return this; } + /** + * Container format for the recording, e.g. {@code mp4} (the default) or {@code wav}. Only + * meaningful when {@link #recordCall(boolean)} is on. Prefer the {@link RecordFormat} overload, + * which rejects a misspelling at compile time. + * + * @param format the container format. + * @return this builder. + */ public Builder recordFormat(String format) { this.recordFormat = format; return this; @@ -294,16 +370,39 @@ public Builder recordFormat(RecordFormat format) { return recordFormat(format.getValue()); } + /** + * Whether the recording keeps each call leg on its own channel. Default {@code true}, which is + * what makes per-speaker transcription and diarization possible after the fact. + * + * @param stereo whether to record in stereo. + * @return this builder. + */ public Builder recordStereo(boolean stereo) { this.recordStereo = stereo; return this; } + /** + * Basic-auth username protecting the agent's HTTP endpoints. When unset, {@link #build()} reads + * {@code SWML_BASIC_AUTH_USER} and finally falls back to the agent name. + * + * @param user the username. + * @return this builder. + */ public Builder authUser(String user) { this.authUser = user; return this; } + /** + * Basic-auth password protecting the agent's HTTP endpoints. When unset, {@link #build()} reads + * {@code SWML_BASIC_AUTH_PASSWORD}; if that is also unset it generates a random password that + * exists only in this process and logs a warning — external callers then get HTTP 401 on every + * request, and the password changes on each restart. Set it explicitly for anything deployed. + * + * @param password the password. + * @return this builder. + */ public Builder authPassword(String password) { this.authPassword = password; return this; @@ -367,9 +466,8 @@ public Builder envProvider(EnvProvider env) { // -- Params the reference FORWARDS to SWMLService (agent_base.py:205-207) -- /** - * Explicit path to the SWML schema file. When unset the SDK auto-discovers the bundled schema - * (the reference's {@code _find_schema_path}). Forwarded to {@link Service} / {@link - * SchemaUtils}. + * Explicit path to the SWML schema file. When unset the SDK auto-discovers the bundled schema. + * Forwarded to {@link Service} / {@link SchemaUtils}. * * @param path schema file path, or null to auto-discover. * @return this builder. @@ -395,7 +493,7 @@ public Builder configFile(String path) { /** * Enable or disable SWML schema validation. Default {@code true}. Forwarded to {@link Service} - * / {@link SchemaUtils}, mirroring the reference's {@code schema_validation}. + * / {@link SchemaUtils}. * * @param enabled whether validation is on. * @return this builder. @@ -408,8 +506,7 @@ public Builder schemaValidation(boolean enabled) { // -- Agent-own construction params -- /** - * Unique id for this agent. When unset a random UUID is generated, mirroring the reference's - * {@code agent_id or str(uuid.uuid4())}. + * Unique id for this agent. When unset a random UUID is generated. * * @param id agent id, or null to generate one. * @return this builder. @@ -445,7 +542,7 @@ public Builder nativeFunctions(List functions) { /** * Default webhook URL applied to every SWAIG function, in place of the URL derived from the - * agent's host/route. Mirrors the reference's {@code default_webhook_url}. + * agent's host/route. * * @param url the default SWAIG webhook URL, or null to derive it. * @return this builder. @@ -467,8 +564,8 @@ public Builder suppressLogs(boolean suppress) { } /** - * Enable the post-prompt override path. Default {@code false}. Mirrors the reference's {@code - * enable_post_prompt_override}. + * Enable the post-prompt override path (the {@code enable_post_prompt_override} setting). + * Default {@code false}. * * @param enabled whether the override is enabled. * @return this builder. @@ -479,8 +576,8 @@ public Builder enablePostPromptOverride(boolean enabled) { } /** - * Enable the check-for-input override path. Default {@code false}. Mirrors the reference's - * {@code check_for_input_override}. + * Enable the check-for-input override path (the {@code check_for_input_override} setting). + * Default {@code false}. * * @param enabled whether the override is enabled. * @return this builder. @@ -492,8 +589,7 @@ public Builder checkForInputOverride(boolean enabled) { /** * Lifetime, in seconds, of the per-call SWAIG function tokens this agent mints. Default {@code - * 3600}. Forwarded to the agent's {@link SessionManager}, mirroring the reference's {@code - * SessionManager(token_expiry_secs=…)}. + * 3600}. Forwarded to the agent's {@link SessionManager}. * * @param secs token lifetime in seconds. * @return this builder. @@ -503,6 +599,26 @@ public Builder tokenExpirySecs(int secs) { return this; } + /** + * Resolve every configuration source and construct the agent. + * + *

    Precedence, applied per setting: explicit builder value, then the config file's {@code + * service} section ({@code name}/{@code route}/{@code host}/{@code port}), then the environment + * ({@code SWML_BASIC_AUTH_USER}, {@code SWML_BASIC_AUTH_PASSWORD}, {@code PORT}, {@code + * SWML_PROXY_URL_BASE}, {@code SIGNALWIRE_SIGNING_KEY}), then the SDK default. + * + *

    Two security fallbacks warn loudly rather than failing: + * + *

      + *
    • No password from any source generates a random one confined to this process — every + * external caller then receives HTTP 401. + *
    • No signing key from any source leaves webhook signature validation OFF, so the agent + * accepts unsigned webhook requests. + *
    + * + * @return the constructed agent, with its {@link SessionManager} already wired to the + * configured token lifetime. + */ public AgentBase build() { EnvProvider env = this.envProvider != null ? this.envProvider : EnvProvider.SYSTEM; @@ -639,9 +755,8 @@ public AgentBase build() { } /** - * Load the {@code service} section of a config file, mirroring the reference's {@code - * AgentBase._load_service_config}. Returns an empty map when there is no config file, it is - * unreadable, or it carries no {@code service} section. + * Load the {@code service} section of a config file. Returns an empty map when there is no config + * file, it is unreadable, or it carries no {@code service} section. * * @param configFile explicit config path, or null to search the default locations. * @param serviceName service name seeding the default search paths. @@ -690,8 +805,7 @@ private static Integer intOrNull(Object v) { // ============================================================ /** - * This agent's unique id — the builder-supplied {@code agentId} or a generated UUID. Mirrors the - * reference's public {@code agent_id} attribute. + * This agent's unique id — the builder-supplied {@code agentId} or a generated UUID. * * @return the agent id, never null. */ @@ -770,17 +884,42 @@ public int getTokenExpirySecs() { // Prompt Methods // ============================================================ + /** + * Set the system prompt as raw text, switching the agent OUT of Prompt Object Model mode. After + * this call {@link #getPrompt()} emits {@code {"text": …}} and any sections added through {@link + * #promptAddSection(String, String)} are no longer rendered. + * + * @param text the raw prompt text. + * @return this agent, for chaining. + */ public AgentBase setPromptText(String text) { this.promptText = text; this.usePom = false; return this; } + /** + * Set the prompt the platform runs AFTER the conversation ends, whose output is POSTed to the + * post-prompt URL — this is what produces the call summary. + * + * @param text the post-prompt text. + * @return this agent, for chaining. + */ public AgentBase setPostPrompt(String text) { this.postPrompt = text; return this; } + /** + * Append a Prompt Object Model section, switching the agent INTO POM mode (so any raw text set by + * {@link #setPromptText(String)} stops being rendered). + * + * @param title the section heading. + * @param body the section prose; {@code null} is stored as the empty string and dropped at render + * time. + * @param bullets bullet points under the section; {@code null} or empty omits the key entirely. + * @return this agent, for chaining. + */ public AgentBase promptAddSection(String title, String body, List bullets) { this.usePom = true; Map section = new LinkedHashMap<>(); @@ -793,10 +932,27 @@ public AgentBase promptAddSection(String title, String body, List bullet return this; } + /** + * Append a Prompt Object Model section with prose only. Equivalent to {@link + * #promptAddSection(String, String, List)} with no bullets. + * + * @param title the section heading. + * @param body the section prose. + * @return this agent, for chaining. + */ public AgentBase promptAddSection(String title, String body) { return promptAddSection(title, body, null); } + /** + * Nest a subsection under an existing section, matched by its exact title. Silently does nothing + * when no section carries that title. + * + * @param parentTitle title of the section to nest under. + * @param title the subsection heading. + * @param body the subsection prose; {@code null} is stored as the empty string. + * @return this agent, for chaining. + */ public AgentBase promptAddSubsection(String parentTitle, String title, String body) { for (Map section : pomSections) { if (parentTitle.equals(section.get("title"))) { @@ -814,6 +970,14 @@ public AgentBase promptAddSubsection(String parentTitle, String title, String bo return this; } + /** + * Append bullets to an existing section, matched by its exact title. Silently does nothing when + * no section carries that title. + * + * @param title title of the section to extend. + * @param bullets bullets to append. + * @return this agent, for chaining. + */ public AgentBase promptAddToSection(String title, List bullets) { for (Map section : pomSections) { if (title.equals(section.get("title"))) { @@ -827,6 +991,12 @@ public AgentBase promptAddToSection(String title, List bullets) { return this; } + /** + * Whether a Prompt Object Model section with this exact title has been added. + * + * @param title the section heading to look for. + * @return {@code true} if such a section exists. + */ public boolean promptHasSection(String title) { for (Map section : pomSections) { if (title.equals(section.get("title"))) { @@ -836,6 +1006,16 @@ public boolean promptHasSection(String title) { return false; } + /** + * The prompt as it will be rendered into the SWML AI verb. + * + *

    Normalises POM sections through {@link PromptObjectModel} rather than emitting the raw + * section maps, so an empty {@code body} is dropped and empty {@code bullets} omitted — emitting + * the raw maps would leak {@code "body": ""} for a bullets-only section, a wire divergence. + * + * @return {@code {"pom": […]}} in POM mode with at least one section, otherwise {@code {"text": + * …}} carrying the raw prompt (or the empty string when none was set). + */ public Object getPrompt() { if (usePom && !pomSections.isEmpty()) { // Normalize the raw section maps through the POM model so the emitted @@ -853,8 +1033,7 @@ public Object getPrompt() { /** * Returns the post-prompt text that was set via setPostPrompt, or null when none has been set. * - *

    Mirrors Python's PromptManager.get_post_prompt / PromptMixin.get_post_prompt — used by SWML - * rendering when a post-prompt is configured. + *

    Used by SWML rendering when a post-prompt is configured. */ public String getPostPrompt() { return postPrompt; @@ -863,8 +1042,6 @@ public String getPostPrompt() { /** * Returns the raw prompt text whatever setPromptText stored, or null when no raw prompt has been * set. Distinct from getPrompt() which may return a POM map when usePom is true. - * - *

    Mirrors Python's PromptManager.get_raw_prompt. */ public String getRawPrompt() { return promptText; @@ -872,10 +1049,8 @@ public String getRawPrompt() { /** * Sets the prompt as a list of POM section maps. Each section map supports keys "title", "body", - * "bullets", "numbered", "numbered_bullets", and "subsections". Switches the agent to POM mode. - * - *

    Mirrors Python's PromptManager.set_prompt_pom — accepts a list of section dicts and stores - * them in pomSections. + * "bullets", "numbered", "numbered_bullets", and "subsections". Switches the agent to POM mode, + * replacing any sections previously set. */ public AgentBase setPromptPom(List> pom) { this.usePom = true; @@ -907,8 +1082,6 @@ public PromptObjectModel getPom() { /** * Returns the contexts dictionary as serialised SWML, or null when no contexts have been defined * yet. - * - *

    Mirrors Python's PromptManager.get_contexts which returns the contexts dict or None. */ public Map getContexts() { if (contextBuilder == null) { @@ -922,7 +1095,10 @@ public Map getContexts() { // ============================================================ /** - * Register a SWAIG tool (function) that the AI can invoke during a call. + * Register a SWAIG tool the model can call during a call. Covariant override of {@link + * com.signalwire.sdk.swml.Service#defineTool(String, String, Map, ToolHandler)} that returns + * {@code AgentBase} so a fluent chain keeps the agent's own type; the registration logic itself + * lives on {@link com.signalwire.sdk.swml.Service}. * *

    How this becomes a tool the model sees

    * @@ -980,12 +1156,8 @@ public Map getContexts() { * @param description LLM-facing description of when to call this tool. * @param parameters JSON-schema properties map with LLM-facing descriptions for each parameter. * @param handler the Java handler invoked when the model calls this tool. + * @return this agent, for chaining. */ - // defineTool / registerSwaigFunction / defineTools logic now lives on - // Service. AgentBase keeps thin covariant overrides that just return the - // AgentBase instance, so existing fluent-chain users keep an AgentBase - // reference (rather than the parent Service type). - @Override public AgentBase defineTool( String name, String description, Map parameters, ToolHandler handler) { @@ -993,24 +1165,72 @@ public AgentBase defineTool( return this; } + /** + * Register a pre-built {@link ToolDefinition}. Covariant override returning {@code AgentBase}. + * + * @param toolDef the tool definition. + * @return this agent, for chaining. + */ @Override public AgentBase defineTool(ToolDefinition toolDef) { super.defineTool(toolDef); return this; } + /** + * Register a SWAIG function from its raw wire map — the escape hatch for definitions built + * elsewhere, such as a {@link com.signalwire.sdk.datamap.DataMap}'s {@code toSwaigFunction()}. + * Covariant override returning {@code AgentBase}. + * + * @param swaigFunc the SWAIG function object as it should appear on the wire. + * @return this agent, for chaining. + */ @Override public AgentBase registerSwaigFunction(Map swaigFunc) { super.registerSwaigFunction(swaigFunc); return this; } + /** + * Register several tools at once. Covariant override returning {@code AgentBase}. + * + * @param toolDefs the tool definitions. + * @return this agent, for chaining. + */ @Override public AgentBase defineTools(List toolDefs) { super.defineTools(toolDefs); return this; } + /** + * Dispatch a function call with {@code rawData} at its default of {@code null}. Redeclared here + * (rather than inherited from {@link com.signalwire.sdk.swml.Service}) so the optional-{@code + * rawData} contract is visible on {@code AgentBase} itself; it delegates to the 3-arg override + * below. + */ + @Override + public FunctionResult onFunctionCall(String name, Map args) { + return onFunctionCall(name, args, null); + } + + /** + * Dispatch a tool call to its registered handler, in process. + * + *

    This path does NOT validate a SWAIG token. The per-tool token is a WIRE artifact: a {@code + * secure} tool's rendered webhook URL carries {@code ?__token=}, and it is the HTTP {@code + * /swaig} handler that validates it when the platform calls back. Enforcing it here would make + * every secure tool (the default) unreachable from {@code swaig-test}, MCP {@code tools/call}, + * and the prefab agents' own tools. + * + *

    Never throws: an unknown or handler-less name and any exception the handler raises both come + * back as a {@link FunctionResult} carrying the message, so one bad tool cannot kill the call. + * + * @param name the tool name the model called. + * @param args the parsed arguments. + * @param rawData the raw SWAIG request body, or {@code null}. + * @return the handler's result, or a message-carrying result on unknown-tool/error. + */ @Override public FunctionResult onFunctionCall( String name, Map args, Map rawData) { @@ -1041,6 +1261,12 @@ public Map getTools() { return Collections.unmodifiableMap(tools); } + /** + * Whether a tool is registered under this exact name. + * + * @param name the tool name. + * @return {@code true} if registered. + */ public boolean hasTool(String name) { return tools.containsKey(name); } @@ -1076,15 +1302,97 @@ public boolean validateToolToken(String functionName, String token, String callI } } + /** + * Enforce a tool's {@code secure} flag for one SWAIG call, independently of the transport that + * carried it. + * + *

    A tool declared secure REQUIRES a valid per-call {@code __token}. An ABSENT token is refused + * exactly like a forged one — omitting the credential must never be weaker than presenting a + * wrong one, or {@code secure} would be a flag that permits anonymous calls. A token can only be + * checked against a {@code callId}, so a request that carries no call identity is unvalidated and + * is refused for the same reason. + * + *

    The refusal shape is a {@code 200} carrying a {@link FunctionResult} body, NOT an HTTP error + * status: the engine has no handling for a SWAIG refusal status, so the tool reports that it + * cannot execute and the model relays that to the caller. + * + *

    Deliberately takes three nullable strings and no request type, so every transport — the + * in-process HTTP endpoint, the standalone server, and the serverless adapters — shares one + * decision and cannot drift apart. Only the SECURITY half is transport-agnostic; dynamic + * reconfiguration genuinely needs a request object and stays on the HTTP hook. + * + *

    Internal plumbing, not SDK surface — it is deliberately unpublished. The out-of-package + * transports ({@code AgentServer}, {@code LambdaAgentHandler}) compose the identical decision + * from the published {@link #getTools()} and {@link #validateToolToken} seams; keep the three in + * step. + * + * @param functionName the tool the caller is invoking. + * @param token the {@code __token} credential from the request's query string, or {@code null}. + * @param callId the call identity from the request body, or {@code null}. + * @return {@code null} to proceed with dispatch, or the refusal body to return instead. + */ + Map swaigValidateToken(String functionName, String token, String callId) { + ToolDefinition tool = getTools().get(functionName); + // An unregistered name is not this check's call — the dispatch path reports not-found. + if (tool == null || !tool.isSecure()) { + return null; + } + if (validateToolToken(functionName, token, callId)) { + return null; + } + log.warn( + "SWAIG token refused for secure function '%s' (token present: %s)", + functionName, token != null && !token.isEmpty()); + return new FunctionResult( + "I'm sorry, the security token for this function is invalid or expired. " + + "I cannot execute this action.") + .toMap(); + } + + /** + * Enforce a tool's {@code secure} flag on the in-process HTTP {@code /swaig} endpoint. + * + *

    The credential comes from the query string and the call identity from the body, so both are + * read here and handed to the transport-agnostic {@link #swaigValidateToken} the serverless + * adapters also call — the two transports share one decision rather than each carrying their own + * copy of the rule. + */ + @Override + protected Object[] swaigPreDispatch( + Map requestData, String funcName, String token) { + Object rawCallId = requestData == null ? null : requestData.get("call_id"); + String callId = rawCallId == null ? null : rawCallId.toString(); + + Map refusal = swaigValidateToken(funcName, token, callId); + if (refusal != null) { + return new Object[] {this, refusal}; + } + return new Object[] {this, null}; + } + // ============================================================ // AI Config Methods // ============================================================ + /** + * Append a plain-string speech-recognition hint, biasing the recognizer toward a word or phrase + * it would otherwise mishear (product names, place names, jargon). Renders into {@code ai.hints}. + * + * @param hint the word or phrase. + * @return this agent, for chaining. + */ public AgentBase addHint(String hint) { hints.add(hint); return this; } + /** + * Append several plain-string recognition hints. Adds to what is already there rather than + * replacing it. + * + * @param newHints the words or phrases. + * @return this agent, for chaining. + */ public AgentBase addHints(List newHints) { hints.addAll(newHints); return this; @@ -1124,14 +1432,21 @@ public AgentBase addPatternHint(String hint, String pattern, String replace, boo return this; } + /** + * Add a language the agent can speak, with no fillers and the voice's default engine/model. + * + * @param name display name for the language, e.g. {@code "English"}. + * @param code BCP-47 language code, e.g. {@code "en-US"}. + * @param voice the TTS voice identifier. + * @return this agent, for chaining. + */ public AgentBase addLanguage(String name, String code, String voice) { return addLanguage(name, code, voice, null, null, null, null, null); } /** * Add a language configuration carrying speech/function fillers plus an explicit engine and - * model. Mirrors Python's {@code add_language(name, code, voice, speech_fillers, - * function_fillers, engine, model, params)}. + * model. Equivalent to the full overload with {@code params} left {@code null}. */ public AgentBase addLanguage( String name, @@ -1145,9 +1460,8 @@ public AgentBase addLanguage( } /** - * Add a language configuration to support multilingual conversations. Mirrors Python {@code - * AIConfigMixin.add_language(name, code, voice, speech_fillers=None, function_fillers=None, - * engine=None, model=None, params=None)} exactly, including: + * Add a language configuration to support multilingual conversations. The full-arity form; the + * rules it applies are: * *

      *
    • Voice parsing: when {@code engine}/{@code model} are given they win; otherwise a @@ -1210,9 +1524,8 @@ public AgentBase addLanguage( } /** - * Set (or replace) the per-language ``params`` dict on an already-added language. Empty/null - * params removes the key. Unknown code is a no-op. Returns self for chaining. Mirrors Python's - * set_language_params. + * Set (or replace) the per-language {@code params} map on an already-added language. Empty/null + * params removes the key. An unknown code is a no-op. Returns this agent for chaining. */ public AgentBase setLanguageParams(String code, Map params) { for (Map lang : languages) { @@ -1229,8 +1542,8 @@ public AgentBase setLanguageParams(String code, Map params) { } /** - * Read the per-language ``params`` dict for a previously-added language. Returns null when the - * code is unknown or params were never set. Mirrors Python's get_language_params. + * Read the per-language {@code params} map for a previously-added language. Returns null when the + * code is unknown or params were never set. */ @SuppressWarnings("unchecked") public Map getLanguageParams(String code) { @@ -1243,6 +1556,13 @@ public Map getLanguageParams(String code) { return null; } + /** + * Replace the whole language list with these raw language objects, discarding anything added by + * {@link #addLanguage(String, String, String)}. + * + * @param langs the language objects as they should appear in {@code ai.languages}. + * @return this agent, for chaining. + */ public AgentBase setLanguages(List> langs) { languages.clear(); languages.addAll(langs); @@ -1253,8 +1573,7 @@ public AgentBase setLanguages(List> langs) { * Configure ASR-driven multilingual mode (Mode B). Emits a top-level {@code multilingual} object * on the AI verb — the recognizer runs in code-switching mode and the agent answers in whatever * language the caller actually spoke. Mutually exclusive with {@link #setLanguages}: if both are - * set the server uses {@code multilingual} and ignores {@code languages}. Mirrors - * AIConfigMixin.set_multilingual. + * set the server uses {@code multilingual} and ignores {@code languages}. * * @param config the multilingual config object (languages, allowed, start_language, * min_switch_words, fillers, etc.) @@ -1267,6 +1586,24 @@ public AgentBase setMultilingual(Map config) { return this; } + /** + * Add a pronunciation rule with {@code ignore_case} at its default of {@code false} — the match + * is case-sensitive. + */ + public AgentBase addPronunciation(String replace, String with) { + return addPronunciation(replace, with, false); + } + + /** + * Add a TTS pronunciation rule, rewriting text before it reaches the synthesizer so an acronym or + * a brand name is spoken correctly. Renders as {@code {replace, with, ignore_case}} into {@code + * ai.pronounce}. + * + * @param replace the text to look for. + * @param with what to speak in its place. + * @param ignoreCase whether the match is case-insensitive. + * @return this agent, for chaining. + */ public AgentBase addPronunciation(String replace, String with, boolean ignoreCase) { Map pron = new LinkedHashMap<>(); pron.put("replace", replace); @@ -1276,22 +1613,55 @@ public AgentBase addPronunciation(String replace, String with, boolean ignoreCas return this; } + /** + * Replace the whole pronunciation list with these raw rule objects, discarding anything added by + * {@link #addPronunciation(String, String, boolean)}. + * + * @param prons the rule objects as they should appear in {@code ai.pronounce}. + * @return this agent, for chaining. + */ public AgentBase setPronunciations(List> prons) { pronunciations.clear(); pronunciations.addAll(prons); return this; } + /** + * Set one AI-verb parameter, overwriting any previous value for that key. These land in the SWML + * {@code ai.params} object. + * + * @param key the parameter name. + * @param value the parameter value. + * @return this agent, for chaining. + */ public AgentBase setParam(String key, Object value) { params.put(key, value); return this; } + /** + * Merge several AI-verb parameters in. Existing keys not mentioned here are preserved; keys + * present in both are overwritten. + * + * @param newParams the parameters to merge. + * @return this agent, for chaining. + */ public AgentBase setParams(Map newParams) { params.putAll(newParams); return this; } + /** + * Merge key/value data into the AI verb's {@code global_data}, readable by the model and by + * DataMap expressions throughout the call. + * + *

      Despite the {@code set} name this MERGES rather than replaces. That is deliberate: skills + * and application code each contribute keys, and a replace would silently drop what earlier + * callers added. + * + * @param data the keys to merge; {@code null} is a no-op. + * @return this agent, for chaining. + */ public AgentBase setGlobalData(Map data) { // MERGE (not replace) — mirrors Python AIConfigMixin.set_global_data, which // does self._global_data.update(data) so skills and other callers can each @@ -1303,6 +1673,13 @@ public AgentBase setGlobalData(Map data) { return this; } + /** + * Merge key/value data into the AI verb's {@code global_data}. Identical in effect to {@link + * #setGlobalData(Map)}, which also merges. + * + * @param data the keys to merge. + * @return this agent, for chaining. + */ public AgentBase updateGlobalData(Map data) { globalData.putAll(data); return this; @@ -1312,6 +1689,13 @@ public Map getGlobalData() { return globalData; } + /** + * Replace the list of server-side native SWAIG functions the agent enables, rendered into {@code + * ai.SWAIG.native_functions}. These execute on the platform, not through this agent's webhook. + * + * @param funcs the native function names. + * @return this agent, for chaining. + */ public AgentBase setNativeFunctions(List funcs) { this.nativeFunctions = new ArrayList<>(funcs); return this; @@ -1349,6 +1733,14 @@ public AgentBase setNativeFunctions(List funcs) { // backward compatibility. private final Map>> internalFillersMap = new LinkedHashMap<>(); + /** + * Replace the legacy flat filler list with these raw {@code {text|file}} objects. This is the + * older shape; {@link #setInternalFillersMap(java.util.Map)} is the per-function, per-language + * form and validates the function names. + * + * @param fillers the filler objects. + * @return this agent, for chaining. + */ public AgentBase setInternalFillers(List> fillers) { internalFillers.clear(); internalFillers.addAll(fillers); @@ -1409,6 +1801,15 @@ public AgentBase setInternalFillersMap(Map>> fi return this; } + /** + * Append one legacy flat filler, spoken or played while an internal function runs. Either + * argument may be {@code null}, in which case that key is omitted. See {@link + * #addInternalFiller(String, String, java.util.List)} for the per-function, per-language form. + * + * @param text phrase to speak, or {@code null}. + * @param file audio file URL to play, or {@code null}. + * @return this agent, for chaining. + */ public AgentBase addInternalFiller(String text, String file) { Map filler = new LinkedHashMap<>(); if (text != null) filler.put("text", text); @@ -1448,11 +1849,38 @@ public AgentBase addInternalFiller( return this; } + /** + * Turn on the platform's debug event stream for this agent, so callbacks registered with {@link + * #onDebugEvent(Consumer)} receive events. Debug events carry conversation internals — do not + * leave this on in production. + * + * @return this agent, for chaining. + */ public AgentBase enableDebugEvents() { + return enableDebugEvents(1); + } + + /** + * Turn on the platform's debug event stream at a specific verbosity. The level is rendered as + * {@code ai.params.debug_webhook_level}. + * + * @param level the debug verbosity level. + * @return this agent, for chaining. + */ + public AgentBase enableDebugEvents(int level) { this.debugEventsEnabled = true; + this.debugEventsLevel = level; return this; } + /** + * Include SWAIG functions hosted at another URL, so the platform calls that endpoint for them + * rather than this agent. Renders an entry into {@code ai.SWAIG.includes}. + * + * @param url the remote SWAIG endpoint. + * @param functions the function definitions to include, or {@code null} to omit the key. + * @return this agent, for chaining. + */ public AgentBase addFunctionInclude(String url, Map functions) { Map include = new LinkedHashMap<>(); include.put("url", url); @@ -1461,12 +1889,28 @@ public AgentBase addFunctionInclude(String url, Map functions) { return this; } + /** + * Replace the whole include list with these raw entries, discarding anything added by {@link + * #addFunctionInclude(String, Map)}. + * + * @param includes the include objects as they should appear in {@code ai.SWAIG.includes}. + * @return this agent, for chaining. + */ public AgentBase setFunctionIncludes(List> includes) { functionIncludes.clear(); functionIncludes.addAll(includes); return this; } + /** + * Merge LLM generation parameters (temperature, top_p, and the like) for the main prompt. + * + *

      Despite the {@code set} name this MERGES. Successive calls with distinct keys accumulate; a + * repeated key overwrites. + * + * @param llmParams the parameters to merge. + * @return this agent, for chaining. + */ public AgentBase setPromptLlmParams(Map llmParams) { // MERGE (not replace) — mirrors Python's self._prompt_llm_params.update(params) // (ai_config_mixin.py). Successive calls with distinct keys accumulate; a @@ -1475,6 +1919,13 @@ public AgentBase setPromptLlmParams(Map llmParams) { return this; } + /** + * Merge LLM generation parameters for the post-prompt (summary) pass. Merges rather than + * replaces, exactly as {@link #setPromptLlmParams(Map)} does. + * + * @param llmParams the parameters to merge. + * @return this agent, for chaining. + */ public AgentBase setPostPromptLlmParams(Map llmParams) { // MERGE (not replace) — mirrors Python's // self._post_prompt_llm_params.update(params) (ai_config_mixin.py). @@ -1486,6 +1937,14 @@ public AgentBase setPostPromptLlmParams(Map llmParams) { // Verb Methods (5-Phase Call Flow) // ============================================================ + /** + * Append a SWML verb to phase 1, which runs BEFORE the call is answered — the place for early + * media such as ringback or a pre-answer prompt. + * + * @param verbName the SWML verb name. + * @param verbData the verb's argument value. + * @return this agent, for chaining. + */ public AgentBase addPreAnswerVerb(String verbName, Object verbData) { Map verb = new LinkedHashMap<>(); verb.put(verbName, verbData); @@ -1493,6 +1952,13 @@ public AgentBase addPreAnswerVerb(String verbName, Object verbData) { return this; } + /** + * Append a SWML verb to phase 2, the answer phase. + * + * @param verbName the SWML verb name. + * @param verbData the verb's argument value. + * @return this agent, for chaining. + */ public AgentBase addAnswerVerb(String verbName, Object verbData) { Map verb = new LinkedHashMap<>(); verb.put(verbName, verbData); @@ -1500,6 +1966,14 @@ public AgentBase addAnswerVerb(String verbName, Object verbData) { return this; } + /** + * Append a SWML verb to phase 3, which runs after the call is answered but before the AI verb — + * for example a greeting played before the model takes over. + * + * @param verbName the SWML verb name. + * @param verbData the verb's argument value. + * @return this agent, for chaining. + */ public AgentBase addPostAnswerVerb(String verbName, Object verbData) { Map verb = new LinkedHashMap<>(); verb.put(verbName, verbData); @@ -1507,6 +1981,14 @@ public AgentBase addPostAnswerVerb(String verbName, Object verbData) { return this; } + /** + * Append a SWML verb to phase 5, which runs after the AI verb finishes — for example a transfer + * or a closing message once the conversation ends. + * + * @param verbName the SWML verb name. + * @param verbData the verb's argument value. + * @return this agent, for chaining. + */ public AgentBase addPostAiVerb(String verbName, Object verbData) { Map verb = new LinkedHashMap<>(); verb.put(verbName, verbData); @@ -1514,16 +1996,31 @@ public AgentBase addPostAiVerb(String verbName, Object verbData) { return this; } + /** + * Drop every phase-1 (pre-answer) verb. + * + * @return this agent, for chaining. + */ public AgentBase clearPreAnswerVerbs() { preAnswerVerbs.clear(); return this; } + /** + * Drop every phase-3 (post-answer) verb. + * + * @return this agent, for chaining. + */ public AgentBase clearPostAnswerVerbs() { postAnswerVerbs.clear(); return this; } + /** + * Drop every phase-5 (post-AI) verb. + * + * @return this agent, for chaining. + */ public AgentBase clearPostAiVerbs() { postAiVerbs.clear(); return this; @@ -1544,6 +2041,12 @@ public ContextBuilder defineContexts() { return this.contextBuilder; } + /** + * The agent's existing {@link ContextBuilder}, WITHOUT creating one. + * + * @return the builder previously created by {@link #defineContexts()}, or {@code null} when no + * contexts have been defined. + */ public ContextBuilder contexts() { return this.contextBuilder; } @@ -1566,6 +2069,14 @@ public AgentBase resetContexts() { // Skills // ============================================================ + /** + * Load a skill by registry name and configure it. The skill contributes its own tools, prompt + * sections, hints, and global data to the agent. + * + * @param skillName the registered skill name. + * @param params the skill's configuration. + * @return this agent, for chaining. + */ public AgentBase addSkill(String skillName, Map params) { skillManager.addSkill(skillName, params); return this; @@ -1596,6 +2107,12 @@ public AgentBase addSkill(SkillName skillName) { return addSkill(skillName.getValue(), Map.of()); } + /** + * Unload a previously added skill, withdrawing the tools and prompt content it contributed. + * + * @param skillName the registered skill name. + * @return this agent, for chaining. + */ public AgentBase removeSkill(String skillName) { skillManager.removeSkill(skillName); return this; @@ -1606,10 +2123,21 @@ public AgentBase removeSkill(SkillName skillName) { return removeSkill(skillName.getValue()); } + /** + * The names of the skills currently loaded on this agent. + * + * @return the loaded skill names. + */ public List listSkills() { return skillManager.listSkills(); } + /** + * Whether a skill is currently loaded under this name. + * + * @param skillName the registered skill name. + * @return {@code true} if loaded. + */ public boolean hasSkill(String skillName) { return skillManager.hasSkill(skillName); } @@ -1623,31 +2151,62 @@ public boolean hasSkill(SkillName skillName) { // Web / HTTP Config // ============================================================ + /** + * Install a callback that reconfigures the agent per inbound SWML request, using that request's + * query string, body, and headers — this is how one deployed agent serves per-caller or + * per-tenant behaviour. + * + * @param callback the callback, or {@code null} to remove it. + * @return this agent, for chaining. + */ public AgentBase setDynamicConfigCallback(DynamicConfigCallback callback) { this.dynamicConfigCallback = callback; return this; } + /** + * Override the URL the platform calls back for SWAIG functions, in place of the one derived from + * the agent's host and route. Use it when the agent sits behind a proxy or tunnel whose external + * address it cannot infer. + * + * @param url the SWAIG webhook URL. + * @return this agent, for chaining. + */ public AgentBase setWebHookUrl(String url) { this.webhookUrl = url; return this; } + /** + * Override the URL the platform POSTs the post-prompt summary to, in place of the derived one. + * The summary contains the conversation's content — point it somewhere you control. + * + * @param url the post-prompt URL. + * @return this agent, for chaining. + */ public AgentBase setPostPromptUrl(String url) { this.postPromptUrl = url; return this; } + /** + * Set the external base URL every generated webhook URL is built from, overriding whatever {@code + * SWML_PROXY_URL_BASE} supplied. Required when the agent is reachable at an address it cannot see + * from inside — behind a load balancer, an ingress, or an ngrok-style tunnel. + * + * @param url the external base URL. + * @return this agent, for chaining. + */ + @Override public AgentBase manualSetProxyUrl(String url) { this.proxyUrlBase = url; return this; } /** - * Get the underlying HTTP application/server instance for deployment adapters. Mirrors - * WebMixin.get_app — Python returns the FastAPI app for adapters like Mangum/Lambda; Java has no - * web framework, so this returns the JDK {@link com.sun.net.httpserver.HttpServer} (lazily - * started if not already running). + * Get the underlying HTTP application/server instance for deployment adapters. This SDK uses no + * web framework, so what is returned is the JDK {@link com.sun.net.httpserver.HttpServer}, lazily + * started if it is not already running. * * @return the bound HttpServer instance */ @@ -1663,9 +2222,8 @@ public com.sun.net.httpserver.HttpServer getApp() { } /** - * Register a JVM shutdown hook for graceful shutdown (useful under Kubernetes). Mirrors - * WebMixin.setup_graceful_shutdown — Python installs SIGTERM/SIGINT handlers; Java uses a JVM - * shutdown hook that stops the HTTP server cleanly. + * Register a JVM shutdown hook for graceful shutdown (useful under Kubernetes). The hook stops + * the HTTP server cleanly when the JVM is asked to terminate. */ public void setupGracefulShutdown() { Runtime.getRuntime() @@ -1680,16 +2238,39 @@ public void setupGracefulShutdown() { })); } + /** + * Merge extra query parameters onto every generated SWAIG webhook URL. They are visible in the + * rendered SWML and in platform logs, so do not put secrets here — the {@code __token} the + * secure-tool path mints is handled separately. + * + * @param params the query parameters to merge. + * @return this agent, for chaining. + */ public AgentBase addSwaigQueryParams(Map params) { swaigQueryParams.putAll(params); return this; } + /** + * Drop every extra SWAIG webhook query parameter added by {@link #addSwaigQueryParams(Map)}. + * + * @return this agent, for chaining. + */ public AgentBase clearSwaigQueryParams() { swaigQueryParams.clear(); return this; } + /** + * Enable debug routes for testing and development. + * + *

      Intentionally a no-op that returns {@code this}: debug routes are registered automatically + * during route registration, so there is nothing left for this call to enable. It is retained for + * backward compatibility, and the empty body is the correct behaviour rather than an + * unimplemented stub. + * + * @return this agent, for chaining. + */ public AgentBase enableDebugRoutes() { return this; } @@ -1878,11 +2459,26 @@ private static Map mcpError(Object reqId, int code, String messa // SIP // ============================================================ + /** + * Turn on SIP routing, so the agent dispatches inbound calls by the username in the request URI + * against the set registered with {@link #registerSipUsername(String)}. + * + * @return this agent, for chaining. + */ public AgentBase enableSipRouting() { this.sipRoutingEnabled = true; return this; } + /** + * Register a SIP username this agent answers for. Stored lower-cased, so registrations differing + * only in case collapse to one and matching is case-insensitive. A username failing the + * permitted-character pattern is REJECTED with a warning rather than registered — check the log + * if a call is not routing. + * + * @param username the SIP username. + * @return this agent, for chaining. + */ public AgentBase registerSipUsername(String username) { if (username != null && SIP_USERNAME_PATTERN.matcher(username).matches()) { // Store lowercased — mirrors Python agent_base.register_sip_username, @@ -1895,10 +2491,20 @@ public AgentBase registerSipUsername(String username) { return this; } + /** + * Whether {@link #enableSipRouting()} has been called. + * + * @return {@code true} when SIP routing is on. + */ public boolean isSipRoutingEnabled() { return sipRoutingEnabled; } + /** + * The SIP usernames this agent answers for, lower-cased as stored. + * + * @return an unmodifiable view of the registered usernames. + */ public Set getSipUsernames() { return Collections.unmodifiableSet(sipUsernames); } @@ -1949,11 +2555,25 @@ public static String extractSipUsername(String sipUri) { // Lifecycle Callbacks // ============================================================ + /** + * Install the handler invoked when the platform POSTs the post-prompt summary back at the end of + * a call. The summary reflects what was actually said, so treat it as conversation content. + * + * @param callback receives the summary data and the raw request body. + * @return this agent, for chaining. + */ public AgentBase onSummary(BiConsumer, Map> callback) { this.onSummaryCallback = callback; return this; } + /** + * Install the handler invoked for each debug event, which arrive only while {@link + * #enableDebugEvents()} is on. + * + * @param callback receives the debug event payload. + * @return this agent, for chaining. + */ public AgentBase onDebugEvent(Consumer> callback) { this.onDebugEventCallback = callback; return this; @@ -1963,27 +2583,66 @@ public AgentBase onDebugEvent(Consumer> callback) { // Getters // ============================================================ + /** + * The agent's name, as resolved at build time from the builder or the config file's {@code + * service.name}. + * + * @return the agent name. + */ + @Override public String getName() { return name; } + /** + * The HTTP path the agent is served on, with any trailing slash already stripped. + * + * @return the route. + */ + @Override public String getRoute() { return route; } + /** + * The interface address the agent binds. + * + * @return the bind address. + */ + @Override public String getHost() { return host; } + /** + * The TCP port the agent binds, as resolved from the builder, the config file, the {@code PORT} + * environment variable, or the default 3000. + * + * @return the port. + */ + @Override public int getPort() { return port; } + /** + * The basic-auth username protecting the agent's HTTP endpoints. + * + * @return the username. + */ @Override public String getAuthUser() { return authUser; } + /** + * The basic-auth password protecting the agent's HTTP endpoints — the plaintext credential, so + * keep it out of logs and out of anything rendered to a caller. When no password was configured + * from any source this is the random value generated at build time, which exists only in this + * process and changes on every restart. + * + * @return the password. + */ @Override public String getAuthPassword() { return authPassword; @@ -2067,7 +2726,7 @@ protected boolean validateSignedWebhook( /** * Rebuild the public URL the platform POSTed to, used as input to the webhook signature digest. - * Resolution order mirrors the Python reference implementation: + * Resolution order, first match wins: * *

        *
      1. {@code SWML_PROXY_URL_BASE} (when set) joined with the request path + query. @@ -2135,6 +2794,11 @@ public String getNormalisedRoute() { return normalizeRoute(); } + /** + * The manager that loads skills and collects what they contribute to the agent. + * + * @return this agent's skill manager. + */ public SkillManager getSkillManager() { return skillManager; } @@ -2143,63 +2807,88 @@ public SkillManager getSkillManager() { // SWML Rendering — 5-Phase Pipeline // ============================================================ - /** Render the complete SWML document. 5 phases: pre-answer, answer, post-answer, AI, post-AI */ + /** + * Render the complete SWML document. 5 phases: pre-answer, answer, post-answer, AI, post-AI. + * + *

        Every verb is appended through the inherited {@link Service#addVerb} choke point, so a + * schema-invalid config raises {@link com.signalwire.sdk.swml.SchemaValidationError} here rather + * than shipping to the wire. That includes the caller-supplied phase verbs from {@link + * #addPreAnswerVerb}, {@link #addAnswerVerb}, {@link #addPostAnswerVerb} and {@link + * #addPostAiVerb} — none of them bypass validation. The document is reset at the start of each + * render, so calling this repeatedly on a long-lived agent never accumulates verbs. + */ public Map renderSwml(String baseUrl) { - List> mainVerbs = new ArrayList<>(); + // Start from a clean document — renderSwml is called once per request on a + // long-lived agent (mirrors the reference's `agent_to_use.reset_document()`). + resetDocument(); // Phase 1: Pre-answer verbs - mainVerbs.addAll(preAnswerVerbs); + addPhaseVerbs(preAnswerVerbs); // Phase 2: Answer if (autoAnswer) { Map answerParams = new LinkedHashMap<>(); answerParams.put("max_duration", maxDuration); - mainVerbs.add(Map.of("answer", answerParams)); + addVerb("answer", answerParams); // Record call if enabled if (recordCall) { Map recParams = new LinkedHashMap<>(); recParams.put("format", recordFormat); recParams.put("stereo", recordStereo); - mainVerbs.add(Map.of("record_call", recParams)); + addVerb("record_call", recParams); } } - mainVerbs.addAll(answerVerbs); + addPhaseVerbs(answerVerbs); // Phase 3: Post-answer verbs - mainVerbs.addAll(postAnswerVerbs); + addPhaseVerbs(postAnswerVerbs); // Phase 4: AI verb - Map aiVerb = buildAiVerb(baseUrl); - mainVerbs.add(Map.of("ai", aiVerb)); + addVerb("ai", buildAiVerb(baseUrl)); // Phase 5: Post-AI verbs - mainVerbs.addAll(postAiVerbs); + addPhaseVerbs(postAiVerbs); + + return getDocument().toMap(); + } - // Build document - Map doc = new LinkedHashMap<>(); - doc.put("version", "1.0.0"); - doc.put("sections", Map.of("main", mainVerbs)); - return doc; + /** + * Append each verb of one phase list through the validating {@link Service#addVerb}. The phase + * lists hold single-entry {@code {verbName: verbData}} maps as recorded by {@link + * #addPreAnswerVerb} and friends. + */ + private void addPhaseVerbs(List> phaseVerbs) { + for (Map verb : phaseVerbs) { + for (Map.Entry e : verb.entrySet()) { + addVerb(e.getKey(), e.getValue()); + } + } } private Map buildAiVerb(String baseUrl) { Map ai = new LinkedHashMap<>(); // Prompt - ai.put("prompt", getPrompt()); + @SuppressWarnings("unchecked") + Map promptMap = (Map) getPrompt(); + Map prompt = new LinkedHashMap<>(promptMap); // Merge LLM params into prompt - if (!promptLlmParams.isEmpty()) { - @SuppressWarnings("unchecked") - Map promptMap = (Map) ai.get("prompt"); - Map merged = new LinkedHashMap<>(promptMap); - for (var entry : promptLlmParams.entrySet()) { - merged.put(entry.getKey(), entry.getValue()); - } - ai.put("prompt", merged); + prompt.putAll(promptLlmParams); + + // Contexts belong INSIDE the prompt object, alongside `text`/`pom` — the + // reference builds them into `prompt_config["contexts"]` + // (swml_handler.py:191, validated at :107-122). `AIObject` is closed and + // declares no top-level `contexts`, so emitting it as a sibling of `prompt` + // both invalidated the document and put the contexts/steps workflow + // somewhere the AI engine never reads. + if (contextBuilder != null && !contextBuilder.isEmpty()) { + prompt.put("contexts", contextBuilder.toMap()); } + ai.put("prompt", prompt); + // Post prompt if (postPrompt != null) { Map ppMap = new LinkedHashMap<>(); @@ -2217,9 +2906,21 @@ private Map buildAiVerb(String baseUrl) { ai.put("post_prompt_url", ppUrl); } - // Params - if (!params.isEmpty()) { - ai.put("params", new LinkedHashMap<>(params)); + // Params — including the auto-wired debug webhook when debug events are on. + // The debug stream is configured through `ai.params.debug_webhook_url` + + // `ai.params.debug_webhook_level` (both are declared AIParams keys), NOT a + // top-level `ai.debug` object: `AIObject` is closed + // (`unevaluatedProperties: {"not": {}}`) and has no `debug` property, so the + // shape this used to emit made the whole document schema-invalid and the + // platform never turned the stream on. Mirrors the reference + // (agent_base.py:1280-1293), which writes both keys into `_params`. + Map effectiveParams = new LinkedHashMap<>(params); + if (debugEventsEnabled) { + effectiveParams.put("debug_webhook_url", buildDebugEventsUrl(baseUrl)); + effectiveParams.put("debug_webhook_level", debugEventsLevel); + } + if (!effectiveParams.isEmpty()) { + ai.put("params", effectiveParams); } // Hints @@ -2243,23 +2944,48 @@ private Map buildAiVerb(String baseUrl) { ai.put("pronounce", new ArrayList<>(pronunciations)); } - // Internal fillers - if (!internalFillers.isEmpty()) { - ai.put("internal_fillers", new ArrayList<>(internalFillers)); - } - - // Debug events - if (debugEventsEnabled) { - ai.put("debug", Map.of("events", true)); - } - // SWAIG section Map swaig = new LinkedHashMap<>(); + // Internal fillers live INSIDE the SWAIG object, not at the ai top level, and + // are an OBJECT keyed by internal-function name — `$defs/SWAIGInternalFiller`, + // referenced from `SWAIG.internal_fillers`, whose properties are `hangup`, + // `check_time`, `next_step`, ... each a `FunctionFillers`. The reference sets + // exactly that: `swaig_obj["internal_fillers"] = self._internal_fillers` + // (agent_base.py:1024-1029) off `set_internal_fillers(dict[str, dict[str, + // list[str]]])`. + // + // What shipped instead was the flat `internalFillers` LIST at the ai TOP LEVEL — + // wrong container AND wrong shape, so the document was invalid twice over and no + // filler was ever spoken. Meanwhile `internalFillersMap`, the field holding the + // correct reference-shaped data, was never rendered at all. The raw-document + // bypass is why neither was caught. + if (!internalFillersMap.isEmpty()) { + swaig.put("internal_fillers", new LinkedHashMap<>(internalFillersMap)); + } + // Build functions list List> functions = buildSwaigFunctions(baseUrl); if (!functions.isEmpty()) { swaig.put("functions", functions); + // The SHARED fallback webhook, emitted IFF there are functions — reference + // agent_base.py:1108-1113 (`if functions: ... swaig_obj["defaults"] = + // {"web_hook_url": default_webhook_url}`), whose value is + // `_build_webhook_url("swaig", swaig_query_params)` with the + // `_web_hook_url_override` applied (agent_base.py:972-979) — exactly what + // buildWebhookUrl already computes. + // + // This is load-bearing for the SECURE contract, not cosmetic: an INSECURE tool + // deliberately renders NO per-tool web_hook_url (buildSwaigFunctions), so + // SWAIG.defaults.web_hook_url is the ONLY thing that gives it a callback at all. + // Without this block an insecure tool would render with no reachable endpoint. + // + // buildWebhookUrl returns null when no baseUrl and no override was given; the key is + // still emitted (mirroring the reference, which always sets it) but Map.of would NPE on + // a null value, so the map is built explicitly. + Map swaigDefaults = new LinkedHashMap<>(); + swaigDefaults.put("web_hook_url", buildWebhookUrl(baseUrl)); + swaig.put("defaults", swaigDefaults); } // Function includes @@ -2286,14 +3012,31 @@ private Map buildAiVerb(String baseUrl) { ai.put("global_data", new LinkedHashMap<>(globalData)); } - // Contexts - if (contextBuilder != null && !contextBuilder.isEmpty()) { - ai.put("contexts", contextBuilder.toMap()); - } - return ai; } + /** + * Build the SWAIG {@code functions[]} array. + * + *

        The wire manifestation of a tool's {@code secure} flag is a per-tool {@code __token} QUERY + * PARAMETER on that function's OWN {@code web_hook_url}. The engine treats the webhook URL as + * opaque and round-trips it verbatim, so only the SDK that minted the token ever interprets it — + * which is why {@code __token} appears nowhere in the engine source. + * + *

        It is deliberately NOT {@code meta_data_token}: {@code schema.json} defines that as the + * "Scoping token for meta_data", the engine MD5-derives it from {@code + * web_hook_url+auth_user+auth_pass} when the SWML omits it ({@code + * mod_openai/app_config.c:1031-1042}) and uses it ONLY as a key into the per-function metadata + * store ({@code actions.c:2085-2093}) and to scope function-toggle actions ({@code + * actions.c:419-420}). Nothing validates it as a credential, so emitting the security token there + * would leave the callback unauthenticated AND mis-scope the metadata store. + * + *

        A per-tool {@code web_hook_url} is emitted only when the tool has an external webhook URL, + * OR carries a token, OR the agent has SWAIG query params. An insecure locally-handled tool + * therefore has NO entry of its own and falls back to the shared {@code + * SWAIG.defaults.web_hook_url}; giving it a function-specific webhook would publish an + * unauthenticated per-function callback. + */ private List> buildSwaigFunctions(String baseUrl) { List> functions = new ArrayList<>(); String webhookBase = buildWebhookUrl(baseUrl); @@ -2301,9 +3044,20 @@ private List> buildSwaigFunctions(String baseUrl) { // Tools with handlers for (Map.Entry entry : tools.entrySet()) { ToolDefinition tool = entry.getValue(); - String toolWebhook = tool.hasHandler() ? webhookBase : null; String token = tool.isSecure() ? sessionManager.createToken(tool.getName(), "") : null; - functions.add(tool.toSwaigFunction(toolWebhook, token)); + String toolWebhook = null; + if (webhookUrl != null) { + // An EXTERNAL webhook URL: the reference passes such a URL through untouched and mints + // no token for it (agent_base.py:1085-1087 — the `if func.webhook_url` branch precedes + // the token branch), because the SDK does not serve that endpoint and so cannot + // validate a token on it. + toolWebhook = tool.hasHandler() ? webhookUrl : null; + } else if (tool.hasHandler() && (token != null || !swaigQueryParams.isEmpty())) { + toolWebhook = appendTokenParam(webhookBase, token); + } + // meta_data_token is NOT the security token (see the method javadoc) — pass null so it + // is only ever set by a caller's explicit extra SWAIG fields. + functions.add(tool.toSwaigFunction(toolWebhook, null)); } // Registered SWAIG functions (DataMap tools) @@ -2312,6 +3066,20 @@ private List> buildSwaigFunctions(String baseUrl) { return functions; } + /** + * Append the per-tool SWAIG security token to a webhook URL as the {@code __token} query + * parameter — the wire manifestation of {@code secure}. The double-underscore name avoids + * colliding with a caller's own {@code token} query param. Returns the URL unchanged when there + * is no token, and picks {@code ?} vs {@code &} based on whether {@link #buildWebhookUrl} already + * emitted the agent's SWAIG query params. + */ + private String appendTokenParam(String url, String token) { + if (url == null || token == null || token.isEmpty()) { + return url; + } + return url + (url.indexOf('?') >= 0 ? "&" : "?") + "__token=" + token; + } + private String buildWebhookUrl(String baseUrl) { if (webhookUrl != null) return webhookUrl; if (baseUrl == null) return null; @@ -2334,6 +3102,30 @@ private String buildWebhookUrl(String baseUrl) { return url.toString(); } + /** + * The URL the platform POSTs debug events to — the same base and query params as the SWAIG + * webhook, but the {@code debug_events} endpoint. + */ + private String buildDebugEventsUrl(String baseUrl) { + if (baseUrl == null) { + return null; + } + StringBuilder url = new StringBuilder(); + url.append(baseUrl).append(normalizeRoute()).append("/debug_events"); + if (!swaigQueryParams.isEmpty()) { + url.append("?"); + boolean first = true; + for (Map.Entry entry : swaigQueryParams.entrySet()) { + if (!first) { + url.append("&"); + } + url.append(entry.getKey()).append("=").append(entry.getValue()); + first = false; + } + } + return url.toString(); + } + private String normalizeRoute() { return route.equals("/") ? "" : route; } @@ -2396,6 +3188,17 @@ public AgentBase clone() { } copy.internalFillers.addAll(deepCopyList(this.internalFillers)); copy.debugEventsEnabled = this.debugEventsEnabled; + copy.debugEventsLevel = this.debugEventsLevel; + // internal_fillers is rendered off internalFillersMap, so the ephemeral copy + // must carry it or a dynamic-config request silently drops every filler + // (the reference deep-copies _internal_fillers at agent_base.py:1659-1660). + for (var e : this.internalFillersMap.entrySet()) { + Map> langs = new LinkedHashMap<>(); + for (var l : e.getValue().entrySet()) { + langs.put(l.getKey(), new ArrayList<>(l.getValue())); + } + copy.internalFillersMap.put(e.getKey(), langs); + } copy.functionIncludes.addAll(deepCopyList(this.functionIncludes)); copy.tools.putAll(this.tools); copy.registeredSwaigFunctions.addAll(deepCopyList(this.registeredSwaigFunctions)); @@ -2818,6 +3621,16 @@ public void run() throws IOException { // Dynamic Config Callback Interface // ============================================================ + /** + * Callback that reconfigures an agent per inbound SWML request. Registered with {@link + * AgentBase#setDynamicConfigCallback(DynamicConfigCallback)} and invoked before each render, so + * one deployed agent can serve per-caller or per-tenant behaviour. + * + *

        The query parameters, body, and headers all come from the network. Validate anything read + * from them before letting it reach a prompt or a tool configuration. + * + * @see AgentBase#setDynamicConfigCallback(DynamicConfigCallback) + */ @FunctionalInterface public interface DynamicConfigCallback { void configure( diff --git a/src/main/java/com/signalwire/sdk/agents/BedrockAgent.java b/src/main/java/com/signalwire/sdk/agents/BedrockAgent.java index 90393dbc..e5341653 100644 --- a/src/main/java/com/signalwire/sdk/agents/BedrockAgent.java +++ b/src/main/java/com/signalwire/sdk/agents/BedrockAgent.java @@ -16,13 +16,12 @@ /** * Agent implementation for the Amazon Bedrock voice-to-voice model. * - *

        Mirrors Python's {@code signalwire.agents.bedrock.BedrockAgent} and the Ruby {@code - * SignalWire::Agents::BedrockAgent}. It extends {@link AgentBase} to keep full compatibility with - * all SignalWire agent features (skills, POM, SWAIG functions, post-prompt) and renders the same - * base SWML as {@link AgentBase}, then transforms the {@code ai} verb into an {@code - * amazon_bedrock} verb whose object carries voice + inference parameters inside its prompt config, - * per the SWML {@code amazon_bedrock} schema (keys: {@code prompt}, {@code SWAIG}, {@code params}, - * {@code global_data}, {@code post_prompt}, {@code post_prompt_url}). + *

        Extends {@link AgentBase} to keep full compatibility with all SignalWire agent features + * (skills, POM, SWAIG functions, post-prompt) and renders the same base SWML as {@link AgentBase}, + * then transforms the {@code ai} verb into an {@code amazon_bedrock} verb whose object carries + * voice + inference parameters inside its prompt config, per the SWML {@code amazon_bedrock} schema + * (keys: {@code prompt}, {@code SWAIG}, {@code params}, {@code global_data}, {@code post_prompt}, + * {@code post_prompt_url}). */ public class BedrockAgent extends AgentBase { @@ -119,8 +118,8 @@ public Map renderSwml(String baseUrl) { /** * Build the {@code amazon_bedrock} verb object from the base {@code ai} config. Voice + inference - * params live inside the prompt config; only non-null keys are emitted (matches the Python - * reference and the {@code amazon_bedrock} schema). + * params live inside the prompt config; only non-null keys are emitted, per the {@code + * amazon_bedrock} schema. */ @SuppressWarnings("unchecked") private Map buildBedrockObject(Map aiConfig) { @@ -170,6 +169,24 @@ public BedrockAgent setVoice(String voiceId) { return this; } + /** + * Update inference params leaving {@code temperature}, {@code topP} and {@code maxTokens} all + * unchanged. + */ + public BedrockAgent setInferenceParams() { + return setInferenceParams(null, null, null); + } + + /** Update only {@code temperature}, leaving {@code topP} and {@code maxTokens} unchanged. */ + public BedrockAgent setInferenceParams(Double temperature) { + return setInferenceParams(temperature, null, null); + } + + /** Update {@code temperature} and {@code topP}, leaving {@code maxTokens} unchanged. */ + public BedrockAgent setInferenceParams(Double temperature, Double topP) { + return setInferenceParams(temperature, topP, null); + } + /** * Update Bedrock inference parameters ({@code temperature}, {@code topP}, {@code maxTokens}). * Only non-null values are applied. @@ -224,6 +241,7 @@ public BedrockAgent setLlmTemperature(double temperature) { * @param params ignored * @return this */ + @Override public BedrockAgent setPostPromptLlmParams(Map params) { log.warn( "set_post_prompt_llm_params() called but Bedrock post-prompt uses OpenAI configured in C" @@ -238,23 +256,44 @@ public BedrockAgent setPostPromptLlmParams(Map params) { * @param params ignored * @return this */ + @Override public BedrockAgent setPromptLlmParams(Map params) { log.warn("set_prompt_llm_params() called - use set_inference_params() for Bedrock"); return this; } + /** + * The Amazon Polly voice the Bedrock agent speaks with. + * + * @return the voice id. + */ public String getVoiceId() { return voiceId; } + /** + * Sampling temperature for the Bedrock model — higher is more varied, lower more deterministic. + * + * @return the temperature. + */ public double getTemperature() { return temperature; } + /** + * Nucleus-sampling cutoff for the Bedrock model. + * + * @return the top-p value. + */ public double getTopP() { return topP; } + /** + * Ceiling on tokens the Bedrock model may generate per response. + * + * @return the token limit. + */ public int getMaxTokens() { return maxTokens; } diff --git a/src/main/java/com/signalwire/sdk/aichat/AIChatClient.java b/src/main/java/com/signalwire/sdk/aichat/AIChatClient.java index 68606e0b..a2bb3dca 100644 --- a/src/main/java/com/signalwire/sdk/aichat/AIChatClient.java +++ b/src/main/java/com/signalwire/sdk/aichat/AIChatClient.java @@ -32,14 +32,11 @@ * idle-but-live turn could trip. {@code java.net.http.HttpClient} offers a connect timeout and a * per-request timeout; the per-request timeout is a wall-clock cap on the WHOLE exchange (it cannot * be reset by a heartbeat), so imposing it would sever a slow-but-live turn — exactly what the - * streaming note forbids. We therefore set a bounded {@code connectTimeout} and leave the - * per-request timeout UNSET (no total cap), the closest {@code java.net.http} equivalent of the - * python reference's {@code aiohttp.ClientTimeout(total=None, connect=10, sock_read=60)}: a live - * turn is never capped, and a truly dead connection is caught by the OS/TCP layer. Leading - * keepalive whitespace is valid JSON, so the buffered {@code HttpResponse.BodyHandlers.ofString()} - * parse is unaffected. - * - *

        Mirrors the python reference {@code signalwire.ai_chat.AIChatClient}. + * streaming note forbids. We therefore set a bounded 10-second {@code connectTimeout} and leave the + * per-request timeout UNSET (no total cap): a live turn is never capped, while a connection that + * never establishes still fails fast and a truly dead established connection is caught by the + * OS/TCP layer. Leading keepalive whitespace is valid JSON, so the buffered {@code + * HttpResponse.BodyHandlers.ofString()} parse is unaffected. * *

        {@code
          * AIChatClient client = new AIChatClient(AIChatClientOptions.builder().space("myspace").build());
        @@ -53,7 +50,7 @@ public class AIChatClient implements AutoCloseable {
           /** Default endpoint path appended to a {@code space}-derived base URL. */
           static final String DEFAULT_PATH = "/api/ai/chat";
         
        -  /** Bounded connect timeout — mirrors the python reference's {@code connect=10}. */
        +  /** Bounded connect timeout: 10 seconds to establish the TCP/TLS connection. */
           private static final Duration CONNECT_TIMEOUT = Duration.ofSeconds(10);
         
           private static final Gson GSON = new Gson();
        @@ -162,9 +159,8 @@ public String getUrl() {
            * 

        The AI Chat client is built on {@link java.net.http.HttpClient}, which is sessionless — each * call is a self-contained request with no pooled connection state this client owns — so there is * nothing to tear down. {@code close()} is a well-defined no-op that completes the lifecycle - * contract (mirroring the Python reference's {@code close()} on its owned aiohttp session), - * letting callers use the client in a try-with-resources block interchangeably with the other SDK - * clients. + * contract, letting callers use the client in a try-with-resources block interchangeably with the + * other SDK clients. */ @Override public void close() { @@ -178,8 +174,8 @@ public void close() { * *

        Success/failure is decided by the JSON-RPC BODY, not the HTTP status: the service's * keepalive heartbeat commits {@code 200} before the turn's outcome is known, so a slow error can - * arrive as {@code 200 + {"error": …}}. Never gate on the HTTP status here (mirrors the python - * reference). + * arrive as {@code 200 + {"error": …}}. Never gate on the HTTP status here — a {@code 200} does + * not mean the turn succeeded. * * @throws AIChatError (or a typed subclass) when the body carries {@code error}. */ diff --git a/src/main/java/com/signalwire/sdk/aichat/AIChatError.java b/src/main/java/com/signalwire/sdk/aichat/AIChatError.java index 2848504d..7d29e3a6 100644 --- a/src/main/java/com/signalwire/sdk/aichat/AIChatError.java +++ b/src/main/java/com/signalwire/sdk/aichat/AIChatError.java @@ -15,8 +15,7 @@ * {@link #getCode()} or the subclass type. * *

        Unchecked (extends {@link RuntimeException}), matching the SDK's existing error style ({@code - * com.signalwire.sdk.rest.RestError}). Mirrors the python reference {@code - * signalwire.ai_chat.AIChatError}. + * com.signalwire.sdk.rest.RestError}). */ public class AIChatError extends RuntimeException { diff --git a/src/main/java/com/signalwire/sdk/aichat/package-info.java b/src/main/java/com/signalwire/sdk/aichat/package-info.java index 8ccc0fc9..fc2ba446 100644 --- a/src/main/java/com/signalwire/sdk/aichat/package-info.java +++ b/src/main/java/com/signalwire/sdk/aichat/package-info.java @@ -11,7 +11,6 @@ * *

        {@link com.signalwire.sdk.aichat.AIChatClient} drives the six methods (create_conversation, * chat, end_conversation, delete, chat_log, summarize) and maps the service's typed error space to - * the {@link com.signalwire.sdk.aichat.AIChatError} family. Mirrors the python reference {@code - * signalwire.ai_chat}. + * the {@link com.signalwire.sdk.aichat.AIChatError} family. */ package com.signalwire.sdk.aichat; diff --git a/src/main/java/com/signalwire/sdk/cli/SwaigTest.java b/src/main/java/com/signalwire/sdk/cli/SwaigTest.java index a29c5765..50466ff0 100644 --- a/src/main/java/com/signalwire/sdk/cli/SwaigTest.java +++ b/src/main/java/com/signalwire/sdk/cli/SwaigTest.java @@ -43,6 +43,13 @@ */ public class SwaigTest { + /** + * The call identity a simulated invocation runs under. Real traffic carries the platform's call + * id; a CLI invocation has no live call, so it uses a fixed one and mints the tool token against + * it — the token and the id it is checked against must agree, whatever the value is. + */ + private static final String SIMULATED_CALL_ID = "swaig-test-simulated-call"; + private String baseUrl; private String authUser; private String authPassword; @@ -72,6 +79,12 @@ public class SwaigTest { // {@link System#getenv()}). private EnvProvider realEnvOverride; + /** + * Command-line entry point for the {@code swaig-test} tool: lists an agent's tools, dumps its + * rendered SWML, or executes one tool against a running agent. + * + * @param args the command-line arguments (see {@code bin/swaig-test --help}). + */ public static void main(String[] args) { int code = run(args); if (code != 0) System.exit(code); @@ -455,14 +468,14 @@ private static void printRawSwaigFunction(java.util.Map fn) { *

      2. Build a layered {@link EnvProvider} that masks {@code SWML_PROXY_URL_BASE} and overlays * simulated values. *
      3. Warn if the real env had {@code SWML_PROXY_URL_BASE} set — the simulated view hides it, - * matching Python's behaviour. + * so the URLs the agent renders will not match what the real process env would produce. *
      4. Load the agent class by reflection, call its factory method, rebuild through {@link * AgentBase.Builder#envProvider(EnvProvider)} if the user returned a raw-{@code build()} * instance. *
      5. Route the request through the platform's adapter (e.g. {@link LambdaAgentHandler}) — NOT * the HTTP server. *
      6. Nothing to restore — we never touched the real process env. (The {@code try/finally} is - * still there for symmetry with Python and for any future state-bearing resources.) + * kept for any future state-bearing resources.) *
      */ private void runSimulation() throws Exception { @@ -515,9 +528,15 @@ private void runLambdaSimulation(AgentBase agent, EnvProvider simEnv) throws Exc String path = route.isEmpty() ? "/" : route; if (execTool != null) { - String body = buildSwaigRequestJson(execTool, params); + String body = buildSwaigRequestJson(execTool, params, SIMULATED_CALL_ID); Map event = buildApiGatewayV2Event("POST", route + "/swaig", basicAuthHeader(agent), body); + // Carry the credential a secure tool requires. The CLI drives the agent in-process, so it + // can mint the token from the very SessionManager that will check it — the same query-string + // placement the platform uses when it calls a rendered webhook back. + event.put( + "queryStringParameters", + Map.of("__token", agent.createToolToken(execTool, SIMULATED_CALL_ID))); if (verbose) System.err.println("[verbose] Dispatching SWAIG: " + body); LambdaResponse response = handler.handle(event); emitResponse(response); @@ -541,11 +560,16 @@ private void runGcfSimulation(AgentBase agent) throws Exception { String path = route.isEmpty() ? "/" : route; if (execTool != null) { - String body = buildSwaigRequestJson(execTool, params); + String body = buildSwaigRequestJson(execTool, params, SIMULATED_CALL_ID); if (verbose) System.err.println("[verbose] Dispatching SWAIG (gcf): " + body); + String swaigPath = + route + + "/swaig?__token=" + + java.net.URLEncoder.encode( + agent.createToolToken(execTool, SIMULATED_CALL_ID), StandardCharsets.UTF_8); var resp = com.signalwire.sdk.runtime.ServerlessAdapter.handleGcf( - agent, "POST", route + "/swaig", basicAuthHeader(agent), body); + agent, "POST", swaigPath, basicAuthHeader(agent), body); emitBody(resp.status(), resp.body()); return; } @@ -656,12 +680,28 @@ private static Map buildApiGatewayV2Event( } /** - * Build a SWAIG invocation payload. Mirrors the structure the real HTTP server expects and the - * Python simulation produces. + * Build a SWAIG invocation payload in the structure the real HTTP server expects, so a simulated + * invocation exercises the same shape a live one would. */ private static String buildSwaigRequestJson(String tool, Map params) { + return buildSwaigRequestJson(tool, params, null); + } + + /** + * As {@link #buildSwaigRequestJson(String, Map)}, additionally carrying {@code call_id}. + * + *

      A tool declared {@code secure} — the default — is only dispatched when a valid per-call + * {@code __token} accompanies the request, and a token can only be validated against a {@code + * call_id}. The body is where the call identity travels, so a simulated invocation must carry one + * or every secure tool would be unreachable from this CLI. + */ + private static String buildSwaigRequestJson( + String tool, Map params, String callId) { StringBuilder json = new StringBuilder(); json.append("{\"function\":\"").append(escapeJsonStatic(tool)).append("\""); + if (callId != null) { + json.append(",\"call_id\":\"").append(escapeJsonStatic(callId)).append("\""); + } if (!params.isEmpty()) { json.append(",\"argument\":{\"parsed\":[{"); boolean first = true; diff --git a/src/main/java/com/signalwire/sdk/cli/simulation/ServerlessSimulator.java b/src/main/java/com/signalwire/sdk/cli/simulation/ServerlessSimulator.java index c418ec5c..ade6cb5d 100644 --- a/src/main/java/com/signalwire/sdk/cli/simulation/ServerlessSimulator.java +++ b/src/main/java/com/signalwire/sdk/cli/simulation/ServerlessSimulator.java @@ -12,17 +12,16 @@ * Build a layered {@link EnvProvider} that overlays simulated serverless environment values on top * of the real process environment. * - *

      Java cannot mutate {@link System#getenv()} at runtime (the map it returns is an immutable - * snapshot of the OS env). To implement the {@code swaig-test --simulate-serverless} flag in the - * same spirit as Python's {@code mock_env.py}, we therefore cannot "set env vars then clean up" — - * we instead compose an injectable {@link EnvProvider} and thread it through every code path in the - * SDK that reads env vars. + *

      Java cannot mutate {@link System#getenv()} at runtime — the map it returns is an immutable + * snapshot of the OS env. So the {@code swaig-test --simulate-serverless} flag cannot be + * implemented by "set env vars, then clean up"; instead this class composes an injectable {@link + * EnvProvider} that is threaded through every code path in the SDK that reads env vars. * - *

      Accepts only the platforms the port actually implements. Ports that add CGI / GCF / Azure - * support later should extend {@link #presetFor(Platform)}. + *

      Only the platforms listed in {@link Platform} can be simulated. Adding another means extending + * {@link #presetFor(Platform)}. * - *

      Mirrors the clear-and-warn semantics of Python's {@code _clear_conflicting_env}: {@code - * SWML_PROXY_URL_BASE} is masked in the simulated view so that platform-specific URL generation is + *

      Conflicting real-environment values are masked rather than cleared: {@code + * SWML_PROXY_URL_BASE} is hidden in the simulated view so that platform-specific URL generation is * actually exercised. If the caller's real OS env has {@code SWML_PROXY_URL_BASE} set, the * simulator does not mutate the real env — it simply returns {@code null} for that key * through the layered {@link EnvProvider}. Callers that want to surface the mismatch to the user @@ -30,7 +29,7 @@ */ public final class ServerlessSimulator { - /** Platforms the Java port supports simulating today. */ + /** Platforms this SDK supports simulating today. */ public enum Platform { /** AWS Lambda. */ LAMBDA, @@ -67,8 +66,8 @@ public enum Platform { private final Set masked; /** - * Parse the CLI-string form of a platform. Accepts only values this port supports; unknown - * strings throw {@link IllegalArgumentException} so the CLI can surface a clear error instead of + * Parse the CLI-string form of a platform. Accepts only the supported values; an unknown string + * throws {@link IllegalArgumentException} so the CLI can surface a clear error instead of * silently falling back. * * @param s user-supplied platform string. @@ -139,8 +138,8 @@ public ServerlessSimulator( } /** - * Default env-var preset for a platform, mirroring Python's {@code - * ServerlessSimulator.PLATFORM_PRESETS}. + * Default env-var preset for a platform — the values a real deployment on that platform would + * expose, enough for {@code ExecutionMode.detect()} to identify it. * * @param platform platform. * @return the preset map (never null). @@ -195,7 +194,7 @@ public Set getMaskedKeys() { /** * @return {@code true} if the real process env has {@code SWML_PROXY_URL_BASE} set — i.e. the * simulated view is hiding a real value the user might not have intended. The CLI uses this - * to print a warning that mirrors Python's behaviour. + * to print a warning. */ public boolean proxyUrlBaseMaskedFromRealEnv() { String real = realEnv.get("SWML_PROXY_URL_BASE"); diff --git a/src/main/java/com/signalwire/sdk/contexts/Context.java b/src/main/java/com/signalwire/sdk/contexts/Context.java index 7e0bbab1..7766225b 100644 --- a/src/main/java/com/signalwire/sdk/contexts/Context.java +++ b/src/main/java/com/signalwire/sdk/contexts/Context.java @@ -50,6 +50,12 @@ public Context(String name) { this.promptSections = new ArrayList<>(); } + /** + * The context's name — how {@code change_context} and {@link #setValidContexts(List)} refer to + * it. + * + * @return the context name. + */ public String getName() { return name; } @@ -87,10 +93,23 @@ public Step addStep( return step; } + /** + * Look up a step already added to this context. + * + * @param stepName the step name. + * @return the step, or {@code null} when this context has no step by that name. + */ public Step getStep(String stepName) { return steps.get(stepName); } + /** + * Remove a step from this context, dropping it from the flow order too. A name that is not + * present is silently ignored. + * + * @param stepName the step name. + * @return this context, for chaining. + */ public Context removeStep(String stepName) { if (steps.containsKey(stepName)) { steps.remove(stepName); @@ -99,6 +118,15 @@ public Context removeStep(String stepName) { return this; } + /** + * Move an existing step to a new place in the flow order, which is what {@code next_step} + * follows. + * + * @param stepName the step name; must already exist in this context. + * @param position the target index in the flow order. + * @return this context, for chaining. + * @throws IllegalStateException if this context has no step by that name. + */ public Context moveStep(String stepName, int position) { if (!steps.containsKey(stepName)) { throw new IllegalStateException( @@ -128,36 +156,86 @@ String getInitialStep() { return initialStep; } + /** + * Which contexts the model may move to from here. Declaring them is what makes the native {@code + * change_context} tool available — the model cannot leave for a context not listed. + * + * @param contexts the reachable context names. + * @return this context, for chaining. + */ public Context setValidContexts(List contexts) { this.validContexts = contexts; return this; } + /** + * Default set of steps reachable from any step in this context. A step's own {@link + * Step#setValidSteps(List)} overrides it. + * + * @param steps the reachable step names. + * @return this context, for chaining. + */ public Context setValidSteps(List steps) { this.validSteps = steps; return this; } + /** + * Post-prompt used for this context's summary, overriding the agent-level one. + * + * @param postPrompt the post-prompt text. + * @return this context, for chaining. + */ public Context setPostPrompt(String postPrompt) { this.postPrompt = postPrompt; return this; } + /** + * System prompt installed when this context is entered, replacing the agent's for as long as the + * context is active. This is what makes a context a distinct persona rather than a step group. + * + * @param systemPrompt the system prompt. + * @return this context, for chaining. + */ public Context setSystemPrompt(String systemPrompt) { this.systemPrompt = systemPrompt; return this; } + /** + * On entry, summarise the prior conversation into a single message instead of carrying it forward + * in full. Note that configuring a reset this way also SUPPRESSES the history wipe {@link + * #setIsolated(boolean)} would otherwise do. + * + * @param consolidate whether to consolidate history on entry. + * @return this context, for chaining. + */ public Context setConsolidate(boolean consolidate) { this.consolidate = consolidate; return this; } + /** + * On entry, reset the conversation completely rather than continuing it. Like {@link + * #setConsolidate(boolean)}, configuring a reset suppresses the {@link #setIsolated(boolean)} + * wipe in favour of this behaviour. + * + * @param fullReset whether to fully reset on entry. + * @return this context, for chaining. + */ public Context setFullReset(boolean fullReset) { this.fullReset = fullReset; return this; } + /** + * A user-role message injected when this context is entered, seeding the new context with an + * opening turn. + * + * @param userPrompt the user prompt. + * @return this context, for chaining. + */ public Context setUserPrompt(String userPrompt) { this.userPrompt = userPrompt; return this; @@ -187,6 +265,15 @@ public Context setIsolated(boolean isolated) { return this; } + /** + * Set this context's prompt as raw text. Mutually exclusive with the POM section methods — pick + * one shape per context. + * + * @param prompt the raw prompt text. + * @return this context, for chaining. + * @throws IllegalStateException if {@link #addSection(String, String)} or {@link + * #addBullets(String, List)} has already been called on this context. + */ public Context setPrompt(String prompt) { if (!promptSections.isEmpty()) { throw new IllegalStateException("Cannot use setPrompt() when POM sections have been added."); @@ -195,6 +282,15 @@ public Context setPrompt(String prompt) { return this; } + /** + * Append a prose POM section to this context's prompt. Mutually exclusive with {@link + * #setPrompt(String)}. + * + * @param title the section heading. + * @param body the section prose. + * @return this context, for chaining. + * @throws IllegalStateException if {@link #setPrompt(String)} has already been called. + */ public Context addSection(String title, String body) { if (promptText != null) { throw new IllegalStateException("Cannot add POM sections when setPrompt() has been used."); @@ -206,6 +302,15 @@ public Context addSection(String title, String body) { return this; } + /** + * Append a bulleted POM section to this context's prompt. Mutually exclusive with {@link + * #setPrompt(String)}. + * + * @param title the section heading. + * @param bullets the bullet points. + * @return this context, for chaining. + * @throws IllegalStateException if {@link #setPrompt(String)} has already been called. + */ public Context addBullets(String title, List bullets) { if (promptText != null) { throw new IllegalStateException("Cannot add POM sections when setPrompt() has been used."); @@ -217,6 +322,13 @@ public Context addBullets(String title, List bullets) { return this; } + /** + * Replace the phrases spoken on entering this context, keyed by language code, so the transition + * is not silent. A {@code null} map leaves the existing fillers alone rather than clearing them. + * + * @param fillers language code to phrases. + * @return this context, for chaining. + */ public Context setEnterFillers(Map> fillers) { if (fillers != null) { this.enterFillers = new LinkedHashMap<>(fillers); @@ -224,6 +336,13 @@ public Context setEnterFillers(Map> fillers) { return this; } + /** + * Replace the phrases spoken on leaving this context, keyed by language code. A {@code null} map + * leaves the existing fillers alone rather than clearing them. + * + * @param fillers language code to phrases. + * @return this context, for chaining. + */ public Context setExitFillers(Map> fillers) { if (fillers != null) { this.exitFillers = new LinkedHashMap<>(fillers); @@ -231,6 +350,14 @@ public Context setExitFillers(Map> fillers) { return this; } + /** + * Set the entry phrases for one language, leaving other languages untouched. A {@code null} + * language code or phrase list makes the call a no-op. + * + * @param languageCode BCP-47 language code, e.g. {@code "en-US"}. + * @param fillers the phrases for that language. + * @return this context, for chaining. + */ public Context addEnterFiller(String languageCode, List fillers) { if (languageCode != null && fillers != null) { if (enterFillers == null) enterFillers = new LinkedHashMap<>(); @@ -239,6 +366,14 @@ public Context addEnterFiller(String languageCode, List fillers) { return this; } + /** + * Set the exit phrases for one language, leaving other languages untouched. A {@code null} + * language code or phrase list makes the call a no-op. + * + * @param languageCode BCP-47 language code, e.g. {@code "en-US"}. + * @param fillers the phrases for that language. + * @return this context, for chaining. + */ public Context addExitFiller(String languageCode, List fillers) { if (languageCode != null && fillers != null) { if (exitFillers == null) exitFillers = new LinkedHashMap<>(); diff --git a/src/main/java/com/signalwire/sdk/contexts/ContextBuilder.java b/src/main/java/com/signalwire/sdk/contexts/ContextBuilder.java index 988b23b9..3624a74b 100644 --- a/src/main/java/com/signalwire/sdk/contexts/ContextBuilder.java +++ b/src/main/java/com/signalwire/sdk/contexts/ContextBuilder.java @@ -112,6 +112,11 @@ public Context getContext(String name) { return contexts.get(name); } + /** + * Whether any context has been defined yet. An empty builder renders no contexts at all. + * + * @return {@code true} when no contexts have been added. + */ public boolean isEmpty() { return contexts.isEmpty(); } diff --git a/src/main/java/com/signalwire/sdk/contexts/GatherInfo.java b/src/main/java/com/signalwire/sdk/contexts/GatherInfo.java index e0b5c61e..84faf28d 100644 --- a/src/main/java/com/signalwire/sdk/contexts/GatherInfo.java +++ b/src/main/java/com/signalwire/sdk/contexts/GatherInfo.java @@ -52,6 +52,17 @@ public GatherInfo addQuestion( return this; } + /** + * Add a question to gather, without the isolated flag. + * + * @param key the field name the answer is stored under. + * @param question the question put to the caller. + * @param type the expected answer type, e.g. {@code "string"}. + * @param confirm whether to read the answer back for confirmation. + * @param prompt an optional prompt override for this question. + * @param functions tools callable while this question is being answered. + * @return this gather info, for chaining. + */ public GatherInfo addQuestion( String key, String question, @@ -62,14 +73,31 @@ public GatherInfo addQuestion( return addQuestion(key, question, type, confirm, prompt, functions, null); } + /** + * Add a plain string question with no confirmation, prompt override, or per-question tools. + * + * @param key the field name the answer is stored under. + * @param question the question put to the caller. + * @return this gather info, for chaining. + */ public GatherInfo addQuestion(String key, String question) { return addQuestion(key, question, "string", false, null, null, null); } + /** + * The questions to be asked, in order. + * + * @return an unmodifiable view of the questions. + */ public List getQuestions() { return Collections.unmodifiableList(questions); } + /** + * What happens once every question has an answer. + * + * @return the completion action, or {@code null} when none was configured. + */ public String getCompletionAction() { return completionAction; } diff --git a/src/main/java/com/signalwire/sdk/contexts/GatherQuestion.java b/src/main/java/com/signalwire/sdk/contexts/GatherQuestion.java index 482142c0..7c6bb97b 100644 --- a/src/main/java/com/signalwire/sdk/contexts/GatherQuestion.java +++ b/src/main/java/com/signalwire/sdk/contexts/GatherQuestion.java @@ -51,6 +51,11 @@ public GatherQuestion(String key, String question) { this(key, question, "string", false, null, null, null); } + /** + * The field name this question's answer is stored under. + * + * @return the answer key. + */ public String getKey() { return key; } diff --git a/src/main/java/com/signalwire/sdk/contexts/Step.java b/src/main/java/com/signalwire/sdk/contexts/Step.java index 28f88ab7..48af59eb 100644 --- a/src/main/java/com/signalwire/sdk/contexts/Step.java +++ b/src/main/java/com/signalwire/sdk/contexts/Step.java @@ -53,6 +53,11 @@ public Step(String name) { this.sections = new ArrayList<>(); } + /** + * The step's name — how {@code next_step} and {@link #setValidSteps(List)} refer to it. + * + * @return the step name. + */ public String getName() { return name; } @@ -93,6 +98,13 @@ public Step addBullets(String title, List bullets) { return this; } + /** + * The condition, in prose the model evaluates, for considering this step finished and moving on. + * Without it the model has no stated bar for advancing. + * + * @param criteria the completion criteria. + * @return this step, for chaining. + */ public Step setStepCriteria(String criteria) { this.stepCriteria = criteria; return this; @@ -135,11 +147,26 @@ public Step setFunctions(Object functions) { return this; } + /** + * Which steps the model may move to from here, which is what makes the native {@code next_step} + * tool available. Overrides the context-level default set by {@link + * com.signalwire.sdk.contexts.Context#setValidSteps(List)}. + * + * @param steps the reachable step names. + * @return this step, for chaining. + */ public Step setValidSteps(List steps) { this.validSteps = steps; return this; } + /** + * Which contexts the model may move to from this step, making the native {@code change_context} + * tool available. Overrides the context-level default. + * + * @param contexts the reachable context names. + * @return this step, for chaining. + */ public Step setValidContexts(List contexts) { this.validContexts = contexts; return this; @@ -164,11 +191,26 @@ public Step setEnd(boolean end) { return this; } + /** + * Have the agent go straight on without waiting for the caller to speak after this step's + * instructions. Use it for a step whose whole job is to say something before the next one asks a + * question. + * + * @param skip whether to skip the user's turn. + * @return this step, for chaining. + */ public Step setSkipUserTurn(boolean skip) { this.skipUserTurn = skip; return this; } + /** + * Advance to the next step automatically once this one's work is done, without waiting for the + * model to call {@code next_step}. + * + * @param skip whether to advance automatically. + * @return this step, for chaining. + */ public Step setSkipToNextStep(boolean skip) { this.skipToNextStep = skip; return this; @@ -223,6 +265,30 @@ public Step setGatherInfo(String outputKey, String completionAction, String prom return setGatherInfo(outputKey, completionAction, prompt, false); } + /** + * Enable info gathering with every param at its default ({@code output_key=null}, {@code + * completion_action=null}, {@code prompt=null}, {@code isolated=false}). + */ + public Step setGatherInfo() { + return setGatherInfo(null, null, null, false); + } + + /** + * Enable info gathering supplying {@code output_key}, with {@code completion_action=null}, {@code + * prompt=null}, {@code isolated=false}. + */ + public Step setGatherInfo(String outputKey) { + return setGatherInfo(outputKey, null, null, false); + } + + /** + * Enable info gathering supplying {@code output_key} and {@code completion_action}, with {@code + * prompt=null}, {@code isolated=false}. + */ + public Step setGatherInfo(String outputKey, String completionAction) { + return setGatherInfo(outputKey, completionAction, null, false); + } + /** * Add a question to this step's gather_info configuration. {@link #setGatherInfo(String, String, * String)} must be called first. @@ -259,6 +325,18 @@ public Step addGatherQuestion( return this; } + /** + * Add a question to this step's gather flow, without the isolated flag. + * + * @param key the field name the answer is stored under. + * @param question the question put to the caller. + * @param type the expected answer type, e.g. {@code "string"}. + * @param confirm whether to read the answer back for confirmation. + * @param prompt an optional prompt override for this question. + * @param functions tools callable while this question is being answered. + * @return this step, for chaining. + * @throws IllegalStateException if {@code setGatherInfo()} has not been called first. + */ public Step addGatherQuestion( String key, String question, @@ -269,31 +347,73 @@ public Step addGatherQuestion( return addGatherQuestion(key, question, type, confirm, prompt, functions, null); } + /** + * Add a plain string question to this step's gather flow, with no confirmation, no prompt + * override, and no per-question tools. + * + * @param key the field name the answer is stored under. + * @param question the question put to the caller. + * @return this step, for chaining. + * @throws IllegalStateException if {@code setGatherInfo()} has not been called first. + */ public Step addGatherQuestion(String key, String question) { return addGatherQuestion(key, question, "string", false, null, null, null); } + /** + * Drop this step's prompt entirely — both the POM sections and any raw text — returning it to a + * blank slate so either shape can then be used. + * + * @return this step, for chaining. + */ public Step clearSections() { sections.clear(); text = null; return this; } + /** + * System prompt to install when a context switch is triggered FROM this step, so a step can hand + * off to a different persona. + * + * @param systemPrompt the replacement system prompt. + * @return this step, for chaining. + */ public Step setResetSystemPrompt(String systemPrompt) { this.resetSystemPrompt = systemPrompt; return this; } + /** + * User-role message to inject when a context switch is triggered from this step. + * + * @param userPrompt the user prompt. + * @return this step, for chaining. + */ public Step setResetUserPrompt(String userPrompt) { this.resetUserPrompt = userPrompt; return this; } + /** + * On a context switch from this step, summarise the prior conversation into a single message + * rather than carrying it forward in full. + * + * @param consolidate whether to consolidate history. + * @return this step, for chaining. + */ public Step setResetConsolidate(boolean consolidate) { this.resetConsolidate = consolidate; return this; } + /** + * On a context switch from this step, reset the conversation completely rather than continuing + * it. + * + * @param fullReset whether to fully reset. + * @return this step, for chaining. + */ public Step setResetFullReset(boolean fullReset) { this.resetFullReset = fullReset; return this; diff --git a/src/main/java/com/signalwire/sdk/core/AuthHandler.java b/src/main/java/com/signalwire/sdk/core/AuthHandler.java index 55d773ce..27a2a727 100644 --- a/src/main/java/com/signalwire/sdk/core/AuthHandler.java +++ b/src/main/java/com/signalwire/sdk/core/AuthHandler.java @@ -18,16 +18,15 @@ /** * Unified authentication handler supporting multiple auth methods. * - *

      Java port of the Python reference {@code signalwire.core.auth_handler.AuthHandler}. Provides a - * clean pattern for Basic Auth, Bearer tokens, and API keys across all SignalWire services. All - * credential comparisons are timing-safe ({@link MessageDigest#isEqual}). + *

      Provides a clean pattern for Basic Auth, Bearer tokens, and API keys across all SignalWire + * services. All credential comparisons are timing-safe ({@link MessageDigest#isEqual}). * - *

      Idiom note: Python's {@code flask_decorator} / {@code get_fastapi_dependency} are - * framework-bound (Flask / FastAPI). Java has neither; the native equivalents here are (a) {@link - * #flaskDecorator(RequestHandler)} -- a middleware wrapping a handler so unauthenticated requests - * get a 401 -- and (b) {@link #getFastapiDependency(boolean)} -- a {@link Function} taking a - * request header map and returning an {@link AuthResult}. A "request" is modelled - * framework-neutrally as a {@code Map} of header name (case-insensitive) to value. + *

      Two integration shapes are offered, and neither binds a web framework: (a) {@link + * #flaskDecorator(RequestHandler)} — a middleware wrapping a handler so unauthenticated requests + * get a 401 — and (b) {@link #getFastapiDependency(boolean)} — a {@link Function} taking a request + * header map and returning an {@link AuthResult}. A "request" is modelled framework-neutrally as a + * {@code Map} of header name (case-insensitive) to value, so either shape can be + * adapted to whatever HTTP layer the application already uses. */ public class AuthHandler { @@ -40,8 +39,14 @@ public interface RequestHandler { /** Basic-auth credential carrier: a decoded username/password pair. */ public record BasicCredentials(String username, String password) {} - /** Bearer-token credential carrier: the raw token string. */ - public record BearerCredentials(String credentials) {} + /** + * Bearer-token credential carrier: the authorization scheme as sent on the wire plus the raw + * credential following it. + * + *

      Both fields are contract. Carrying only the token would drop half of it, leaving a caller + * unable to tell {@code Bearer} from any other scheme the client had sent. + */ + public record BearerCredentials(String scheme, String credentials) {} /** Result of the {@link #getFastapiDependency(boolean)} callable. */ public record AuthResult(boolean authenticated, String method) {} @@ -59,6 +64,11 @@ public AuthException(Response response) { this.response = response; } + /** + * The response this handler produced — the status and any headers to send back. + * + * @return the response. + */ public Response getResponse() { return response; } @@ -74,6 +84,11 @@ public AuthHandler(SecurityConfig securityConfig) { setupAuthMethods(); } + /** + * The security configuration this handler authenticates against. + * + * @return the security config. + */ public SecurityConfig getSecurityConfig() { return securityConfig; } @@ -107,10 +122,9 @@ public boolean verifyApiKey(String apiKey) { } /** - * Native equivalent of Python's FastAPI dependency. Returns a callable taking a request header - * map and returning an {@link AuthResult}. When {@code optional} is false and authentication - * fails, the callable throws {@link AuthException}; when true it returns the (unauthenticated) - * result. + * Authentication as an injectable dependency. Returns a callable taking a request header map and + * returning an {@link AuthResult}. When {@code optional} is false and authentication fails, the + * callable throws {@link AuthException}; when true it returns the (unauthenticated) result. */ public Function, AuthResult> getFastapiDependency(boolean optional) { return headers -> { @@ -129,9 +143,9 @@ public Function, AuthResult> getFastapiDependency() { } /** - * Native equivalent of Python's Flask decorator. Given a downstream {@link RequestHandler}, - * returns a wrapping handler that enforces authentication: authenticated requests pass through, - * others get an HTTP 401 with a WWW-Authenticate challenge. + * Authentication as request middleware. Given a downstream {@link RequestHandler}, returns a + * wrapping handler that enforces authentication: authenticated requests pass through, others get + * an HTTP 401 with a WWW-Authenticate challenge. */ public RequestHandler flaskDecorator(RequestHandler app) { return headers -> { @@ -241,10 +255,18 @@ private boolean bearerOk(Map headers) { return false; } String header = str(header(headers, "Authorization")); - if (!header.startsWith("Bearer ")) { + // RFC 7235: the scheme token is case-INSENSITIVE. FastAPI's HTTPBearer, which the + // reference delegates to, lowercases the scheme before comparing; a case-sensitive + // startsWith("Bearer ") rejected a conforming `bearer ` / `BEARER `. + int sp = header.indexOf(' '); + if (sp < 0) { + return false; + } + String scheme = header.substring(0, sp); + if (!"Bearer".equalsIgnoreCase(scheme)) { return false; } - return verifyBearerToken(new BearerCredentials(header.substring(7))); + return verifyBearerToken(new BearerCredentials(scheme, header.substring(sp + 1))); } private boolean apiKeyOk(Map headers) { diff --git a/src/main/java/com/signalwire/sdk/core/ConfigLoader.java b/src/main/java/com/signalwire/sdk/core/ConfigLoader.java index 85634f05..30a7bf89 100644 --- a/src/main/java/com/signalwire/sdk/core/ConfigLoader.java +++ b/src/main/java/com/signalwire/sdk/core/ConfigLoader.java @@ -27,13 +27,11 @@ /** * Configuration loader with environment variable substitution. * - *

      Java port of the Python reference {@code signalwire.core.config_loader.ConfigLoader}. Supports - * {@code ${VAR|default}} syntax for referencing environment variables within JSON (or YAML) - * configuration files. The first existing, parseable file in the search paths wins. + *

      Supports {@code ${VAR|default}} syntax for referencing environment variables within JSON (or + * YAML) configuration files. The first existing, parseable file in the search paths wins. * - *

      Idiom mapping: JSON is parsed with Gson and YAML with SnakeYAML (both already repo - * dependencies). After substitution, string values that look like booleans/integers/floats are - * coerced to those native types. + *

      JSON is parsed with Gson and YAML with SnakeYAML. After substitution, string values that look + * like booleans/integers/floats are coerced to those native types. */ public class ConfigLoader { @@ -96,9 +94,10 @@ public String getConfigFile() { } /** - * The config search paths (the {@code config_paths} construction param), resolved to the default - * search list when the caller passed {@code null}. The reference exposes this as a public - * attribute ({@code self.config_paths}, config_loader.py:37). + * The config search paths (the {@code configPaths} construction param), resolved to the default + * search list when the caller passed {@code null}. + * + * @return an unmodifiable view of the resolved search paths. */ public List getConfigPaths() { return Collections.unmodifiableList(configPaths); @@ -156,7 +155,9 @@ public Object get(String keyPath, Object defaultValue) { return defaultValue; } Object value = config; - for (String key : keyPath.split("\\.")) { + // limit 0 == drop trailing empties, matching the historical behaviour: a + // dotted path ending in "." walks no extra (empty) key. + for (String key : keyPath.split("\\.", 0)) { if (value instanceof Map && ((Map) value).containsKey(key)) { value = ((Map) value).get(key); } else { @@ -329,7 +330,10 @@ private Object coerceScalar(String result) { private boolean hasNestedKey(Map data, String keyPath) { Object current = data; - for (String key : keyPath.split("_")) { + // limit 0 == the historical single-arg split(): trailing empty segments are + // DROPPED. Stated explicitly because setNestedKey below indexes the last + // element, so whether "a_b_" ends at "b" or at "" is load-bearing. + for (String key : keyPath.split("_", 0)) { if (current instanceof Map && ((Map) current).containsKey(key)) { current = ((Map) current).get(key); } else { @@ -341,7 +345,10 @@ private boolean hasNestedKey(Map data, String keyPath) { @SuppressWarnings("unchecked") private void setNestedKey(Map data, String keyPath, Object value) { - String[] keys = keyPath.split("_"); + // limit 0 == the historical single-arg split(): trailing empty segments are + // DROPPED. Load-bearing here because the last element is the key written to, + // so a "SWML_FOO_" env var must still target "foo", not "". + String[] keys = keyPath.split("_", 0); Map current = data; for (int i = 0; i < keys.length - 1; i++) { Object next = current.get(keys[i]); diff --git a/src/main/java/com/signalwire/sdk/core/PomBuilder.java b/src/main/java/com/signalwire/sdk/core/PomBuilder.java index a730aa93..b090fa45 100644 --- a/src/main/java/com/signalwire/sdk/core/PomBuilder.java +++ b/src/main/java/com/signalwire/sdk/core/PomBuilder.java @@ -16,10 +16,10 @@ /** * Builder for creating structured prompts using the Prompt Object Model. * - *

      Java port of the Python reference {@code signalwire.core.pom_builder.PomBuilder}. A flexible - * wrapper around {@link PromptObjectModel} that allows dynamic creation of sections on demand, - * adding content to existing sections, nesting subsections, and rendering to Markdown or XML. There - * are no predefined section types. All mutator methods return {@code this} for fluent chaining. + *

      A flexible wrapper around {@link PromptObjectModel} that allows dynamic creation of sections + * on demand, adding content to existing sections, nesting subsections, and rendering to Markdown or + * XML. There are no predefined section types. All mutator methods return {@code this} for fluent + * chaining. */ public class PomBuilder { @@ -31,6 +31,11 @@ public PomBuilder() { this.pom = new PromptObjectModel(); } + /** + * The Prompt Object Model built so far. + * + * @return the POM. + */ public PromptObjectModel getPom() { return pom; } @@ -99,6 +104,24 @@ public PomBuilder addSection(String title, String body, List bullets) { return addSection(title, body, bullets, null, false, null); } + /** + * Add content to a section with no body and no bullets — creates the section if it does not yet + * exist, and otherwise leaves it unchanged. + */ + public PomBuilder addToSection(String title) { + return addToSection(title, null, null, null); + } + + /** Add content to a section supplying only {@code body}; no bullets are appended. */ + public PomBuilder addToSection(String title, String body) { + return addToSection(title, body, null, null); + } + + /** Add content to a section supplying {@code body} and a single {@code bullet}. */ + public PomBuilder addToSection(String title, String body, String bullet) { + return addToSection(title, body, bullet, null); + } + /** * Add content to an existing section, creating it if it doesn't exist (auto-vivification). * @@ -178,9 +201,7 @@ public String toJson() { return pom.toJson(); } - /** - * Create a {@link PomBuilder} from a list of section maps. Mirrors Python {@code from_sections}. - */ + /** Create a {@link PomBuilder} from a list of section maps. */ public static PomBuilder fromSections(List> sections) { PomBuilder builder = new PomBuilder(); builder.pom = PromptObjectModel.fromJsonMap(sections); diff --git a/src/main/java/com/signalwire/sdk/core/SecurityConfig.java b/src/main/java/com/signalwire/sdk/core/SecurityConfig.java index b84f7bcd..48a11f73 100644 --- a/src/main/java/com/signalwire/sdk/core/SecurityConfig.java +++ b/src/main/java/com/signalwire/sdk/core/SecurityConfig.java @@ -20,11 +20,10 @@ /** * Unified security configuration for SignalWire services. * - *

      Java port of the Python reference {@code signalwire.core.security_config.SecurityConfig}. - * Provides centralized security settings (SSL, allowed hosts, CORS, security headers, basic auth) - * consumed by the web/agent services, ensuring consistent behavior. Defaults are applied first, - * then environment variables (backward compatibility), then a config file if available (highest - * priority). + *

      Provides centralized security settings (SSL, allowed hosts, CORS, security headers, basic + * auth) consumed by the web/agent services, ensuring consistent behavior. Defaults are applied + * first, then environment variables (backward compatibility), then a config file if available + * (highest priority). */ public class SecurityConfig { @@ -225,58 +224,146 @@ public void logConfig(String serviceName) { // Accessors. // ------------------------------------------------------------------ + /** + * Whether the service terminates TLS itself. Defaults to {@code false}; set by {@code + * SWML_SSL_ENABLED} (accepting {@code true}, {@code 1}, or {@code yes}) or the config file. Off + * means the service speaks plain HTTP and something in front of it must provide TLS. + * + * @return whether SSL is enabled. + */ public boolean isSslEnabled() { return sslEnabled; } + /** + * Filesystem path to the TLS certificate ({@code SWML_SSL_CERT_PATH}). Required when SSL is + * enabled; {@code validateSslConfig()} reports its absence. + * + * @return the certificate path, or {@code null} when unset. + */ public String getSslCertPath() { return sslCertPath; } + /** + * Filesystem path to the TLS private key ({@code SWML_SSL_KEY_PATH}). Required when SSL is + * enabled. Protect this file — it is the service's private key. + * + * @return the key path, or {@code null} when unset. + */ public String getSslKeyPath() { return sslKeyPath; } + /** + * The domain the certificate is issued for ({@code SWML_DOMAIN}). + * + * @return the domain, or {@code null} when unset. + */ public String getDomain() { return domain; } + /** + * Peer-certificate verification mode, defaulting to {@code CERT_REQUIRED} ({@code + * SWML_SSL_VERIFY_MODE}). Weakening it disables the check that the peer is who it claims to be. + * + * @return the verify mode. + */ public String getSslVerifyMode() { return sslVerifyMode; } + /** + * Hostnames the service will answer for ({@code SWML_ALLOWED_HOSTS}, comma-separated). + * + *

      Defaults to {@code ["*"]} — every host — which leaves the service open to Host-header abuse. + * Narrow it to the hostnames actually in use for anything reachable from the internet. + * + * @return the allowed hosts. + */ public List getAllowedHosts() { return allowedHosts; } + /** + * Origins permitted by CORS ({@code SWML_CORS_ORIGINS}, comma-separated). + * + *

      Defaults to {@code ["*"]} — every origin — so any website may script requests to this + * service from a visitor's browser. Narrow it for anything serving authenticated endpoints. + * + * @return the allowed origins. + */ public List getCorsOrigins() { return corsOrigins; } + /** + * Largest request body accepted, in bytes ({@code SWML_MAX_REQUEST_SIZE}); defaults to 10 MiB. + * The cap is what keeps an oversized body from being buffered. + * + * @return the maximum request size in bytes. + */ public long getMaxRequestSize() { return maxRequestSize; } + /** + * Requests permitted per minute ({@code SWML_RATE_LIMIT}); defaults to 60. + * + * @return the rate limit. + */ public int getRateLimit() { return rateLimit; } + /** + * How long a request may take before it is abandoned, in seconds ({@code SWML_REQUEST_TIMEOUT}); + * defaults to 30. + * + * @return the request timeout in seconds. + */ public int getRequestTimeout() { return requestTimeout; } + /** + * Whether responses carry {@code Strict-Transport-Security} ({@code SWML_USE_HSTS}); defaults to + * {@code true}. Only meaningful once the service is genuinely reachable over HTTPS — a browser + * that honours the header will refuse plain HTTP to this host for {@link #getHstsMaxAge()} + * seconds. + * + * @return whether HSTS is sent. + */ public boolean isUseHsts() { return useHsts; } + /** + * How long, in seconds, a browser should remember the HSTS policy ({@code SWML_HSTS_MAX_AGE}); + * defaults to 31536000 (one year). + * + * @return the HSTS max-age in seconds. + */ public long getHstsMaxAge() { return hstsMaxAge; } + /** + * Basic-auth username the service requires ({@code SWML_BASIC_AUTH_USER}). + * + * @return the username, or {@code null} when unset. + */ public String getBasicAuthUser() { return basicAuthUser; } + /** + * Basic-auth password the service requires ({@code SWML_BASIC_AUTH_PASSWORD}) — the plaintext + * credential, so keep it out of logs and error responses. + * + * @return the password, or {@code null} when unset. + */ public String getBasicAuthPassword() { return basicAuthPassword; } @@ -414,7 +501,9 @@ private List parseList(String value) { return star; } List out = new ArrayList<>(); - for (String part : value.split(",")) { + // limit 0 == drop trailing empties; a trailing "," adds no entry, and the + // blank-trim guard below discards empties regardless. + for (String part : value.split(",", 0)) { String trimmed = part.trim(); if (!trimmed.isEmpty()) { out.add(trimmed); diff --git a/src/main/java/com/signalwire/sdk/core/agent/prompt/PromptManager.java b/src/main/java/com/signalwire/sdk/core/agent/prompt/PromptManager.java index 26931cbe..3daf38a6 100644 --- a/src/main/java/com/signalwire/sdk/core/agent/prompt/PromptManager.java +++ b/src/main/java/com/signalwire/sdk/core/agent/prompt/PromptManager.java @@ -16,10 +16,8 @@ /** * Manages prompt building and configuration for an agent. * - *

      Mirrors Python's {@code signalwire.core.agent.prompt.manager.PromptManager} and the Ruby - * {@code SignalWire::Core::Agent::Prompt::PromptManager}. It manages a POM-backed prompt (via - * {@link PromptObjectModel}), an optional raw prompt text, a post-prompt, and a contexts - * configuration (via {@link ContextBuilder}). + *

      It manages a POM-backed prompt (via {@link PromptObjectModel}), an optional raw prompt text, a + * post-prompt, and a contexts configuration (via {@link ContextBuilder}). * *

      The prompt has two mutually exclusive modes: raw text ({@link #setPromptText}) OR POM sections * (the {@code promptAdd*} methods). Mixing the two throws. Contexts, when defined, take precedence @@ -52,7 +50,9 @@ public PromptManager(Object agent) { /** * The agent this manager belongs to (the {@code agent} construction param), or {@code null} for - * standalone use. The reference keeps it as a public back reference ({@code self.agent}). + * standalone use. It is a plain back-reference: the manager never calls into it. + * + * @return the parent agent, or {@code null}. */ public Object getAgent() { return agent; @@ -90,8 +90,8 @@ public PromptManager setPostPrompt(String text) { } /** - * Set the prompt from a POM array (list of section maps). Mirrors Python's {@code - * set_prompt_pom(pom)}. + * Set the prompt from a POM array (list of section maps). This REPLACES the whole POM and clears + * any raw prompt text previously set via {@link #setPromptText}. * * @param pomList POM section descriptors * @return this @@ -103,12 +103,12 @@ public PromptManager setPromptPom(List> pomList) { } /** - * Add a section to the prompt. Mirrors Python's {@code prompt_add_section(title, body="", - * bullets=None, numbered=False, numbered_bullets=False, subsections=None)}. + * Add a section to the prompt. A {@code null} {@code body} or {@code bullets} is treated as + * empty. * * @param title section title - * @param body optional body text - * @param bullets optional bullet points + * @param body optional body text ({@code null} means empty) + * @param bullets optional bullet points ({@code null} means none) * @param numbered number this section * @param numberedBullets number the bullets * @param subsections optional subsection maps @@ -139,8 +139,8 @@ public PromptManager promptAddSection(String title, String body) { } /** - * Add content to an existing section (creating it if needed). Mirrors Python's {@code - * prompt_add_to_section(title, body=None, bullet=None, bullets=None)}. + * Add content to an existing section, creating an empty one first if no section carries that + * title. * * @param title section title * @param body text to append to the section body (may be {@code null}) @@ -157,8 +157,8 @@ public PromptManager promptAddToSection( } /** - * Add a subsection to an existing section (creating the parent if needed). Mirrors Python's - * {@code prompt_add_subsection(parent_title, title, body="", bullets=None)}. + * Add a subsection to an existing section, creating an empty parent first if no section carries + * {@code parentTitle}. * * @param parentTitle parent section title * @param title subsection title @@ -189,8 +189,8 @@ public boolean promptHasSection(String title) { } /** - * Define contexts for the agent. Mirrors Python's {@code define_contexts(contexts)} which accepts - * a {@link ContextBuilder} (materialised via {@code toMap}) or a raw Map. + * Define contexts for the agent. Accepts either a {@link ContextBuilder} (materialised via {@code + * toMap}) or an already-built raw {@code Map}. * * @param contexts a {@link ContextBuilder} or a {@code Map} * @return this diff --git a/src/main/java/com/signalwire/sdk/core/agent/tools/ToolRegistry.java b/src/main/java/com/signalwire/sdk/core/agent/tools/ToolRegistry.java index d9bf5359..88fb1ff3 100644 --- a/src/main/java/com/signalwire/sdk/core/agent/tools/ToolRegistry.java +++ b/src/main/java/com/signalwire/sdk/core/agent/tools/ToolRegistry.java @@ -19,9 +19,7 @@ /** * Manages SWAIG function registration. * - *

      Mirrors Python's {@code signalwire.core.agent.tools.registry.ToolRegistry} and the Ruby {@code - * SignalWire::Core::Agent::Tools::ToolRegistry}. A registry holds SWAIG function definitions keyed - * by name. Two kinds of entries are supported: + *

      A registry holds SWAIG function definitions keyed by name. Two kinds of entries are supported: * *

        *
      • definitions created via {@link #defineTool} (carry a {@code handler}), and @@ -29,8 +27,8 @@ * {@code toSwaigFunction}) which execute on SignalWire's server and carry no handler. *
      * - *

      Like the Ruby port, the registry stores the built definition Map with string keys, matching - * the wire shape (the Java SDK's AgentBase also stores plain Maps on the wire). + *

      The registry stores each built definition as a string-keyed {@code Map}, which is the shape + * that goes on the wire — so no conversion step sits between what is registered and what is sent. */ public class ToolRegistry { @@ -46,8 +44,8 @@ public ToolRegistry() { } /** - * @param agent optional parent agent instance (kept as a back-reference for parity with the - * Python/Ruby registries; may be {@code null} for standalone use). + * @param agent optional parent agent instance, kept as a back-reference so registered tools can + * reach the agent that owns them; may be {@code null} for standalone use. */ public ToolRegistry(Object agent) { this.agent = agent; @@ -55,7 +53,7 @@ public ToolRegistry(Object agent) { /** * The agent this registry belongs to (the {@code agent} construction param), or {@code null} for - * standalone use. The reference keeps it as a public back reference ({@code self.agent}). + * standalone use. */ public Object getAgent() { return agent; @@ -64,9 +62,9 @@ public Object getAgent() { /** * Define a SWAIG function that the AI can call. * - *

      Python parity: {@code define_tool(name, description, parameters, handler, secure=True, - * fillers=None, wait_file=None, wait_file_loops=None, webhook_url=None, required=None, - * is_typed_handler=False, **swaig_fields)}. + *

      Accepts the tool's name, description, parameter schema and handler, plus the optional {@code + * secure}, {@code fillers}, {@code waitFile}, {@code waitFileLoops}, {@code webhookUrl}, {@code + * required}, {@code isTypedHandler} settings and any extra SWAIG fields. * * @param name function name (must be unique) * @param description LLM-facing description @@ -119,7 +117,7 @@ public Map defineTool( } /** - * Convenience overload with Python defaults ({@code secure=true}, all optionals {@code null}). + * Convenience overload using the defaults: {@code secure=true} and all optionals {@code null}. */ public Map defineTool( String name, String description, Map parameters, Object handler) { @@ -130,9 +128,8 @@ public Map defineTool( /** * Register a raw SWAIG function dictionary (e.g. from a DataMap's {@code toSwaigFunction}). * - *

      Python parity: {@code register_swaig_function(function_dict)} — requires a {@code function} - * field and rejects duplicates. These entries carry no handler (they execute on SignalWire's - * server). + *

      Requires a {@code function} field and rejects duplicates. These entries carry no handler — + * they execute on SignalWire's server. * * @param functionDict complete SWAIG function definition * @return the stored definition @@ -157,17 +154,13 @@ public Map registerSwaigFunction(Map functionDic /** * Register tools defined via method annotations on the parent agent's class. * - *

      Python parity: {@code register_class_decorated_tools()} scans the agent class for methods - * decorated with {@code @AgentBase.tool} (marked with {@code _is_tool}) and registers each one. - * Java has no method-decorator mechanism that mutates a function object, so the closest faithful - * analog is a reflective scan of the parent agent's class for methods annotated with {@link - * Tool}: for each such method, a tool is registered whose name/description come from the - * annotation (falling back to the method name) and whose handler invokes the method reflectively. + *

      Reflectively scans the parent agent's class for methods annotated with {@link Tool}. For + * each such method a tool is registered whose name and description come from the annotation + * (falling back to the method name) and whose handler invokes the method reflectively. * - *

      Agents built imperatively via {@link #defineTool} (the common Java idiom, since the Java SDK - * has no class-decorator tool-definition style) declare no {@link Tool}-annotated methods, so - * this is a no-op for them — mirroring a Python class with no {@code _is_tool} methods. If there - * is no parent agent, nothing is scanned. + *

      Agents built imperatively via {@link #defineTool} — the common Java idiom — declare no + * {@link Tool}-annotated methods, so this is a no-op for them. If there is no parent agent, + * nothing is scanned. */ public void registerClassDecoratedTools() { if (agent == null) { @@ -335,9 +328,9 @@ private Map objectSchema(Map parameters) { } /** - * Marker annotation — the Java analog of Python's {@code @AgentBase.tool} decorator. Annotate a - * public method on an agent subclass so {@link #registerClassDecoratedTools()} auto-registers it. - * The method must accept {@code (Map args, Map rawData)}. + * Marker annotation for declaring a tool on the agent class itself. Annotate a public method on + * an agent subclass so {@link #registerClassDecoratedTools()} auto-registers it. The method must + * accept {@code (Map args, Map rawData)}. */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) diff --git a/src/main/java/com/signalwire/sdk/core/agent/tools/TypeInference.java b/src/main/java/com/signalwire/sdk/core/agent/tools/TypeInference.java index 967dbd97..9d901e27 100644 --- a/src/main/java/com/signalwire/sdk/core/agent/tools/TypeInference.java +++ b/src/main/java/com/signalwire/sdk/core/agent/tools/TypeInference.java @@ -15,29 +15,14 @@ /** * Typed-handler schema inference and typed-handler wrapping for SWAIG tools. * - *

      Parity with the Python reference module {@code signalwire.core.agent.tools.type_inference} - * ({@code infer_schema} / {@code create_typed_handler_wrapper}). Where Python inspects a handler's - * {@code inspect.signature} + type hints at runtime (and Ruby/.NET reflect the delegate's parameter - * list), Java erases lambda parameter names and types at runtime, so the typed-parameter contract - * is supplied EXPLICITLY via the {@link com.signalwire.sdk.swaig.ParameterSchema} typed-params - * builder — the idiomatic "typed tool" declaration in this port. {@link #inferSchema} decomposes - * that built schema into the same {@code (parameters, required, description, isTyped, hasRawData)} - * tuple Python's {@code infer_schema} returns; the schema is BUILT from the typed params-builder - * rather than reflected off the callable, which is the static-port idiom (mirrors .NET/Ruby taking - * a {@code types} override map and building from it). + *

      Java erases lambda parameter names and types at runtime, so a typed tool's parameter contract + * cannot be reflected off the handler itself. It is instead supplied EXPLICITLY via the {@link + * com.signalwire.sdk.swaig.ParameterSchema} typed-params builder — the idiomatic way to declare a + * typed tool in this SDK. {@link #inferSchema} decomposes that built schema into its {@code + * (parameters, required, description, isTyped, hasRawData)} components. * - *

      Java has no module-level free functions; the two capabilities are hosted as static methods - * here and projected onto the Python module-level names - * - *

        - *
      • {@code signalwire.core.agent.tools.type_inference.infer_schema} - *
      • {@code signalwire.core.agent.tools.type_inference.create_typed_handler_wrapper} - *
      - * - * via {@code scripts/enumerate_signatures.py} FREE_FUNCTION_PROJECTIONS (mirrors the {@code - * url_validator.validate_url} / {@code security_utils} host precedent). The reflected native - * signatures (a {@code ParameterSchema}/{@code ToolHandler} in, a record out) are recorded as the - * canonical oracle shapes via FREE_FUNCTION_SIGNATURE_OVERRIDES. + *

      Both capabilities are exposed as static methods on this final utility class; it is never + * instantiated. */ public final class TypeInference { @@ -47,7 +32,7 @@ private TypeInference() { /** * The inferred-schema tuple returned by {@link #inferSchema}: {@code (parameters, required, - * description, isTyped, hasRawData)}. Mirrors Python's {@code infer_schema} return contract. + * description, isTyped, hasRawData)}. * * @param parameters name → JSON-Schema property map (string keys, per-property {type, * description, …} maps). @@ -70,10 +55,10 @@ public record InferredSchema( * com.signalwire.sdk.swaig.ParameterSchema} Map — the {@code {type, properties[, required]}} * envelope — from which the per-parameter property maps and the required list are read. * - *

      Parity with Python's {@code infer_schema}: an empty/absent schema is a valid zero-param - * typed tool ({@code isTyped=true}, no parameters); a schema with properties is typed and its - * property maps + required list are surfaced. A {@code raw_data} property is treated as the SWAIG - * raw-payload channel, excluded from the schema, and flagged in {@code hasRawData}. + *

      An empty or absent schema is a valid zero-param typed tool ({@code isTyped=true}, no + * parameters); a schema with properties is typed and its property maps and required list are + * surfaced. A {@code raw_data} property is treated as the SWAIG raw-payload channel, excluded + * from the schema, and flagged in {@code hasRawData}. * * @param schema the built ParameterSchema envelope, or {@code null} for a zero-param typed tool. * @param description the tool description (or {@code null}). @@ -127,9 +112,9 @@ public static InferredSchema inferSchema(Map schema, String desc /** * Wrap a typed handler so it can be invoked with the standard SWAIG calling convention {@code - * (args, rawData)}. Mirrors Python's {@code create_typed_handler_wrapper}: the wrapper passes the - * raw SWAIG payload to the wrapped handler only when it declared it ({@code hasRawData}), - * otherwise it is dropped (the wrapped handler sees {@code null} raw data). + * (args, rawData)}. The wrapper passes the raw SWAIG payload to the wrapped handler only when it + * declared it ({@code hasRawData}), otherwise it is dropped (the wrapped handler sees {@code + * null} raw data). * * @param func the typed handler. * @param hasRawData pass the raw SWAIG payload through when {@code true}. diff --git a/src/main/java/com/signalwire/sdk/datamap/DataMap.java b/src/main/java/com/signalwire/sdk/datamap/DataMap.java index 6e9d6dc2..805e68df 100644 --- a/src/main/java/com/signalwire/sdk/datamap/DataMap.java +++ b/src/main/java/com/signalwire/sdk/datamap/DataMap.java @@ -39,6 +39,11 @@ public DataMap(String functionName) { this.topLevelErrorKeys = new ArrayList<>(); } + /** + * The tool name this DataMap registers as — what the model calls it by. + * + * @return the function name. + */ public String getName() { return functionName; } @@ -114,10 +119,27 @@ public DataMap parameter( return this; } + /** + * Declare a tool parameter with no enum restriction. + * + * @param name the parameter name. + * @param paramType the JSON-schema type, e.g. {@code "string"}. + * @param description LLM-facing description the model fills this argument from. + * @param required whether the model must supply it. + * @return this DataMap, for chaining. + */ public DataMap parameter(String name, String paramType, String description, boolean required) { return parameter(name, paramType, description, required, null); } + /** + * Declare an OPTIONAL tool parameter with no enum restriction. + * + * @param name the parameter name. + * @param paramType the JSON-schema type, e.g. {@code "string"}. + * @param description LLM-facing description the model fills this argument from. + * @return this DataMap, for chaining. + */ public DataMap parameter(String name, String paramType, String description) { return parameter(name, paramType, description, false, null); } @@ -136,6 +158,15 @@ public DataMap expression( return this; } + /** + * Add a pattern-matched response with no no-match branch — when the pattern does not match, + * nothing is emitted for this expression. + * + * @param testValue the value to test, typically a {@code ${args.x}} template. + * @param pattern the pattern to match it against. + * @param output the result to return on a match. + * @return this DataMap, for chaining. + */ public DataMap expression(String testValue, String pattern, FunctionResult output) { return expression(testValue, pattern, output, null); } @@ -152,6 +183,15 @@ public DataMap webhook(String method, String url, Map headers) { return this; } + /** + * Add an API call the platform makes server-side for this tool, with no extra headers. The method + * is upper-cased. The URL is rendered into the SWML, so anything embedded in it — a key in a + * query string — is visible wherever that document is. + * + * @param method the HTTP method. + * @param url the endpoint, which may contain {@code ${args.x}} templates. + * @return this DataMap, for chaining. + */ public DataMap webhook(String method, String url) { return webhook(method, url, null); } @@ -176,15 +216,6 @@ public DataMap webhookExpressions(List> expressions) { return this; } - /** Set request body for the last added webhook (POST/PUT requests). */ - public DataMap body(Map data) { - if (webhooks.isEmpty()) { - throw new IllegalStateException("Must add webhook before setting body"); - } - webhooks.getLast().put("body", data); - return this; - } - /** Set request params for the last added webhook. */ public DataMap params(Map data) { if (webhooks.isEmpty()) { diff --git a/src/main/java/com/signalwire/sdk/logging/Logger.java b/src/main/java/com/signalwire/sdk/logging/Logger.java index 5cc9bfd3..ce984053 100644 --- a/src/main/java/com/signalwire/sdk/logging/Logger.java +++ b/src/main/java/com/signalwire/sdk/logging/Logger.java @@ -6,6 +6,9 @@ */ package com.signalwire.sdk.logging; +import java.util.LinkedHashMap; +import java.util.Map; + /** * Simple logging system with level control via environment variables. * @@ -20,6 +23,10 @@ */ public final class Logger { + /** + * Severity levels, ordered least to most severe. A message is emitted when its level is at least + * the global level, so {@link #OFF} — the highest — suppresses everything. + */ public enum Level { DEBUG(0), INFO(1), @@ -33,6 +40,11 @@ public enum Level { this.value = value; } + /** + * The level's ordinal severity, which is what the threshold comparison uses. + * + * @return the severity value, {@code 0} for {@link #DEBUG} through {@code 4} for {@link #OFF}. + */ public int getValue() { return value; } @@ -75,14 +87,32 @@ public Logger(String name) { this.name = name; } + /** + * Obtain a logger tagged with this name. The name appears in every line the logger writes. + * + * @param name the logger name. + * @return a logger for that name. + */ public static Logger getLogger(String name) { return new Logger(name); } + /** + * Obtain a logger tagged with the class's simple name. + * + * @param clazz the class to name the logger after. + * @return a logger for that class. + */ public static Logger getLogger(Class clazz) { return new Logger(clazz.getSimpleName()); } + /** + * Set the severity threshold for every logger in the process, overriding whatever {@code + * SIGNALWIRE_LOG_LEVEL} / {@code SIGNALWIRE_LOG_MODE} resolved at class-load time. + * + * @param level the new threshold. + */ public static void setGlobalLevel(Level level) { globalLevel = level; } @@ -99,7 +129,7 @@ public static void setGlobalLevel(Level level) { /** * One-time global logging configuration. Idempotent — a second call is a no-op until {@link - * #resetLoggingConfiguration()} runs. Mirrors logging_config.configure_logging. + * #resetLoggingConfiguration()} runs. */ public static synchronized void configureLogging() { if (loggingConfigured) { @@ -116,23 +146,23 @@ public static synchronized void configureLogging() { loggingConfigured = true; } - /** - * Reset the one-time configuration guard so {@link #configureLogging()} can run again. Mirrors - * logging_config.reset_logging_configuration. - */ + /** Reset the one-time configuration guard so {@link #configureLogging()} can run again. */ public static synchronized void resetLoggingConfiguration() { loggingConfigured = false; configureLogging(); } /** - * Remove ASCII control characters (except tab/newline/carriage-return) from a log string. Mirrors - * logging_config.strip_control_chars (a structlog processor in Python). + * Remove ASCII control characters (except tab/newline/carriage-return) from a single string. + * + *

      INTERNAL: the public contract is the event-map form ({@link #stripControlChars(Map)}); this + * is the per-value scrub that form is built out of, and the unit the emitter needs. + * Package-private, so it is not part of the SDK's public surface. * * @param value the raw log string (null-safe → returns null) * @return the sanitized string */ - public static String stripControlChars(String value) { + static String stripControlCharsValue(String value) { if (value == null) { return null; } @@ -146,49 +176,140 @@ public static String stripControlChars(String value) { return out.toString(); } + /** + * Strip control characters from log event values to prevent log injection. + * + *

      Takes the log event map, scrubs every STRING value, and returns the map. Non-string values + * pass through untouched. + * + *

      {@link #log} calls this on every emission, so the scrub sits on the real logging path rather + * than merely being available to callers who remember to invoke it. + * + * @param eventDict the log event map (null-safe → returns null) + * @return a map with every string value sanitized + */ + public static Map stripControlChars(Map eventDict) { + if (eventDict == null) { + return null; + } + Map out = new LinkedHashMap<>(eventDict); + for (Map.Entry e : out.entrySet()) { + if (e.getValue() instanceof String s) { + e.setValue(stripControlCharsValue(s)); + } + } + return out; + } + + /** + * The current process-wide severity threshold, resolved at class-load time from {@code + * SIGNALWIRE_LOG_MODE} then {@code SIGNALWIRE_LOG_LEVEL}, defaulting to {@link Level#INFO}. + * + * @return the current threshold. + */ public static Level getGlobalLevel() { return globalLevel; } + /** + * Whether a message at this level would be emitted. Worth checking before building an expensive + * message that would then be discarded. + * + * @param level the level to test. + * @return {@code true} when the level meets the global threshold. + */ public boolean isEnabled(Level level) { return level.getValue() >= globalLevel.getValue(); } + /** + * Log at {@link Level#DEBUG}. Control characters in the message are stripped before output, so a + * value carrying newlines or escape sequences cannot forge log lines. + * + * @param message the message. + */ public void debug(String message) { log(Level.DEBUG, message); } + /** + * Log a formatted message at {@link Level#DEBUG}. + * + * @param format a {@link String#format} pattern. + * @param args the format arguments. + */ public void debug(String format, Object... args) { log(Level.DEBUG, format, args); } + /** + * Log at {@link Level#INFO}, the default threshold. Control characters are stripped before + * output. + * + * @param message the message. + */ public void info(String message) { log(Level.INFO, message); } + /** + * Log a formatted message at {@link Level#INFO}. + * + * @param format a {@link String#format} pattern. + * @param args the format arguments. + */ public void info(String format, Object... args) { log(Level.INFO, format, args); } + /** + * Log at {@link Level#WARN}. Control characters are stripped before output. + * + * @param message the message. + */ public void warn(String message) { log(Level.WARN, message); } + /** + * Log a formatted message at {@link Level#WARN}. + * + * @param format a {@link String#format} pattern. + * @param args the format arguments. + */ public void warn(String format, Object... args) { log(Level.WARN, format, args); } + /** + * Log at {@link Level#ERROR}. Control characters are stripped before output. + * + * @param message the message. + */ public void error(String message) { log(Level.ERROR, message); } + /** + * Log a formatted message at {@link Level#ERROR}. + * + * @param format a {@link String#format} pattern. + * @param args the format arguments. + */ public void error(String format, Object... args) { log(Level.ERROR, format, args); } + /** + * Log at {@link Level#ERROR} with a stack trace. The message is written to standard error with + * control characters stripped, followed by the throwable's trace. + * + * @param message the message. + * @param t the throwable whose stack trace to print. + */ public void error(String message, Throwable t) { if (isEnabled(Level.ERROR)) { - System.err.printf("[%s] [%s] %s%n", Level.ERROR, name, message); + System.err.printf("[%s] [%s] %s%n", Level.ERROR, name, stripControlCharsValue(message)); t.printStackTrace(System.err); } } @@ -196,14 +317,15 @@ public void error(String message, Throwable t) { private void log(Level level, String message) { if (isEnabled(level)) { var stream = (level == Level.ERROR || level == Level.WARN) ? System.err : System.out; - stream.printf("[%s] [%s] %s%n", level, name, message); + stream.printf("[%s] [%s] %s%n", level, name, stripControlCharsValue(message)); } } private void log(Level level, String format, Object... args) { if (isEnabled(level)) { var stream = (level == Level.ERROR || level == Level.WARN) ? System.err : System.out; - stream.printf("[%s] [%s] %s%n", level, name, String.format(format, args)); + stream.printf( + "[%s] [%s] %s%n", level, name, stripControlCharsValue(String.format(format, args))); } } } diff --git a/src/main/java/com/signalwire/sdk/pom/PromptObjectModel.java b/src/main/java/com/signalwire/sdk/pom/PromptObjectModel.java index d89202f4..7285900b 100644 --- a/src/main/java/com/signalwire/sdk/pom/PromptObjectModel.java +++ b/src/main/java/com/signalwire/sdk/pom/PromptObjectModel.java @@ -14,22 +14,17 @@ /** * A structured data format for composing, organising, and rendering prompt instructions for large - * language models. Java port of the Python reference {@code signalwire.pom.pom.PromptObjectModel} - * (signalwire-python: {@code pom/pom.py}). + * language models. * *

      The Prompt Object Model provides a tree-based representation of a prompt document composed of * nested {@link Section}s. Each section can include a title, body text, bullet points, and * arbitrarily nested subsections. * - *

      Idiom mapping: - * - *

        - *
      • Python {@code to_dict()} ↔ Java {@link #toMap()} (returns {@code List>}) - *
      • Python {@code from_json(str|dict)} ↔ Java {@link #fromJson(String)} and {@link - * #fromJsonMap(List)} - *
      • Python {@code from_yaml(str|dict)} ↔ Java {@link #fromYaml(String)} and {@link - * #fromYamlMap(List)} - *
      + *

      A model can be built from serialized text or from already-parsed data, and each factory comes + * in both forms: {@link #fromJson(String)} / {@link #fromJsonMap(List)} and {@link + * #fromYaml(String)} / {@link #fromYamlMap(List)}. {@link #toMap()} renders the tree back to the + * {@code List>} form those {@code *Map} factories accept, so a round trip needs + * no intermediate serialization. */ public class PromptObjectModel { @@ -52,8 +47,7 @@ public PromptObjectModel(boolean debug) { } /** - * Construct from a list of section dicts. Mirrors Python's positional {@code - * PromptObjectModel(data)} pattern via {@link #fromJsonMap}. + * Construct from a list of section maps — the same input {@link #fromJsonMap} accepts. * * @param data list of section maps (each entry is one top-level section) */ @@ -65,10 +59,20 @@ public PromptObjectModel(List> data) { } } + /** + * The top-level sections of this prompt, in render order. + * + * @return the sections. + */ public List

      getSections() { return sections; } + /** + * Whether debug rendering is on for this POM. + * + * @return the debug flag. + */ public boolean isDebug() { return debug; } @@ -77,7 +81,7 @@ public boolean isDebug() { // Static factories. // ------------------------------------------------------------------ - /** Parse a JSON string into a model. Mirrors Python {@code PromptObjectModel.from_json(str)}. */ + /** Parse a JSON string into a model. */ public static PromptObjectModel fromJson(String json) { if (json == null) { throw new IllegalArgumentException("json must not be null"); @@ -86,10 +90,7 @@ public static PromptObjectModel fromJson(String json) { return fromJsonMap(data); } - /** - * Build a model from an already-parsed list-of-maps. Mirrors Python's dict-input branch of {@code - * from_json}. - */ + /** Build a model from an already-parsed list-of-maps, skipping the JSON parse step. */ public static PromptObjectModel fromJsonMap(List> data) { PromptObjectModel pom = new PromptObjectModel(); if (data != null) { @@ -98,7 +99,7 @@ public static PromptObjectModel fromJsonMap(List> data) { return pom; } - /** Parse a YAML string into a model. Mirrors Python {@code from_yaml(str)}. */ + /** Parse a YAML string into a model. The YAML root must be a list of section maps. */ public static PromptObjectModel fromYaml(String yaml) { if (yaml == null) { throw new IllegalArgumentException("yaml must not be null"); @@ -116,8 +117,7 @@ public static PromptObjectModel fromYaml(String yaml) { } /** - * Build a model from an already-parsed list-of-maps (YAML form). Mirrors Python's dict-input - * branch of {@code from_yaml}. + * Build a model from an already-parsed list-of-maps (YAML form), skipping the YAML parse step. */ public static PromptObjectModel fromYamlMap(List> data) { return fromJsonMap(data); @@ -128,7 +128,7 @@ public static PromptObjectModel fromYamlMap(List> data) { // ------------------------------------------------------------------ /** - * Add a top-level section. Mirrors Python {@code add_section(...)}. + * Add a top-level section. * * @return the newly created {@link Section} * @throws IllegalArgumentException if a null-title section is added after the first section @@ -158,10 +158,7 @@ public Section addSection(String title, String body, List bullets) { return addSection(title, body, bullets, null, false); } - /** - * Recursively search for a section with the given title. Mirrors Python {@code - * find_section(title)}. - */ + /** Recursively search for a section with the given title, depth-first over subsections. */ public Optional
      findSection(String title) { return findRecursive(sections, title); } @@ -180,9 +177,8 @@ private static Optional
      findRecursive(List
      sections, String ti } /** - * Add another POM's top-level sections as subsections of an existing section. Mirrors Python - * {@code add_pom_as_subsection(target, pom)} where {@code target} is either a title (String) or a - * {@link Section}. + * Add another POM's top-level sections as subsections of an existing section. {@code target} is + * either a section title ({@link String}) or the {@link Section} itself. * * @throws IllegalArgumentException when {@code target} is not a String or {@link Section}, or * when the title is not found @@ -211,8 +207,8 @@ public void addPomAsSubsection(Object target, PromptObjectModel pomToAdd) { // ------------------------------------------------------------------ /** - * Convert the entire model to a list of maps. Mirrors Python {@code to_dict()} (named {@code - * toMap} here because the Java return type is {@code List>}). + * Convert the entire model to a list of maps — one entry per top-level section, in render order. + * This is the form {@link #fromJsonMap(List)} and {@link #fromYamlMap(List)} accept. */ public List> toMap() { List> out = new ArrayList<>(sections.size()); @@ -222,14 +218,14 @@ public List> toMap() { return out; } - /** Convert to a JSON string with 2-space indent. Mirrors Python {@code to_json}. */ + /** Convert to a JSON string with 2-space indent. */ public String toJson() { return GSON_PRETTY.toJson(toMap()); } /** - * Convert to a YAML string. Output matches Python's {@code yaml.dump(..., - * default_flow_style=False, sort_keys=False)}. + * Convert to a YAML string in block style (not inline flow), with key order preserved as authored + * rather than sorted. */ public String toYaml() { DumperOptions opts = new DumperOptions(); @@ -243,7 +239,7 @@ public String toYaml() { return yaml.dump(toMap()); } - /** Render the entire model as Markdown. Mirrors Python {@code render_markdown()}. */ + /** Render the entire model as Markdown. */ public String renderMarkdown() { boolean anySectionNumbered = false; for (Section s : sections) { @@ -272,7 +268,7 @@ public String renderMarkdown() { return String.join("\n", md); } - /** Render the entire model as XML. Mirrors Python {@code render_xml()}. */ + /** Render the entire model as XML. */ public String renderXml() { List xml = new ArrayList<>(); xml.add(""); diff --git a/src/main/java/com/signalwire/sdk/pom/Section.java b/src/main/java/com/signalwire/sdk/pom/Section.java index 46eae439..dbef1dba 100644 --- a/src/main/java/com/signalwire/sdk/pom/Section.java +++ b/src/main/java/com/signalwire/sdk/pom/Section.java @@ -10,21 +10,12 @@ * Represents a section in the Prompt Object Model. * *

      Each section contains a title, optional body text, optional bullet points, and can have any - * number of nested subsections. Mirrors the Python reference {@code signalwire.pom.pom.Section} - * (see signalwire-python: pom/pom.py). + * number of nested subsections. * - *

      Idiom mapping: - * - *

        - *
      • Python {@code to_dict()} ↔ Java {@link #toMap()} (returns {@code Map}) - *
      • Python {@code render_markdown(level, section_number)} ↔ Java {@link #renderMarkdown(int, - * java.util.List)} - *
      • Python {@code render_xml(indent, section_number)} ↔ Java {@link #renderXml(int, - * java.util.List)} - *
      - * - *

      Output format is byte-identical to Python's renderer so cross-port POMs can round-trip through - * markdown/XML/JSON. + *

      A section can be rendered three ways: {@link #toMap()} for the JSON shape, {@link + * #renderMarkdown(int, java.util.List)} for markdown, and {@link #renderXml(int, java.util.List)} + * for XML. All three round-trip, so a POM serialized in one format can be reconstructed from + * another. */ public class Section { @@ -39,8 +30,7 @@ public class Section { private boolean numberedBullets; /** - * Construct a section. All parameters except {@code title} default to empty/null. Mirrors - * Python's keyword-only constructor. + * Construct a section. All parameters except {@code title} may be empty or {@code null}. * * @param title section title (may be {@code null} for an unnamed root) * @param body body text (must not be {@code null}) @@ -74,47 +64,75 @@ public Section(String title, String body, List bullets) { this(title, body, bullets, null, false); } + /** + * The section heading. + * + * @return the title. + */ public String getTitle() { return title; } + /** + * The section's prose. Empty for a bullets-only section, in which case it is dropped from the + * rendered output rather than emitted as an empty string. + * + * @return the body. + */ public String getBody() { return body; } + /** + * The section's bullet points. + * + * @return the bullets, or {@code null} when the section has none. + */ public List getBullets() { return bullets; } + /** + * Sections nested under this one. + * + * @return the subsections, or {@code null} when there are none. + */ public List

      getSubsections() { return subsections; } + /** + * Whether this section is numbered. Boxed so an unset value ({@code null}) stays distinct from an + * explicit {@code false} and is omitted from the rendered output. + * + * @return the numbering flag, or {@code null} when unset. + */ public Boolean getNumbered() { return numbered; } + /** + * Whether this section's bullets are numbered rather than bulleted. + * + * @return the flag. + */ public boolean isNumberedBullets() { return numberedBullets; } - /** Add or replace the body text for this section. Mirrors Python {@code Section.add_body}. */ + /** Add or replace the body text for this section. */ public void addBody(String body) { this.body = Objects.requireNonNull(body, "body must not be null"); } - /** - * Append bullet points to this section. Mirrors Python {@code Section.add_bullets} (which - * extends, not replaces). - */ + /** Append bullet points to this section — this extends the existing list, it does not replace. */ public void addBullets(List bullets) { Objects.requireNonNull(bullets, "bullets must not be null"); this.bullets.addAll(bullets); } /** - * Add a subsection to this section. Mirrors Python {@code Section.add_subsection}. Subsections - * must have a title. + * Add a subsection to this section. Subsections must have a title. * * @return the newly created sub-{@link Section} * @throws IllegalArgumentException if {@code title} is {@code null} @@ -145,9 +163,9 @@ public Section addSubsection(String title, String body, List bullets) { } /** - * Convert this section to an ordered {@link Map} for JSON / YAML serialisation. Mirrors Python - * {@code Section.to_dict}: keys appear in the same order (title, body, bullets, subsections, - * numbered, numberedBullets) and empty/false values are omitted. + * Convert this section to an ordered {@link Map} for JSON / YAML serialisation. Keys appear in a + * fixed order — title, body, bullets, subsections, numbered, numberedBullets — and empty/false + * values are omitted entirely. */ public Map toMap() { Map data = new LinkedHashMap<>(); @@ -177,8 +195,7 @@ public Map toMap() { } /** - * Render this section and its subsections as Markdown. Mirrors Python {@code - * Section.render_markdown}. + * Render this section and its subsections as Markdown. * * @param level heading level (default 2 → "##") * @param sectionNumber current numbering breadcrumb (may be {@code null}) @@ -250,7 +267,7 @@ public String renderMarkdown() { return renderMarkdown(2, null); } - /** Render this section and its subsections as XML. Mirrors Python {@code Section.render_xml}. */ + /** Render this section and its subsections as XML. */ public String renderXml(int indent, List sectionNumber) { if (sectionNumber == null) { sectionNumber = new ArrayList<>(); diff --git a/src/main/java/com/signalwire/sdk/prefabs/ConciergeAgent.java b/src/main/java/com/signalwire/sdk/prefabs/ConciergeAgent.java index e4ace63e..bf0006c0 100644 --- a/src/main/java/com/signalwire/sdk/prefabs/ConciergeAgent.java +++ b/src/main/java/com/signalwire/sdk/prefabs/ConciergeAgent.java @@ -8,7 +8,7 @@ /** Pre-built agent for venue concierge with amenity info and availability checking. */ public class ConciergeAgent { - /** Default operating hours when the caller supplies none — the reference's fallback. */ + /** Default operating hours used when the caller supplies none. */ private static final Map DEFAULT_HOURS = Map.of("default", "9 AM - 5 PM"); private final AgentBase agent; @@ -29,19 +29,18 @@ public ConciergeAgent( } /** - * Full construction contract, mirroring the reference {@code ConciergeAgent(venue_name, services, - * amenities, hours_of_operation, special_instructions, ..., name, route)}. + * Full construction contract. * * @param name agent name - * @param venueName name of the venue or business (the {@code venue_name} param) - * @param amenities amenities with details (the {@code amenities} param) + * @param venueName name of the venue or business + * @param amenities amenities with details * @param route HTTP route for this agent * @param port HTTP port for this agent - * @param services services offered (the {@code services} param); empty when {@code null} - * @param hoursOfOperation operating hours (the {@code hours_of_operation} param); defaults to - * {@code {"default": "9 AM - 5 PM"}} when {@code null}, as the reference does - * @param specialInstructions extra instruction bullets appended to the Instructions section (the - * {@code special_instructions} param); empty when {@code null} + * @param services services offered; empty when {@code null} + * @param hoursOfOperation operating hours; defaults to {@code {"default": "9 AM - 5 PM"}} when + * {@code null} + * @param specialInstructions extra instruction bullets appended to the Instructions section; + * empty when {@code null} */ public ConciergeAgent( String name, @@ -191,9 +190,9 @@ public ConciergeAgent( } /** - * SWAIG tool handler: check availability of an amenity/service on a date and time. Ported from - * the Python ConciergeAgent.check_availability -- returns an availability confirmation when the - * requested amenity is offered, otherwise lists the available amenities. + * SWAIG tool handler: check availability of an amenity/service on a date and time. Returns an + * availability confirmation when the requested amenity is offered, otherwise lists the available + * amenities. */ public FunctionResult checkAvailability(Map args, Map rawData) { String amenityName = (String) args.getOrDefault("amenity", ""); @@ -227,9 +226,9 @@ public FunctionResult checkAvailability(Map args, Map args, Map rawData) { String location = (String) args.getOrDefault("location", ""); @@ -255,9 +254,9 @@ public FunctionResult getDirections(Map args, Map getSpecialInstructions() { return specialInstructions; } + /** + * Start the agent's HTTP server and serve until stopped. + * + * @throws Exception if the server cannot be started. + */ public void serve() throws Exception { agent.serve(); } + /** + * Start the agent's HTTP server. Equivalent to {@link #serve()}. + * + * @throws Exception if the server cannot be started. + */ public void run() throws Exception { agent.run(); } diff --git a/src/main/java/com/signalwire/sdk/prefabs/FAQBotAgent.java b/src/main/java/com/signalwire/sdk/prefabs/FAQBotAgent.java index 735cbc7d..413026ec 100644 --- a/src/main/java/com/signalwire/sdk/prefabs/FAQBotAgent.java +++ b/src/main/java/com/signalwire/sdk/prefabs/FAQBotAgent.java @@ -8,7 +8,7 @@ /** Pre-built agent for keyword-based FAQ matching with optional related suggestions. */ public class FAQBotAgent { - /** Default personality when the caller supplies none — the reference's fallback text. */ + /** Default personality applied when the caller supplies none. */ private static final String DEFAULT_PERSONA = "You are a helpful FAQ bot that provides accurate answers to common questions."; @@ -27,17 +27,16 @@ public FAQBotAgent(String name, List> faqs, String route, in } /** - * Full construction contract, mirroring the reference {@code FAQBotAgent(faqs, suggest_related, - * persona, name, route)}. + * Full construction contract — every option this prefab exposes. * * @param name agent name - * @param faqs the FAQ entries (the {@code faqs} param) + * @param faqs the FAQ entries * @param route HTTP route for this agent * @param port HTTP port for this agent - * @param suggestRelated whether to suggest related questions (the {@code suggest_related} param); - * when true an extra instruction bullet is added, as the reference does - * @param persona custom personality description (the {@code persona} param); defaults to the - * reference's stock text when {@code null} + * @param suggestRelated whether to suggest related questions; when true an extra instruction + * bullet is added to the prompt + * @param persona custom personality description; defaults to the stock FAQ-bot text when {@code + * null} */ public FAQBotAgent( String name, @@ -173,10 +172,10 @@ public FAQBotAgent( } /** - * SWAIG tool handler: search FAQs matching a query and/or category. Ported from the Python - * FAQBotAgent.search_faqs -- scores each FAQ (substring match on the question, prefix boost, and - * category match), sorts by score descending, and returns the top 3 matching questions. Reads the - * optional {@code categories} list on each FAQ entry. + * SWAIG tool handler: search FAQs matching a query and/or category. Scores each FAQ (substring + * match on the question, prefix boost, and category match), sorts by score descending, and + * returns the top 3 matching questions. Reads the optional {@code categories} list on each FAQ + * entry. */ public FunctionResult searchFaqs(Map args, Map rawData) { String query = ((String) args.getOrDefault("query", "")).toLowerCase(java.util.Locale.ROOT); @@ -238,9 +237,9 @@ public FunctionResult searchFaqs(Map args, Map r } /** - * Register a post-prompt summary callback. Ported from the Python FAQBotAgent.on_summary hook: - * invoked with the parsed summary and the raw post-prompt payload once the conversation - * completes. Wires through to {@link AgentBase#onSummary}. + * Register a post-prompt summary callback: it is invoked with the parsed summary and the raw + * post-prompt payload once the conversation completes. Wires through to {@link + * AgentBase#onSummary}. * * @param handler callback receiving (summary, rawData); {@code null} clears any handler * @return this prefab for chaining @@ -258,6 +257,12 @@ public FAQBotAgent onSummary( return summaryHandler; } + /** + * The underlying agent this prefab configured. Use it to add tools, prompt sections, or skills + * beyond what the prefab sets up. + * + * @return the wrapped agent. + */ public AgentBase getAgent() { return agent; } @@ -280,10 +285,20 @@ public String getPersona() { return persona; } + /** + * Start the agent's HTTP server and serve until stopped. + * + * @throws Exception if the server cannot be started. + */ public void serve() throws Exception { agent.serve(); } + /** + * Start the agent's HTTP server. Equivalent to {@link #serve()}. + * + * @throws Exception if the server cannot be started. + */ public void run() throws Exception { agent.run(); } diff --git a/src/main/java/com/signalwire/sdk/prefabs/InfoGathererAgent.java b/src/main/java/com/signalwire/sdk/prefabs/InfoGathererAgent.java index 1a94bf96..9a50d16a 100644 --- a/src/main/java/com/signalwire/sdk/prefabs/InfoGathererAgent.java +++ b/src/main/java/com/signalwire/sdk/prefabs/InfoGathererAgent.java @@ -15,9 +15,8 @@ public class InfoGathererAgent { /** - * Callback that produces the question list per-request in dynamic mode. Mirrors the Python - * InfoGathererAgent question callback signature {@code (query_params, body_params, headers) -> - * questions}. + * Callback that produces the question list per-request in dynamic mode. It receives the request's + * query params, body params, and headers, and returns the questions to ask. */ @FunctionalInterface public interface QuestionCallback { @@ -96,9 +95,9 @@ public InfoGathererAgent( } /** - * Set a callback that produces the question list per-request (dynamic mode). Ported from Python - * InfoGathererAgent.set_question_callback: when set and no static questions were supplied, {@link - * #onSwmlRequest} invokes it and seeds global_data with the returned questions. + * Set a callback that produces the question list per-request (dynamic mode). When set and no + * static questions were supplied, {@link #onSwmlRequest} invokes it and seeds global_data with + * the returned questions. * * @param callback the per-request question producer * @return this prefab for chaining @@ -108,12 +107,33 @@ public InfoGathererAgent setQuestionCallback(QuestionCallback callback) { return this; } + /** Dynamic-configuration hook with every optional param defaulted to {@code null}. */ + public Map onSwmlRequest() { + return onSwmlRequest(null, null, null); + } + + /** + * Dynamic-configuration hook supplying the request body, with the remaining params defaulted to + * {@code null}. + */ + public Map onSwmlRequest(Map requestData) { + return onSwmlRequest(requestData, null, null); + } + + /** + * Dynamic-configuration hook supplying the request body and query params, with the last param + * defaulted to {@code null}. + */ + public Map onSwmlRequest( + Map requestData, Map queryParams) { + return onSwmlRequest(requestData, queryParams, null); + } + /** - * Dynamic-configuration hook invoked when SWML is requested. Ported from Python - * InfoGathererAgent.on_swml_request: in static mode returns {@code null} (no override); in - * dynamic mode it calls the registered {@link QuestionCallback} (or a name/message fallback if - * none is set) and returns a {@code {"global_data": {questions, question_index, answers}}} - * override map. + * Dynamic-configuration hook invoked when SWML is requested. In static mode it returns {@code + * null} (no override); in dynamic mode it calls the registered {@link QuestionCallback} (or a + * name/message fallback if none is set) and returns a {@code {"global_data": {questions, + * question_index, answers}}} override map. * * @param requestData parsed request body (body params), or {@code null} * @param queryParams request query parameters, or {@code null} @@ -201,9 +221,8 @@ private static String generateQuestionInstruction( } /** - * SWAIG tool handler: return the first question. Ported from Python - * InfoGathererAgent.start_questions -- reads {@code questions} / {@code question_index} from - * global_data and returns the instruction to ask the current question. + * SWAIG tool handler: return the first question. Reads {@code questions} / {@code question_index} + * from global_data and returns the instruction to ask the current question. */ @SuppressWarnings("unchecked") public FunctionResult startQuestions(Map args, Map rawData) { @@ -228,10 +247,9 @@ public FunctionResult startQuestions(Map args, Map args, Map rawData) { @@ -287,14 +305,30 @@ public FunctionResult submitAnswer(Map args, Map return result; } + /** + * The underlying agent this prefab configured. Use it to add tools, prompt sections, or skills + * beyond what the prefab sets up. + * + * @return the wrapped agent. + */ public AgentBase getAgent() { return agent; } + /** + * Start the agent's HTTP server and serve until stopped. + * + * @throws Exception if the server cannot be started. + */ public void serve() throws Exception { agent.serve(); } + /** + * Start the agent's HTTP server. Equivalent to {@link #serve()}. + * + * @throws Exception if the server cannot be started. + */ public void run() throws Exception { agent.run(); } diff --git a/src/main/java/com/signalwire/sdk/prefabs/ReceptionistAgent.java b/src/main/java/com/signalwire/sdk/prefabs/ReceptionistAgent.java index 101bc765..4f04b345 100644 --- a/src/main/java/com/signalwire/sdk/prefabs/ReceptionistAgent.java +++ b/src/main/java/com/signalwire/sdk/prefabs/ReceptionistAgent.java @@ -58,9 +58,9 @@ public ReceptionistAgent( } /** - * Register a post-prompt summary callback. Ported from the Python ReceptionistAgent.on_summary - * hook (a no-op override point in Python): invoked with the parsed conversation summary and the - * raw post-prompt payload once the call completes. Wires through to {@link AgentBase#onSummary}. + * Register a post-prompt summary callback: it is invoked with the parsed conversation summary and + * the raw post-prompt payload once the call completes. No handler is registered by default. Wires + * through to {@link AgentBase#onSummary}. * * @param handler callback receiving (summary, rawData); {@code null} clears any handler * @return this prefab for chaining @@ -78,14 +78,30 @@ public ReceptionistAgent onSummary( return summaryHandler; } + /** + * The underlying agent this prefab configured. Use it to add tools, prompt sections, or skills + * beyond what the prefab sets up. + * + * @return the wrapped agent. + */ public AgentBase getAgent() { return agent; } + /** + * Start the agent's HTTP server and serve until stopped. + * + * @throws Exception if the server cannot be started. + */ public void serve() throws Exception { agent.serve(); } + /** + * Start the agent's HTTP server. Equivalent to {@link #serve()}. + * + * @throws Exception if the server cannot be started. + */ public void run() throws Exception { agent.run(); } diff --git a/src/main/java/com/signalwire/sdk/prefabs/SurveyAgent.java b/src/main/java/com/signalwire/sdk/prefabs/SurveyAgent.java index 6bc827d3..7a6eb633 100644 --- a/src/main/java/com/signalwire/sdk/prefabs/SurveyAgent.java +++ b/src/main/java/com/signalwire/sdk/prefabs/SurveyAgent.java @@ -11,7 +11,7 @@ */ public class SurveyAgent { - /** Default brand name when the caller supplies none — the reference's fallback. */ + /** Default brand name when the caller supplies none. */ private static final String DEFAULT_BRAND_NAME = "Our Company"; /** Default number of re-ask attempts for an invalid answer. */ @@ -40,23 +40,20 @@ public SurveyAgent( } /** - * Full construction contract, mirroring the reference {@code SurveyAgent(survey_name, questions, - * brand_name, max_retries, introduction, conclusion, name, route)}. - * - *

      The reference's {@code conclusion} is this port's {@code completionMessage} — the same - * closing text, spoken after the last question. + * Full construction contract: every configurable aspect of the survey in one call. * * @param name agent name * @param questions the survey questions (the {@code questions} param) - * @param completionMessage closing message (the reference's {@code conclusion} param) + * @param completionMessage closing message, spoken after the last question (the {@code + * conclusion} param) * @param route HTTP route for this agent * @param port HTTP port for this agent * @param surveyName human-readable survey title (the {@code survey_name} param) * @param brandName brand conducting the survey (the {@code brand_name} param); defaults to {@code - * "Our Company"} when {@code null}, as the reference does + * "Our Company"} when {@code null} * @param maxRetries re-ask attempts for an invalid answer (the {@code max_retries} param) - * @param introduction opening message (the {@code introduction} param); defaults to the - * reference's stock welcome text built from {@code surveyName} when {@code null} + * @param introduction opening message (the {@code introduction} param); defaults to a stock + * welcome text built from {@code surveyName} when {@code null} */ public SurveyAgent( String name, @@ -222,10 +219,9 @@ private Map findQuestionById(String questionId) { } /** - * SWAIG tool handler: validate a response against a question's constraints. Ported from Python - * SurveyAgent.validate_response -- looks the question up by {@code id} and checks rating range - * (1..scale), multiple_choice membership, yes/no answers, and required open_ended responses. - * Returns a validity message. + * SWAIG tool handler: validate a response against a question's constraints. Looks the question up + * by {@code id} and checks rating range (1..scale), multiple_choice membership, yes/no answers, + * and required open_ended responses. Returns a validity message. */ @SuppressWarnings("unchecked") public FunctionResult validateResponse(Map args, Map rawData) { @@ -289,9 +285,8 @@ public FunctionResult validateResponse(Map args, Map args, Map rawData) { String questionId = (String) args.getOrDefault("question_id", ""); @@ -301,9 +296,8 @@ public FunctionResult logResponse(Map args, Map } /** - * Register a post-prompt summary callback. Ported from the Python SurveyAgent.on_summary hook: - * invoked with the parsed survey summary and the raw post-prompt payload once the survey - * completes. Wires through to {@link AgentBase#onSummary}. + * Register a post-prompt summary callback: invoked with the parsed survey summary and the raw + * post-prompt payload once the survey completes. Wires through to {@link AgentBase#onSummary}. * * @param handler callback receiving (summary, rawData); {@code null} clears any handler * @return this prefab for chaining @@ -379,6 +373,12 @@ private String validateAnswer(Map q, String answer) { return null; } + /** + * The underlying agent this prefab configured. Use it to add tools, prompt sections, or skills + * beyond what the prefab sets up. + * + * @return the wrapped agent. + */ public AgentBase getAgent() { return agent; } @@ -413,17 +413,27 @@ public String getIntroduction() { } /** - * The closing message — the reference's {@code conclusion} construction param, named {@code - * completionMessage} in this port's constructor. + * The closing message (the {@code conclusion} construction param, supplied to the constructor as + * {@code completionMessage}). */ public String getConclusion() { return completionMessage; } + /** + * Start the agent's HTTP server and serve until stopped. + * + * @throws Exception if the server cannot be started. + */ public void serve() throws Exception { agent.serve(); } + /** + * Start the agent's HTTP server. Equivalent to {@link #serve()}. + * + * @throws Exception if the server cannot be started. + */ public void run() throws Exception { agent.run(); } @@ -445,9 +455,9 @@ public static Map openEndedQuestion(String question) { } /** - * Build an id-keyed survey question (Python shape: {@code id}/{@code text}/{@code type}/{@code - * scale}/{@code options}) usable with {@link #validateResponse} and {@link #logResponse}, which - * look questions up by {@code id}. + * Build an id-keyed survey question ({@code id}/{@code text}/{@code type}/{@code scale}/{@code + * options}) usable with {@link #validateResponse} and {@link #logResponse}, which look questions + * up by {@code id}. */ public static Map idQuestion( String id, String text, String type, Integer scale, List options) { diff --git a/src/main/java/com/signalwire/sdk/relay/Action.java b/src/main/java/com/signalwire/sdk/relay/Action.java index 06425f88..31b03f57 100644 --- a/src/main/java/com/signalwire/sdk/relay/Action.java +++ b/src/main/java/com/signalwire/sdk/relay/Action.java @@ -44,26 +44,75 @@ public Action(String controlId, Call call) { this.done = false; } + /** + * The client-generated identifier this action was dispatched under. The server echoes it on every + * related event, which is how concurrent actions on one call are told apart. + * + * @return the control id. + */ public String getControlId() { return controlId; } + /** + * The call this action is running on. + * + * @return the owning call. + */ public Call getCall() { return call; } + /** + * The most recent state reported for this action, e.g. {@code playing}, {@code recording}, {@code + * finished}. Updated as events arrive. + * + * @return the last known state, or {@code null} before the first event. + */ public String getState() { return state; } + /** + * The terminal event that completed this action, carrying whatever result it produced (a + * recording URL, a collected digit string, a detection outcome). + * + * @return the terminal event, or {@code null} while the action is still running. + */ public RelayEvent getResult() { return result; } + /** + * Whether the action has reached a terminal state. Method form of the same flag {@link + * #getCompleted()} reads. + * + * @return {@code true} once the action has completed. + */ public boolean isDone() { return done; } + /** + * Whether the action has reached its terminal state. The flag starts {@code false} and is set + * {@code true} exactly once, when the action resolves. {@link #isDone()} is the method form and + * reads the identical field. + * + * @return true once the action has completed. + */ + public boolean getCompleted() { + return done; + } + + /** + * Register a callback to fire when the action completes. + * + *

      Safe against the genuine race where the terminal event lands on the RELAY reader thread + * before this registration: if the action has ALREADY resolved, the callback fires immediately + * rather than being silently dropped. It fires exactly once either way. + * + * @param onCompleted the callback, invoked with this action. + */ public void setOnCompleted(Consumer onCompleted) { // If the action has ALREADY resolved (the terminal event landed on the RELAY // reader thread before this registration — a genuine race for a caller that @@ -118,24 +167,32 @@ public RelayEvent waitForCompletion(long timeoutMs) { } /** - * Wait for the action to complete, returning the terminal event. Java-idiom name for the - * reference's {@code Action.wait}: the bare name {@code wait} collides with {@code - * java.lang.Object.wait()} (final, non-overridable), so this port names it {@code await} and the - * enumerator's rename table maps {@code await} → {@code wait} (adapter rename, not omission). + * Wait for the action to complete, returning the terminal event. The name is {@code await} + * because the bare name {@code wait} collides with {@code java.lang.Object.wait()}, which is + * final and cannot be overridden. + * + * @return the terminal event. */ public RelayEvent await() { return waitForCompletion(); } /** - * Wait for the action to complete with a timeout. Java-idiom name for the reference's {@code - * Action.wait(timeout)} (see {@link #await()} for why the name differs). + * Wait for the action to complete with a timeout (see {@link #await()} for why the name is {@code + * await} rather than {@code wait}). * - * @param timeoutMs timeout in milliseconds + *

      The unit is SECONDS and the type is boxed {@code Double} — the same spelling as {@code + * RequestOptions.timeout}; {@code null} means "wait indefinitely". Note that {@link + * #waitForCompletion(long)} takes MILLISECONDS instead. + * + * @param timeout timeout in seconds ({@code null} = no timeout) * @return the terminal event, or null on timeout */ - public RelayEvent await(long timeoutMs) { - return waitForCompletion(timeoutMs); + public RelayEvent await(Double timeout) { + if (timeout == null || timeout <= 0.0) { + return waitForCompletion(); + } + return waitForCompletion((long) (timeout * 1000.0)); } /** Stop the action. */ @@ -193,6 +250,12 @@ protected boolean isTerminal(String actionState) { return Constants.isTerminalActionState(actionState); } + /** + * A short diagnostic rendering: the concrete action subclass, its control id, its last known + * state, and whether it has completed. + * + * @return the diagnostic string. + */ @Override public String toString() { return String.format( @@ -207,20 +270,20 @@ public PlayAction(String controlId, Call call) { super(controlId, call); } + /** Stop playback, sending {@code calling.play.stop} for this control id. */ @Override public void stop() { getCall().executeOnCall(Constants.METHOD_PLAY_STOP, baseParams()); } - /** Pause playback. Mirrors the reference PlayAction.pause. */ + /** Pause playback, with no {@code behavior} hint. */ public void pause() { pause(null); } /** - * Pause playback with an optional {@code behavior} hint. Mirrors the reference {@code - * PlayAction.pause(behavior: str | None)} — when {@code behavior} is non-null it rides in the - * request params. + * Pause playback with an optional {@code behavior} hint — when {@code behavior} is non-null it + * rides in the request params. * * @param behavior optional pause behavior; may be {@code null} */ @@ -232,10 +295,17 @@ public void pause(String behavior) { getCall().executeOnCall(Constants.METHOD_PLAY_PAUSE, params); } + /** Resume playback paused by {@link #pause()}. */ public void resume() { getCall().executeOnCall(Constants.METHOD_PLAY_RESUME, baseParams()); } + /** + * Adjust playback volume mid-play. + * + * @param volumeDb the new volume in decibels, relative to the source level — negative + * attenuates, positive amplifies. + */ public void volume(double volumeDb) { Map params = baseParams(); params.put("volume", volumeDb); @@ -257,20 +327,23 @@ public RecordAction(String controlId, Call call) { super(controlId, call); } + /** + * Stop the recording, sending {@code calling.record.stop} for this control id. The action then + * resolves with the terminal event carrying the recording's URL, duration, and size. + */ @Override public void stop() { getCall().executeOnCall(Constants.METHOD_RECORD_STOP, baseParams()); } - /** Pause the recording. Mirrors the reference RecordAction.pause. */ + /** Pause the recording, with no {@code behavior} hint. */ public void pause() { pause(null); } /** - * Pause the recording with an optional {@code behavior} hint. Mirrors the reference {@code - * RecordAction.pause(behavior: str | None)} — when {@code behavior} is non-null it rides in the - * request params. + * Pause the recording with an optional {@code behavior} hint — when {@code behavior} is + * non-null it rides in the request params. * * @param behavior optional pause behavior; may be {@code null} */ @@ -282,6 +355,7 @@ public void pause(String behavior) { getCall().executeOnCall(Constants.METHOD_RECORD_PAUSE, params); } + /** Resume the recording paused by {@link #pause()}. */ public void resume() { getCall().executeOnCall(Constants.METHOD_RECORD_RESUME, baseParams()); } @@ -301,6 +375,7 @@ public DetectAction(String controlId, Call call) { super(controlId, call); } + /** Stop detection, sending {@code calling.detect.stop} for this control id. */ @Override public void stop() { Map params = new LinkedHashMap<>(); @@ -317,6 +392,7 @@ public CollectAction(String controlId, Call call) { super(controlId, call); } + /** Stop collecting input, sending {@code calling.collect.stop} for this control id. */ @Override public void stop() { Map params = new LinkedHashMap<>(); @@ -326,6 +402,11 @@ public void stop() { getCall().executeOnCall(Constants.METHOD_COLLECT_STOP, params); } + /** + * (Re)start the digit and speech input timers. Use it when a collect was dispatched with its + * timers held off until some other point in the flow — for instance after a prompt has finished + * playing — so the caller is not timed out while still being spoken to. + */ public void startInputTimers() { Map params = new LinkedHashMap<>(); params.put("node_id", getCall().getNodeId().orElse(null)); @@ -347,20 +428,23 @@ public PlayAndCollectAction(String controlId, Call call) { super(controlId, call); } + /** + * Stop the play-and-collect operation, sending {@code calling.play_and_collect.stop} for this + * control id. + */ @Override public void stop() { getCall().executeOnCall(Constants.METHOD_PLAY_AND_COLLECT_STOP, baseParams()); } - /** Pause the play-and-collect operation. Mirrors the reference CollectAction.pause. */ + /** Pause the play-and-collect operation, with no {@code behavior} hint. */ public void pause() { pause(null); } /** - * Pause the play-and-collect operation with an optional {@code behavior} hint. Mirrors the - * reference {@code CollectAction.pause(behavior: str | None)} — when {@code behavior} is - * non-null it rides in the request params. + * Pause the play-and-collect operation with an optional {@code behavior} hint — when {@code + * behavior} is non-null it rides in the request params. * * @param behavior optional pause behavior; may be {@code null} */ @@ -372,11 +456,16 @@ public void pause(String behavior) { getCall().executeOnCall(Constants.METHOD_PLAY_AND_COLLECT_PAUSE, params); } - /** Resume the play-and-collect operation. Mirrors the reference CollectAction.resume. */ + /** Resume the play-and-collect operation paused by {@link #pause()}. */ public void resume() { getCall().executeOnCall(Constants.METHOD_PLAY_AND_COLLECT_RESUME, baseParams()); } + /** + * Adjust the volume of the play phase mid-operation. + * + * @param volumeDb the new volume in decibels, relative to the source level. + */ public void volume(double volumeDb) { Map params = baseParams(); params.put("volume", volumeDb); @@ -392,8 +481,8 @@ private Map baseParams() { } /** - * Restart the digit/speech input timers on this standalone collect. Mirrors the reference - * StandaloneCollectAction.start_input_timers (same wire method as CollectAction). + * Restart the digit/speech input timers on this standalone collect. Sends the same wire method + * as a {@code CollectAction}. */ public void startInputTimers() { Map params = new LinkedHashMap<>(); @@ -410,6 +499,7 @@ public PayAction(String controlId, Call call) { super(controlId, call); } + /** Stop the payment session, sending {@code calling.pay.stop} for this control id. */ @Override public void stop() { Map params = new LinkedHashMap<>(); @@ -426,6 +516,7 @@ public SendFaxAction(String controlId, Call call) { super(controlId, call); } + /** Stop the outbound fax, sending {@code calling.send_fax.stop} for this control id. */ @Override public void stop() { Map params = new LinkedHashMap<>(); @@ -442,6 +533,7 @@ public ReceiveFaxAction(String controlId, Call call) { super(controlId, call); } + /** Stop receiving the fax, sending {@code calling.receive_fax.stop} for this control id. */ @Override public void stop() { Map params = new LinkedHashMap<>(); @@ -463,6 +555,10 @@ protected boolean isTerminal(String actionState) { return Constants.ACTION_STATE_FINISHED.equals(actionState); } + /** + * Stop the media tap, sending {@code calling.tap.stop} for this control id. Media stops being + * forwarded to the tap destination. + */ @Override public void stop() { Map params = new LinkedHashMap<>(); @@ -484,6 +580,7 @@ protected boolean isTerminal(String actionState) { return Constants.ACTION_STATE_FINISHED.equals(actionState); } + /** Stop the media stream, sending {@code calling.stream.stop} for this control id. */ @Override public void stop() { Map params = new LinkedHashMap<>(); @@ -505,6 +602,7 @@ protected boolean isTerminal(String actionState) { return Constants.ACTION_STATE_FINISHED.equals(actionState); } + /** Stop transcription, sending {@code calling.transcribe.stop} for this control id. */ @Override public void stop() { Map params = new LinkedHashMap<>(); @@ -527,6 +625,7 @@ protected boolean isTerminal(String actionState) { || Constants.ACTION_STATE_ERROR.equals(actionState); } + /** Stop the AI agent on this call, sending {@code calling.ai.stop} for this control id. */ @Override public void stop() { Map params = new LinkedHashMap<>(); diff --git a/src/main/java/com/signalwire/sdk/relay/Call.java b/src/main/java/com/signalwire/sdk/relay/Call.java index 78368817..dddb2897 100644 --- a/src/main/java/com/signalwire/sdk/relay/Call.java +++ b/src/main/java/com/signalwire/sdk/relay/Call.java @@ -67,11 +67,9 @@ public class Call { private volatile Map device; /** - * Call identity carried on every RELAY call event and stored by the reference as public state - * ({@code self.project_id} / {@code self.context} / {@code self.segment_id}, - * relay/call.py:357-363). The event frames already carry all three ({@link - * RelayEvent.CallReceiveEvent#getProjectId()} et al.); the port previously discarded them, so a - * Java caller could not read the project, context, or segment the call belongs to. + * Call identity carried on every RELAY call event: project id, context, and segment id. The event + * frames carry all three ({@link RelayEvent.CallReceiveEvent#getProjectId()} et al.), and they + * are retained here so a caller can read which project, context, and segment a call belongs to. */ private volatile String projectId; @@ -99,8 +97,8 @@ public Call(String callId, String nodeId) { } /** - * Full call identity, mirroring the reference's {@code Call(client, call_id, node_id, project_id, - * context, ..., segment_id)}. + * Full call identity: RELAY call id and node id plus the project, context, and segment the call + * belongs to. * * @param callId the RELAY call id * @param nodeId the RELAY node id @@ -149,10 +147,23 @@ public void setSegmentId(String segmentId) { this.segmentId = segmentId; } + /** + * The platform's identifier for this call leg. Supplied at construction and never absent, which + * is why it is not {@link java.util.Optional} like the other scalars here. + * + * @return the call id. + */ public String getCallId() { return callId; } + /** + * The leg's current lifecycle state as sent on the wire — {@code created}, {@code ringing}, + * {@code answered} or {@code ended}. Defaults to {@code created} so it is never absent; {@link + * #getCallState()} gives the typed view. + * + * @return the raw call state. + */ public String getState() { return state; } @@ -206,34 +217,78 @@ public Optional getTag() { return Optional.ofNullable(tag); } + /** + * Record the RELAY node hosting this leg, which every subsequent calling method must carry. + * + * @param nodeId the node id. + */ public void setNodeId(String nodeId) { this.nodeId = nodeId; } + /** + * Overwrite the lifecycle state directly. Note this does NOT run the state-wait or listener + * machinery an incoming event does — {@code waitForAnswered()} and friends will not observe it. + * + * @param state the raw wire state. + */ public void setState(String state) { this.state = state; } + /** + * Record why the leg terminated, e.g. {@code hangup}, {@code busy}, {@code noAnswer}. + * + * @param endReason the end reason. + */ public void setEndReason(String endReason) { this.endReason = endReason; } + /** + * Record whether the leg is {@code inbound} or {@code outbound}. + * + * @param direction the call direction. + */ public void setDirection(String direction) { this.direction = direction; } + /** + * Record the dial-correlation tag, which is how an outbound leg is matched back to the {@code + * calling.dial} that created it. + * + * @param tag the correlation tag. + */ public void setTag(String tag) { this.tag = tag; } + /** + * Record the device object describing how this leg is reached ({@code phone}, {@code sip}, {@code + * webrtc}, {@code agora}) and its parameters. + * + * @param device the device object. + */ public void setDevice(Map device) { this.device = device; } + /** + * Bind this call to the client that issues its RPCs. Without it the call has no transport to send + * calling methods on. + * + * @param client the owning RELAY client. + */ public void setClient(RelayClient client) { this.client = client; } + /** + * Whether the leg has reached {@code ended}. + * + * @return {@code true} once the call has ended. + */ public boolean isEnded() { return Constants.CALL_STATE_ENDED.equals(state); } @@ -327,21 +382,81 @@ public RelayEvent waitForAnswered() { return waitFor(Constants.CALL_STATE_ANSWERED); } + /** + * Block until the call is answered, or until {@code timeout} SECONDS elapse. + * + *

      The unit is SECONDS and {@code null} means "wait indefinitely" — the boxed {@code Double} is + * the same spelling used for an optional timeout elsewhere in the SDK (see {@code + * RequestOptions.timeout}). The underlying {@link #waitFor(String, long)} takes milliseconds, so + * this converts. + * + * @param timeout the maximum time to wait, in seconds ({@code null} = no timeout) + * @return the state event carrying the target state, or {@code null} on timeout + */ + public RelayEvent waitForAnswered(Double timeout) { + return waitFor(Constants.CALL_STATE_ANSWERED, timeoutToMillis(timeout)); + } + /** Block until the call is ringing (immediate if already ringing or past it). */ public RelayEvent waitForRinging() { return waitFor(Constants.CALL_STATE_RINGING); } + /** + * Block until the call is ringing, or until {@code timeout} SECONDS elapse (see {@link + * #waitForAnswered(Double)} for the unit/boxing rationale). + * + * @param timeout the maximum time to wait, in seconds ({@code null} = no timeout) + * @return the state event carrying the target state, or {@code null} on timeout + */ + public RelayEvent waitForRinging(Double timeout) { + return waitFor(Constants.CALL_STATE_RINGING, timeoutToMillis(timeout)); + } + /** Block until the call is ending (immediate if already ending or past it). */ public RelayEvent waitForEnding() { return waitFor(Constants.CALL_STATE_ENDING); } + /** + * Block until the call is ending, or until {@code timeout} SECONDS elapse (see {@link + * #waitForAnswered(Double)} for the unit/boxing rationale). + * + * @param timeout the maximum time to wait, in seconds ({@code null} = no timeout) + * @return the state event carrying the target state, or {@code null} on timeout + */ + public RelayEvent waitForEnding(Double timeout) { + return waitFor(Constants.CALL_STATE_ENDING, timeoutToMillis(timeout)); + } + /** Block until the call has ended. */ public RelayEvent waitForEnded() { return waitFor(Constants.CALL_STATE_ENDED); } + /** + * Block until the call has ended, or until {@code timeout} SECONDS elapse (see {@link + * #waitForAnswered(Double)} for the unit/boxing rationale). + * + * @param timeout the maximum time to wait, in seconds ({@code null} = no timeout) + * @return the state event carrying the target state, or {@code null} on timeout + */ + public RelayEvent waitForEnded(Double timeout) { + return waitFor(Constants.CALL_STATE_ENDED, timeoutToMillis(timeout)); + } + + /** + * Convert an optional {@code timeout} in SECONDS to the millisecond deadline {@link + * #waitFor(String, long)} takes. {@code null} and any non-positive value mean "wait + * indefinitely", which that method spells as {@code 0}. + */ + private static long timeoutToMillis(Double timeout) { + if (timeout == null || timeout <= 0.0) { + return 0L; + } + return (long) (timeout * 1000.0); + } + // ── Event dispatch ─────────────────────────────────────────────── /** Register an event listener on this call. */ @@ -528,6 +643,11 @@ public Map clearDigitBindings(String realm) { return executeOnCall(Constants.METHOD_CLEAR_DIGIT_BINDINGS, params); } + /** Send a user event with no {@code event} name — the key is omitted from the request params. */ + public Map userEvent() { + return userEvent(null); + } + /** Send a user event. */ public Map userEvent(String event) { Map params = callParams(); @@ -544,6 +664,14 @@ public Map liveTranscribe(Map action) { return executeOnCall(Constants.METHOD_LIVE_TRANSCRIBE, params); } + /** + * Start live translation with no options — the optional params ({@code status_url} and any + * additional keys) are all left absent from the request. + */ + public Map liveTranslate(Map action) { + return liveTranslate(action, null); + } + /** Start live translation. */ public Map liveTranslate( Map action, Map options) { @@ -555,6 +683,14 @@ public Map liveTranslate( return executeOnCall(Constants.METHOD_LIVE_TRANSLATE, params); } + /** + * SIP REFER transfer with no options — the optional params ({@code status_url} and any additional + * keys) are all left absent from the request. + */ + public Map refer(Map deviceSpec) { + return refer(deviceSpec, null); + } + /** SIP REFER transfer. */ public Map refer(Map deviceSpec, Map options) { Map params = callParams(); @@ -613,6 +749,14 @@ public Map leaveConference(String conferenceId) { // ── Room methods ───────────────────────────────────────────────── + /** + * Join a room with no options — the optional params ({@code status_url} and any additional keys) + * are all left absent from the request. + */ + public Map joinRoom(String name) { + return joinRoom(name, null); + } + /** Join a room. */ public Map joinRoom(String name, Map options) { Map params = callParams(); @@ -724,8 +868,7 @@ public Action.RecordAction record(Map recordConfig, Map}} on the wire to match the Python {@code call.record(audio=..., - * control_id=...)} pattern. + * record: {audio: }} on the wire. */ public Action.RecordAction recordAudio(Map audioConfig, String controlId) { Map recordCfg = new LinkedHashMap<>(); @@ -1357,6 +1500,14 @@ public Map aiHold(Map options) { return executeOnCall(Constants.METHOD_AI_HOLD, params); } + /** + * Resume AI from hold with no options — the optional params ({@code prompt} and any additional + * keys) are all left absent from the request. + */ + public Map aiUnhold() { + return aiUnhold(null); + } + /** Resume AI from hold. */ public Map aiUnhold(Map options) { Map params = callParams(); @@ -1416,6 +1567,11 @@ private static void mergeWithoutKey( } } + /** + * A short diagnostic rendering carrying the call id, state, and direction. + * + * @return the diagnostic string. + */ @Override public String toString() { return String.format("Call{id=%s, state=%s, direction=%s}", callId, state, direction); diff --git a/src/main/java/com/signalwire/sdk/relay/CallState.java b/src/main/java/com/signalwire/sdk/relay/CallState.java index 624a05ab..99aa230d 100644 --- a/src/main/java/com/signalwire/sdk/relay/CallState.java +++ b/src/main/java/com/signalwire/sdk/relay/CallState.java @@ -11,9 +11,9 @@ * *

      The RELAY server pushes the current call state as a bare string on every {@code * calling.call.state} event ({@code created} → {@code ringing} → {@code answered} → {@code ending} - * → {@code ended}). This enum mirrors the five values the Python reference declares in {@code - * signalwire/relay/constants.py} as {@code CALL_STATE_*} ({@link Constants#CALL_STATE_CREATED} … - * {@link Constants#CALL_STATE_ENDED}). + * → {@code ended}). This enum names those five values; each constant carries the corresponding + * {@code CALL_STATE_*} wire string ({@link Constants#CALL_STATE_CREATED} … {@link + * Constants#CALL_STATE_ENDED}). * *

      It is exposed alongside the existing string getter, never instead of it: {@link * Call#getState()} keeps returning the raw wire string (forward-compatible with any value the @@ -31,15 +31,16 @@ *

      Server-emitted, growable. These values mirror what the server sends and the * set can grow in a future protocol revision. So {@link #fromWire(String)} returns {@code null} * (and {@link Call#getCallState()} {@code Optional.empty()}) for an unrecognised value rather than - * throwing — an unknown state must never crash event dispatch. This is the Java analog of Rust's - * {@code #[non_exhaustive]} + a fallible {@code from_str}. + * throwing — an unknown state must never crash event dispatch. Treat the enum as open-ended: always + * handle the "not one of these five" case rather than assuming a {@code switch} is exhaustive over + * everything the server may send. * *

      This is a DISTINCT vocabulary from {@link DialState} and {@link * MessageState}. A {@code Call}'s lifecycle state ({@code * created/ringing/answered/ending/ended}) is not the dial outcome ({@code * dialing/answered/failed}) and not a message delivery state ({@code queued/…/delivered}). The - * three are modelled as three separate enums and are never conflated — mirroring the three separate - * {@code *_STATE_*} blocks in the Python reference's {@code constants.py}. + * three are modelled as three separate enums and are never conflated; the wire also keeps them + * separate, as three distinct {@code *_STATE_*} vocabularies. */ public enum CallState { @@ -63,7 +64,7 @@ public enum CallState { /** * The canonical wire string for this state ({@code "created"} / {@code "ringing"} / {@code * "answered"} / {@code "ending"} / {@code "ended"}) — exactly the value the server sends on - * {@code calling.call.state}. Equivalent to PHP's backed-enum {@code ->value}. + * {@code calling.call.state}. * * @return the lower-case state name as it appears on the wire. */ @@ -73,9 +74,9 @@ public String getValue() { /** * Whether this is a terminal state — i.e. the call has reached the end of its lifecycle - * and will not transition further. Only {@link #ENDED} is terminal (matching {@link - * Call#isEnded()} and the reference's {@code CALL_STATE_ENDED} terminal check); {@link #ENDING} - * is not terminal because an {@code ended} event still follows. + * and will not transition further. Only {@link #ENDED} is terminal — the same condition {@link + * Call#isEnded()} tests; {@link #ENDING} is not terminal because an {@code ended} event + * still follows. * * @return {@code true} iff this state is {@link #ENDED}. */ @@ -86,8 +87,8 @@ public boolean isTerminal() { /** * Parse a wire string into a {@link CallState}, or return {@code null} if it is not one of the * five recognised states. Because the set mirrors server-emitted values that may grow, an unknown - * string is tolerated (returns {@code null}) rather than rejected with an exception — the Java - * analog of a fallible {@code from_str} over a {@code #[non_exhaustive]} enum. + * string is tolerated (returns {@code null}) rather than rejected with an exception, so a + * protocol revision that adds a state cannot break event dispatch. * * @param wire the candidate wire string (case-sensitive), may be {@code null}. * @return the matching constant, or {@code null} if none matches. diff --git a/src/main/java/com/signalwire/sdk/relay/Constants.java b/src/main/java/com/signalwire/sdk/relay/Constants.java index 61db126a..41e48b0b 100644 --- a/src/main/java/com/signalwire/sdk/relay/Constants.java +++ b/src/main/java/com/signalwire/sdk/relay/Constants.java @@ -222,10 +222,9 @@ public static boolean isCallGoneCode(String code) { } /** - * Whether a RELAY result {@code code} is a 2xx success. Mirrors the Python reference {@code - * _SUCCESS_CODE_RE = re.compile(r"^2\d{2}$")} (relay/client.py:77): any {@code 2xx} string is - * success; every other code (including 404/410/500) is a non-success the response dispatcher - * raises on. {@code null}/empty is treated as success (no code = handshake-style result). + * Whether a RELAY result {@code code} is a 2xx success. Any {@code 2xx} string is success; every + * other code (including 404/410/500) is a non-success the response dispatcher raises on. {@code + * null}/empty is treated as success (no code = handshake-style result). */ public static boolean isSuccessCode(String code) { return code == null diff --git a/src/main/java/com/signalwire/sdk/relay/Device.java b/src/main/java/com/signalwire/sdk/relay/Device.java index eeaa8bc0..fda7ef60 100644 --- a/src/main/java/com/signalwire/sdk/relay/Device.java +++ b/src/main/java/com/signalwire/sdk/relay/Device.java @@ -47,8 +47,8 @@ * "from_number", "+15553334444")))), null); * } * - *

      Python uses a bare {@code dict} for this object, so there is no reference equivalent — this is - * a documented Java addition. + *

      A typed stand-in for what the wire carries as an untyped object, so the fields are + * discoverable and checked at compile time. */ public final class Device { @@ -145,6 +145,12 @@ public Map toMap() { return m; } + /** + * Two devices are equal when they have the same type AND the same parameters. + * + * @param o the object to compare with. + * @return {@code true} when both fields match. + */ @Override public boolean equals(Object o) { if (this == o) { @@ -157,11 +163,22 @@ public boolean equals(Object o) { return type.equals(other.type) && params.equals(other.params); } + /** + * Hash over the type and parameters, consistent with {@link #equals(Object)}. + * + * @return the hash code. + */ @Override public int hashCode() { return java.util.Objects.hash(type, params); } + /** + * A diagnostic rendering of the device type and its parameters. Note the parameters include + * dialing details such as the numbers involved. + * + * @return the diagnostic string. + */ @Override public String toString() { return "Device{type=" + type + ", params=" + params + "}"; diff --git a/src/main/java/com/signalwire/sdk/relay/DialState.java b/src/main/java/com/signalwire/sdk/relay/DialState.java index 2ed7b827..5c9941f8 100644 --- a/src/main/java/com/signalwire/sdk/relay/DialState.java +++ b/src/main/java/com/signalwire/sdk/relay/DialState.java @@ -12,10 +12,10 @@ * *

      A dial progresses {@code dialing} → {@code answered} (a leg won) or {@code dialing} → {@code * failed} (every leg gave up). The RELAY server reports it as the bare {@code dial_state} field on - * each {@code calling.call.dial} event. This enum mirrors the three values the Java port declares - * in {@code Constants} as {@code DIAL_STATE_*} ({@link Constants#DIAL_STATE_DIALING} / {@link - * Constants#DIAL_STATE_ANSWERED} / {@link Constants#DIAL_STATE_FAILED}), which back the - * dial-completion logic in {@code RelayClient.handleDialEvent}. + * each {@code calling.call.dial} event. Each constant is backed by the corresponding {@code + * DIAL_STATE_*} constant ({@link Constants#DIAL_STATE_DIALING} / {@link + * Constants#DIAL_STATE_ANSWERED} / {@link Constants#DIAL_STATE_FAILED}), the same values that drive + * the dial-completion logic in {@code RelayClient.handleDialEvent}. * *

      It is exposed alongside the existing string getter, never instead of it: {@link * RelayEvent.CallDialEvent#getDialState()} keeps returning the raw wire string @@ -36,9 +36,9 @@ * .ifPresent(s -> ...); * } * - *

      Server-emitted, growable — {@link #fromWire(String)} returns {@code null} for - * an unrecognised value rather than throwing (the Java analog of Rust's {@code #[non_exhaustive]} + - * fallible {@code from_str}); an unknown dial state must never crash event dispatch. + *

      Server-emitted, growable — treat the set as open: {@link #fromWire(String)} + * returns {@code null} for an unrecognised value rather than throwing, because a dial state the + * server adds later must never crash event dispatch. * *

      This is a DISTINCT vocabulary from {@link CallState} and {@link * MessageState}. A dial outcome ({@code dialing/answered/failed}) is not a call lifecycle @@ -64,7 +64,7 @@ public enum DialState { /** * The canonical wire string for this dial outcome ({@code "dialing"} / {@code "answered"} / * {@code "failed"}) — exactly the {@code dial_state} value the server sends on {@code - * calling.call.dial}. Equivalent to PHP's backed-enum {@code ->value}. + * calling.call.dial}. * * @return the lower-case dial-state name as it appears on the wire. */ diff --git a/src/main/java/com/signalwire/sdk/relay/FrameScrub.java b/src/main/java/com/signalwire/sdk/relay/FrameScrub.java index 433294fe..31f4d6bc 100644 --- a/src/main/java/com/signalwire/sdk/relay/FrameScrub.java +++ b/src/main/java/com/signalwire/sdk/relay/FrameScrub.java @@ -11,13 +11,11 @@ /** * Masks credential VALUES in a raw RELAY frame before it is logged, so a {@code * SIGNALWIRE_LOG_LEVEL=debug} session never emits live credentials or the {@code - * authorization_state} re-auth blob (the SECRET-SCRUB contract, PSDK-5). + * authorization_state} re-auth blob. * - *

      Mirrors the Python reference {@code _scrub_frame} / {@code _SCRUB_RE} - * (relay/client.py:108-127): the string values of {@code token} / {@code project} / {@code - * jwt_token} / {@code authorization_state} keys are replaced with {@code "***"} wherever they - * appear in the JSON frame; all structural / non-credential content is preserved so the frame stays - * diagnostic. + *

      The string values of the {@code token} / {@code project} / {@code jwt_token} / {@code + * authorization_state} keys are replaced with {@code "***"} wherever they appear in the JSON frame; + * all structural / non-credential content is preserved so the frame stays diagnostic. */ final class FrameScrub { diff --git a/src/main/java/com/signalwire/sdk/relay/Message.java b/src/main/java/com/signalwire/sdk/relay/Message.java index e020461d..c366c234 100644 --- a/src/main/java/com/signalwire/sdk/relay/Message.java +++ b/src/main/java/com/signalwire/sdk/relay/Message.java @@ -59,26 +59,60 @@ public Message(String messageId) { // ── Getters ────────────────────────────────────────────────────── + /** + * The platform's identifier for this message, returned by {@code messaging.send} and echoed on + * every {@code messaging.state} event — the key state updates are routed on. + * + * @return the message id. + */ public String getMessageId() { return messageId; } + /** + * URLs of the MMS attachments carried by the message. + * + * @return the media URLs, never {@code null} (empty when there are none). + */ public List getMedia() { return media; } + /** + * How many SMS segments the message occupied — the unit billing is charged in. + * + * @return the segment count. + */ public int getSegments() { return segments; } + /** + * The message's current delivery state as sent on the wire, progressing {@code queued} to {@code + * initiated} to {@code sent} to {@code delivered}, or ending at {@code failed} / {@code + * undelivered}. Kept as a string so a server-side addition to the set does not break dispatch. + * + * @return the raw state, or {@code null} before the first event. + */ public String getState() { return state; } + /** + * Client-supplied correlation tags carried on the message. + * + * @return the tags, never {@code null} (empty when none were set). + */ public List getTags() { return tags; } + /** + * Whether the message has reached a terminal state ({@code delivered}, {@code undelivered}, or + * {@code failed}). + * + * @return {@code true} once the message has settled. + */ public boolean isDone() { return done; } @@ -147,44 +181,113 @@ public Optional getResult() { // ── Setters ────────────────────────────────────────────────────── + /** + * Update the context from a later event frame. + * + * @param context the messaging context. + */ public void setContext(String context) { this.context = context; } + /** + * Update the direction ({@code inbound} or {@code outbound}) from a later event frame. + * + * @param direction the message direction. + */ public void setDirection(String direction) { this.direction = direction; } + /** + * Update the sender number (E.164) from a later event frame. + * + * @param fromNumber the sender number. + */ public void setFromNumber(String fromNumber) { this.fromNumber = fromNumber; } + /** + * Update the destination number (E.164) from a later event frame. + * + * @param toNumber the destination number. + */ public void setToNumber(String toNumber) { this.toNumber = toNumber; } + /** + * Update the message text from a later event frame. For an inbound message this is untrusted + * end-user input. + * + * @param body the message text. + */ public void setBody(String body) { this.body = body; } + /** + * Update the MMS attachment URLs from a later event frame. + * + * @param media the media URLs; {@code null} is stored as an empty list. + */ public void setMedia(List media) { this.media = media != null ? media : Collections.emptyList(); } + /** + * Update the segment count from a later event frame. + * + * @param segments the segment count. + */ public void setSegments(int segments) { this.segments = segments; } + /** + * Update the correlation tags from a later event frame. + * + * @param tags the tags; {@code null} is stored as an empty list. + */ public void setTags(List tags) { this.tags = tags != null ? tags : Collections.emptyList(); } + /** + * Overwrite the delivery state directly. Note this does NOT evaluate terminality — it will not + * resolve the message or fire the completion callback the way an incoming state event does. + * + * @param state the raw wire state. + */ public void setState(String state) { this.state = state; } + /** + * Register a callback to fire when the message reaches a terminal state. + * + *

      Safe against the genuine race where the terminal event lands on the RELAY reader thread + * before this registration: if the message has ALREADY resolved, the callback fires immediately + * rather than being silently dropped. It fires exactly once either way. Matches {@link + * com.signalwire.sdk.relay.Action#setOnCompleted(java.util.function.Consumer)}. + * + * @param onCompleted the callback, invoked with this message. + */ public void setOnCompleted(Consumer onCompleted) { - this.onCompleted = onCompleted; + // If the message has ALREADY resolved (the terminal event landed on the RELAY + // reader thread before this registration — a genuine race for a caller that + // sets the callback after dispatching the message), fire immediately so a late + // registration is never silently dropped. Otherwise store it for resolve() to + // fire. Guarded on `done` (set inside resolve()) so exactly one fire happens. + synchronized (this) { + this.onCompleted = onCompleted; + if (done && onCompleted != null) { + Consumer cb = this.onCompleted; + this.onCompleted = null; // prevent a double-fire if resolve() also races + cb.accept(this); + } + } } /** Register a state change listener. */ @@ -237,52 +340,72 @@ public RelayEvent waitForCompletion(long timeoutMs) { /** * The terminal {@link RelayEvent}, or {@code null} if the message has not yet reached a terminal - * state. Python-surface name for the reference's {@code Message.result} property (the {@link - * #getResult()} accessor returns the same value wrapped in an {@link Optional}). + * state. The {@link #getResult()} accessor returns the same value wrapped in an {@link Optional}. + * + * @return the terminal event, or {@code null}. */ public RelayEvent result() { return done ? result : null; } /** - * Block until the message reaches a terminal state, returning the terminal event. Java-idiom name - * for the reference's {@code Message.wait}: the bare name {@code wait} collides with {@code - * java.lang.Object.wait()} (final, non-overridable), so this port names it {@code await} and the - * enumerator's rename table maps {@code await} → {@code wait} (adapter rename, not omission). + * Block until the message reaches a terminal state, returning the terminal event. The name is + * {@code await} because the bare name {@code wait} collides with {@code java.lang.Object.wait()}, + * which is final and cannot be overridden. + * + * @return the terminal event. */ public RelayEvent await() { return waitForCompletion(); } /** - * Block until the message reaches a terminal state, with a timeout. Java-idiom name for the - * reference's {@code Message.wait(timeout)} (see {@link #await()}). + * Block until the message reaches a terminal state, with a timeout (see {@link #await()} for why + * the name is {@code await} rather than {@code wait}). + * + *

      The unit is SECONDS and the type is boxed {@code Double} — the same spelling as {@code + * RequestOptions.timeout}; {@code null} means "wait indefinitely". Note that {@link + * #waitForCompletion(long)} takes MILLISECONDS instead. * - * @param timeoutMs timeout in milliseconds + * @param timeout timeout in seconds ({@code null} = no timeout) * @return the terminal event, or null on timeout */ - public RelayEvent await(long timeoutMs) { - return waitForCompletion(timeoutMs); + public RelayEvent await(Double timeout) { + if (timeout == null || timeout <= 0.0) { + return waitForCompletion(); + } + return waitForCompletion((long) (timeout * 1000.0)); } /** Resolve the message completion. */ void resolve(RelayEvent event) { - if (!done) { + // Set `done` + fire the callback atomically vs setOnCompleted(): the terminal + // event arrives on the RELAY reader thread and can race a caller registering + // its callback on another thread. The lock guarantees exactly one of the two + // fires the callback (resolve() here, or setOnCompleted() when it observes + // done==true), never zero and never twice. + synchronized (this) { + if (done) { + return; + } this.done = true; this.result = event; - this.completionFuture.complete(event); - fireOnCompleted(); - } - } - - private void fireOnCompleted() { - if (onCompleted != null) { - try { - onCompleted.accept(this); - } catch (Exception e) { - log.error("Error in onCompleted callback for message " + messageId, e); + // Fire onCompleted BEFORE completing the future. The Python reference is + // async single-threaded, so its `_done.set_result()` then `_on_completed()` + // ordering guarantees any `await`-er resumes only after the callback has run. + // Firing first preserves that guarantee (callback observed no later than + // completion) race-free. + Consumer cb = this.onCompleted; + this.onCompleted = null; // one-shot: a later setOnCompleted sees done and fires itself + if (cb != null) { + try { + cb.accept(this); + } catch (Exception e) { + log.error("Error in onCompleted callback for message " + messageId, e); + } } } + this.completionFuture.complete(event); } /** Create a Message from an inbound receive event. */ @@ -300,6 +423,12 @@ public static Message fromReceiveEvent(RelayEvent.MessagingReceiveEvent event) { return msg; } + /** + * A short diagnostic rendering carrying the message id, state, and the two numbers — deliberately + * excludes the body, which for an inbound message is end-user content. + * + * @return the diagnostic string. + */ @Override public String toString() { return String.format( diff --git a/src/main/java/com/signalwire/sdk/relay/MessageState.java b/src/main/java/com/signalwire/sdk/relay/MessageState.java index 60c6e503..178ee20a 100644 --- a/src/main/java/com/signalwire/sdk/relay/MessageState.java +++ b/src/main/java/com/signalwire/sdk/relay/MessageState.java @@ -12,11 +12,11 @@ *

      An outbound message progresses {@code queued} → {@code initiated} → {@code sent} → {@code * delivered} (success) or → {@code undelivered} / {@code failed} (failure); an inbound message * arrives as {@code received}. The RELAY server reports the state as the bare {@code message_state} - * field on {@code messaging.state} (outbound) and {@code messaging.receive} (inbound) events. This - * enum mirrors the seven values the Python reference declares in {@code - * signalwire/relay/constants.py} as {@code MESSAGE_STATE_*} ({@link Constants#MESSAGE_STATE_QUEUED} - * … {@link Constants#MESSAGE_STATE_RECEIVED}). The {@code messaging.state} wire schema enumerates - * the six outbound values; {@code received} is the inbound-only seventh. + * field on {@code messaging.state} (outbound) and {@code messaging.receive} (inbound) events. Each + * of the seven constants is backed by the corresponding {@code MESSAGE_STATE_*} constant ({@link + * Constants#MESSAGE_STATE_QUEUED} … {@link Constants#MESSAGE_STATE_RECEIVED}). The {@code + * messaging.state} wire schema enumerates the six outbound values; {@code received} is the + * inbound-only seventh. * *

      It is exposed alongside the existing string getter, never instead of it: {@link * Message#getState()} keeps returning the raw wire string (forward-compatible), while {@link @@ -31,14 +31,13 @@ * } * *

      Terminal semantics. The terminal set is {@link #DELIVERED}, {@link - * #UNDELIVERED}, {@link #FAILED} — exactly the reference's {@code MESSAGE_TERMINAL_STATES} and the - * set {@link Constants#isTerminalMessageState(String)} checks (the state at which {@link Message} - * resolves its completion future). {@code received} is NOT terminal: it is an inbound arrival, not - * the end of an outbound delivery lifecycle. + * #UNDELIVERED}, {@link #FAILED} — exactly the set {@link Constants#isTerminalMessageState(String)} + * checks, and the state at which {@link Message} resolves its completion future. {@code received} + * is NOT terminal: it is an inbound arrival, not the end of an outbound delivery lifecycle. * - *

      Server-emitted, growable — {@link #fromWire(String)} returns {@code null} for - * an unrecognised value rather than throwing (the Java analog of Rust's {@code #[non_exhaustive]} + - * fallible {@code from_str}); an unknown message state must never crash event dispatch. + *

      Server-emitted, growable — treat the set as open: {@link #fromWire(String)} + * returns {@code null} for an unrecognised value rather than throwing, because a message state the + * server adds later must never crash event dispatch. * *

      This is a DISTINCT vocabulary from {@link CallState} and {@link DialState}. A * message delivery state is neither a call lifecycle state nor a dial outcome; the three enums are @@ -70,8 +69,7 @@ public enum MessageState { /** * The canonical wire string for this state ({@code "queued"} / {@code "initiated"} / {@code * "sent"} / {@code "delivered"} / {@code "undelivered"} / {@code "failed"} / {@code "received"}) - * — exactly the {@code message_state} value the server sends. Equivalent to PHP's backed-enum - * {@code ->value}. + * — exactly the {@code message_state} value the server sends. * * @return the lower-case state name as it appears on the wire. */ @@ -82,9 +80,9 @@ public String getValue() { /** * Whether this is a terminal delivery state — i.e. the outbound message has a final * delivery outcome and will not transition further. The terminal set is {@link #DELIVERED}, - * {@link #UNDELIVERED}, {@link #FAILED} (matching the reference's {@code MESSAGE_TERMINAL_STATES} - * and {@link Constants#isTerminalMessageState(String)}). {@link #RECEIVED} is NOT terminal (it is - * an inbound arrival, not an outbound completion). + * {@link #UNDELIVERED}, {@link #FAILED} — the same set {@link + * Constants#isTerminalMessageState(String)} checks. {@link #RECEIVED} is NOT terminal (it is an + * inbound arrival, not an outbound completion). * * @return {@code true} iff this state is {@link #DELIVERED}, {@link #UNDELIVERED}, or {@link * #FAILED}. diff --git a/src/main/java/com/signalwire/sdk/relay/RelayClient.java b/src/main/java/com/signalwire/sdk/relay/RelayClient.java index 8fa6cb4d..290be041 100644 --- a/src/main/java/com/signalwire/sdk/relay/RelayClient.java +++ b/src/main/java/com/signalwire/sdk/relay/RelayClient.java @@ -105,10 +105,11 @@ public class RelayClient implements AutoCloseable { /** * Server-assigned session id captured from the {@code signalwire.connect} handshake result - * ({@code result.sessionid}). Kept OFF the public surface — the Python reference does not expose - * it either. Tests read it through the package-private {@link #sessionIdForTesting()} accessor to - * scope a mock-relay harness view to this client's own frames (parallel-test isolation). - * Production code never needs it. + * ({@code result.sessionid}). Deliberately kept OFF the public surface: it is a transport detail + * re-issued by the server on each handshake, so no caller should build on it. Tests read it + * through the package-private {@link #sessionIdForTesting()} accessor to scope a mock-relay + * harness view to this client's own frames (parallel-test isolation). Production code never needs + * it. */ private volatile String sessionId; @@ -128,8 +129,7 @@ public class RelayClient implements AutoCloseable { /** * JSON-RPC id -> request method, so the response dispatcher can skip result-code checking for the * {@code signalwire.connect} handshake (whose result carries no {@code code}) while raising - * {@link RelayError} on a non-2xx code for every calling/messaging verb. Mirrors the Python - * reference's {@code _pending_methods} (relay/client.py:749). + * {@link RelayError} on a non-2xx code for every calling/messaging verb. */ private final ConcurrentHashMap pendingMethods = new ConcurrentHashMap<>(); @@ -154,22 +154,22 @@ public class RelayClient implements AutoCloseable { private record QueuedRequest(String json, CompletableFuture> future) {} /** - * Per-request response deadline (ms). Mirrors the reference {@code _EXECUTE_TIMEOUT}. Not final - * so the relay-liveness dump can tighten it to keep the bounded-window fixtures fast (mirroring - * the python driver monkeypatching {@code _EXECUTE_TIMEOUT}); production callers never change it. + * Per-request response deadline (ms): how long {@link #execute} waits for the matching JSON-RPC + * response before failing. Not {@code final} only so the relay-liveness dump can tighten it and + * keep its bounded-window fixtures fast; production callers never change it. */ private volatile long executeTimeoutMs = 30_000; - /** Max requests buffered while disconnected before {@link #execute} raises (reference cap). */ + /** Max requests buffered while disconnected before {@link #execute} raises. */ private static final int EXECUTE_QUEUE_MAX = 100; // ── Client-side ping / half-open detection ─────────────────────── /** * Client ping interval (ms) + max consecutive ping failures before the connection is declared - * half-open and force-closed for reconnect. Mirrors the reference {@code _CLIENT_PING_INTERVAL} / - * {@code _MAX_PING_FAILURES} (client.py:86-88). A half-open peer (socket still open, peer stopped - * answering) is otherwise undetectable — the client would hang forever. Package-settable so the - * relay-liveness dump can drive detection inside the bounded test window. + * half-open and force-closed for reconnect. A half-open peer (socket still open, peer stopped + * answering) is otherwise undetectable — the client would hang forever waiting on a response that + * can never arrive. Package-settable so the relay-liveness dump can drive detection inside the + * bounded test window. */ private volatile long clientPingIntervalMs = 30_000; @@ -187,14 +187,13 @@ private record QueuedRequest(String json, CompletableFuture> private long reconnectDelay = Constants.RECONNECT_INITIAL_DELAY_MS; /** - * Max concurrent inbound calls this client will accept before dropping. Mirrors the reference - * {@code Client(max_active_calls=...)} / {@code RELAY_MAX_ACTIVE_CALLS} env var (relay/client.py: - * 90,150-160,914) — when the tracked call count reaches this cap, an inbound call is logged and - * dropped rather than dispatched. + * Max concurrent inbound calls this client will accept before dropping. Settable on the builder + * or via the {@code RELAY_MAX_ACTIVE_CALLS} environment variable — when the tracked call count + * reaches this cap, an inbound call is logged and dropped rather than dispatched. */ private final int maxActiveCalls; - /** Default cap, matching Python's {@code _DEFAULT_MAX_ACTIVE_CALLS} (relay/client.py:90). */ + /** Default concurrent-inbound-call cap when neither the builder nor the env var sets one. */ private static final int DEFAULT_MAX_ACTIVE_CALLS = 1000; // ── Thread pool ────────────────────────────────────────────────── @@ -220,10 +219,22 @@ private RelayClient(Builder builder) { // ── Builder ────────────────────────────────────────────────────── + /** + * Start configuring a RELAY client. + * + * @return a fresh {@link Builder}. + */ public static Builder builder() { return new Builder(); } + /** + * Fluent constructor for {@link RelayClient}. + * + *

      Every credential falls back to an environment variable at {@link #build()} — {@code + * SIGNALWIRE_PROJECT_ID}, {@code SIGNALWIRE_API_TOKEN}, {@code SIGNALWIRE_JWT_TOKEN}, {@code + * SIGNALWIRE_SPACE} — so a deployed client need not hard-code any of them. + */ public static class Builder { private String project; private String token; @@ -233,40 +244,81 @@ public static class Builder { private Integer maxActiveCallsOverride; private int maxActiveCalls; // resolved in build(): override > env > default + /** + * The SignalWire project UUID to authenticate as. Falls back to {@code SIGNALWIRE_PROJECT_ID}; + * not required on the JWT path, where the project is carried inside the token. + * + * @param project the project id. + * @return this builder. + */ public Builder project(String project) { this.project = project; return this; } + /** + * The API token to authenticate with. Falls back to {@code SIGNALWIRE_API_TOKEN}. This is a + * long-lived credential for the whole project — keep it out of source and out of logs. + * + * @param token the API token. + * @return this builder. + */ public Builder token(String token) { this.token = token; return this; } + /** + * A JWT to authenticate with instead of a project/token pair. Falls back to {@code + * SIGNALWIRE_JWT_TOKEN}. Supplying it makes {@link #project(String)} and {@link #token(String)} + * unnecessary, since the project is inside the token. + * + * @param jwtToken the JWT. + * @return this builder. + */ public Builder jwtToken(String jwtToken) { this.jwtToken = jwtToken; return this; } + /** + * The RELAY host to connect to. Falls back to {@code SIGNALWIRE_SPACE}, then to {@code + * relay.signalwire.com}, so it never itself causes a build failure. + * + * @param space the space hostname. + * @return this builder. + */ public Builder space(String space) { this.space = space; return this; } + /** + * Alias of {@link #space(String)} — sets the same RELAY host. + * + * @param host the space hostname. + * @return this builder. + */ public Builder host(String host) { this.space = host; return this; } + /** + * Contexts to subscribe to at connect time. Inbound calls and messages are only delivered for + * contexts the client subscribed to, so an empty list means nothing inbound arrives. + * + * @param contexts the context names. + * @return this builder. + */ public Builder contexts(List contexts) { this.contexts = contexts; return this; } /** - * Cap on concurrent inbound calls before new inbound calls are dropped. Mirrors the reference - * {@code Client(max_active_calls=...)} (relay/client.py:125). When unset here, the {@code - * RELAY_MAX_ACTIVE_CALLS} env var is consulted, then the default of {@value + * Cap on concurrent inbound calls before new inbound calls are dropped. When unset here, the + * {@code RELAY_MAX_ACTIVE_CALLS} env var is consulted, then the default of {@value * #DEFAULT_MAX_ACTIVE_CALLS}. * * @param maxActiveCalls the cap; clamped to at least 1 @@ -276,9 +328,24 @@ public Builder maxActiveCalls(int maxActiveCalls) { return this; } - /** Default RELAY host, matching Python's DEFAULT_RELAY_HOST (relay/constants.py). */ + /** + * Default RELAY host, used when neither {@link #space} nor {@code SIGNALWIRE_SPACE} supplies + * one — so the space is never missing at connect time. + */ private static final String DEFAULT_RELAY_HOST = "relay.signalwire.com"; + /** + * Resolve credentials and construct the client. + * + *

      Credentials fail PRE-CONNECT rather than at connect time, with a message naming the + * missing credential and its environment variable. An EMPTY value counts as missing — the + * client will not attempt to connect with one. On the JWT path neither project nor token is + * required. + * + * @return the constructed client. + * @throws IllegalArgumentException when no JWT was supplied and either the project or the API + * token is missing or empty. + */ public RelayClient build() { // Env-var fallback for any credential not set explicitly — parity with // Python's relay Client() (relay/client.py), which reads @@ -342,37 +409,61 @@ private static String envOrNull(String key) { // ── Public API ─────────────────────────────────────────────────── + /** + * The project UUID this client authenticates as. + * + * @return the project id, or {@code null} on the JWT-only path. + */ public String getProject() { return project; } + /** + * The RELAY host this client connects to. + * + * @return the space hostname, defaulted to {@code relay.signalwire.com} when nothing set it. + */ public String getSpace() { return space; } /** * The API token (the {@code token} construction param), resolved from {@code - * SIGNALWIRE_API_TOKEN} when not passed explicitly. The reference stores this as a public - * attribute ({@code self.token}, relay/client.py:172) and a caller that supplied it must be able - * to read it back — the same value it just provided. + * SIGNALWIRE_API_TOKEN} when not passed explicitly. Readable so a caller that let the environment + * supply the credential can see which one the client actually resolved. + * + * @return the API token; may be {@code null} on the JWT auth path, where it is not required. */ public String getToken() { return token; } /** - * The JWT token (the {@code jwt_token} construction param), resolved from {@code - * SIGNALWIRE_JWT_TOKEN} when not passed explicitly; empty when JWT auth is not in use. Mirrors - * the reference's public {@code self.jwt_token} (relay/client.py:173). + * The JWT token (the {@code jwtToken} construction param), resolved from {@code + * SIGNALWIRE_JWT_TOKEN} when not passed explicitly. + * + * @return the JWT; {@code null} or empty when JWT auth is not in use, in which case the client + * authenticates with the project/token pair instead. */ public String getJwtToken() { return jwtToken; } + /** + * The contexts this client subscribed to. Inbound traffic arrives only for these. + * + * @return an unmodifiable view of the subscribed context names. + */ public List getContexts() { return Collections.unmodifiableList(contexts); } + /** + * Whether the WebSocket is currently up AND the {@code signalwire.connect} handshake has + * completed. + * + * @return {@code true} when the client is connected. + */ public boolean isConnected() { return connected; } @@ -403,10 +494,10 @@ public void setRelayProtocol(String protocol) { /** * Package-private, test-only accessor for the server-assigned session id captured at the {@code - * signalwire.connect} handshake. NOT part of the public API surface (the Python reference keeps - * {@code sessionid} internal too) — it exists so the in-package {@code RelayMockTest} harness can - * scope its journal reads / resets / pushes to this client's own session, making mock-backed - * tests parallel-safe. Returns {@code null} until the handshake completes. + * signalwire.connect} handshake. NOT part of the public API surface — it exists so the in-package + * {@code RelayMockTest} harness can scope its journal reads / resets / pushes to this client's + * own session, making mock-backed tests parallel-safe. Returns {@code null} until the handshake + * completes. */ String sessionIdForTesting() { return sessionId; @@ -444,8 +535,8 @@ public void run() { * Open the WebSocket connection and complete the signalwire.connect handshake without blocking * the caller. * - *

      Mirrors the Python {@code RelayClient.connect()} coroutine. Tests use this directly; - * production code typically uses {@link #run()} instead. + *

      Returns once the handshake completes rather than parking the thread for the connection's + * lifetime; production code typically uses {@link #run()} instead, which does block. * * @param timeoutMs how long to wait for the handshake to complete * @throws RelayError if connect fails or times out (like {@link #dial}, which also throws {@code @@ -500,9 +591,8 @@ public void disconnect() { * } * * Releases the same resources as {@link #disconnect()} — closes the RELAY WebSocket, releases the - * {@link #run()} latch, and shuts the worker {@link java.util.concurrent.ExecutorService} down — - * so the client is the rough Java parallel of Python's {@code async with RelayClient(...)} - * context manager. Idempotent: a second call is a harmless no-op. + * {@link #run()} latch, and shuts the worker {@link java.util.concurrent.ExecutorService} down. + * Idempotent: a second call is a harmless no-op. */ @Override public void close() { @@ -654,10 +744,9 @@ public Message sendMessage( /** * Execute an RPC method and wait for the response. * - *

      Mirrors the Python reference {@code RelayClient._send_request} (relay/client.py:730): a - * request timeout, an error frame, a non-2xx result code, or a dead/half-open connection RAISES - * {@link RelayError} — the failure is NEVER swallowed into an empty map (the old behavior that - * made a dead-connection {@code play()}/{@code hangup()} "succeed" silently). On timeout the + *

      A request timeout, an error frame, a non-2xx result code, or a dead/half-open connection + * RAISES {@link RelayError} — the failure is NEVER swallowed into an empty map, which would make + * a dead-connection {@code play()} / {@code hangup()} appear to succeed. On timeout the * connection is force-closed for reconnect (a timeout signals a half-open peer). A request issued * while disconnected is QUEUED for delivery after reconnect rather than dropped. * @@ -733,9 +822,9 @@ public Map execute(String method, Map params) { } /** - * Execute an RPC method on a call, swallowing ONLY the call-gone codes 404/410. Mirrors the - * Python reference contract (A2): a 404/410 result means the call is already gone, so the verb is - * a no-op; any OTHER non-2xx (e.g. 500) propagates as a {@link RelayError} from {@link #execute}. + * Execute an RPC method on a call, swallowing ONLY the call-gone codes 404/410: those mean the + * call has already ended, so the verb is a harmless no-op. Any OTHER non-2xx (e.g. 500) + * propagates as a {@link RelayError} from {@link #execute}. */ Map executeOnCall(String method, Map params) { try { @@ -935,8 +1024,8 @@ private void handleDisconnect() { /** * Force-close the WebSocket to trigger reconnect. Called when a request times out (a half-open - * peer): the socket looks open but the peer is dead. Mirrors the reference {@code _force_close} - * (client.py:1284). + * peer): the socket looks open but the peer is dead, so only tearing it down gets a working + * connection back. */ private void forceClose() { connected = false; @@ -952,8 +1041,9 @@ private void forceClose() { } /** - * Send any requests buffered while disconnected, once the connection is (re)established. Mirrors - * the reference {@code _flush_execute_queue} (client.py:776). + * Send any requests buffered while disconnected, once the connection is (re)established. A queued + * request whose send fails has its awaiting future completed exceptionally rather than being + * silently dropped. */ private void flushExecuteQueue() { InternalWebSocket ws = webSocket; @@ -979,8 +1069,8 @@ private void flushExecuteQueue() { /** * Start the client-side ping watchdog: every {@link #clientPingIntervalMs} send a {@code * signalwire.ping} and require a timely response; after {@link #maxPingFailures} consecutive - * failures the peer is half-open and the connection is force-closed for reconnect. Mirrors the - * reference {@code _ping_loop} (client.py:1217). Idempotent per connection. + * failures the peer is half-open and the connection is force-closed for reconnect. Idempotent per + * connection: starting it again stops the previous watchdog first. */ private void startPingWatchdog() { stopPingWatchdog(); @@ -1056,9 +1146,9 @@ private Map pingOnce(long deadlineMs) { } /** - * Timing knobs for the relay-liveness dump (mirror the reference monkeypatch of {@code - * _EXECUTE_TIMEOUT}/{@code _CLIENT_PING_INTERVAL}/{@code _MAX_PING_FAILURES}). Package- private - * so it stays off the public surface; the relay-liveness dump lives in this package. + * Tighten the execute timeout, the ping interval, and the ping-failure threshold so the + * relay-liveness dump can exercise half-open detection inside a bounded test window. Package- + * private so it stays off the public surface; the relay-liveness dump lives in this package. */ void setLivenessTimingsForTesting(long execTimeoutMs, long pingIntervalMs, int maxPings) { this.executeTimeoutMs = execTimeoutMs; @@ -1410,12 +1500,25 @@ public InternalWebSocket(URI serverUri) { super(serverUri); } + /** + * WebSocket opened: begins the RELAY authentication handshake. Being open is not yet being + * connected — {@link RelayClient#isConnected()} stays false until the handshake completes. + * + * @param handshakedata the server's handshake. + */ @Override public void onOpen(ServerHandshake handshakedata) { log.info("WebSocket connected to %s", getURI()); authenticate(); } + /** + * A frame arrived: dispatched to the RELAY message handler. Any exception the handler raises is + * logged and swallowed, so one bad frame cannot kill the reader thread and take the session + * with it. + * + * @param message the raw frame text. + */ @Override public void onMessage(String message) { try { @@ -1425,12 +1528,25 @@ public void onMessage(String message) { } } + /** + * WebSocket closed: runs the disconnect path, which is what drives reconnection. + * + * @param code the close code. + * @param reason the close reason. + * @param remote whether the far end initiated the close. + */ @Override public void onClose(int code, String reason, boolean remote) { log.info("WebSocket closed: code=%d reason=%s remote=%s", code, reason, remote); handleDisconnect(); } + /** + * A transport-level error occurred. It is logged only — the close that follows is what actually + * drives the disconnect handling. + * + * @param ex the transport error. + */ @Override public void onError(Exception ex) { log.error("WebSocket error", ex); diff --git a/src/main/java/com/signalwire/sdk/relay/RelayError.java b/src/main/java/com/signalwire/sdk/relay/RelayError.java index b6098684..e9ba8456 100644 --- a/src/main/java/com/signalwire/sdk/relay/RelayError.java +++ b/src/main/java/com/signalwire/sdk/relay/RelayError.java @@ -10,25 +10,22 @@ * Runtime exception for RELAY-level failures (request timeout, error-frame, non-2xx result code, * dead/half-open connection, dial timeout, connect rejected, etc.). * - *

      Mirrors the Python reference {@code RelayError(code, message)} (relay/client.py:1295): it - * carries the RELAY error {@link #getCode() code} so callers can branch on it. Server-returned + *

      Carries the RELAY error {@link #getCode() code} so callers can branch on it. Server-returned * errors use the code from the error frame / non-2xx result; client-side failures (timeout, dead - * connection) use {@link #UNKNOWN_CODE} ({@value #UNKNOWN_CODE}), matching the reference's {@code - * RelayError(-1, ...)} convention. + * connection) use {@link #UNKNOWN_CODE} ({@value #UNKNOWN_CODE}). */ public class RelayError extends RuntimeException { - /** Sentinel code for a client-side failure with no server code (Python's {@code -1}). */ + /** Sentinel code for a client-side failure that carries no server code. */ public static final int UNKNOWN_CODE = -1; private final int code; /** * The RAW server message (the {@code message} construction param). Kept separately from the - * {@link Throwable} detail message because the reference decorates the exception text ({@code - * "RELAY error {code}: {message}"}, relay/client.py:1333) while preserving the undecorated value - * as {@code self.message} (line 1332). Reading {@code getMessage()} would return the decorated - * form, so the bare one is stored explicitly. + * {@link Throwable} detail message, which is decorated as {@code "RELAY error {code}: {message}"} + * — reading {@code getMessage()} would return that decorated form, so the bare value is stored + * explicitly. */ private final String serverMessage; @@ -66,11 +63,11 @@ public int getCode() { } /** - * The raw server message (the {@code message} construction param), undecorated — the reference's - * public {@code self.message}. Named {@code getServerMessage} because {@link - * Throwable#getMessage()} is already taken by the decorated detail message (the same reason - * {@code AIChatError} uses this spelling); the surface enumerator folds it onto the reference's - * {@code message} attribute. + * The raw server message (the {@code message} construction param), undecorated. Named {@code + * getServerMessage} because {@link Throwable#getMessage()} is already taken by the decorated + * detail message — the same reason {@code AIChatError} uses this spelling. + * + * @return the undecorated server message. */ public String getServerMessage() { return serverMessage; diff --git a/src/main/java/com/signalwire/sdk/relay/RelayEvent.java b/src/main/java/com/signalwire/sdk/relay/RelayEvent.java index c0a63187..b337b7e9 100644 --- a/src/main/java/com/signalwire/sdk/relay/RelayEvent.java +++ b/src/main/java/com/signalwire/sdk/relay/RelayEvent.java @@ -37,10 +37,23 @@ public RelayEvent(String eventType, double timestamp, Map params this.params = params != null ? params : Collections.emptyMap(); } + /** + * The {@code event_type} discriminator from the outer {@code signalwire.event} envelope (for + * example {@code calling.call.play}) — the value {@link #fromRawParams(Map)} dispatches on to + * choose the typed subclass. + * + * @return the wire event type, or the empty string when the payload omitted it. + */ public String getEventType() { return eventType; } + /** + * Server-assigned event time as a Unix epoch value with fractional seconds, taken from the + * envelope's {@code timestamp}. + * + * @return the epoch timestamp, or {@code 0.0} when the payload carried no numeric timestamp. + */ public double getTimestamp() { return timestamp; } @@ -54,11 +67,25 @@ public String getCallId() { return getStringParam("call_id"); } + /** + * Read an inner-{@code params} value coerced to its string form. + * + * @param key the wire key inside the event's inner {@code params} object. + * @return the value's {@code toString()}, or {@code null} when the key is absent. + */ public String getStringParam(String key) { Object val = params.get(key); return val != null ? val.toString() : null; } + /** + * Read an inner-{@code params} value coerced to its string form, substituting a caller-supplied + * value when the key is absent. + * + * @param key the wire key inside the event's inner {@code params} object. + * @param defaultValue returned when the key is absent (a present-but-null value also yields it). + * @return the value's string form, or {@code defaultValue}. + */ public String getStringParam(String key, String defaultValue) { String val = getStringParam(key); return val != null ? val : defaultValue; @@ -75,18 +102,18 @@ public long getLongParam(String key) { } /** - * Create the appropriate typed event subclass from a raw {@code signalwire.event} payload. Alias - * of {@link #fromRawParams(Map)} under the reference's {@code RelayEvent.from_payload} name; both - * accept the outer payload ({@code event_type}/{@code timestamp}/{@code params}). + * Create the appropriate typed event subclass from a raw {@code signalwire.event} payload. An + * alias of {@link #fromRawParams(Map)}; both take the OUTER payload ({@code event_type} / {@code + * timestamp} / {@code params}), not the inner {@code params} map alone. */ public static RelayEvent fromPayload(Map payload) { return fromRawParams(payload); } /** - * Parse a raw {@code signalwire.event} payload into a typed event object. Module-level free - * function analog of the reference's {@code signalwire.relay.event.parse_event}; dispatches by - * {@code event_type} to the matching subclass (falling back to a plain {@link RelayEvent}). + * Parse a raw {@code signalwire.event} payload into a typed event object: dispatches by {@code + * event_type} to the matching subclass, falling back to a plain {@link RelayEvent} for an + * unrecognised type. An alias of {@link #fromRawParams(Map)}. */ public static RelayEvent parseEvent(Map payload) { return fromRawParams(payload); @@ -153,6 +180,13 @@ public static RelayEvent fromRawParams(Map outerParams) { return new RelayEvent(eventType, timestamp, innerParams); } + /** + * A short diagnostic rendering carrying only the event type — deliberately excludes {@code + * params}, which routinely holds call/message identifiers and inbound message bodies that must + * not leak into logs. + * + * @return {@code RelayEvent{type=}}. + */ @Override public String toString() { return String.format("RelayEvent{type=%s}", eventType); @@ -208,7 +242,10 @@ static String payloadEventType(Map payload) { return getStr(payload, "event_type", ""); } - /** Extract {@code timestamp} from an outer payload's inner params, per the reference. */ + /** + * Extract {@code timestamp} from an outer payload: the inner {@code params} copy wins, falling + * back to the outer one, then to {@code 0.0}. + */ @SuppressWarnings("unchecked") static double payloadTimestamp(Map payload) { Map inner = @@ -232,33 +269,59 @@ public CallStateEvent(String eventType, double timestamp, Map pa /** * Build a {@link CallStateEvent} from a raw {@code signalwire.event} payload ({@code - * event_type}/{@code timestamp}/{@code params}). Reference {@code from_payload} classmethod. + * event_type}/{@code timestamp}/{@code params}). */ public static CallStateEvent fromPayload(Map payload) { return new CallStateEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** + * UUID of the call leg whose state changed. Every {@code calling.*} method echoes this back, so + * it is the key events are routed on to the owning {@code Call}. + */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** + * UUID of the RELAY node currently hosting this call leg. Must be sent back on every subsequent + * calling method for the leg; it can change across the call's lifetime. + */ public String getNodeId() { return getStringParam("node_id"); } + /** + * Lifecycle state of the call leg: {@code created}, {@code ringing}, {@code answered} or {@code + * ended}. See {@link CallState} for the typed form. + */ public String getCallState() { return getStringParam("call_state"); } + /** + * Why the leg terminated (for example {@code hangup}, {@code busy}, {@code noAnswer}, {@code + * error}). Only populated once {@link #getCallState()} reaches {@code ended}. + */ public String getEndReason() { return getStringParam("end_reason"); } + /** + * Client-supplied correlation tag echoed from the originating {@code calling.dial}. Because the + * dial RPC response carries no {@code call_id}, this is how an outbound leg is matched to the + * request that created it. + */ public String getTag() { return getStringParam("tag"); } + /** + * Whether this leg was placed by the client ({@code outbound}) or arrived from the network + * ({@code inbound}). + */ public String getDirection() { return getStringParam("direction"); } @@ -276,25 +339,39 @@ public CallReceiveEvent(String eventType, double timestamp, Map /** * Build a {@link CallReceiveEvent} from a raw {@code signalwire.event} payload ({@code - * event_type}/{@code timestamp}/{@code params}). Reference {@code from_payload} classmethod. + * event_type}/{@code timestamp}/{@code params}). */ public static CallReceiveEvent fromPayload(Map payload) { return new CallReceiveEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** + * UUID the platform assigned the inbound leg. Use it for every subsequent calling method — the + * call does not exist to the client under any other identifier. + */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** UUID of the RELAY node hosting the inbound leg; required on every calling method for it. */ public String getNodeId() { return getStringParam("node_id"); } + /** + * Lifecycle state at the moment the leg was offered — normally {@code created} for an + * unanswered inbound call. + */ public String getCallState() { return getStringParam("call_state"); } + /** + * The subscribed context this call was delivered on. A client only receives inbound calls for + * contexts it explicitly subscribed to at connect time. + */ public String getContext() { return getStringParam("context"); } @@ -303,18 +380,27 @@ public Map getDevice() { return getMap(getParams(), "device"); } + /** + * Always {@code inbound} for a received call; present for symmetry with {@link CallStateEvent}. + */ public String getDirection() { return getStringParam("direction"); } + /** UUID of the SignalWire project the inbound call was billed and routed to. */ public String getProjectId() { return getStringParam("project_id"); } + /** + * Platform identifier for this billing/routing segment of the call, distinct from the {@code + * call_id} of the leg. + */ public String getSegmentId() { return getStringParam("segment_id"); } + /** Correlation tag carried on the inbound leg, when the originator supplied one. */ public String getTag() { return getStringParam("tag"); } @@ -332,21 +418,33 @@ public CallDialEvent(String eventType, double timestamp, Map par /** * Build a {@link CallDialEvent} from a raw {@code signalwire.event} payload ({@code - * event_type}/{@code timestamp}/{@code params}). Reference {@code from_payload} classmethod. + * event_type}/{@code timestamp}/{@code params}). */ public static CallDialEvent fromPayload(Map payload) { return new CallDialEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** + * The client-generated tag passed to {@code calling.dial}. This event carries no top-level + * {@code call_id}, so the tag is the ONLY way to match the outcome to the dial request that + * produced it. + */ public String getTag() { return getStringParam("tag"); } + /** UUID of the RELAY node hosting the winning leg, needed for subsequent calling methods. */ public String getNodeId() { return getStringParam("node_id"); } + /** + * Raw dial outcome as sent on the wire: {@code dialing} (still in progress), {@code answered} + * (a leg was answered) or {@code failed} (every leg failed). Kept as a string so a server-side + * addition to the set does not break dispatch; {@link #getDialStateEnum()} gives the typed + * view. + */ public String getDialState() { return getStringParam("dial_state"); } @@ -372,6 +470,14 @@ public Map getCall() { return getMap(getParams(), "call"); } + /** + * UUID of the answered leg, read from the nested {@code params.call} object rather than the top + * level — this event has no top-level {@code call_id}. With parallel dialing only the winning + * leg appears here. + * + * @return the winning leg's call id, or {@code null} while no leg has answered. + */ + @Override public String getCallId() { return getStr(getCallInfo(), "call_id", null); } @@ -385,21 +491,32 @@ public CallPlayEvent(String eventType, double timestamp, Map par /** * Build a {@link CallPlayEvent} from a raw {@code signalwire.event} payload ({@code - * event_type}/{@code timestamp}/{@code params}). Reference {@code from_payload} classmethod. + * event_type}/{@code timestamp}/{@code params}). */ public static CallPlayEvent fromPayload(Map payload) { return new CallPlayEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the call the playback is running on. */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** + * Client-generated identifier for this specific playback, echoed by the server. Multiple + * actions can run concurrently on one call, so this is what disambiguates their events. + */ public String getControlId() { return getStringParam("control_id"); } + /** + * Playback state: {@code playing}, {@code paused}, {@code error} or {@code finished}. Note that + * a {@code finished} play on a {@code play_and_collect} shares its control id with the collect + * phase and does NOT mean input was collected. + */ public String getState() { return getStringParam("state"); } @@ -413,25 +530,38 @@ public CallRecordEvent(String eventType, double timestamp, Map p /** * Build a {@link CallRecordEvent} from a raw {@code signalwire.event} payload ({@code - * event_type}/{@code timestamp}/{@code params}). Reference {@code from_payload} classmethod. + * event_type}/{@code timestamp}/{@code params}). */ public static CallRecordEvent fromPayload(Map payload) { return new CallRecordEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the call being recorded. */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** + * Client-generated identifier for this recording, echoed by the server so concurrent actions on + * the same call can be told apart. + */ public String getControlId() { return getStringParam("control_id"); } + /** Recording state: {@code recording}, {@code no_input}, {@code finished} or an error state. */ public String getState() { return getStringParam("state"); } + /** + * Where the finished recording can be fetched. Accepts the field at the top level or nested + * under {@code record}, since the platform reports it in both shapes depending on event stage. + * + * @return the recording URL, or {@code null} before the recording completes. + */ public String getUrl() { String url = getStringParam("url"); if (url != null) return url; @@ -440,6 +570,12 @@ public String getUrl() { return getStr(record, "url", null); } + /** + * Recording length in seconds, read from the top level or from the nested {@code record} + * object. + * + * @return the duration, or {@code 0.0} when not yet reported. + */ public double getDuration() { Object d = getParams().get("duration"); if (d instanceof Number) return ((Number) d).doubleValue(); @@ -447,6 +583,12 @@ public double getDuration() { return getDouble(record, "duration", 0.0); } + /** + * Recorded media size in bytes, read from the top level or from the nested {@code record} + * object. + * + * @return the byte size, or {@code 0} when not yet reported. + */ public long getSize() { Object s = getParams().get("size"); if (s instanceof Number) return ((Number) s).longValue(); @@ -468,17 +610,20 @@ public CallDetectEvent(String eventType, double timestamp, Map p /** * Build a {@link CallDetectEvent} from a raw {@code signalwire.event} payload ({@code - * event_type}/{@code timestamp}/{@code params}). Reference {@code from_payload} classmethod. + * event_type}/{@code timestamp}/{@code params}). */ public static CallDetectEvent fromPayload(Map payload) { return new CallDetectEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the call detection is running on. */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** Client-generated identifier for this detect action, echoed by the server. */ public String getControlId() { return getStringParam("control_id"); } @@ -488,6 +633,13 @@ public Map getDetect() { return getMap(getParams(), "detect"); } + /** + * The detection outcome, dug out of {@code detect.params.event} — for example {@code machine}, + * {@code human}, {@code fax} or {@code finished}. Detect reports its result here rather than in + * a flat {@code state} field like the other actions. + * + * @return the detected event name, or {@code null} when the event carries no result yet. + */ public String getDetectEvent() { Map detect = getDetect(); Map detectParams = getMap(detect, "params"); @@ -503,32 +655,44 @@ public CallCollectEvent(String eventType, double timestamp, Map /** * Build a {@link CallCollectEvent} from a raw {@code signalwire.event} payload ({@code - * event_type}/{@code timestamp}/{@code params}). Reference {@code from_payload} classmethod. + * event_type}/{@code timestamp}/{@code params}). */ public static CallCollectEvent fromPayload(Map payload) { return new CallCollectEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the call input is being collected on. */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** + * Client-generated identifier for this collect action. A {@code play_and_collect} shares one + * control id across both phases, so also filter on the event type before resolving. + */ public String getControlId() { return getStringParam("control_id"); } + /** Collect state, e.g. {@code collecting}, {@code finished} or {@code error}. */ public String getState() { return getStringParam("state"); } + /** + * Kind of input collected — {@code digit}, {@code speech}, or a no-input/error outcome. Reads + * the wire key {@code type}; renamed here because {@code getType()} would not say what it is + * the type OF. + */ public String getResultType() { return getStringParam("type"); } /** - * The collect result object ({@code {type, params}}). Mirrors Python CollectEvent.result = - * p.get("result", {}) — the nested {@code result} value, NOT the top-level {@code params}. + * The collect result object ({@code {type, params}}) — the nested {@code result} value, NOT the + * top-level {@code params}. Empty when the wire omitted {@code result}. */ public Map getResult() { return getMap(getParams(), "result"); @@ -551,21 +715,25 @@ public CallFaxEvent(String eventType, double timestamp, Map para /** * Build a {@link CallFaxEvent} from a raw {@code signalwire.event} payload ({@code - * event_type}/{@code timestamp}/{@code params}). Reference {@code from_payload} classmethod. + * event_type}/{@code timestamp}/{@code params}). */ public static CallFaxEvent fromPayload(Map payload) { return new CallFaxEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the call carrying the fax. */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** Client-generated identifier for this fax action, echoed by the server. */ public String getControlId() { return getStringParam("control_id"); } + /** Fax state, e.g. {@code page}, {@code error} or {@code finished}. */ public String getState() { return getStringParam("state"); } @@ -583,21 +751,27 @@ public CallTapEvent(String eventType, double timestamp, Map para /** * Build a {@link CallTapEvent} from a raw {@code signalwire.event} payload ({@code - * event_type}/{@code timestamp}/{@code params}). Reference {@code from_payload} classmethod. + * event_type}/{@code timestamp}/{@code params}). */ public static CallTapEvent fromPayload(Map payload) { return new CallTapEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the call whose media is being tapped. */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** Client-generated identifier for this tap, echoed by the server. */ public String getControlId() { return getStringParam("control_id"); } + /** + * Tap state: {@code tapping} while media is being forwarded, {@code finished} once it stops. + */ public String getState() { return getStringParam("state"); } @@ -619,29 +793,35 @@ public CallStreamEvent(String eventType, double timestamp, Map p /** * Build a {@link CallStreamEvent} from a raw {@code signalwire.event} payload ({@code - * event_type}/{@code timestamp}/{@code params}). Reference {@code from_payload} classmethod. + * event_type}/{@code timestamp}/{@code params}). */ public static CallStreamEvent fromPayload(Map payload) { return new CallStreamEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the call whose media is being streamed. */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** Client-generated identifier for this stream, echoed by the server. */ public String getControlId() { return getStringParam("control_id"); } + /** Stream state: {@code streaming} while media is flowing, {@code finished} once it stops. */ public String getState() { return getStringParam("state"); } + /** Name the stream was started under, when one was supplied. */ public String getName() { return getStringParam("name"); } + /** Destination the audio is being streamed to. */ public String getUrl() { return getStringParam("url"); } @@ -655,37 +835,56 @@ public CallTranscribeEvent(String eventType, double timestamp, Map payload) { return new CallTranscribeEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the call being transcribed. */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** Client-generated identifier for this transcription, echoed by the server. */ public String getControlId() { return getStringParam("control_id"); } + /** Transcription state, e.g. {@code transcribing} or {@code finished}. */ public String getState() { return getStringParam("state"); } + /** + * Length in seconds of the audio transcribed so far. + * + * @return the duration, or {@code 0.0} when the event reports none. + */ public double getDuration() { return getDoubleParam("duration"); } + /** + * Identifier of the recording the transcript was produced from, when the transcription was + * backed by one. + */ public String getRecordingId() { return getStringParam("recording_id"); } + /** + * Size in bytes of the associated media. + * + * @return the byte size, or {@code 0} when the event reports none. + */ public long getSize() { return getLongParam("size"); } + /** Where the transcript or its source media can be fetched. */ public String getUrl() { return getStringParam("url"); } @@ -699,17 +898,23 @@ public CallConnectEvent(String eventType, double timestamp, Map /** * Build a {@link CallConnectEvent} from a raw {@code signalwire.event} payload ({@code - * event_type}/{@code timestamp}/{@code params}). Reference {@code from_payload} classmethod. + * event_type}/{@code timestamp}/{@code params}). */ public static CallConnectEvent fromPayload(Map payload) { return new CallConnectEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the call that initiated the connect (the A leg). */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** + * Bridge state between the two legs: {@code connecting}, {@code connected}, {@code + * disconnected} or {@code failed}. Distinct from a leg's own {@code call_state}. + */ public String getConnectState() { return getStringParam("connect_state"); } @@ -727,33 +932,51 @@ public CallReferEvent(String eventType, double timestamp, Map pa /** * Build a {@link CallReferEvent} from a raw {@code signalwire.event} payload ({@code - * event_type}/{@code timestamp}/{@code params}). Reference {@code from_payload} classmethod. + * event_type}/{@code timestamp}/{@code params}). */ public static CallReferEvent fromPayload(Map payload) { return new CallReferEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the call the SIP REFER was issued on. */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** + * Progress of the transfer itself, e.g. {@code referring}, {@code completed} or {@code failed}. + */ public String getReferState() { return getStringParam("refer_state"); } + /** + * Generic state field, present alongside {@link #getReferState()} for events that report the + * action state rather than the transfer outcome. + */ public String getState() { return getStringParam("state"); } + /** + * SIP status code from the NOTIFY the transferee sent back reporting how the transfer + * progressed — this, not the REFER response, tells you whether the transfer actually succeeded. + */ public String getSipNotifyResponseCode() { return getStringParam("sip_notify_response_code"); } + /** + * SIP status code the far end returned to the REFER request itself. A 2xx here means the REFER + * was accepted for processing, not that the transfer completed. + */ public String getSipReferResponseCode() { return getStringParam("sip_refer_response_code"); } + /** The {@code Refer-To} target URI the call was asked to transfer to. */ public String getSipReferTo() { return getStringParam("sip_refer_to"); } @@ -767,21 +990,25 @@ public CallSendDigitsEvent(String eventType, double timestamp, Map payload) { return new CallSendDigitsEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the call the digits were sent on. */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** Client-generated identifier for this send-digits action, echoed by the server. */ public String getControlId() { return getStringParam("control_id"); } + /** Send-digits state, e.g. {@code sending} or {@code finished}. */ public String getState() { return getStringParam("state"); } @@ -795,21 +1022,25 @@ public CallPayEvent(String eventType, double timestamp, Map para /** * Build a {@link CallPayEvent} from a raw {@code signalwire.event} payload ({@code - * event_type}/{@code timestamp}/{@code params}). Reference {@code from_payload} classmethod. + * event_type}/{@code timestamp}/{@code params}). */ public static CallPayEvent fromPayload(Map payload) { return new CallPayEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the call the payment session is running on. */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** Client-generated identifier for this pay action, echoed by the server. */ public String getControlId() { return getStringParam("control_id"); } + /** Payment-session state reported by the platform for this stage of the flow. */ public String getState() { return getStringParam("state"); } @@ -823,25 +1054,30 @@ public ConferenceEvent(String eventType, double timestamp, Map p /** * Build a {@link ConferenceEvent} from a raw {@code signalwire.event} payload ({@code - * event_type}/{@code timestamp}/{@code params}). Reference {@code from_payload} classmethod. + * event_type}/{@code timestamp}/{@code params}). */ public static ConferenceEvent fromPayload(Map payload) { return new ConferenceEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID the platform assigned the conference. */ public String getConferenceId() { return getStringParam("conference_id"); } + /** UUID of the participant leg this conference event concerns. */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** Human-readable conference name the participants joined under. */ public String getName() { return getStringParam("name"); } + /** What happened in the conference — for example a participant joining or leaving. */ public String getStatus() { return getStringParam("status"); } @@ -855,40 +1091,56 @@ public QueueEvent(String eventType, double timestamp, Map params /** * Build a {@link QueueEvent} from a raw {@code signalwire.event} payload ({@code - * event_type}/{@code timestamp}/{@code params}). Reference {@code from_payload} classmethod. + * event_type}/{@code timestamp}/{@code params}). */ public static QueueEvent fromPayload(Map payload) { return new QueueEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the queued call leg. */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** Client-generated identifier for the queueing action, echoed by the server. */ public String getControlId() { return getStringParam("control_id"); } + /** + * What happened to the call in the queue — for example it was enqueued, advanced, or dequeued. + */ public String getStatus() { return getStringParam("status"); } - /** Queue identifier. RENAMED from the wire {@code id} key (Python: queue_id <- p.id). */ + /** Queue identifier. Note the wire key is the bare {@code id}, not {@code queue_id}. */ public String getQueueId() { return getStringParam("id"); } - /** Queue name. RENAMED from the wire {@code name} key (Python: queue_name <- p.name). */ + /** Queue name. Note the wire key is the bare {@code name}, not {@code queue_name}. */ public String getQueueName() { return getStringParam("name"); } + /** + * This call's place in the queue, counting from the front. + * + * @return the position, or {@code 0} when the event reports none. + */ public int getPosition() { Object v = getParams().get("position"); return v instanceof Number ? ((Number) v).intValue() : 0; } + /** + * Total number of calls waiting in the queue at the time of this event. + * + * @return the queue depth, or {@code 0} when the event reports none. + */ public int getSize() { Object v = getParams().get("size"); return v instanceof Number ? ((Number) v).intValue() : 0; @@ -901,6 +1153,12 @@ public AuthorizationStateEvent(String eventType, double timestamp, Map:}) the server + * issues so a reconnect can skip the full authentication round-trip. Store it and send it back + * in {@code signalwire.connect} params; the server silently falls back to normal authentication + * if it is stale. Treat it as a credential — it grants session re-entry. + */ public String getAuthorizationState() { return getStringParam("authorization_state"); } @@ -914,49 +1172,80 @@ public MessagingReceiveEvent(String eventType, double timestamp, Map payload) { return new MessagingReceiveEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** + * UUID the platform assigned the inbound message; the key subsequent {@code messaging.state} + * events are routed on. + */ public String getMessageId() { return getStringParam("message_id"); } + /** + * The subscribed context the message was delivered on. Only messages for contexts the client + * subscribed to at connect time arrive here. + */ public String getContext() { return getStringParam("context"); } + /** Always {@code inbound} for a received message. */ public String getDirection() { return getStringParam("direction"); } + /** Sender's number in E.164 form. */ public String getFromNumber() { return getStringParam("from_number"); } + /** Recipient number in E.164 form — one of the project's own numbers. */ public String getToNumber() { return getStringParam("to_number"); } + /** + * The message text as sent. This is untrusted end-user input: never interpolate it into a + * prompt, a command, or a log line without treating it as such. + */ public String getBody() { return getStringParam("body"); } + /** + * URLs of any MMS attachments carried by the message. + * + * @return the media URLs, or an empty list when the message had none. + */ public List getMedia() { return getStringList(getParams(), "media"); } + /** + * How many SMS segments the message occupied — the unit billing is charged in. + * + * @return the segment count, defaulting to {@code 1} when the wire omitted it. + */ public int getSegments() { return getInt(getParams(), "segments", 1); } + /** Delivery state, always {@code received} for an inbound message. */ public String getMessageState() { return getStringParam("message_state"); } + /** + * Client-supplied correlation tags carried on the message. + * + * @return the tags, or an empty list when none were set. + */ public List getTags() { return getStringList(getParams(), "tags"); } @@ -970,53 +1259,86 @@ public MessagingStateEvent(String eventType, double timestamp, Map payload) { return new MessagingStateEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** + * UUID of the outbound message this state update belongs to, matching the id returned by {@code + * messaging.send}. Route the event to the tracked {@code Message} on this key. + */ public String getMessageId() { return getStringParam("message_id"); } + /** The context the message was sent under. */ public String getContext() { return getStringParam("context"); } + /** Always {@code outbound} for a message the client sent. */ public String getDirection() { return getStringParam("direction"); } + /** Sender number in E.164 form — the project number the message was sent from. */ public String getFromNumber() { return getStringParam("from_number"); } + /** Destination number in E.164 form. */ public String getToNumber() { return getStringParam("to_number"); } + /** The message text that was sent. */ public String getBody() { return getStringParam("body"); } + /** + * URLs of MMS attachments included in the outbound message. + * + * @return the media URLs, or an empty list when there were none. + */ public List getMedia() { return getStringList(getParams(), "media"); } + /** + * How many SMS segments the message occupied — the unit billing is charged in. + * + * @return the segment count, defaulting to {@code 1} when the wire omitted it. + */ public int getSegments() { return getInt(getParams(), "segments", 1); } + /** + * Current delivery state, progressing through values such as {@code queued}, {@code sent}, + * {@code delivered} and {@code undelivered}/{@code failed}. + */ public String getMessageState() { return getStringParam("message_state"); } + /** + * Why delivery failed, populated only for a failure state. + * + * @return the failure reason, or {@code null} when delivery has not failed. + */ public String getReason() { return getStringParam("reason"); } + /** + * Client-supplied correlation tags echoed back on the state event. + * + * @return the tags, or an empty list when none were set. + */ public List getTags() { return getStringList(getParams(), "tags"); } @@ -1028,15 +1350,14 @@ public DenoiseEvent(String eventType, double timestamp, Map para super(eventType, timestamp, params); } - /** - * Build a {@link DenoiseEvent} from a raw {@code signalwire.event} payload. Reference {@code - * from_payload} classmethod. - */ + /** Build a {@link DenoiseEvent} from a raw {@code signalwire.event} payload. */ public static DenoiseEvent fromPayload(Map payload) { return new DenoiseEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the call whose denoise state changed. */ + @Override public String getCallId() { return getStringParam("call_id"); } @@ -1054,19 +1375,19 @@ public EchoEvent(String eventType, double timestamp, Map params) super(eventType, timestamp, params); } - /** - * Build an {@link EchoEvent} from a raw {@code signalwire.event} payload. Reference {@code - * from_payload} classmethod. - */ + /** Build an {@link EchoEvent} from a raw {@code signalwire.event} payload. */ public static EchoEvent fromPayload(Map payload) { return new EchoEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the call echo is running on. */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** Whether echo is currently active on the call. */ public String getState() { return getStringParam("state"); } @@ -1078,19 +1399,19 @@ public HoldEvent(String eventType, double timestamp, Map params) super(eventType, timestamp, params); } - /** - * Build a {@link HoldEvent} from a raw {@code signalwire.event} payload. Reference {@code - * from_payload} classmethod. - */ + /** Build a {@link HoldEvent} from a raw {@code signalwire.event} payload. */ public static HoldEvent fromPayload(Map payload) { return new HoldEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** UUID of the call whose hold state changed. */ + @Override public String getCallId() { return getStringParam("call_id"); } + /** Whether the call is currently held or has been resumed. */ public String getState() { return getStringParam("state"); } @@ -1102,15 +1423,18 @@ public CallingErrorEvent(String eventType, double timestamp, Map super(eventType, timestamp, params); } - /** - * Build a {@link CallingErrorEvent} from a raw {@code signalwire.event} payload. Reference - * {@code from_payload} classmethod. - */ + /** Build a {@link CallingErrorEvent} from a raw {@code signalwire.event} payload. */ public static CallingErrorEvent fromPayload(Map payload) { return new CallingErrorEvent( payloadEventType(payload), payloadTimestamp(payload), payloadParams(payload)); } + /** + * UUID of the call the error relates to. + * + * @return the call id, or {@code null} for an error not scoped to a single call. + */ + @Override public String getCallId() { return getStringParam("call_id"); } diff --git a/src/main/java/com/signalwire/sdk/relay/RelayLivenessDump.java b/src/main/java/com/signalwire/sdk/relay/RelayLivenessDump.java index 1b98ec19..84efa3c5 100644 --- a/src/main/java/com/signalwire/sdk/relay/RelayLivenessDump.java +++ b/src/main/java/com/signalwire/sdk/relay/RelayLivenessDump.java @@ -11,6 +11,7 @@ import com.google.gson.reflect.TypeToken; import com.signalwire.sdk.logging.Logger; import java.lang.reflect.Type; +import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.util.LinkedHashMap; @@ -49,6 +50,11 @@ private RelayLivenessDump() {} // BOUNDED_WINDOW_S = 5.0 in the differ. Keep drivers well inside it. private static final long WINDOW_MS = 5_000; + /** + * Entry point: emits the RELAY liveness dump this gate compares across ports. + * + * @param args the command-line arguments. + */ public static void main(String[] args) { Logger.setGlobalLevel(Logger.Level.OFF); Map out = new LinkedHashMap<>(); @@ -109,7 +115,9 @@ private static Map credAuthReject() { new Thread( () -> { try { - client.connect((int) WINDOW_MS); + // connect takes a long; the (int) cast only narrowed WINDOW_MS + // on the way to re-widening it at the call. + client.connect(WINDOW_MS); } catch (RelayError e) { m.put("raised_after_bounded_retry", true); String text = e.getMessage() == null ? "" : e.getMessage(); @@ -332,24 +340,51 @@ private static final class MockRelay extends WebSocketServer { volatile boolean silentVerb; // never answer a verb RPC MockRelay(int port) { - super(new InetSocketAddress("127.0.0.1", port)); + super(new InetSocketAddress(InetAddress.getLoopbackAddress(), port)); setReuseAddr(true); } + /** + * A mock client connected. + * + * @param socket the connected client socket. + * @param handshake the client's handshake. + */ @Override public void onOpen(WebSocket socket, ClientHandshake handshake) { this.conn = socket; } + /** + * A mock client disconnected. + * + * @param socket the client socket. + * @param code the close code. + * @param reason the close reason. + * @param remote whether the client initiated the close. + */ @Override public void onClose(WebSocket socket, int code, String reason, boolean remote) {} + /** + * The mock server hit a transport error. + * + * @param socket the socket the error occurred on, or {@code null} for a server-level error. + * @param ex the error. + */ @Override public void onError(WebSocket socket, Exception ex) {} + /** The mock server finished binding and is accepting connections. */ @Override public void onStart() {} + /** + * A frame arrived from a mock client; drives the dump's scripted exchange. + * + * @param socket the client socket the frame arrived on. + * @param raw the raw frame text. + */ @Override public void onMessage(WebSocket socket, String raw) { Map msg; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingAiHoldParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingAiHoldParams.java index 4d04c281..bf416e95 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingAiHoldParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingAiHoldParams.java @@ -9,8 +9,8 @@ /** * CallingAiHoldParams — generated wire type (RELAY method 'calling.ai_hold', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingAiHoldParams { public Boolean async; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingAiHoldResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingAiHoldResult.java index de5dd2a3..eade40a6 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingAiHoldResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingAiHoldResult.java @@ -9,8 +9,8 @@ /** * CallingAiHoldResult — generated wire type (RELAY method 'calling.ai_hold', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingAiHoldResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingAiMessageParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingAiMessageParams.java index 507d4c93..22a5a3e0 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingAiMessageParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingAiMessageParams.java @@ -9,8 +9,8 @@ /** * CallingAiMessageParams — generated wire type (RELAY method 'calling.ai_message', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingAiMessageParams { public Boolean async; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingAiMessageResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingAiMessageResult.java index a048b841..25f8e580 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingAiMessageResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingAiMessageResult.java @@ -9,8 +9,8 @@ /** * CallingAiMessageResult — generated wire type (RELAY method 'calling.ai_message', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingAiMessageResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingAiUnholdParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingAiUnholdParams.java index c0c12fb1..d8e8a9aa 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingAiUnholdParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingAiUnholdParams.java @@ -9,8 +9,8 @@ /** * CallingAiUnholdParams — generated wire type (RELAY method 'calling.ai_unhold', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingAiUnholdParams { public Boolean async; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingAiUnholdResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingAiUnholdResult.java index 1988a10a..be8004cc 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingAiUnholdResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingAiUnholdResult.java @@ -9,8 +9,8 @@ /** * CallingAiUnholdResult — generated wire type (RELAY method 'calling.ai_unhold', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingAiUnholdResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingAmazonBedrockParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingAmazonBedrockParams.java index 576e503f..049b9acc 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingAmazonBedrockParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingAmazonBedrockParams.java @@ -10,8 +10,8 @@ * CallingAmazonBedrockParams — generated wire type (RELAY method 'calling.amazon_bedrock', params * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingAmazonBedrockParams { public java.util.Map SWAIG; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingAmazonBedrockResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingAmazonBedrockResult.java index fa2ed123..148ac04b 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingAmazonBedrockResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingAmazonBedrockResult.java @@ -10,8 +10,8 @@ * CallingAmazonBedrockResult — generated wire type (RELAY method 'calling.amazon_bedrock', result * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingAmazonBedrockResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingAnswerParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingAnswerParams.java index 7cda8c59..5935e07d 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingAnswerParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingAnswerParams.java @@ -9,8 +9,8 @@ /** * CallingAnswerParams — generated wire type (RELAY method 'calling.answer', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingAnswerParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingAnswerResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingAnswerResult.java index 77218fae..58d747dd 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingAnswerResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingAnswerResult.java @@ -9,8 +9,8 @@ /** * CallingAnswerResult — generated wire type (RELAY method 'calling.answer', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingAnswerResult { public String code; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingBeginParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingBeginParams.java index d73e2d0b..21566b88 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingBeginParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingBeginParams.java @@ -9,8 +9,8 @@ /** * CallingBeginParams — generated wire type (RELAY method 'calling.begin', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingBeginParams { public java.util.Map device; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingBeginResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingBeginResult.java index 318213e9..9e9c3b8c 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingBeginResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingBeginResult.java @@ -9,8 +9,8 @@ /** * CallingBeginResult — generated wire type (RELAY method 'calling.begin', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingBeginResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingBindDigitParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingBindDigitParams.java index 1b85ba58..4e227651 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingBindDigitParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingBindDigitParams.java @@ -9,8 +9,8 @@ /** * CallingBindDigitParams — generated wire type (RELAY method 'calling.bind_digit', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingBindDigitParams { public String bind_method; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingBindDigitResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingBindDigitResult.java index 3ebda036..907d5a05 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingBindDigitResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingBindDigitResult.java @@ -9,8 +9,8 @@ /** * CallingBindDigitResult — generated wire type (RELAY method 'calling.bind_digit', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingBindDigitResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingClearDigitBindingsParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingClearDigitBindingsParams.java index 3fe22b79..5d841bab 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingClearDigitBindingsParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingClearDigitBindingsParams.java @@ -10,8 +10,8 @@ * CallingClearDigitBindingsParams — generated wire type (RELAY method * 'calling.clear_digit_bindings', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingClearDigitBindingsParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingClearDigitBindingsResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingClearDigitBindingsResult.java index 9d54d208..57208c10 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingClearDigitBindingsResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingClearDigitBindingsResult.java @@ -10,8 +10,8 @@ * CallingClearDigitBindingsResult — generated wire type (RELAY method * 'calling.clear_digit_bindings', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingClearDigitBindingsResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectParams.java index 5ee9372d..6b5295e4 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectParams.java @@ -9,8 +9,8 @@ /** * CallingCollectParams — generated wire type (RELAY method 'calling.collect', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingCollectParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectResult.java index abc56c3e..1faf6ee2 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectResult.java @@ -9,8 +9,8 @@ /** * CallingCollectResult — generated wire type (RELAY method 'calling.collect', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingCollectResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStartInputTimersParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStartInputTimersParams.java index 9c752311..389ddffd 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStartInputTimersParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStartInputTimersParams.java @@ -10,8 +10,8 @@ * CallingCollectStartInputTimersParams — generated wire type (RELAY method * 'calling.collect.start_input_timers', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingCollectStartInputTimersParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStartInputTimersResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStartInputTimersResult.java index de913d40..d1486d39 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStartInputTimersResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStartInputTimersResult.java @@ -10,8 +10,8 @@ * CallingCollectStartInputTimersResult — generated wire type (RELAY method * 'calling.collect.start_input_timers', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingCollectStartInputTimersResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStopParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStopParams.java index 66786f16..239ab5b5 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStopParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStopParams.java @@ -10,8 +10,8 @@ * CallingCollectStopParams — generated wire type (RELAY method 'calling.collect.stop', params * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingCollectStopParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStopResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStopResult.java index 2395ba25..179078c5 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStopResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingCollectStopResult.java @@ -10,8 +10,8 @@ * CallingCollectStopResult — generated wire type (RELAY method 'calling.collect.stop', result * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingCollectStopResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingConnectParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingConnectParams.java index 661bf3ae..4b55a60f 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingConnectParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingConnectParams.java @@ -9,8 +9,8 @@ /** * CallingConnectParams — generated wire type (RELAY method 'calling.connect', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingConnectParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingConnectResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingConnectResult.java index e48962a1..c0c0eab0 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingConnectResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingConnectResult.java @@ -9,8 +9,8 @@ /** * CallingConnectResult — generated wire type (RELAY method 'calling.connect', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingConnectResult { public String code; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseParams.java index 7a388fa1..12d2348f 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseParams.java @@ -9,8 +9,8 @@ /** * CallingDenoiseParams — generated wire type (RELAY method 'calling.denoise', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingDenoiseParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseResult.java index df2da5c6..63796759 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseResult.java @@ -9,8 +9,8 @@ /** * CallingDenoiseResult — generated wire type (RELAY method 'calling.denoise', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingDenoiseResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseStopParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseStopParams.java index 725c74d4..ae7bbc52 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseStopParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseStopParams.java @@ -10,8 +10,8 @@ * CallingDenoiseStopParams — generated wire type (RELAY method 'calling.denoise.stop', params * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingDenoiseStopParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseStopResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseStopResult.java index 68b41e21..fc28b21f 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseStopResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingDenoiseStopResult.java @@ -10,8 +10,8 @@ * CallingDenoiseStopResult — generated wire type (RELAY method 'calling.denoise.stop', result * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingDenoiseStopResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectParams.java index 0974b8bf..1dde33e0 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectParams.java @@ -9,8 +9,8 @@ /** * CallingDetectParams — generated wire type (RELAY method 'calling.detect', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingDetectParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectResult.java index 99781de6..aa9f026b 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectResult.java @@ -9,8 +9,8 @@ /** * CallingDetectResult — generated wire type (RELAY method 'calling.detect', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingDetectResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectStopParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectStopParams.java index 009737c3..1da3c6d7 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectStopParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectStopParams.java @@ -9,8 +9,8 @@ /** * CallingDetectStopParams — generated wire type (RELAY method 'calling.detect.stop', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingDetectStopParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectStopResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectStopResult.java index 456f65ed..2ed98a54 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectStopResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingDetectStopResult.java @@ -9,8 +9,8 @@ /** * CallingDetectStopResult — generated wire type (RELAY method 'calling.detect.stop', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingDetectStopResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingDialParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingDialParams.java index bc0995ef..1d222c86 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingDialParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingDialParams.java @@ -9,8 +9,8 @@ /** * CallingDialParams — generated wire type (RELAY method 'calling.dial', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingDialParams { public java.util.List devices; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingDialResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingDialResult.java index 578d57d1..7d689e53 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingDialResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingDialResult.java @@ -9,8 +9,8 @@ /** * CallingDialResult — generated wire type (RELAY method 'calling.dial', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingDialResult { public String code; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingDisconnectParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingDisconnectParams.java index 54b02a18..543675c8 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingDisconnectParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingDisconnectParams.java @@ -9,8 +9,8 @@ /** * CallingDisconnectParams — generated wire type (RELAY method 'calling.disconnect', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingDisconnectParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingDisconnectResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingDisconnectResult.java index 0e0dad6f..c69de683 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingDisconnectResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingDisconnectResult.java @@ -9,8 +9,8 @@ /** * CallingDisconnectResult — generated wire type (RELAY method 'calling.disconnect', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingDisconnectResult { public String code; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingEchoParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingEchoParams.java index d73f5ff6..2871d138 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingEchoParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingEchoParams.java @@ -9,8 +9,8 @@ /** * CallingEchoParams — generated wire type (RELAY method 'calling.echo', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingEchoParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingEchoResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingEchoResult.java index e124587d..171bb558 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingEchoResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingEchoResult.java @@ -9,8 +9,8 @@ /** * CallingEchoResult — generated wire type (RELAY method 'calling.echo', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingEchoResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingEndParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingEndParams.java index 50fb7e39..fbebe058 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingEndParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingEndParams.java @@ -9,8 +9,8 @@ /** * CallingEndParams — generated wire type (RELAY method 'calling.end', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingEndParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingEndResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingEndResult.java index fa8d22aa..cd4c9c71 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingEndResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingEndResult.java @@ -9,8 +9,8 @@ /** * CallingEndResult — generated wire type (RELAY method 'calling.end', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingEndResult { public String code; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinConferenceParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinConferenceParams.java index 1c522bd5..34678a6a 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinConferenceParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinConferenceParams.java @@ -10,8 +10,8 @@ * CallingJoinConferenceParams — generated wire type (RELAY method 'calling.join_conference', params * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingJoinConferenceParams { public String acl; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinConferenceResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinConferenceResult.java index 8f71fb33..5409dc76 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinConferenceResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinConferenceResult.java @@ -10,8 +10,8 @@ * CallingJoinConferenceResult — generated wire type (RELAY method 'calling.join_conference', result * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingJoinConferenceResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinRoomParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinRoomParams.java index 01205db4..4c21cd37 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinRoomParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinRoomParams.java @@ -9,8 +9,8 @@ /** * CallingJoinRoomParams — generated wire type (RELAY method 'calling.join_room', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingJoinRoomParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinRoomResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinRoomResult.java index 266933ec..c858d6ec 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinRoomResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingJoinRoomResult.java @@ -9,8 +9,8 @@ /** * CallingJoinRoomResult — generated wire type (RELAY method 'calling.join_room', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingJoinRoomResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveConferenceParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveConferenceParams.java index 014c90c7..223870eb 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveConferenceParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveConferenceParams.java @@ -10,8 +10,8 @@ * CallingLeaveConferenceParams — generated wire type (RELAY method 'calling.leave_conference', * params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingLeaveConferenceParams { public Boolean async; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveConferenceResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveConferenceResult.java index 248bbd28..f7b9faa5 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveConferenceResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveConferenceResult.java @@ -10,8 +10,8 @@ * CallingLeaveConferenceResult — generated wire type (RELAY method 'calling.leave_conference', * result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingLeaveConferenceResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveRoomParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveRoomParams.java index 9a39bde7..2d85823f 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveRoomParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveRoomParams.java @@ -9,8 +9,8 @@ /** * CallingLeaveRoomParams — generated wire type (RELAY method 'calling.leave_room', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingLeaveRoomParams { public Boolean async; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveRoomResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveRoomResult.java index ef65085e..1fb81803 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveRoomResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingLeaveRoomResult.java @@ -9,8 +9,8 @@ /** * CallingLeaveRoomResult — generated wire type (RELAY method 'calling.leave_room', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingLeaveRoomResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranscribeParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranscribeParams.java index 5dad0187..87b75f32 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranscribeParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranscribeParams.java @@ -10,8 +10,8 @@ * CallingLiveTranscribeParams — generated wire type (RELAY method 'calling.live_transcribe', params * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingLiveTranscribeParams { public java.util.Map action; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranscribeResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranscribeResult.java index 1ac41e5e..e164943f 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranscribeResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranscribeResult.java @@ -10,8 +10,8 @@ * CallingLiveTranscribeResult — generated wire type (RELAY method 'calling.live_transcribe', result * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingLiveTranscribeResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranslateParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranslateParams.java index 732c36bb..844fdcd0 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranslateParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranslateParams.java @@ -10,8 +10,8 @@ * CallingLiveTranslateParams — generated wire type (RELAY method 'calling.live_translate', params * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingLiveTranslateParams { public java.util.Map action; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranslateResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranslateResult.java index af09dd9a..8b38fd2f 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranslateResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingLiveTranslateResult.java @@ -10,8 +10,8 @@ * CallingLiveTranslateResult — generated wire type (RELAY method 'calling.live_translate', result * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingLiveTranslateResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPassParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPassParams.java index 061c67c2..14a512de 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPassParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPassParams.java @@ -9,8 +9,8 @@ /** * CallingPassParams — generated wire type (RELAY method 'calling.pass', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPassParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPassResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPassResult.java index 7c9f954a..e8439e84 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPassResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPassResult.java @@ -9,8 +9,8 @@ /** * CallingPassResult — generated wire type (RELAY method 'calling.pass', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPassResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPayParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPayParams.java index 98e26267..ea8de3bf 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPayParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPayParams.java @@ -9,8 +9,8 @@ /** * CallingPayParams — generated wire type (RELAY method 'calling.pay', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPayParams { public java.util.Map bank_account_type; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPayResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPayResult.java index 40af0189..a23d287a 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPayResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPayResult.java @@ -9,8 +9,8 @@ /** * CallingPayResult — generated wire type (RELAY method 'calling.pay', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPayResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPayStopParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPayStopParams.java index 1ca65d8b..cb1a6536 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPayStopParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPayStopParams.java @@ -9,8 +9,8 @@ /** * CallingPayStopParams — generated wire type (RELAY method 'calling.pay.stop', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPayStopParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPayStopResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPayStopResult.java index c290bbf8..e4efed9a 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPayStopResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPayStopResult.java @@ -9,8 +9,8 @@ /** * CallingPayStopResult — generated wire type (RELAY method 'calling.pay.stop', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPayStopResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectParams.java index d4fe4b43..71e65477 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectParams.java @@ -10,8 +10,8 @@ * CallingPlayAndCollectParams — generated wire type (RELAY method 'calling.play_and_collect', * params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayAndCollectParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectResult.java index 61ba08ed..adceea4f 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectResult.java @@ -10,8 +10,8 @@ * CallingPlayAndCollectResult — generated wire type (RELAY method 'calling.play_and_collect', * result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayAndCollectResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectStopParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectStopParams.java index 30a2dfa7..80edc5e4 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectStopParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectStopParams.java @@ -10,8 +10,8 @@ * CallingPlayAndCollectStopParams — generated wire type (RELAY method * 'calling.play_and_collect.stop', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayAndCollectStopParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectStopResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectStopResult.java index 784c38e3..113ddd8f 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectStopResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectStopResult.java @@ -10,8 +10,8 @@ * CallingPlayAndCollectStopResult — generated wire type (RELAY method * 'calling.play_and_collect.stop', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayAndCollectStopResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectVolumeParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectVolumeParams.java index 86354d8d..ff720842 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectVolumeParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectVolumeParams.java @@ -10,8 +10,8 @@ * CallingPlayAndCollectVolumeParams — generated wire type (RELAY method * 'calling.play_and_collect.volume', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayAndCollectVolumeParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectVolumeResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectVolumeResult.java index 684f7342..3d415797 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectVolumeResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayAndCollectVolumeResult.java @@ -10,8 +10,8 @@ * CallingPlayAndCollectVolumeResult — generated wire type (RELAY method * 'calling.play_and_collect.volume', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayAndCollectVolumeResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayParams.java index 453665a7..a69cf2b5 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayParams.java @@ -9,8 +9,8 @@ /** * CallingPlayParams — generated wire type (RELAY method 'calling.play', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayPauseParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayPauseParams.java index 5529851f..b405dda9 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayPauseParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayPauseParams.java @@ -9,8 +9,8 @@ /** * CallingPlayPauseParams — generated wire type (RELAY method 'calling.play.pause', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayPauseParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayPauseResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayPauseResult.java index 288e4f93..30c14c73 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayPauseResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayPauseResult.java @@ -9,8 +9,8 @@ /** * CallingPlayPauseResult — generated wire type (RELAY method 'calling.play.pause', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayPauseResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayResult.java index 2d7aa641..d3722aa3 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayResult.java @@ -9,8 +9,8 @@ /** * CallingPlayResult — generated wire type (RELAY method 'calling.play', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayResumeParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayResumeParams.java index 4a7ff815..c72b4dfd 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayResumeParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayResumeParams.java @@ -9,8 +9,8 @@ /** * CallingPlayResumeParams — generated wire type (RELAY method 'calling.play.resume', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayResumeParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayResumeResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayResumeResult.java index a2317851..69c1b253 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayResumeResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayResumeResult.java @@ -9,8 +9,8 @@ /** * CallingPlayResumeResult — generated wire type (RELAY method 'calling.play.resume', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayResumeResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayStopParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayStopParams.java index 3b2f1bc5..70f1d19e 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayStopParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayStopParams.java @@ -9,8 +9,8 @@ /** * CallingPlayStopParams — generated wire type (RELAY method 'calling.play.stop', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayStopParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayStopResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayStopResult.java index e28c8501..f913df1e 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayStopResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayStopResult.java @@ -9,8 +9,8 @@ /** * CallingPlayStopResult — generated wire type (RELAY method 'calling.play.stop', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayStopResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayVolumeParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayVolumeParams.java index b1a40b07..cc556284 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayVolumeParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayVolumeParams.java @@ -9,8 +9,8 @@ /** * CallingPlayVolumeParams — generated wire type (RELAY method 'calling.play.volume', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayVolumeParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayVolumeResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayVolumeResult.java index 28c3e9ec..ada21546 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayVolumeResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingPlayVolumeResult.java @@ -9,8 +9,8 @@ /** * CallingPlayVolumeResult — generated wire type (RELAY method 'calling.play.volume', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingPlayVolumeResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueEnterParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueEnterParams.java index a67a2e56..bf683cea 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueEnterParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueEnterParams.java @@ -9,8 +9,8 @@ /** * CallingQueueEnterParams — generated wire type (RELAY method 'calling.queue.enter', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingQueueEnterParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueEnterResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueEnterResult.java index 4aedc0e1..71215f47 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueEnterResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueEnterResult.java @@ -9,8 +9,8 @@ /** * CallingQueueEnterResult — generated wire type (RELAY method 'calling.queue.enter', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingQueueEnterResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueLeaveParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueLeaveParams.java index 851d5431..40727520 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueLeaveParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueLeaveParams.java @@ -9,8 +9,8 @@ /** * CallingQueueLeaveParams — generated wire type (RELAY method 'calling.queue.leave', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingQueueLeaveParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueLeaveResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueLeaveResult.java index 9a60b117..a919e98a 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueLeaveResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingQueueLeaveResult.java @@ -9,8 +9,8 @@ /** * CallingQueueLeaveResult — generated wire type (RELAY method 'calling.queue.leave', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingQueueLeaveResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxParams.java index be2f26d4..03123c6e 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxParams.java @@ -9,8 +9,8 @@ /** * CallingReceiveFaxParams — generated wire type (RELAY method 'calling.receive_fax', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingReceiveFaxParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxResult.java index a45a70d1..05c798c2 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxResult.java @@ -9,8 +9,8 @@ /** * CallingReceiveFaxResult — generated wire type (RELAY method 'calling.receive_fax', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingReceiveFaxResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxStopParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxStopParams.java index 20dafbf5..83788168 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxStopParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxStopParams.java @@ -10,8 +10,8 @@ * CallingReceiveFaxStopParams — generated wire type (RELAY method 'calling.receive_fax.stop', * params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingReceiveFaxStopParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxStopResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxStopResult.java index 0f473b56..1e7d1be9 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxStopResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveFaxStopResult.java @@ -10,8 +10,8 @@ * CallingReceiveFaxStopResult — generated wire type (RELAY method 'calling.receive_fax.stop', * result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingReceiveFaxStopResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveParams.java index fc0c8051..5497af2d 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveParams.java @@ -9,8 +9,8 @@ /** * CallingReceiveParams — generated wire type (RELAY method 'calling.receive', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingReceiveParams { public String context; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveResult.java index d71284f5..338dde20 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingReceiveResult.java @@ -9,8 +9,8 @@ /** * CallingReceiveResult — generated wire type (RELAY method 'calling.receive', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingReceiveResult { public String code; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordParams.java index cf4ce7dc..5eea1841 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordParams.java @@ -9,8 +9,8 @@ /** * CallingRecordParams — generated wire type (RELAY method 'calling.record', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingRecordParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordPauseParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordPauseParams.java index 53096530..7896ebf7 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordPauseParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordPauseParams.java @@ -10,8 +10,8 @@ * CallingRecordPauseParams — generated wire type (RELAY method 'calling.record.pause', params * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingRecordPauseParams { public String behavior; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordPauseResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordPauseResult.java index 6cd63090..8b9f15ed 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordPauseResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordPauseResult.java @@ -10,8 +10,8 @@ * CallingRecordPauseResult — generated wire type (RELAY method 'calling.record.pause', result * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingRecordPauseResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordResult.java index f22da3c4..94cc543a 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordResult.java @@ -9,8 +9,8 @@ /** * CallingRecordResult — generated wire type (RELAY method 'calling.record', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingRecordResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordResumeParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordResumeParams.java index ef2836cb..5df47df9 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordResumeParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordResumeParams.java @@ -10,8 +10,8 @@ * CallingRecordResumeParams — generated wire type (RELAY method 'calling.record.resume', params * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingRecordResumeParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordResumeResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordResumeResult.java index a69185a4..d3360539 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordResumeResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordResumeResult.java @@ -10,8 +10,8 @@ * CallingRecordResumeResult — generated wire type (RELAY method 'calling.record.resume', result * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingRecordResumeResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordStopParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordStopParams.java index 7dfb2e77..e941caa5 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordStopParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordStopParams.java @@ -9,8 +9,8 @@ /** * CallingRecordStopParams — generated wire type (RELAY method 'calling.record.stop', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingRecordStopParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordStopResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordStopResult.java index eb9a17c9..166edfb9 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordStopResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingRecordStopResult.java @@ -9,8 +9,8 @@ /** * CallingRecordStopResult — generated wire type (RELAY method 'calling.record.stop', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingRecordStopResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingReferParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingReferParams.java index a890d7bb..91467a55 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingReferParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingReferParams.java @@ -9,8 +9,8 @@ /** * CallingReferParams — generated wire type (RELAY method 'calling.refer', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingReferParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingReferResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingReferResult.java index e942766b..fe536cb7 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingReferResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingReferResult.java @@ -9,8 +9,8 @@ /** * CallingReferResult — generated wire type (RELAY method 'calling.refer', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingReferResult { public String code; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingSendDigitsParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingSendDigitsParams.java index 4ef47b90..970f1c68 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingSendDigitsParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingSendDigitsParams.java @@ -9,8 +9,8 @@ /** * CallingSendDigitsParams — generated wire type (RELAY method 'calling.send_digits', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingSendDigitsParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingSendDigitsResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingSendDigitsResult.java index d1fd8786..2da04885 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingSendDigitsResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingSendDigitsResult.java @@ -9,8 +9,8 @@ /** * CallingSendDigitsResult — generated wire type (RELAY method 'calling.send_digits', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingSendDigitsResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxParams.java index af9e7665..0e9d4ee1 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxParams.java @@ -9,8 +9,8 @@ /** * CallingSendFaxParams — generated wire type (RELAY method 'calling.send_fax', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingSendFaxParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxResult.java index f39043e6..fe7c8c0b 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxResult.java @@ -9,8 +9,8 @@ /** * CallingSendFaxResult — generated wire type (RELAY method 'calling.send_fax', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingSendFaxResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxStopParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxStopParams.java index 361c8724..eab59068 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxStopParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxStopParams.java @@ -10,8 +10,8 @@ * CallingSendFaxStopParams — generated wire type (RELAY method 'calling.send_fax.stop', params * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingSendFaxStopParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxStopResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxStopResult.java index 7fe729d4..b6436008 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxStopResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingSendFaxStopResult.java @@ -10,8 +10,8 @@ * CallingSendFaxStopResult — generated wire type (RELAY method 'calling.send_fax.stop', result * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingSendFaxStopResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamParams.java index afaa915a..ba8c347f 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamParams.java @@ -9,8 +9,8 @@ /** * CallingStreamParams — generated wire type (RELAY method 'calling.stream', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingStreamParams { public Boolean async; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamResult.java index 393ffe71..5fecf464 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamResult.java @@ -9,8 +9,8 @@ /** * CallingStreamResult — generated wire type (RELAY method 'calling.stream', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingStreamResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamStopParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamStopParams.java index 1ec6e64b..1cb4f0ef 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamStopParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamStopParams.java @@ -9,8 +9,8 @@ /** * CallingStreamStopParams — generated wire type (RELAY method 'calling.stream.stop', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingStreamStopParams { public Boolean async; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamStopResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamStopResult.java index 461adb2e..2edee5bb 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamStopResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingStreamStopResult.java @@ -9,8 +9,8 @@ /** * CallingStreamStopResult — generated wire type (RELAY method 'calling.stream.stop', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingStreamStopResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingTapParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingTapParams.java index b6e77822..d8cd4f09 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingTapParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingTapParams.java @@ -9,8 +9,8 @@ /** * CallingTapParams — generated wire type (RELAY method 'calling.tap', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingTapParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingTapResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingTapResult.java index 842cea87..6b3e6e04 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingTapResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingTapResult.java @@ -9,8 +9,8 @@ /** * CallingTapResult — generated wire type (RELAY method 'calling.tap', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingTapResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingTapStopParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingTapStopParams.java index d5a5f618..0b5b65d4 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingTapStopParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingTapStopParams.java @@ -9,8 +9,8 @@ /** * CallingTapStopParams — generated wire type (RELAY method 'calling.tap.stop', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingTapStopParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingTapStopResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingTapStopResult.java index b4f2d488..52a84147 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingTapStopResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingTapStopResult.java @@ -9,8 +9,8 @@ /** * CallingTapStopResult — generated wire type (RELAY method 'calling.tap.stop', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingTapStopResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingTransferParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingTransferParams.java index 1fcbabd4..dec85092 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingTransferParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingTransferParams.java @@ -9,8 +9,8 @@ /** * CallingTransferParams — generated wire type (RELAY method 'calling.transfer', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingTransferParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingTransferResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingTransferResult.java index 8c4d4c35..fc99fe82 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingTransferResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingTransferResult.java @@ -9,8 +9,8 @@ /** * CallingTransferResult — generated wire type (RELAY method 'calling.transfer', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingTransferResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingUserEventParams.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingUserEventParams.java index 052e2905..2a0bbdd5 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingUserEventParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingUserEventParams.java @@ -9,8 +9,8 @@ /** * CallingUserEventParams — generated wire type (RELAY method 'calling.user_event', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingUserEventParams { public Boolean async; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/CallingUserEventResult.java b/src/main/java/com/signalwire/sdk/relay/generated/CallingUserEventResult.java index e7b5b374..9575d623 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/CallingUserEventResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/CallingUserEventResult.java @@ -9,8 +9,8 @@ /** * CallingUserEventResult — generated wire type (RELAY method 'calling.user_event', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallingUserEventResult { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/MessagingSendParams.java b/src/main/java/com/signalwire/sdk/relay/generated/MessagingSendParams.java index 3d6ccd28..bf514dcc 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/MessagingSendParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/MessagingSendParams.java @@ -9,8 +9,8 @@ /** * MessagingSendParams — generated wire type (RELAY method 'messaging.send', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class MessagingSendParams { public String body; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/MessagingSendResult.java b/src/main/java/com/signalwire/sdk/relay/generated/MessagingSendResult.java index 81031d08..0602b1b5 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/MessagingSendResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/MessagingSendResult.java @@ -9,8 +9,8 @@ /** * MessagingSendResult — generated wire type (RELAY method 'messaging.send', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class MessagingSendResult { public String code; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/SignalwireConnectParams.java b/src/main/java/com/signalwire/sdk/relay/generated/SignalwireConnectParams.java index 035dbc5f..3642294b 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/SignalwireConnectParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/SignalwireConnectParams.java @@ -9,8 +9,8 @@ /** * SignalwireConnectParams — generated wire type (RELAY method 'signalwire.connect', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SignalwireConnectParams { public String agent; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/SignalwireConnectResult.java b/src/main/java/com/signalwire/sdk/relay/generated/SignalwireConnectResult.java index 2e6f04f2..d290546a 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/SignalwireConnectResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/SignalwireConnectResult.java @@ -9,8 +9,8 @@ /** * SignalwireConnectResult — generated wire type (RELAY method 'signalwire.connect', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SignalwireConnectResult { public java.util.List accesses; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/SignalwireDisconnectParams.java b/src/main/java/com/signalwire/sdk/relay/generated/SignalwireDisconnectParams.java index 785cbaac..4e6a30c0 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/SignalwireDisconnectParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/SignalwireDisconnectParams.java @@ -10,8 +10,8 @@ * SignalwireDisconnectParams — generated wire type (RELAY method 'signalwire.disconnect', params * phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SignalwireDisconnectParams { public Boolean restart; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/SignalwireExecuteParams.java b/src/main/java/com/signalwire/sdk/relay/generated/SignalwireExecuteParams.java index 04ef3fba..b1da6fa3 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/SignalwireExecuteParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/SignalwireExecuteParams.java @@ -9,8 +9,8 @@ /** * SignalwireExecuteParams — generated wire type (RELAY method 'signalwire.execute', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SignalwireExecuteParams { public java.util.List attempted; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/SignalwireExecuteResult.java b/src/main/java/com/signalwire/sdk/relay/generated/SignalwireExecuteResult.java index a4f98556..72784fa8 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/SignalwireExecuteResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/SignalwireExecuteResult.java @@ -9,8 +9,8 @@ /** * SignalwireExecuteResult — generated wire type (RELAY method 'signalwire.execute', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SignalwireExecuteResult { public String requester_nodeid; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/SignalwirePingParams.java b/src/main/java/com/signalwire/sdk/relay/generated/SignalwirePingParams.java index 435f6104..9c1f2ff3 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/SignalwirePingParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/SignalwirePingParams.java @@ -9,8 +9,8 @@ /** * SignalwirePingParams — generated wire type (RELAY method 'signalwire.ping', params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SignalwirePingParams { public String payload; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/SignalwirePingResult.java b/src/main/java/com/signalwire/sdk/relay/generated/SignalwirePingResult.java index 1271ef13..48ad88aa 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/SignalwirePingResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/SignalwirePingResult.java @@ -9,8 +9,8 @@ /** * SignalwirePingResult — generated wire type (RELAY method 'signalwire.ping', result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SignalwirePingResult { public String payload; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/SignalwireReauthenticateParams.java b/src/main/java/com/signalwire/sdk/relay/generated/SignalwireReauthenticateParams.java index 03525c69..a29c5460 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/SignalwireReauthenticateParams.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/SignalwireReauthenticateParams.java @@ -10,8 +10,8 @@ * SignalwireReauthenticateParams — generated wire type (RELAY method 'signalwire.reauthenticate', * params phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SignalwireReauthenticateParams { public java.util.Map authentication; diff --git a/src/main/java/com/signalwire/sdk/relay/generated/SignalwireReauthenticateResult.java b/src/main/java/com/signalwire/sdk/relay/generated/SignalwireReauthenticateResult.java index 9608daa1..08188fe7 100644 --- a/src/main/java/com/signalwire/sdk/relay/generated/SignalwireReauthenticateResult.java +++ b/src/main/java/com/signalwire/sdk/relay/generated/SignalwireReauthenticateResult.java @@ -10,8 +10,8 @@ * SignalwireReauthenticateResult — generated wire type (RELAY method 'signalwire.reauthenticate', * result phase). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SignalwireReauthenticateResult { public String authentication; diff --git a/src/main/java/com/signalwire/sdk/rest/AbortSignal.java b/src/main/java/com/signalwire/sdk/rest/AbortSignal.java index 0017d4ff..a22e2134 100644 --- a/src/main/java/com/signalwire/sdk/rest/AbortSignal.java +++ b/src/main/java/com/signalwire/sdk/rest/AbortSignal.java @@ -14,11 +14,10 @@ * true} the request raises the typed transport error ({@link SignalWireRestTransportError}) instead * of sending, so a cancelled request never hits the wire. * - *

      Fidelity is the language's business (see the cross-port design): Java's REST client is + *

      Cancellation is cooperative, not pre-emptive. This SDK's REST client is * synchronous and {@code java.net.http.HttpClient.send} cannot be interrupted mid-flight without a - * separate thread, so — like the Python reference's {@code threading.Event} check — cancellation is - * checked cooperatively BETWEEN attempts (the honest, portable minimum). The FIELD exists in every - * port; how deeply it cuts is per-port. + * separate thread, so the signal is checked BETWEEN attempts. Setting it will not tear down a + * request that is already in flight; it prevents the next attempt from being sent. * *

      This is a {@link FunctionalInterface}, so an {@link java.util.concurrent.atomic.AtomicBoolean} * or any boolean-valued predicate can be adapted inline: @@ -27,8 +26,6 @@ * var cancelled = new java.util.concurrent.atomic.AtomicBoolean(false); * var opts = RequestOptions.builder().abortSignal(cancelled::get).build(); * } - * - *

      Mirrors the Python reference's {@code _AbortSignal} protocol ({@code is_set() -> bool}). */ @FunctionalInterface public interface AbortSignal { diff --git a/src/main/java/com/signalwire/sdk/rest/BaseResource.java b/src/main/java/com/signalwire/sdk/rest/BaseResource.java index c5cb5b09..f719526d 100644 --- a/src/main/java/com/signalwire/sdk/rest/BaseResource.java +++ b/src/main/java/com/signalwire/sdk/rest/BaseResource.java @@ -22,11 +22,10 @@ * subclass that inherits a public {@code delete(id)}) neither recurses into itself nor shadows the * raw receiver — the semantic CRUD verbs and the raw path receivers are distinct methods. * - *

      Mirrors Python's {@code signalwire.rest.namespaces._base.BaseResource}: a base that carries - * the HTTP plumbing and base path, over which the CRUD / read / fabric bases and the per-resource - * classes are layered. The base contributes no public route surface of its own — every route is - * declared by the concrete resource (explicitly, for {@code BaseResource} subclasses) or by the - * CRUD / read / fabric bases below. + *

      This base carries only the HTTP plumbing and the base path; the CRUD / read / fabric bases and + * the per-resource classes are layered over it. It contributes no public route surface of its own — + * every route is declared by the concrete resource (explicitly, for {@code BaseResource} + * subclasses) or by the CRUD / read / fabric bases below. */ public class BaseResource { @@ -34,9 +33,8 @@ public class BaseResource { * Shared JSON codec used to project a decoded wire {@code Map} onto a generated * typed response DTO. The generated resource methods return the closed spec-typed {@code * *Response} DTOs (JAVA-1 typed-returns flip); each still hits the {@code rest*} verb receiver - * (which decodes the body to a {@code Map}) and then re-projects that Map onto the DTO here. - * Mirrors the Python reference, whose typed methods {@code cast(...)} the same runtime dict to - * the response type — a static view over the wire JSON, never a validating parse. + * (which decodes the body to a {@code Map}) and then re-projects that Map onto the DTO here. The + * DTO is a static view over the wire JSON, never a validating parse. */ private static final Gson RESPONSE_GSON = new Gson(); @@ -46,9 +44,8 @@ public class BaseResource { /** * Project a decoded wire {@code Map} onto a generated response DTO of type {@code T}. A {@code * null} raw (e.g. a bodyless DELETE) yields {@code null}. Unknown wire keys are ignored and - * absent DTO fields stay {@code null} — the same lenient, non-validating view the Python - * reference's {@code cast()} gives (the server response shape is never asserted at the SDK - * boundary). + * absent DTO fields stay {@code null} — the projection is lenient and non-validating, so the + * server response shape is never asserted at the SDK boundary. */ protected static T asType(Map raw, Class type) { if (raw == null) { diff --git a/src/main/java/com/signalwire/sdk/rest/CrudResource.java b/src/main/java/com/signalwire/sdk/rest/CrudResource.java index afc6ff04..e9c183fe 100644 --- a/src/main/java/com/signalwire/sdk/rest/CrudResource.java +++ b/src/main/java/com/signalwire/sdk/rest/CrudResource.java @@ -49,10 +49,9 @@ public CrudResource(HttpClient httpClient, String basePath) { } /** - * Create a CRUD resource with an explicit update verb. Mirrors Python's {@code - * CrudResource._update_method} class attribute: the base default here is PUT (preserving the - * historical Java behavior of every namespace), and subclasses that map onto a PATCH route (e.g. - * Fabric resources, Datasphere documents) opt in via {@link UpdateMethod#PATCH}. + * Create a CRUD resource with an explicit update verb. The base default is PUT, which is what + * every namespace uses; subclasses that map onto a PATCH route (e.g. Fabric resources, Datasphere + * documents) opt in via {@link UpdateMethod#PATCH}. * * @param httpClient the HTTP client * @param basePath base path for this resource @@ -128,10 +127,9 @@ public Map delete(String id, RequestOptions requestOptions) { /** * Percent-encode a resource id for safe use as a single URL PATH segment (NB-5). A raw id * containing a space / {@code #} / non-ASCII would make {@code URI.create} throw, and one - * containing {@code /} or {@code ?} would silently reroute the request; encoding the segment - * matches how the Python reference (requests) treats path input. {@code /} and other reserved - * characters are encoded so the id can never escape its segment; {@code null} is left as the - * literal path (a missing-id error surfaces from the server, not a client-side NPE). + * containing {@code /} or {@code ?} would silently reroute the request. {@code /} and other + * reserved characters are encoded so the id can never escape its segment; {@code null} is left as + * the literal path (a missing-id error surfaces from the server, not a client-side NPE). */ static String pathSegment(String id) { if (id == null) { diff --git a/src/main/java/com/signalwire/sdk/rest/FabricResource.java b/src/main/java/com/signalwire/sdk/rest/FabricResource.java index fd07766a..b37bb7e8 100644 --- a/src/main/java/com/signalwire/sdk/rest/FabricResource.java +++ b/src/main/java/com/signalwire/sdk/rest/FabricResource.java @@ -45,18 +45,17 @@ protected FabricResource(HttpClient httpClient, String basePath, UpdateMethod up /** * List the addresses bound to this resource: GET {@code {base}/{id}/addresses}. * - *

      Single {@code (id, params)} form (matching the generated per-resource {@code listAddresses} - * and the reference/Go {@code ListAddresses(id, params)}), so a fabric resource that OVERRIDES - * this with a non-standard address path ({@code CallFlows}, {@code ConferenceRooms}) fully - * replaces it — no inherited overload leaks the standard plural path. + *

      Declared in a single {@code (id, params)} form — the same shape the generated per-resource + * {@code listAddresses} uses — so a fabric resource that OVERRIDES this with a non-standard + * address path ({@code CallFlows}, {@code ConferenceRooms}) fully replaces it: no inherited + * overload leaks the standard plural path. * *

      Returns {@code Object} rather than a fixed {@code Map} so a subclass whose spec declares a * NAMED address-list response schema ({@code CallFlows}, {@code ConferenceRooms}, {@code * CxmlApplications}) can COVARIANTLY override with its typed {@code *AddressListResponse} DTO * (JAVA-1 typed-returns flip). The plain base copy still yields the decoded wire {@code * Map} at runtime; callers that want the typed view use the concrete resource's - * override. (This base method is a PORT_ADDITION — the reference records {@code list_addresses} - * only on the concrete subclasses.) + * override. */ public Object listAddresses(String resourceId, Map queryParams) { return restGet(getBasePath() + "/" + resourceId + "/addresses", queryParams); diff --git a/src/main/java/com/signalwire/sdk/rest/FabricResourcePUT.java b/src/main/java/com/signalwire/sdk/rest/FabricResourcePUT.java index 8337aa02..4b2c62d6 100644 --- a/src/main/java/com/signalwire/sdk/rest/FabricResourcePUT.java +++ b/src/main/java/com/signalwire/sdk/rest/FabricResourcePUT.java @@ -10,9 +10,8 @@ * Fabric CRUD resource (with address listing) whose {@link #update(String, java.util.Map)} sends * PUT instead of PATCH. * - *

      Mirrors Python's {@code signalwire.rest.namespaces.fabric.FabricResourcePUT} (which overrides - * {@code _update_method = "PUT"}). Used for resources whose canonical OpenAPI update route is PUT: - * cxml_scripts, freeswitch_connectors, relay_applications, sip_endpoints, swml_scripts. + *

      Used for the Fabric resources whose canonical OpenAPI update route is PUT: cxml_scripts, + * freeswitch_connectors, relay_applications, sip_endpoints, swml_scripts. */ public class FabricResourcePUT extends FabricResource { diff --git a/src/main/java/com/signalwire/sdk/rest/HttpClient.java b/src/main/java/com/signalwire/sdk/rest/HttpClient.java index 8324d80b..42ba961a 100644 --- a/src/main/java/com/signalwire/sdk/rest/HttpClient.java +++ b/src/main/java/com/signalwire/sdk/rest/HttpClient.java @@ -30,10 +30,9 @@ * *

      Transport behavior — per-attempt timeout, opt-in idempotency-aware retries with exponential * backoff (honoring {@code Retry-After}), and cooperative cancellation — is governed by the {@link - * RequestOptions} envelope (plan 4.2), supplied at two levels: a client default (stored on this - * client) and an optional per-request override on each verb. An unset field on either resolves to - * the next level down and finally the built-in floor. Mirrors the Python reference's {@code - * HttpClient}. + * RequestOptions} envelope, supplied at two levels: a client default (stored on this client) and an + * optional per-request override on each verb. An unset field on either resolves to the next level + * down and finally the built-in floor. */ public class HttpClient { @@ -83,8 +82,7 @@ public HttpClient(String space, String project, String token, RequestOptions req * True if {@code host} (a bare host or {@code host:port}) is a local loopback address — a local * mock/dev server that speaks plain HTTP. Used to pick http:// vs https:// so a shipped example * runs verbatim against the local mock. A real SignalWire space ({@code .signalwire.com}) - * is never loopback, so production is unaffected. Mirrors the Python reference {@code - * rest/_base.py::_is_loopback_host}. + * is never loopback, so production is unaffected. */ static boolean isLoopbackHost(String host) { if (host == null) { @@ -192,6 +190,13 @@ public Map post( return execute("POST", path, url, json, requestOptions); } + /** + * PUT request with no body and no per-request options — the body is sent as an empty JSON object. + */ + public Map put(String path) { + return put(path, null, null); + } + /** PUT request with JSON body. */ public Map put(String path, Map body) { return put(path, body, null); @@ -213,6 +218,14 @@ public Map patch(String path, Map body) { return patch(path, body, null); } + /** + * PATCH request with no body and no per-request options — the body is sent as an empty JSON + * object. + */ + public Map patch(String path) { + return patch(path, null, null); + } + /** PATCH request with JSON body and a per-request {@link RequestOptions} override. */ public Map patch( String path, Map body, RequestOptions requestOptions) { @@ -272,7 +285,6 @@ private HttpRequest buildRequest(String method, String url, String jsonBody, Dur * Drive the request with the resolved {@link RequestOptions} envelope: cooperative-cancellation * check before each attempt, per-attempt timeout, and opt-in idempotency-aware retry with * exponential backoff (honoring {@code Retry-After}). Total attempts = {@code retries + 1}. - * Mirrors the Python reference's {@code HttpClient._request}. */ private Map execute( String method, String path, String url, String jsonBody, RequestOptions perRequest) { diff --git a/src/main/java/com/signalwire/sdk/rest/PaginatedIterator.java b/src/main/java/com/signalwire/sdk/rest/PaginatedIterator.java index 520e1667..f4fcb763 100644 --- a/src/main/java/com/signalwire/sdk/rest/PaginatedIterator.java +++ b/src/main/java/com/signalwire/sdk/rest/PaginatedIterator.java @@ -22,9 +22,9 @@ /** * Iterator that walks paged REST responses by following the {@code links.next} cursor. * - *

      Mirrors {@code signalwire.rest._pagination.PaginatedIterator}: the constructor records the - * {@code http} client, path, query params, and the data-list key without performing an HTTP fetch. - * Each call to {@link #next()} returns the next item from the buffered page; when the buffer is + *

      The constructor records the {@code http} client, path, query params, and the data-list key + * WITHOUT performing an HTTP fetch — no request is issued until the first {@link #next()}. Each + * call to {@link #next()} returns the next item from the buffered page; when the buffer is * exhausted the iterator follows {@code links.next}, parses the URL query into the next request's * params, and fetches the next page. * @@ -47,9 +47,9 @@ public final class PaginatedIterator private boolean done = false; /** - * Cycle guard: {@code links.next} cursors already followed. Because termination now keys ONLY on - * an ABSENT next link (matching the corrected Python reference), a server that keeps returning - * the SAME {@code links.next} would otherwise loop forever. Seeing a repeat terminates iteration. + * Cycle guard: {@code links.next} cursors already followed. Because termination keys ONLY on an + * ABSENT next link, a server that keeps returning the SAME {@code links.next} would otherwise + * loop forever. Seeing a repeat terminates iteration. */ private final Set seenNext = new HashSet<>(); @@ -83,11 +83,23 @@ public PaginatedIterator( this.requestOptions = requestOptions; } + /** + * Returns this same object, so the iterator can be used directly in a for-each. Consequently it + * is SINGLE-USE — iterating twice does not restart from the first page. + * + * @return this iterator. + */ @Override public PaginatedIterator iterator() { return this; } + /** + * Whether another item is available, fetching the next page from the API when the current one is + * exhausted. This means the call can block on network I/O and can raise a {@link RestError}. + * + * @return {@code true} when another item is available. + */ @Override public boolean hasNext() { while (index >= items.size()) { @@ -178,9 +190,8 @@ private void fetchNext() { } /** - * Parse the query string of {@code nextUrl} into a flat {@code key -> value} map. Multi-valued - * keys collapse to the last occurrence to match Python's behaviour ({@code v[0] if len(v) == 1 - * else v}, but flattened to a single string). + * Parse the query string of {@code nextUrl} into a flat {@code key -> value} map. A key that + * appears more than once collapses to its LAST occurrence. */ static Map parseQuery(String nextUrl) { Map out = new LinkedHashMap<>(); diff --git a/src/main/java/com/signalwire/sdk/rest/ReadResource.java b/src/main/java/com/signalwire/sdk/rest/ReadResource.java index 997f605d..c026ebb0 100644 --- a/src/main/java/com/signalwire/sdk/rest/ReadResource.java +++ b/src/main/java/com/signalwire/sdk/rest/ReadResource.java @@ -11,9 +11,8 @@ /** * Read-only REST resource: {@code list} + {@code get}, no write verbs. * - *

      Mirrors Python's {@code signalwire.rest.namespaces._base.ReadResource}. Used by log/read - * resources (fax logs, message logs, voice logs, conference logs, video room sessions, fabric - * addresses) whose canonical surface is list + get only. + *

      Used by log/read resources (fax logs, message logs, voice logs, conference logs, video room + * sessions, fabric addresses) whose canonical surface is list + get only. */ public class ReadResource extends BaseResource { @@ -53,10 +52,9 @@ public Map get(String id, RequestOptions requestOptions) { /** * Iterate every item across all pages of this resource's list endpoint. * - *

      Mirrors Python's {@code ReadResource.paginate(**params)}. Where {@link #list()} returns a - * single raw page (the server's first response), {@code paginate()} returns a {@link - * PaginatedIterator} that follows the {@code links.next} cursor and yields each item across all - * pages, so callers no longer hand-build the path + token loop: + *

      Where {@link #list()} returns a single raw page (the server's first response), {@code + * paginate()} returns a {@link PaginatedIterator} that follows the {@code links.next} cursor and + * yields each item across all pages, so callers no longer hand-build the path + token loop: * *

      {@code
          * for (Map address : client.fabric().addresses().paginate()) {
      diff --git a/src/main/java/com/signalwire/sdk/rest/RequestOptions.java b/src/main/java/com/signalwire/sdk/rest/RequestOptions.java
      index cc0ad331..2a69ac3c 100644
      --- a/src/main/java/com/signalwire/sdk/rest/RequestOptions.java
      +++ b/src/main/java/com/signalwire/sdk/rest/RequestOptions.java
      @@ -11,7 +11,7 @@
       import java.util.Set;
       
       /**
      - * RequestOptions — the REST request-options envelope (plan 4.2).
      + * RequestOptions — the REST request-options envelope.
        *
        * 

      An immutable value object controlling per-request transport behavior: timeout, retries (with * an idempotency-aware retry policy + exponential backoff), and cooperative cancellation. Supplied @@ -27,13 +27,12 @@ * *

      Every field is optional; a {@code null} field means "inherit" and resolves at apply-time to * the client default and then the built-in floor (see {@link RequestOptionsSupport#resolve}). The - * timeout + retry semantics are the reference-pinned, wire-observable contract (the mock sees N - * attempts and honors the backoff ordering + the POST/PATCH idempotency asymmetry). {@code - * abortSignal} fidelity is per-port idiom (see {@link AbortSignal}). + * timeout + retry semantics are wire-observable: the server sees exactly N attempts, in the backoff + * ordering, with the POST/PATCH idempotency asymmetry applied. {@code abortSignal} is client-side + * only and never changes what goes on the wire (see {@link AbortSignal}). * *

      Instances are created via {@link #builder()} (all fields optional) and are deeply immutable - * (the {@code retryOnStatus} set is defensively copied and returned unmodifiable). Mirrors the - * Python reference's frozen {@code RequestOptions} dataclass. + * (the {@code retryOnStatus} set is defensively copied and returned unmodifiable). */ public final class RequestOptions { @@ -101,7 +100,7 @@ public AbortSignal abortSignal() { * *

      This is the per-request-over-client-default shallow merge: an unset field on {@code * override} leaves this instance's value intact. A {@code null} {@code override} returns this - * unchanged. Mirrors the Python reference's {@code RequestOptions.merge}. + * unchanged. * * @param override the per-request options whose set fields win (may be {@code null}) * @return the merged options @@ -126,7 +125,7 @@ public static Builder builder() { /** * Fluent builder for {@link RequestOptions}. Every setter is optional; an unset field is {@code - * null} ("inherit"). Mirrors the Python reference's keyword-only dataclass constructor. + * null} ("inherit"). */ public static final class Builder { private Double timeout; diff --git a/src/main/java/com/signalwire/sdk/rest/RequestOptionsSupport.java b/src/main/java/com/signalwire/sdk/rest/RequestOptionsSupport.java index e79fffce..bef01bab 100644 --- a/src/main/java/com/signalwire/sdk/rest/RequestOptionsSupport.java +++ b/src/main/java/com/signalwire/sdk/rest/RequestOptionsSupport.java @@ -9,13 +9,11 @@ import java.util.Set; /** - * Resolution + retry-policy helpers for the REST request-options envelope (plan 4.2). + * Resolution + retry-policy helpers for the REST request-options envelope. * - *

      Java has no module-level free functions, so the reference's module-level {@code resolve} and - * {@code status_is_retryable} (in {@code signalwire.rest._request_options}) are hosted here as - * static methods and projected back to their canonical free-function homes by the signature/surface - * enumerators (FREE_FUNCTION_PROJECTIONS). {@link EffectiveOptions} is the port's stand-in for the - * reference's private {@code _EffectiveOptions} — every field concrete, so the request loop reads + *

      Java has no module-level free functions, so {@link #resolve} and {@link #statusIsRetryable} + * are hosted here as static methods on an uninstantiable holder. {@link EffectiveOptions} is the + * fully-resolved form of a {@link RequestOptions} — every field concrete, so the request loop reads * values without re-checking defaults on every attempt. */ public final class RequestOptionsSupport { @@ -38,7 +36,7 @@ private RequestOptionsSupport() {} /** * A {@link RequestOptions} with every field resolved to a concrete value. Produced by {@link - * #resolve}; no {@code null} remains. Mirrors the reference's private {@code _EffectiveOptions}. + * #resolve}; no {@code null} remains. */ public record EffectiveOptions( double timeout, @@ -51,7 +49,7 @@ public record EffectiveOptions( * Resolve the effective options: per-request over client-default over built-in. * *

      A {@code null} field inherits the next level down; the built-in defaults are the floor. The - * result has every field concrete. Mirrors the reference's module-level {@code resolve}. + * result has every field concrete. * * @param clientDefault the client-level default options (may be {@code null}) * @param perRequest the per-request override (may be {@code null}) @@ -76,8 +74,7 @@ public static EffectiveOptions resolve(RequestOptions clientDefault, RequestOpti *

      Idempotent methods (GET/PUT/DELETE) retry on the full {@code retryOnStatus} set. * Non-idempotent methods (POST/PATCH) retry only on 429/503 (the Retry-After-bearing throttles, * which mean "the request was NOT processed, back off"), never on 500/502/504, to avoid replaying - * a side effect that may have partially applied. Mirrors the reference's {@code - * status_is_retryable}. + * a side effect that may have partially applied. * * @param method the HTTP method * @param status the HTTP status returned diff --git a/src/main/java/com/signalwire/sdk/rest/RestClient.java b/src/main/java/com/signalwire/sdk/rest/RestClient.java index 573c27c9..5f90e180 100644 --- a/src/main/java/com/signalwire/sdk/rest/RestClient.java +++ b/src/main/java/com/signalwire/sdk/rest/RestClient.java @@ -78,10 +78,19 @@ public static RestClient withBaseUrl(String baseUrl, String project, String toke // ── Builder ────────────────────────────────────────────────────── + /** + * Start configuring a REST client. + * + * @return a fresh {@link Builder}. + */ public static Builder builder() { return new Builder(); } + /** + * Fluent constructor for {@link RestClient}. Each credential falls back to its environment + * variable at {@link #build()}, so a builder with no explicit values is supported usage. + */ public static class Builder { private String project; private String token; @@ -89,6 +98,12 @@ public static class Builder { private HttpClient httpClient; private RequestOptions requestOptions; + /** + * The SignalWire project UUID to authenticate as. Falls back to {@code SIGNALWIRE_PROJECT_ID}. + * + * @param project the project id. + * @return this builder. + */ public Builder project(String project) { this.project = project; return this; @@ -96,19 +111,32 @@ public Builder project(String project) { /** * Client-default {@link RequestOptions} (timeout / retries / retry policy / abort signal) - * applied to every request this client makes, overridable per call. Mirrors the Python - * reference's {@code RestClient(request_options=...)}. + * applied to every request this client makes, overridable per call. */ public Builder requestOptions(RequestOptions requestOptions) { this.requestOptions = requestOptions; return this; } + /** + * The API token to authenticate with. Falls back to {@code SIGNALWIRE_API_TOKEN}. This is a + * long-lived project credential — keep it out of source and out of logs. + * + * @param token the API token. + * @return this builder. + */ public Builder token(String token) { this.token = token; return this; } + /** + * The space hostname requests are addressed to. Falls back to {@code SIGNALWIRE_SPACE}. Unlike + * the RELAY client, this has NO default — it must come from one source or the other. + * + * @param space the space hostname. + * @return this builder. + */ public Builder space(String space) { this.space = space; return this; @@ -123,6 +151,13 @@ Builder httpClient(HttpClient httpClient) { return this; } + /** + * Resolve credentials from the builder then the environment, and construct the client. + * + * @return the constructed client. + * @throws IllegalArgumentException when any of project, token, or space is still unset after + * the environment fallback, naming all three and their variables. + */ public RestClient build() { // Env-var fallback for any credential not set explicitly — parity with // Python's RestClient() (rest/client.py), which reads SIGNALWIRE_PROJECT_ID @@ -155,14 +190,29 @@ private static String envOrNull(String key) { // ── Accessors ──────────────────────────────────────────────────── + /** + * The project UUID this client authenticates as. + * + * @return the project id. + */ public String getProject() { return project; } + /** + * The space hostname this client addresses requests to. + * + * @return the space hostname. + */ public String getSpace() { return space; } + /** + * The HTTP client carrying this client's base URL and credentials. + * + * @return the underlying HTTP client. + */ public HttpClient getHttpClient() { return httpClient; } diff --git a/src/main/java/com/signalwire/sdk/rest/RestError.java b/src/main/java/com/signalwire/sdk/rest/RestError.java index f517576c..1778a82e 100644 --- a/src/main/java/com/signalwire/sdk/rest/RestError.java +++ b/src/main/java/com/signalwire/sdk/rest/RestError.java @@ -80,24 +80,39 @@ public RestError( this.requestId = extractRequestId(headers); } + /** + * HTTP status of the failing response, or {@code 0} when the request never got one (a transport + * error). + * + * @return the status code. + */ public int getStatusCode() { return statusCode; } /** * The response body of the failing request — the {@code body} envelope field. Alias of {@link - * #getResponseBody()} under the reference's field name ({@code SignalWireRestError.body}, - * _base.py) so the error envelope (status / body / url / method) is reachable under the reference - * spelling. + * #getResponseBody()}, so the whole error envelope (status / body / url / method) is reachable + * under its wire field names. */ public String getBody() { return responseBody; } + /** + * HTTP method of the failing request. + * + * @return the method. + */ public String getMethod() { return method; } + /** + * Path of the failing request, without the space host or query string. + * + * @return the path. + */ public String getPath() { return path; } @@ -107,6 +122,12 @@ public String getUrl() { return url; } + /** + * Raw body of the failing response. It is server-supplied content that may echo request data, so + * treat it as untrusted when surfacing it to a user. + * + * @return the response body, or {@code null} for a transport error. + */ public String getResponseBody() { return responseBody; } @@ -131,8 +152,7 @@ public Optional getRequestId() { /** * Response header names SignalWire (and common proxies) use for the platform request id, in - * preference order. Matched case-insensitively. Mirrors the reference's {@code - * _REQUEST_ID_HEADERS} (_base.py). + * preference order. Matched case-insensitively. */ private static final List REQUEST_ID_HEADERS = List.of("x-request-id", "x-signalwire-request-id", "request-id", "x-amzn-requestid"); diff --git a/src/main/java/com/signalwire/sdk/rest/RouteRegistry.java b/src/main/java/com/signalwire/sdk/rest/RouteRegistry.java index 5a36c52a..cb273c18 100644 --- a/src/main/java/com/signalwire/sdk/rest/RouteRegistry.java +++ b/src/main/java/com/signalwire/sdk/rest/RouteRegistry.java @@ -42,14 +42,13 @@ * *

      The client is built with project id = the sentinel so compat's {@code {AccountSid}} path * segment (which the SDK fills from the project id) normalises to {@code {id}} and the spec matcher - * resolves it from config, exactly as Go's registry does. + * resolves it from config. * *

      A method that cannot be invoked is NOT silently skipped — a dropped method is a route missing * from Set B, which would turn a real divergence into a false "Java matches the spec" pass. Methods * that genuinely do not map to a single canonical route must be listed explicitly in {@link * #REGISTRY_SKIP} with a reason; everything else that fails to invoke, or invokes but issues no - * HTTP request, is a hard ERROR (non-zero exit + recorded in {@code "errors"}), mirroring - * python_route_registry.py / cmd/route-registry / route-registry.ts. + * HTTP request, is a hard ERROR (non-zero exit + recorded in {@code "errors"}). * *

      Output: JSON {@code {"routes":[{"method","path_template","via"}],"skipped":[...], * "errors":[...]}} on stdout. Exit 1 if any uninvokable, un-skip-listed method (Set B incomplete). @@ -113,8 +112,8 @@ private record Call(String method, String path) {} * /fabric/resources}); the SDK's {@link HttpClient#buildUrl} prepends the base URL's path * component ({@code /api}) before dispatch. We record that SAME on-the-wire path so Set B lines * up with the spec's {@code path_template}, which carries the server prefix (e.g. {@code - * /api/relay/rest/…}). This mirrors Go's registry recording {@code req.URL.Path} (the full - * dispatched path) rather than the resource-relative argument. + * /api/relay/rest/…}). Recording the resource-relative argument instead would leave every + * captured route missing its prefix and matching nothing in the spec. */ private static final class RecordingHttpClient extends HttpClient { /** The base URL's path component (e.g. {@code /api}) — the prefix buildUrl prepends. */ @@ -533,6 +532,11 @@ private Map build() { return payload; } + /** + * Entry point: emits the REST route registry this gate compares across ports. + * + * @param args the command-line arguments. + */ public static void main(String[] args) { RouteRegistry reg = new RouteRegistry(); Map payload = reg.build(); diff --git a/src/main/java/com/signalwire/sdk/rest/RouteTestPlan.java b/src/main/java/com/signalwire/sdk/rest/RouteTestPlan.java index 4a076721..454a2f08 100644 --- a/src/main/java/com/signalwire/sdk/rest/RouteTestPlan.java +++ b/src/main/java/com/signalwire/sdk/rest/RouteTestPlan.java @@ -20,15 +20,13 @@ import java.util.Set; /** - * RouteTestPlan — the per-{@code via} call plan for the REST wire-test generator ({@code - * scripts/generate_rest_tests.py}). + * RouteTestPlan — the per-{@code via} call plan for the REST wire-test generator. * *

      Companion capture to {@link RouteRegistry}. {@code RouteRegistry} answers "which (method, * path) routes does the SDK implement" (deduped, via-merged); this program answers the sibling * question the TEST generator needs: for EVERY {@code via} route method, what is the exact Java * call expression that reaches it off the live {@link RestClient}, AND what type-correct literal - * argument tokens must be passed. It is the Java realisation of the reflection the ruby/php/go/ts - * generators do (rest_test_plan.rb / rest_test_plan.php / buildCallIndex). + * argument tokens must be passed. * *

      It REUSES {@code RouteRegistry}'s live-client walk shape (a {@link RestClient} backed by a * recording {@link HttpClient}; reflection over namespace → sub-resource accessors → route methods) @@ -508,6 +506,11 @@ private Map build() { return payload; } + /** + * Entry point: emits the REST route test plan this gate compares across ports. + * + * @param args the command-line arguments. + */ public static void main(String[] args) { RouteTestPlan tp = new RouteTestPlan(); Map payload = tp.build(); diff --git a/src/main/java/com/signalwire/sdk/rest/SignalWireRestTransportError.java b/src/main/java/com/signalwire/sdk/rest/SignalWireRestTransportError.java index 8338357b..476c2ddd 100644 --- a/src/main/java/com/signalwire/sdk/rest/SignalWireRestTransportError.java +++ b/src/main/java/com/signalwire/sdk/rest/SignalWireRestTransportError.java @@ -11,20 +11,15 @@ * refused, DNS failure, connection reset, TLS error). * *

      A member of the {@link RestError} family: there is no HTTP response, so there is no status - * code ({@link #getStatusCode()} returns {@code 0}, this port's sentinel for "no HTTP status" — - * mapped to {@code null} by tooling that compares against the Python reference's {@code - * status_code=None}) and the response body is empty. The underlying transport exception (an {@link - * java.io.IOException} or similar) is preserved via the standard {@link Throwable} cause chain, the - * Java equivalent of Python's {@code raise ... from exc}. Because it extends {@link RestError}, a - * caller catching that one type handles both an HTTP-error response and a transport failure with a - * single {@code catch} — instead of a bare {@code IOException} leaking through. - * - *

      Mirrors the Python reference's {@code SignalWireRestTransportError(SignalWireRestError)} (plan - * 1.3b). + * code ({@link #getStatusCode()} returns {@link #NO_STATUS}, the sentinel for "no HTTP status") and + * the response body is empty. The underlying transport exception (an {@link java.io.IOException} or + * similar) is preserved via the standard {@link Throwable} cause chain. Because it extends {@link + * RestError}, a caller catching that one type handles both an HTTP-error response and a transport + * failure with a single {@code catch} — instead of a bare {@code IOException} leaking through. */ public class SignalWireRestTransportError extends RestError { - /** This port's sentinel {@code statusCode} for "no HTTP response reached". */ + /** Sentinel {@code statusCode} meaning "no HTTP response was ever reached". */ public static final int NO_STATUS = 0; /** diff --git a/src/main/java/com/signalwire/sdk/rest/TlsContext.java b/src/main/java/com/signalwire/sdk/rest/TlsContext.java index 258446c8..b49bcc9e 100644 --- a/src/main/java/com/signalwire/sdk/rest/TlsContext.java +++ b/src/main/java/com/signalwire/sdk/rest/TlsContext.java @@ -18,13 +18,12 @@ import javax.net.ssl.TrustManagerFactory; /** - * Builds TLS material that trusts a custom CA bundle, for the fleet A5 CA-var contract. + * Builds TLS material that trusts a custom CA bundle. * - *

      The two fleet-standard env vars — {@code SIGNALWIRE_REST_CA_FILE} (REST HTTP transport, via - * {@link #fromCaFile}) and {@code SIGNALWIRE_RELAY_CA_FILE} (RELAY WebSocket transport, via {@link - * #socketFactory}) — each name a PEM CA bundle. When set, the owning transport loads that bundle - * here and trusts ONLY it, so a private / self-signed CA is honored. Mirrors the Python reference - * (rest/_base.py:163, relay/client.py:131). + *

      Two env vars — {@code SIGNALWIRE_REST_CA_FILE} (REST HTTP transport, via {@link #fromCaFile}) + * and {@code SIGNALWIRE_RELAY_CA_FILE} (RELAY WebSocket transport, via {@link #socketFactory}) — + * each name a PEM CA bundle. When set, the owning transport loads that bundle here and trusts ONLY + * it, so a private / self-signed CA is honored. */ public final class TlsContext { @@ -53,7 +52,7 @@ public static SSLContext fromCaFile(String caFile) { ks.load(null, null); int i = 0; for (Certificate cert : certs) { - ks.setCertificateEntry("ca-" + (i++), cert); + ks.setCertificateEntry("ca-" + i++, cert); } TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AI.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AI.java index 886054e7..48fe62c6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AI.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AI.java @@ -9,8 +9,8 @@ /** * AI — generated wire type ('calling' spec, components/schemas 'AI'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AI { public java.util.Map ai; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIObject.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIObject.java index a1671bd2..dda03977 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIObject.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIObject.java @@ -9,8 +9,8 @@ /** * AIObject — generated wire type ('calling' spec, components/schemas 'AIObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIObject { public java.util.Map global_data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIParams.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIParams.java index 5c785ac5..fd2834c4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIParams.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIParams.java @@ -9,8 +9,8 @@ /** * AIParams — generated wire type ('calling' spec, components/schemas 'AIParams'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIParams { public java.util.Map acknowledge_interruptions; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPostPromptPom.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPostPromptPom.java index 88e1dbaa..76ec1d32 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPostPromptPom.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPostPromptPom.java @@ -9,8 +9,8 @@ /** * AIPostPromptPom — generated wire type ('calling' spec, components/schemas 'AIPostPromptPom'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPostPromptPom { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPostPromptText.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPostPromptText.java index 29f4363e..8cf9c5b7 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPostPromptText.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPostPromptText.java @@ -9,8 +9,8 @@ /** * AIPostPromptText — generated wire type ('calling' spec, components/schemas 'AIPostPromptText'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPostPromptText { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPromptPom.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPromptPom.java index 849b933d..9de8594b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPromptPom.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPromptPom.java @@ -9,8 +9,8 @@ /** * AIPromptPom — generated wire type ('calling' spec, components/schemas 'AIPromptPom'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPromptPom { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPromptText.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPromptText.java index e40437a6..3418f2c7 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPromptText.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AIPromptText.java @@ -9,8 +9,8 @@ /** * AIPromptText — generated wire type ('calling' spec, components/schemas 'AIPromptText'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPromptText { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AllOfProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AllOfProperty.java index ab7f3f91..fb6f7d84 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AllOfProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AllOfProperty.java @@ -9,8 +9,8 @@ /** * AllOfProperty — generated wire type ('calling' spec, components/schemas 'AllOfProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AllOfProperty { public java.util.List allOf; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AmazonBedrock.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AmazonBedrock.java index c828703d..d05ee381 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AmazonBedrock.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AmazonBedrock.java @@ -9,8 +9,8 @@ /** * AmazonBedrock — generated wire type ('calling' spec, components/schemas 'AmazonBedrock'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AmazonBedrock { public java.util.Map amazon_bedrock; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AmazonBedrockObject.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AmazonBedrockObject.java index 1158169c..0d06c54d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AmazonBedrockObject.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AmazonBedrockObject.java @@ -10,8 +10,8 @@ * AmazonBedrockObject — generated wire type ('calling' spec, components/schemas * 'AmazonBedrockObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AmazonBedrockObject { public java.util.Map global_data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Answer.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Answer.java index af25e896..67b7e274 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Answer.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Answer.java @@ -9,8 +9,8 @@ /** * Answer — generated wire type ('calling' spec, components/schemas 'Answer'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Answer { public java.util.Map answer; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AnyOfProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AnyOfProperty.java index b9d90e99..9f64390c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AnyOfProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/AnyOfProperty.java @@ -9,8 +9,8 @@ /** * AnyOfProperty — generated wire type ('calling' spec, components/schemas 'AnyOfProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AnyOfProperty { public java.util.List anyOf; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ArrayProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ArrayProperty.java index dfe64462..2308c586 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ArrayProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ArrayProperty.java @@ -9,8 +9,8 @@ /** * ArrayProperty — generated wire type ('calling' spec, components/schemas 'ArrayProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ArrayProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/BedrockParams.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/BedrockParams.java index f26473ea..b98c5efa 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/BedrockParams.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/BedrockParams.java @@ -9,8 +9,8 @@ /** * BedrockParams — generated wire type ('calling' spec, components/schemas 'BedrockParams'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class BedrockParams { public java.util.Map attention_timeout; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/BedrockSWAIG.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/BedrockSWAIG.java index be3605f0..c1fa00bb 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/BedrockSWAIG.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/BedrockSWAIG.java @@ -9,8 +9,8 @@ /** * BedrockSWAIG — generated wire type ('calling' spec, components/schemas 'BedrockSWAIG'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class BedrockSWAIG { public java.util.List functions; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/BooleanProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/BooleanProperty.java index c56b628d..da2d654f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/BooleanProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/BooleanProperty.java @@ -9,8 +9,8 @@ /** * BooleanProperty — generated wire type ('calling' spec, components/schemas 'BooleanProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class BooleanProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallAIMessageRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallAIMessageRequest.java index 8e5f8203..595e431e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallAIMessageRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallAIMessageRequest.java @@ -10,8 +10,8 @@ * CallAIMessageRequest — generated wire type ('calling' spec, components/schemas * 'CallAIMessageRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallAIMessageRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallAIMessageResetParams.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallAIMessageResetParams.java index f883f314..45f1872a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallAIMessageResetParams.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallAIMessageResetParams.java @@ -10,8 +10,8 @@ * CallAIMessageResetParams — generated wire type ('calling' spec, components/schemas * 'CallAIMessageResetParams'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallAIMessageResetParams { public Boolean full_reset; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallAIStopRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallAIStopRequest.java index c27adf85..da8f99f6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallAIStopRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallAIStopRequest.java @@ -9,8 +9,8 @@ /** * CallAIStopRequest — generated wire type ('calling' spec, components/schemas 'CallAIStopRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallAIStopRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCollectRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCollectRequest.java index 908cb3d1..b5ea4f92 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCollectRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCollectRequest.java @@ -10,8 +10,8 @@ * CallCollectRequest — generated wire type ('calling' spec, components/schemas * 'CallCollectRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallCollectRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCollectStartInputTimersRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCollectStartInputTimersRequest.java index c3eb6583..72ea9f09 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCollectStartInputTimersRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCollectStartInputTimersRequest.java @@ -10,8 +10,8 @@ * CallCollectStartInputTimersRequest — generated wire type ('calling' spec, components/schemas * 'CallCollectStartInputTimersRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallCollectStartInputTimersRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCollectStopRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCollectStopRequest.java index 3a37ba7b..c8a6634f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCollectStopRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCollectStopRequest.java @@ -10,8 +10,8 @@ * CallCollectStopRequest — generated wire type ('calling' spec, components/schemas * 'CallCollectStopRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallCollectStopRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreate422Error.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreate422Error.java index 6cf8e5f4..31fb5eb4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreate422Error.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreate422Error.java @@ -10,8 +10,8 @@ * CallCreate422Error — generated wire type ('calling' spec, components/schemas * 'CallCreate422Error'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallCreate422Error { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreateParamsSWML.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreateParamsSWML.java index f0b8bf08..18fdc6e3 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreateParamsSWML.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreateParamsSWML.java @@ -10,8 +10,8 @@ * CallCreateParamsSWML — generated wire type ('calling' spec, components/schemas * 'CallCreateParamsSWML'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallCreateParamsSWML { public String from; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreateParamsURL.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreateParamsURL.java index 48f58917..76db5abb 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreateParamsURL.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreateParamsURL.java @@ -10,8 +10,8 @@ * CallCreateParamsURL — generated wire type ('calling' spec, components/schemas * 'CallCreateParamsURL'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallCreateParamsURL { public String from; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreateRequest.java index fd077fda..538f63a8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallCreateRequest.java @@ -9,8 +9,8 @@ /** * CallCreateRequest — generated wire type ('calling' spec, components/schemas 'CallCreateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallCreateRequest { public String command; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDenoiseRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDenoiseRequest.java index 081330d5..093b5352 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDenoiseRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDenoiseRequest.java @@ -10,8 +10,8 @@ * CallDenoiseRequest — generated wire type ('calling' spec, components/schemas * 'CallDenoiseRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallDenoiseRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDenoiseStopRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDenoiseStopRequest.java index 1ae496b2..fd88f713 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDenoiseStopRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDenoiseStopRequest.java @@ -10,8 +10,8 @@ * CallDenoiseStopRequest — generated wire type ('calling' spec, components/schemas * 'CallDenoiseStopRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallDenoiseStopRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDetectRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDetectRequest.java index 41cfa3b9..d3363eac 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDetectRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDetectRequest.java @@ -9,8 +9,8 @@ /** * CallDetectRequest — generated wire type ('calling' spec, components/schemas 'CallDetectRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallDetectRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDetectStopRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDetectStopRequest.java index 4c4b6d67..fb6792c9 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDetectStopRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDetectStopRequest.java @@ -10,8 +10,8 @@ * CallDetectStopRequest — generated wire type ('calling' spec, components/schemas * 'CallDetectStopRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallDetectStopRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDisconnectRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDisconnectRequest.java index 6a7a28a3..36eca307 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDisconnectRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallDisconnectRequest.java @@ -10,8 +10,8 @@ * CallDisconnectRequest — generated wire type ('calling' spec, components/schemas * 'CallDisconnectRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallDisconnectRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallHangupRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallHangupRequest.java index 335d1ae3..060d898d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallHangupRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallHangupRequest.java @@ -9,8 +9,8 @@ /** * CallHangupRequest — generated wire type ('calling' spec, components/schemas 'CallHangupRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallHangupRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallHoldRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallHoldRequest.java index 31e8cbd3..35f365d8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallHoldRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallHoldRequest.java @@ -9,8 +9,8 @@ /** * CallHoldRequest — generated wire type ('calling' spec, components/schemas 'CallHoldRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallHoldRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallLeg.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallLeg.java index fa653b7a..bb60e7b2 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallLeg.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallLeg.java @@ -9,8 +9,8 @@ /** * CallLeg — generated wire type ('calling' spec, components/schemas 'CallLeg'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallLeg { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallLiveTranscribeRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallLiveTranscribeRequest.java index ec8b1657..998088df 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallLiveTranscribeRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallLiveTranscribeRequest.java @@ -10,8 +10,8 @@ * CallLiveTranscribeRequest — generated wire type ('calling' spec, components/schemas * 'CallLiveTranscribeRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallLiveTranscribeRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallLiveTranslateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallLiveTranslateRequest.java index 1248f133..257470d4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallLiveTranslateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallLiveTranslateRequest.java @@ -10,8 +10,8 @@ * CallLiveTranslateRequest — generated wire type ('calling' spec, components/schemas * 'CallLiveTranslateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallLiveTranslateRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayPauseRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayPauseRequest.java index 5055a3a9..dc7245ae 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayPauseRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayPauseRequest.java @@ -10,8 +10,8 @@ * CallPlayPauseRequest — generated wire type ('calling' spec, components/schemas * 'CallPlayPauseRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallPlayPauseRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayRequest.java index fce7ab68..ec362884 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayRequest.java @@ -9,8 +9,8 @@ /** * CallPlayRequest — generated wire type ('calling' spec, components/schemas 'CallPlayRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallPlayRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayResumeRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayResumeRequest.java index 2b3c2ae1..fffa4735 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayResumeRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayResumeRequest.java @@ -10,8 +10,8 @@ * CallPlayResumeRequest — generated wire type ('calling' spec, components/schemas * 'CallPlayResumeRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallPlayResumeRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayStopRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayStopRequest.java index 172f6236..21629703 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayStopRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayStopRequest.java @@ -10,8 +10,8 @@ * CallPlayStopRequest — generated wire type ('calling' spec, components/schemas * 'CallPlayStopRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallPlayStopRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayVolumeRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayVolumeRequest.java index 0ce9a1fb..d774c3a6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayVolumeRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallPlayVolumeRequest.java @@ -10,8 +10,8 @@ * CallPlayVolumeRequest — generated wire type ('calling' spec, components/schemas * 'CallPlayVolumeRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallPlayVolumeRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallReceiveFaxStopRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallReceiveFaxStopRequest.java index 8a113cbc..d69fbc8a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallReceiveFaxStopRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallReceiveFaxStopRequest.java @@ -10,8 +10,8 @@ * CallReceiveFaxStopRequest — generated wire type ('calling' spec, components/schemas * 'CallReceiveFaxStopRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallReceiveFaxStopRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordPauseRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordPauseRequest.java index 5c1b8409..b72102b0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordPauseRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordPauseRequest.java @@ -10,8 +10,8 @@ * CallRecordPauseRequest — generated wire type ('calling' spec, components/schemas * 'CallRecordPauseRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallRecordPauseRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordRequest.java index 825fef20..51ab36fc 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordRequest.java @@ -9,8 +9,8 @@ /** * CallRecordRequest — generated wire type ('calling' spec, components/schemas 'CallRecordRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallRecordRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordResumeRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordResumeRequest.java index c1a38b15..8af2eea9 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordResumeRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordResumeRequest.java @@ -10,8 +10,8 @@ * CallRecordResumeRequest — generated wire type ('calling' spec, components/schemas * 'CallRecordResumeRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallRecordResumeRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordStopRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordStopRequest.java index b5b9b961..eee778da 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordStopRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallRecordStopRequest.java @@ -10,8 +10,8 @@ * CallRecordStopRequest — generated wire type ('calling' spec, components/schemas * 'CallRecordStopRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallRecordStopRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallReferRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallReferRequest.java index 90138007..0da8ce2c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallReferRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallReferRequest.java @@ -9,8 +9,8 @@ /** * CallReferRequest — generated wire type ('calling' spec, components/schemas 'CallReferRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallReferRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallSendFaxStopRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallSendFaxStopRequest.java index f0b1eac3..71b31988 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallSendFaxStopRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallSendFaxStopRequest.java @@ -10,8 +10,8 @@ * CallSendFaxStopRequest — generated wire type ('calling' spec, components/schemas * 'CallSendFaxStopRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallSendFaxStopRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallStreamRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallStreamRequest.java index 39d7ff88..5cc65f15 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallStreamRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallStreamRequest.java @@ -9,8 +9,8 @@ /** * CallStreamRequest — generated wire type ('calling' spec, components/schemas 'CallStreamRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallStreamRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallStreamStopRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallStreamStopRequest.java index 94b9cf2b..6e8dc04a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallStreamStopRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallStreamStopRequest.java @@ -10,8 +10,8 @@ * CallStreamStopRequest — generated wire type ('calling' spec, components/schemas * 'CallStreamStopRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallStreamStopRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTapRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTapRequest.java index 276b4756..f3f2d72d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTapRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTapRequest.java @@ -9,8 +9,8 @@ /** * CallTapRequest — generated wire type ('calling' spec, components/schemas 'CallTapRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallTapRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTapStopRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTapStopRequest.java index d5c4a21f..6ff1be6c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTapStopRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTapStopRequest.java @@ -10,8 +10,8 @@ * CallTapStopRequest — generated wire type ('calling' spec, components/schemas * 'CallTapStopRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallTapStopRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTranscribeRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTranscribeRequest.java index e60b7980..88e3c1bf 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTranscribeRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTranscribeRequest.java @@ -10,8 +10,8 @@ * CallTranscribeRequest — generated wire type ('calling' spec, components/schemas * 'CallTranscribeRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallTranscribeRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTranscribeStopRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTranscribeStopRequest.java index e2792ea6..204d5819 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTranscribeStopRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTranscribeStopRequest.java @@ -10,8 +10,8 @@ * CallTranscribeStopRequest — generated wire type ('calling' spec, components/schemas * 'CallTranscribeStopRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallTranscribeStopRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTransferRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTransferRequest.java index 0c906627..97eeefed 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTransferRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallTransferRequest.java @@ -10,8 +10,8 @@ * CallTransferRequest — generated wire type ('calling' spec, components/schemas * 'CallTransferRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallTransferRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUnholdRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUnholdRequest.java index ad7f91c4..b20e3a4e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUnholdRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUnholdRequest.java @@ -9,8 +9,8 @@ /** * CallUnholdRequest — generated wire type ('calling' spec, components/schemas 'CallUnholdRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallUnholdRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUpdateCurrentCallRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUpdateCurrentCallRequest.java index 2e9e3eba..2ae69f9b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUpdateCurrentCallRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUpdateCurrentCallRequest.java @@ -10,8 +10,8 @@ * CallUpdateCurrentCallRequest — generated wire type ('calling' spec, components/schemas * 'CallUpdateCurrentCallRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallUpdateCurrentCallRequest { public String command; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUpdateParamsSWML.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUpdateParamsSWML.java index 8fe946a9..410e7e4d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUpdateParamsSWML.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUpdateParamsSWML.java @@ -10,8 +10,8 @@ * CallUpdateParamsSWML — generated wire type ('calling' spec, components/schemas * 'CallUpdateParamsSWML'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallUpdateParamsSWML { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUpdateParamsURL.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUpdateParamsURL.java index 062ef2f8..db098349 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUpdateParamsURL.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUpdateParamsURL.java @@ -10,8 +10,8 @@ * CallUpdateParamsURL — generated wire type ('calling' spec, components/schemas * 'CallUpdateParamsURL'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallUpdateParamsURL { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUserEventRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUserEventRequest.java index 3bfc1bb5..afb09d4f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUserEventRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CallUserEventRequest.java @@ -10,8 +10,8 @@ * CallUserEventRequest — generated wire type ('calling' spec, components/schemas * 'CallUserEventRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallUserEventRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ChangeContextAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ChangeContextAction.java index 8b59e39f..a8a44b6d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ChangeContextAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ChangeContextAction.java @@ -10,8 +10,8 @@ * ChangeContextAction — generated wire type ('calling' spec, components/schemas * 'ChangeContextAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChangeContextAction { public String change_context; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ChangeStepAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ChangeStepAction.java index 9594cb42..9e7c13a9 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ChangeStepAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ChangeStepAction.java @@ -9,8 +9,8 @@ /** * ChangeStepAction — generated wire type ('calling' spec, components/schemas 'ChangeStepAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChangeStepAction { public String change_step; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ChargeDetails.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ChargeDetails.java index f3f5b430..8551ec3d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ChargeDetails.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ChargeDetails.java @@ -9,8 +9,8 @@ /** * ChargeDetails — generated wire type ('calling' spec, components/schemas 'ChargeDetails'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChargeDetails { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Cond.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Cond.java index 698d3c3b..2331caad 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Cond.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Cond.java @@ -9,8 +9,8 @@ /** * Cond — generated wire type ('calling' spec, components/schemas 'Cond'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Cond { public java.util.List cond; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CondElse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CondElse.java index dbce8db9..68e7a8a6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CondElse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CondElse.java @@ -9,8 +9,8 @@ /** * CondElse — generated wire type ('calling' spec, components/schemas 'CondElse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CondElse { /** wire key: else */ diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CondReg.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CondReg.java index 56dee7e9..6f7f4d3e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CondReg.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/CondReg.java @@ -9,8 +9,8 @@ /** * CondReg — generated wire type ('calling' spec, components/schemas 'CondReg'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CondReg { public String when; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Connect.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Connect.java index 8cc14fb0..ce537829 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Connect.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Connect.java @@ -9,8 +9,8 @@ /** * Connect — generated wire type ('calling' spec, components/schemas 'Connect'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Connect { public java.util.Map connect; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceParallel.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceParallel.java index 4d5bc948..3dd9a645 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceParallel.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceParallel.java @@ -10,8 +10,8 @@ * ConnectDeviceParallel — generated wire type ('calling' spec, components/schemas * 'ConnectDeviceParallel'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectDeviceParallel { public String from; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceSerial.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceSerial.java index 0c78c8f2..128689f8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceSerial.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceSerial.java @@ -10,8 +10,8 @@ * ConnectDeviceSerial — generated wire type ('calling' spec, components/schemas * 'ConnectDeviceSerial'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectDeviceSerial { public String from; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceSerialParallel.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceSerialParallel.java index d7d0fd18..a47e6df7 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceSerialParallel.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceSerialParallel.java @@ -10,8 +10,8 @@ * ConnectDeviceSerialParallel — generated wire type ('calling' spec, components/schemas * 'ConnectDeviceSerialParallel'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectDeviceSerialParallel { public String from; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceSingle.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceSingle.java index 4b7a84ae..e3950819 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceSingle.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectDeviceSingle.java @@ -10,8 +10,8 @@ * ConnectDeviceSingle — generated wire type ('calling' spec, components/schemas * 'ConnectDeviceSingle'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectDeviceSingle { public String from; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectHeaders.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectHeaders.java index bac9d6ed..061dd0bb 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectHeaders.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectHeaders.java @@ -9,8 +9,8 @@ /** * ConnectHeaders — generated wire type ('calling' spec, components/schemas 'ConnectHeaders'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectHeaders { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectSwitch.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectSwitch.java index 5c6f79e3..12395e80 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectSwitch.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConnectSwitch.java @@ -9,8 +9,8 @@ /** * ConnectSwitch — generated wire type ('calling' spec, components/schemas 'ConnectSwitch'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectSwitch { public String variable; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConstProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConstProperty.java index 50aecd7e..5130d61b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConstProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConstProperty.java @@ -9,8 +9,8 @@ /** * ConstProperty — generated wire type ('calling' spec, components/schemas 'ConstProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConstProperty { /** wire key: const */ diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextPOMSteps.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextPOMSteps.java index 37c8051f..f8f33c36 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextPOMSteps.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextPOMSteps.java @@ -9,8 +9,8 @@ /** * ContextPOMSteps — generated wire type ('calling' spec, components/schemas 'ContextPOMSteps'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextPOMSteps { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextSwitchAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextSwitchAction.java index 1c94432c..e3f3e305 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextSwitchAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextSwitchAction.java @@ -10,8 +10,8 @@ * ContextSwitchAction — generated wire type ('calling' spec, components/schemas * 'ContextSwitchAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextSwitchAction { public java.util.Map context_switch; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextTextSteps.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextTextSteps.java index c949da7d..9b8708f0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextTextSteps.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextTextSteps.java @@ -9,8 +9,8 @@ /** * ContextTextSteps — generated wire type ('calling' spec, components/schemas 'ContextTextSteps'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextTextSteps { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Contexts.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Contexts.java index 5a48589c..1d0248e2 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Contexts.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Contexts.java @@ -9,8 +9,8 @@ /** * Contexts — generated wire type ('calling' spec, components/schemas 'Contexts'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Contexts { /** wire key: default */ diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextsPOMObject.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextsPOMObject.java index 9c1145af..13edfe95 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextsPOMObject.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextsPOMObject.java @@ -9,8 +9,8 @@ /** * ContextsPOMObject — generated wire type ('calling' spec, components/schemas 'ContextsPOMObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextsPOMObject { public java.util.List steps; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextsTextObject.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextsTextObject.java index 133c9bf1..9e34c07c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextsTextObject.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ContextsTextObject.java @@ -10,8 +10,8 @@ * ContextsTextObject — generated wire type ('calling' spec, components/schemas * 'ContextsTextObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextsTextObject { public java.util.List steps; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConversationMessage.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConversationMessage.java index cfd09215..0445c157 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConversationMessage.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ConversationMessage.java @@ -10,8 +10,8 @@ * ConversationMessage — generated wire type ('calling' spec, components/schemas * 'ConversationMessage'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConversationMessage { public String role; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/DataMap.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/DataMap.java index 91b3adea..7620be88 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/DataMap.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/DataMap.java @@ -9,8 +9,8 @@ /** * DataMap — generated wire type ('calling' spec, components/schemas 'DataMap'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DataMap { public java.util.Map output; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Denoise.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Denoise.java index fa4e7e4e..b34cc7c5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Denoise.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Denoise.java @@ -9,8 +9,8 @@ /** * Denoise — generated wire type ('calling' spec, components/schemas 'Denoise'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Denoise { public java.util.Map denoise; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/DetectMachine.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/DetectMachine.java index 1f355e49..6c61f811 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/DetectMachine.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/DetectMachine.java @@ -9,8 +9,8 @@ /** * DetectMachine — generated wire type ('calling' spec, components/schemas 'DetectMachine'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DetectMachine { public java.util.Map detect_machine; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/EnterQueue.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/EnterQueue.java index 8aa4d44d..c8913ebe 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/EnterQueue.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/EnterQueue.java @@ -9,8 +9,8 @@ /** * EnterQueue — generated wire type ('calling' spec, components/schemas 'EnterQueue'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class EnterQueue { public java.util.Map enter_queue; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/EnterQueueObject.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/EnterQueueObject.java index 6b1c11fa..0c64fe33 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/EnterQueueObject.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/EnterQueueObject.java @@ -9,8 +9,8 @@ /** * EnterQueueObject — generated wire type ('calling' spec, components/schemas 'EnterQueueObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class EnterQueueObject { public String queue_name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Execute.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Execute.java index 199c305a..51f5d97b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Execute.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Execute.java @@ -9,8 +9,8 @@ /** * Execute — generated wire type ('calling' spec, components/schemas 'Execute'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Execute { public java.util.Map execute; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ExecuteSwitch.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ExecuteSwitch.java index 46d657e3..8b6b121b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ExecuteSwitch.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ExecuteSwitch.java @@ -9,8 +9,8 @@ /** * ExecuteSwitch — generated wire type ('calling' spec, components/schemas 'ExecuteSwitch'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ExecuteSwitch { public String variable; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Expression.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Expression.java index d027f639..c9e42cfc 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Expression.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Expression.java @@ -9,8 +9,8 @@ /** * Expression — generated wire type ('calling' spec, components/schemas 'Expression'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Expression { public String string; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/FabricDeviceLeg.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/FabricDeviceLeg.java index d17d4ac7..a7fd404c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/FabricDeviceLeg.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/FabricDeviceLeg.java @@ -9,8 +9,8 @@ /** * FabricDeviceLeg — generated wire type ('calling' spec, components/schemas 'FabricDeviceLeg'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FabricDeviceLeg { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/FunctionParameters.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/FunctionParameters.java index 8112a34e..68c5bfed 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/FunctionParameters.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/FunctionParameters.java @@ -10,8 +10,8 @@ * FunctionParameters — generated wire type ('calling' spec, components/schemas * 'FunctionParameters'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FunctionParameters { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Goto.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Goto.java index 9ff3e6a7..4243409c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Goto.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Goto.java @@ -9,8 +9,8 @@ /** * Goto — generated wire type ('calling' spec, components/schemas 'Goto'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Goto { /** wire key: goto */ diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/HangUpHookSWAIGFunction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/HangUpHookSWAIGFunction.java index 9b2b2344..a0477d2b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/HangUpHookSWAIGFunction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/HangUpHookSWAIGFunction.java @@ -10,8 +10,8 @@ * HangUpHookSWAIGFunction — generated wire type ('calling' spec, components/schemas * 'HangUpHookSWAIGFunction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class HangUpHookSWAIGFunction { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Hangup.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Hangup.java index fa25082a..efa2ce0e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Hangup.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Hangup.java @@ -9,8 +9,8 @@ /** * Hangup — generated wire type ('calling' spec, components/schemas 'Hangup'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Hangup { public java.util.Map hangup; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/HangupAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/HangupAction.java index 29bfd2dd..1fb2f714 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/HangupAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/HangupAction.java @@ -9,8 +9,8 @@ /** * HangupAction — generated wire type ('calling' spec, components/schemas 'HangupAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class HangupAction { public java.util.Map hangup; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Hint.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Hint.java index 74a6f147..73b96b76 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Hint.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Hint.java @@ -9,8 +9,8 @@ /** * Hint — generated wire type ('calling' spec, components/schemas 'Hint'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Hint { public String hint; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/HoldAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/HoldAction.java index 2e0b2ef6..5e40cf2b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/HoldAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/HoldAction.java @@ -9,8 +9,8 @@ /** * HoldAction — generated wire type ('calling' spec, components/schemas 'HoldAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class HoldAction { public java.util.Map hold; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/InjectAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/InjectAction.java index 7276d1fa..ddf67044 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/InjectAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/InjectAction.java @@ -9,8 +9,8 @@ /** * InjectAction — generated wire type ('calling' spec, components/schemas 'InjectAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class InjectAction { public java.util.Map inject; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/IntegerProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/IntegerProperty.java index dfe1a33d..e006f246 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/IntegerProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/IntegerProperty.java @@ -9,8 +9,8 @@ /** * IntegerProperty — generated wire type ('calling' spec, components/schemas 'IntegerProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class IntegerProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/JoinConference.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/JoinConference.java index 94c601c6..2368ba8d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/JoinConference.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/JoinConference.java @@ -9,8 +9,8 @@ /** * JoinConference — generated wire type ('calling' spec, components/schemas 'JoinConference'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class JoinConference { public java.util.Map join_conference; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/JoinConferenceObject.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/JoinConferenceObject.java index 39056b36..13e57f4f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/JoinConferenceObject.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/JoinConferenceObject.java @@ -10,8 +10,8 @@ * JoinConferenceObject — generated wire type ('calling' spec, components/schemas * 'JoinConferenceObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class JoinConferenceObject { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/JoinRoom.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/JoinRoom.java index a5c92253..41c0710b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/JoinRoom.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/JoinRoom.java @@ -9,8 +9,8 @@ /** * JoinRoom — generated wire type ('calling' spec, components/schemas 'JoinRoom'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class JoinRoom { public java.util.Map join_room; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Label.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Label.java index cede8d36..8b5713f8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Label.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Label.java @@ -9,8 +9,8 @@ /** * Label — generated wire type ('calling' spec, components/schemas 'Label'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Label { public String label; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LanguageParams.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LanguageParams.java index 684fe6bd..70a8e76e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LanguageParams.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LanguageParams.java @@ -9,8 +9,8 @@ /** * LanguageParams — generated wire type ('calling' spec, components/schemas 'LanguageParams'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LanguageParams { public java.util.Map stability; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LanguagesWithFillers.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LanguagesWithFillers.java index 2b6107a8..70d34332 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LanguagesWithFillers.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LanguagesWithFillers.java @@ -10,8 +10,8 @@ * LanguagesWithFillers — generated wire type ('calling' spec, components/schemas * 'LanguagesWithFillers'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LanguagesWithFillers { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LanguagesWithSoloFillers.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LanguagesWithSoloFillers.java index ef81e020..db7bb84c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LanguagesWithSoloFillers.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LanguagesWithSoloFillers.java @@ -10,8 +10,8 @@ * LanguagesWithSoloFillers — generated wire type ('calling' spec, components/schemas * 'LanguagesWithSoloFillers'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LanguagesWithSoloFillers { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranscribe.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranscribe.java index d1364ec6..c3880071 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranscribe.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranscribe.java @@ -9,8 +9,8 @@ /** * LiveTranscribe — generated wire type ('calling' spec, components/schemas 'LiveTranscribe'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LiveTranscribe { public java.util.Map live_transcribe; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranscribeStartAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranscribeStartAction.java index e42758c4..e2cba984 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranscribeStartAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranscribeStartAction.java @@ -10,8 +10,8 @@ * LiveTranscribeStartAction — generated wire type ('calling' spec, components/schemas * 'LiveTranscribeStartAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LiveTranscribeStartAction { public java.util.Map start; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranscribeSummarizeAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranscribeSummarizeAction.java index 5b67c6a4..a2984a5c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranscribeSummarizeAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranscribeSummarizeAction.java @@ -10,8 +10,8 @@ * LiveTranscribeSummarizeAction — generated wire type ('calling' spec, components/schemas * 'LiveTranscribeSummarizeAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LiveTranscribeSummarizeAction { public java.util.Map summarize; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslate.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslate.java index 6eece196..ca366e2d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslate.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslate.java @@ -9,8 +9,8 @@ /** * LiveTranslate — generated wire type ('calling' spec, components/schemas 'LiveTranslate'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LiveTranslate { public java.util.Map live_translate; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslateInjectAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslateInjectAction.java index 78c75e69..98edc97a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslateInjectAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslateInjectAction.java @@ -10,8 +10,8 @@ * LiveTranslateInjectAction — generated wire type ('calling' spec, components/schemas * 'LiveTranslateInjectAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LiveTranslateInjectAction { public java.util.Map inject; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslateStartAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslateStartAction.java index 9ba16b51..9d0419f3 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslateStartAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslateStartAction.java @@ -10,8 +10,8 @@ * LiveTranslateStartAction — generated wire type ('calling' spec, components/schemas * 'LiveTranslateStartAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LiveTranslateStartAction { public java.util.Map start; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslateSummarizeAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslateSummarizeAction.java index f7fdbb20..3d405700 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslateSummarizeAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/LiveTranslateSummarizeAction.java @@ -10,8 +10,8 @@ * LiveTranslateSummarizeAction — generated wire type ('calling' spec, components/schemas * 'LiveTranslateSummarizeAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LiveTranslateSummarizeAction { public java.util.Map summarize; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/NullProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/NullProperty.java index f98f68a0..50ed6545 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/NullProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/NullProperty.java @@ -9,8 +9,8 @@ /** * NullProperty — generated wire type ('calling' spec, components/schemas 'NullProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class NullProperty { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/NumberProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/NumberProperty.java index bfad528a..aa7e45c0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/NumberProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/NumberProperty.java @@ -9,8 +9,8 @@ /** * NumberProperty — generated wire type ('calling' spec, components/schemas 'NumberProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class NumberProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ObjectProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ObjectProperty.java index 8a404516..ec7a39f1 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ObjectProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ObjectProperty.java @@ -9,8 +9,8 @@ /** * ObjectProperty — generated wire type ('calling' spec, components/schemas 'ObjectProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ObjectProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/OneOfProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/OneOfProperty.java index 14ae7c42..726efbef 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/OneOfProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/OneOfProperty.java @@ -9,8 +9,8 @@ /** * OneOfProperty — generated wire type ('calling' spec, components/schemas 'OneOfProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class OneOfProperty { public java.util.List oneOf; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Output.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Output.java index 37b66143..38ca8e26 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Output.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Output.java @@ -9,8 +9,8 @@ /** * Output — generated wire type ('calling' spec, components/schemas 'Output'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Output { public String response; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Pay.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Pay.java index ac54d2a0..2348d8c2 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Pay.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Pay.java @@ -9,8 +9,8 @@ /** * Pay — generated wire type ('calling' spec, components/schemas 'Pay'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Pay { public java.util.Map pay; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayParameters.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayParameters.java index 169dae02..05859faa 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayParameters.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayParameters.java @@ -9,8 +9,8 @@ /** * PayParameters — generated wire type ('calling' spec, components/schemas 'PayParameters'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PayParameters { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayPromptPlayAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayPromptPlayAction.java index c2d96bab..8b12c9c6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayPromptPlayAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayPromptPlayAction.java @@ -10,8 +10,8 @@ * PayPromptPlayAction — generated wire type ('calling' spec, components/schemas * 'PayPromptPlayAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PayPromptPlayAction { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayPromptSayAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayPromptSayAction.java index 82fce97e..a6e849fd 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayPromptSayAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayPromptSayAction.java @@ -10,8 +10,8 @@ * PayPromptSayAction — generated wire type ('calling' spec, components/schemas * 'PayPromptSayAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PayPromptSayAction { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayPrompts.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayPrompts.java index 4ea83bb9..9016f0f0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayPrompts.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PayPrompts.java @@ -9,8 +9,8 @@ /** * PayPrompts — generated wire type ('calling' spec, components/schemas 'PayPrompts'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PayPrompts { public java.util.List actions; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Play.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Play.java index 4fdd407b..c7ecd269 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Play.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Play.java @@ -9,8 +9,8 @@ /** * Play — generated wire type ('calling' spec, components/schemas 'Play'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Play { public java.util.Map play; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PlayWithURL.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PlayWithURL.java index f23bf0c2..6b6895bc 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PlayWithURL.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PlayWithURL.java @@ -9,8 +9,8 @@ /** * PlayWithURL — generated wire type ('calling' spec, components/schemas 'PlayWithURL'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PlayWithURL { public java.util.Map auto_answer; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PlayWithURLS.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PlayWithURLS.java index ad628741..e1abda49 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PlayWithURLS.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PlayWithURLS.java @@ -9,8 +9,8 @@ /** * PlayWithURLS — generated wire type ('calling' spec, components/schemas 'PlayWithURLS'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PlayWithURLS { public java.util.Map auto_answer; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PlaybackBGAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PlaybackBGAction.java index 0375ae59..d1a9fb05 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PlaybackBGAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PlaybackBGAction.java @@ -9,8 +9,8 @@ /** * PlaybackBGAction — generated wire type ('calling' spec, components/schemas 'PlaybackBGAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PlaybackBGAction { public java.util.Map playback_bg; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PomSectionBodyContent.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PomSectionBodyContent.java index 86667daf..52de9be8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PomSectionBodyContent.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PomSectionBodyContent.java @@ -10,8 +10,8 @@ * PomSectionBodyContent — generated wire type ('calling' spec, components/schemas * 'PomSectionBodyContent'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PomSectionBodyContent { public String title; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PomSectionBulletsContent.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PomSectionBulletsContent.java index 9e75647e..1e83a177 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PomSectionBulletsContent.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/PomSectionBulletsContent.java @@ -10,8 +10,8 @@ * PomSectionBulletsContent — generated wire type ('calling' spec, components/schemas * 'PomSectionBulletsContent'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PomSectionBulletsContent { public String title; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Prompt.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Prompt.java index 4f182afb..1a55ac2e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Prompt.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Prompt.java @@ -9,8 +9,8 @@ /** * Prompt — generated wire type ('calling' spec, components/schemas 'Prompt'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Prompt { public java.util.Map prompt; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Pronounce.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Pronounce.java index 973616ac..a1d41138 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Pronounce.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Pronounce.java @@ -9,8 +9,8 @@ /** * Pronounce — generated wire type ('calling' spec, components/schemas 'Pronounce'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Pronounce { public String replace; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ReceiveFax.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ReceiveFax.java index d8b364b7..5815bcc4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ReceiveFax.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ReceiveFax.java @@ -9,8 +9,8 @@ /** * ReceiveFax — generated wire type ('calling' spec, components/schemas 'ReceiveFax'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ReceiveFax { public java.util.Map receive_fax; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/RecordCall.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/RecordCall.java index 3a30acc4..8486d343 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/RecordCall.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/RecordCall.java @@ -9,8 +9,8 @@ /** * RecordCall — generated wire type ('calling' spec, components/schemas 'RecordCall'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RecordCall { public java.util.Map record_call; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Record_.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Record_.java index 95b1075b..17a98cad 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Record_.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Record_.java @@ -9,8 +9,8 @@ /** * Record_ — generated wire type ('calling' spec, components/schemas 'Record'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Record_ { /** wire key: record */ diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Request.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Request.java index 6f9b2053..2049e34b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Request.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Request.java @@ -9,8 +9,8 @@ /** * Request — generated wire type ('calling' spec, components/schemas 'Request'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Request { public java.util.Map request; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Return.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Return.java index 3b7fabd4..39986b4e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Return.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Return.java @@ -9,8 +9,8 @@ /** * Return — generated wire type ('calling' spec, components/schemas 'Return'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Return { /** wire key: return */ diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SIPRefer.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SIPRefer.java index 07d28e93..9b835fbd 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SIPRefer.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SIPRefer.java @@ -9,8 +9,8 @@ /** * SIPRefer — generated wire type ('calling' spec, components/schemas 'SIPRefer'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SIPRefer { public java.util.Map sip_refer; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SMSWithBody.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SMSWithBody.java index 7e642210..bdc4bda4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SMSWithBody.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SMSWithBody.java @@ -9,8 +9,8 @@ /** * SMSWithBody — generated wire type ('calling' spec, components/schemas 'SMSWithBody'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SMSWithBody { public String to_number; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SMSWithMedia.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SMSWithMedia.java index a8166985..f0413a59 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SMSWithMedia.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SMSWithMedia.java @@ -9,8 +9,8 @@ /** * SMSWithMedia — generated wire type ('calling' spec, components/schemas 'SMSWithMedia'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SMSWithMedia { public String to_number; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIG.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIG.java index 4c4e448a..de930aee 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIG.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIG.java @@ -9,8 +9,8 @@ /** * SWAIG — generated wire type ('calling' spec, components/schemas 'SWAIG'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWAIG { public java.util.Map defaults; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIGDefaults.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIGDefaults.java index 4a1776f6..c438b2b3 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIGDefaults.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIGDefaults.java @@ -9,8 +9,8 @@ /** * SWAIGDefaults — generated wire type ('calling' spec, components/schemas 'SWAIGDefaults'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWAIGDefaults { public String web_hook_url; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIGIncludes.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIGIncludes.java index 4061813b..4deb22b6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIGIncludes.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIGIncludes.java @@ -9,8 +9,8 @@ /** * SWAIGIncludes — generated wire type ('calling' spec, components/schemas 'SWAIGIncludes'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWAIGIncludes { public java.util.List functions; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIGInternalFiller.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIGInternalFiller.java index 77344312..c9a248f2 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIGInternalFiller.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWAIGInternalFiller.java @@ -10,8 +10,8 @@ * SWAIGInternalFiller — generated wire type ('calling' spec, components/schemas * 'SWAIGInternalFiller'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWAIGInternalFiller { public java.util.Map hangup; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWMLAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWMLAction.java index 9c043e7c..6edc7b4a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWMLAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWMLAction.java @@ -9,8 +9,8 @@ /** * SWMLAction — generated wire type ('calling' spec, components/schemas 'SWMLAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWMLAction { public java.util.Map SWML; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWMLObject.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWMLObject.java index c6ec46c0..b85aa8b1 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWMLObject.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SWMLObject.java @@ -9,8 +9,8 @@ /** * SWMLObject — generated wire type ('calling' spec, components/schemas 'SWMLObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWMLObject { public String version; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SayAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SayAction.java index 1af88fd4..b7a51ac0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SayAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SayAction.java @@ -9,8 +9,8 @@ /** * SayAction — generated wire type ('calling' spec, components/schemas 'SayAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SayAction { public String say; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Section.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Section.java index 9f3a7534..20569666 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Section.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Section.java @@ -9,8 +9,8 @@ /** * Section — generated wire type ('calling' spec, components/schemas 'Section'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Section { public java.util.List main; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SendDigits.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SendDigits.java index aa2fae0f..e5d2d9fb 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SendDigits.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SendDigits.java @@ -9,8 +9,8 @@ /** * SendDigits — generated wire type ('calling' spec, components/schemas 'SendDigits'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SendDigits { public java.util.Map send_digits; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SendFax.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SendFax.java index e1f1a542..004af19b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SendFax.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SendFax.java @@ -9,8 +9,8 @@ /** * SendFax — generated wire type ('calling' spec, components/schemas 'SendFax'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SendFax { public java.util.Map send_fax; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SendSMS.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SendSMS.java index 2517dec0..ee801745 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SendSMS.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SendSMS.java @@ -9,8 +9,8 @@ /** * SendSMS — generated wire type ('calling' spec, components/schemas 'SendSMS'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SendSMS { public java.util.Map send_sms; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Set.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Set.java index a7c29840..00197d10 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Set.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Set.java @@ -9,8 +9,8 @@ /** * Set — generated wire type ('calling' spec, components/schemas 'Set'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Set { public java.util.Map set; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SetGlobalDataAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SetGlobalDataAction.java index b505c8ee..28f7ff81 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SetGlobalDataAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SetGlobalDataAction.java @@ -10,8 +10,8 @@ * SetGlobalDataAction — generated wire type ('calling' spec, components/schemas * 'SetGlobalDataAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SetGlobalDataAction { public java.util.Map set_global_data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SetMetaDataAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SetMetaDataAction.java index 6cc0430a..2b3af9ac 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SetMetaDataAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SetMetaDataAction.java @@ -9,8 +9,8 @@ /** * SetMetaDataAction — generated wire type ('calling' spec, components/schemas 'SetMetaDataAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SetMetaDataAction { public java.util.Map set_meta_data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Sleep.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Sleep.java index 253a2e98..379fa0a7 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Sleep.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Sleep.java @@ -9,8 +9,8 @@ /** * Sleep — generated wire type ('calling' spec, components/schemas 'Sleep'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Sleep { public java.util.Map sleep; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StartAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StartAction.java index 84eb5016..91580e68 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StartAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StartAction.java @@ -9,8 +9,8 @@ /** * StartAction — generated wire type ('calling' spec, components/schemas 'StartAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StartAction { public java.util.Map start; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StartUpHookSWAIGFunction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StartUpHookSWAIGFunction.java index 7acc4900..9dcf7e38 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StartUpHookSWAIGFunction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StartUpHookSWAIGFunction.java @@ -10,8 +10,8 @@ * StartUpHookSWAIGFunction — generated wire type ('calling' spec, components/schemas * 'StartUpHookSWAIGFunction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StartUpHookSWAIGFunction { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopAction.java index d00402e6..e5be1ade 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopAction.java @@ -9,8 +9,8 @@ /** * StopAction — generated wire type ('calling' spec, components/schemas 'StopAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopAction { public java.util.Map stop; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopDenoise.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopDenoise.java index 94716c1d..da6d83a0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopDenoise.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopDenoise.java @@ -9,8 +9,8 @@ /** * StopDenoise — generated wire type ('calling' spec, components/schemas 'StopDenoise'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopDenoise { public java.util.Map stop_denoise; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopPlaybackBGAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopPlaybackBGAction.java index e29ec875..15891806 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopPlaybackBGAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopPlaybackBGAction.java @@ -10,8 +10,8 @@ * StopPlaybackBGAction — generated wire type ('calling' spec, components/schemas * 'StopPlaybackBGAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopPlaybackBGAction { public java.util.Map stop_playback_bg; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopRecordCall.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopRecordCall.java index e45f35f6..a230ee8c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopRecordCall.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopRecordCall.java @@ -9,8 +9,8 @@ /** * StopRecordCall — generated wire type ('calling' spec, components/schemas 'StopRecordCall'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopRecordCall { public java.util.Map stop_record_call; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopTap.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopTap.java index fbd194a4..35ae2fc6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopTap.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StopTap.java @@ -9,8 +9,8 @@ /** * StopTap — generated wire type ('calling' spec, components/schemas 'StopTap'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopTap { public java.util.Map stop_tap; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StringProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StringProperty.java index ad3d3404..03784418 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StringProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/StringProperty.java @@ -9,8 +9,8 @@ /** * StringProperty — generated wire type ('calling' spec, components/schemas 'StringProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StringProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SummarizeAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SummarizeAction.java index eae597c1..7b8c0763 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SummarizeAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SummarizeAction.java @@ -9,8 +9,8 @@ /** * SummarizeAction — generated wire type ('calling' spec, components/schemas 'SummarizeAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SummarizeAction { public java.util.Map summarize; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SummarizeConversationSWAIGFunction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SummarizeConversationSWAIGFunction.java index a8ae4b7a..b4a39ba3 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SummarizeConversationSWAIGFunction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/SummarizeConversationSWAIGFunction.java @@ -10,8 +10,8 @@ * SummarizeConversationSWAIGFunction — generated wire type ('calling' spec, components/schemas * 'SummarizeConversationSWAIGFunction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SummarizeConversationSWAIGFunction { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Switch.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Switch.java index e51499c5..a660a7e6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Switch.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Switch.java @@ -9,8 +9,8 @@ /** * Switch — generated wire type ('calling' spec, components/schemas 'Switch'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Switch { /** wire key: switch */ diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Tap.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Tap.java index cc5a0622..4b79d1c2 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Tap.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Tap.java @@ -9,8 +9,8 @@ /** * Tap — generated wire type ('calling' spec, components/schemas 'Tap'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Tap { public java.util.Map tap; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ToggleFunctionsAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ToggleFunctionsAction.java index 8ef3c479..80461ea8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ToggleFunctionsAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/ToggleFunctionsAction.java @@ -10,8 +10,8 @@ * ToggleFunctionsAction — generated wire type ('calling' spec, components/schemas * 'ToggleFunctionsAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ToggleFunctionsAction { public java.util.List toggle_functions; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/TranscribeStartAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/TranscribeStartAction.java index f5ffd2de..6bf9344e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/TranscribeStartAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/TranscribeStartAction.java @@ -10,8 +10,8 @@ * TranscribeStartAction — generated wire type ('calling' spec, components/schemas * 'TranscribeStartAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class TranscribeStartAction { public java.util.Map start; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/TranscribeSummarizeAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/TranscribeSummarizeAction.java index 7a0e08d3..91bdb339 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/TranscribeSummarizeAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/TranscribeSummarizeAction.java @@ -10,8 +10,8 @@ * TranscribeSummarizeAction — generated wire type ('calling' spec, components/schemas * 'TranscribeSummarizeAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class TranscribeSummarizeAction { public java.util.Map summarize; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Transfer.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Transfer.java index eb58f853..df67efc9 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Transfer.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Transfer.java @@ -9,8 +9,8 @@ /** * Transfer — generated wire type ('calling' spec, components/schemas 'Transfer'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Transfer { public java.util.Map transfer; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_RestApiErrorItem.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_RestApiErrorItem.java index 404a9e5c..3436c0c7 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_RestApiErrorItem.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_RestApiErrorItem.java @@ -10,8 +10,8 @@ * Types_StatusCodes_RestApiErrorItem — generated wire type ('calling' spec, components/schemas * 'Types.StatusCodes.RestApiErrorItem'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_RestApiErrorItem { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode400.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode400.java index 49e2a1f4..d5f69330 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode400.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode400.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode400 — generated wire type ('calling' spec, components/schemas * 'Types.StatusCodes.StatusCode400'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode400 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode401.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode401.java index 8f30fca2..72f5a1fc 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode401.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode401.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode401 — generated wire type ('calling' spec, components/schemas * 'Types.StatusCodes.StatusCode401'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode401 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode404.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode404.java index e02b9456..7f1996cf 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode404.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode404.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode404 — generated wire type ('calling' spec, components/schemas * 'Types.StatusCodes.StatusCode404'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode404 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode500.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode500.java index cd6dd4cf..2d9e9fb2 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode500.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Types_StatusCodes_StatusCode500.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode500 — generated wire type ('calling' spec, components/schemas * 'Types.StatusCodes.StatusCode500'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode500 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Unset.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Unset.java index 692cea49..6d00dd59 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Unset.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Unset.java @@ -9,8 +9,8 @@ /** * Unset — generated wire type ('calling' spec, components/schemas 'Unset'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Unset { public java.util.Map unset; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UnsetGlobalDataAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UnsetGlobalDataAction.java index b2b9ff25..1741fa33 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UnsetGlobalDataAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UnsetGlobalDataAction.java @@ -10,8 +10,8 @@ * UnsetGlobalDataAction — generated wire type ('calling' spec, components/schemas * 'UnsetGlobalDataAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UnsetGlobalDataAction { public java.util.Map unset_global_data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UnsetMetaDataAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UnsetMetaDataAction.java index 86b7c41a..86cf9f01 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UnsetMetaDataAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UnsetMetaDataAction.java @@ -10,8 +10,8 @@ * UnsetMetaDataAction — generated wire type ('calling' spec, components/schemas * 'UnsetMetaDataAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UnsetMetaDataAction { public java.util.Map unset_meta_data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UserEvent.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UserEvent.java index 610944a1..78ac9f20 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UserEvent.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UserEvent.java @@ -9,8 +9,8 @@ /** * UserEvent — generated wire type ('calling' spec, components/schemas 'UserEvent'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UserEvent { public java.util.Map user_event; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UserInputAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UserInputAction.java index 85ff4a2a..de9d3cb0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UserInputAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UserInputAction.java @@ -9,8 +9,8 @@ /** * UserInputAction — generated wire type ('calling' spec, components/schemas 'UserInputAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UserInputAction { public String user_input; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UserSWAIGFunction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UserSWAIGFunction.java index 416d1767..8b6ccff5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UserSWAIGFunction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/UserSWAIGFunction.java @@ -9,8 +9,8 @@ /** * UserSWAIGFunction — generated wire type ('calling' spec, components/schemas 'UserSWAIGFunction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UserSWAIGFunction { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Webhook.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Webhook.java index b17706b3..aa270e2b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Webhook.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/calling/Webhook.java @@ -9,8 +9,8 @@ /** * Webhook — generated wire type ('calling' spec, components/schemas 'Webhook'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Webhook { public java.util.List expressions; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatPermissionWithRead.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatPermissionWithRead.java index 7aa6ee6e..88b15f63 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatPermissionWithRead.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatPermissionWithRead.java @@ -10,8 +10,8 @@ * ChatPermissionWithRead — generated wire type ('chat' spec, components/schemas * 'ChatPermissionWithRead'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChatPermissionWithRead { public Boolean read; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatPermissionWithWrite.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatPermissionWithWrite.java index b29577bd..2ffc1d33 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatPermissionWithWrite.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatPermissionWithWrite.java @@ -10,8 +10,8 @@ * ChatPermissionWithWrite — generated wire type ('chat' spec, components/schemas * 'ChatPermissionWithWrite'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChatPermissionWithWrite { public Boolean read; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatToken.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatToken.java index b210e326..245c7458 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatToken.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatToken.java @@ -9,8 +9,8 @@ /** * ChatToken — generated wire type ('chat' spec, components/schemas 'ChatToken'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChatToken { public String token; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatToken422Error.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatToken422Error.java index 60042289..99d5f2b1 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatToken422Error.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/ChatToken422Error.java @@ -9,8 +9,8 @@ /** * ChatToken422Error — generated wire type ('chat' spec, components/schemas 'ChatToken422Error'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChatToken422Error { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/NewChatToken.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/NewChatToken.java index a2d78a1e..51c4ae48 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/NewChatToken.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/NewChatToken.java @@ -9,8 +9,8 @@ /** * NewChatToken — generated wire type ('chat' spec, components/schemas 'NewChatToken'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class NewChatToken { public Long ttl; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/Types_StatusCodes_RestApiErrorItem.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/Types_StatusCodes_RestApiErrorItem.java index c9efeaba..e3682ce8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/Types_StatusCodes_RestApiErrorItem.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/Types_StatusCodes_RestApiErrorItem.java @@ -10,8 +10,8 @@ * Types_StatusCodes_RestApiErrorItem — generated wire type ('chat' spec, components/schemas * 'Types.StatusCodes.RestApiErrorItem'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_RestApiErrorItem { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/Types_StatusCodes_StatusCode400.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/Types_StatusCodes_StatusCode400.java index 933c9058..b8a6ea60 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/Types_StatusCodes_StatusCode400.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/Types_StatusCodes_StatusCode400.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode400 — generated wire type ('chat' spec, components/schemas * 'Types.StatusCodes.StatusCode400'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode400 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/Types_StatusCodes_StatusCode401.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/Types_StatusCodes_StatusCode401.java index d3e26f79..f0f56ea8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/Types_StatusCodes_StatusCode401.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/chat/Types_StatusCodes_StatusCode401.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode401 — generated wire type ('chat' spec, components/schemas * 'Types.StatusCodes.StatusCode401'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode401 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Chunk.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Chunk.java index 337c23d3..b17eb6b4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Chunk.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Chunk.java @@ -9,8 +9,8 @@ /** * Chunk — generated wire type ('datasphere' spec, components/schemas 'Chunk'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Chunk { public String text; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ChunkListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ChunkListResponse.java index e2591f58..5dab220b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ChunkListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ChunkListResponse.java @@ -10,8 +10,8 @@ * ChunkListResponse — generated wire type ('datasphere' spec, components/schemas * 'ChunkListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChunkListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ChunkPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ChunkPaginationResponse.java index df09adba..ae64d8c7 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ChunkPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ChunkPaginationResponse.java @@ -10,8 +10,8 @@ * ChunkPaginationResponse — generated wire type ('datasphere' spec, components/schemas * 'ChunkPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChunkPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ChunkResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ChunkResponse.java index 29bf4201..efd2927e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ChunkResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ChunkResponse.java @@ -9,8 +9,8 @@ /** * ChunkResponse — generated wire type ('datasphere' spec, components/schemas 'ChunkResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChunkResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/CreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/CreateStatusCode422.java index e1cfc8c5..cd634178 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/CreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/CreateStatusCode422.java @@ -10,8 +10,8 @@ * CreateStatusCode422 — generated wire type ('datasphere' spec, components/schemas * 'CreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Document.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Document.java index 78e581e7..44166233 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Document.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Document.java @@ -9,8 +9,8 @@ /** * Document — generated wire type ('datasphere' spec, components/schemas 'Document'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Document { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentCreateRequestBase.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentCreateRequestBase.java index 789a4708..273c5c13 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentCreateRequestBase.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentCreateRequestBase.java @@ -10,8 +10,8 @@ * DocumentCreateRequestBase — generated wire type ('datasphere' spec, components/schemas * 'DocumentCreateRequestBase'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DocumentCreateRequestBase { public String url; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentListResponse.java index ad9b65a7..4fb51a5e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentListResponse.java @@ -10,8 +10,8 @@ * DocumentListResponse — generated wire type ('datasphere' spec, components/schemas * 'DocumentListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DocumentListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentSearchRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentSearchRequest.java index 985c9980..51d5b44c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentSearchRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentSearchRequest.java @@ -10,8 +10,8 @@ * DocumentSearchRequest — generated wire type ('datasphere' spec, components/schemas * 'DocumentSearchRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DocumentSearchRequest { public java.util.List tags; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentUpdateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentUpdateRequest.java index b8af21fb..0d47a506 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentUpdateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/DocumentUpdateRequest.java @@ -10,8 +10,8 @@ * DocumentUpdateRequest — generated wire type ('datasphere' spec, components/schemas * 'DocumentUpdateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DocumentUpdateRequest { public java.util.List tags; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ListStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ListStatusCode422.java index f9851032..f8f3e30b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ListStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/ListStatusCode422.java @@ -10,8 +10,8 @@ * ListStatusCode422 — generated wire type ('datasphere' spec, components/schemas * 'ListStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ListStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/PaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/PaginationResponse.java index 859a9ec2..edd36954 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/PaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/PaginationResponse.java @@ -10,8 +10,8 @@ * PaginationResponse — generated wire type ('datasphere' spec, components/schemas * 'PaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/SearchResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/SearchResponse.java index 805ed22c..1f8f6a64 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/SearchResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/SearchResponse.java @@ -9,8 +9,8 @@ /** * SearchResponse — generated wire type ('datasphere' spec, components/schemas 'SearchResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SearchResponse { public java.util.List chunks; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/SearchStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/SearchStatusCode422.java index 7f8879bb..6caca374 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/SearchStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/SearchStatusCode422.java @@ -10,8 +10,8 @@ * SearchStatusCode422 — generated wire type ('datasphere' spec, components/schemas * 'SearchStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SearchStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_RestApiErrorItem.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_RestApiErrorItem.java index 623de5a2..9b55c209 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_RestApiErrorItem.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_RestApiErrorItem.java @@ -10,8 +10,8 @@ * Types_StatusCodes_RestApiErrorItem — generated wire type ('datasphere' spec, components/schemas * 'Types.StatusCodes.RestApiErrorItem'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_RestApiErrorItem { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode400.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode400.java index 11065fb4..6a13d00f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode400.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode400.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode400 — generated wire type ('datasphere' spec, components/schemas * 'Types.StatusCodes.StatusCode400'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode400 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode401.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode401.java index 7653251b..71ff8c60 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode401.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode401.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode401 — generated wire type ('datasphere' spec, components/schemas * 'Types.StatusCodes.StatusCode401'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode401 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode404.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode404.java index d575eeff..eb9f1104 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode404.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode404.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode404 — generated wire type ('datasphere' spec, components/schemas * 'Types.StatusCodes.StatusCode404'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode404 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode500.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode500.java index 9322fe38..b0e79e03 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode500.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/Types_StatusCodes_StatusCode500.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode500 — generated wire type ('datasphere' spec, components/schemas * 'Types.StatusCodes.StatusCode500'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode500 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/UpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/UpdateStatusCode422.java index 06281938..106c13b9 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/UpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/datasphere/UpdateStatusCode422.java @@ -10,8 +10,8 @@ * UpdateStatusCode422 — generated wire type ('datasphere' spec, components/schemas * 'UpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AI.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AI.java index 95ee06cd..09638cc8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AI.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AI.java @@ -9,8 +9,8 @@ /** * AI — generated wire type ('fabric' spec, components/schemas 'AI'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AI { public java.util.Map ai; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAddressPaginationResponse.java index 1fa6ce96..b096ae84 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAddressPaginationResponse.java @@ -10,8 +10,8 @@ * AIAddressPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'AIAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgent.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgent.java index f6db33ec..f1b6429e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgent.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgent.java @@ -9,8 +9,8 @@ /** * AIAgent — generated wire type ('fabric' spec, components/schemas 'AIAgent'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIAgent { public java.util.Map global_data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentAddressListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentAddressListResponse.java index ffe912d7..f9ba8315 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentAddressListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentAddressListResponse.java @@ -10,8 +10,8 @@ * AIAgentAddressListResponse — generated wire type ('fabric' spec, components/schemas * 'AIAgentAddressListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIAgentAddressListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentCreateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentCreateRequest.java index 1c0e461f..92a4f831 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentCreateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentCreateRequest.java @@ -10,8 +10,8 @@ * AIAgentCreateRequest — generated wire type ('fabric' spec, components/schemas * 'AIAgentCreateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIAgentCreateRequest { public java.util.Map global_data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentCreateStatusCode422.java index b616acf2..d26b2e39 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentCreateStatusCode422.java @@ -10,8 +10,8 @@ * AIAgentCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'AIAgentCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIAgentCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentListResponse.java index fd94a10c..e1159f21 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentListResponse.java @@ -10,8 +10,8 @@ * AIAgentListResponse — generated wire type ('fabric' spec, components/schemas * 'AIAgentListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIAgentListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentPaginationResponse.java index 2dde2edb..cbefd697 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentPaginationResponse.java @@ -10,8 +10,8 @@ * AIAgentPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'AIAgentPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIAgentPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentResponse.java index 36fcfa77..fb2b8b7a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentResponse.java @@ -9,8 +9,8 @@ /** * AIAgentResponse — generated wire type ('fabric' spec, components/schemas 'AIAgentResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIAgentResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentUpdateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentUpdateRequest.java index 4a9c18ba..1df12cee 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentUpdateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentUpdateRequest.java @@ -10,8 +10,8 @@ * AIAgentUpdateRequest — generated wire type ('fabric' spec, components/schemas * 'AIAgentUpdateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIAgentUpdateRequest { public java.util.Map global_data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentUpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentUpdateStatusCode422.java index db02575d..d34a15c9 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentUpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIAgentUpdateStatusCode422.java @@ -10,8 +10,8 @@ * AIAgentUpdateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'AIAgentUpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIAgentUpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIObject.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIObject.java index f70755e9..9484d807 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIObject.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIObject.java @@ -9,8 +9,8 @@ /** * AIObject — generated wire type ('fabric' spec, components/schemas 'AIObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIObject { public java.util.Map global_data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIParams.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIParams.java index 1de340ea..a8924979 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIParams.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIParams.java @@ -9,8 +9,8 @@ /** * AIParams — generated wire type ('fabric' spec, components/schemas 'AIParams'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIParams { public java.util.Map acknowledge_interruptions; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptPom.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptPom.java index caeb6a9a..d0c8bb1f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptPom.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptPom.java @@ -9,8 +9,8 @@ /** * AIPostPromptPom — generated wire type ('fabric' spec, components/schemas 'AIPostPromptPom'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPostPromptPom { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptPomUpdate.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptPomUpdate.java index 94a75024..9face991 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptPomUpdate.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptPomUpdate.java @@ -10,8 +10,8 @@ * AIPostPromptPomUpdate — generated wire type ('fabric' spec, components/schemas * 'AIPostPromptPomUpdate'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPostPromptPomUpdate { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptText.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptText.java index a0a86262..a3e7234c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptText.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptText.java @@ -9,8 +9,8 @@ /** * AIPostPromptText — generated wire type ('fabric' spec, components/schemas 'AIPostPromptText'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPostPromptText { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptTextUpdate.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptTextUpdate.java index cc8c4614..9710f9b4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptTextUpdate.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPostPromptTextUpdate.java @@ -10,8 +10,8 @@ * AIPostPromptTextUpdate — generated wire type ('fabric' spec, components/schemas * 'AIPostPromptTextUpdate'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPostPromptTextUpdate { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptPom.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptPom.java index fa67499c..0ab7ba79 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptPom.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptPom.java @@ -9,8 +9,8 @@ /** * AIPromptPom — generated wire type ('fabric' spec, components/schemas 'AIPromptPom'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPromptPom { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptPomUpdate.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptPomUpdate.java index 07aafb04..1838f725 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptPomUpdate.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptPomUpdate.java @@ -9,8 +9,8 @@ /** * AIPromptPomUpdate — generated wire type ('fabric' spec, components/schemas 'AIPromptPomUpdate'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPromptPomUpdate { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptText.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptText.java index c783e4f8..f540badb 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptText.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptText.java @@ -9,8 +9,8 @@ /** * AIPromptText — generated wire type ('fabric' spec, components/schemas 'AIPromptText'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPromptText { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptTextUpdate.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptTextUpdate.java index d37e2584..58e6cbd7 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptTextUpdate.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AIPromptTextUpdate.java @@ -10,8 +10,8 @@ * AIPromptTextUpdate — generated wire type ('fabric' spec, components/schemas * 'AIPromptTextUpdate'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPromptTextUpdate { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AllOfProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AllOfProperty.java index 3344823e..0f524c55 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AllOfProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AllOfProperty.java @@ -9,8 +9,8 @@ /** * AllOfProperty — generated wire type ('fabric' spec, components/schemas 'AllOfProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AllOfProperty { public java.util.List allOf; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AmazonBedrock.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AmazonBedrock.java index 39e86392..525ce900 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AmazonBedrock.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AmazonBedrock.java @@ -9,8 +9,8 @@ /** * AmazonBedrock — generated wire type ('fabric' spec, components/schemas 'AmazonBedrock'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AmazonBedrock { public java.util.Map amazon_bedrock; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AmazonBedrockObject.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AmazonBedrockObject.java index 83e06237..5193d91b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AmazonBedrockObject.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AmazonBedrockObject.java @@ -10,8 +10,8 @@ * AmazonBedrockObject — generated wire type ('fabric' spec, components/schemas * 'AmazonBedrockObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AmazonBedrockObject { public java.util.Map global_data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Answer.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Answer.java index b5c169c6..a1b6971c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Answer.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Answer.java @@ -9,8 +9,8 @@ /** * Answer — generated wire type ('fabric' spec, components/schemas 'Answer'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Answer { public java.util.Map answer; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AnyOfProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AnyOfProperty.java index 582502b2..2cd157d5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AnyOfProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AnyOfProperty.java @@ -9,8 +9,8 @@ /** * AnyOfProperty — generated wire type ('fabric' spec, components/schemas 'AnyOfProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AnyOfProperty { public java.util.List anyOf; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ArrayProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ArrayProperty.java index 2c214c9e..ce747486 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ArrayProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ArrayProperty.java @@ -9,8 +9,8 @@ /** * ArrayProperty — generated wire type ('fabric' spec, components/schemas 'ArrayProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ArrayProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AudioChannel.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AudioChannel.java index e1ec4f95..cc6e6980 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AudioChannel.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/AudioChannel.java @@ -9,8 +9,8 @@ /** * AudioChannel — generated wire type ('fabric' spec, components/schemas 'AudioChannel'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AudioChannel { public String audio; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/BedrockParams.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/BedrockParams.java index c83052cc..59a2c248 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/BedrockParams.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/BedrockParams.java @@ -9,8 +9,8 @@ /** * BedrockParams — generated wire type ('fabric' spec, components/schemas 'BedrockParams'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class BedrockParams { public java.util.Map attention_timeout; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/BedrockSWAIG.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/BedrockSWAIG.java index 84ec4d1f..492e8727 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/BedrockSWAIG.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/BedrockSWAIG.java @@ -9,8 +9,8 @@ /** * BedrockSWAIG — generated wire type ('fabric' spec, components/schemas 'BedrockSWAIG'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class BedrockSWAIG { public java.util.List functions; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/BooleanProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/BooleanProperty.java index 4972e505..a6a5d5a3 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/BooleanProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/BooleanProperty.java @@ -9,8 +9,8 @@ /** * BooleanProperty — generated wire type ('fabric' spec, components/schemas 'BooleanProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class BooleanProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScript.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScript.java index 355834cb..0fc6141c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScript.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScript.java @@ -9,8 +9,8 @@ /** * CXMLScript — generated wire type ('fabric' spec, components/schemas 'CXMLScript'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLScript { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptAddressListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptAddressListResponse.java index 9a784fb6..f6056567 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptAddressListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptAddressListResponse.java @@ -10,8 +10,8 @@ * CXMLScriptAddressListResponse — generated wire type ('fabric' spec, components/schemas * 'CXMLScriptAddressListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLScriptAddressListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptAddressPaginationResponse.java index efc0051c..c00f849d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptAddressPaginationResponse.java @@ -10,8 +10,8 @@ * CXMLScriptAddressPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'CXMLScriptAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLScriptAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptCreateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptCreateRequest.java index b74137cf..0a41fa08 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptCreateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptCreateRequest.java @@ -10,8 +10,8 @@ * CXMLScriptCreateRequest — generated wire type ('fabric' spec, components/schemas * 'CXMLScriptCreateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLScriptCreateRequest { public String display_name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptCreateStatusCode422.java index eea2b968..3a018be3 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptCreateStatusCode422.java @@ -10,8 +10,8 @@ * CXMLScriptCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'CXMLScriptCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLScriptCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptListResponse.java index 12f3f0e0..eda6014f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptListResponse.java @@ -10,8 +10,8 @@ * CXMLScriptListResponse — generated wire type ('fabric' spec, components/schemas * 'CXMLScriptListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLScriptListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptResponse.java index 6c5514cb..a5a8f522 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptResponse.java @@ -10,8 +10,8 @@ * CXMLScriptResponse — generated wire type ('fabric' spec, components/schemas * 'CXMLScriptResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLScriptResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptUpdateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptUpdateRequest.java index bde1791e..48d0bc52 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptUpdateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptUpdateRequest.java @@ -10,8 +10,8 @@ * CXMLScriptUpdateRequest — generated wire type ('fabric' spec, components/schemas * 'CXMLScriptUpdateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLScriptUpdateRequest { public String display_name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptUpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptUpdateStatusCode422.java index 81423068..2217caee 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptUpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLScriptUpdateStatusCode422.java @@ -10,8 +10,8 @@ * CXMLScriptUpdateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'CXMLScriptUpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLScriptUpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhook.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhook.java index 8fc02d51..babce579 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhook.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhook.java @@ -9,8 +9,8 @@ /** * CXMLWebhook — generated wire type ('fabric' spec, components/schemas 'CXMLWebhook'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLWebhook { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookAddressListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookAddressListResponse.java index 46195c01..0ef6bd68 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookAddressListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookAddressListResponse.java @@ -10,8 +10,8 @@ * CXMLWebhookAddressListResponse — generated wire type ('fabric' spec, components/schemas * 'CXMLWebhookAddressListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLWebhookAddressListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookAddressPaginationResponse.java index 62dc40f8..7ad65fbe 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookAddressPaginationResponse.java @@ -10,8 +10,8 @@ * CXMLWebhookAddressPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'CXMLWebhookAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLWebhookAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookCreateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookCreateRequest.java index 8bc80a5f..5a35a4f7 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookCreateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookCreateRequest.java @@ -10,8 +10,8 @@ * CXMLWebhookCreateRequest — generated wire type ('fabric' spec, components/schemas * 'CXMLWebhookCreateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLWebhookCreateRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookCreateStatusCode422.java index 9b602a6e..ca2a2d38 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookCreateStatusCode422.java @@ -10,8 +10,8 @@ * CXMLWebhookCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'CXMLWebhookCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLWebhookCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookListResponse.java index cac05b5c..cf5607c1 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookListResponse.java @@ -10,8 +10,8 @@ * CXMLWebhookListResponse — generated wire type ('fabric' spec, components/schemas * 'CXMLWebhookListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLWebhookListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookPaginationResponse.java index 0ff7ccd8..39117892 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookPaginationResponse.java @@ -10,8 +10,8 @@ * CXMLWebhookPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'CXMLWebhookPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLWebhookPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookResponse.java index 0221e89d..cfcd8237 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookResponse.java @@ -10,8 +10,8 @@ * CXMLWebhookResponse — generated wire type ('fabric' spec, components/schemas * 'CXMLWebhookResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLWebhookResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookUpdateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookUpdateRequest.java index d78d8425..15ba7348 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookUpdateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookUpdateRequest.java @@ -10,8 +10,8 @@ * CXMLWebhookUpdateRequest — generated wire type ('fabric' spec, components/schemas * 'CXMLWebhookUpdateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLWebhookUpdateRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookUpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookUpdateStatusCode422.java index 95482d20..5fec60b8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookUpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CXMLWebhookUpdateStatusCode422.java @@ -10,8 +10,8 @@ * CXMLWebhookUpdateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'CXMLWebhookUpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CXMLWebhookUpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlow.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlow.java index f13ca826..4bcd9efb 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlow.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlow.java @@ -9,8 +9,8 @@ /** * CallFlow — generated wire type ('fabric' spec, components/schemas 'CallFlow'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallFlow { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowAddressListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowAddressListResponse.java index 2f3aed8f..23a2858d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowAddressListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowAddressListResponse.java @@ -10,8 +10,8 @@ * CallFlowAddressListResponse — generated wire type ('fabric' spec, components/schemas * 'CallFlowAddressListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallFlowAddressListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowAddressPaginationResponse.java index bcc7f24b..35556519 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowAddressPaginationResponse.java @@ -10,8 +10,8 @@ * CallFlowAddressPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'CallFlowAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallFlowAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowCreateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowCreateRequest.java index dc77e946..304dc257 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowCreateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowCreateRequest.java @@ -10,8 +10,8 @@ * CallFlowCreateRequest — generated wire type ('fabric' spec, components/schemas * 'CallFlowCreateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallFlowCreateRequest { public String title; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowCreateStatusCode422.java index 279f16ce..c337233a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowCreateStatusCode422.java @@ -10,8 +10,8 @@ * CallFlowCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'CallFlowCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallFlowCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowListResponse.java index 075a8000..8f6e169b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowListResponse.java @@ -10,8 +10,8 @@ * CallFlowListResponse — generated wire type ('fabric' spec, components/schemas * 'CallFlowListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallFlowListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowResponse.java index 9e1ab46d..c20d561e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowResponse.java @@ -9,8 +9,8 @@ /** * CallFlowResponse — generated wire type ('fabric' spec, components/schemas 'CallFlowResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallFlowResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowUpdateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowUpdateRequest.java index fbc865d8..fa3b8752 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowUpdateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowUpdateRequest.java @@ -10,8 +10,8 @@ * CallFlowUpdateRequest — generated wire type ('fabric' spec, components/schemas * 'CallFlowUpdateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallFlowUpdateRequest { public String title; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowUpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowUpdateStatusCode422.java index 935ed0e4..bfd69932 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowUpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowUpdateStatusCode422.java @@ -10,8 +10,8 @@ * CallFlowUpdateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'CallFlowUpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallFlowUpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersion.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersion.java index 353972a8..c25dd98a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersion.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersion.java @@ -9,8 +9,8 @@ /** * CallFlowVersion — generated wire type ('fabric' spec, components/schemas 'CallFlowVersion'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallFlowVersion { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionDeployByDocumentVersion.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionDeployByDocumentVersion.java index 536737a9..dd5f9f97 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionDeployByDocumentVersion.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionDeployByDocumentVersion.java @@ -10,8 +10,8 @@ * CallFlowVersionDeployByDocumentVersion — generated wire type ('fabric' spec, components/schemas * 'CallFlowVersionDeployByDocumentVersion'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallFlowVersionDeployByDocumentVersion { public Long document_version; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionDeployByVersionId.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionDeployByVersionId.java index 1bd6771d..90808f51 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionDeployByVersionId.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionDeployByVersionId.java @@ -10,8 +10,8 @@ * CallFlowVersionDeployByVersionId — generated wire type ('fabric' spec, components/schemas * 'CallFlowVersionDeployByVersionId'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallFlowVersionDeployByVersionId { public String call_flow_version_id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionDeployResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionDeployResponse.java index a609e816..2c3bc3fc 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionDeployResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionDeployResponse.java @@ -10,8 +10,8 @@ * CallFlowVersionDeployResponse — generated wire type ('fabric' spec, components/schemas * 'CallFlowVersionDeployResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallFlowVersionDeployResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionListResponse.java index a12a4822..d5a83cb3 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionListResponse.java @@ -10,8 +10,8 @@ * CallFlowVersionListResponse — generated wire type ('fabric' spec, components/schemas * 'CallFlowVersionListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallFlowVersionListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionsPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionsPaginationResponse.java index 5d6658a7..bacc126b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionsPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CallFlowVersionsPaginationResponse.java @@ -10,8 +10,8 @@ * CallFlowVersionsPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'CallFlowVersionsPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CallFlowVersionsPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ChangeContextAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ChangeContextAction.java index 85e8a3f9..158d955d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ChangeContextAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ChangeContextAction.java @@ -10,8 +10,8 @@ * ChangeContextAction — generated wire type ('fabric' spec, components/schemas * 'ChangeContextAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChangeContextAction { public String change_context; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ChangeStepAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ChangeStepAction.java index 5f5aee49..6308949a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ChangeStepAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ChangeStepAction.java @@ -9,8 +9,8 @@ /** * ChangeStepAction — generated wire type ('fabric' spec, components/schemas 'ChangeStepAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChangeStepAction { public String change_step; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Cond.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Cond.java index 1fc5675c..c756203b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Cond.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Cond.java @@ -9,8 +9,8 @@ /** * Cond — generated wire type ('fabric' spec, components/schemas 'Cond'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Cond { public java.util.List cond; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CondElse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CondElse.java index 4522bbde..8d6c6575 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CondElse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CondElse.java @@ -9,8 +9,8 @@ /** * CondElse — generated wire type ('fabric' spec, components/schemas 'CondElse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CondElse { /** wire key: else */ diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CondReg.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CondReg.java index fa7a8f00..010cce70 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CondReg.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CondReg.java @@ -9,8 +9,8 @@ /** * CondReg — generated wire type ('fabric' spec, components/schemas 'CondReg'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CondReg { public String when; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoom.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoom.java index 7c849000..721a4c25 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoom.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoom.java @@ -9,8 +9,8 @@ /** * ConferenceRoom — generated wire type ('fabric' spec, components/schemas 'ConferenceRoom'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConferenceRoom { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomAddressListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomAddressListResponse.java index 39e7361a..0c8583f2 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomAddressListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomAddressListResponse.java @@ -10,8 +10,8 @@ * ConferenceRoomAddressListResponse — generated wire type ('fabric' spec, components/schemas * 'ConferenceRoomAddressListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConferenceRoomAddressListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomAddressPaginationResponse.java index e13e7870..b1a8f6ef 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomAddressPaginationResponse.java @@ -10,8 +10,8 @@ * ConferenceRoomAddressPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'ConferenceRoomAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConferenceRoomAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomCreateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomCreateRequest.java index 8ea305d1..f4293a4b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomCreateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomCreateRequest.java @@ -10,8 +10,8 @@ * ConferenceRoomCreateRequest — generated wire type ('fabric' spec, components/schemas * 'ConferenceRoomCreateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConferenceRoomCreateRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomCreateStatusCode422.java index e23040ef..2e380dbd 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomCreateStatusCode422.java @@ -10,8 +10,8 @@ * ConferenceRoomCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'ConferenceRoomCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConferenceRoomCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomListResponse.java index d066ee8c..78ebe7d6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomListResponse.java @@ -10,8 +10,8 @@ * ConferenceRoomListResponse — generated wire type ('fabric' spec, components/schemas * 'ConferenceRoomListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConferenceRoomListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomResponse.java index 214a124b..58b6416b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomResponse.java @@ -10,8 +10,8 @@ * ConferenceRoomResponse — generated wire type ('fabric' spec, components/schemas * 'ConferenceRoomResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConferenceRoomResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomUpdateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomUpdateRequest.java index 810f745e..ab95a980 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomUpdateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomUpdateRequest.java @@ -10,8 +10,8 @@ * ConferenceRoomUpdateRequest — generated wire type ('fabric' spec, components/schemas * 'ConferenceRoomUpdateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConferenceRoomUpdateRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomUpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomUpdateStatusCode422.java index a8dc288b..0e69680f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomUpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConferenceRoomUpdateStatusCode422.java @@ -10,8 +10,8 @@ * ConferenceRoomUpdateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'ConferenceRoomUpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConferenceRoomUpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Connect.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Connect.java index 5bfb5097..82321fe5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Connect.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Connect.java @@ -9,8 +9,8 @@ /** * Connect — generated wire type ('fabric' spec, components/schemas 'Connect'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Connect { public java.util.Map connect; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceParallel.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceParallel.java index 408f5cd3..a439c490 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceParallel.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceParallel.java @@ -10,8 +10,8 @@ * ConnectDeviceParallel — generated wire type ('fabric' spec, components/schemas * 'ConnectDeviceParallel'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectDeviceParallel { public String from; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceSerial.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceSerial.java index bc9f5bf8..02b58343 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceSerial.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceSerial.java @@ -10,8 +10,8 @@ * ConnectDeviceSerial — generated wire type ('fabric' spec, components/schemas * 'ConnectDeviceSerial'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectDeviceSerial { public String from; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceSerialParallel.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceSerialParallel.java index e397a02e..9b7c0125 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceSerialParallel.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceSerialParallel.java @@ -10,8 +10,8 @@ * ConnectDeviceSerialParallel — generated wire type ('fabric' spec, components/schemas * 'ConnectDeviceSerialParallel'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectDeviceSerialParallel { public String from; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceSingle.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceSingle.java index ad5ad71b..5c716005 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceSingle.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectDeviceSingle.java @@ -10,8 +10,8 @@ * ConnectDeviceSingle — generated wire type ('fabric' spec, components/schemas * 'ConnectDeviceSingle'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectDeviceSingle { public String from; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectHeaders.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectHeaders.java index 5b23a631..f8f5e2cc 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectHeaders.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectHeaders.java @@ -9,8 +9,8 @@ /** * ConnectHeaders — generated wire type ('fabric' spec, components/schemas 'ConnectHeaders'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectHeaders { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectSwitch.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectSwitch.java index 50005589..b96ba75b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectSwitch.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConnectSwitch.java @@ -9,8 +9,8 @@ /** * ConnectSwitch — generated wire type ('fabric' spec, components/schemas 'ConnectSwitch'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectSwitch { public String variable; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConstProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConstProperty.java index 62187737..4a10b58c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConstProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConstProperty.java @@ -9,8 +9,8 @@ /** * ConstProperty — generated wire type ('fabric' spec, components/schemas 'ConstProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConstProperty { /** wire key: const */ diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextPOMSteps.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextPOMSteps.java index aaa797c6..b36b909e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextPOMSteps.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextPOMSteps.java @@ -9,8 +9,8 @@ /** * ContextPOMSteps — generated wire type ('fabric' spec, components/schemas 'ContextPOMSteps'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextPOMSteps { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextSwitchAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextSwitchAction.java index dd56cefe..6c73ea55 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextSwitchAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextSwitchAction.java @@ -10,8 +10,8 @@ * ContextSwitchAction — generated wire type ('fabric' spec, components/schemas * 'ContextSwitchAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextSwitchAction { public java.util.Map context_switch; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextTextSteps.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextTextSteps.java index cd94e9b8..775c0936 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextTextSteps.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextTextSteps.java @@ -9,8 +9,8 @@ /** * ContextTextSteps — generated wire type ('fabric' spec, components/schemas 'ContextTextSteps'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextTextSteps { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Contexts.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Contexts.java index 38cafbba..f2c106e8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Contexts.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Contexts.java @@ -9,8 +9,8 @@ /** * Contexts — generated wire type ('fabric' spec, components/schemas 'Contexts'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Contexts { /** wire key: default */ diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsPOMObject.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsPOMObject.java index 477481dc..4da96323 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsPOMObject.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsPOMObject.java @@ -9,8 +9,8 @@ /** * ContextsPOMObject — generated wire type ('fabric' spec, components/schemas 'ContextsPOMObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextsPOMObject { public java.util.List steps; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsPOMObjectUpdate.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsPOMObjectUpdate.java index c00accfe..91a87ecc 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsPOMObjectUpdate.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsPOMObjectUpdate.java @@ -10,8 +10,8 @@ * ContextsPOMObjectUpdate — generated wire type ('fabric' spec, components/schemas * 'ContextsPOMObjectUpdate'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextsPOMObjectUpdate { public java.util.List steps; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsTextObject.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsTextObject.java index 4ba2d617..63f3b3ca 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsTextObject.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsTextObject.java @@ -10,8 +10,8 @@ * ContextsTextObject — generated wire type ('fabric' spec, components/schemas * 'ContextsTextObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextsTextObject { public java.util.List steps; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsTextObjectUpdate.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsTextObjectUpdate.java index fd6afb03..cf1fb3a3 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsTextObjectUpdate.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsTextObjectUpdate.java @@ -10,8 +10,8 @@ * ContextsTextObjectUpdate — generated wire type ('fabric' spec, components/schemas * 'ContextsTextObjectUpdate'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextsTextObjectUpdate { public java.util.List steps; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsUpdate.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsUpdate.java index f9b93f7f..f40507d5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsUpdate.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ContextsUpdate.java @@ -9,8 +9,8 @@ /** * ContextsUpdate — generated wire type ('fabric' spec, components/schemas 'ContextsUpdate'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextsUpdate { /** wire key: default */ diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConversationMessage.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConversationMessage.java index 5e798e09..48e4a4b0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConversationMessage.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ConversationMessage.java @@ -10,8 +10,8 @@ * ConversationMessage — generated wire type ('fabric' spec, components/schemas * 'ConversationMessage'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConversationMessage { public String role; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplication.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplication.java index 00a7cadd..b1324c73 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplication.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplication.java @@ -9,8 +9,8 @@ /** * CxmlApplication — generated wire type ('fabric' spec, components/schemas 'CxmlApplication'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CxmlApplication { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationAddressListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationAddressListResponse.java index 9267f988..71af9081 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationAddressListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationAddressListResponse.java @@ -10,8 +10,8 @@ * CxmlApplicationAddressListResponse — generated wire type ('fabric' spec, components/schemas * 'CxmlApplicationAddressListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CxmlApplicationAddressListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationAddressPaginationResponse.java index e452924c..e55297a1 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationAddressPaginationResponse.java @@ -10,8 +10,8 @@ * CxmlApplicationAddressPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'CxmlApplicationAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CxmlApplicationAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationListResponse.java index 7ccee66c..2f1c9caa 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationListResponse.java @@ -10,8 +10,8 @@ * CxmlApplicationListResponse — generated wire type ('fabric' spec, components/schemas * 'CxmlApplicationListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CxmlApplicationListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationPaginationResponse.java index 12466380..7835eafb 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationPaginationResponse.java @@ -10,8 +10,8 @@ * CxmlApplicationPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'CxmlApplicationPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CxmlApplicationPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationResponse.java index 140ddcc6..4951a988 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationResponse.java @@ -10,8 +10,8 @@ * CxmlApplicationResponse — generated wire type ('fabric' spec, components/schemas * 'CxmlApplicationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CxmlApplicationResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationUpdateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationUpdateRequest.java index efaa3e84..750f0bec 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationUpdateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationUpdateRequest.java @@ -10,8 +10,8 @@ * CxmlApplicationUpdateRequest — generated wire type ('fabric' spec, components/schemas * 'CxmlApplicationUpdateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CxmlApplicationUpdateRequest { public String display_name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationUpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationUpdateStatusCode422.java index 6ef571c5..e670c787 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationUpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/CxmlApplicationUpdateStatusCode422.java @@ -10,8 +10,8 @@ * CxmlApplicationUpdateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'CxmlApplicationUpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CxmlApplicationUpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DataMap.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DataMap.java index ae9dd84b..6ada4c29 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DataMap.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DataMap.java @@ -9,8 +9,8 @@ /** * DataMap — generated wire type ('fabric' spec, components/schemas 'DataMap'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DataMap { public java.util.Map output; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Denoise.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Denoise.java index c04b6ce8..6a41f8eb 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Denoise.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Denoise.java @@ -9,8 +9,8 @@ /** * Denoise — generated wire type ('fabric' spec, components/schemas 'Denoise'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Denoise { public java.util.Map denoise; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DetectMachine.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DetectMachine.java index 922bcdc3..71e78cbc 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DetectMachine.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DetectMachine.java @@ -9,8 +9,8 @@ /** * DetectMachine — generated wire type ('fabric' spec, components/schemas 'DetectMachine'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DetectMachine { public java.util.Map detect_machine; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogFlowPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogFlowPaginationResponse.java index 0dc1a319..9a90c790 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogFlowPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogFlowPaginationResponse.java @@ -10,8 +10,8 @@ * DialogFlowPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'DialogFlowPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DialogFlowPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgent.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgent.java index 0f3bf4f6..03127c04 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgent.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgent.java @@ -9,8 +9,8 @@ /** * DialogflowAgent — generated wire type ('fabric' spec, components/schemas 'DialogflowAgent'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DialogflowAgent { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentAddressListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentAddressListResponse.java index 240e4d60..e5b6584b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentAddressListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentAddressListResponse.java @@ -10,8 +10,8 @@ * DialogflowAgentAddressListResponse — generated wire type ('fabric' spec, components/schemas * 'DialogflowAgentAddressListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DialogflowAgentAddressListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentAddressPaginationResponse.java index dc27caa2..37aebcac 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentAddressPaginationResponse.java @@ -10,8 +10,8 @@ * DialogflowAgentAddressPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'DialogflowAgentAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DialogflowAgentAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentListResponse.java index 83fe89d2..28871aac 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentListResponse.java @@ -10,8 +10,8 @@ * DialogflowAgentListResponse — generated wire type ('fabric' spec, components/schemas * 'DialogflowAgentListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DialogflowAgentListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentResponse.java index 3b684e11..28255e00 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentResponse.java @@ -10,8 +10,8 @@ * DialogflowAgentResponse — generated wire type ('fabric' spec, components/schemas * 'DialogflowAgentResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DialogflowAgentResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentUpdateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentUpdateRequest.java index c0150a60..ef072967 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentUpdateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentUpdateRequest.java @@ -10,8 +10,8 @@ * DialogflowAgentUpdateRequest — generated wire type ('fabric' spec, components/schemas * 'DialogflowAgentUpdateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DialogflowAgentUpdateRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentUpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentUpdateStatusCode422.java index 2c56760b..314e8153 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentUpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DialogflowAgentUpdateStatusCode422.java @@ -10,8 +10,8 @@ * DialogflowAgentUpdateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'DialogflowAgentUpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DialogflowAgentUpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DomainApplicationAssignRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DomainApplicationAssignRequest.java index 476a3532..db6e9734 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DomainApplicationAssignRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DomainApplicationAssignRequest.java @@ -10,8 +10,8 @@ * DomainApplicationAssignRequest — generated wire type ('fabric' spec, components/schemas * 'DomainApplicationAssignRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DomainApplicationAssignRequest { public String domain_application_id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DomainApplicationCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DomainApplicationCreateStatusCode422.java index 9679c452..cd143515 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DomainApplicationCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DomainApplicationCreateStatusCode422.java @@ -10,8 +10,8 @@ * DomainApplicationCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'DomainApplicationCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DomainApplicationCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DomainApplicationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DomainApplicationResponse.java index 82a82f56..34926e85 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DomainApplicationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/DomainApplicationResponse.java @@ -10,8 +10,8 @@ * DomainApplicationResponse — generated wire type ('fabric' spec, components/schemas * 'DomainApplicationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DomainApplicationResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EmbedTokenCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EmbedTokenCreateStatusCode422.java index ed01737b..31118878 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EmbedTokenCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EmbedTokenCreateStatusCode422.java @@ -10,8 +10,8 @@ * EmbedTokenCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'EmbedTokenCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class EmbedTokenCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EmbedsTokensRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EmbedsTokensRequest.java index 20c64a1a..5143b868 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EmbedsTokensRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EmbedsTokensRequest.java @@ -10,8 +10,8 @@ * EmbedsTokensRequest — generated wire type ('fabric' spec, components/schemas * 'EmbedsTokensRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class EmbedsTokensRequest { public String token; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EmbedsTokensResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EmbedsTokensResponse.java index fb2fbfb5..839a3a55 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EmbedsTokensResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EmbedsTokensResponse.java @@ -10,8 +10,8 @@ * EmbedsTokensResponse — generated wire type ('fabric' spec, components/schemas * 'EmbedsTokensResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class EmbedsTokensResponse { public String token; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EnterQueue.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EnterQueue.java index 0e260e18..0a60cbc3 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EnterQueue.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EnterQueue.java @@ -9,8 +9,8 @@ /** * EnterQueue — generated wire type ('fabric' spec, components/schemas 'EnterQueue'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class EnterQueue { public java.util.Map enter_queue; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EnterQueueObject.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EnterQueueObject.java index 6c77190a..696c2eb9 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EnterQueueObject.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/EnterQueueObject.java @@ -9,8 +9,8 @@ /** * EnterQueueObject — generated wire type ('fabric' spec, components/schemas 'EnterQueueObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class EnterQueueObject { public String queue_name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Execute.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Execute.java index c63729f5..64987334 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Execute.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Execute.java @@ -9,8 +9,8 @@ /** * Execute — generated wire type ('fabric' spec, components/schemas 'Execute'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Execute { public java.util.Map execute; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ExecuteSwitch.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ExecuteSwitch.java index b0405f18..68992f61 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ExecuteSwitch.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ExecuteSwitch.java @@ -9,8 +9,8 @@ /** * ExecuteSwitch — generated wire type ('fabric' spec, components/schemas 'ExecuteSwitch'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ExecuteSwitch { public String variable; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Expression.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Expression.java index 3b536f46..942368de 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Expression.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Expression.java @@ -9,8 +9,8 @@ /** * Expression — generated wire type ('fabric' spec, components/schemas 'Expression'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Expression { public String string; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddress.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddress.java index 2dfe098d..9f280136 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddress.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddress.java @@ -9,8 +9,8 @@ /** * FabricAddress — generated wire type ('fabric' spec, components/schemas 'FabricAddress'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FabricAddress { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressApp.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressApp.java index 97e3f83e..4d41ebf0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressApp.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressApp.java @@ -9,8 +9,8 @@ /** * FabricAddressApp — generated wire type ('fabric' spec, components/schemas 'FabricAddressApp'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FabricAddressApp { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressCall.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressCall.java index 4dc10a8c..d2505c45 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressCall.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressCall.java @@ -9,8 +9,8 @@ /** * FabricAddressCall — generated wire type ('fabric' spec, components/schemas 'FabricAddressCall'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FabricAddressCall { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressPaginationResponse.java index 34982276..f1791680 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressPaginationResponse.java @@ -10,8 +10,8 @@ * FabricAddressPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'FabricAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FabricAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressRoom.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressRoom.java index fe4decfe..39c0744a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressRoom.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressRoom.java @@ -9,8 +9,8 @@ /** * FabricAddressRoom — generated wire type ('fabric' spec, components/schemas 'FabricAddressRoom'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FabricAddressRoom { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressSubscriber.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressSubscriber.java index 1a480acc..94868c83 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressSubscriber.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressSubscriber.java @@ -10,8 +10,8 @@ * FabricAddressSubscriber — generated wire type ('fabric' spec, components/schemas * 'FabricAddressSubscriber'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FabricAddressSubscriber { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressesResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressesResponse.java index f89f5920..fab05668 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressesResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FabricAddressesResponse.java @@ -10,8 +10,8 @@ * FabricAddressesResponse — generated wire type ('fabric' spec, components/schemas * 'FabricAddressesResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FabricAddressesResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConectorPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConectorPaginationResponse.java index cfb4cca2..39ef700d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConectorPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConectorPaginationResponse.java @@ -10,8 +10,8 @@ * FreeswitchConectorPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'FreeswitchConectorPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FreeswitchConectorPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnector.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnector.java index 16978b24..47e287f4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnector.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnector.java @@ -10,8 +10,8 @@ * FreeswitchConnector — generated wire type ('fabric' spec, components/schemas * 'FreeswitchConnector'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FreeswitchConnector { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorAddressListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorAddressListResponse.java index 1b7bac6d..f162b2f7 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorAddressListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorAddressListResponse.java @@ -10,8 +10,8 @@ * FreeswitchConnectorAddressListResponse — generated wire type ('fabric' spec, components/schemas * 'FreeswitchConnectorAddressListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FreeswitchConnectorAddressListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorAddressPaginationResponse.java index 87e9ef73..d190624e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorAddressPaginationResponse.java @@ -10,8 +10,8 @@ * FreeswitchConnectorAddressPaginationResponse — generated wire type ('fabric' spec, * components/schemas 'FreeswitchConnectorAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FreeswitchConnectorAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorCreateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorCreateRequest.java index 0f8f1e2e..023ea120 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorCreateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorCreateRequest.java @@ -10,8 +10,8 @@ * FreeswitchConnectorCreateRequest — generated wire type ('fabric' spec, components/schemas * 'FreeswitchConnectorCreateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FreeswitchConnectorCreateRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorCreateStatusCode422.java index 902af3e8..ab4db194 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorCreateStatusCode422.java @@ -10,8 +10,8 @@ * FreeswitchConnectorCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'FreeswitchConnectorCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FreeswitchConnectorCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorListResponse.java index c7177fc2..53d8697f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorListResponse.java @@ -10,8 +10,8 @@ * FreeswitchConnectorListResponse — generated wire type ('fabric' spec, components/schemas * 'FreeswitchConnectorListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FreeswitchConnectorListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorResponse.java index aca58b2a..44ac7099 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorResponse.java @@ -10,8 +10,8 @@ * FreeswitchConnectorResponse — generated wire type ('fabric' spec, components/schemas * 'FreeswitchConnectorResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FreeswitchConnectorResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorUpdateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorUpdateRequest.java index 9c35b14b..3bf9a69c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorUpdateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorUpdateRequest.java @@ -10,8 +10,8 @@ * FreeswitchConnectorUpdateRequest — generated wire type ('fabric' spec, components/schemas * 'FreeswitchConnectorUpdateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FreeswitchConnectorUpdateRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorUpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorUpdateStatusCode422.java index 6cb60d97..6ff28886 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorUpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FreeswitchConnectorUpdateStatusCode422.java @@ -10,8 +10,8 @@ * FreeswitchConnectorUpdateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'FreeswitchConnectorUpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FreeswitchConnectorUpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FunctionParameters.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FunctionParameters.java index a1329f41..e8fb83c0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FunctionParameters.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/FunctionParameters.java @@ -10,8 +10,8 @@ * FunctionParameters — generated wire type ('fabric' spec, components/schemas * 'FunctionParameters'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FunctionParameters { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Goto.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Goto.java index 1ba03552..1fbe487f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Goto.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Goto.java @@ -9,8 +9,8 @@ /** * Goto — generated wire type ('fabric' spec, components/schemas 'Goto'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Goto { /** wire key: goto */ diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/GuestTokenCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/GuestTokenCreateStatusCode422.java index fe66e956..1eb53bf8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/GuestTokenCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/GuestTokenCreateStatusCode422.java @@ -10,8 +10,8 @@ * GuestTokenCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'GuestTokenCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class GuestTokenCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/HangUpHookSWAIGFunction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/HangUpHookSWAIGFunction.java index 84b87002..d4539898 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/HangUpHookSWAIGFunction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/HangUpHookSWAIGFunction.java @@ -10,8 +10,8 @@ * HangUpHookSWAIGFunction — generated wire type ('fabric' spec, components/schemas * 'HangUpHookSWAIGFunction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class HangUpHookSWAIGFunction { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Hangup.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Hangup.java index 61572b07..1b18d73a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Hangup.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Hangup.java @@ -9,8 +9,8 @@ /** * Hangup — generated wire type ('fabric' spec, components/schemas 'Hangup'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Hangup { public java.util.Map hangup; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/HangupAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/HangupAction.java index fbb5a16b..ace3034b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/HangupAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/HangupAction.java @@ -9,8 +9,8 @@ /** * HangupAction — generated wire type ('fabric' spec, components/schemas 'HangupAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class HangupAction { public java.util.Map hangup; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Hint.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Hint.java index 33395d1a..f9c8c5a5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Hint.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Hint.java @@ -9,8 +9,8 @@ /** * Hint — generated wire type ('fabric' spec, components/schemas 'Hint'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Hint { public String hint; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/HoldAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/HoldAction.java index c1475b5c..dcde16bf 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/HoldAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/HoldAction.java @@ -9,8 +9,8 @@ /** * HoldAction — generated wire type ('fabric' spec, components/schemas 'HoldAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class HoldAction { public java.util.Map hold; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/InjectAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/InjectAction.java index 92faf0b5..2c533f06 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/InjectAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/InjectAction.java @@ -9,8 +9,8 @@ /** * InjectAction — generated wire type ('fabric' spec, components/schemas 'InjectAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class InjectAction { public java.util.Map inject; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/IntegerProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/IntegerProperty.java index 8eec4327..772ea43a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/IntegerProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/IntegerProperty.java @@ -9,8 +9,8 @@ /** * IntegerProperty — generated wire type ('fabric' spec, components/schemas 'IntegerProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class IntegerProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/InviteTokenCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/InviteTokenCreateStatusCode422.java index 0da6b9c5..f22336de 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/InviteTokenCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/InviteTokenCreateStatusCode422.java @@ -10,8 +10,8 @@ * InviteTokenCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'InviteTokenCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class InviteTokenCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/JoinConference.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/JoinConference.java index f7aa95f3..c49b6191 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/JoinConference.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/JoinConference.java @@ -9,8 +9,8 @@ /** * JoinConference — generated wire type ('fabric' spec, components/schemas 'JoinConference'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class JoinConference { public java.util.Map join_conference; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/JoinConferenceObject.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/JoinConferenceObject.java index d30f9334..c4217b20 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/JoinConferenceObject.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/JoinConferenceObject.java @@ -10,8 +10,8 @@ * JoinConferenceObject — generated wire type ('fabric' spec, components/schemas * 'JoinConferenceObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class JoinConferenceObject { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/JoinRoom.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/JoinRoom.java index 72911dee..7921bdb6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/JoinRoom.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/JoinRoom.java @@ -9,8 +9,8 @@ /** * JoinRoom — generated wire type ('fabric' spec, components/schemas 'JoinRoom'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class JoinRoom { public java.util.Map join_room; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Label.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Label.java index 226136a2..9a84fd12 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Label.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Label.java @@ -9,8 +9,8 @@ /** * Label — generated wire type ('fabric' spec, components/schemas 'Label'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Label { public String label; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LanguageParams.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LanguageParams.java index 9d9490d3..14b364e0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LanguageParams.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LanguageParams.java @@ -9,8 +9,8 @@ /** * LanguageParams — generated wire type ('fabric' spec, components/schemas 'LanguageParams'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LanguageParams { public java.util.Map stability; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LanguagesWithFillers.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LanguagesWithFillers.java index 5b4fdc10..f31154b3 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LanguagesWithFillers.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LanguagesWithFillers.java @@ -10,8 +10,8 @@ * LanguagesWithFillers — generated wire type ('fabric' spec, components/schemas * 'LanguagesWithFillers'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LanguagesWithFillers { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LanguagesWithSoloFillers.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LanguagesWithSoloFillers.java index 6fd16902..ab3e90fd 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LanguagesWithSoloFillers.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LanguagesWithSoloFillers.java @@ -10,8 +10,8 @@ * LanguagesWithSoloFillers — generated wire type ('fabric' spec, components/schemas * 'LanguagesWithSoloFillers'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LanguagesWithSoloFillers { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LiveTranscribe.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LiveTranscribe.java index f41f3974..d4f32d5e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LiveTranscribe.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LiveTranscribe.java @@ -9,8 +9,8 @@ /** * LiveTranscribe — generated wire type ('fabric' spec, components/schemas 'LiveTranscribe'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LiveTranscribe { public java.util.Map live_transcribe; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LiveTranslate.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LiveTranslate.java index fa4388a0..f44d2b47 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LiveTranslate.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/LiveTranslate.java @@ -9,8 +9,8 @@ /** * LiveTranslate — generated wire type ('fabric' spec, components/schemas 'LiveTranslate'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LiveTranslate { public java.util.Map live_translate; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/MessagingChannel.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/MessagingChannel.java index e7b537b6..7a30801a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/MessagingChannel.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/MessagingChannel.java @@ -9,8 +9,8 @@ /** * MessagingChannel — generated wire type ('fabric' spec, components/schemas 'MessagingChannel'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class MessagingChannel { public String messaging; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/NullProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/NullProperty.java index a7280b99..0d538cf4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/NullProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/NullProperty.java @@ -9,8 +9,8 @@ /** * NullProperty — generated wire type ('fabric' spec, components/schemas 'NullProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class NullProperty { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/NumberProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/NumberProperty.java index 5cd27c26..76fb486b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/NumberProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/NumberProperty.java @@ -9,8 +9,8 @@ /** * NumberProperty — generated wire type ('fabric' spec, components/schemas 'NumberProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class NumberProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ObjectProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ObjectProperty.java index 7fb04731..814b4a9e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ObjectProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ObjectProperty.java @@ -9,8 +9,8 @@ /** * ObjectProperty — generated wire type ('fabric' spec, components/schemas 'ObjectProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ObjectProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/OneOfProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/OneOfProperty.java index bf193ca2..200c3ecc 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/OneOfProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/OneOfProperty.java @@ -9,8 +9,8 @@ /** * OneOfProperty — generated wire type ('fabric' spec, components/schemas 'OneOfProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class OneOfProperty { public java.util.List oneOf; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Output.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Output.java index 0f6f4a35..b59e06b5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Output.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Output.java @@ -9,8 +9,8 @@ /** * Output — generated wire type ('fabric' spec, components/schemas 'Output'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Output { public String response; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Pay.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Pay.java index 0c025292..c5746057 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Pay.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Pay.java @@ -9,8 +9,8 @@ /** * Pay — generated wire type ('fabric' spec, components/schemas 'Pay'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Pay { public java.util.Map pay; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayParameters.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayParameters.java index f42d0046..962b2ccb 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayParameters.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayParameters.java @@ -9,8 +9,8 @@ /** * PayParameters — generated wire type ('fabric' spec, components/schemas 'PayParameters'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PayParameters { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayPromptPlayAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayPromptPlayAction.java index 6fc3f278..0f1b71bf 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayPromptPlayAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayPromptPlayAction.java @@ -10,8 +10,8 @@ * PayPromptPlayAction — generated wire type ('fabric' spec, components/schemas * 'PayPromptPlayAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PayPromptPlayAction { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayPromptSayAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayPromptSayAction.java index f0b67b93..02e64a1e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayPromptSayAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayPromptSayAction.java @@ -10,8 +10,8 @@ * PayPromptSayAction — generated wire type ('fabric' spec, components/schemas * 'PayPromptSayAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PayPromptSayAction { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayPrompts.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayPrompts.java index 8956c44b..e80862dc 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayPrompts.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PayPrompts.java @@ -9,8 +9,8 @@ /** * PayPrompts — generated wire type ('fabric' spec, components/schemas 'PayPrompts'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PayPrompts { public java.util.List actions; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PhoneRouteAssignRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PhoneRouteAssignRequest.java index f2ca04dd..e6941395 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PhoneRouteAssignRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PhoneRouteAssignRequest.java @@ -10,8 +10,8 @@ * PhoneRouteAssignRequest — generated wire type ('fabric' spec, components/schemas * 'PhoneRouteAssignRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PhoneRouteAssignRequest { public String phone_route_id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PhoneRouteCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PhoneRouteCreateStatusCode422.java index 13e07594..c94b9215 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PhoneRouteCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PhoneRouteCreateStatusCode422.java @@ -10,8 +10,8 @@ * PhoneRouteCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'PhoneRouteCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PhoneRouteCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PhoneRouteResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PhoneRouteResponse.java index ccf4c3cc..4ada5128 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PhoneRouteResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PhoneRouteResponse.java @@ -10,8 +10,8 @@ * PhoneRouteResponse — generated wire type ('fabric' spec, components/schemas * 'PhoneRouteResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PhoneRouteResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Play.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Play.java index 86acc756..817ec27d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Play.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Play.java @@ -9,8 +9,8 @@ /** * Play — generated wire type ('fabric' spec, components/schemas 'Play'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Play { public java.util.Map play; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PlayWithURL.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PlayWithURL.java index a48515e5..1890757f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PlayWithURL.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PlayWithURL.java @@ -9,8 +9,8 @@ /** * PlayWithURL — generated wire type ('fabric' spec, components/schemas 'PlayWithURL'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PlayWithURL { public java.util.Map auto_answer; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PlayWithURLS.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PlayWithURLS.java index d2c173c8..8e375863 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PlayWithURLS.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PlayWithURLS.java @@ -9,8 +9,8 @@ /** * PlayWithURLS — generated wire type ('fabric' spec, components/schemas 'PlayWithURLS'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PlayWithURLS { public java.util.Map auto_answer; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PlaybackBGAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PlaybackBGAction.java index 153e2e04..84596409 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PlaybackBGAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PlaybackBGAction.java @@ -9,8 +9,8 @@ /** * PlaybackBGAction — generated wire type ('fabric' spec, components/schemas 'PlaybackBGAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PlaybackBGAction { public java.util.Map playback_bg; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PomSectionBodyContent.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PomSectionBodyContent.java index b65458ce..815fc576 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PomSectionBodyContent.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PomSectionBodyContent.java @@ -10,8 +10,8 @@ * PomSectionBodyContent — generated wire type ('fabric' spec, components/schemas * 'PomSectionBodyContent'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PomSectionBodyContent { public String title; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PomSectionBulletsContent.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PomSectionBulletsContent.java index 532b628d..9520cf3d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PomSectionBulletsContent.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/PomSectionBulletsContent.java @@ -10,8 +10,8 @@ * PomSectionBulletsContent — generated wire type ('fabric' spec, components/schemas * 'PomSectionBulletsContent'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PomSectionBulletsContent { public String title; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Prompt.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Prompt.java index 4b69c868..7da21f9e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Prompt.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Prompt.java @@ -9,8 +9,8 @@ /** * Prompt — generated wire type ('fabric' spec, components/schemas 'Prompt'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Prompt { public java.util.Map prompt; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Pronounce.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Pronounce.java index 9306d8bf..9daa902e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Pronounce.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Pronounce.java @@ -9,8 +9,8 @@ /** * Pronounce — generated wire type ('fabric' spec, components/schemas 'Pronounce'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Pronounce { public String replace; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ReceiveFax.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ReceiveFax.java index 02318319..827114e8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ReceiveFax.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ReceiveFax.java @@ -9,8 +9,8 @@ /** * ReceiveFax — generated wire type ('fabric' spec, components/schemas 'ReceiveFax'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ReceiveFax { public java.util.Map receive_fax; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RecordCall.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RecordCall.java index 4713d618..ad4c4936 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RecordCall.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RecordCall.java @@ -9,8 +9,8 @@ /** * RecordCall — generated wire type ('fabric' spec, components/schemas 'RecordCall'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RecordCall { public java.util.Map record_call; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Record_.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Record_.java index d5fd4f57..78b3a264 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Record_.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Record_.java @@ -9,8 +9,8 @@ /** * Record_ — generated wire type ('fabric' spec, components/schemas 'Record'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Record_ { /** wire key: record */ diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RefreshTokenStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RefreshTokenStatusCode422.java index 8e1678cb..1cde6d30 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RefreshTokenStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RefreshTokenStatusCode422.java @@ -10,8 +10,8 @@ * RefreshTokenStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'RefreshTokenStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RefreshTokenStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplication.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplication.java index 519df7d3..be8f47a0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplication.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplication.java @@ -9,8 +9,8 @@ /** * RelayApplication — generated wire type ('fabric' spec, components/schemas 'RelayApplication'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RelayApplication { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationAddressListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationAddressListResponse.java index 3964df0e..9ee30e47 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationAddressListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationAddressListResponse.java @@ -10,8 +10,8 @@ * RelayApplicationAddressListResponse — generated wire type ('fabric' spec, components/schemas * 'RelayApplicationAddressListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RelayApplicationAddressListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationAddressPaginationResponse.java index 810ae3ff..8b0cdd71 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationAddressPaginationResponse.java @@ -10,8 +10,8 @@ * RelayApplicationAddressPaginationResponse — generated wire type ('fabric' spec, * components/schemas 'RelayApplicationAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RelayApplicationAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationCreateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationCreateRequest.java index 583da432..72d307de 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationCreateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationCreateRequest.java @@ -10,8 +10,8 @@ * RelayApplicationCreateRequest — generated wire type ('fabric' spec, components/schemas * 'RelayApplicationCreateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RelayApplicationCreateRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationCreateStatusCode422.java index 51adb874..dac4758b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationCreateStatusCode422.java @@ -10,8 +10,8 @@ * RelayApplicationCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'RelayApplicationCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RelayApplicationCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationListResponse.java index 5ad1e090..5a8b455b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationListResponse.java @@ -10,8 +10,8 @@ * RelayApplicationListResponse — generated wire type ('fabric' spec, components/schemas * 'RelayApplicationListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RelayApplicationListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationResponse.java index 19d86673..44277586 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationResponse.java @@ -10,8 +10,8 @@ * RelayApplicationResponse — generated wire type ('fabric' spec, components/schemas * 'RelayApplicationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RelayApplicationResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationUpdateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationUpdateRequest.java index 90eeaeb0..a683ddea 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationUpdateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationUpdateRequest.java @@ -10,8 +10,8 @@ * RelayApplicationUpdateRequest — generated wire type ('fabric' spec, components/schemas * 'RelayApplicationUpdateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RelayApplicationUpdateRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationUpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationUpdateStatusCode422.java index 83d6cccd..2638219a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationUpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/RelayApplicationUpdateStatusCode422.java @@ -10,8 +10,8 @@ * RelayApplicationUpdateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'RelayApplicationUpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RelayApplicationUpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Request.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Request.java index 4db14c1d..47318747 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Request.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Request.java @@ -9,8 +9,8 @@ /** * Request — generated wire type ('fabric' spec, components/schemas 'Request'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Request { public java.util.Map request; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceAddressListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceAddressListResponse.java index 1a6f7a61..6c312b45 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceAddressListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceAddressListResponse.java @@ -10,8 +10,8 @@ * ResourceAddressListResponse — generated wire type ('fabric' spec, components/schemas * 'ResourceAddressListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceAddressListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceAddressPaginationResponse.java index fce4293e..53cb0a39 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceAddressPaginationResponse.java @@ -10,8 +10,8 @@ * ResourceAddressPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'ResourceAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceListResponse.java index 8a6ba27c..d128245a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceListResponse.java @@ -10,8 +10,8 @@ * ResourceListResponse — generated wire type ('fabric' spec, components/schemas * 'ResourceListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourcePaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourcePaginationResponse.java index 16248ee0..6518873f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourcePaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourcePaginationResponse.java @@ -10,8 +10,8 @@ * ResourcePaginationResponse — generated wire type ('fabric' spec, components/schemas * 'ResourcePaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourcePaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseAI.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseAI.java index 6d432d06..dde3ea32 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseAI.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseAI.java @@ -10,8 +10,8 @@ * ResourceResponseAI — generated wire type ('fabric' spec, components/schemas * 'ResourceResponseAI'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceResponseAI { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCXMLApplication.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCXMLApplication.java index babd7a00..a2914a3b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCXMLApplication.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCXMLApplication.java @@ -10,8 +10,8 @@ * ResourceResponseCXMLApplication — generated wire type ('fabric' spec, components/schemas * 'ResourceResponseCXMLApplication'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceResponseCXMLApplication { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCXMLScript.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCXMLScript.java index a77d01ea..f5a5ab9a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCXMLScript.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCXMLScript.java @@ -10,8 +10,8 @@ * ResourceResponseCXMLScript — generated wire type ('fabric' spec, components/schemas * 'ResourceResponseCXMLScript'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceResponseCXMLScript { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCXMLWebhook.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCXMLWebhook.java index 0dcaac94..6c89ba71 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCXMLWebhook.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCXMLWebhook.java @@ -10,8 +10,8 @@ * ResourceResponseCXMLWebhook — generated wire type ('fabric' spec, components/schemas * 'ResourceResponseCXMLWebhook'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceResponseCXMLWebhook { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCallFlow.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCallFlow.java index 682ec0b2..9b7b8c97 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCallFlow.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseCallFlow.java @@ -10,8 +10,8 @@ * ResourceResponseCallFlow — generated wire type ('fabric' spec, components/schemas * 'ResourceResponseCallFlow'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceResponseCallFlow { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseConferenceRoom.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseConferenceRoom.java index 6d4faab6..e26d1491 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseConferenceRoom.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseConferenceRoom.java @@ -10,8 +10,8 @@ * ResourceResponseConferenceRoom — generated wire type ('fabric' spec, components/schemas * 'ResourceResponseConferenceRoom'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceResponseConferenceRoom { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseDialogFlowAgent.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseDialogFlowAgent.java index da4dc3a5..92b7b364 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseDialogFlowAgent.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseDialogFlowAgent.java @@ -10,8 +10,8 @@ * ResourceResponseDialogFlowAgent — generated wire type ('fabric' spec, components/schemas * 'ResourceResponseDialogFlowAgent'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceResponseDialogFlowAgent { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseFSConnector.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseFSConnector.java index b8ba8d8d..3a92c37d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseFSConnector.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseFSConnector.java @@ -10,8 +10,8 @@ * ResourceResponseFSConnector — generated wire type ('fabric' spec, components/schemas * 'ResourceResponseFSConnector'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceResponseFSConnector { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseRelayApp.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseRelayApp.java index cb16a4f2..c9ccf93e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseRelayApp.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseRelayApp.java @@ -10,8 +10,8 @@ * ResourceResponseRelayApp — generated wire type ('fabric' spec, components/schemas * 'ResourceResponseRelayApp'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceResponseRelayApp { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSWMLScript.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSWMLScript.java index b856e01a..b95c3e83 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSWMLScript.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSWMLScript.java @@ -10,8 +10,8 @@ * ResourceResponseSWMLScript — generated wire type ('fabric' spec, components/schemas * 'ResourceResponseSWMLScript'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceResponseSWMLScript { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSWMLWebhook.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSWMLWebhook.java index dbd1d0ac..115df2c8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSWMLWebhook.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSWMLWebhook.java @@ -10,8 +10,8 @@ * ResourceResponseSWMLWebhook — generated wire type ('fabric' spec, components/schemas * 'ResourceResponseSWMLWebhook'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceResponseSWMLWebhook { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSipEndpoint.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSipEndpoint.java index 49eb27ed..2fb04707 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSipEndpoint.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSipEndpoint.java @@ -10,8 +10,8 @@ * ResourceResponseSipEndpoint — generated wire type ('fabric' spec, components/schemas * 'ResourceResponseSipEndpoint'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceResponseSipEndpoint { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSipGateway.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSipGateway.java index 0ee0ead0..7ceea3d3 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSipGateway.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSipGateway.java @@ -10,8 +10,8 @@ * ResourceResponseSipGateway — generated wire type ('fabric' spec, components/schemas * 'ResourceResponseSipGateway'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceResponseSipGateway { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSubscriber.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSubscriber.java index c48225af..75f84627 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSubscriber.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceResponseSubscriber.java @@ -10,8 +10,8 @@ * ResourceResponseSubscriber — generated wire type ('fabric' spec, components/schemas * 'ResourceResponseSubscriber'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceResponseSubscriber { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointAssignRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointAssignRequest.java index 4b80f745..ef7ea707 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointAssignRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointAssignRequest.java @@ -10,8 +10,8 @@ * ResourceSipEndpointAssignRequest — generated wire type ('fabric' spec, components/schemas * 'ResourceSipEndpointAssignRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceSipEndpointAssignRequest { public String sip_endpoint_id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointCreateStatusCode422.java index 0da390b9..8ad2d10d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointCreateStatusCode422.java @@ -10,8 +10,8 @@ * ResourceSipEndpointCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'ResourceSipEndpointCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceSipEndpointCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointResponse.java index aade2df5..14949bf8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointResponse.java @@ -10,8 +10,8 @@ * ResourceSipEndpointResponse — generated wire type ('fabric' spec, components/schemas * 'ResourceSipEndpointResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceSipEndpointResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointUpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointUpdateStatusCode422.java index ae848b93..d23c1408 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointUpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSipEndpointUpdateStatusCode422.java @@ -10,8 +10,8 @@ * ResourceSipEndpointUpdateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'ResourceSipEndpointUpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceSipEndpointUpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSubSipEndpointCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSubSipEndpointCreateStatusCode422.java index 8ca8984c..69333e55 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSubSipEndpointCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ResourceSubSipEndpointCreateStatusCode422.java @@ -10,8 +10,8 @@ * ResourceSubSipEndpointCreateStatusCode422 — generated wire type ('fabric' spec, * components/schemas 'ResourceSubSipEndpointCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ResourceSubSipEndpointCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Return.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Return.java index c8e87ce4..24df8b89 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Return.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Return.java @@ -9,8 +9,8 @@ /** * Return — generated wire type ('fabric' spec, components/schemas 'Return'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Return { /** wire key: return */ diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SIPRefer.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SIPRefer.java index bb394de2..eb966b38 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SIPRefer.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SIPRefer.java @@ -9,8 +9,8 @@ /** * SIPRefer — generated wire type ('fabric' spec, components/schemas 'SIPRefer'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SIPRefer { public java.util.Map sip_refer; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SMSWithBody.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SMSWithBody.java index ef600f99..6e934a0b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SMSWithBody.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SMSWithBody.java @@ -9,8 +9,8 @@ /** * SMSWithBody — generated wire type ('fabric' spec, components/schemas 'SMSWithBody'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SMSWithBody { public String to_number; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SMSWithMedia.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SMSWithMedia.java index 4ea9ed4e..eb467d0b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SMSWithMedia.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SMSWithMedia.java @@ -9,8 +9,8 @@ /** * SMSWithMedia — generated wire type ('fabric' spec, components/schemas 'SMSWithMedia'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SMSWithMedia { public String to_number; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIG.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIG.java index 7b04bb07..45941690 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIG.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIG.java @@ -9,8 +9,8 @@ /** * SWAIG — generated wire type ('fabric' spec, components/schemas 'SWAIG'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWAIG { public java.util.Map defaults; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGDefaults.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGDefaults.java index 022f98f2..c1e74efc 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGDefaults.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGDefaults.java @@ -9,8 +9,8 @@ /** * SWAIGDefaults — generated wire type ('fabric' spec, components/schemas 'SWAIGDefaults'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWAIGDefaults { public String web_hook_url; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGIncludes.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGIncludes.java index 7fc89c9b..7b3a094b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGIncludes.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGIncludes.java @@ -9,8 +9,8 @@ /** * SWAIGIncludes — generated wire type ('fabric' spec, components/schemas 'SWAIGIncludes'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWAIGIncludes { public java.util.List functions; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGInternalFiller.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGInternalFiller.java index 8592ddbb..9abda61a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGInternalFiller.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGInternalFiller.java @@ -10,8 +10,8 @@ * SWAIGInternalFiller — generated wire type ('fabric' spec, components/schemas * 'SWAIGInternalFiller'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWAIGInternalFiller { public java.util.Map hangup; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGInternalFillerUpdate.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGInternalFillerUpdate.java index 5af1bc34..35bfca36 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGInternalFillerUpdate.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGInternalFillerUpdate.java @@ -10,8 +10,8 @@ * SWAIGInternalFillerUpdate — generated wire type ('fabric' spec, components/schemas * 'SWAIGInternalFillerUpdate'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWAIGInternalFillerUpdate { public java.util.Map hangup; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGUpdate.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGUpdate.java index a96cc788..a5491c62 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGUpdate.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWAIGUpdate.java @@ -9,8 +9,8 @@ /** * SWAIGUpdate — generated wire type ('fabric' spec, components/schemas 'SWAIGUpdate'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWAIGUpdate { public java.util.Map defaults; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLAction.java index 40c7fc55..d4b38539 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLAction.java @@ -9,8 +9,8 @@ /** * SWMLAction — generated wire type ('fabric' spec, components/schemas 'SWMLAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWMLAction { public java.util.Map SWML; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLObject.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLObject.java index a8fee51c..50d3bec1 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLObject.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLObject.java @@ -9,8 +9,8 @@ /** * SWMLObject — generated wire type ('fabric' spec, components/schemas 'SWMLObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWMLObject { public String version; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLScriptAddressListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLScriptAddressListResponse.java index c12a3e00..a500ae76 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLScriptAddressListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLScriptAddressListResponse.java @@ -10,8 +10,8 @@ * SWMLScriptAddressListResponse — generated wire type ('fabric' spec, components/schemas * 'SWMLScriptAddressListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWMLScriptAddressListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLScriptAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLScriptAddressPaginationResponse.java index 503444de..12f3cb91 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLScriptAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLScriptAddressPaginationResponse.java @@ -10,8 +10,8 @@ * SWMLScriptAddressPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'SWMLScriptAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWMLScriptAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhook.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhook.java index 5da2e0e7..c09e0a4f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhook.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhook.java @@ -9,8 +9,8 @@ /** * SWMLWebhook — generated wire type ('fabric' spec, components/schemas 'SWMLWebhook'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWMLWebhook { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookAddressListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookAddressListResponse.java index 1d3aa8fc..a9b096ce 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookAddressListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookAddressListResponse.java @@ -10,8 +10,8 @@ * SWMLWebhookAddressListResponse — generated wire type ('fabric' spec, components/schemas * 'SWMLWebhookAddressListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWMLWebhookAddressListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookAddressPaginationResponse.java index ce5f035f..6a8c15e1 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookAddressPaginationResponse.java @@ -10,8 +10,8 @@ * SWMLWebhookAddressPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'SWMLWebhookAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWMLWebhookAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookCreateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookCreateRequest.java index d33d7e74..7a369a1e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookCreateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookCreateRequest.java @@ -10,8 +10,8 @@ * SWMLWebhookCreateRequest — generated wire type ('fabric' spec, components/schemas * 'SWMLWebhookCreateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWMLWebhookCreateRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookListResponse.java index 40f14112..5aa82999 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookListResponse.java @@ -10,8 +10,8 @@ * SWMLWebhookListResponse — generated wire type ('fabric' spec, components/schemas * 'SWMLWebhookListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWMLWebhookListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookPaginationResponse.java index 106b6ec9..3ac2a015 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookPaginationResponse.java @@ -10,8 +10,8 @@ * SWMLWebhookPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'SWMLWebhookPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWMLWebhookPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookResponse.java index 848773d8..c8ff7dd9 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookResponse.java @@ -10,8 +10,8 @@ * SWMLWebhookResponse — generated wire type ('fabric' spec, components/schemas * 'SWMLWebhookResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWMLWebhookResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookUpdateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookUpdateRequest.java index 4f338288..73fe78bb 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookUpdateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SWMLWebhookUpdateRequest.java @@ -10,8 +10,8 @@ * SWMLWebhookUpdateRequest — generated wire type ('fabric' spec, components/schemas * 'SWMLWebhookUpdateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWMLWebhookUpdateRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SayAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SayAction.java index 18716060..4b618e3d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SayAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SayAction.java @@ -9,8 +9,8 @@ /** * SayAction — generated wire type ('fabric' spec, components/schemas 'SayAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SayAction { public String say; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Section.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Section.java index 1d6c76f6..dd0431ba 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Section.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Section.java @@ -9,8 +9,8 @@ /** * Section — generated wire type ('fabric' spec, components/schemas 'Section'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Section { public java.util.List main; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SendDigits.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SendDigits.java index 7dbd108d..4a62e37d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SendDigits.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SendDigits.java @@ -9,8 +9,8 @@ /** * SendDigits — generated wire type ('fabric' spec, components/schemas 'SendDigits'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SendDigits { public java.util.Map send_digits; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SendFax.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SendFax.java index 214643dd..6c711447 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SendFax.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SendFax.java @@ -9,8 +9,8 @@ /** * SendFax — generated wire type ('fabric' spec, components/schemas 'SendFax'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SendFax { public java.util.Map send_fax; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SendSMS.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SendSMS.java index 15cabbf5..3292b7f5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SendSMS.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SendSMS.java @@ -9,8 +9,8 @@ /** * SendSMS — generated wire type ('fabric' spec, components/schemas 'SendSMS'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SendSMS { public java.util.Map send_sms; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Set.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Set.java index 7c5e0d15..a9ae0edc 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Set.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Set.java @@ -9,8 +9,8 @@ /** * Set — generated wire type ('fabric' spec, components/schemas 'Set'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Set { public java.util.Map set; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SetGlobalDataAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SetGlobalDataAction.java index 1be32280..c43148c6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SetGlobalDataAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SetGlobalDataAction.java @@ -10,8 +10,8 @@ * SetGlobalDataAction — generated wire type ('fabric' spec, components/schemas * 'SetGlobalDataAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SetGlobalDataAction { public java.util.Map set_global_data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SetMetaDataAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SetMetaDataAction.java index 6aa7311a..d62ebc7e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SetMetaDataAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SetMetaDataAction.java @@ -9,8 +9,8 @@ /** * SetMetaDataAction — generated wire type ('fabric' spec, components/schemas 'SetMetaDataAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SetMetaDataAction { public java.util.Map set_meta_data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpoint.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpoint.java index 5d823082..dce5a652 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpoint.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpoint.java @@ -9,8 +9,8 @@ /** * SipEndpoint — generated wire type ('fabric' spec, components/schemas 'SipEndpoint'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipEndpoint { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointAddressListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointAddressListResponse.java index 3d378ae9..4146e61b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointAddressListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointAddressListResponse.java @@ -10,8 +10,8 @@ * SipEndpointAddressListResponse — generated wire type ('fabric' spec, components/schemas * 'SipEndpointAddressListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipEndpointAddressListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointAddressPaginationResponse.java index 00231681..3e68c416 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointAddressPaginationResponse.java @@ -10,8 +10,8 @@ * SipEndpointAddressPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'SipEndpointAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipEndpointAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointCreateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointCreateRequest.java index 62074e8d..402c112f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointCreateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointCreateRequest.java @@ -10,8 +10,8 @@ * SipEndpointCreateRequest — generated wire type ('fabric' spec, components/schemas * 'SipEndpointCreateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipEndpointCreateRequest { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointCreateStatusCode422.java index 52e593e2..d9882994 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointCreateStatusCode422.java @@ -10,8 +10,8 @@ * SipEndpointCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'SipEndpointCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipEndpointCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointListResponse.java index 2d62da1c..0a8d03b8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointListResponse.java @@ -10,8 +10,8 @@ * SipEndpointListResponse — generated wire type ('fabric' spec, components/schemas * 'SipEndpointListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipEndpointListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointPaginationResponse.java index 07854517..b724dcea 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointPaginationResponse.java @@ -10,8 +10,8 @@ * SipEndpointPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'SipEndpointPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipEndpointPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointResponse.java index cdc04aac..bf2fe647 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointResponse.java @@ -10,8 +10,8 @@ * SipEndpointResponse — generated wire type ('fabric' spec, components/schemas * 'SipEndpointResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipEndpointResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointUpdateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointUpdateRequest.java index 9b777670..cfb9917e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointUpdateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointUpdateRequest.java @@ -10,8 +10,8 @@ * SipEndpointUpdateRequest — generated wire type ('fabric' spec, components/schemas * 'SipEndpointUpdateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipEndpointUpdateRequest { public String username; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointUpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointUpdateStatusCode422.java index baf12791..d6a29219 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointUpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipEndpointUpdateStatusCode422.java @@ -10,8 +10,8 @@ * SipEndpointUpdateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'SipEndpointUpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipEndpointUpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGateway.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGateway.java index 856cbd26..93e72c5f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGateway.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGateway.java @@ -9,8 +9,8 @@ /** * SipGateway — generated wire type ('fabric' spec, components/schemas 'SipGateway'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipGateway { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayAddressListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayAddressListResponse.java index e7ce8bfe..14b7a352 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayAddressListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayAddressListResponse.java @@ -10,8 +10,8 @@ * SipGatewayAddressListResponse — generated wire type ('fabric' spec, components/schemas * 'SipGatewayAddressListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipGatewayAddressListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayAddressPaginationResponse.java index 66abc3af..fafba7fa 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayAddressPaginationResponse.java @@ -10,8 +10,8 @@ * SipGatewayAddressPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'SipGatewayAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipGatewayAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayCreateStatusCode422.java index 4b466370..c8f36b7d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayCreateStatusCode422.java @@ -10,8 +10,8 @@ * SipGatewayCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'SipGatewayCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipGatewayCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayListResponse.java index 12c1b5e6..188e5514 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayListResponse.java @@ -10,8 +10,8 @@ * SipGatewayListResponse — generated wire type ('fabric' spec, components/schemas * 'SipGatewayListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipGatewayListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayPaginationResponse.java index f3888d5f..c01a96ec 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayPaginationResponse.java @@ -10,8 +10,8 @@ * SipGatewayPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'SipGatewayPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipGatewayPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayRequest.java index 9b17864b..dd2d7a33 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayRequest.java @@ -9,8 +9,8 @@ /** * SipGatewayRequest — generated wire type ('fabric' spec, components/schemas 'SipGatewayRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipGatewayRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayRequestUpdate.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayRequestUpdate.java index b2a7528c..3e7edae4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayRequestUpdate.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayRequestUpdate.java @@ -10,8 +10,8 @@ * SipGatewayRequestUpdate — generated wire type ('fabric' spec, components/schemas * 'SipGatewayRequestUpdate'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipGatewayRequestUpdate { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayResponse.java index 7d10c01c..d05de026 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SipGatewayResponse.java @@ -10,8 +10,8 @@ * SipGatewayResponse — generated wire type ('fabric' spec, components/schemas * 'SipGatewayResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipGatewayResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Sleep.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Sleep.java index 2b48bb12..9541dda8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Sleep.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Sleep.java @@ -9,8 +9,8 @@ /** * Sleep — generated wire type ('fabric' spec, components/schemas 'Sleep'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Sleep { public java.util.Map sleep; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StartAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StartAction.java index 089c7081..a1b8a040 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StartAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StartAction.java @@ -9,8 +9,8 @@ /** * StartAction — generated wire type ('fabric' spec, components/schemas 'StartAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StartAction { public java.util.Map start; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StartUpHookSWAIGFunction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StartUpHookSWAIGFunction.java index 9800db2c..299d527d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StartUpHookSWAIGFunction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StartUpHookSWAIGFunction.java @@ -10,8 +10,8 @@ * StartUpHookSWAIGFunction — generated wire type ('fabric' spec, components/schemas * 'StartUpHookSWAIGFunction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StartUpHookSWAIGFunction { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopAction.java index c3a9b54e..78057a46 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopAction.java @@ -9,8 +9,8 @@ /** * StopAction — generated wire type ('fabric' spec, components/schemas 'StopAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopAction { public java.util.Map stop; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopDenoise.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopDenoise.java index 0a72e44c..b28060c4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopDenoise.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopDenoise.java @@ -9,8 +9,8 @@ /** * StopDenoise — generated wire type ('fabric' spec, components/schemas 'StopDenoise'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopDenoise { public java.util.Map stop_denoise; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopPlaybackBGAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopPlaybackBGAction.java index 7e2d8731..80b5c1e2 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopPlaybackBGAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopPlaybackBGAction.java @@ -10,8 +10,8 @@ * StopPlaybackBGAction — generated wire type ('fabric' spec, components/schemas * 'StopPlaybackBGAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopPlaybackBGAction { public java.util.Map stop_playback_bg; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopRecordCall.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopRecordCall.java index 40f726b5..9969558a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopRecordCall.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopRecordCall.java @@ -9,8 +9,8 @@ /** * StopRecordCall — generated wire type ('fabric' spec, components/schemas 'StopRecordCall'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopRecordCall { public java.util.Map stop_record_call; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopTap.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopTap.java index 1faa317e..37da9c01 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopTap.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StopTap.java @@ -9,8 +9,8 @@ /** * StopTap — generated wire type ('fabric' spec, components/schemas 'StopTap'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopTap { public java.util.Map stop_tap; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StringProperty.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StringProperty.java index b8b3f64d..b7844d8b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StringProperty.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/StringProperty.java @@ -9,8 +9,8 @@ /** * StringProperty — generated wire type ('fabric' spec, components/schemas 'StringProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StringProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Subscriber.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Subscriber.java index 3642f47f..76b35946 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Subscriber.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Subscriber.java @@ -9,8 +9,8 @@ /** * Subscriber — generated wire type ('fabric' spec, components/schemas 'Subscriber'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Subscriber { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberAddressPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberAddressPaginationResponse.java index 407d4e43..f9694d31 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberAddressPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberAddressPaginationResponse.java @@ -10,8 +10,8 @@ * SubscriberAddressPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'SubscriberAddressPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberAddressPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberAddressesResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberAddressesResponse.java index 1707c5d5..0566d2f0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberAddressesResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberAddressesResponse.java @@ -10,8 +10,8 @@ * SubscriberAddressesResponse — generated wire type ('fabric' spec, components/schemas * 'SubscriberAddressesResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberAddressesResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberCreateStatusCode422.java index 11048819..61ade80c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberCreateStatusCode422.java @@ -10,8 +10,8 @@ * SubscriberCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'SubscriberCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberGuestTokenCreateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberGuestTokenCreateRequest.java index 22718cd4..ce6ff3be 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberGuestTokenCreateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberGuestTokenCreateRequest.java @@ -10,8 +10,8 @@ * SubscriberGuestTokenCreateRequest — generated wire type ('fabric' spec, components/schemas * 'SubscriberGuestTokenCreateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberGuestTokenCreateRequest { public java.util.List allowed_addresses; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberGuestTokenCreateResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberGuestTokenCreateResponse.java index 2e9e3e4f..08cbeefd 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberGuestTokenCreateResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberGuestTokenCreateResponse.java @@ -10,8 +10,8 @@ * SubscriberGuestTokenCreateResponse — generated wire type ('fabric' spec, components/schemas * 'SubscriberGuestTokenCreateResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberGuestTokenCreateResponse { public String token; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberInviteTokenCreateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberInviteTokenCreateRequest.java index 39d5f639..d4cf9cd6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberInviteTokenCreateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberInviteTokenCreateRequest.java @@ -10,8 +10,8 @@ * SubscriberInviteTokenCreateRequest — generated wire type ('fabric' spec, components/schemas * 'SubscriberInviteTokenCreateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberInviteTokenCreateRequest { public String address_id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberInviteTokenCreateResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberInviteTokenCreateResponse.java index 2ecfa69e..e0120f37 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberInviteTokenCreateResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberInviteTokenCreateResponse.java @@ -10,8 +10,8 @@ * SubscriberInviteTokenCreateResponse — generated wire type ('fabric' spec, components/schemas * 'SubscriberInviteTokenCreateResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberInviteTokenCreateResponse { public String token; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberListResponse.java index 4f413df7..0d2d09e8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberListResponse.java @@ -10,8 +10,8 @@ * SubscriberListResponse — generated wire type ('fabric' spec, components/schemas * 'SubscriberListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberPaginationResponse.java index b7cee7f6..dcc07ca2 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberPaginationResponse.java @@ -10,8 +10,8 @@ * SubscriberPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'SubscriberPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberRefreshTokenRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberRefreshTokenRequest.java index 1bb631e4..e2f2f77c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberRefreshTokenRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberRefreshTokenRequest.java @@ -10,8 +10,8 @@ * SubscriberRefreshTokenRequest — generated wire type ('fabric' spec, components/schemas * 'SubscriberRefreshTokenRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberRefreshTokenRequest { public String refresh_token; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberRefreshTokenResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberRefreshTokenResponse.java index 7b73b947..b45a7742 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberRefreshTokenResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberRefreshTokenResponse.java @@ -10,8 +10,8 @@ * SubscriberRefreshTokenResponse — generated wire type ('fabric' spec, components/schemas * 'SubscriberRefreshTokenResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberRefreshTokenResponse { public String token; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberRequest.java index ba0b91a9..7c85f458 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberRequest.java @@ -9,8 +9,8 @@ /** * SubscriberRequest — generated wire type ('fabric' spec, components/schemas 'SubscriberRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberRequest { public String password; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberResponse.java index 69304747..e759b35d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberResponse.java @@ -10,8 +10,8 @@ * SubscriberResponse — generated wire type ('fabric' spec, components/schemas * 'SubscriberResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSIPEndpoint.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSIPEndpoint.java index ab0c9f41..007a3268 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSIPEndpoint.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSIPEndpoint.java @@ -10,8 +10,8 @@ * SubscriberSIPEndpoint — generated wire type ('fabric' spec, components/schemas * 'SubscriberSIPEndpoint'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberSIPEndpoint { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointListResponse.java index 1f07c1fc..1d41438b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointListResponse.java @@ -10,8 +10,8 @@ * SubscriberSipEndpointListResponse — generated wire type ('fabric' spec, components/schemas * 'SubscriberSipEndpointListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberSipEndpointListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointPaginationResponse.java index 071e7cf1..ac2052de 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointPaginationResponse.java @@ -10,8 +10,8 @@ * SubscriberSipEndpointPaginationResponse — generated wire type ('fabric' spec, components/schemas * 'SubscriberSipEndpointPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberSipEndpointPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointRequest.java index 81ce7abb..2b7ae46a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointRequest.java @@ -10,8 +10,8 @@ * SubscriberSipEndpointRequest — generated wire type ('fabric' spec, components/schemas * 'SubscriberSipEndpointRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberSipEndpointRequest { public String username; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointRequestUpdate.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointRequestUpdate.java index 14911a8c..86b21aa9 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointRequestUpdate.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberSipEndpointRequestUpdate.java @@ -10,8 +10,8 @@ * SubscriberSipEndpointRequestUpdate — generated wire type ('fabric' spec, components/schemas * 'SubscriberSipEndpointRequestUpdate'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberSipEndpointRequestUpdate { public String username; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberTokenRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberTokenRequest.java index 488e7bf7..93216eff 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberTokenRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberTokenRequest.java @@ -10,8 +10,8 @@ * SubscriberTokenRequest — generated wire type ('fabric' spec, components/schemas * 'SubscriberTokenRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberTokenRequest { public String reference; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberTokenResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberTokenResponse.java index 95b09e08..8dec84f0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberTokenResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberTokenResponse.java @@ -10,8 +10,8 @@ * SubscriberTokenResponse — generated wire type ('fabric' spec, components/schemas * 'SubscriberTokenResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberTokenResponse { public String subscriber_id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberTokenStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberTokenStatusCode422.java index 1f54c69e..5fa48644 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberTokenStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberTokenStatusCode422.java @@ -10,8 +10,8 @@ * SubscriberTokenStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'SubscriberTokenStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberTokenStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberUpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberUpdateStatusCode422.java index abe02d19..cfb51f87 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberUpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SubscriberUpdateStatusCode422.java @@ -10,8 +10,8 @@ * SubscriberUpdateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'SubscriberUpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SubscriberUpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SummarizeAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SummarizeAction.java index b8fa354b..878cb81b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SummarizeAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SummarizeAction.java @@ -9,8 +9,8 @@ /** * SummarizeAction — generated wire type ('fabric' spec, components/schemas 'SummarizeAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SummarizeAction { public java.util.Map summarize; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SummarizeConversationSWAIGFunction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SummarizeConversationSWAIGFunction.java index e5804b4a..de44d92b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SummarizeConversationSWAIGFunction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SummarizeConversationSWAIGFunction.java @@ -10,8 +10,8 @@ * SummarizeConversationSWAIGFunction — generated wire type ('fabric' spec, components/schemas * 'SummarizeConversationSWAIGFunction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SummarizeConversationSWAIGFunction { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Switch.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Switch.java index 3bdc5f2e..933616e1 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Switch.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Switch.java @@ -9,8 +9,8 @@ /** * Switch — generated wire type ('fabric' spec, components/schemas 'Switch'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Switch { /** wire key: switch */ diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScript.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScript.java index 80dd8932..59b5e707 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScript.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScript.java @@ -9,8 +9,8 @@ /** * SwmlScript — generated wire type ('fabric' spec, components/schemas 'SwmlScript'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwmlScript { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptCreateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptCreateRequest.java index 280e0e1e..9c594b2a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptCreateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptCreateRequest.java @@ -10,8 +10,8 @@ * SwmlScriptCreateRequest — generated wire type ('fabric' spec, components/schemas * 'SwmlScriptCreateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwmlScriptCreateRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptCreateStatusCode422.java index 2116ad98..acd1d31b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptCreateStatusCode422.java @@ -10,8 +10,8 @@ * SwmlScriptCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'SwmlScriptCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwmlScriptCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptListResponse.java index 50f18b91..7c8685e9 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptListResponse.java @@ -10,8 +10,8 @@ * SwmlScriptListResponse — generated wire type ('fabric' spec, components/schemas * 'SwmlScriptListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwmlScriptListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptPaginationresponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptPaginationresponse.java index 48e80256..00df233e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptPaginationresponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptPaginationresponse.java @@ -10,8 +10,8 @@ * SwmlScriptPaginationresponse — generated wire type ('fabric' spec, components/schemas * 'SwmlScriptPaginationresponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwmlScriptPaginationresponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptResponse.java index 6ab521bf..d59f5340 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptResponse.java @@ -10,8 +10,8 @@ * SwmlScriptResponse — generated wire type ('fabric' spec, components/schemas * 'SwmlScriptResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwmlScriptResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptUpdateRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptUpdateRequest.java index 46c5649c..bbd6de7a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptUpdateRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptUpdateRequest.java @@ -10,8 +10,8 @@ * SwmlScriptUpdateRequest — generated wire type ('fabric' spec, components/schemas * 'SwmlScriptUpdateRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwmlScriptUpdateRequest { public String display_name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptUpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptUpdateStatusCode422.java index 8a341267..07da1e91 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptUpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlScriptUpdateStatusCode422.java @@ -10,8 +10,8 @@ * SwmlScriptUpdateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'SwmlScriptUpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwmlScriptUpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlWebhookCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlWebhookCreateStatusCode422.java index 5e193cc8..8bb6f80a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlWebhookCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlWebhookCreateStatusCode422.java @@ -10,8 +10,8 @@ * SwmlWebhookCreateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'SwmlWebhookCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwmlWebhookCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlWebhookUpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlWebhookUpdateStatusCode422.java index 140657d5..706307b4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlWebhookUpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/SwmlWebhookUpdateStatusCode422.java @@ -10,8 +10,8 @@ * SwmlWebhookUpdateStatusCode422 — generated wire type ('fabric' spec, components/schemas * 'SwmlWebhookUpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwmlWebhookUpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Tap.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Tap.java index 6473e7ac..b47fac62 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Tap.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Tap.java @@ -9,8 +9,8 @@ /** * Tap — generated wire type ('fabric' spec, components/schemas 'Tap'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Tap { public java.util.Map tap; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ToggleFunctionsAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ToggleFunctionsAction.java index 1fd0e7bf..e126b2a2 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ToggleFunctionsAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/ToggleFunctionsAction.java @@ -10,8 +10,8 @@ * ToggleFunctionsAction — generated wire type ('fabric' spec, components/schemas * 'ToggleFunctionsAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ToggleFunctionsAction { public java.util.List toggle_functions; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/TranscribeStartAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/TranscribeStartAction.java index a2b876e2..a249e939 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/TranscribeStartAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/TranscribeStartAction.java @@ -10,8 +10,8 @@ * TranscribeStartAction — generated wire type ('fabric' spec, components/schemas * 'TranscribeStartAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class TranscribeStartAction { public java.util.Map start; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/TranscribeSummarizeAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/TranscribeSummarizeAction.java index ab517935..326f6c5a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/TranscribeSummarizeAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/TranscribeSummarizeAction.java @@ -10,8 +10,8 @@ * TranscribeSummarizeAction — generated wire type ('fabric' spec, components/schemas * 'TranscribeSummarizeAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class TranscribeSummarizeAction { public java.util.Map summarize; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Transfer.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Transfer.java index 24b8883e..e633c544 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Transfer.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Transfer.java @@ -9,8 +9,8 @@ /** * Transfer — generated wire type ('fabric' spec, components/schemas 'Transfer'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Transfer { public java.util.Map transfer; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_RestApiErrorItem.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_RestApiErrorItem.java index d3ede962..51b56b51 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_RestApiErrorItem.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_RestApiErrorItem.java @@ -10,8 +10,8 @@ * Types_StatusCodes_RestApiErrorItem — generated wire type ('fabric' spec, components/schemas * 'Types.StatusCodes.RestApiErrorItem'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_RestApiErrorItem { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode401.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode401.java index a99fc834..7afc5618 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode401.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode401.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode401 — generated wire type ('fabric' spec, components/schemas * 'Types.StatusCodes.StatusCode401'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode401 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode403.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode403.java index 10e63065..f3af5afb 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode403.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode403.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode403 — generated wire type ('fabric' spec, components/schemas * 'Types.StatusCodes.StatusCode403'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode403 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode404.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode404.java index 53baec97..c397c10e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode404.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode404.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode404 — generated wire type ('fabric' spec, components/schemas * 'Types.StatusCodes.StatusCode404'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode404 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode422.java index 8a8f41aa..22c03e5a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode422.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode422 — generated wire type ('fabric' spec, components/schemas * 'Types.StatusCodes.StatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode500.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode500.java index 91a0474f..19104f7a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode500.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Types_StatusCodes_StatusCode500.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode500 — generated wire type ('fabric' spec, components/schemas * 'Types.StatusCodes.StatusCode500'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode500 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Unset.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Unset.java index efa5fc7f..db52d019 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Unset.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Unset.java @@ -9,8 +9,8 @@ /** * Unset — generated wire type ('fabric' spec, components/schemas 'Unset'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Unset { public java.util.Map unset; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UnsetGlobalDataAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UnsetGlobalDataAction.java index fddbe777..f4a7d83c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UnsetGlobalDataAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UnsetGlobalDataAction.java @@ -10,8 +10,8 @@ * UnsetGlobalDataAction — generated wire type ('fabric' spec, components/schemas * 'UnsetGlobalDataAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UnsetGlobalDataAction { public java.util.Map unset_global_data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UnsetMetaDataAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UnsetMetaDataAction.java index 300879c3..2cc60c8d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UnsetMetaDataAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UnsetMetaDataAction.java @@ -10,8 +10,8 @@ * UnsetMetaDataAction — generated wire type ('fabric' spec, components/schemas * 'UnsetMetaDataAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UnsetMetaDataAction { public java.util.Map unset_meta_data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UserEvent.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UserEvent.java index 50aea6b8..e5a36e95 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UserEvent.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UserEvent.java @@ -9,8 +9,8 @@ /** * UserEvent — generated wire type ('fabric' spec, components/schemas 'UserEvent'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UserEvent { public java.util.Map user_event; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UserInputAction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UserInputAction.java index 4fc19db1..250932ec 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UserInputAction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UserInputAction.java @@ -9,8 +9,8 @@ /** * UserInputAction — generated wire type ('fabric' spec, components/schemas 'UserInputAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UserInputAction { public String user_input; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UserSWAIGFunction.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UserSWAIGFunction.java index e1258677..92a7534b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UserSWAIGFunction.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/UserSWAIGFunction.java @@ -9,8 +9,8 @@ /** * UserSWAIGFunction — generated wire type ('fabric' spec, components/schemas 'UserSWAIGFunction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UserSWAIGFunction { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/VideoChannel.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/VideoChannel.java index 6f17dd07..66249595 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/VideoChannel.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/VideoChannel.java @@ -9,8 +9,8 @@ /** * VideoChannel — generated wire type ('fabric' spec, components/schemas 'VideoChannel'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class VideoChannel { public String video; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Webhook.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Webhook.java index a10388c2..bd614138 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Webhook.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fabric/Webhook.java @@ -9,8 +9,8 @@ /** * Webhook — generated wire type ('fabric' spec, components/schemas 'Webhook'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Webhook { public java.util.List expressions; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/ChargeDetail.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/ChargeDetail.java index 621024df..9179f169 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/ChargeDetail.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/ChargeDetail.java @@ -9,8 +9,8 @@ /** * ChargeDetail — generated wire type ('fax' spec, components/schemas 'ChargeDetail'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChargeDetail { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/FaxLog.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/FaxLog.java index 28485962..83a04533 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/FaxLog.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/FaxLog.java @@ -9,8 +9,8 @@ /** * FaxLog — generated wire type ('fax' spec, components/schemas 'FaxLog'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FaxLog { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/FaxLogShowStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/FaxLogShowStatusCode422.java index 969757ff..fc0d124e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/FaxLogShowStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/FaxLogShowStatusCode422.java @@ -10,8 +10,8 @@ * FaxLogShowStatusCode422 — generated wire type ('fax' spec, components/schemas * 'FaxLogShowStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FaxLogShowStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/FaxLogsListStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/FaxLogsListStatusCode422.java index 8c38367d..7e7e6b81 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/FaxLogsListStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/FaxLogsListStatusCode422.java @@ -10,8 +10,8 @@ * FaxLogsListStatusCode422 — generated wire type ('fax' spec, components/schemas * 'FaxLogsListStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FaxLogsListStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/LogListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/LogListResponse.java index 8786a4cf..07265ff2 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/LogListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/LogListResponse.java @@ -9,8 +9,8 @@ /** * LogListResponse — generated wire type ('fax' spec, components/schemas 'LogListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LogListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/LogPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/LogPaginationResponse.java index af241124..e0b140ff 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/LogPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/LogPaginationResponse.java @@ -10,8 +10,8 @@ * LogPaginationResponse — generated wire type ('fax' spec, components/schemas * 'LogPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LogPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/LogResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/LogResponse.java index 7cd114b4..27306ecb 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/LogResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/LogResponse.java @@ -9,8 +9,8 @@ /** * LogResponse — generated wire type ('fax' spec, components/schemas 'LogResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LogResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_RestApiErrorItem.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_RestApiErrorItem.java index d19c0bd3..a8b9d8bf 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_RestApiErrorItem.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_RestApiErrorItem.java @@ -10,8 +10,8 @@ * Types_StatusCodes_RestApiErrorItem — generated wire type ('fax' spec, components/schemas * 'Types.StatusCodes.RestApiErrorItem'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_RestApiErrorItem { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode400.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode400.java index 505403df..064c505e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode400.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode400.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode400 — generated wire type ('fax' spec, components/schemas * 'Types.StatusCodes.StatusCode400'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode400 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode401.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode401.java index 38df2a62..0f2a0d54 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode401.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode401.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode401 — generated wire type ('fax' spec, components/schemas * 'Types.StatusCodes.StatusCode401'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode401 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode404.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode404.java index b77ebf37..59a1dfc5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode404.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode404.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode404 — generated wire type ('fax' spec, components/schemas * 'Types.StatusCodes.StatusCode404'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode404 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode500.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode500.java index 64e7107f..74251eb7 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode500.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/fax/Types_StatusCodes_StatusCode500.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode500 — generated wire type ('fax' spec, components/schemas * 'Types.StatusCodes.StatusCode500'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode500 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ChargeDetails.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ChargeDetails.java index 508a3b94..a4bb6850 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ChargeDetails.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ChargeDetails.java @@ -9,8 +9,8 @@ /** * ChargeDetails — generated wire type ('logs' spec, components/schemas 'ChargeDetails'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChargeDetails { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ConferenceLogPaginationLinks.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ConferenceLogPaginationLinks.java index 5b6f02bb..a0ff9455 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ConferenceLogPaginationLinks.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ConferenceLogPaginationLinks.java @@ -10,8 +10,8 @@ * ConferenceLogPaginationLinks — generated wire type ('logs' spec, components/schemas * 'ConferenceLogPaginationLinks'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConferenceLogPaginationLinks { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ConferenceLogsStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ConferenceLogsStatusCode422.java index c7aa5c39..276cd46d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ConferenceLogsStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ConferenceLogsStatusCode422.java @@ -10,8 +10,8 @@ * ConferenceLogsStatusCode422 — generated wire type ('logs' spec, components/schemas * 'ConferenceLogsStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConferenceLogsStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ConferencesResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ConferencesResponse.java index dc2b40ac..b2075a84 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ConferencesResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/ConferencesResponse.java @@ -10,8 +10,8 @@ * ConferencesResponse — generated wire type ('logs' spec, components/schemas * 'ConferencesResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConferencesResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/CxmlConference.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/CxmlConference.java index 3d31f30d..dfbce5f9 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/CxmlConference.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/CxmlConference.java @@ -9,8 +9,8 @@ /** * CxmlConference — generated wire type ('logs' spec, components/schemas 'CxmlConference'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CxmlConference { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/RelayConference.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/RelayConference.java index 710395bb..6d7d7503 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/RelayConference.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/RelayConference.java @@ -9,8 +9,8 @@ /** * RelayConference — generated wire type ('logs' spec, components/schemas 'RelayConference'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RelayConference { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/Types_StatusCodes_RestApiErrorItem.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/Types_StatusCodes_RestApiErrorItem.java index 703d36a5..3c37b2f6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/Types_StatusCodes_RestApiErrorItem.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/Types_StatusCodes_RestApiErrorItem.java @@ -10,8 +10,8 @@ * Types_StatusCodes_RestApiErrorItem — generated wire type ('logs' spec, components/schemas * 'Types.StatusCodes.RestApiErrorItem'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_RestApiErrorItem { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/Types_StatusCodes_StatusCode401.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/Types_StatusCodes_StatusCode401.java index 06a18227..65cabce8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/Types_StatusCodes_StatusCode401.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/Types_StatusCodes_StatusCode401.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode401 — generated wire type ('logs' spec, components/schemas * 'Types.StatusCodes.StatusCode401'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode401 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/Types_StatusCodes_StatusCode500.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/Types_StatusCodes_StatusCode500.java index 0170dcf8..62b6ec2b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/Types_StatusCodes_StatusCode500.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/Types_StatusCodes_StatusCode500.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode500 — generated wire type ('logs' spec, components/schemas * 'Types.StatusCodes.StatusCode500'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode500 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/VideoRoomSessionConference.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/VideoRoomSessionConference.java index 2680586b..fc1a369d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/VideoRoomSessionConference.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/logs/VideoRoomSessionConference.java @@ -10,8 +10,8 @@ * VideoRoomSessionConference — generated wire type ('logs' spec, components/schemas * 'VideoRoomSessionConference'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class VideoRoomSessionConference { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/ChargeDetail.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/ChargeDetail.java index 1b14eaef..f1889f71 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/ChargeDetail.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/ChargeDetail.java @@ -9,8 +9,8 @@ /** * ChargeDetail — generated wire type ('message' spec, components/schemas 'ChargeDetail'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChargeDetail { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/LogListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/LogListResponse.java index 10847662..db9fdb41 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/LogListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/LogListResponse.java @@ -9,8 +9,8 @@ /** * LogListResponse — generated wire type ('message' spec, components/schemas 'LogListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LogListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/LogPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/LogPaginationResponse.java index da0ee04f..f8520c54 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/LogPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/LogPaginationResponse.java @@ -10,8 +10,8 @@ * LogPaginationResponse — generated wire type ('message' spec, components/schemas * 'LogPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LogPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/LogRetrieveResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/LogRetrieveResponse.java index 4f50ab23..60e3d97c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/LogRetrieveResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/LogRetrieveResponse.java @@ -10,8 +10,8 @@ * LogRetrieveResponse — generated wire type ('message' spec, components/schemas * 'LogRetrieveResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LogRetrieveResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/MessageLog.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/MessageLog.java index fe3390d2..7caecdfe 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/MessageLog.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/MessageLog.java @@ -9,8 +9,8 @@ /** * MessageLog — generated wire type ('message' spec, components/schemas 'MessageLog'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class MessageLog { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/MessageLogShowStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/MessageLogShowStatusCode422.java index 038805f3..1a9f33a1 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/MessageLogShowStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/MessageLogShowStatusCode422.java @@ -10,8 +10,8 @@ * MessageLogShowStatusCode422 — generated wire type ('message' spec, components/schemas * 'MessageLogShowStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class MessageLogShowStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/MessageLogsListStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/MessageLogsListStatusCode422.java index c28b450a..9a69830c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/MessageLogsListStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/MessageLogsListStatusCode422.java @@ -10,8 +10,8 @@ * MessageLogsListStatusCode422 — generated wire type ('message' spec, components/schemas * 'MessageLogsListStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class MessageLogsListStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_RestApiErrorItem.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_RestApiErrorItem.java index f7811d98..cf467f1b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_RestApiErrorItem.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_RestApiErrorItem.java @@ -10,8 +10,8 @@ * Types_StatusCodes_RestApiErrorItem — generated wire type ('message' spec, components/schemas * 'Types.StatusCodes.RestApiErrorItem'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_RestApiErrorItem { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode400.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode400.java index 1f577370..75279607 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode400.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode400.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode400 — generated wire type ('message' spec, components/schemas * 'Types.StatusCodes.StatusCode400'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode400 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode401.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode401.java index fd7316ef..5af208b6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode401.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode401.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode401 — generated wire type ('message' spec, components/schemas * 'Types.StatusCodes.StatusCode401'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode401 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode404.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode404.java index 10638141..2954c70e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode404.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode404.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode404 — generated wire type ('message' spec, components/schemas * 'Types.StatusCodes.StatusCode404'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode404 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode500.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode500.java index 66989ed4..4287e19d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode500.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/message/Types_StatusCodes_StatusCode500.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode500 — generated wire type ('message' spec, components/schemas * 'Types.StatusCodes.StatusCode500'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode500 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/CreateMessageRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/CreateMessageRequest.java index 10100dcf..9eb2e4d0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/CreateMessageRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/CreateMessageRequest.java @@ -10,8 +10,8 @@ * CreateMessageRequest — generated wire type ('messages' spec, components/schemas * 'CreateMessageRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateMessageRequest { public String to; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Message.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Message.java index 749430ca..fbbee320 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Message.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Message.java @@ -9,8 +9,8 @@ /** * Message — generated wire type ('messages' spec, components/schemas 'Message'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Message { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/MessagesCreateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/MessagesCreateStatusCode422.java index ae3cfbbf..79b9e37d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/MessagesCreateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/MessagesCreateStatusCode422.java @@ -10,8 +10,8 @@ * MessagesCreateStatusCode422 — generated wire type ('messages' spec, components/schemas * 'MessagesCreateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class MessagesCreateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/MessagesUpdateStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/MessagesUpdateStatusCode422.java index 3602f3ea..5c61d88b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/MessagesUpdateStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/MessagesUpdateStatusCode422.java @@ -10,8 +10,8 @@ * MessagesUpdateStatusCode422 — generated wire type ('messages' spec, components/schemas * 'MessagesUpdateStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class MessagesUpdateStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_RestApiErrorItem.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_RestApiErrorItem.java index ef84d9c4..45f3db45 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_RestApiErrorItem.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_RestApiErrorItem.java @@ -10,8 +10,8 @@ * Types_StatusCodes_RestApiErrorItem — generated wire type ('messages' spec, components/schemas * 'Types.StatusCodes.RestApiErrorItem'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_RestApiErrorItem { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode400.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode400.java index d0b9cdf3..9f2be5d4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode400.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode400.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode400 — generated wire type ('messages' spec, components/schemas * 'Types.StatusCodes.StatusCode400'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode400 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode401.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode401.java index 4ad999a7..a5e90568 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode401.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode401.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode401 — generated wire type ('messages' spec, components/schemas * 'Types.StatusCodes.StatusCode401'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode401 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode404.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode404.java index 8abd2e02..4fd50e33 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode404.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode404.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode404 — generated wire type ('messages' spec, components/schemas * 'Types.StatusCodes.StatusCode404'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode404 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode500.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode500.java index 5d17a632..5b27716b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode500.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/Types_StatusCodes_StatusCode500.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode500 — generated wire type ('messages' spec, components/schemas * 'Types.StatusCodes.StatusCode500'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode500 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/UpdateMessageRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/UpdateMessageRequest.java index d20650f1..ec2eed19 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/UpdateMessageRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/messages/UpdateMessageRequest.java @@ -10,8 +10,8 @@ * UpdateMessageRequest — generated wire type ('messages' spec, components/schemas * 'UpdateMessageRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UpdateMessageRequest { public String body; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/CreateTokenRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/CreateTokenRequest.java index 0041add7..ea4e634c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/CreateTokenRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/CreateTokenRequest.java @@ -10,8 +10,8 @@ * CreateTokenRequest — generated wire type ('project' spec, components/schemas * 'CreateTokenRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateTokenRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/TokenResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/TokenResponse.java index 7419cbdc..fbb65747 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/TokenResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/TokenResponse.java @@ -9,8 +9,8 @@ /** * TokenResponse — generated wire type ('project' spec, components/schemas 'TokenResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class TokenResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/TokenStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/TokenStatusCode422.java index 6bec2532..cf4c875d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/TokenStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/TokenStatusCode422.java @@ -10,8 +10,8 @@ * TokenStatusCode422 — generated wire type ('project' spec, components/schemas * 'TokenStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class TokenStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_RestApiErrorItem.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_RestApiErrorItem.java index 3086d978..8057af0e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_RestApiErrorItem.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_RestApiErrorItem.java @@ -10,8 +10,8 @@ * Types_StatusCodes_RestApiErrorItem — generated wire type ('project' spec, components/schemas * 'Types.StatusCodes.RestApiErrorItem'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_RestApiErrorItem { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_StatusCode401.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_StatusCode401.java index ea6726a4..acef401a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_StatusCode401.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_StatusCode401.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode401 — generated wire type ('project' spec, components/schemas * 'Types.StatusCodes.StatusCode401'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode401 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_StatusCode404.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_StatusCode404.java index 17da93f9..af01297b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_StatusCode404.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_StatusCode404.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode404 — generated wire type ('project' spec, components/schemas * 'Types.StatusCodes.StatusCode404'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode404 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_StatusCode500.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_StatusCode500.java index b197cd5a..5eb2e77a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_StatusCode500.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/Types_StatusCodes_StatusCode500.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode500 — generated wire type ('project' spec, components/schemas * 'Types.StatusCodes.StatusCode500'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode500 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/UpdateTokenRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/UpdateTokenRequest.java index 1bbdae45..9a9e0b06 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/UpdateTokenRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/project/UpdateTokenRequest.java @@ -10,8 +10,8 @@ * UpdateTokenRequest — generated wire type ('project' spec, components/schemas * 'UpdateTokenRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UpdateTokenRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Project.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Project.java index 26d01991..810d8a65 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Project.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Project.java @@ -9,8 +9,8 @@ /** * Project — generated wire type ('projects' spec, components/schemas 'Project'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Project { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/ProjectCreate.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/ProjectCreate.java index fe98eb93..f558d855 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/ProjectCreate.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/ProjectCreate.java @@ -9,8 +9,8 @@ /** * ProjectCreate — generated wire type ('projects' spec, components/schemas 'ProjectCreate'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ProjectCreate { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/ProjectList.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/ProjectList.java index a188ef6b..94baeb4e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/ProjectList.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/ProjectList.java @@ -9,8 +9,8 @@ /** * ProjectList — generated wire type ('projects' spec, components/schemas 'ProjectList'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ProjectList { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/ProjectStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/ProjectStatusCode422.java index 5be173d7..35e1f730 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/ProjectStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/ProjectStatusCode422.java @@ -10,8 +10,8 @@ * ProjectStatusCode422 — generated wire type ('projects' spec, components/schemas * 'ProjectStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ProjectStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_RestApiErrorItem.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_RestApiErrorItem.java index ac4000b6..e82c3f69 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_RestApiErrorItem.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_RestApiErrorItem.java @@ -10,8 +10,8 @@ * Types_StatusCodes_RestApiErrorItem — generated wire type ('projects' spec, components/schemas * 'Types.StatusCodes.RestApiErrorItem'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_RestApiErrorItem { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_StatusCode401.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_StatusCode401.java index b869cadb..aeafdd92 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_StatusCode401.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_StatusCode401.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode401 — generated wire type ('projects' spec, components/schemas * 'Types.StatusCodes.StatusCode401'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode401 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_StatusCode403.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_StatusCode403.java index d73cac09..fad38e1b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_StatusCode403.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_StatusCode403.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode403 — generated wire type ('projects' spec, components/schemas * 'Types.StatusCodes.StatusCode403'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode403 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_StatusCode404.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_StatusCode404.java index c6fb5f22..53701a62 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_StatusCode404.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/projects/Types_StatusCodes_StatusCode404.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode404 — generated wire type ('projects' spec, components/schemas * 'Types.StatusCodes.StatusCode404'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode404 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/NewPubSubToken.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/NewPubSubToken.java index f52b2d50..422570a4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/NewPubSubToken.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/NewPubSubToken.java @@ -9,8 +9,8 @@ /** * NewPubSubToken — generated wire type ('pubsub' spec, components/schemas 'NewPubSubToken'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class NewPubSubToken { public Long ttl; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubPermissionWithRead.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubPermissionWithRead.java index 08e9e1a9..94984bda 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubPermissionWithRead.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubPermissionWithRead.java @@ -10,8 +10,8 @@ * PubSubPermissionWithRead — generated wire type ('pubsub' spec, components/schemas * 'PubSubPermissionWithRead'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PubSubPermissionWithRead { public Boolean read; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubPermissionWithWrite.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubPermissionWithWrite.java index 979c257b..ab1cd216 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubPermissionWithWrite.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubPermissionWithWrite.java @@ -10,8 +10,8 @@ * PubSubPermissionWithWrite — generated wire type ('pubsub' spec, components/schemas * 'PubSubPermissionWithWrite'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PubSubPermissionWithWrite { public Boolean read; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubToken.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubToken.java index c0f0fac4..d4c745b8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubToken.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubToken.java @@ -9,8 +9,8 @@ /** * PubSubToken — generated wire type ('pubsub' spec, components/schemas 'PubSubToken'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PubSubToken { public String token; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubToken422Error.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubToken422Error.java index e4d876c4..d171a21d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubToken422Error.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/PubSubToken422Error.java @@ -10,8 +10,8 @@ * PubSubToken422Error — generated wire type ('pubsub' spec, components/schemas * 'PubSubToken422Error'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PubSubToken422Error { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_RestApiErrorItem.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_RestApiErrorItem.java index 89459257..198c7fd8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_RestApiErrorItem.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_RestApiErrorItem.java @@ -10,8 +10,8 @@ * Types_StatusCodes_RestApiErrorItem — generated wire type ('pubsub' spec, components/schemas * 'Types.StatusCodes.RestApiErrorItem'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_RestApiErrorItem { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_StatusCode400.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_StatusCode400.java index 7134315f..562192bc 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_StatusCode400.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_StatusCode400.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode400 — generated wire type ('pubsub' spec, components/schemas * 'Types.StatusCodes.StatusCode400'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode400 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_StatusCode401.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_StatusCode401.java index 956276e3..dada2280 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_StatusCode401.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_StatusCode401.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode401 — generated wire type ('pubsub' spec, components/schemas * 'Types.StatusCodes.StatusCode401'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode401 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_StatusCode500.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_StatusCode500.java index 4c00d98f..88b967de 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_StatusCode500.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/pubsub/Types_StatusCodes_StatusCode500.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode500 — generated wire type ('pubsub' spec, components/schemas * 'Types.StatusCodes.StatusCode500'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode500 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AddNumberGroupMembershipRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AddNumberGroupMembershipRequest.java index 363c95c1..e9bb20ab 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AddNumberGroupMembershipRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AddNumberGroupMembershipRequest.java @@ -10,8 +10,8 @@ * AddNumberGroupMembershipRequest — generated wire type ('relay_rest' spec, components/schemas * 'AddNumberGroupMembershipRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AddNumberGroupMembershipRequest { public String phone_number_id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Address.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Address.java index db7f7224..d304e93b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Address.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Address.java @@ -9,8 +9,8 @@ /** * Address — generated wire type ('relay_rest' spec, components/schemas 'Address'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Address { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AddressListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AddressListResponse.java index 4d9e0dbe..357925e7 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AddressListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AddressListResponse.java @@ -10,8 +10,8 @@ * AddressListResponse — generated wire type ('relay_rest' spec, components/schemas * 'AddressListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AddressListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AddressResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AddressResponse.java index 48a9c1f3..888f7af6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AddressResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AddressResponse.java @@ -9,8 +9,8 @@ /** * AddressResponse — generated wire type ('relay_rest' spec, components/schemas 'AddressResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AddressResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AssignedNumber.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AssignedNumber.java index 1e646401..1b06d4c0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AssignedNumber.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AssignedNumber.java @@ -9,8 +9,8 @@ /** * AssignedNumber — generated wire type ('relay_rest' spec, components/schemas 'AssignedNumber'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AssignedNumber { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AssignedNumberListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AssignedNumberListResponse.java index aed8fbf8..ba436cbb 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AssignedNumberListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AssignedNumberListResponse.java @@ -10,8 +10,8 @@ * AssignedNumberListResponse — generated wire type ('relay_rest' spec, components/schemas * 'AssignedNumberListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AssignedNumberListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AssignedPhoneNumber.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AssignedPhoneNumber.java index 1fcdcf82..d5ad778e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AssignedPhoneNumber.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AssignedPhoneNumber.java @@ -10,8 +10,8 @@ * AssignedPhoneNumber — generated wire type ('relay_rest' spec, components/schemas * 'AssignedPhoneNumber'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AssignedPhoneNumber { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AvailablePhoneNumber.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AvailablePhoneNumber.java index 36f1cb3e..1b5ee332 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AvailablePhoneNumber.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AvailablePhoneNumber.java @@ -10,8 +10,8 @@ * AvailablePhoneNumber — generated wire type ('relay_rest' spec, components/schemas * 'AvailablePhoneNumber'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AvailablePhoneNumber { public String number; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AvailablePhoneNumbersResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AvailablePhoneNumbersResponse.java index a08b8050..45ed8167 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AvailablePhoneNumbersResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/AvailablePhoneNumbersResponse.java @@ -10,8 +10,8 @@ * AvailablePhoneNumbersResponse — generated wire type ('relay_rest' spec, components/schemas * 'AvailablePhoneNumbersResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AvailablePhoneNumbersResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Brand.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Brand.java index a577751e..e9b48ab8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Brand.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Brand.java @@ -9,8 +9,8 @@ /** * Brand — generated wire type ('relay_rest' spec, components/schemas 'Brand'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Brand { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/BrandListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/BrandListResponse.java index c0dabbf1..9e8521fe 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/BrandListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/BrandListResponse.java @@ -10,8 +10,8 @@ * BrandListResponse — generated wire type ('relay_rest' spec, components/schemas * 'BrandListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class BrandListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/BrandResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/BrandResponse.java index 71ca8b34..a83d0c66 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/BrandResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/BrandResponse.java @@ -9,8 +9,8 @@ /** * BrandResponse — generated wire type ('relay_rest' spec, components/schemas 'BrandResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class BrandResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Campaign.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Campaign.java index 75b96ca6..6b32a3e8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Campaign.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Campaign.java @@ -9,8 +9,8 @@ /** * Campaign — generated wire type ('relay_rest' spec, components/schemas 'Campaign'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Campaign { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CampaignListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CampaignListResponse.java index cad3348a..90fbe5e5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CampaignListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CampaignListResponse.java @@ -10,8 +10,8 @@ * CampaignListResponse — generated wire type ('relay_rest' spec, components/schemas * 'CampaignListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CampaignListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CampaignResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CampaignResponse.java index 180bbee0..fccd2338 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CampaignResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CampaignResponse.java @@ -10,8 +10,8 @@ * CampaignResponse — generated wire type ('relay_rest' spec, components/schemas * 'CampaignResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CampaignResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CarrierLookupInfo.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CarrierLookupInfo.java index 1d44b86e..276d0e07 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CarrierLookupInfo.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CarrierLookupInfo.java @@ -10,8 +10,8 @@ * CarrierLookupInfo — generated wire type ('relay_rest' spec, components/schemas * 'CarrierLookupInfo'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CarrierLookupInfo { public String lrn; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CnamInfo.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CnamInfo.java index 5991cd35..c3270a21 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CnamInfo.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CnamInfo.java @@ -9,8 +9,8 @@ /** * CnamInfo — generated wire type ('relay_rest' spec, components/schemas 'CnamInfo'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CnamInfo { public String caller_id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateAddressRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateAddressRequest.java index 6c826cae..854c9e7a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateAddressRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateAddressRequest.java @@ -10,8 +10,8 @@ * CreateAddressRequest — generated wire type ('relay_rest' spec, components/schemas * 'CreateAddressRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateAddressRequest { public String label; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateCspBrandRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateCspBrandRequest.java index 62117361..6d69cb0d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateCspBrandRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateCspBrandRequest.java @@ -10,8 +10,8 @@ * CreateCspBrandRequest — generated wire type ('relay_rest' spec, components/schemas * 'CreateCspBrandRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateCspBrandRequest { public Boolean csp_self_registered; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateDomainApplicationRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateDomainApplicationRequest.java index 0f1570da..bdf477d3 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateDomainApplicationRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateDomainApplicationRequest.java @@ -10,8 +10,8 @@ * CreateDomainApplicationRequest — generated wire type ('relay_rest' spec, components/schemas * 'CreateDomainApplicationRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateDomainApplicationRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateManagedBrandRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateManagedBrandRequest.java index 7d3721f9..ccba96d5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateManagedBrandRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateManagedBrandRequest.java @@ -10,8 +10,8 @@ * CreateManagedBrandRequest — generated wire type ('relay_rest' spec, components/schemas * 'CreateManagedBrandRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateManagedBrandRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateManagedCampaignRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateManagedCampaignRequest.java index 83ae799b..c788caa0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateManagedCampaignRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateManagedCampaignRequest.java @@ -10,8 +10,8 @@ * CreateManagedCampaignRequest — generated wire type ('relay_rest' spec, components/schemas * 'CreateManagedCampaignRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateManagedCampaignRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateNumberGroupRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateNumberGroupRequest.java index 9c099806..66a48c05 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateNumberGroupRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateNumberGroupRequest.java @@ -10,8 +10,8 @@ * CreateNumberGroupRequest — generated wire type ('relay_rest' spec, components/schemas * 'CreateNumberGroupRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateNumberGroupRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateOrderRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateOrderRequest.java index afe3be04..b85e4e18 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateOrderRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateOrderRequest.java @@ -10,8 +10,8 @@ * CreateOrderRequest — generated wire type ('relay_rest' spec, components/schemas * 'CreateOrderRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateOrderRequest { public java.util.List phone_numbers; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreatePartnerCampaignRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreatePartnerCampaignRequest.java index 81fe0fc4..af0e8f21 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreatePartnerCampaignRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreatePartnerCampaignRequest.java @@ -10,8 +10,8 @@ * CreatePartnerCampaignRequest — generated wire type ('relay_rest' spec, components/schemas * 'CreatePartnerCampaignRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreatePartnerCampaignRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateQueueRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateQueueRequest.java index 652a4cdd..bca5d490 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateQueueRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateQueueRequest.java @@ -10,8 +10,8 @@ * CreateQueueRequest — generated wire type ('relay_rest' spec, components/schemas * 'CreateQueueRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateQueueRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateSipEndpointRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateSipEndpointRequest.java index e15f1013..b5339119 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateSipEndpointRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateSipEndpointRequest.java @@ -10,8 +10,8 @@ * CreateSipEndpointRequest — generated wire type ('relay_rest' spec, components/schemas * 'CreateSipEndpointRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateSipEndpointRequest { public String username; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateVerifiedCallerIDRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateVerifiedCallerIDRequest.java index a147b57a..bb640c21 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateVerifiedCallerIDRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/CreateVerifiedCallerIDRequest.java @@ -10,8 +10,8 @@ * CreateVerifiedCallerIDRequest — generated wire type ('relay_rest' spec, components/schemas * 'CreateVerifiedCallerIDRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateVerifiedCallerIDRequest { public String number; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/DomainApplication.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/DomainApplication.java index 42659d18..e8315908 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/DomainApplication.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/DomainApplication.java @@ -10,8 +10,8 @@ * DomainApplication — generated wire type ('relay_rest' spec, components/schemas * 'DomainApplication'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DomainApplication { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/DomainApplicationListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/DomainApplicationListResponse.java index cd5c8a54..ee2d236e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/DomainApplicationListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/DomainApplicationListResponse.java @@ -10,8 +10,8 @@ * DomainApplicationListResponse — generated wire type ('relay_rest' spec, components/schemas * 'DomainApplicationListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DomainApplicationListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/DomainApplicationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/DomainApplicationResponse.java index e256c558..c096783f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/DomainApplicationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/DomainApplicationResponse.java @@ -10,8 +10,8 @@ * DomainApplicationResponse — generated wire type ('relay_rest' spec, components/schemas * 'DomainApplicationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DomainApplicationResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ImportPhoneNumberRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ImportPhoneNumberRequest.java index cee576cd..547eb825 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ImportPhoneNumberRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ImportPhoneNumberRequest.java @@ -10,8 +10,8 @@ * ImportPhoneNumberRequest — generated wire type ('relay_rest' spec, components/schemas * 'ImportPhoneNumberRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ImportPhoneNumberRequest { public String number; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MembershipPhoneNumber.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MembershipPhoneNumber.java index 5e979d21..4199f64b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MembershipPhoneNumber.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MembershipPhoneNumber.java @@ -10,8 +10,8 @@ * MembershipPhoneNumber — generated wire type ('relay_rest' spec, components/schemas * 'MembershipPhoneNumber'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class MembershipPhoneNumber { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaRequest.java index efd370c7..be4858c8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaRequest.java @@ -9,8 +9,8 @@ /** * MfaRequest — generated wire type ('relay_rest' spec, components/schemas 'MfaRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class MfaRequest { public String to; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaResponse.java index ec5accd8..bdec7929 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaResponse.java @@ -9,8 +9,8 @@ /** * MfaResponse — generated wire type ('relay_rest' spec, components/schemas 'MfaResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class MfaResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaVerifyRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaVerifyRequest.java index e0a5a1bf..a062974c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaVerifyRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaVerifyRequest.java @@ -10,8 +10,8 @@ * MfaVerifyRequest — generated wire type ('relay_rest' spec, components/schemas * 'MfaVerifyRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class MfaVerifyRequest { public String token; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaVerifyResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaVerifyResponse.java index 0c519127..ba345783 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaVerifyResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/MfaVerifyResponse.java @@ -10,8 +10,8 @@ * MfaVerifyResponse — generated wire type ('relay_rest' spec, components/schemas * 'MfaVerifyResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class MfaVerifyResponse { public Boolean success; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroup.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroup.java index c76b50f4..b1afbb5b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroup.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroup.java @@ -9,8 +9,8 @@ /** * NumberGroup — generated wire type ('relay_rest' spec, components/schemas 'NumberGroup'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class NumberGroup { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupListResponse.java index cbbe4e86..f13f77c2 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupListResponse.java @@ -10,8 +10,8 @@ * NumberGroupListResponse — generated wire type ('relay_rest' spec, components/schemas * 'NumberGroupListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class NumberGroupListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupMembership.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupMembership.java index f1ba8f14..ec32f765 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupMembership.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupMembership.java @@ -10,8 +10,8 @@ * NumberGroupMembership — generated wire type ('relay_rest' spec, components/schemas * 'NumberGroupMembership'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class NumberGroupMembership { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupMembershipListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupMembershipListResponse.java index a78d0391..ed936a81 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupMembershipListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupMembershipListResponse.java @@ -10,8 +10,8 @@ * NumberGroupMembershipListResponse — generated wire type ('relay_rest' spec, components/schemas * 'NumberGroupMembershipListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class NumberGroupMembershipListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupMembershipResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupMembershipResponse.java index d2ca7dc3..bc6a57aa 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupMembershipResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupMembershipResponse.java @@ -10,8 +10,8 @@ * NumberGroupMembershipResponse — generated wire type ('relay_rest' spec, components/schemas * 'NumberGroupMembershipResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class NumberGroupMembershipResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupResponse.java index 07675af5..df289a3c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/NumberGroupResponse.java @@ -10,8 +10,8 @@ * NumberGroupResponse — generated wire type ('relay_rest' spec, components/schemas * 'NumberGroupResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class NumberGroupResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Order.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Order.java index 1142cbd3..b206a0d2 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Order.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Order.java @@ -9,8 +9,8 @@ /** * Order — generated wire type ('relay_rest' spec, components/schemas 'Order'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Order { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/OrderListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/OrderListResponse.java index b4c2b9ef..152c83d5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/OrderListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/OrderListResponse.java @@ -10,8 +10,8 @@ * OrderListResponse — generated wire type ('relay_rest' spec, components/schemas * 'OrderListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class OrderListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/OrderResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/OrderResponse.java index 85003a86..1a4ae68e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/OrderResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/OrderResponse.java @@ -9,8 +9,8 @@ /** * OrderResponse — generated wire type ('relay_rest' spec, components/schemas 'OrderResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class OrderResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PaginationLinks.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PaginationLinks.java index 02c94ec5..32b1c464 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PaginationLinks.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PaginationLinks.java @@ -9,8 +9,8 @@ /** * PaginationLinks — generated wire type ('relay_rest' spec, components/schemas 'PaginationLinks'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PaginationLinks { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumber.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumber.java index 451944ea..31cf893c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumber.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumber.java @@ -9,8 +9,8 @@ /** * PhoneNumber — generated wire type ('relay_rest' spec, components/schemas 'PhoneNumber'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PhoneNumber { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberCapabilities.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberCapabilities.java index cdad8e69..fa24d1de 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberCapabilities.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberCapabilities.java @@ -10,8 +10,8 @@ * PhoneNumberCapabilities — generated wire type ('relay_rest' spec, components/schemas * 'PhoneNumberCapabilities'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PhoneNumberCapabilities { public Boolean voice; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberListResponse.java index 5a291a3b..4dcbf1ff 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberListResponse.java @@ -10,8 +10,8 @@ * PhoneNumberListResponse — generated wire type ('relay_rest' spec, components/schemas * 'PhoneNumberListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PhoneNumberListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberLookupResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberLookupResponse.java index 61527cb3..2aae066e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberLookupResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberLookupResponse.java @@ -10,8 +10,8 @@ * PhoneNumberLookupResponse — generated wire type ('relay_rest' spec, components/schemas * 'PhoneNumberLookupResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PhoneNumberLookupResponse { public Long country_code_number; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberResponse.java index c270e0de..438c05f3 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PhoneNumberResponse.java @@ -10,8 +10,8 @@ * PhoneNumberResponse — generated wire type ('relay_rest' spec, components/schemas * 'PhoneNumberResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PhoneNumberResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PstnRecording.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PstnRecording.java index 8d4b15b7..c7a599fd 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PstnRecording.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PstnRecording.java @@ -9,8 +9,8 @@ /** * PstnRecording — generated wire type ('relay_rest' spec, components/schemas 'PstnRecording'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PstnRecording { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PurchasePhoneNumberRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PurchasePhoneNumberRequest.java index 7e8c1423..02158204 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PurchasePhoneNumberRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/PurchasePhoneNumberRequest.java @@ -10,8 +10,8 @@ * PurchasePhoneNumberRequest — generated wire type ('relay_rest' spec, components/schemas * 'PurchasePhoneNumberRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PurchasePhoneNumberRequest { public String number; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Queue.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Queue.java index 414684b2..dc0891c5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Queue.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Queue.java @@ -9,8 +9,8 @@ /** * Queue — generated wire type ('relay_rest' spec, components/schemas 'Queue'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Queue { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueListResponse.java index a56bc267..5ee702fd 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueListResponse.java @@ -10,8 +10,8 @@ * QueueListResponse — generated wire type ('relay_rest' spec, components/schemas * 'QueueListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class QueueListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueMember.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueMember.java index 5085a491..7045ac56 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueMember.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueMember.java @@ -9,8 +9,8 @@ /** * QueueMember — generated wire type ('relay_rest' spec, components/schemas 'QueueMember'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class QueueMember { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueMemberListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueMemberListResponse.java index b885462f..dc8fb730 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueMemberListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueMemberListResponse.java @@ -10,8 +10,8 @@ * QueueMemberListResponse — generated wire type ('relay_rest' spec, components/schemas * 'QueueMemberListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class QueueMemberListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueMemberResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueMemberResponse.java index f24b4203..b81abe4c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueMemberResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueMemberResponse.java @@ -10,8 +10,8 @@ * QueueMemberResponse — generated wire type ('relay_rest' spec, components/schemas * 'QueueMemberResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class QueueMemberResponse { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueResponse.java index 5c5004c4..915f5c4c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/QueueResponse.java @@ -9,8 +9,8 @@ /** * QueueResponse — generated wire type ('relay_rest' spec, components/schemas 'QueueResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class QueueResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/RecordingListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/RecordingListResponse.java index ff6686c0..9b076540 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/RecordingListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/RecordingListResponse.java @@ -10,8 +10,8 @@ * RecordingListResponse — generated wire type ('relay_rest' spec, components/schemas * 'RecordingListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RecordingListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ShortCode.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ShortCode.java index 4bc6c6cc..719099c8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ShortCode.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ShortCode.java @@ -9,8 +9,8 @@ /** * ShortCode — generated wire type ('relay_rest' spec, components/schemas 'ShortCode'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ShortCode { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ShortCodeListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ShortCodeListResponse.java index fd033175..2333dac2 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ShortCodeListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ShortCodeListResponse.java @@ -10,8 +10,8 @@ * ShortCodeListResponse — generated wire type ('relay_rest' spec, components/schemas * 'ShortCodeListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ShortCodeListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ShortCodeResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ShortCodeResponse.java index fa4f87b2..ed5b9277 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ShortCodeResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/ShortCodeResponse.java @@ -10,8 +10,8 @@ * ShortCodeResponse — generated wire type ('relay_rest' spec, components/schemas * 'ShortCodeResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ShortCodeResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipEndpoint.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipEndpoint.java index 08c528ff..7ec9440e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipEndpoint.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipEndpoint.java @@ -9,8 +9,8 @@ /** * SipEndpoint — generated wire type ('relay_rest' spec, components/schemas 'SipEndpoint'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipEndpoint { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipEndpointListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipEndpointListResponse.java index 57febd55..84ce4125 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipEndpointListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipEndpointListResponse.java @@ -10,8 +10,8 @@ * SipEndpointListResponse — generated wire type ('relay_rest' spec, components/schemas * 'SipEndpointListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipEndpointListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipEndpointResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipEndpointResponse.java index e37c2d04..8cf77ab2 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipEndpointResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipEndpointResponse.java @@ -10,8 +10,8 @@ * SipEndpointResponse — generated wire type ('relay_rest' spec, components/schemas * 'SipEndpointResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipEndpointResponse { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipProfileResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipProfileResponse.java index 8735fd3a..6ce4c065 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipProfileResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipProfileResponse.java @@ -10,8 +10,8 @@ * SipProfileResponse — generated wire type ('relay_rest' spec, components/schemas * 'SipProfileResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipProfileResponse { public String domain; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipRecording.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipRecording.java index 65a8b48d..22de645f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipRecording.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/SipRecording.java @@ -9,8 +9,8 @@ /** * SipRecording — generated wire type ('relay_rest' spec, components/schemas 'SipRecording'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipRecording { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_SpaceApiErrorItem.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_SpaceApiErrorItem.java index 09976fcb..0db8641c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_SpaceApiErrorItem.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_SpaceApiErrorItem.java @@ -10,8 +10,8 @@ * Types_StatusCodes_SpaceApiErrorItem — generated wire type ('relay_rest' spec, components/schemas * 'Types.StatusCodes.SpaceApiErrorItem'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_SpaceApiErrorItem { public String detail; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode400.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode400.java index 73b25a63..97d50394 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode400.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode400.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode400 — generated wire type ('relay_rest' spec, components/schemas * 'Types.StatusCodes.StatusCode400'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode400 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode401.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode401.java index 2be15fc5..c32a8fbb 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode401.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode401.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode401 — generated wire type ('relay_rest' spec, components/schemas * 'Types.StatusCodes.StatusCode401'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode401 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode404.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode404.java index d28f2274..381c93a5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode404.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode404.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode404 — generated wire type ('relay_rest' spec, components/schemas * 'Types.StatusCodes.StatusCode404'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode404 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode500.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode500.java index 3da4541b..a21fc39e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode500.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_StatusCode500.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode500 — generated wire type ('relay_rest' spec, components/schemas * 'Types.StatusCodes.StatusCode500'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode500 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_ValidationError.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_ValidationError.java index 78d5f428..5a0dfe47 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_ValidationError.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/Types_StatusCodes_ValidationError.java @@ -10,8 +10,8 @@ * Types_StatusCodes_ValidationError — generated wire type ('relay_rest' spec, components/schemas * 'Types.StatusCodes.ValidationError'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_ValidationError { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateCampaignRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateCampaignRequest.java index e137d85c..bd9225f8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateCampaignRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateCampaignRequest.java @@ -10,8 +10,8 @@ * UpdateCampaignRequest — generated wire type ('relay_rest' spec, components/schemas * 'UpdateCampaignRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UpdateCampaignRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateDomainApplicationRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateDomainApplicationRequest.java index 845fe1ae..496865da 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateDomainApplicationRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateDomainApplicationRequest.java @@ -10,8 +10,8 @@ * UpdateDomainApplicationRequest — generated wire type ('relay_rest' spec, components/schemas * 'UpdateDomainApplicationRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UpdateDomainApplicationRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateNumberGroupRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateNumberGroupRequest.java index 14cfa76a..bdc76132 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateNumberGroupRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateNumberGroupRequest.java @@ -10,8 +10,8 @@ * UpdateNumberGroupRequest — generated wire type ('relay_rest' spec, components/schemas * 'UpdateNumberGroupRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UpdateNumberGroupRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdatePhoneNumberRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdatePhoneNumberRequest.java index a51f1993..033962b6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdatePhoneNumberRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdatePhoneNumberRequest.java @@ -10,8 +10,8 @@ * UpdatePhoneNumberRequest — generated wire type ('relay_rest' spec, components/schemas * 'UpdatePhoneNumberRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UpdatePhoneNumberRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateQueueRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateQueueRequest.java index 1c179439..2e32e10b 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateQueueRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateQueueRequest.java @@ -10,8 +10,8 @@ * UpdateQueueRequest — generated wire type ('relay_rest' spec, components/schemas * 'UpdateQueueRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UpdateQueueRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateShortCodeRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateShortCodeRequest.java index d3d60444..9c6fefee 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateShortCodeRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateShortCodeRequest.java @@ -10,8 +10,8 @@ * UpdateShortCodeRequest — generated wire type ('relay_rest' spec, components/schemas * 'UpdateShortCodeRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UpdateShortCodeRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateSipEndpointRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateSipEndpointRequest.java index 2ccdd948..de745d3c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateSipEndpointRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateSipEndpointRequest.java @@ -10,8 +10,8 @@ * UpdateSipEndpointRequest — generated wire type ('relay_rest' spec, components/schemas * 'UpdateSipEndpointRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UpdateSipEndpointRequest { public String username; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateSipProfileRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateSipProfileRequest.java index 0558f8da..842737e3 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateSipProfileRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateSipProfileRequest.java @@ -10,8 +10,8 @@ * UpdateSipProfileRequest — generated wire type ('relay_rest' spec, components/schemas * 'UpdateSipProfileRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UpdateSipProfileRequest { public String domain_identifier; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateVerifiedCallerIDRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateVerifiedCallerIDRequest.java index f8fb64af..b78ec192 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateVerifiedCallerIDRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/UpdateVerifiedCallerIDRequest.java @@ -10,8 +10,8 @@ * UpdateVerifiedCallerIDRequest — generated wire type ('relay_rest' spec, components/schemas * 'UpdateVerifiedCallerIDRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UpdateVerifiedCallerIDRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifiedCallerID.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifiedCallerID.java index 0a33dd3b..30283434 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifiedCallerID.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifiedCallerID.java @@ -10,8 +10,8 @@ * VerifiedCallerID — generated wire type ('relay_rest' spec, components/schemas * 'VerifiedCallerID'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class VerifiedCallerID { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifiedCallerIDListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifiedCallerIDListResponse.java index 18116326..06b95316 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifiedCallerIDListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifiedCallerIDListResponse.java @@ -10,8 +10,8 @@ * VerifiedCallerIDListResponse — generated wire type ('relay_rest' spec, components/schemas * 'VerifiedCallerIDListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class VerifiedCallerIDListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifiedCallerIDResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifiedCallerIDResponse.java index aff520ed..c2393bfa 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifiedCallerIDResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifiedCallerIDResponse.java @@ -10,8 +10,8 @@ * VerifiedCallerIDResponse — generated wire type ('relay_rest' spec, components/schemas * 'VerifiedCallerIDResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class VerifiedCallerIDResponse { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifyCallerIDRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifyCallerIDRequest.java index 220920c7..a12e9f25 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifyCallerIDRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/VerifyCallerIDRequest.java @@ -10,8 +10,8 @@ * VerifyCallerIDRequest — generated wire type ('relay_rest' spec, components/schemas * 'VerifyCallerIDRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class VerifyCallerIDRequest { public String verification_code; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/WebRtcRecording.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/WebRtcRecording.java index 67f7b8c4..1cb2a2e1 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/WebRtcRecording.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/relayrest/WebRtcRecording.java @@ -9,8 +9,8 @@ /** * WebRtcRecording — generated wire type ('relay_rest' spec, components/schemas 'WebRtcRecording'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class WebRtcRecording { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptConversationTurn.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptConversationTurn.java index 9df3d181..24863a4c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptConversationTurn.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptConversationTurn.java @@ -10,8 +10,8 @@ * PostPromptConversationTurn — generated wire type ('swml_webhooks' spec, components/schemas * 'PostPromptConversationTurn'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptConversationTurn { public String role; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptData.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptData.java index 497c2d18..354d01c1 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptData.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptData.java @@ -9,8 +9,8 @@ /** * PostPromptData — generated wire type ('swml_webhooks' spec, components/schemas 'PostPromptData'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptData { public String event_type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptFunctionCall.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptFunctionCall.java index 0f2083e2..31711a4c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptFunctionCall.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptFunctionCall.java @@ -10,8 +10,8 @@ * PostPromptFunctionCall — generated wire type ('swml_webhooks' spec, components/schemas * 'PostPromptFunctionCall'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptFunctionCall { public String function; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptParams.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptParams.java index f70cfd7e..638acc75 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptParams.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/PostPromptParams.java @@ -10,8 +10,8 @@ * PostPromptParams — generated wire type ('swml_webhooks' spec, components/schemas * 'PostPromptParams'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptParams { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SignalWireErrorBody.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SignalWireErrorBody.java index 71313e8a..9879f311 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SignalWireErrorBody.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SignalWireErrorBody.java @@ -10,8 +10,8 @@ * SignalWireErrorBody — generated wire type ('swml_webhooks' spec, components/schemas * 'SignalWireErrorBody'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SignalWireErrorBody { public Long code; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwaigArgument.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwaigArgument.java index 67532ef3..8c1a0119 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwaigArgument.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwaigArgument.java @@ -9,8 +9,8 @@ /** * SwaigArgument — generated wire type ('swml_webhooks' spec, components/schemas 'SwaigArgument'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwaigArgument { public java.util.List parsed; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwaigRequestData.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwaigRequestData.java index 9e4c6e3b..e4a64bee 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwaigRequestData.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwaigRequestData.java @@ -10,8 +10,8 @@ * SwaigRequestData — generated wire type ('swml_webhooks' spec, components/schemas * 'SwaigRequestData'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwaigRequestData { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwmlRequestCall.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwmlRequestCall.java index 6605c4d8..af3e5545 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwmlRequestCall.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwmlRequestCall.java @@ -10,8 +10,8 @@ * SwmlRequestCall — generated wire type ('swml_webhooks' spec, components/schemas * 'SwmlRequestCall'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwmlRequestCall { public String call_id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwmlRequestData.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwmlRequestData.java index d46b3cf7..e2db2e07 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwmlRequestData.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/swmlwebhooks/SwmlRequestData.java @@ -10,8 +10,8 @@ * SwmlRequestData — generated wire type ('swml_webhooks' spec, components/schemas * 'SwmlRequestData'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwmlRequestData { public java.util.Map call; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ActiveSession.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ActiveSession.java index 2e77ae7f..7fb6e13f 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ActiveSession.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ActiveSession.java @@ -9,8 +9,8 @@ /** * ActiveSession — generated wire type ('video' spec, components/schemas 'ActiveSession'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ActiveSession { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ChargeDetail.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ChargeDetail.java index 2d576aa8..c075bcb5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ChargeDetail.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ChargeDetail.java @@ -9,8 +9,8 @@ /** * ChargeDetail — generated wire type ('video' spec, components/schemas 'ChargeDetail'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChargeDetail { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Conference.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Conference.java index 250af40d..471f0c4d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Conference.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Conference.java @@ -9,8 +9,8 @@ /** * Conference — generated wire type ('video' spec, components/schemas 'Conference'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Conference { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ConferenceToken.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ConferenceToken.java index e8bfac77..4ce1f517 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ConferenceToken.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ConferenceToken.java @@ -9,8 +9,8 @@ /** * ConferenceToken — generated wire type ('video' spec, components/schemas 'ConferenceToken'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConferenceToken { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateConferenceRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateConferenceRequest.java index 4d551512..a00d26fc 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateConferenceRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateConferenceRequest.java @@ -10,8 +10,8 @@ * CreateConferenceRequest — generated wire type ('video' spec, components/schemas * 'CreateConferenceRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateConferenceRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateRoomRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateRoomRequest.java index f606e314..9be2a9ab 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateRoomRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateRoomRequest.java @@ -9,8 +9,8 @@ /** * CreateRoomRequest — generated wire type ('video' spec, components/schemas 'CreateRoomRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateRoomRequest { public String name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateRoomTokenRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateRoomTokenRequest.java index 0f4699c9..b97f224a 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateRoomTokenRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateRoomTokenRequest.java @@ -10,8 +10,8 @@ * CreateRoomTokenRequest — generated wire type ('video' spec, components/schemas * 'CreateRoomTokenRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateRoomTokenRequest { public String room_name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateStreamRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateStreamRequest.java index 1fd10f3f..c36faca8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateStreamRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/CreateStreamRequest.java @@ -10,8 +10,8 @@ * CreateStreamRequest — generated wire type ('video' spec, components/schemas * 'CreateStreamRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CreateStreamRequest { public String url; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/DiscardedLog.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/DiscardedLog.java index f6b673b1..632ccce0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/DiscardedLog.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/DiscardedLog.java @@ -9,8 +9,8 @@ /** * DiscardedLog — generated wire type ('video' spec, components/schemas 'DiscardedLog'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DiscardedLog { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListConferenceTokensResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListConferenceTokensResponse.java index 8cd6108b..837a40fb 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListConferenceTokensResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListConferenceTokensResponse.java @@ -10,8 +10,8 @@ * ListConferenceTokensResponse — generated wire type ('video' spec, components/schemas * 'ListConferenceTokensResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ListConferenceTokensResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListConferencesResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListConferencesResponse.java index c9d2adab..fbf9eb52 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListConferencesResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListConferencesResponse.java @@ -10,8 +10,8 @@ * ListConferencesResponse — generated wire type ('video' spec, components/schemas * 'ListConferencesResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ListConferencesResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListLogsResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListLogsResponse.java index 54bb33c1..faaaa32e 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListLogsResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListLogsResponse.java @@ -9,8 +9,8 @@ /** * ListLogsResponse — generated wire type ('video' spec, components/schemas 'ListLogsResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ListLogsResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomRecordingEventsResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomRecordingEventsResponse.java index 38125352..a4554cd6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomRecordingEventsResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomRecordingEventsResponse.java @@ -10,8 +10,8 @@ * ListRoomRecordingEventsResponse — generated wire type ('video' spec, components/schemas * 'ListRoomRecordingEventsResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ListRoomRecordingEventsResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomRecordingsResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomRecordingsResponse.java index 6b532827..19329a34 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomRecordingsResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomRecordingsResponse.java @@ -10,8 +10,8 @@ * ListRoomRecordingsResponse — generated wire type ('video' spec, components/schemas * 'ListRoomRecordingsResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ListRoomRecordingsResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionEventsResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionEventsResponse.java index 9545f59e..5cd1f106 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionEventsResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionEventsResponse.java @@ -10,8 +10,8 @@ * ListRoomSessionEventsResponse — generated wire type ('video' spec, components/schemas * 'ListRoomSessionEventsResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ListRoomSessionEventsResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionMembersResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionMembersResponse.java index c6e4aaf6..a60f13d8 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionMembersResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionMembersResponse.java @@ -10,8 +10,8 @@ * ListRoomSessionMembersResponse — generated wire type ('video' spec, components/schemas * 'ListRoomSessionMembersResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ListRoomSessionMembersResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionRecordingsResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionRecordingsResponse.java index 7d8d38d1..37363669 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionRecordingsResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionRecordingsResponse.java @@ -10,8 +10,8 @@ * ListRoomSessionRecordingsResponse — generated wire type ('video' spec, components/schemas * 'ListRoomSessionRecordingsResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ListRoomSessionRecordingsResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionsResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionsResponse.java index 27b72d05..792ab659 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionsResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomSessionsResponse.java @@ -10,8 +10,8 @@ * ListRoomSessionsResponse — generated wire type ('video' spec, components/schemas * 'ListRoomSessionsResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ListRoomSessionsResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomsResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomsResponse.java index 1290ffee..3405aa11 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomsResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListRoomsResponse.java @@ -9,8 +9,8 @@ /** * ListRoomsResponse — generated wire type ('video' spec, components/schemas 'ListRoomsResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ListRoomsResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListStreamsResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListStreamsResponse.java index 3eb1ad8c..2e2848e6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListStreamsResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/ListStreamsResponse.java @@ -10,8 +10,8 @@ * ListStreamsResponse — generated wire type ('video' spec, components/schemas * 'ListStreamsResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ListStreamsResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Log.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Log.java index ab65f851..90128c73 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Log.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Log.java @@ -9,8 +9,8 @@ /** * Log — generated wire type ('video' spec, components/schemas 'Log'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Log { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/PaginationLinks.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/PaginationLinks.java index c9438ccd..d730edb0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/PaginationLinks.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/PaginationLinks.java @@ -9,8 +9,8 @@ /** * PaginationLinks — generated wire type ('video' spec, components/schemas 'PaginationLinks'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PaginationLinks { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomRecording.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomRecording.java index 33d9d1ee..f5bf0247 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomRecording.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomRecording.java @@ -9,8 +9,8 @@ /** * RoomRecording — generated wire type ('video' spec, components/schemas 'RoomRecording'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RoomRecording { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomResponse.java index 2c440a69..bd40b1ac 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomResponse.java @@ -9,8 +9,8 @@ /** * RoomResponse — generated wire type ('video' spec, components/schemas 'RoomResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RoomResponse { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSession.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSession.java index 5de5460f..9eaa98d7 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSession.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSession.java @@ -9,8 +9,8 @@ /** * RoomSession — generated wire type ('video' spec, components/schemas 'RoomSession'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RoomSession { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSessionEvent.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSessionEvent.java index a511fdd9..17ef384c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSessionEvent.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSessionEvent.java @@ -9,8 +9,8 @@ /** * RoomSessionEvent — generated wire type ('video' spec, components/schemas 'RoomSessionEvent'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RoomSessionEvent { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSessionMember.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSessionMember.java index ab071189..698edeb3 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSessionMember.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSessionMember.java @@ -9,8 +9,8 @@ /** * RoomSessionMember — generated wire type ('video' spec, components/schemas 'RoomSessionMember'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RoomSessionMember { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSessionSummary.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSessionSummary.java index 43032086..85f37af9 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSessionSummary.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomSessionSummary.java @@ -9,8 +9,8 @@ /** * RoomSessionSummary — generated wire type ('video' spec, components/schemas 'RoomSessionSummary'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RoomSessionSummary { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomTokenResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomTokenResponse.java index 9d2b4061..228e02a5 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomTokenResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/RoomTokenResponse.java @@ -9,8 +9,8 @@ /** * RoomTokenResponse — generated wire type ('video' spec, components/schemas 'RoomTokenResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RoomTokenResponse { public String token; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Stream.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Stream.java index c5935099..ede333bf 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Stream.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Stream.java @@ -9,8 +9,8 @@ /** * Stream — generated wire type ('video' spec, components/schemas 'Stream'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Stream { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_RestApiErrorItem.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_RestApiErrorItem.java index a637b73d..12268a5d 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_RestApiErrorItem.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_RestApiErrorItem.java @@ -10,8 +10,8 @@ * Types_StatusCodes_RestApiErrorItem — generated wire type ('video' spec, components/schemas * 'Types.StatusCodes.RestApiErrorItem'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_RestApiErrorItem { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode400.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode400.java index b860ba2a..bbf1effd 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode400.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode400.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode400 — generated wire type ('video' spec, components/schemas * 'Types.StatusCodes.StatusCode400'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode400 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode401.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode401.java index 40b2f8dc..e11f173c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode401.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode401.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode401 — generated wire type ('video' spec, components/schemas * 'Types.StatusCodes.StatusCode401'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode401 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode403.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode403.java index 796e7364..aabdb3dc 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode403.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode403.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode403 — generated wire type ('video' spec, components/schemas * 'Types.StatusCodes.StatusCode403'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode403 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode404.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode404.java index ded91734..f6301c96 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode404.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode404.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode404 — generated wire type ('video' spec, components/schemas * 'Types.StatusCodes.StatusCode404'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode404 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode500.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode500.java index 96774392..908d84d4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode500.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/Types_StatusCodes_StatusCode500.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode500 — generated wire type ('video' spec, components/schemas * 'Types.StatusCodes.StatusCode500'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode500 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/UpdateConferenceRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/UpdateConferenceRequest.java index b21438ad..485eccc7 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/UpdateConferenceRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/UpdateConferenceRequest.java @@ -10,8 +10,8 @@ * UpdateConferenceRequest — generated wire type ('video' spec, components/schemas * 'UpdateConferenceRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UpdateConferenceRequest { public String display_name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/UpdateRoomRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/UpdateRoomRequest.java index 303cbea4..32dd5e78 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/UpdateRoomRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/UpdateRoomRequest.java @@ -9,8 +9,8 @@ /** * UpdateRoomRequest — generated wire type ('video' spec, components/schemas 'UpdateRoomRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UpdateRoomRequest { public String display_name; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/UpdateStreamRequest.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/UpdateStreamRequest.java index 8d793089..1a0cf2e6 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/UpdateStreamRequest.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/UpdateStreamRequest.java @@ -10,8 +10,8 @@ * UpdateStreamRequest — generated wire type ('video' spec, components/schemas * 'UpdateStreamRequest'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UpdateStreamRequest { public String url; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/VideoStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/VideoStatusCode422.java index 9fa3cf6a..03223b2c 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/VideoStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/video/VideoStatusCode422.java @@ -9,8 +9,8 @@ /** * VideoStatusCode422 — generated wire type ('video' spec, components/schemas 'VideoStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class VideoStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/ChargeDetail.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/ChargeDetail.java index 9b1e527b..36d7d0ca 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/ChargeDetail.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/ChargeDetail.java @@ -9,8 +9,8 @@ /** * ChargeDetail — generated wire type ('voice' spec, components/schemas 'ChargeDetail'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChargeDetail { public String description; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/DialogflowVoiceLog.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/DialogflowVoiceLog.java index 22d67f7a..e06c4500 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/DialogflowVoiceLog.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/DialogflowVoiceLog.java @@ -9,8 +9,8 @@ /** * DialogflowVoiceLog — generated wire type ('voice' spec, components/schemas 'DialogflowVoiceLog'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DialogflowVoiceLog { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/DiscardedVoiceLog.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/DiscardedVoiceLog.java index 752a38d1..e32a32e0 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/DiscardedVoiceLog.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/DiscardedVoiceLog.java @@ -9,8 +9,8 @@ /** * DiscardedVoiceLog — generated wire type ('voice' spec, components/schemas 'DiscardedVoiceLog'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DiscardedVoiceLog { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/FabricVoiceLog.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/FabricVoiceLog.java index 6ec8579c..d589c926 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/FabricVoiceLog.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/FabricVoiceLog.java @@ -9,8 +9,8 @@ /** * FabricVoiceLog — generated wire type ('voice' spec, components/schemas 'FabricVoiceLog'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FabricVoiceLog { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogEvent.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogEvent.java index 07f9fc21..b3056701 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogEvent.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogEvent.java @@ -9,8 +9,8 @@ /** * LogEvent — generated wire type ('voice' spec, components/schemas 'LogEvent'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LogEvent { public String event_at; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogEventsListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogEventsListResponse.java index 352ffbeb..b4737096 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogEventsListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogEventsListResponse.java @@ -10,8 +10,8 @@ * LogEventsListResponse — generated wire type ('voice' spec, components/schemas * 'LogEventsListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LogEventsListResponse { public java.util.List data; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogListResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogListResponse.java index 232e7bd1..c5402dec 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogListResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogListResponse.java @@ -9,8 +9,8 @@ /** * LogListResponse — generated wire type ('voice' spec, components/schemas 'LogListResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LogListResponse { public java.util.Map links; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogPaginationResponse.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogPaginationResponse.java index 478d1929..13cb9912 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogPaginationResponse.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/LogPaginationResponse.java @@ -10,8 +10,8 @@ * LogPaginationResponse — generated wire type ('voice' spec, components/schemas * 'LogPaginationResponse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LogPaginationResponse { public String self; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/RelayVoiceLog.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/RelayVoiceLog.java index 300a1669..d8fc2634 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/RelayVoiceLog.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/RelayVoiceLog.java @@ -9,8 +9,8 @@ /** * RelayVoiceLog — generated wire type ('voice' spec, components/schemas 'RelayVoiceLog'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RelayVoiceLog { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_RestApiErrorItem.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_RestApiErrorItem.java index 60cf62d6..d547b0b4 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_RestApiErrorItem.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_RestApiErrorItem.java @@ -10,8 +10,8 @@ * Types_StatusCodes_RestApiErrorItem — generated wire type ('voice' spec, components/schemas * 'Types.StatusCodes.RestApiErrorItem'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_RestApiErrorItem { public String type; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode400.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode400.java index 1f527dfa..792b86e9 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode400.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode400.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode400 — generated wire type ('voice' spec, components/schemas * 'Types.StatusCodes.StatusCode400'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode400 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode401.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode401.java index 755feba4..04db58da 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode401.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode401.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode401 — generated wire type ('voice' spec, components/schemas * 'Types.StatusCodes.StatusCode401'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode401 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode404.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode404.java index 323bb3b9..b876d075 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode404.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode404.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode404 — generated wire type ('voice' spec, components/schemas * 'Types.StatusCodes.StatusCode404'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode404 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode422.java index 3cc6a076..245058d1 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode422.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode422 — generated wire type ('voice' spec, components/schemas * 'Types.StatusCodes.StatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode500.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode500.java index bf660a0f..2c9a82af 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode500.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/Types_StatusCodes_StatusCode500.java @@ -10,8 +10,8 @@ * Types_StatusCodes_StatusCode500 — generated wire type ('voice' spec, components/schemas * 'Types.StatusCodes.StatusCode500'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Types_StatusCodes_StatusCode500 { public String error; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/VideoRoomVoiceLog.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/VideoRoomVoiceLog.java index f7a1e912..3947cc14 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/VideoRoomVoiceLog.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/VideoRoomVoiceLog.java @@ -9,8 +9,8 @@ /** * VideoRoomVoiceLog — generated wire type ('voice' spec, components/schemas 'VideoRoomVoiceLog'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class VideoRoomVoiceLog { public String id; diff --git a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/VoiceLogsListStatusCode422.java b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/VoiceLogsListStatusCode422.java index 2dfe4d8a..39c37e11 100644 --- a/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/VoiceLogsListStatusCode422.java +++ b/src/main/java/com/signalwire/sdk/rest/namespaces/generated/types/voice/VoiceLogsListStatusCode422.java @@ -10,8 +10,8 @@ * VoiceLogsListStatusCode422 — generated wire type ('voice' spec, components/schemas * 'VoiceLogsListStatusCode422'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class VoiceLogsListStatusCode422 { public java.util.List errors; diff --git a/src/main/java/com/signalwire/sdk/runtime/ExecutionMode.java b/src/main/java/com/signalwire/sdk/runtime/ExecutionMode.java index 6cf15368..0f2864e5 100644 --- a/src/main/java/com/signalwire/sdk/runtime/ExecutionMode.java +++ b/src/main/java/com/signalwire/sdk/runtime/ExecutionMode.java @@ -3,8 +3,7 @@ /** * Runtime deployment environments the SDK knows about. * - *

      Detected from well-known environment variables set by the hosting platform. Mirrors {@code - * get_execution_mode()} in the Python SDK and {@code detectPlatform()} in the TypeScript SDK. + *

      Detected from well-known environment variables set by the hosting platform. * *

      Use {@link #detect()} to read the actual process environment, or {@link #detect(EnvProvider)} * to pass a test double. @@ -38,9 +37,9 @@ public static ExecutionMode detect() { /** * Detect the execution mode from the given {@link EnvProvider}. * - *

      Detection order matches the Python reference: CGI, Lambda, Google Cloud Functions, Azure - * Functions, then fall back to {@link #SERVER}. Order matters because some environments set - * overlapping variables (e.g. a container running under API Gateway in "Lambda container mode"). + *

      Detection order is CGI, Lambda, Google Cloud Functions, Azure Functions, then fall back to + * {@link #SERVER}. Order matters because some environments set overlapping variables (e.g. a + * container running under API Gateway in "Lambda container mode"). * * @param env environment variable source (injectable for tests). * @return the detected mode. @@ -67,8 +66,7 @@ public static ExecutionMode detect(EnvProvider env) { /** * Cross-language SDK contract: return the execution mode as the canonical - * lower-case-with-underscores string used by every port. Mirrors {@code - * signalwire.core.logging_config.get_execution_mode} in Python: one of {@code "cgi"}, {@code + * lower-case-with-underscores string every SignalWire SDK uses: one of {@code "cgi"}, {@code * "lambda"}, {@code "google_cloud_function"}, {@code "azure_function"}, or {@code "server"}. * * @return canonical mode string detected from the process environment @@ -102,8 +100,7 @@ public static String getExecutionMode(EnvProvider env) { /** * Cross-language SDK contract: true when the process is running inside any serverless / - * short-lived environment (i.e. anything other than {@code "server"}). Mirrors {@code - * signalwire.utils.is_serverless_mode} in Python. + * short-lived environment (i.e. anything other than {@code "server"}). * * @return {@code true} unless the detected mode is {@code "server"}. */ diff --git a/src/main/java/com/signalwire/sdk/runtime/LambdaUrlResolver.java b/src/main/java/com/signalwire/sdk/runtime/LambdaUrlResolver.java index 9bbf9c85..fa9f564a 100644 --- a/src/main/java/com/signalwire/sdk/runtime/LambdaUrlResolver.java +++ b/src/main/java/com/signalwire/sdk/runtime/LambdaUrlResolver.java @@ -20,8 +20,6 @@ * callers (e.g. {@code AgentBase.buildWebhookUrl}) are responsible for appending the agent's route * + endpoint path. This keeps the route-preservation invariant intact regardless of which source * produced the base URL. - * - *

      Mirrors the Lambda branch of {@code get_full_url()} in the Python SDK. */ public final class LambdaUrlResolver { diff --git a/src/main/java/com/signalwire/sdk/runtime/ServerlessAdapter.java b/src/main/java/com/signalwire/sdk/runtime/ServerlessAdapter.java index 4eb57005..056f2460 100644 --- a/src/main/java/com/signalwire/sdk/runtime/ServerlessAdapter.java +++ b/src/main/java/com/signalwire/sdk/runtime/ServerlessAdapter.java @@ -12,13 +12,12 @@ * framework-free {@link Service#handleRequest} dispatch core — the same core the in-process HTTP * server, {@code serve()}, and {@code asRouter()} use. * - *

      Java's Lambda path lives in {@link com.signalwire.sdk.runtime.lambda.LambdaAgentHandler}. This - * adapter adds the remaining platforms the reference (Python {@code serverless_mixin.py}) and the - * PHP reference ({@code Serverless\Adapter}) dispatch: CGI and Google Cloud Functions - * (GCF). Each extracts {@code (method, path, headers, body)} from the platform's shape, calls - * {@link Service#handleRequest}, and marshals the returned {@code (status, headers, body)} triple - * back into the platform's response form — a real dispatched response, never a fall-through to the - * long-running server or an "unsupported" error. + *

      The AWS Lambda path lives in {@link com.signalwire.sdk.runtime.lambda.LambdaAgentHandler}. + * This adapter covers the remaining supported platforms: CGI and Google Cloud + * Functions (GCF). Each extracts {@code (method, path, headers, body)} from the platform's + * shape, calls {@link Service#handleRequest}, and marshals the returned {@code (status, headers, + * body)} triple back into the platform's response form — a real dispatched response, never a + * fall-through to the long-running server or an "unsupported" error. * *

      Following the injectable-env pattern used throughout the runtime package (Java cannot mutate * {@link System#getenv()}), the platform-reading entrypoints take an {@link EnvProvider} and the @@ -42,9 +41,9 @@ public record Response(int status, Map headers, String body) {} /** * Dispatch a Google Cloud Functions invocation through {@link Service#handleRequest}. * - *

      Mirrors Python {@code _handle_google_cloud_function_request} and PHP {@code - * Adapter::handleGcf}: reads the method / path / headers off the request, forwards the body, and - * returns the {@code (status, headers, body)} response the Flask/functions-framework layer emits. + *

      Reads the method / path / headers off the request, forwards the body, and returns the {@code + * (status, headers, body)} response the functions-framework layer emits. {@code Content-Type: + * application/json} is added when the dispatch did not already set one. * * @param agent the SWML service / agent request handler. * @param method the HTTP method (e.g. {@code "POST"}). @@ -66,10 +65,10 @@ public static Response handleGcf( * response to the CGI wire form (a {@code Status:} line, the response headers, a blank line, then * the body). * - *

      Mirrors Python's {@code mode == "cgi"} branch and PHP {@code Adapter::handleCgi}. Path and - * method are read from the supplied {@link EnvProvider} ({@code PATH_INFO} / {@code - * REQUEST_METHOD} — the standard CGI meta-variables); the body is passed explicitly (the real CGI - * runtime reads it from stdin, bounded by {@code CONTENT_LENGTH}). + *

      Path and method are read from the supplied {@link EnvProvider} ({@code PATH_INFO} — falling + * back to {@code REQUEST_URI} with any query string stripped — and {@code REQUEST_METHOD}, the + * standard CGI meta-variables); the body is passed explicitly (the real CGI runtime reads it from + * stdin, bounded by {@code CONTENT_LENGTH}). * * @param agent the SWML service / agent request handler. * @param env the CGI environment (supplies {@code REQUEST_METHOD}, {@code PATH_INFO}). diff --git a/src/main/java/com/signalwire/sdk/runtime/lambda/LambdaAgentHandler.java b/src/main/java/com/signalwire/sdk/runtime/lambda/LambdaAgentHandler.java index 95e8f330..cfd60803 100644 --- a/src/main/java/com/signalwire/sdk/runtime/lambda/LambdaAgentHandler.java +++ b/src/main/java/com/signalwire/sdk/runtime/lambda/LambdaAgentHandler.java @@ -7,7 +7,9 @@ import com.signalwire.sdk.runtime.EnvProvider; import com.signalwire.sdk.runtime.LambdaUrlResolver; import com.signalwire.sdk.swaig.FunctionResult; +import com.signalwire.sdk.swaig.ToolDefinition; import java.lang.reflect.Type; +import java.net.URLDecoder; import java.nio.charset.StandardCharsets; import java.util.Base64; import java.util.LinkedHashMap; @@ -206,6 +208,29 @@ private LambdaResponse handleSwaig(Map event, String method) { 404, gson.toJson(Map.of("error", "Function not found: " + funcName))); } + // Enforce the tool's `secure` flag before dispatch. Composed from the agent's published + // seams so this adapter reaches the same verdict as the in-process endpoint — see + // AgentBase.swaigValidateToken, which that path uses directly. Serverless is not a weaker + // transport, just a different envelope: the credential still rides the query string and the + // call identity still rides the body. An absent token and an absent call_id both fail + // CLOSED — a token can only be checked against a call_id. + ToolDefinition tool = agent.getTools().get(funcName); + if (tool != null && tool.isSecure()) { + Object rawCallId = payload.get("call_id"); + String callId = rawCallId == null ? null : rawCallId.toString(); + if (!agent.validateToolToken(funcName, swaigTokenOf(event), callId)) { + // A refusal is a 200 carrying a FunctionResult body, never an HTTP error status: the + // engine has no handling for a SWAIG refusal status, so the tool reports that it + // cannot execute and the model relays that. + return LambdaResponse.json( + gson.toJson( + new FunctionResult( + "I'm sorry, the security token for this function is invalid or expired. " + + "I cannot execute this action.") + .toMap())); + } + } + Map args = extractParsedArgs(payload); FunctionResult result = agent.onFunctionCall(funcName, args, payload); return LambdaResponse.json(gson.toJson(result.toMap())); @@ -391,6 +416,56 @@ private static Map extractHeaders(Map event) { return new LinkedHashMap<>(); } + /** + * Lift the SWAIG {@code __token} credential out of a lambda event's query string. + * + *

      Reads the PARSED {@code queryStringParameters} mapping first — both the REST API v1 and HTTP + * API v2 payload shapes provide it — and falls back to the raw {@code rawQueryString} for + * payloads that carry only that. A bare {@code token} is accepted as an alias of {@code __token}, + * matching the pair the rendered webhook URL may carry. + */ + private static String swaigTokenOf(Map event) { + Map params = extractQuery(event); + String direct = params.get("__token"); + if (direct != null && !direct.isEmpty()) { + return direct; + } + String alias = params.get("token"); + if (alias != null && !alias.isEmpty()) { + return alias; + } + Object raw = event.get("rawQueryString"); + if (raw == null) { + return null; + } + String fallback = null; + // limit 0 == drop trailing empties; a query ending in "&" yields no extra + // pair, and the eq<=0 guard below discards any empty one regardless. + for (String pair : raw.toString().split("&", 0)) { + int eq = pair.indexOf('='); + if (eq <= 0) { + continue; + } + String key = pair.substring(0, eq); + String value; + try { + value = URLDecoder.decode(pair.substring(eq + 1), StandardCharsets.UTF_8); + } catch (IllegalArgumentException e) { + continue; + } + if (value.isEmpty()) { + continue; + } + if ("__token".equals(key)) { + return value; + } + if ("token".equals(key) && fallback == null) { + fallback = value; + } + } + return fallback; + } + @SuppressWarnings("unchecked") private static Map extractQuery(Map event) { Object q = event.get("queryStringParameters"); diff --git a/src/main/java/com/signalwire/sdk/security/SecurityUtils.java b/src/main/java/com/signalwire/sdk/security/SecurityUtils.java index c4cfb587..3677d41f 100644 --- a/src/main/java/com/signalwire/sdk/security/SecurityUtils.java +++ b/src/main/java/com/signalwire/sdk/security/SecurityUtils.java @@ -15,9 +15,8 @@ /** * Standalone security hygiene utilities. * - *

      These mirror the Python reference's security_utils module (and the TypeScript SDK's - * SecurityUtils) so the same protections are available in every port: keeping credentials out of - * user callbacks and logs, plus a reusable hostname validation check. + *

      Two protections plus a check: keeping credentials out of user callbacks, keeping them out of + * logs, and a reusable hostname validation check. * *

      This is a stateless utility — every method is static and the class is not intended to be * instantiated. diff --git a/src/main/java/com/signalwire/sdk/security/SessionManager.java b/src/main/java/com/signalwire/sdk/security/SessionManager.java index 8d1d8f08..facf4506 100644 --- a/src/main/java/com/signalwire/sdk/security/SessionManager.java +++ b/src/main/java/com/signalwire/sdk/security/SessionManager.java @@ -14,13 +14,12 @@ /** * Session manager for HMAC-SHA256 signed tool tokens. * - *

      Mirrors the reference {@code signalwire.core.security.session_manager.SessionManager}. Tokens - * are self-contained (all data needed for validation is inside the signed token) so validation is - * stateless. The Python reference additionally exposes a set of legacy session-lifecycle methods - * ({@code create_session}/{@code activate_session}/{@code end_session}/{@code - * get/set_session_metadata}); this port keeps a real per-call metadata store (like the Ruby and - * TypeScript ports) so the getter/setter pair round-trips, while activation stays a stateless - * success hook. + *

      Tokens are self-contained — everything needed to validate one is inside the signed token — so + * validation is stateless and no server-side session store has to be consulted or replicated. The + * legacy session-lifecycle methods ({@code createSession} / {@code activateSession} / {@code + * endSession} / {@code get}/{@code setSessionMetadata}) remain: the metadata getter/setter pair is + * backed by a real per-call store so it round-trips, while activation is a stateless success hook + * that keeps no state of its own. * *

      Token wire format. A minted token is the URL-safe Base64 encoding of the DECODED * 5-field, dot-joined string {@code call_id.function_name.expiry.nonce.signature}. The HMAC-SHA256 @@ -31,12 +30,17 @@ */ public class SessionManager { + /** Seconds until a minted token expires when none is specified: 900, i.e. 15 minutes. */ + private static final int DEFAULT_TOKEN_EXPIRY_SECS = 900; + /** - * The signing secret as the reference models it: a STRING. The reference keys its HMAC with - * {@code self.secret_key.encode()} (session_manager.py:79,152) — the UTF-8 bytes of the string — - * and defaults it to {@code secrets.token_hex(32)}, a 64-character hex string. Keeping the string - * (rather than 32 raw bytes) is what makes a token minted by the Python reference validate here - * and vice versa: hex-string bytes and the raw bytes they decode to are DIFFERENT HMAC keys. + * The signing secret, held as a STRING. The HMAC is keyed with this string's UTF-8 BYTES, and the + * generated default is a 64-character hex string. + * + *

      Holding the string rather than the 32 raw bytes it spells out is load-bearing for + * interoperability: the ASCII bytes of a hex string and the raw bytes that string decodes to are + * DIFFERENT HMAC keys, so hex-decoding the secret here would silently produce tokens that no + * other SignalWire SDK — and no other service sharing this secret — can validate. */ private final String secretKey; @@ -51,8 +55,16 @@ public class SessionManager { /** When true, {@link #debugToken(String)} decodes token internals; off by default. */ private volatile boolean debugMode; + /** + * A manager whose tokens expire after the default 900 seconds (15 minutes). + * + *

      Note this is DELIBERATELY different from {@link com.signalwire.sdk.agent.AgentBase}, whose + * own {@code tokenExpirySecs} default is 3600 and is passed through explicitly — an agent's + * tokens live for an hour, a bare {@code SessionManager}'s for fifteen minutes. Pass {@link + * #SessionManager(int)} to choose your own lifetime. + */ public SessionManager() { - this(3600); + this(DEFAULT_TOKEN_EXPIRY_SECS); } public SessionManager(int defaultExpiry) { @@ -60,13 +72,11 @@ public SessionManager(int defaultExpiry) { } /** - * The reference construction contract: {@code SessionManager(token_expiry_secs, secret_key)}. A - * {@code null} secret is generated as a 64-character hex string, matching the reference's {@code - * secrets.token_hex(32)} default. + * Construct a manager with an explicit token lifetime and signing secret. A {@code null} secret + * is generated as a 64-character hex string from 32 {@link SecureRandom} bytes. * - * @param defaultExpiry seconds until minted tokens expire (the {@code token_expiry_secs} param) - * @param secretKey the HMAC signing secret as a string (the {@code secret_key} param); generated - * when {@code null} + * @param defaultExpiry seconds until minted tokens expire + * @param secretKey the HMAC signing secret as a string; generated when {@code null} */ public SessionManager(int defaultExpiry, String secretKey) { this.defaultExpiry = defaultExpiry; @@ -74,7 +84,7 @@ public SessionManager(int defaultExpiry, String secretKey) { this.secret = this.secretKey.getBytes(StandardCharsets.UTF_8); } - /** 32 random bytes rendered as 64 hex characters — the reference's {@code token_hex(32)}. */ + /** 32 random bytes rendered as 64 lower-case hex characters. */ private static String randomHexSecret() { byte[] raw = new byte[32]; new SecureRandom().nextBytes(raw); @@ -87,14 +97,21 @@ private static String randomHexSecret() { } /** - * The HMAC signing secret (the {@code secret_key} construction param). The reference exposes this - * as a public attribute, so a caller that supplied it can read it back. + * The HMAC signing secret. Readable so a caller that let the constructor generate one can capture + * it — a token minted with a generated secret is unvalidatable once the manager is discarded. + * + * @return the signing secret as a string. */ public String getSecretKey() { return secretKey; } - /** Seconds until minted tokens expire (the {@code token_expiry_secs} construction param). */ + /** + * Seconds until minted tokens expire, when {@link #createToken(String, String)} is called without + * an explicit lifetime. + * + * @return the default token lifetime in seconds. + */ public int getTokenExpirySecs() { return defaultExpiry; } @@ -102,21 +119,22 @@ public int getTokenExpirySecs() { /** * Construct a manager with an explicit signing secret supplied as bytes. * - *

      The bytes are interpreted as the UTF-8 encoding of the reference's {@code secret_key} - * STRING, which is how the reference keys its HMAC ({@code self.secret_key.encode()}, - * session_manager.py:79,152). Passing {@code "abc".getBytes(UTF_8)} here is therefore identical - * to passing {@code "abc"} to {@link #SessionManager(int, String)} — and both interoperate with a - * reference-minted token. Prefer the string overload; this one exists for callers already holding - * the encoded form. + *

      The bytes are interpreted as the UTF-8 encoding of the secret STRING, which is what keys the + * HMAC. Passing {@code "abc".getBytes(UTF_8)} here is therefore identical to passing {@code + * "abc"} to {@link #SessionManager(int, String)}. Prefer the string overload; this one exists for + * callers already holding the encoded form. + * + * @param secretKey the UTF-8 bytes of the signing secret. + * @param defaultExpiry seconds until minted tokens expire. */ public SessionManager(byte[] secretKey, int defaultExpiry) { this(defaultExpiry, new String(secretKey, StandardCharsets.UTF_8)); } /** - * The raw HMAC signing secret. Package-private so the security tests can construct a token in the - * exact Python wire format keyed on this manager's secret and assert it validates here (the - * cross-port interop leg of contract #70). Not part of the public API. + * The raw HMAC signing secret, defensively copied. Package-private so the security tests can + * hand-assemble a token in the exact wire format, keyed on this manager's secret, and assert it + * validates here. Not part of the public API. */ byte[] secretBytes() { return secret.clone(); @@ -124,7 +142,7 @@ byte[] secretBytes() { /** * HMAC-SHA256 sign {@code data} with this manager's secret, hex-encoded. Package-private so the - * security tests can build a Python-format token keyed on the same secret. + * security tests can build a wire-format token keyed on the same secret. */ String sign(String data) { return hmacSign(data); @@ -135,6 +153,20 @@ public String createToken(String functionName, String callId) { return createToken(functionName, callId, defaultExpiry); } + /** + * Mint a signed SWAIG-function token scoped to one function and one call. + * + *

      The token is HMAC-SHA256 over {@code call_id:function_name:expiry:nonce}, assembled as five + * dot-separated fields and base64url-encoded WITH its {@code =} padding intact. The padding is + * NOT cosmetic: a strict base64url decoder rejects input whose padding has been stripped, so a + * token emitted without it is undecodable by the services that consume it. Never trim the {@code + * =}. + * + * @param functionName the tool the token authorizes. + * @param callId the call the token is scoped to. + * @param expirySeconds lifetime from now, in seconds. + * @return the encoded token. + */ public String createToken(String functionName, String callId, int expirySeconds) { long expiry = System.currentTimeMillis() / 1000 + expirySeconds; String nonce = randomNonce(); @@ -146,10 +178,15 @@ public String createToken(String functionName, String callId, int expirySeconds) // Decoded token: call_id.function_name.expiry.nonce.signature (5 dot-fields). String token = callId + "." + functionName + "." + expiry + "." + nonce + "." + signature; - // Base64url-encode the whole token for URL safety. - return Base64.getUrlEncoder() - .withoutPadding() - .encodeToString(token.getBytes(StandardCharsets.UTF_8)); + // Base64url-encode the whole token for URL safety, PADDING INTACT. The reference mints with + // `base64.urlsafe_b64encode`, which KEEPS the '=' padding, and validates with + // `base64.urlsafe_b64decode`, which RAISES on a stripped '='. `.withoutPadding()` therefore + // made every token this port minted unusable to the reference and to any port that decodes + // strictly, even though the message and the HMAC were correct. Our own validateToken still + // accepted them because `Base64.getUrlDecoder()` tolerates missing padding — that asymmetry + // is why round-tripping against ourselves could not catch it, and why the TOKEN-INTEROP gate + // validates against the REFERENCE decoder instead. + return Base64.getUrlEncoder().encodeToString(token.getBytes(StandardCharsets.UTF_8)); } /** Validate a signed token. */ @@ -207,21 +244,28 @@ public boolean validateToken(String token, String functionName, String callId) { // Java keeps the existing createToken/validateToken names and projects the // reference names onto them (matching Ruby's alias set). - /** Alias of {@link #createToken(String, String)} — Python's {@code generate_token}. */ + /** Alias of {@link #createToken(String, String)}. */ public String generateToken(String functionName, String callId) { return createToken(functionName, callId); } - /** Alias of {@link #createToken(String, String)} — Python's {@code create_tool_token}. */ + /** Alias of {@link #createToken(String, String)}. */ public String createToolToken(String functionName, String callId) { return createToken(functionName, callId); } /** - * Back-compat alias of {@link #validateToken(String, String, String)} — Python's {@code - * validate_tool_token(function_name, token, call_id)}. Note the reference's parameter order - * ({@code function_name, token, call_id}) differs from {@code validate_token}; this method - * mirrors that reference order and delegates. + * Back-compat alias of {@link #validateToken(String, String, String)}. + * + *

      Careful: the parameter order differs. This method takes {@code + * (functionName, token, callId)} whereas {@link #validateToken} takes {@code (token, + * functionName, callId)}. Both are {@code String}, so swapping them compiles and simply fails + * every validation. + * + * @param functionName the tool the token must authorize. + * @param token the encoded token to check. + * @param callId the call the token must be scoped to. + * @return {@code true} if the token is valid for this function and call. */ public boolean validateToolToken(String functionName, String token, String callId) { return validateToken(token, functionName, callId); @@ -230,9 +274,9 @@ public boolean validateToolToken(String functionName, String token, String callI // ── Session lifecycle (Python parity) ──────────────────────────── /** - * Return the given {@code callId}, or mint a new URL-safe session identifier when none is - * supplied. Mirrors the reference's stateless {@code create_session}: the SDK does not persist - * sessions, it just resolves/creates an identifier callers thread through subsequent operations. + * Return the given {@code callId}, or mint a new URL-safe session identifier (16 random bytes) + * when none is supplied. No session is persisted by this call — it only resolves or creates the + * identifier that callers thread through subsequent operations. */ public String createSession(String callId) { if (callId != null && !callId.isEmpty()) { @@ -266,10 +310,9 @@ public boolean endSession(String callId) { } /** - * Fetch the metadata stored for {@code callId}. The reference is stateless and always returns an - * empty map; this port keeps a real per-session store so the getter/setter pair round-trips, but - * still returns an empty (never null) map for unknown sessions. Returns a copy so callers cannot - * mutate the internal store. + * Fetch the metadata stored for {@code callId} by {@link #setSessionMetadata}. Returns an empty + * (never {@code null}) map for an unknown session, and always a COPY — mutating the returned map + * does not change what is stored. */ public Map getSessionMetadata(String callId) { Map stored = callId == null ? null : sessionMetadata.get(callId); @@ -278,8 +321,8 @@ public Map getSessionMetadata(String callId) { /** * Store a single {@code key}/{@code value} pair in {@code callId}'s metadata, merging with - * anything already recorded for that session. Signature mirrors the reference's {@code - * set_session_metadata(call_id, key, value)}. + * anything already recorded for that session. A {@code null} {@code callId} is a no-op that still + * reports success. {@link #endSession} discards the whole store for a session. */ public boolean setSessionMetadata(String callId, String key, Object value) { if (callId == null) { @@ -297,8 +340,8 @@ public void setDebugMode(boolean debugMode) { /** * Decode a token's components for inspection WITHOUT validating it. Requires {@link * #setDebugMode(boolean)} to have been set {@code true}; otherwise returns {@code {"error": - * "debug mode not enabled"}}, matching the reference. Decodes this port's token format ({@code - * base64url(call_id.function_name.expiry.nonce.signature)}). + * "debug mode not enabled"}} and decodes nothing. Splits the token format {@code + * base64url(call_id.function_name.expiry.nonce.signature)} back into its five fields. */ public Map debugToken(String token) { if (!debugMode) { @@ -377,7 +420,7 @@ private static String truncate(String s) { return s.length() > 8 ? s.substring(0, 8) + "..." : s; } - /** 16 hex characters (8 random bytes), matching Python's {@code secrets.token_hex(8)}. */ + /** 16 lower-case hex characters (8 {@link SecureRandom} bytes). */ private String randomNonce() { byte[] buf = new byte[8]; random.nextBytes(buf); diff --git a/src/main/java/com/signalwire/sdk/security/WebhookFilter.java b/src/main/java/com/signalwire/sdk/security/WebhookFilter.java index d86d42c9..d1e0dcc9 100644 --- a/src/main/java/com/signalwire/sdk/security/WebhookFilter.java +++ b/src/main/java/com/signalwire/sdk/security/WebhookFilter.java @@ -85,16 +85,42 @@ public WebhookFilter(String signingKey, boolean trustProxy) { this.trustProxy = trustProxy; } + /** + * No-op: every setting is supplied to the constructor rather than through filter config. + * + * @param filterConfig the servlet container's filter config (unused). + */ @Override public void init(FilterConfig filterConfig) { // No init-time configuration — all state passed to the constructor. } + /** No-op: the filter holds no resources to release. */ @Override public void destroy() { // No resources to release. } + /** + * Validate the request's SignalWire webhook signature and reject it if it does not check out. + * + *

      Caches the body first so downstream handlers can still read it, then takes the signature + * from {@code X-SignalWire-Signature} (falling back to {@code X-Twilio-Signature}) and validates + * it against the reconstructed URL. A MISSING signature header is rejected exactly like an + * invalid one: HTTP 403 with no body detail, and the chain is not invoked. A non-HTTP request is + * passed through untouched, since it cannot carry a signed webhook. + * + *

      Nothing about the failure is logged — not the signing key, not the presented signature, not + * which branch rejected it — because that detail is what an attacker would use to probe the + * comparison. + * + * @param request the incoming request. + * @param response the response to write a 403 to on rejection. + * @param chain the filter chain, invoked only on a valid signature, with the body-caching + * wrapper. + * @throws IOException if reading the body or writing the response fails. + * @throws ServletException if the downstream chain raises one. + */ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { @@ -206,30 +232,65 @@ public String getCachedBodyAsString() { return new String(cachedBody, cs); } + /** + * A stream over the cached body, so the body can be read again after the filter consumed it. + * + * @return a stream over the cached bytes. + */ @Override public ServletInputStream getInputStream() { ByteArrayInputStream bais = new ByteArrayInputStream(cachedBody); return new ServletInputStream() { + /** + * Read one byte from the cached body. + * + * @return the byte, or {@code -1} at the end. + */ @Override public int read() { return bais.read(); } + /** + * Read a block from the cached body. + * + * @param b the destination buffer. + * @param off offset into the buffer. + * @param len maximum bytes to read. + * @return the number of bytes read, or {@code -1} at the end. + */ @Override public int read(byte[] b, int off, int len) { return bais.read(b, off, len); } + /** + * Whether the cached body has been fully consumed. + * + * @return {@code true} when nothing remains. + */ @Override public boolean isFinished() { return bais.available() == 0; } + /** + * Always ready: the body is already in memory, so a read never blocks. + * + * @return {@code true}. + */ @Override public boolean isReady() { return true; } + /** + * Not supported — the signed-webhook flow is synchronous request/response, so the cached + * stream offers no async path. + * + * @param readListener the listener (ignored). + * @throws UnsupportedOperationException always. + */ @Override public void setReadListener(ReadListener readListener) { // Async I/O not supported on the cached stream; the @@ -241,6 +302,11 @@ public void setReadListener(ReadListener readListener) { }; } + /** + * A reader over the cached body, decoded with the request's declared charset or UTF-8. + * + * @return a reader over the cached bytes. + */ @Override public BufferedReader getReader() { String enc = getCharacterEncoding(); diff --git a/src/main/java/com/signalwire/sdk/security/WebhookValidator.java b/src/main/java/com/signalwire/sdk/security/WebhookValidator.java index e19db7d6..e764510b 100644 --- a/src/main/java/com/signalwire/sdk/security/WebhookValidator.java +++ b/src/main/java/com/signalwire/sdk/security/WebhookValidator.java @@ -39,8 +39,8 @@ * *

        *
      • {@link #validate(String, String, java.util.Map, String, String)} — the framework-free - * decomposed decision core (cross-port contract). Returns a {@code (status, headers, body)} - * reject triple, or {@code null} to let the handler run. + * decomposed decision core. Returns a {@code (status, headers, body)} reject triple, or + * {@code null} to let the handler run. *
      • {@link #validateWebhookSignature(String, String, String, String)} — combined signature * entry point. *
      • {@link #validateRequest(String, String, String, Object)} — legacy @@ -67,10 +67,9 @@ private WebhookValidator() { /** * Framework-free reject response returned by {@link #validate}: an HTTP {@code status}, response - * {@code headers}, and {@code body} string. This is the language-neutral primitive shape every - * port's decomposed webhook-validation core returns (the cross-port analog of Python's {@code - * (int, dict[str, str], str)} tuple, .NET's {@code (int, Dictionary, string)} value-tuple, and a - * Rack/PSGI {@code [status, headers, body]} array). + * {@code headers}, and {@code body} string. Carrying only primitives keeps the validation core + * independent of any web framework — a caller translates this record into whatever its server + * layer expects. * * @param status HTTP status code (always {@code 403} on rejection). * @param headers response headers (empty — no detail is leaked). @@ -79,14 +78,12 @@ private WebhookValidator() { public record WebhookRejection(int status, Map headers, String body) {} /** - * Framework-free webhook-validation decision — the cross-port decomposed core. + * Framework-free webhook-validation decision — the decomposed validation core. * - *

        Takes a request decomposed into language-neutral primitives and returns either a {@code - * (403, {}, "")} reject triple to short-circuit with, or {@code null} to let the handler run. - * Every port implements this same shape (.NET {@code WebhookValidationMiddleware.Validate}, a - * Rack/PSGI middleware {@code [status, headers, body]}, a Hono handler, …); the framework wrapper - * on top of it (Java's {@link WebhookFilter} servlet filter) is the only idiom. This mirrors - * {@code signalwire.core.security.webhook_middleware.validate} in the Python reference. + *

        Takes a request decomposed into primitives and returns either a {@code (403, {}, "")} reject + * triple to short-circuit with, or {@code null} to let the handler run. Because it touches no + * servlet or framework type, it can be driven from any server layer; {@link WebhookFilter} is the + * servlet-filter wrapper around this method. * *

        The {@code headers} map is consulted for the signature header ({@code * X-SignalWire-Signature} or the {@code X-Twilio-Signature} alias); lookup is case-insensitive. @@ -341,7 +338,7 @@ private static boolean safeEquals(String expected, String actual) { *

      • Sort by key (ASCII ascending) using a stable sort so repeated keys preserve * original submission order. *
      • Emit {@code key + value} once per (key, value) pair. - *
      • {@code null} value emits as the empty string (matches JS reference). + *
      • A {@code null} value emits as the empty string, so it still contributes its key. *
      */ private static String sortedConcatParams(List> items) { diff --git a/src/main/java/com/signalwire/sdk/server/AgentServer.java b/src/main/java/com/signalwire/sdk/server/AgentServer.java index 30cc6f47..80e651f8 100644 --- a/src/main/java/com/signalwire/sdk/server/AgentServer.java +++ b/src/main/java/com/signalwire/sdk/server/AgentServer.java @@ -5,6 +5,7 @@ import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.logging.Logger; import com.signalwire.sdk.swaig.FunctionResult; +import com.signalwire.sdk.swaig.ToolDefinition; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpServer; import com.sun.net.httpserver.HttpsConfigurator; @@ -76,9 +77,8 @@ public AgentServer(String host, int port) { } /** - * Full construction contract, mirroring the reference {@code AgentServer(host, port, log_level)}. - * The level is lower-cased and applied to the global logger, exactly as the reference does - * ({@code self.log_level = log_level.lower()}, agent_server.py:63) before creating its logger. + * Full construction contract: bind host, bind port, and log level. The level is lower-cased and + * applied to the global logger before the server's own logger is created. * * @param host host to bind the server to * @param port port to bind the server to @@ -159,7 +159,7 @@ public AgentServer register(AgentBase agent, String route) { autoMapAgentSipUsernames(agent, normalizedRoute); } if (sipRoute != null) { - agent.registerRoutingCallback(serverSipRoutingCallback()); + agent.registerRoutingCallback(this::serverSipRoutingCallback); } } @@ -167,20 +167,27 @@ public AgentServer register(AgentBase agent, String route) { return this; } - /** The unified server-level SIP routing callback (resolves a SIP username to a target route). */ - private BiFunction, Map, String> serverSipRoutingCallback() { - return (body, headers) -> { - String sipUsername = extractSipUsername(body); - if (sipUsername != null) { - String target = sipRoutes.get(sipUsername.toLowerCase(Locale.ROOT)); - if (target != null) { - log.info("Routing SIP request to %s", target); - return target; - } - log.warn("No route found for SIP username: %s", sipUsername); + /** + * The unified server-level SIP routing callback (resolves a SIP username to a target route). + * + *

      Implements the {@code BiFunction} contract directly rather than returning a lambda from a + * factory; the two registration sites bind it with a {@code this::} method reference. + * + * @param body the parsed request body the SIP username is extracted from + * @param headers the request headers (unused; present to satisfy the callback signature) + * @return the target route, or {@code null} when the username maps to nothing + */ + private String serverSipRoutingCallback(Map body, Map headers) { + String sipUsername = extractSipUsername(body); + if (sipUsername != null) { + String target = sipRoutes.get(sipUsername.toLowerCase(Locale.ROOT)); + if (target != null) { + log.info("Routing SIP request to %s", target); + return target; } - return null; - }; + log.warn("No route found for SIP username: %s", sipUsername); + } + return null; } /** Register an agent at its own configured route. */ @@ -211,8 +218,7 @@ public Set getRoutes() { } /** - * Return all registered agents as {@code (route, agent)} pairs. Ported from Python - * AgentServer.get_agents (which returns a list of {@code (route, agent)} tuples). + * Return all registered agents as {@code (route, agent)} pairs. * * @return an unmodifiable list of route/agent entries */ @@ -239,14 +245,22 @@ public AgentServer serveStaticFiles(String directory, String route) { return this; } + /** + * Serve static files at the default route {@code "/"}. + * + * @param directory Filesystem path to the directory containing static files + */ + public AgentServer serveStaticFiles(String directory) { + return serveStaticFiles(directory, "/"); + } + // ============================================================ // HTTPS / TLS // ============================================================ /** - * Serve over HTTPS using an explicit PEM certificate chain and PKCS#8 private key. This is the - * explicit-cert option that parallels Python's {@code SWMLService.serve(ssl_cert=..., - * ssl_key=...)}; it takes precedence over the {@code SWML_SSL_*} environment variables. + * Serve over HTTPS using an explicit PEM certificate chain and PKCS#8 private key. Configuring + * the cert and key here takes precedence over the {@code SWML_SSL_*} environment variables. * *

      {@code certPath} must be a PEM file containing the leaf (and any intermediate) certificates; * {@code keyPath} must be the matching unencrypted PKCS#8 private key in PEM form. When both @@ -274,8 +288,8 @@ public boolean isTlsEnabled() { /** * Resolves the effective cert/key pair from the explicit option first, then the SWML_SSL_* * environment variables, returning {@code [cert, key]} when both exist on disk, or {@code null} - * when TLS is not configured. Mirrors the validation Python's AgentServer.run() performs (a - * configured path that doesn't exist disables SSL rather than crashing the server). + * when TLS is not configured. A configured path that doesn't exist disables SSL rather than + * crashing the server. */ private String[] resolveTls() { String cert = sslCertPath; @@ -374,9 +388,8 @@ public AgentServer registerSipRoute(String username, String route) { /** * Get the agent route mapped to a SIP username, or {@code null} if none. The lookup is - * case-insensitive — mirrors Python AgentServer._lookup_sip_route, which does - * self._sip_username_mapping.get(username.lower()); usernames are stored lowercased by {@link - * #registerSipUsername}. + * case-insensitive: usernames are stored lowercased by {@link #registerSipUsername} and the + * argument is lowercased before lookup. */ public String getSipRoute(String username) { if (username == null) { @@ -386,18 +399,18 @@ public String getSipRoute(String username) { } /** - * A snapshot of the SIP-username → agent-route mapping (lowercased keys). Mirrors reading Python - * AgentServer._sip_username_mapping. + * A snapshot of the SIP-username → agent-route mapping (lowercased keys). The returned map is a + * copy; mutating it does not affect the server's routing table. */ public Map getSipUsernameMapping() { return new LinkedHashMap<>(sipRoutes); } /** - * Set up central SIP-based routing across all registered agents. Ported from Python - * AgentServer.setup_sip_routing: enables SIP routing at {@code route}, optionally auto-maps each - * registered agent's name/route to a SIP username, and installs a unified routing callback (that - * resolves the SIP username to a target route) on every agent at {@code route}. + * Set up central SIP-based routing across all registered agents: enables SIP routing at {@code + * route}, optionally auto-maps each registered agent's name/route to a SIP username, and installs + * a unified routing callback (that resolves the SIP username to a target route) on every agent at + * {@code route}. * * @param route the SIP routing path (default "/sip"); normalized to a leading-slash form * @param autoMap whether to auto-map SIP usernames from agent names/routes @@ -422,7 +435,7 @@ public AgentServer setupSipRouting(String route, boolean autoMap) { // Unified routing callback: resolve the SIP username in the body to a target route. BiFunction, Map, String> sipRoutingCallback = - serverSipRoutingCallback(); + this::serverSipRoutingCallback; for (AgentBase agent : agents.values()) { agent.registerRoutingCallback(sipRoutingCallback); } @@ -437,9 +450,8 @@ public AgentServer setupSipRouting() { } /** - * Register a mapping from a SIP username to an agent route. Ported from Python - * AgentServer.register_sip_username. Requires {@link #setupSipRouting} to have been called first; - * the username is lowercased for case-insensitive resolution. + * Register a mapping from a SIP username to an agent route. Requires {@link #setupSipRouting} to + * have been called first; the username is lowercased for case-insensitive resolution. * * @param username the SIP username * @param route the target agent route @@ -470,7 +482,10 @@ private void autoMapAgentSipUsernames(AgentBase agent, String route) { } if (route != null && !route.isEmpty()) { - String[] parts = route.split("/"); + // limit 0 == drop trailing empties, so "/a/b/" derives the SIP username + // from "b" rather than from an empty final segment. Load-bearing: the last + // element is what gets registered. + String[] parts = route.split("/", 0); String routePart = parts.length > 0 ? parts[parts.length - 1] : ""; String cleanRoute = routePart.toLowerCase(Locale.ROOT).replaceAll("[^a-z0-9_]", ""); if (!cleanRoute.isEmpty() && !cleanRoute.equals(cleanName)) { @@ -481,9 +496,8 @@ private void autoMapAgentSipUsernames(AgentBase agent, String route) { /** * Extract a SIP username from a SWML/SWAIG request body for routing. SIP routing keys on the - * DESTINATION of the call — the {@code call.to} (or top-level {@code to}) SIP URI — mirroring the - * Python reference ({@code AgentServer.server_sip_routing_callback} calls {@code - * SWMLService.extract_sip_username}, which reads {@code to}). Delegates to the canonical {@link + * DESTINATION of the call — the {@code call.to} (or top-level {@code to}) SIP URI — never the + * caller. Delegates to the canonical {@link * com.signalwire.sdk.swml.Service#extractSipUsername(Map)} so the server and the framework-free * dispatch core agree on which field a SIP username is drawn from. */ @@ -492,9 +506,9 @@ static String extractSipUsername(Map body) { } /** - * Register a routing callback across all registered agents at a shared path. Ported from Python - * AgentServer.register_global_routing_callback: installs the same {@code (body, headers) -> - * targetRoute} callback on every agent so unified routing logic applies uniformly. + * Register a routing callback across all registered agents at a shared path: installs the same + * {@code (body, headers) -> targetRoute} callback on every agent so unified routing logic applies + * uniformly. * * @param callback the routing callback, {@code (body, headers) -> route-or-null} * @param path the routing path to register the callback at (normalized) @@ -777,10 +791,73 @@ private void handleSwaig(HttpExchange exchange, AgentBase agent) throws IOExcept } } + // Enforce the tool's `secure` flag before dispatch. Composed from the agent's published + // seams so this server, the in-process endpoint and the serverless adapters reach the same + // verdict — see AgentBase.swaigValidateToken, which the in-process path uses directly. + // The credential rides the query string; the call identity rides the body. An absent token + // and an absent call_id both fail CLOSED: a token can only be checked against a call_id, so + // a request carrying neither is unvalidated, never exempt. + ToolDefinition tool = agent.getTools().get(funcName); + if (tool != null && tool.isSecure()) { + Object rawCallId = payload.get("call_id"); + String callId = rawCallId == null ? null : rawCallId.toString(); + String token = swaigTokenOf(exchange.getRequestURI().getRawQuery()); + if (!agent.validateToolToken(funcName, token, callId)) { + // A refusal is a 200 carrying a FunctionResult body, never an HTTP error status: the + // engine has no handling for a SWAIG refusal status, so the tool reports that it + // cannot execute and the model relays that. + sendJson( + exchange, + 200, + new FunctionResult( + "I'm sorry, the security token for this function is invalid or expired. " + + "I cannot execute this action.") + .toMap()); + return; + } + } + FunctionResult result = agent.onFunctionCall(funcName, args, payload); sendJson(exchange, 200, result.toMap()); } + /** + * Lift the SWAIG {@code __token} credential out of a raw {@code a=b&c=d} query string, falling + * back to a bare {@code token}. Returns {@code null} when neither is present or the value is + * empty, so a blank credential is indistinguishable from an absent one. + */ + private static String swaigTokenOf(String rawQuery) { + if (rawQuery == null || rawQuery.isEmpty()) { + return null; + } + String fallback = null; + // limit 0 == drop trailing empties; a query ending in "&" yields no extra + // pair, and the eq<=0 guard below discards any empty one regardless. + for (String pair : rawQuery.split("&", 0)) { + int eq = pair.indexOf('='); + if (eq <= 0) { + continue; + } + String key = pair.substring(0, eq); + String value; + try { + value = java.net.URLDecoder.decode(pair.substring(eq + 1), StandardCharsets.UTF_8); + } catch (IllegalArgumentException e) { + continue; + } + if (value.isEmpty()) { + continue; + } + if ("__token".equals(key)) { + return value; + } + if ("token".equals(key) && fallback == null) { + fallback = value; + } + } + return fallback; + } + @SuppressWarnings("unchecked") private void handlePostPrompt(HttpExchange exchange, AgentBase agent) throws IOException { if (!"POST".equalsIgnoreCase(exchange.getRequestMethod())) { diff --git a/src/main/java/com/signalwire/sdk/skills/SkillBase.java b/src/main/java/com/signalwire/sdk/skills/SkillBase.java index e8e4f68c..72fc1852 100644 --- a/src/main/java/com/signalwire/sdk/skills/SkillBase.java +++ b/src/main/java/com/signalwire/sdk/skills/SkillBase.java @@ -47,12 +47,11 @@ default List getRequiredPackages() { /** * Bind the owning agent and the configuration params to this skill. * - *

      The reference passes both to the skill CONSTRUCTOR ({@code SkillBase(agent, params)}, - * skill_base.py:33) and keeps them as public {@code self.agent} / {@code self.params}. A Java - * interface cannot mandate a constructor, so {@link SkillManager} calls this immediately before - * {@link #setup(Map)} — the same ordering the reference gets from construction-then-setup. The - * default is a no-op so existing implementors keep compiling; a skill that needs the back - * reference overrides this together with {@link #getAgent()} / {@link #getParams()}. + *

      A Java interface cannot mandate a constructor, so {@link SkillManager} calls this + * immediately BEFORE {@link #setup(Map)} — a skill can therefore rely on the agent and params + * being available by the time {@code setup} runs. The default is a no-op so existing implementors + * keep compiling; a skill that needs the back reference overrides this together with {@link + * #getAgent()} / {@link #getParams()}. * * @param agent the agent loading this skill * @param params the configuration parameters (never {@code null}) @@ -62,16 +61,20 @@ default void bind(com.signalwire.sdk.agent.AgentBase agent, Map } /** - * The agent this skill was loaded into (the reference's public {@code self.agent}), or {@code - * null} when the skill has not been bound / does not retain it. + * The agent this skill was loaded into, or {@code null} when the skill has not been bound / does + * not retain it. + * + * @return the owning agent, or {@code null}. */ default com.signalwire.sdk.agent.AgentBase getAgent() { return null; } /** - * The configuration params this skill was loaded with (the reference's public {@code - * self.params}), or an empty map when the skill has not been bound / does not retain them. + * The configuration params this skill was loaded with, or an empty map when the skill has not + * been bound / does not retain them. + * + * @return the configuration params, never {@code null}. */ default Map getParams() { return Collections.emptyMap(); @@ -130,10 +133,9 @@ default Map getExtraFields() { * (swaig_fields) into the definition. Skills should use this helper instead of constructing a * {@code ToolDefinition} directly so the configured swaig_fields are always applied. * - *

      Mirrors Python {@code SkillBase.define_tool(**kwargs)}, which delegates to {@code - * agent.define_tool} after merging {@code self.swaig_fields}. Java skills build their tools in - * {@link #registerTools()} and return them for the {@link SkillManager} to register with the - * agent, so this helper returns the merged definition rather than registering it directly. + *

      Skills build their tools in {@link #registerTools()} and return them for the {@link + * SkillManager} to register with the agent, so this helper RETURNS the merged definition rather + * than registering it itself. * * @param name tool name * @param description tool description @@ -157,9 +159,8 @@ default ToolDefinition defineTool( /** * The namespaced key under which this skill instance stores state in the agent's global_data. * - *

      Mirrors Python {@code SkillBase._get_skill_namespace}: {@code "skill:" + getInstanceKey()}. - * Kept private (not part of the public surface) so {@link #getSkillData} / {@link - * #updateSkillData} agree on the key. + *

      The key is {@code "skill:" + getInstanceKey()}. Kept private (not part of the public + * surface) so {@link #getSkillData} / {@link #updateSkillData} cannot disagree on it. * * @return the namespace key, e.g. {@code "skill:math"} */ @@ -170,8 +171,8 @@ private String getSkillNamespace() { /** * Read this skill instance's namespaced state out of the raw_data passed to a SWAIG handler. * - *

      Mirrors Python {@code SkillBase.get_skill_data(raw_data)}: reads {@code - * raw_data["global_data"][namespace]} and returns it, or an empty map when absent. + *

      Reads {@code rawData["global_data"][namespace]} and returns it, or an empty map when {@code + * rawData}, {@code global_data}, or the namespaced slice is absent or is not a map. * * @param rawData the raw_data map a SWAIG function handler receives * @return the skill's namespaced state, or an empty map if not present @@ -195,9 +196,8 @@ default Map getSkillData(Map rawData) { /** * Write this skill instance's namespaced state into a {@link FunctionResult}. * - *

      Mirrors Python {@code SkillBase.update_skill_data(result, data)}: wraps {@code data} under - * the skill namespace and calls {@code result.update_global_data}. Returns {@code result} for - * chaining. + *

      Wraps {@code data} under this skill's namespace and adds it to the result's global-data + * update, so one skill's state can never clobber another's. * * @param result the FunctionResult to add the global_data update to * @param data the skill state to persist under the namespace @@ -213,8 +213,8 @@ default FunctionResult updateSkillData(FunctionResult result, MapMirrors Python {@code SkillBase.validate_env_vars}: returns {@code false} when any required - * variable is unset (or empty), otherwise {@code true}. + *

      Returns {@code false} as soon as any required variable is unset OR set to the empty string; + * {@code true} when all of them carry a value. * * @return true if all required env vars are present */ @@ -232,10 +232,11 @@ default boolean validateEnvVars() { * Check that every required package ({@link #getRequiredPackages()}) is available on the * classpath. * - *

      Mirrors Python {@code SkillBase.validate_packages}, which imports each required module. Java - * dependencies are resolved at build time, so a listed package name is treated as a classpath - * probe: if it resolves to a loadable class it is present. Package names that are not fully - * qualified class names (the common informational case) are treated as satisfied. + *

      Java dependencies are resolved at build time and there is no runtime import, so a listed + * name is treated as a classpath probe only when it LOOKS like a fully-qualified class name (a + * dotted name whose last segment starts with an upper-case letter): such a name must resolve, or + * this returns {@code false}. Bare package/module names — the common informational case — are + * treated as satisfied. * * @return true if all required packages are available */ diff --git a/src/main/java/com/signalwire/sdk/skills/SkillManager.java b/src/main/java/com/signalwire/sdk/skills/SkillManager.java index 7b74a9e7..30848769 100644 --- a/src/main/java/com/signalwire/sdk/skills/SkillManager.java +++ b/src/main/java/com/signalwire/sdk/skills/SkillManager.java @@ -18,8 +18,9 @@ public SkillManager(AgentBase agent) { } /** - * The agent this manager loads skills into (the {@code agent} construction param). The reference - * keeps it as a public back reference ({@code self.agent}, skill_manager.py). + * The agent this manager loads skills into (the {@code agent} construction param). + * + * @return the owning agent. */ public AgentBase getAgent() { return agent; @@ -143,10 +144,9 @@ public void removeSkill(String skillName) { /** * Load and setup a skill by name. * - *

      Mirrors Python {@code SkillManager.load_skill}: resolves the skill from the registry, sets - * it up, and registers its tools/hints/global-data/prompt-sections with the agent. Delegates to - * {@link #addSkill(String, Map)} (the Java idiom for the same lifecycle) and reports success by - * whether the skill became active. + *

      Resolves the skill from the registry, sets it up, and registers its + * tools/hints/global-data/prompt-sections with the agent. Delegates to {@link #addSkill(String, + * Map)} and reports success by whether the skill became active. * * @param skillName the registered skill name * @param params optional configuration parameters (may be null) @@ -165,9 +165,8 @@ public boolean loadSkill(String skillName, Map params) { /** * Unload a skill and clean it up. * - *

      Mirrors Python {@code SkillManager.unload_skill(skill_identifier)}: looks the skill up by - * its instance key, calls {@link SkillBase#cleanup()}, and removes it. Returns whether a skill - * was actually unloaded. + *

      Looks the skill up by its instance key, calls {@link SkillBase#cleanup()}, and removes it. + * Returns whether a skill was actually unloaded. * * @param skillIdentifier a skill name or instance key * @return true if a loaded skill was found and unloaded @@ -192,8 +191,6 @@ public boolean unloadSkill(String skillIdentifier) { /** * Get a loaded skill instance by identifier. * - *

      Mirrors Python {@code SkillManager.get_skill(skill_identifier)}. - * * @param skillIdentifier a skill name or instance key * @return the loaded skill instance, or null if not loaded */ @@ -204,8 +201,6 @@ public SkillBase getSkill(String skillIdentifier) { /** * List the instance keys of currently loaded skills. * - *

      Mirrors Python {@code SkillManager.list_loaded_skills}. - * * @return the loaded skill instance keys */ public List listLoadedSkills() { @@ -215,8 +210,6 @@ public List listLoadedSkills() { /** * The map of loaded skills keyed by instance key. * - *

      Mirrors Python's {@code SkillManager.loaded_skills} attribute. - * * @return an unmodifiable view of the loaded-skills map */ public Map loadedSkills() { diff --git a/src/main/java/com/signalwire/sdk/skills/SkillName.java b/src/main/java/com/signalwire/sdk/skills/SkillName.java index 4f056af7..b8df0888 100644 --- a/src/main/java/com/signalwire/sdk/skills/SkillName.java +++ b/src/main/java/com/signalwire/sdk/skills/SkillName.java @@ -47,7 +47,7 @@ public enum SkillName { /** * The canonical wire string for this skill — the name it registers under in {@link - * SkillRegistry}. Equivalent to PHP's backed-enum {@code ->value}. + * SkillRegistry}. * * @return the lower-case-with-underscores skill name. */ diff --git a/src/main/java/com/signalwire/sdk/skills/SkillRegistry.java b/src/main/java/com/signalwire/sdk/skills/SkillRegistry.java index 43aa34c5..1e69fe99 100644 --- a/src/main/java/com/signalwire/sdk/skills/SkillRegistry.java +++ b/src/main/java/com/signalwire/sdk/skills/SkillRegistry.java @@ -25,10 +25,9 @@ public final class SkillRegistry { private final List externalPaths = new ArrayList<>(); /** - * Per-instance skill registrations, keyed by name. Mirrors Python's instance-level {@code - * self._skills} dict (skills/registry.py): a fresh {@code SkillRegistry()} starts EMPTY, and - * {@link #registerSkill(String, Supplier)} adds to it idempotently. Distinct from the static - * built-in {@code registry} (the Java idiom for on-demand built-in lookup). Insertion-ordered. + * Per-instance skill registrations, keyed by name. A fresh {@code SkillRegistry()} starts EMPTY, + * and {@link #registerSkill(String, Supplier)} adds to it idempotently. Distinct from the static + * built-in {@code registry}, which backs on-demand built-in lookup. Insertion-ordered. */ private final Map> instanceSkills = new LinkedHashMap<>(); @@ -54,18 +53,17 @@ public final class SkillRegistry { register("mcp_gateway", McpGatewaySkill::new); } - /** Env var seeding external skill-search directories. Mirrors Python's registry.py. */ + /** Env var seeding external skill-search directories. */ private static final String ENV_SKILL_PATHS = "SIGNALWIRE_SKILL_PATHS"; /** * Public no-arg constructor so callers can manage their own external-paths list. The static * registry is unaffected. * - *

      Seeds {@code externalPaths} from the {@code SIGNALWIRE_SKILL_PATHS} environment variable (a - * {@link File#pathSeparator}-delimited list of directories), mirroring Python's {@code - * SkillRegistry}, which scans {@code os.environ["SIGNALWIRE_SKILL_PATHS"]} for external skill - * directories. Non-existent or non-directory entries are skipped (env seeding is best-effort, - * unlike the explicit {@link #addSkillDirectory(String)} which validates and throws). + *

      Seeds {@code externalPaths} from the {@code SIGNALWIRE_SKILL_PATHS} environment variable — a + * {@link File#pathSeparator}-delimited list of directories to search for external skills. + * Non-existent or non-directory entries are skipped: env seeding is best-effort, unlike the + * explicit {@link #addSkillDirectory(String)}, which validates and throws. */ public SkillRegistry() { seedExternalPathsFromEnv(); @@ -76,7 +74,9 @@ private void seedExternalPathsFromEnv() { if (raw == null || raw.isEmpty()) { return; } - for (String path : raw.split(java.util.regex.Pattern.quote(File.pathSeparator))) { + // limit 0 == drop trailing empty segments (a PATH ending in the separator + // contributes no entry); the loop below skips empties anyway. + for (String path : raw.split(java.util.regex.Pattern.quote(File.pathSeparator), 0)) { if (path.isEmpty()) { continue; } @@ -120,10 +120,9 @@ public static void unregister(String name) { /** * Add a directory to search for skills. * - *

      Mirrors Python's {@code signalwire.skills.registry.SkillRegistry.add_skill_directory}: - * validate that the path exists and is a directory, then append it (de-duplicated) to {@code - * externalPaths}. Throws {@link IllegalArgumentException} (the Java analog of Python's {@code - * ValueError}) for non-existent paths or non-directories. + *

      Validates that the path exists and is a directory, then appends it (de-duplicated) to {@code + * externalPaths}. Throws {@link IllegalArgumentException} for a non-existent path or a + * non-directory. * * @param path absolute or relative path to a directory containing skill subdirectories * @throws IllegalArgumentException when the path doesn't exist or isn't a directory. @@ -149,9 +148,8 @@ public synchronized List getExternalPaths() { /** * List metadata for all available (registered) skills. * - *

      Mirrors Python {@code SkillRegistry.list_skills}: returns one entry per skill with its name, - * description, and version. Java skills are registered eagerly (no on-demand directory scan), so - * this enumerates the static registry. + *

      Returns one entry per skill with its name, description, and version. Skills are registered + * eagerly (there is no on-demand directory scan), so this enumerates the static registry. * * @return a list of skill metadata maps */ @@ -176,8 +174,8 @@ public List> listSkills() { /** * Discover and return all available skills. * - *

      Mirrors Python {@code SkillRegistry.discover_skills}, which returns the same enumeration as - * {@code list_skills} (skills load on-demand, so discovery is the same scan). + *

      Returns the same enumeration as {@link #listSkills()} — skills load on demand, so discovery + * is the same scan. * * @return a list of skill metadata maps */ @@ -188,9 +186,8 @@ public List> discoverSkills() { /** * Get the skill class registered under a name. * - *

      Mirrors Python {@code SkillRegistry.get_skill_class(skill_name)}: returns the concrete - * {@link SkillBase} subclass registered for {@code skillName}, or {@code null} if none is - * registered. + *

      Returns the concrete {@link SkillBase} subclass registered for {@code skillName}, or {@code + * null} if none is registered. * * @param skillName the registered skill name * @return the skill's implementation class, or null if not registered @@ -203,10 +200,9 @@ public Class getSkillClass(String skillName) { /** * Register a skill class directly. * - *

      Mirrors Python {@code SkillRegistry.register_skill(skill_class)}: instantiate the class, - * derive its name from {@link SkillBase#getName()}, and register a factory for it. Throws {@link - * IllegalArgumentException} (the Java analog of Python's {@code ValueError}) if the class cannot - * be instantiated with a public no-arg constructor. + *

      Instantiates the class, derives its name from {@link SkillBase#getName()}, and registers a + * factory for it. Throws {@link IllegalArgumentException} if the class cannot be instantiated + * with a public no-arg constructor. * * @param skillClass a concrete {@link SkillBase} subclass with a public no-arg constructor * @throws IllegalArgumentException if the class cannot be instantiated @@ -227,11 +223,10 @@ public void registerSkill(Class skillClass) { } /** - * Register a skill factory by name into THIS instance's registry, idempotently. Mirrors Python - * {@code SkillRegistry.register_skill}, which skips re-registration of an already-present name - * ({@code if skill_class.SKILL_NAME in self._skills: return}). The first registration wins; a - * repeat with the same name is a no-op. Returns {@code true} if this call added the name, {@code - * false} if it was already present. + * Register a skill factory by name into THIS instance's registry, idempotently. Re-registering an + * already-present name is skipped: the first registration wins and a repeat with the same name is + * a no-op. Returns {@code true} if this call added the name, {@code false} if it was already + * present. * * @param name the skill name * @param factory a factory producing a fresh {@link SkillBase} instance @@ -247,7 +242,6 @@ public boolean registerSkill(String name, Supplier factory) { /** * The names registered into THIS instance via {@link #registerSkill(String, Supplier)}, sorted. - * Mirrors reading Python's {@code sorted(self._skills.keys())}. * * @return a sorted list of this instance's registered skill names */ @@ -266,10 +260,11 @@ private static SkillBase newInstance(Class skillClass) { /** * List all skill sources and the skills available from each. * - *

      Mirrors Python {@code SkillRegistry.list_all_skill_sources}: a map from source type ({@code - * built-in}, {@code external_paths}, {@code entry_points}, {@code registered}) to the skill names - * from that source. Java has no entry-point mechanism, so all registered skills report as {@code - * built-in} and external directories are listed under {@code external_paths}. + *

      A map from source type ({@code built-in}, {@code external_paths}, {@code entry_points}, + * {@code registered}) to the skill names from that source. There is no plugin entry-point + * mechanism here, so all registered skills report as {@code built-in}, external directories are + * listed under {@code external_paths}, and {@code entry_points} is always empty — the key is + * still present so the returned shape is stable. * * @return a map of source name to the list of skill names from that source */ @@ -285,11 +280,10 @@ public Map> listAllSkillSources() { /** * Get complete schema for all registered skills. * - *

      Mirrors Python's instance-method {@code SkillRegistry.get_all_skills_schema()} — returns a - * map keyed by skill name where each value contains parameter metadata. Java skills don't carry - * rich Python-style parameter introspection in v1, so the value defaults to a minimal shape with - * the skill name; built-in skills that expose {@code getSkillDescription} / {@code - * getSkillVersion} get those merged in. + *

      Returns a map keyed by skill name where each value contains parameter metadata. Skills do + * not yet carry rich parameter introspection, so each value defaults to a minimal shape with the + * skill name and an empty {@code parameters} map; built-in skills that expose {@code + * getSkillDescription} / {@code getSkillVersion} get those merged in. * * @return ordered map of skill name to schema metadata */ diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/ApiNinjaTriviaSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/ApiNinjaTriviaSkill.java index 3d7a5488..c8c45309 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/ApiNinjaTriviaSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/ApiNinjaTriviaSkill.java @@ -6,6 +6,12 @@ import com.signalwire.sdk.swaig.ToolDefinition; import java.util.*; +/** + * Trivia questions from the API Ninjas service. + * + *

      Registered under the name {@code api_ninjas_trivia}; load it with {@code + * agent.addSkill("api_ninjas_trivia", params)}. + */ public class ApiNinjaTriviaSkill implements SkillBase { /** @@ -39,21 +45,43 @@ public class ApiNinjaTriviaSkill implements SkillBase { private String toolName = "get_trivia"; private List categories = new ArrayList<>(ALL_CATEGORIES); + /** + * The registry name this skill is loaded by: {@code api_ninjas_trivia}. + * + * @return the skill name. + */ @Override public String getName() { return "api_ninjas_trivia"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Get trivia questions from API Ninjas"; } + /** + * Whether an agent may load this skill more than once under different configurations. + * + * @return whether multiple instances are supported. + */ @Override public boolean supportsMultipleInstances() { return true; } + /** + * Configure the skill from its parameters. + * + * @param params the skill's configuration. + * @return {@code true} when setup supplied a non-empty {@code api_key}; {@code false} otherwise, + * which leaves the skill unloaded. + */ @Override @SuppressWarnings("unchecked") public boolean setup(Map params) { @@ -65,6 +93,11 @@ public boolean setup(Map params) { return apiKey != null && !apiKey.isEmpty(); } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override public List registerTools() { return Collections.emptyList(); diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/ClaudeSkillsSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/ClaudeSkillsSkill.java index 02497a48..316490f0 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/ClaudeSkillsSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/ClaudeSkillsSkill.java @@ -24,21 +24,44 @@ public class ClaudeSkillsSkill implements SkillBase { private final List> discoveredSections = new ArrayList<>(); private final List discoveredHints = new ArrayList<>(); + /** + * The registry name this skill is loaded by: {@code claude_skills}. + * + * @return the skill name. + */ @Override public String getName() { return "claude_skills"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Load Claude SKILL.md files as agent tools"; } + /** + * Whether an agent may load this skill more than once under different configurations. + * + * @return whether multiple instances are supported. + */ @Override public boolean supportsMultipleInstances() { return true; } + /** + * Configure the skill from its parameters. + * + * @param params the skill's configuration. + * @return {@code true} when setup supplied a {@code skills_path} that exists, is a directory, and + * yields at least one discovered skill; {@code false} otherwise, which leaves the skill + * unloaded. + */ @Override @SuppressWarnings("unchecked") public boolean setup(Map params) { @@ -83,9 +106,9 @@ public boolean setup(Map params) { /** * Walk the immediate subdirectories of {@code root}; each subdirectory that declares a {@code - * SKILL.md} is registered as one skill (its directory name is the skill name). Mirrors Python's - * {@code _discover_skills}, which iterates {@code skills_path.iterdir()} and requires a {@code - * SKILL.md} in each candidate directory. Returns the number of valid skills discovered. + * SKILL.md} is registered as one skill (its directory name is the skill name). A candidate + * subdirectory without a {@code SKILL.md} is not a valid skill declaration and is skipped. + * Returns the number of valid skills discovered. */ private int discoverSkillMdDirectories(Path root) { int count = 0; @@ -115,8 +138,9 @@ private int discoverSkillMdDirectories(Path root) { /** * Register top-level {@code *.md} files placed directly in {@code root} (single-file skill - * declaration). This is the port's back-compat convenience alongside the Python subdirectory - * model. Returns the number of skills registered. + * declaration). This is accepted in addition to the one-directory-per-skill layout, so a skill + * that needs no supporting files can be a single markdown file. Returns the number of skills + * registered. */ private int discoverTopLevelMdFiles(Path root) { int count = 0; @@ -207,11 +231,22 @@ private boolean registerSkillFromFile(String skillName, Path skillFile) { } } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override public List registerTools() { return discoveredTools; } + /** + * Speech-recognition hints this skill contributes, biasing the recognizer toward the vocabulary + * its tools deal in. + * + * @return the hint phrases. + */ @Override public List getHints() { return discoveredHints; diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/CustomSkillsSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/CustomSkillsSkill.java index 51f59b57..eb2e4bea 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/CustomSkillsSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/CustomSkillsSkill.java @@ -10,21 +10,43 @@ public class CustomSkillsSkill implements SkillBase { private final List customTools = new ArrayList<>(); + /** + * The registry name this skill is loaded by: {@code custom_skills}. + * + * @return the skill name. + */ @Override public String getName() { return "custom_skills"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Register user-defined custom tools"; } + /** + * Whether an agent may load this skill more than once under different configurations. + * + * @return whether multiple instances are supported. + */ @Override public boolean supportsMultipleInstances() { return true; } + /** + * Configure the skill from its parameters. + * + * @param params the skill's configuration. + * @return {@code true} when setup supplied a non-empty {@code tools} list from which at least one + * entry carried a name; {@code false} otherwise, which leaves the skill unloaded. + */ @Override @SuppressWarnings("unchecked") public boolean setup(Map params) { @@ -54,6 +76,11 @@ public boolean setup(Map params) { return !customTools.isEmpty(); } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override public List registerTools() { return customTools; diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/DatasphereServerlessSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/DatasphereServerlessSkill.java index 0689ebb7..b1ddad27 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/DatasphereServerlessSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/DatasphereServerlessSkill.java @@ -7,6 +7,13 @@ import java.nio.charset.StandardCharsets; import java.util.*; +/** + * Knowledge search over SignalWire DataSphere, executed serverlessly through DataMap so no webhook + * round-trip is needed. + * + *

      Registered under the name {@code datasphere_serverless}; load it with {@code + * agent.addSkill("datasphere_serverless", params)}. + */ public class DatasphereServerlessSkill implements SkillBase { private String spaceName; @@ -17,21 +24,44 @@ public class DatasphereServerlessSkill implements SkillBase { private double distance = 3.0; private String toolName = "search_knowledge"; + /** + * The registry name this skill is loaded by: {@code datasphere_serverless}. + * + * @return the skill name. + */ @Override public String getName() { return "datasphere_serverless"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Search knowledge using SignalWire DataSphere with serverless DataMap execution"; } + /** + * Whether an agent may load this skill more than once under different configurations. + * + * @return whether multiple instances are supported. + */ @Override public boolean supportsMultipleInstances() { return true; } + /** + * Configure the skill from its parameters. + * + * @param params the skill's configuration. + * @return {@code true} when setup supplied all four of {@code space_name}, {@code project_id}, + * {@code token}, and {@code document_id}; {@code false} otherwise, which leaves the skill + * unloaded. + */ @Override public boolean setup(Map params) { this.spaceName = (String) params.get("space_name"); @@ -45,6 +75,11 @@ public boolean setup(Map params) { return spaceName != null && projectId != null && token != null && documentId != null; } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override public List registerTools() { return Collections.emptyList(); @@ -66,12 +101,22 @@ public List> getSwaigFunctions() { "POST", url, Map.of("Content-Type", "application/json", "Authorization", "Basic " + authEncoded)) - .body( + .params( Map.of( "query_string", "${args.query}", "document_id", documentId, "count", count, "distance", distance)) + .foreach( + Map.of( + "input_key", + "chunks", + "output_key", + "formatted_results", + "max", + count, + "append", + "=== RESULT ===\n${this.text}\n" + "=".repeat(50) + "\n\n")) .output( new FunctionResult( "I found results for \"${args.query}\":\n\n${formatted_results}")); diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/DatasphereSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/DatasphereSkill.java index f425b559..9bc78053 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/DatasphereSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/DatasphereSkill.java @@ -14,6 +14,12 @@ import java.time.Duration; import java.util.*; +/** + * Knowledge search over the SignalWire DataSphere RAG stack. + * + *

      Registered under the name {@code datasphere}; load it with {@code agent.addSkill("datasphere", + * params)}. + */ public class DatasphereSkill implements SkillBase { private static final Logger log = Logger.getLogger(DatasphereSkill.class); @@ -27,21 +33,44 @@ public class DatasphereSkill implements SkillBase { private String toolName = "search_knowledge"; private String noResultsMessage = "No results found in the knowledge base."; + /** + * The registry name this skill is loaded by: {@code datasphere}. + * + * @return the skill name. + */ @Override public String getName() { return "datasphere"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Search knowledge using SignalWire DataSphere RAG stack"; } + /** + * Whether an agent may load this skill more than once under different configurations. + * + * @return whether multiple instances are supported. + */ @Override public boolean supportsMultipleInstances() { return true; } + /** + * Configure the skill from its parameters. + * + * @param params the skill's configuration. + * @return {@code true} when setup supplied all four of {@code space_name}, {@code project_id}, + * {@code token}, and {@code document_id}; {@code false} otherwise, which leaves the skill + * unloaded. + */ @Override public boolean setup(Map params) { this.spaceName = (String) params.get("space_name"); @@ -58,6 +87,11 @@ public boolean setup(Map params) { return spaceName != null && projectId != null && token != null && documentId != null; } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override @SuppressWarnings("unchecked") public List registerTools() { diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/DatetimeSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/DatetimeSkill.java index 2a483056..918ee857 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/DatetimeSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/DatetimeSkill.java @@ -8,28 +8,61 @@ import java.time.format.DateTimeFormatter; import java.util.*; +/** + * Current date, time, and timezone information. + * + *

      Registered under the name {@code datetime}; load it with {@code agent.addSkill("datetime", + * params)}. + */ public class DatetimeSkill implements SkillBase { + /** + * The registry name this skill is loaded by: {@code datetime}. + * + * @return the skill name. + */ @Override public String getName() { return "datetime"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Get current date, time, and timezone information"; } + /** + * Whether an agent may load this skill more than once under different configurations. + * + * @return whether multiple instances are supported. + */ @Override public boolean supportsMultipleInstances() { return false; } + /** + * Configure the skill from its parameters. This skill needs no configuration, so setup always + * succeeds. + * + * @param params the skill's configuration (unused). + * @return {@code true}. + */ @Override public boolean setup(Map params) { return true; } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override public List registerTools() { Map tzParam = new LinkedHashMap<>(); diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/GoogleMapsSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/GoogleMapsSkill.java index 9f6e932a..b737d141 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/GoogleMapsSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/GoogleMapsSkill.java @@ -14,22 +14,45 @@ import java.time.Duration; import java.util.*; +/** + * Address validation and driving-route computation via the Google Maps API. + * + *

      Registered under the name {@code google_maps}; load it with {@code + * agent.addSkill("google_maps", params)}. + */ public class GoogleMapsSkill implements SkillBase { private String apiKey; private String lookupToolName = "lookup_address"; private String routeToolName = "compute_route"; + /** + * The registry name this skill is loaded by: {@code google_maps}. + * + * @return the skill name. + */ @Override public String getName() { return "google_maps"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Validate addresses and compute driving routes using Google Maps"; } + /** + * Configure the skill from its parameters. + * + * @param params the skill's configuration. + * @return {@code true} when setup supplied a non-empty {@code api_key}; {@code false} otherwise, + * which leaves the skill unloaded. + */ @Override public boolean setup(Map params) { this.apiKey = (String) params.get("api_key"); @@ -40,6 +63,11 @@ public boolean setup(Map params) { return apiKey != null && !apiKey.isEmpty(); } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override @SuppressWarnings("unchecked") public List registerTools() { @@ -165,6 +193,12 @@ public List registerTools() { return List.of(lookup, route); } + /** + * Speech-recognition hints this skill contributes, biasing the recognizer toward the vocabulary + * its tools deal in. + * + * @return the hint phrases. + */ @Override public List getHints() { return List.of("address", "location", "route", "directions", "miles", "distance"); diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/InfoGathererSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/InfoGathererSkill.java index c1bfc138..69f8188e 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/InfoGathererSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/InfoGathererSkill.java @@ -5,6 +5,12 @@ import com.signalwire.sdk.swaig.ToolDefinition; import java.util.*; +/** + * Collects answers to a configurable list of questions from the caller. + * + *

      Registered under the name {@code info_gatherer}; load it with {@code + * agent.addSkill("info_gatherer", params)}. + */ public class InfoGathererSkill implements SkillBase { private String prefix = ""; @@ -12,21 +18,43 @@ public class InfoGathererSkill implements SkillBase { private List> questions = new ArrayList<>(); private String namespace = "info_gatherer"; + /** + * The registry name this skill is loaded by: {@code info_gatherer}. + * + * @return the skill name. + */ @Override public String getName() { return "info_gatherer"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Gather answers to a configurable list of questions"; } + /** + * Whether an agent may load this skill more than once under different configurations. + * + * @return whether multiple instances are supported. + */ @Override public boolean supportsMultipleInstances() { return true; } + /** + * Configure the skill from its parameters. + * + * @param params the skill's configuration. + * @return {@code true} when setup supplied a non-empty {@code questions} list; {@code false} + * otherwise, which leaves the skill unloaded. + */ @Override @SuppressWarnings("unchecked") public boolean setup(Map params) { @@ -42,6 +70,11 @@ public boolean setup(Map params) { return !questions.isEmpty(); } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override public List registerTools() { String startName = prefix.isEmpty() ? "start_questions" : prefix + "_start_questions"; diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/JokeSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/JokeSkill.java index 38667949..369f5cf1 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/JokeSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/JokeSkill.java @@ -6,21 +6,43 @@ import com.signalwire.sdk.swaig.ToolDefinition; import java.util.*; +/** + * Jokes from the API Ninjas service. + * + *

      Registered under the name {@code joke}; load it with {@code agent.addSkill("joke", params)}. + */ public class JokeSkill implements SkillBase { private String apiKey; private String toolName = "get_joke"; + /** + * The registry name this skill is loaded by: {@code joke}. + * + * @return the skill name. + */ @Override public String getName() { return "joke"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Tell jokes using the API Ninjas joke API"; } + /** + * Configure the skill from its parameters. + * + * @param params the skill's configuration. + * @return {@code true} when setup supplied a non-empty {@code api_key}; {@code false} otherwise, + * which leaves the skill unloaded. + */ @Override public boolean setup(Map params) { this.apiKey = (String) params.get("api_key"); @@ -30,6 +52,11 @@ public boolean setup(Map params) { return apiKey != null && !apiKey.isEmpty(); } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override public List registerTools() { // This is a DataMap skill - tools come from getSwaigFunctions diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/MathSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/MathSkill.java index 7e37cec7..46901c39 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/MathSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/MathSkill.java @@ -5,6 +5,11 @@ import com.signalwire.sdk.swaig.ToolDefinition; import java.util.*; +/** + * Basic arithmetic the model can invoke rather than computing in its head. + * + *

      Registered under the name {@code math}; load it with {@code agent.addSkill("math", params)}. + */ public class MathSkill implements SkillBase { /** Returns an empty hint list — this skill ships no example hints. */ @@ -19,26 +24,53 @@ public Map getParameterSchema() { return SkillParams.base(supportsMultipleInstances(), getName()); } + /** + * The registry name this skill is loaded by: {@code math}. + * + * @return the skill name. + */ @Override public String getName() { return "math"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Perform basic mathematical calculations"; } + /** + * Whether an agent may load this skill more than once under different configurations. + * + * @return whether multiple instances are supported. + */ @Override public boolean supportsMultipleInstances() { return false; } + /** + * Configure the skill from its parameters. This skill needs no configuration, so setup always + * succeeds. + * + * @param params the skill's configuration (unused). + * @return {@code true}. + */ @Override public boolean setup(Map params) { return true; } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override public List registerTools() { Map params = new LinkedHashMap<>(); diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/McpGatewaySkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/McpGatewaySkill.java index f008eee3..ea505010 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/McpGatewaySkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/McpGatewaySkill.java @@ -25,20 +25,18 @@ *

      This is the CLIENT half of the mcp_gateway subsystem. It connects to an already-running MCP * Gateway service over HTTP, authenticates (bearer token OR HTTP-basic), enumerates the gateway's * services and their tools, and registers each MCP tool as a SWAIG function whose handler proxies - * the tool call back through the gateway. Mirrors the Python reference {@code MCPGatewaySkill} - * ({@code signalwire/skills/mcp_gateway/skill.py}). + * the tool call back through the gateway. * *

      Client half only. This skill is the gateway CLIENT. The gateway SERVER (the standalone * service that hosts the MCP servers and exposes the {@code /services} / {@code /call} HTTP * surface) is not part of the Java SDK — Java agents talk to an externally-run gateway; they do not * host one. * - *

      TLS verification ({@code verify_ssl}). Config param, default {@code true} (verification - * ON — the secure default, matching the Python reference {@code verify=self.verify_ssl}). Setting - * {@code verify_ssl=false} is the explicit opt-out for self-signed-cert gateways: only then is a - * permissive {@link SSLContext} installed on the {@link HttpClient}. Every request is issued - * through {@link #httpClient()}, so the flag governs the actual peer-certificate check, not just a - * stored boolean. + *

      TLS verification ({@code verify_ssl}). Config param, default {@code true} — the secure + * default, with verification ON. Setting {@code verify_ssl=false} is the explicit opt-out for + * self-signed-cert gateways: only then is a permissive {@link SSLContext} installed on the {@link + * HttpClient}. Every request is issued through {@link #httpClient()}, so the flag governs the + * actual peer-certificate check, not just a stored boolean. */ public class McpGatewaySkill implements SkillBase { @@ -60,21 +58,41 @@ public class McpGatewaySkill implements SkillBase { // Python reference's self.session_id = None at setup). private String sessionId; + /** + * The registry name this skill is loaded by: {@code mcp_gateway}. + * + * @return the skill name. + */ @Override public String getName() { return "mcp_gateway"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Bridge MCP servers with SWAIG functions"; } + /** + * This skill's semantic version. + * + * @return the version string. + */ @Override public String getVersion() { return "1.0.0"; } + /** + * Packages this skill needs at runtime, reported for diagnostics rather than enforced. + * + * @return the required package names. + */ @Override public List getRequiredPackages() { // Java resolves HTTP/JSON deps at build time; informational only. @@ -87,7 +105,8 @@ public List getRequiredPackages() { *

      Auth is either a bearer token ({@code auth_token}) OR HTTP-basic ({@code auth_user} + {@code * auth_password}); {@code gateway_url} is always required. Reads {@code verify_ssl} (default * {@code true}) and threads it to the HTTP client. Finally performs a {@code GET /health} to - * confirm the gateway is reachable, exactly like the Python reference. + * confirm the gateway is reachable, so a misconfigured URL fails at setup rather than on the + * first tool call. */ @Override @SuppressWarnings("unchecked") @@ -402,6 +421,12 @@ private String resolveSessionId(Map rawData) { return callId == null ? "unknown" : callId.toString(); } + /** + * Speech-recognition hints this skill contributes, biasing the recognizer toward the vocabulary + * its tools deal in. + * + * @return the hint phrases. + */ @Override public List getHints() { List hints = new ArrayList<>(); @@ -563,18 +588,38 @@ private HttpClient httpClient() throws Exception { * The all-trusting {@link X509TrustManager} used ONLY on the {@code verify_ssl=false} opt-out * path (constructed inside the {@code if (!verifySsl)} guard in {@link #httpClient()}). A named * nested class rather than an inline anonymous one so the surface enumerator scopes its interface - * methods to THIS class, not the public {@code MCPGatewaySkill} surface. This deliberately-empty - * trust manager is the self-signed opt-out the python reference endorses via {@code - * verify=self.verify_ssl}; it is allowlisted in {@code TLS_VERIFY_ALLOW.md} as a - * secure-default-gated site (the only legitimate allowlist reason per the TLS-VERIFY gate). + * methods to THIS class, not the public {@code McpGatewaySkill} surface. It is deliberately empty + * because it exists solely to implement the documented {@code verify_ssl=false} opt-out for + * self-signed-certificate gateways; it is never reachable when {@code verify_ssl} is left at its + * secure default. */ private static final class InsecureTrustManager implements X509TrustManager { + /** + * Accepts any client certificate without checking it. Deliberately empty — see the class + * comment: this trust manager exists only for the {@code verify_ssl=false} opt-out. + * + * @param chain the presented certificate chain (ignored). + * @param authType the authentication type (ignored). + */ @Override public void checkClientTrusted(X509Certificate[] chain, String authType) {} + /** + * Accepts any server certificate without checking it, which means no verification that the + * gateway is who it claims to be and no protection against an interposed party. Deliberately + * empty — reachable only through the {@code verify_ssl=false} opt-out. + * + * @param chain the presented certificate chain (ignored). + * @param authType the authentication type (ignored). + */ @Override public void checkServerTrusted(X509Certificate[] chain, String authType) {} + /** + * Returns no issuers, since this trust manager accepts every certificate regardless of issuer. + * + * @return an empty array. + */ @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/NativeVectorSearchSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/NativeVectorSearchSkill.java index 4abec5b4..250ba4d0 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/NativeVectorSearchSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/NativeVectorSearchSkill.java @@ -38,21 +38,43 @@ public class NativeVectorSearchSkill implements SkillBase { // (native_vector_search/skill.py). private String indexFile = "default"; + /** + * The registry name this skill is loaded by: {@code native_vector_search}. + * + * @return the skill name. + */ @Override public String getName() { return "native_vector_search"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Search document indexes using vector similarity and keyword search (local or remote)"; } + /** + * Whether an agent may load this skill more than once under different configurations. + * + * @return whether multiple instances are supported. + */ @Override public boolean supportsMultipleInstances() { return true; } + /** + * Configure the skill from its parameters. + * + * @param params the skill's configuration. + * @return {@code true} when setup supplied a non-empty {@code remote_url}; {@code false} + * otherwise, which leaves the skill unloaded. + */ @Override @SuppressWarnings("unchecked") public boolean setup(Map params) { @@ -88,6 +110,11 @@ public boolean setup(Map params) { return remoteUrl != null && !remoteUrl.isEmpty(); } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override @SuppressWarnings("unchecked") public List registerTools() { @@ -169,6 +196,12 @@ public List registerTools() { })); } + /** + * Speech-recognition hints this skill contributes, biasing the recognizer toward the vocabulary + * its tools deal in. + * + * @return the hint phrases. + */ @Override public List getHints() { List hints = diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/PlayBackgroundFileSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/PlayBackgroundFileSkill.java index 6d80dcc8..b151b833 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/PlayBackgroundFileSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/PlayBackgroundFileSkill.java @@ -6,26 +6,54 @@ import com.signalwire.sdk.swaig.ToolDefinition; import java.util.*; +/** + * Starts and stops background audio playback during a call. + * + *

      Registered under the name {@code play_background_file}; load it with {@code + * agent.addSkill("play_background_file", params)}. + */ public class PlayBackgroundFileSkill implements SkillBase { private String toolName = "play_background_file"; private List> files = new ArrayList<>(); + /** + * The registry name this skill is loaded by: {@code play_background_file}. + * + * @return the skill name. + */ @Override public String getName() { return "play_background_file"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Control background file playback"; } + /** + * Whether an agent may load this skill more than once under different configurations. + * + * @return whether multiple instances are supported. + */ @Override public boolean supportsMultipleInstances() { return true; } + /** + * Configure the skill from its parameters. + * + * @param params the skill's configuration. + * @return {@code true} when setup supplied a non-empty {@code files} list; {@code false} + * otherwise, which leaves the skill unloaded. + */ @Override @SuppressWarnings("unchecked") public boolean setup(Map params) { @@ -36,6 +64,11 @@ public boolean setup(Map params) { return !files.isEmpty(); } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override public List registerTools() { return Collections.emptyList(); diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/SkillParams.java b/src/main/java/com/signalwire/sdk/skills/builtin/SkillParams.java index 874c6271..46b41973 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/SkillParams.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/SkillParams.java @@ -6,19 +6,17 @@ /** * Package-private helper for building built-in skill parameter schemas. * - *

      Kept out of the public surface intentionally: it hosts the Java analog of Python's {@code - * SkillBase.get_parameter_schema()} classmethod (which skills call via {@code super()}), without - * being a public method that the cross-language audit would flag as an addition. Skills override - * {@code getParameterSchema()} and start from {@link #base}, then add their own params. + *

      Kept out of the public surface intentionally: it holds the shared base-schema construction + * that every built-in skill starts from, without adding a public method to the SDK's API. Skills + * override {@code getParameterSchema()} and start from {@link #base}, then add their own params. */ final class SkillParams { private SkillParams() {} /** - * The base parameter schema shared by all skills, mirroring Python {@code - * SkillBase.get_parameter_schema}: {@code swaig_fields} and {@code skip_prompt} for every skill, - * plus {@code tool_name} when the skill supports multiple instances. + * The base parameter schema shared by all skills: {@code swaig_fields} and {@code skip_prompt} + * for every skill, plus {@code tool_name} when the skill supports multiple instances. * * @param supportsMultipleInstances whether the skill supports multiple instances * @param skillName the skill's name (used as the {@code tool_name} default) diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/SpiderSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/SpiderSkill.java index b08a1d1b..5c06ab5d 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/SpiderSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/SpiderSkill.java @@ -11,6 +11,12 @@ import java.time.Duration; import java.util.*; +/** + * Web scraping and crawling: fetches pages and extracts their text for the model to read. + * + *

      Registered under the name {@code spider}; load it with {@code agent.addSkill("spider", + * params)}. + */ public class SpiderSkill implements SkillBase { private static final Logger log = Logger.getLogger(SpiderSkill.class); @@ -21,21 +27,93 @@ public class SpiderSkill implements SkillBase { // Python parity: get_instance_key defaults tool_name to SKILL_NAME (spider/skill.py). private String toolName = "spider"; + /** + * XPath expressions for elements dropped before text extraction, PREFILLED with the default set + * in the order shown. The scrape path runs no XPath engine, so {@link #removeXpathTagPattern()} + * compiles the tag names out of these expressions into the element-stripping regex — this list + * stays the single source for what gets removed, whether you keep the defaults or replace them + * via {@link #setRemoveXpaths(List)}. + */ + private List removeXpaths = + new ArrayList<>( + List.of("//script", "//style", "//nav", "//header", "//footer", "//aside", "//noscript")); + + /** + * The XPath expressions for elements removed before text extraction. + * + * @return the removal expressions, prefilled with the defaults. + */ + public List getRemoveXpaths() { + return removeXpaths; + } + + /** + * Replaces the element-removal expressions. + * + * @param removeXpaths the XPath expressions to strip before extraction. + */ + public void setRemoveXpaths(List removeXpaths) { + this.removeXpaths = removeXpaths == null ? new ArrayList<>() : new ArrayList<>(removeXpaths); + } + + /** + * Builds an alternation of the bare tag names named by {@link #removeXpaths} (a leading {@code + * //} stripped), so a simple {@code //tag} expression drives the regex strip below. An expression + * that is not a plain tag step is skipped — it cannot be honored without an XPath engine. + * + * @return the tag alternation, or null when no expression yields a usable tag. + */ + private String removeXpathTagPattern() { + List tags = new ArrayList<>(); + for (String xpath : removeXpaths) { + if (xpath == null) { + continue; + } + String tag = xpath.startsWith("//") ? xpath.substring(2) : xpath; + if (tag.matches("[A-Za-z][A-Za-z0-9]*")) { + tags.add(tag); + } + } + return tags.isEmpty() ? null : String.join("|", tags); + } + + /** + * The registry name this skill is loaded by: {@code spider}. + * + * @return the skill name. + */ @Override public String getName() { return "spider"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Fast web scraping and crawling capabilities"; } + /** + * Whether an agent may load this skill more than once under different configurations. + * + * @return whether multiple instances are supported. + */ @Override public boolean supportsMultipleInstances() { return true; } + /** + * Configure the skill from its parameters. This skill needs no configuration, so setup always + * succeeds. + * + * @param params the skill's configuration (unused). + * @return {@code true}. + */ @Override public boolean setup(Map params) { if (params.containsKey("timeout")) this.timeout = ((Number) params.get("timeout")).intValue(); @@ -43,9 +121,21 @@ public boolean setup(Map params) { this.maxTextLength = ((Number) params.get("max_text_length")).intValue(); if (params.containsKey("user_agent")) this.userAgent = (String) params.get("user_agent"); if (params.containsKey("tool_name")) this.toolName = (String) params.get("tool_name"); + if (params.get("remove_xpaths") instanceof List xpaths) { + List parsed = new ArrayList<>(); + for (Object x : xpaths) { + if (x != null) parsed.add(String.valueOf(x)); + } + this.removeXpaths = parsed; + } return true; } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override public List registerTools() { Map urlParams = new LinkedHashMap<>(); @@ -100,13 +190,16 @@ public List registerTools() { HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); String body = response.body(); - // Basic HTML stripping - String text = - body.replaceAll("]*>[\\s\\S]*?", "") - .replaceAll("]*>[\\s\\S]*?", "") - .replaceAll("<[^>]+>", " ") - .replaceAll("\\s+", " ") - .trim(); + // Drop the removeXpaths elements (content included), then strip the + // remaining tags — the reference drops the same elements via lxml + // before calling text_content() (spider/skill.py:313-319). + String tagPattern = removeXpathTagPattern(); + if (tagPattern != null) { + body = body.replaceAll("(?is)<(" + tagPattern + ")\\b[^>]*>.*?", ""); + // Void/unclosed occurrences of the same elements. + body = body.replaceAll("(?is)<(" + tagPattern + ")\\b[^>]*/?>", ""); + } + String text = body.replaceAll("<[^>]+>", " ").replaceAll("\\s+", " ").trim(); if (text.length() > maxTextLength) { text = text.substring(0, maxTextLength) + "..."; } @@ -145,6 +238,12 @@ public List registerTools() { return List.of(scrape, crawl, extract); } + /** + * Speech-recognition hints this skill contributes, biasing the recognizer toward the vocabulary + * its tools deal in. + * + * @return the hint phrases. + */ @Override public List getHints() { return List.of("scrape", "crawl", "extract", "web page", "website", "spider"); diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/SwmlTransferSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/SwmlTransferSkill.java index 54afdbe6..19c3eea1 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/SwmlTransferSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/SwmlTransferSkill.java @@ -6,6 +6,12 @@ import com.signalwire.sdk.swaig.ToolDefinition; import java.util.*; +/** + * Transfers calls to other agents by matching the caller's request against configured patterns. + * + *

      Registered under the name {@code swml_transfer}; load it with {@code + * agent.addSkill("swml_transfer", params)}. + */ public class SwmlTransferSkill implements SkillBase { private String toolName = "transfer_call"; @@ -15,21 +21,43 @@ public class SwmlTransferSkill implements SkillBase { private String defaultMessage = "Please hold while I transfer you."; private Map> transfers = new LinkedHashMap<>(); + /** + * The registry name this skill is loaded by: {@code swml_transfer}. + * + * @return the skill name. + */ @Override public String getName() { return "swml_transfer"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Transfer calls between agents based on pattern matching"; } + /** + * Whether an agent may load this skill more than once under different configurations. + * + * @return whether multiple instances are supported. + */ @Override public boolean supportsMultipleInstances() { return true; } + /** + * Configure the skill from its parameters. + * + * @param params the skill's configuration. + * @return {@code true} when setup supplied a non-empty {@code transfers} map; {@code false} + * otherwise, which leaves the skill unloaded. + */ @Override @SuppressWarnings("unchecked") public boolean setup(Map params) { @@ -47,6 +75,11 @@ public boolean setup(Map params) { return !transfers.isEmpty(); } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override public List registerTools() { return Collections.emptyList(); @@ -98,6 +131,12 @@ public List> getSwaigFunctions() { return List.of(dm.toSwaigFunction()); } + /** + * Speech-recognition hints this skill contributes, biasing the recognizer toward the vocabulary + * its tools deal in. + * + * @return the hint phrases. + */ @Override public List getHints() { List hints = new ArrayList<>(List.of("transfer", "connect", "speak to", "talk to")); diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/WeatherApiSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/WeatherApiSkill.java index 108f653e..29268cfb 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/WeatherApiSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/WeatherApiSkill.java @@ -6,22 +6,45 @@ import com.signalwire.sdk.swaig.ToolDefinition; import java.util.*; +/** + * Current weather from WeatherAPI.com. + * + *

      Registered under the name {@code weather_api}; load it with {@code + * agent.addSkill("weather_api", params)}. + */ public class WeatherApiSkill implements SkillBase { private String apiKey; private String toolName = "get_weather"; private String temperatureUnit = "fahrenheit"; + /** + * The registry name this skill is loaded by: {@code weather_api}. + * + * @return the skill name. + */ @Override public String getName() { return "weather_api"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Get current weather information from WeatherAPI.com"; } + /** + * Configure the skill from its parameters. + * + * @param params the skill's configuration. + * @return {@code true} when setup supplied a non-empty {@code api_key}; {@code false} otherwise, + * which leaves the skill unloaded. + */ @Override public boolean setup(Map params) { this.apiKey = (String) params.get("api_key"); @@ -34,6 +57,11 @@ public boolean setup(Map params) { return apiKey != null && !apiKey.isEmpty(); } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override public List registerTools() { return Collections.emptyList(); diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/WebSearchSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/WebSearchSkill.java index 2bbe52d6..c3f45715 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/WebSearchSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/WebSearchSkill.java @@ -19,6 +19,13 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; +/** + * Web search via the Google Custom Search API, optionally scraping the result pages for their full + * text. + * + *

      Registered under the name {@code web_search}; load it with {@code agent.addSkill("web_search", + * params)}. + */ public class WebSearchSkill implements SkillBase { private static final Logger log = Logger.getLogger(WebSearchSkill.class); @@ -53,26 +60,53 @@ public class WebSearchSkill implements SkillBase { private boolean parallelScrape = true; private boolean snippetsOnly = false; + /** + * The registry name this skill is loaded by: {@code web_search}. + * + * @return the skill name. + */ @Override public String getName() { return "web_search"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Search the web for information using Google Custom Search API"; } + /** + * This skill's semantic version. + * + * @return the version string. + */ @Override public String getVersion() { return "2.0.0"; } + /** + * Whether an agent may load this skill more than once under different configurations. + * + * @return whether multiple instances are supported. + */ @Override public boolean supportsMultipleInstances() { return true; } + /** + * Configure the skill from its parameters. + * + * @param params the skill's configuration. + * @return {@code true} when setup supplied non-empty values for both {@code api_key} and {@code + * search_engine_id}; {@code false} otherwise, which leaves the skill unloaded. + */ @Override public boolean setup(Map params) { this.apiKey = (String) params.get("api_key"); @@ -119,6 +153,11 @@ private static boolean toBool(Object v, boolean dflt) { return Boolean.parseBoolean(v.toString()); } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override public List registerTools() { Map parameters = new LinkedHashMap<>(); @@ -259,8 +298,7 @@ private FunctionResult handleSearch(Map args, Map scrapeCandidates( String query, List> items, long deadlineAtMillis) { @@ -324,7 +362,7 @@ private List scrapeCandidates( /** * Fetch one candidate page and return its extracted text bundled with the CSE title/snippet/link. * Returns {@code null} on any fetch/parse failure (including the per-page timeout firing) so the - * caller can skip it. Mirrors Python's {@code _scrape_one} closure. + * caller can skip it — one bad page never fails the whole search. */ private ScrapedResult scrapeOne(String unused, Map item) { String title = stringVal(item.get("title")); @@ -371,9 +409,9 @@ private ScrapedResult scrapeOne(String unused, Map item) { } /** - * Crude HTML-to-text: strip script/style blocks and tags, collapse whitespace. Good enough to - * give the model page context without pulling in a full HTML parser. Mirrors the intent of - * Python's extract_html_content. + * Crude HTML-to-text: strip script/style blocks and tags, decode a few common entities, and + * collapse whitespace. Good enough to give the model page context without pulling in a full HTML + * parser as a dependency. */ private static String extractText(String html) { if (html == null || html.isEmpty()) return ""; @@ -400,7 +438,7 @@ private static String truncate(String s, int max) { * fast path and as the graceful fallback when page scraping is abandoned by the overall_deadline * (or every page was empty / below threshold). The result is shorter than a fully-scraped * response but always non-empty when the CSE returned anything, so the kernel never sees a - * webhook timeout. Mirrors Python's {@code GoogleSearchScraper._format_snippet_results}. + * webhook timeout. */ private String formatSnippetResults(String query, List> items) { if (items == null || items.isEmpty()) { @@ -430,7 +468,7 @@ private String formatNoResults(String query) { /** * Apply the optional response_prefix / response_postfix around a non-empty result body. Shared by * the scraped-result and snippet paths; the error and no-results branches deliberately stay - * unwrapped, matching Python. + * unwrapped, so a configured prefix never decorates a failure message. */ private String wrapResponse(String body) { if (!responsePrefix.isEmpty()) { @@ -512,9 +550,9 @@ public Map getGlobalData() { } /** - * Advertise every configurable param so GUI tooling can discover it. Mirrors Python's - * get_parameter_schema (commit 295745b), including the six latency / response params. Each - * setup() read must appear here. + * Advertise every configurable param so GUI tooling can discover it, including the six latency / + * response params. Every value {@code setup()} reads must appear here, or tooling will not offer + * it. */ @Override public Map getParameterSchema() { diff --git a/src/main/java/com/signalwire/sdk/skills/builtin/WikipediaSearchSkill.java b/src/main/java/com/signalwire/sdk/skills/builtin/WikipediaSearchSkill.java index 486b7ae1..37293a7b 100644 --- a/src/main/java/com/signalwire/sdk/skills/builtin/WikipediaSearchSkill.java +++ b/src/main/java/com/signalwire/sdk/skills/builtin/WikipediaSearchSkill.java @@ -15,6 +15,12 @@ import java.time.Duration; import java.util.*; +/** + * Wikipedia article search and summaries. + * + *

      Registered under the name {@code wikipedia_search}; load it with {@code + * agent.addSkill("wikipedia_search", params)}. + */ public class WikipediaSearchSkill implements SkillBase { private static final Logger log = Logger.getLogger(WikipediaSearchSkill.class); @@ -22,16 +28,33 @@ public class WikipediaSearchSkill implements SkillBase { private int numResults = 1; private String noResultsMessage = "No Wikipedia articles found for the query."; + /** + * The registry name this skill is loaded by: {@code wikipedia_search}. + * + * @return the skill name. + */ @Override public String getName() { return "wikipedia_search"; } + /** + * Human-readable summary of what this skill adds to an agent. + * + * @return the description. + */ @Override public String getDescription() { return "Search Wikipedia for information about a topic and get article summaries"; } + /** + * Configure the skill from its parameters. This skill needs no configuration, so setup always + * succeeds. + * + * @param params the skill's configuration (unused). + * @return {@code true}. + */ @Override public boolean setup(Map params) { if (params.containsKey("num_results")) { @@ -44,6 +67,11 @@ public boolean setup(Map params) { return true; } + /** + * The tools this skill contributes to the agent, offered to the model alongside the agent's own. + * + * @return the tool definitions. + */ @Override public List registerTools() { Map parameters = new LinkedHashMap<>(); diff --git a/src/main/java/com/signalwire/sdk/swaig/FunctionResult.java b/src/main/java/com/signalwire/sdk/swaig/FunctionResult.java index 7ee03982..ae17ab8e 100644 --- a/src/main/java/com/signalwire/sdk/swaig/FunctionResult.java +++ b/src/main/java/com/signalwire/sdk/swaig/FunctionResult.java @@ -51,11 +51,26 @@ public FunctionResult(String response, boolean postProcess) { // -------- Core Setters -------- + /** + * Set the text handed back to the model as this tool's result — what the LLM reads and speaks + * from. A {@code null} is stored as the empty string. + * + * @param response the response text. + * @return this result, for chaining. + */ public FunctionResult setResponse(String response) { this.response = response != null ? response : ""; return this; } + /** + * Whether the model gets another turn to speak AFTER this result's actions run, rather than the + * actions taking effect immediately. Only serialized when {@code true} AND at least one action + * was added. + * + * @param postProcess whether to post-process. + * @return this result, for chaining. + */ public FunctionResult setPostProcess(boolean postProcess) { this.postProcess = postProcess; return this; @@ -98,10 +113,27 @@ public FunctionResult connect(String destination, boolean isFinal, String from) return this; } + /** + * Bridge the call to another destination, with the caller ID left to the platform. Equivalent to + * {@link #connect(String, boolean, String)} with a {@code null} {@code from}. + * + * @param destination the SIP URI or phone number to dial. + * @param isFinal {@code true} for a permanent transfer that does not come back; {@code false} to + * return to the agent when the far leg ends. + * @return this result, for chaining. + */ public FunctionResult connect(String destination, boolean isFinal) { return connect(destination, isFinal, null); } + /** + * SWML transfer with AI response setup, defaulting {@code isFinal} to {@code true} — a permanent + * transfer that does not return to the agent. + */ + public FunctionResult swmlTransfer(String dest, String aiResponse) { + return swmlTransfer(dest, aiResponse, true); + } + /** SWML transfer with AI response setup. */ public FunctionResult swmlTransfer(String dest, String aiResponse, boolean isFinal) { Map swmlAction = new LinkedHashMap<>(); @@ -126,6 +158,11 @@ public FunctionResult hangup() { return addAction("hangup", true); } + /** Put the call on hold with the default 300-second timeout. */ + public FunctionResult hold() { + return hold(300); + } + /** Put the call on hold (timeout clamped 0-900). */ public FunctionResult hold(int timeout) { return addAction("hold", Math.max(0, Math.min(timeout, 900))); @@ -146,6 +183,13 @@ public FunctionResult waitForUser(Boolean enabled, Integer timeout, boolean answ return addAction("wait_for_user", waitValue); } + /** + * Make the agent wait for the caller to speak before it does. Equivalent to {@link + * #waitForUser(Boolean, Integer, boolean)} with no timeout and no answer-first, which emits + * {@code wait_for_user: true}. + * + * @return this result, for chaining. + */ public FunctionResult waitForUser() { return waitForUser(null, null, false); } @@ -157,18 +201,44 @@ public FunctionResult stop() { // ======== State & Data Management ======== + /** + * Merge keys into the call's {@code global_data}, visible to the model and to DataMap expressions + * for the rest of the call. Emits the {@code set_global_data} action. + * + * @param data the keys to set. + * @return this result, for chaining. + */ public FunctionResult updateGlobalData(Map data) { return addAction("set_global_data", data); } + /** + * Delete keys from the call's {@code global_data}. Emits the {@code unset_global_data} action. + * + * @param keys a single key name or a list of them. + * @return this result, for chaining. + */ public FunctionResult removeGlobalData(Object keys) { return addAction("unset_global_data", keys); } + /** + * Merge keys into the call's metadata — per-call scratch state the tools share, kept out of what + * the model sees. Emits the {@code set_meta_data} action. + * + * @param data the keys to set. + * @return this result, for chaining. + */ public FunctionResult setMetadata(Map data) { return addAction("set_meta_data", data); } + /** + * Delete keys from the call's metadata. Emits the {@code unset_meta_data} action. + * + * @param keys a single key name or a list of them. + * @return this result, for chaining. + */ public FunctionResult removeMetadata(Object keys) { return addAction("unset_meta_data", keys); } @@ -218,21 +288,54 @@ public FunctionResult switchContext( return addAction("context_switch", contextData); } + /** + * Replace the agent's system prompt for the rest of the call, keeping the conversation history. + * Shorthand for {@link #switchContext(String, String, boolean, boolean)} with no user prompt and + * neither reset flag, which emits {@code context_switch} carrying the prompt as a bare string + * rather than an object. + * + * @param systemPrompt the new system prompt. + * @return this result, for chaining. + */ public FunctionResult switchContext(String systemPrompt) { return switchContext(systemPrompt, null, false, false); } + /** + * Replace the tool_call+result pair in conversation history, defaulting to {@code true} — i.e. + * REMOVE the pair entirely rather than substituting replacement text. + */ + public FunctionResult replaceInHistory() { + return replaceInHistory(true); + } + /** Replace tool_call+result pair in conversation history. */ public FunctionResult replaceInHistory(String text) { return addAction("replace_in_history", text); } + /** + * Rewrite this tool call and its result in the conversation history, so the model's later turns + * do not re-read them. Pass {@code true} to remove the pair entirely; the {@link + * #replaceInHistory(String)} overload substitutes replacement text instead. Useful when a tool + * handled sensitive data that should not persist in the transcript the model sees. + * + * @param summary {@code true} to drop the pair from history. + * @return this result, for chaining. + */ public FunctionResult replaceInHistory(boolean summary) { return addAction("replace_in_history", summary); } // ======== Media Control ======== + /** + * Have the agent speak this text immediately, independently of the {@code response} the model + * will generate from. + * + * @param text the text to speak. + * @return this result, for chaining. + */ public FunctionResult say(String text) { return addAction("say", text); } @@ -248,10 +351,23 @@ public FunctionResult playBackgroundFile(String filename, boolean wait) { return addAction("playback_bg", filename); } + /** + * Start playing an audio file UNDER the conversation and return at once — the agent keeps talking + * over it. Equivalent to {@link #playBackgroundFile(String, boolean)} with {@code wait} off. Stop + * it with {@link #stopBackgroundFile()}. + * + * @param filename the audio file URL. + * @return this result, for chaining. + */ public FunctionResult playBackgroundFile(String filename) { return playBackgroundFile(filename, false); } + /** + * Stop the background audio started by {@link #playBackgroundFile(String)}. + * + * @return this result, for chaining. + */ public FunctionResult stopBackgroundFile() { return addAction("stop_playback_bg", true); } @@ -415,6 +531,13 @@ public FunctionResult recordCall( direction != null ? direction.getValue() : null); } + /** + * Start background call recording with the defaults: mono, {@code wav}, both directions, and no + * control id (so {@link #stopRecordCall()} stops it). Recording call audio carries consent and + * retention obligations in most jurisdictions. + * + * @return this result, for chaining. + */ public FunctionResult recordCall() { return recordCall(null, false, "wav", "both"); } @@ -434,24 +557,56 @@ public FunctionResult stopRecordCall(String controlId) { false); } + /** + * Stop the background recording, without naming a control id — the platform stops the recording + * running on the call. Use {@link #stopRecordCall(String)} to target one of several. + * + * @return this result, for chaining. + */ public FunctionResult stopRecordCall() { return stopRecordCall(null); } // ======== Speech & AI Configuration ======== + /** + * Add speech-recognition hints mid-call, biasing the recognizer toward words that only became + * relevant now — a name or an account number the caller just supplied. + * + * @param hints the hint strings or structured hint objects. + * @return this result, for chaining. + */ public FunctionResult addDynamicHints(List hints) { return addAction("add_dynamic_hints", hints); } + /** + * Drop every hint added by {@link #addDynamicHints(List)}, leaving the agent's statically + * configured hints untouched. + * + * @return this result, for chaining. + */ public FunctionResult clearDynamicHints() { return addAction("clear_dynamic_hints", new LinkedHashMap<>()); } + /** + * How long the recognizer waits in silence before deciding the caller has finished speaking. + * Shorter is snappier but cuts off people who pause mid-sentence. + * + * @param milliseconds the silence threshold. + * @return this result, for chaining. + */ public FunctionResult setEndOfSpeechTimeout(int milliseconds) { return addAction("end_of_speech_timeout", milliseconds); } + /** + * How long to wait between speech events before treating the utterance as over. + * + * @param milliseconds the timeout. + * @return this result, for chaining. + */ public FunctionResult setSpeechEventTimeout(int milliseconds) { return addAction("speech_event_timeout", milliseconds); } @@ -461,10 +616,40 @@ public FunctionResult toggleFunctions(List> toggles) { return addAction("toggle_functions", toggles); } + /** + * Enable function calls on speaker timeout — {@link #enableFunctionsOnTimeout(boolean)} with + * {@code true}. + */ + public FunctionResult enableFunctionsOnTimeout() { + return enableFunctionsOnTimeout(true); + } + + /** + * Whether the model may call tools on a speaker timeout — when the caller has gone quiet rather + * than said something. + * + * @param enabled whether to allow tool calls on timeout. + * @return this result, for chaining. + */ public FunctionResult enableFunctionsOnTimeout(boolean enabled) { return addAction("functions_on_speaker_timeout", enabled); } + /** + * Send full data to the LLM for this turn only — {@link #enableExtensiveData(boolean)} with + * {@code true}. + */ + public FunctionResult enableExtensiveData() { + return enableExtensiveData(true); + } + + /** + * Send the full data set to the LLM for THIS turn only, instead of the usual trimmed context. + * Costs tokens, so it is a per-turn opt-in rather than a mode. + * + * @param enabled whether to send extensive data this turn. + * @return this result, for chaining. + */ public FunctionResult enableExtensiveData(boolean enabled) { return addAction("extensive_data", enabled); } @@ -501,6 +686,17 @@ public FunctionResult executeSwml(Object swmlContent, boolean transfer) { return addAction("SWML", swmlData); } + /** + * Execute a SWML document from this tool result, WITHOUT transferring — control returns to the + * agent afterwards. Equivalent to {@link #executeSwml(Object, boolean)} with {@code transfer} + * off. + * + * @param swmlContent the SWML as a {@link Map}, or as a JSON {@link String} (which is parsed; + * unparseable text is passed through under {@code raw_swml}). + * @return this result, for chaining. + * @throws IllegalArgumentException if {@code swmlContent} is neither a {@code String} nor a + * {@code Map}. + */ public FunctionResult executeSwml(Object swmlContent) { return executeSwml(swmlContent, false); } @@ -508,9 +704,9 @@ public FunctionResult executeSwml(Object swmlContent) { /** * Join an ad-hoc audio conference with RELAY and CXML calls using SWML. * - *

      Every optional parameter the reference exposes is a positional argument here, with the same - * default and the same validation. Hold music is {@code waitUrl} (snake_case wire key {@code - * wait_url}) — there is no separate "hold audio" parameter; the reference uses {@code wait_url}. + *

      Every option is a positional argument here; the parameter list below states each default. + * Hold music is {@code waitUrl} (wire key {@code wait_url}) — there is no separate "hold audio" + * parameter. * * @param name conference name (required, must be non-blank) * @param muted join muted (default {@code false}) @@ -785,10 +981,33 @@ public FunctionResult tap( statusUrl); } + /** + * Start a call tap with every optional param at its default: no control id, {@code + * direction="both"}, {@code codec="PCMU"}, {@code rtpPtime=20}, and no status URL. + */ + public FunctionResult tap(String uri) { + return tap(uri, null, "both", "PCMU", 20, null); + } + + /** + * Start a call tap, supplying {@code controlId} and defaulting the rest: {@code + * direction="both"}, {@code codec="PCMU"}, {@code rtpPtime=20}, and no status URL. + */ + public FunctionResult tap(String uri, String controlId) { + return tap(uri, controlId, "both", "PCMU", 20, null); + } + + /** + * Start a call tap, supplying {@code direction} and defaulting {@code codec="PCMU"}, {@code + * rtpPtime=20}, and no status URL. + */ + public FunctionResult tap(String uri, String controlId, String direction) { + return tap(uri, controlId, direction, "PCMU", 20, null); + } + /** * Start a call tap (convenience form). Delegates to the full-arity {@link #tap(String, String, - * String, String, int, String)} with {@code rtp_ptime} at its reference default (20) and no - * {@code status_url}. + * String, String, int, String)} with {@code rtpPtime} at its default (20) and no status URL. */ public FunctionResult tap(String uri, String controlId, String direction, String codec) { return tap(uri, controlId, direction, codec, 20, null); @@ -844,6 +1063,12 @@ public FunctionResult stopTap(String controlId) { false); } + /** + * Stop the media tap without naming a control id — the platform stops the tap running on the + * call. Use {@link #stopTap(String)} to target one of several. + * + * @return this result, for chaining. + */ public FunctionResult stopTap() { return stopTap(null); } @@ -894,6 +1119,26 @@ public FunctionResult sendSms( return sendSms(toNumber, fromNumber, body, media, tags, null); } + /** + * Send SMS with every optional param defaulted to {@code null} — no body, media, tags, or region. + * Because at least one of {@code body} or {@code media} must be supplied, this arity always + * throws; it exists so the optional parameters are discoverable from the shortest overload. + */ + public FunctionResult sendSms(String toNumber, String fromNumber) { + return sendSms(toNumber, fromNumber, null, null, null, null); + } + + /** Send SMS supplying {@code body}, with no media, tags, or region. */ + public FunctionResult sendSms(String toNumber, String fromNumber, String body) { + return sendSms(toNumber, fromNumber, body, null, null, null); + } + + /** Send SMS supplying {@code body} and {@code media}, with no tags or region. */ + public FunctionResult sendSms( + String toNumber, String fromNumber, String body, List media) { + return sendSms(toNumber, fromNumber, body, media, null, null); + } + /** * Default {@code ai_response} for {@link #pay}. Set as a {@code set} verb ahead of the {@code * pay} verb so the AI relays the payment outcome via the {@code ${pay_result}} variable. @@ -905,15 +1150,14 @@ public FunctionResult sendSms( /** * Process payment via SWML pay action. * - *

      Every optional parameter the reference exposes is a positional argument here, in the same - * order, with the same default and the same emitted wire key. The reference ALWAYS emits {@code - * payment_connector_url}, {@code input}, {@code payment_method}, {@code timeout}, {@code + *

      Every option is a positional argument here; the parameter list below states each default. + * {@code payment_connector_url}, {@code input}, {@code payment_method}, {@code timeout}, {@code * max_attempts}, {@code security_code}, {@code min_postal_code_length}, {@code token_type}, * {@code currency}, {@code language}, {@code voice}, {@code valid_card_types} and {@code - * postal_code}; {@code status_url}, {@code charge_amount}, {@code description}, {@code - * parameters} and {@code prompts} are emitted only when supplied. Numeric values are stringified - * to match Python's {@code str(...)}. A {@code set} verb carrying {@code ai_response} is emitted - * before the {@code pay} verb. + * postal_code} are ALWAYS emitted, even at their defaults; {@code status_url}, {@code + * charge_amount}, {@code description}, {@code parameters} and {@code prompts} are emitted only + * when supplied. Numeric values go on the wire as strings, not JSON numbers. A {@code set} verb + * carrying {@code ai_response} is emitted before the {@code pay} verb. * * @param connectorUrl payment connector URL (required) * @param inputMethod "dtmf" (the SWML schema is {@code const:"dtmf"}; default "dtmf") @@ -1004,11 +1248,42 @@ public FunctionResult pay( return executeSwml(swmlDoc, false); } + /** + * Process payment with every optional param at its default: {@code inputMethod="dtmf"}, no status + * URL, {@code paymentMethod="credit-card"}, {@code timeout=5}, {@code maxAttempts=1}, {@code + * securityCode=true}, {@code postalCode=true}, {@code minPostalCodeLength=0}, {@code + * tokenType="reusable"}, no charge amount, {@code currency="usd"}, {@code language="en-US"}, + * {@code voice="woman"}, no description, {@code validCardTypes="visa mastercard amex"}, no extra + * parameters or prompts, and {@link #DEFAULT_PAY_AI_RESPONSE} as the AI response. + */ + public FunctionResult pay(String connectorUrl) { + return pay( + connectorUrl, + "dtmf", + null, + "credit-card", + 5, + 1, + true, + Boolean.TRUE, + 0, + "reusable", + null, + "usd", + "en-US", + "woman", + null, + "visa mastercard amex", + null, + null, + DEFAULT_PAY_AI_RESPONSE); + } + /** * Process payment (convenience form). Delegates to the full-arity {@link #pay(String, String, * String, String, int, int, boolean, Object, int, String, String, String, String, String, String, - * String, List, List, String)} with every other option at its reference default, so the emitted - * SWML is identical to the reference with those defaults. + * String, List, List, String)} with every other option at the default listed on {@link + * #pay(String)}. */ public FunctionResult pay( String connectorUrl, String inputMethod, String statusUrl, int timeout, int maxAttempts) { @@ -1053,6 +1328,15 @@ public FunctionResult executeRpc( false); } + /** + * Invoke a RELAY RPC method from this tool result, letting the platform infer the call and node + * from the current call. Use {@link #executeRpc(String, Map, String, String)} to target a + * different leg explicitly. + * + * @param method the RELAY method name, e.g. {@code calling.play}. + * @param params the method's parameters; omitted from the wire when null or empty. + * @return this result, for chaining. + */ public FunctionResult executeRpc(String method, Map params) { return executeRpc(method, params, null, null); } @@ -1127,6 +1411,21 @@ public FunctionResult simulateUserInput(String text) { // ======== Payment Helpers (static) ======== + /** + * Create a payment prompt with no {@code cardType} and no {@code errorType} — neither key is + * emitted. + */ + public static Map createPaymentPrompt( + String forSituation, List> payActions) { + return createPaymentPrompt(forSituation, payActions, null, null); + } + + /** Create a payment prompt supplying {@code cardType}, with no {@code errorType}. */ + public static Map createPaymentPrompt( + String forSituation, List> payActions, String cardType) { + return createPaymentPrompt(forSituation, payActions, cardType, null); + } + public static Map createPaymentPrompt( String forSituation, List> payActions, @@ -1175,6 +1474,11 @@ public String toJson() { // ======== Getters for testing ======== + /** + * The text handed back to the model as this tool's result. + * + * @return the response text, never {@code null}. + */ public String getResponse() { return response; } @@ -1183,6 +1487,12 @@ public List> getActions() { return Collections.unmodifiableList(actions); } + /** + * Whether the model gets another turn after this result's actions run. Note this only reaches the + * wire when it is {@code true} AND at least one action was added. + * + * @return the post-process flag. + */ public boolean isPostProcess() { return postProcess; } diff --git a/src/main/java/com/signalwire/sdk/swaig/SWAIGFunction.java b/src/main/java/com/signalwire/sdk/swaig/SWAIGFunction.java index b16bacb4..383e265f 100644 --- a/src/main/java/com/signalwire/sdk/swaig/SWAIGFunction.java +++ b/src/main/java/com/signalwire/sdk/swaig/SWAIGFunction.java @@ -16,22 +16,18 @@ /** * Represents a SWAIG function — a tool the AI model can call. * - *

      Mirrors the Python reference {@code signalwire.core.swaig_function.SWAIGFunction} and the Ruby - * {@code SignalWire::Swaig::SWAIGFunction}. A SWAIGFunction is exactly the same concept as a "tool" - * in native OpenAI / Anthropic tool calling: it holds a name/description/parameters/handler and - * renders into the tool schema sent to the model. + *

      A SWAIGFunction is the same concept as a "tool" in native OpenAI / Anthropic tool calling: it + * holds a name/description/parameters/handler and renders into the tool schema sent to the model. * - *

      Construct one via {@link #builder()} (the {@code name}, {@code description}, and {@code - * handler} are required; everything else is optional) — the enumerator records this as the single - * {@code __init__}. + *

      Construct one via {@link #builder()} — the {@code name}, {@code description}, and {@code + * handler} are required; everything else is optional. */ public class SWAIGFunction { /** * Handler signature: {@code (args, rawData) -> result}. The result may be a {@link * FunctionResult}, a {@code Map} already containing a {@code "response"} key, any other {@code - * Map}, or a plain value coerced via {@code toString()} — matching the Python reference's - * coercion in {@link #execute}. + * Map}, or a plain value coerced via {@code toString()} — see the coercion in {@link #execute}. */ @FunctionalInterface public interface Handler extends BiFunction, Map, Object> {} @@ -73,14 +69,31 @@ private SWAIGFunction(Builder b) { // ---- Accessors (parity with Ruby attr_reader) ---- + /** + * The function name the model calls this tool by, and the key it is registered under. + * + * @return the function name. + */ public String getName() { return name; } + /** + * The Java callable invoked when the model calls this tool. + * + * @return the handler. + */ public Handler getHandler() { return handler; } + /** + * The LLM-facing description of when to call this tool. This is prompt text the model reasons + * over, not a developer comment — a vague one is the usual cause of a registered tool never being + * called. + * + * @return the description. + */ public String getDescription() { return description; } @@ -89,6 +102,13 @@ public Map getParameters() { return parameters; } + /** + * Whether this tool's rendered webhook URL carries a signed {@code __token} the SDK's HTTP {@code + * /swaig} handler validates on callback. Defaults to {@code true}; opting out publishes a webhook + * anyone who sees the SWML can invoke. + * + * @return whether the tool is secure. + */ public boolean isSecure() { return secure; } @@ -97,22 +117,49 @@ public Map getFillers() { return fillers; } + /** + * Audio played to the caller while this tool runs, so a slow handler is not dead air. + * + * @return the wait-file URL, or {@code null} when none is set. + */ public String getWaitFile() { return waitFile; } + /** + * How many times the wait file repeats while the tool runs. + * + * @return the loop count, or {@code null} for the platform default. + */ public Integer getWaitFileLoops() { return waitFileLoops; } + /** + * The endpoint the platform calls for this tool instead of this agent. Setting it is what makes + * the function EXTERNAL — see {@link #isExternal()}. + * + * @return the webhook URL, or {@code null} when the tool runs on this agent. + */ public String getWebhookUrl() { return webhookUrl; } + /** + * Names of the parameters the model must supply. Rendered into the JSON-schema {@code required} + * array, and omitted from it entirely when empty. + * + * @return the required parameter names, never {@code null}. + */ public List getRequired() { return required; } + /** + * Whether the handler expects typed arguments rather than the raw argument map. + * + * @return whether the handler is typed. + */ public boolean isTypedHandler() { return isTypedHandler; } @@ -121,6 +168,13 @@ public Map getExtraSwaigFields() { return extraSwaigFields; } + /** + * Whether the platform calls someone else's endpoint for this tool rather than this agent. + * Derived, not configured: it is {@code true} exactly when a {@link #getWebhookUrl() webhook URL} + * was supplied. + * + * @return whether the function is external. + */ public boolean isExternal() { return isExternal; } @@ -128,9 +182,9 @@ public boolean isExternal() { /** * Call the underlying handler function. * - *

      Java analog of the Python reference's {@code __call__} (which makes the object callable). - * {@code function.call(args, rawData)} invokes the handler and returns its raw (uncoerced) return - * value. + *

      {@code function.call(args, rawData)} invokes the handler and returns its raw (uncoerced) + * return value. Use {@link #execute} instead when you want the result coerced to a {@link + * FunctionResult} map and handler errors caught. * * @param args parsed arguments for the function * @param rawData optional raw request data @@ -140,6 +194,17 @@ public Object call(Map args, Map rawData) { return handler.apply(args, rawData); } + /** + * Execute the function with no raw request data — equivalent to passing {@code null} for {@code + * rawData}. + * + * @param args parsed arguments for the function + * @return function result as a Map (from {@link FunctionResult#toMap()}) + */ + public Map execute(Map args) { + return execute(args, null); + } + /** * Execute the function with the given arguments. * @@ -164,11 +229,9 @@ public Map execute(Map args, Map * Validate the arguments against the parameter schema. * *

      Performs a lightweight built-in check of the {@code required} list and each property's - * {@code type}. This is the Python reference's optional-validator FALLBACK behaviour: the - * reference tries {@code jsonschema_rs} / {@code jsonschema} and, when neither is installed, - * skips validation. Java has no bundled JSON-Schema validator dependency, so only the - * always-available built-in check is ported here (a real dependency limit — see the class docs). - * If no properties are declared, validation passes. + * {@code type}. This SDK bundles no JSON-Schema validator dependency, so this built-in check is + * the whole of the validation — constructs beyond {@code required} and {@code type} (patterns, + * ranges, nested schemas) are not enforced. If no properties are declared, validation passes. * * @param args arguments to validate * @return a {@link ValidationResult} of {@code (valid, errors)} @@ -323,6 +386,11 @@ private Map ensureParameterStructure() { // ---- Builder (the single __init__) ---- + /** + * Start defining a SWAIG function. + * + * @return a fresh {@link Builder}, with {@code secure} already defaulted to {@code true}. + */ public static Builder builder() { return new Builder(); } @@ -344,56 +412,128 @@ public static final class Builder { private boolean isTypedHandler = false; private Map extraSwaigFields; + /** + * The function name the model calls this tool by. Required. + * + * @param name the function name; a snake_case verb reads best to the model. + * @return this builder. + */ public Builder name(String name) { this.name = name; return this; } + /** + * The Java callable invoked when the model calls this tool. Required. + * + * @param handler the handler. + * @return this builder. + */ public Builder handler(Handler handler) { this.handler = handler; return this; } + /** + * The LLM-facing description of when to call this tool. Required, and load-bearing — the model + * reads it to decide whether this tool applies. + * + * @param description the description. + * @return this builder. + */ public Builder description(String description) { this.description = description; return this; } + /** + * JSON-schema properties for the tool's arguments. Each property's own {@code description} is + * what the model uses to fill that argument from what the caller said, so write them for the + * model. + * + * @param parameters the properties map. + * @return this builder. + */ public Builder parameters(Map parameters) { this.parameters = parameters; return this; } + /** + * Whether the rendered webhook URL carries a signed {@code __token}. Defaults to {@code true}; + * passing {@code false} publishes a webhook anyone who can see the SWML can invoke. + * + * @param secure whether the tool is secure. + * @return this builder. + */ public Builder secure(boolean secure) { this.secure = secure; return this; } + /** + * Per-language phrases the agent speaks while this tool runs, keyed by language code, so the + * caller hears something during a slow handler. + * + * @param fillers the filler phrases. + * @return this builder. + */ public Builder fillers(Map fillers) { this.fillers = fillers; return this; } + /** + * Audio to play while this tool runs, as an alternative to spoken {@link #fillers(Map)}. + * + * @param waitFile the audio file URL. + * @return this builder. + */ public Builder waitFile(String waitFile) { this.waitFile = waitFile; return this; } + /** + * How many times the wait file repeats. + * + * @param waitFileLoops the loop count, or {@code null} for the platform default. + * @return this builder. + */ public Builder waitFileLoops(Integer waitFileLoops) { this.waitFileLoops = waitFileLoops; return this; } + /** + * Have the platform call this endpoint for the tool instead of this agent. Supplying it also + * makes the function {@linkplain SWAIGFunction#isExternal() external}. + * + * @param webhookUrl the external endpoint, or {@code null} to run on this agent. + * @return this builder. + */ public Builder webhookUrl(String webhookUrl) { this.webhookUrl = webhookUrl; return this; } + /** + * Which parameters the model must supply. Rendered into the JSON-schema {@code required} array. + * + * @param required the required parameter names. + * @return this builder. + */ public Builder required(List required) { this.required = required; return this; } + /** + * Whether the handler expects typed arguments rather than the raw argument map. + * + * @param isTypedHandler whether the handler is typed. + * @return this builder. + */ public Builder isTypedHandler(boolean isTypedHandler) { this.isTypedHandler = isTypedHandler; return this; @@ -405,6 +545,13 @@ public Builder extraSwaigFields(Map extraSwaigFields) { return this; } + /** + * Construct the function, checking the three required fields. + * + * @return the constructed function. + * @throws IllegalArgumentException if {@code name}, {@code handler}, or {@code description} was + * not set. + */ public SWAIGFunction build() { if (name == null) { throw new IllegalArgumentException("SWAIGFunction requires a name"); @@ -429,10 +576,20 @@ public ValidationResult(boolean valid, List errors) { this.errors = errors; } + /** + * Whether the validated arguments satisfied the function's schema. + * + * @return {@code true} when there were no errors. + */ public boolean isValid() { return valid; } + /** + * The validation failures, empty when {@link #isValid()} is {@code true}. + * + * @return the error messages. + */ public List getErrors() { return errors; } diff --git a/src/main/java/com/signalwire/sdk/swaig/ToolDefinition.java b/src/main/java/com/signalwire/sdk/swaig/ToolDefinition.java index 64a1094d..9ec29fd1 100644 --- a/src/main/java/com/signalwire/sdk/swaig/ToolDefinition.java +++ b/src/main/java/com/signalwire/sdk/swaig/ToolDefinition.java @@ -22,10 +22,20 @@ public ToolDefinition( this.handler = handler; } + /** + * The function name the model calls this tool by. + * + * @return the tool name. + */ public String getName() { return name; } + /** + * The LLM-facing description of when to call this tool — prompt text the model reasons over. + * + * @return the description. + */ public String getDescription() { return description; } @@ -34,19 +44,44 @@ public Map getParameters() { return Collections.unmodifiableMap(parameters); } + /** + * The Java callable invoked when the model calls this tool. + * + * @return the handler. + */ public ToolHandler getHandler() { return handler; } + /** + * Whether the rendered webhook URL carries a signed {@code __token} the {@code /swaig} handler + * validates. Defaults to {@code true}. + * + * @return whether the tool is secure. + */ public boolean isSecure() { return secure; } + /** + * Turn the signed-token requirement on or off. Passing {@code false} publishes a webhook anyone + * who can see the rendered SWML can invoke. + * + * @param secure whether the tool is secure. + * @return this definition, for chaining. + */ public ToolDefinition setSecure(boolean secure) { this.secure = secure; return this; } + /** + * Extra SWAIG-only fields to render alongside the standard ones ({@code meta_data_token}, {@code + * web_hook_auth_*}, and the like). + * + * @param extraFields the additional fields. + * @return this definition, for chaining. + */ public ToolDefinition setExtraFields(Map extraFields) { this.extraFields = extraFields; return this; @@ -57,12 +92,10 @@ public Map getExtraFields() { } /** - * Serialize to SWAIG function format for SWML. Mirrors the Python reference ({@code - * SWAIGFunction.to_swaig} / {@code AgentBase._render_swaig_functions}): the function definition - * carries {@code function} (name), {@code description}, and {@code parameters} — the latter - * passed through {@link #ensureParameterStructure()} so a complete {@code {type,properties}} - * schema renders FLAT (not double-wrapped) and a bare property map is wrapped in {@code - * {type:object,properties:…}}. + * Serialize to SWAIG function format for SWML. The function definition carries {@code function} + * (name), {@code description}, and {@code parameters} — the latter passed through {@link + * #ensureParameterStructure()} so a complete {@code {type,properties}} schema renders FLAT (not + * double-wrapped) and a bare property map is wrapped in {@code {type:object,properties:…}}. */ public Map toSwaigFunction(String webhookUrl, String metaDataToken) { Map func = new LinkedHashMap<>(); @@ -82,8 +115,7 @@ public Map toSwaigFunction(String webhookUrl, String metaDataTok } /** - * Structure the parameters for the SWML wire — the Java mirror of Python's {@code - * SWAIGFunction._ensure_parameter_structure}: an empty map becomes {@code + * Structure the parameters for the SWML wire: an empty map becomes {@code * {type:object,properties:{}}}; a map already carrying {@code type} + {@code properties} passes * through unchanged (a complete schema is NOT double-wrapped); otherwise the map is treated as a * bare property set and wrapped in {@code {type:object,properties:…}}. diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPrompt.java b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPrompt.java index 4c6034ad..6cb7945e 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPrompt.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPrompt.java @@ -9,8 +9,8 @@ /** * PostPrompt — generated wire type (post-prompt components/schemas 'PostPrompt'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPrompt { public String content_type; diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptAssistantEntry.java b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptAssistantEntry.java index 3f4aa1cc..8c23b30e 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptAssistantEntry.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptAssistantEntry.java @@ -10,8 +10,8 @@ * PostPromptAssistantEntry — generated wire type (post-prompt components/schemas * 'PostPromptAssistantEntry'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptAssistantEntry { public String role; diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptData.java b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptData.java index 17d9524b..ac263f1a 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptData.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptData.java @@ -9,8 +9,8 @@ /** * PostPromptData — generated wire type (post-prompt components/schemas 'PostPromptData'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptData { public java.util.List parsed; diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptEntity.java b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptEntity.java index ea82fe53..c49f0bdc 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptEntity.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptEntity.java @@ -9,8 +9,8 @@ /** * PostPromptEntity — generated wire type (post-prompt components/schemas 'PostPromptEntity'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptEntity { public String type; diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptEot.java b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptEot.java index dc5db0d0..0418f05a 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptEot.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptEot.java @@ -9,8 +9,8 @@ /** * PostPromptEot — generated wire type (post-prompt components/schemas 'PostPromptEot'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptEot { public String basis; diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptStampsUs.java b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptStampsUs.java index 3649b6fc..3fc6e20c 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptStampsUs.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptStampsUs.java @@ -9,8 +9,8 @@ /** * PostPromptStampsUs — generated wire type (post-prompt components/schemas 'PostPromptStampsUs'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptStampsUs { public Long speech_start; diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptSwaigLogEntry.java b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptSwaigLogEntry.java index 162cf80d..d88980a1 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptSwaigLogEntry.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptSwaigLogEntry.java @@ -10,8 +10,8 @@ * PostPromptSwaigLogEntry — generated wire type (post-prompt components/schemas * 'PostPromptSwaigLogEntry'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptSwaigLogEntry { public String command_name; @@ -29,6 +29,6 @@ public final class PostPromptSwaigLogEntry { public java.util.Map delayed_post_response; public String mcp_url; public String mcp_tool; - public java.util.Map mcp_response; - public String mcp_error; + public String mcp_response; + public Boolean mcp_error; } diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptSystemEntry.java b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptSystemEntry.java index 5d039cd9..9a789bf3 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptSystemEntry.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptSystemEntry.java @@ -10,8 +10,8 @@ * PostPromptSystemEntry — generated wire type (post-prompt components/schemas * 'PostPromptSystemEntry'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptSystemEntry { public String role; diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptSystemLogEntry.java b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptSystemLogEntry.java index 2976e260..983ecca2 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptSystemLogEntry.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptSystemLogEntry.java @@ -10,8 +10,8 @@ * PostPromptSystemLogEntry — generated wire type (post-prompt components/schemas * 'PostPromptSystemLogEntry'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptSystemLogEntry { public String role; @@ -22,7 +22,4 @@ public final class PostPromptSystemLogEntry { public Long tokens; public String content_type; public java.util.Map metadata; - public String context; - public String step; - public Long step_index; } diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptThinkingEntry.java b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptThinkingEntry.java index 2bb082d6..136d7400 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptThinkingEntry.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptThinkingEntry.java @@ -10,8 +10,8 @@ * PostPromptThinkingEntry — generated wire type (post-prompt components/schemas * 'PostPromptThinkingEntry'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptThinkingEntry { public String role; diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptTimesEntry.java b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptTimesEntry.java index 5a9dcd12..75f5b4db 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptTimesEntry.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptTimesEntry.java @@ -10,8 +10,8 @@ * PostPromptTimesEntry — generated wire type (post-prompt components/schemas * 'PostPromptTimesEntry'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptTimesEntry { public String response; diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptTiming.java b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptTiming.java index 97801191..4edf8537 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptTiming.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptTiming.java @@ -9,8 +9,8 @@ /** * PostPromptTiming — generated wire type (post-prompt components/schemas 'PostPromptTiming'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptTiming { public Double hold_ms; diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptToolEntry.java b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptToolEntry.java index 689295c2..f42bb59c 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptToolEntry.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptToolEntry.java @@ -9,8 +9,8 @@ /** * PostPromptToolEntry — generated wire type (post-prompt components/schemas 'PostPromptToolEntry'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptToolEntry { public String role; diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptUserEntry.java b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptUserEntry.java index eb08bd79..f136bfb7 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptUserEntry.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/postprompt/PostPromptUserEntry.java @@ -9,8 +9,8 @@ /** * PostPromptUserEntry — generated wire type (post-prompt components/schemas 'PostPromptUserEntry'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PostPromptUserEntry { public String role; diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/ContextSwitchAction.java b/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/ContextSwitchAction.java index 7fb3a165..49da806c 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/ContextSwitchAction.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/ContextSwitchAction.java @@ -9,14 +9,14 @@ /** * ContextSwitchAction — generated wire type (swaig-response action 'context_switch' value object). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextSwitchAction { - public java.util.Map system_prompt; - public java.util.Map user_prompt; - public java.util.Map system_pom; - public java.util.Map user_pom; public Boolean consolidate; public Boolean full_reset; + public java.util.Map system_pom; + public String system_prompt; + public java.util.Map user_pom; + public String user_prompt; } diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/HoldAction.java b/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/HoldAction.java index 914d85d8..507530ef 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/HoldAction.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/HoldAction.java @@ -9,9 +9,9 @@ /** * HoldAction — generated wire type (swaig-response action 'hold' value object). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class HoldAction { - public Long timeout; + public Double timeout; } diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/PlaybackBgAction.java b/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/PlaybackBgAction.java index 53aeb5ca..f2163180 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/PlaybackBgAction.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/PlaybackBgAction.java @@ -9,10 +9,10 @@ /** * PlaybackBgAction — generated wire type (swaig-response action 'playback_bg' value object). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PlaybackBgAction { - public java.util.Map file; + public String file; public Boolean wait; } diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/SwaigAction.java b/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/SwaigAction.java new file mode 100644 index 00000000..5e8c552c --- /dev/null +++ b/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/SwaigAction.java @@ -0,0 +1,43 @@ +// Code generated by scripts/generate_rest.py; DO NOT EDIT. +// +// AUTO-GENERATED from porting-sdk/ (schemas) — regenerate with the generator. +// +// swaig-response 'SwaigAction' envelope schema + +package com.signalwire.sdk.swaig.generated.swaigactions; + +/** + * SwaigAction — generated wire type (swaig-response 'SwaigAction' envelope schema). + * + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. + */ +public final class SwaigAction { + public java.util.List add_dynamic_hints; + public java.util.Map back_to_back_functions; + public String change_context; + public String change_step; + public Boolean clear_dynamic_hints; + public java.util.Map context_switch; + public Long end_of_speech_timeout; + public Boolean extensive_data; + public Boolean functions_on_speaker_timeout; + public Boolean hangup; + public java.util.Map hold; + public java.util.Map playback_bg; + public java.util.Map replace_in_history; + public String say; + public java.util.Map set_global_data; + public java.util.Map set_meta_data; + public java.util.Map settings; + public Long speech_event_timeout; + public Boolean stop; + public Boolean stop_playback_bg; + public java.util.List toggle_functions; + public java.util.Map transfer; + public java.util.Map unset_global_data; + public java.util.Map unset_meta_data; + public java.util.Map user_event; + public String user_input; + public java.util.Map wait_for_user; +} diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/SwaigResponse.java b/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/SwaigResponse.java new file mode 100644 index 00000000..bdab0f70 --- /dev/null +++ b/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/SwaigResponse.java @@ -0,0 +1,19 @@ +// Code generated by scripts/generate_rest.py; DO NOT EDIT. +// +// AUTO-GENERATED from porting-sdk/ (schemas) — regenerate with the generator. +// +// swaig-response 'SwaigResponse' envelope schema + +package com.signalwire.sdk.swaig.generated.swaigactions; + +/** + * SwaigResponse — generated wire type (swaig-response 'SwaigResponse' envelope schema). + * + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. + */ +public final class SwaigResponse { + public String response; + public java.util.Map action; + public Boolean post_process; +} diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/TransferAction.java b/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/TransferAction.java index 0ab2beb2..e5f71184 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/TransferAction.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/swaigactions/TransferAction.java @@ -9,10 +9,10 @@ /** * TransferAction — generated wire type (swaig-response action 'transfer' value object). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class TransferAction { - public java.util.Map dest; + public String dest; public Boolean summarize; } diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/swaigrequest/SwaigArgument.java b/src/main/java/com/signalwire/sdk/swaig/generated/swaigrequest/SwaigArgument.java index 73381da5..286b04b1 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/swaigrequest/SwaigArgument.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/swaigrequest/SwaigArgument.java @@ -9,8 +9,8 @@ /** * SwaigArgument — generated wire type (inline swaig-request `argument` object). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwaigArgument { public java.util.List parsed; diff --git a/src/main/java/com/signalwire/sdk/swaig/generated/swaigrequest/SwaigRequest.java b/src/main/java/com/signalwire/sdk/swaig/generated/swaigrequest/SwaigRequest.java index 11be11f5..c30721ae 100644 --- a/src/main/java/com/signalwire/sdk/swaig/generated/swaigrequest/SwaigRequest.java +++ b/src/main/java/com/signalwire/sdk/swaig/generated/swaigrequest/SwaigRequest.java @@ -9,8 +9,8 @@ /** * SwaigRequest — generated wire type (swaig-request `SwaigRequest` schema). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwaigRequest { public String ai_session_id; diff --git a/src/main/java/com/signalwire/sdk/swml/AIVerbHandler.java b/src/main/java/com/signalwire/sdk/swml/AIVerbHandler.java index 8018ce1d..05aaae79 100644 --- a/src/main/java/com/signalwire/sdk/swml/AIVerbHandler.java +++ b/src/main/java/com/signalwire/sdk/swml/AIVerbHandler.java @@ -16,8 +16,7 @@ * Handler for the SWML 'ai' verb. * *

      The 'ai' verb is complex and requires specialized handling, particularly for managing prompts, - * SWAIG functions, and AI configurations. Mirrors the Python reference {@code - * signalwire.core.swml_handler.AIVerbHandler} and the Ruby {@code SignalWire::SWML::AIVerbHandler}. + * SWAIG functions, and AI configurations. */ public class AIVerbHandler extends SWMLVerbHandler { @@ -25,6 +24,11 @@ public class AIVerbHandler extends SWMLVerbHandler { private static final Set TOP_LEVEL_AI_KEYS = Set.of("languages", "hints", "pronounce", "global_data"); + /** + * The SWML verb this handler validates and renders: {@code ai}. + * + * @return the verb name. + */ @Override public String getVerbName() { return "ai"; @@ -34,8 +38,9 @@ public String getVerbName() { * Validate the configuration for the AI verb. * *

      Checks that {@code prompt} is present and an object, contains exactly one of {@code text} / - * {@code pom} (mutually exclusive), that {@code prompt.contexts} (if present) is an object, and - * that {@code SWAIG} (if present) is an object. + * {@code pom} (mutually exclusive), that {@code prompt.contexts} (if present) is an object, that + * {@code post_prompt} (if present) is an object, and that {@code SWAIG} (if present) is an + * object. * * @param config the AI verb configuration * @return a {@link ValidationResult} of (isValid, errorMessages) @@ -70,6 +75,19 @@ public ValidationResult validateConfig(Map config) { errors.add("'prompt.contexts' must be an object"); } + // post_prompt is OPTIONAL, but when present the engine holds it to the SAME + // contract as prompt: mod_openai/app_config.c checks + // !cJSON_IsObject(assistant_prompt) at :3193 and !cJSON_IsObject(post_prompt) at + // :3219 — same structure, same fatal:true calling.error, and both error payloads + // read "must be an object with 'text' or 'pom' field". Validating one and not the + // other reported configs VALID that abort the call on the wire; buildConfig has + // always emitted the right shape, so the hole was only reachable by a caller + // hand-assembling a config — which is exactly how signalwire-go shipped a + // bare-string post_prompt (go 51934ec). + if (config.containsKey("post_prompt") && !(config.get("post_prompt") instanceof Map)) { + errors.add("'post_prompt' must be an object"); + } + if (config.containsKey("SWAIG") && !(config.get("SWAIG") instanceof Map)) { errors.add("'SWAIG' must be an object"); } diff --git a/src/main/java/com/signalwire/sdk/swml/Codec.java b/src/main/java/com/signalwire/sdk/swml/Codec.java index 40975d96..10377277 100644 --- a/src/main/java/com/signalwire/sdk/swml/Codec.java +++ b/src/main/java/com/signalwire/sdk/swml/Codec.java @@ -19,9 +19,9 @@ * PCMU,PCMA,OPUS,G729,G722,VP8,H264}, comma-joined); the 2-value SWAIG tap codec set is * deliberately distinct and never shared. * - *

      The wire strings are upper-case ({@code "PCMU"} / {@code "PCMA"}), matching the reference's - * literal list exactly. Each constant's {@link #getValue() value} is the canonical wire string, so - * routing a tap through the enum is byte-for-byte identical to passing that string. + *

      The wire strings are upper-case ({@code "PCMU"} / {@code "PCMA"}). Each constant's {@link + * #getValue() value} is the canonical wire string, so routing a tap through the enum is + * byte-for-byte identical to passing that string. */ public enum Codec implements WireEnum { PCMU("PCMU"), @@ -35,7 +35,6 @@ public enum Codec implements WireEnum { /** * The canonical (upper-case) wire string for this codec ({@code "PCMU"} / {@code "PCMA"}). - * Equivalent to PHP's backed-enum {@code ->value}. * * @return the upper-case codec name as it appears on the wire. */ @@ -46,9 +45,8 @@ public String getValue() { /** * Parse a wire string into a {@link Codec}, or return {@code null} if it is not a recognised - * codec. Matching is exact (case-sensitive), mirroring the reference's literal {@code in ["PCMU", - * "PCMA"]} check (so {@code "pcmu"} returns {@code null}). The Java analog of Rust's {@code - * from_str}. + * codec. Matching is exact and case-sensitive — the server compares against the literal + * upper-case names, so {@code "pcmu"} returns {@code null} rather than {@link #PCMU}. * * @param wire the candidate wire string (case-sensitive). * @return the matching constant, or {@code null} if none matches. diff --git a/src/main/java/com/signalwire/sdk/swml/RecordDirection.java b/src/main/java/com/signalwire/sdk/swml/RecordDirection.java index 460cb30e..a78cb77a 100644 --- a/src/main/java/com/signalwire/sdk/swml/RecordDirection.java +++ b/src/main/java/com/signalwire/sdk/swml/RecordDirection.java @@ -38,7 +38,7 @@ public enum RecordDirection implements WireEnum { /** * The canonical wire string for this direction ({@code "speak"} / {@code "listen"} / {@code - * "both"}). Equivalent to PHP's backed-enum {@code ->value}. + * "both"}). * * @return the lower-case direction name as it appears on the wire. */ @@ -49,9 +49,8 @@ public String getValue() { /** * Parse a wire string into a {@link RecordDirection}, or return {@code null} if it is not a - * recognised direction (the same strings the Python reference would reject with {@code - * ValueError}). Note {@code "hear"} is valid for {@link TapDirection} but NOT for {@code - * record_call}, so it returns {@code null} here. The Java analog of Rust's {@code from_str}. + * recognised direction — the same strings the server rejects. Note {@code "hear"} is valid for + * {@link TapDirection} but NOT for {@code record_call}, so it returns {@code null} here. * * @param wire the candidate wire string (case-sensitive). * @return the matching constant, or {@code null} if none matches. diff --git a/src/main/java/com/signalwire/sdk/swml/RecordFormat.java b/src/main/java/com/signalwire/sdk/swml/RecordFormat.java index aa4578cc..afa6cec0 100644 --- a/src/main/java/com/signalwire/sdk/swml/RecordFormat.java +++ b/src/main/java/com/signalwire/sdk/swml/RecordFormat.java @@ -34,7 +34,6 @@ public enum RecordFormat implements WireEnum { /** * The canonical wire string for this format ({@code "mp3"} / {@code "wav"} / {@code "mp4"}). - * Equivalent to PHP's backed-enum {@code ->value}. * * @return the lower-case format name as it appears on the wire. */ diff --git a/src/main/java/com/signalwire/sdk/swml/SWMLBuilder.java b/src/main/java/com/signalwire/sdk/swml/SWMLBuilder.java index b5fa1989..1ee5e64e 100644 --- a/src/main/java/com/signalwire/sdk/swml/SWMLBuilder.java +++ b/src/main/java/com/signalwire/sdk/swml/SWMLBuilder.java @@ -13,15 +13,18 @@ /** * Fluent builder for SWML documents. * - *

      Mirrors the Python reference {@code signalwire.core.swml_builder.SWMLBuilder} (which wraps an - * {@code SWMLService}) and the Ruby {@code SignalWire::SWML::SWMLBuilder}. It delegates to an - * underlying {@link Service} instance for the actual document creation. + *

      Delegates to an underlying {@link Service} instance for the actual document creation. * *

      The explicit verb helpers ({@link #answer()}, {@link #hangup()}, {@link #play(Map)}, {@link * #ai(Map)}, {@link #say(String)}) cover the common verbs; every other schema verb is dispatched - * through {@link #verb(String, Map)} / {@link #sleepVerb(int)} — the Java analog of the Python - * reference's runtime {@code __getattr__} verb dispatch (Java has no {@code __getattr__} / {@code - * method_missing}, so the catch-all is a named method). + * through {@link #verb(String, Map)} / {@link #sleepVerb(int)}, which take the verb name as an + * argument. + * + *

      Every verb goes through {@link Service#addVerb} — the validating choke point. The + * builder must never reach past it to {@code service.getDocument().addVerb(...)}: the raw Document + * entry point writes whatever it is handed, which is how schema-invalid configs shipped silently + * (an empty {@code play} with no url, an {@code ai} with no prompt, LLM tuning keys at the {@code + * ai} verb's top level). */ public class SWMLBuilder { @@ -69,7 +72,7 @@ public SWMLBuilder answer(Integer maxDuration, String codecs) { if (codecs != null) { config.put("codecs", codecs); } - service.getDocument().addVerb("answer", config); + service.addVerb("answer", config); return this; } @@ -93,7 +96,7 @@ public SWMLBuilder hangup(String reason) { if (reason != null) { config.put("reason", reason); } - service.getDocument().addVerb("hangup", config); + service.addVerb("hangup", config); return this; } @@ -108,7 +111,7 @@ public SWMLBuilder hangup(String reason) { * @return this for chaining */ public SWMLBuilder ai(Map config) { - service.getDocument().addVerb("ai", config != null ? config : new LinkedHashMap<>()); + service.addVerb("ai", config != null ? config : new LinkedHashMap<>()); return this; } @@ -163,7 +166,7 @@ public SWMLBuilder ai( config.putAll(kwargs); } - service.getDocument().addVerb("ai", config); + service.addVerb("ai", config); return this; } @@ -174,7 +177,7 @@ public SWMLBuilder ai( * @return this for chaining */ public SWMLBuilder play(Map config) { - service.getDocument().addVerb("play", config != null ? config : new LinkedHashMap<>()); + service.addVerb("play", config != null ? config : new LinkedHashMap<>()); return this; } @@ -222,7 +225,7 @@ public SWMLBuilder play( if (autoAnswer != null) { config.put("auto_answer", autoAnswer); } - service.getDocument().addVerb("play", config); + service.addVerb("play", config); return this; } @@ -321,7 +324,7 @@ public SWMLBuilder verb(String name, Map config) { } } } - service.getDocument().addVerb(name, clean); + service.addVerb(name, clean); return this; } @@ -333,7 +336,7 @@ public SWMLBuilder verb(String name, Map config) { * @return this for chaining */ public SWMLBuilder sleepVerb(int milliseconds) { - service.getDocument().addVerb("sleep", milliseconds); + service.addVerb("sleep", milliseconds); return this; } } diff --git a/src/main/java/com/signalwire/sdk/swml/SWMLVerbHandler.java b/src/main/java/com/signalwire/sdk/swml/SWMLVerbHandler.java index cdaa913d..0db3fae2 100644 --- a/src/main/java/com/signalwire/sdk/swml/SWMLVerbHandler.java +++ b/src/main/java/com/signalwire/sdk/swml/SWMLVerbHandler.java @@ -13,12 +13,11 @@ * Base interface for SWML verb handlers. * *

      Verb handlers provide specialized logic for complex SWML verbs that cannot be handled - * generically. Mirrors the Python reference {@code signalwire.core.swml_handler.SWMLVerbHandler} - * (an ABC) and the Ruby {@code SignalWire::SWML::SWMLVerbHandler}. + * generically. * - *

      This is an abstract class whose methods throw {@link UnsupportedOperationException} — the Java - * analog of Python's {@code @abstractmethod} / Ruby's {@code NotImplementedError}: a subclass that - * forgets to override them fails loudly. + *

      Every method on this abstract class throws {@link UnsupportedOperationException} rather than + * returning a default, so a subclass that forgets to override one fails loudly at the call site + * instead of silently emitting an empty verb config. */ public abstract class SWMLVerbHandler { @@ -54,10 +53,7 @@ public Map buildConfig(Map kwargs) { getClass().getSimpleName() + "#buildConfig must be implemented"); } - /** - * Result of {@link #validateConfig(Map)} — the Java analog of the reference's {@code (bool, - * list[str])} tuple: a validity flag plus the list of error messages. - */ + /** Result of {@link #validateConfig(Map)}: a validity flag plus the list of error messages. */ public static final class ValidationResult { private final boolean valid; private final List errors; diff --git a/src/main/java/com/signalwire/sdk/swml/Schema.java b/src/main/java/com/signalwire/sdk/swml/Schema.java index 26504e8b..a62b4fc2 100644 --- a/src/main/java/com/signalwire/sdk/swml/Schema.java +++ b/src/main/java/com/signalwire/sdk/swml/Schema.java @@ -41,6 +41,11 @@ private Schema() { load(); } + /** + * The process-wide SWML schema, loaded from the bundled {@code schema.json} on first use. + * + * @return the shared schema instance. + */ public static Schema getInstance() { if (instance == null) { synchronized (Schema.class) { diff --git a/src/main/java/com/signalwire/sdk/swml/SchemaUtils.java b/src/main/java/com/signalwire/sdk/swml/SchemaUtils.java index f6d2e71d..9a00370f 100644 --- a/src/main/java/com/signalwire/sdk/swml/SchemaUtils.java +++ b/src/main/java/com/signalwire/sdk/swml/SchemaUtils.java @@ -28,12 +28,10 @@ import java.util.TreeSet; /** - * SchemaUtils — Java port of {@code signalwire.utils.schema_utils.SchemaUtils}. + * SchemaUtils — loads the SWML JSON Schema, extracts verb metadata, and validates either a single + * verb config or a complete SWML document. * - *

      Loads the SWML JSON Schema, extracts verb metadata, and validates either a single verb config - * or a complete SWML document. - * - *

      Construction rules mirror Python: + *

      Construction rules: * *

        *
      • Pass {@code schemaPath=null} to use the embedded {@code schema.json}. @@ -43,10 +41,10 @@ * regardless of the constructor argument. *
      * - *

      The Java port currently ships only the lightweight validator (verb existence + - * required-property check). Full JSON Schema validation can be wired in by extending {@link - * #initFullValidator()}. The lightweight contract matches Python's {@code - * _validate_verb_lightweight()} exactly. + *

      Only the lightweight validator ships today: it checks that the verb exists in the schema and + * that every required property is present, but does not enforce property types or nested + * constraints. Full JSON Schema validation can be wired in by extending {@link + * #initFullValidator()}. */ public class SchemaUtils { @@ -72,8 +70,7 @@ public static final class VerbInfo { } /** - * Construct a SchemaUtils. Mirrors Python's {@code SchemaUtils(schema_path=None, - * schema_validation=True)}. + * Construct a SchemaUtils. * * @param schemaPath optional path to a schema.json file; pass null to use the embedded resource * bundled with the SDK jar. @@ -100,8 +97,7 @@ private static boolean isEnvBoolish(String v) { /** * The explicit schema file path this instance was constructed with, or {@code null} when the - * embedded resource is used. Mirrors Python's {@code schema_utils.schema_path} attribute (read by - * {@code AgentBase.__init__} at agent_base.py:210). + * embedded resource is used. {@code AgentBase} reads this when it builds its own schema view. * * @return the configured schema path, or null. */ @@ -109,7 +105,11 @@ public String getSchemaPath() { return schemaPath; } - /** Read and parse the JSON Schema. Mirrors Python's {@code load_schema()}. */ + /** + * Read and parse the JSON Schema — from {@code schemaPath} when one was given, otherwise from the + * {@code schema.json} resource bundled in the jar. Returns an empty object rather than throwing + * when the schema cannot be read. + */ public JsonObject loadSchema() { try { InputStream is; @@ -176,21 +176,20 @@ private void initFullValidator() { } /** - * Whether full JSON Schema validation is wired up. Mirrors Python's {@code - * full_validation_available} property. + * Whether full JSON Schema validation is wired up. When {@code false}, {@link #validateVerb} + * falls back to the required-property-only check. */ public boolean isFullValidationAvailable() { return this.fullValidator != null; } - /** Sorted list of all known verb names. Mirrors Python's {@code get_all_verb_names()}. */ + /** Sorted list of all known verb names. */ public List getAllVerbNames() { return new ArrayList<>(new TreeSet<>(verbs.keySet())); } /** * The {@code properties[verb_name]} block for a verb, or an empty map when the verb is unknown. - * Mirrors Python's {@code get_verb_properties(verb_name)}. */ public Map getVerbProperties(String verbName) { VerbInfo v = verbs.get(verbName); @@ -204,7 +203,7 @@ public Map getVerbProperties(String verbName) { /** * The {@code required} list for a verb, or an empty list when the verb is unknown or has no - * required properties. Mirrors Python's {@code get_verb_required_properties(verb_name)}. + * required properties. */ public List getVerbRequiredProperties(String verbName) { VerbInfo v = verbs.get(verbName); @@ -226,10 +225,7 @@ public List getVerbRequiredProperties(String verbName) { return out; } - /** - * Parameter-definition block used by code-gen tooling. Mirrors Python's {@code - * get_verb_parameters(verb_name)}. - */ + /** Parameter-definition block used by code-gen tooling. */ public Map getVerbParameters(String verbName) { Map inner = getVerbProperties(verbName); Object props = inner.get("properties"); @@ -242,11 +238,10 @@ public Map getVerbParameters(String verbName) { } /** - * Validate a verb config against the schema. Mirrors Python's {@code validate_verb(verb_name, - * verb_config)}. + * Validate a verb config against the schema. * - * @return ({@code valid}, {@code errors}) entry; mirrors Python's {@code Tuple[bool, List[str]]} - * return. + * @return an entry of ({@code valid}, {@code errors}) — the flag is {@code true} only when the + * error list is empty. */ public Map.Entry> validateVerb( String verbName, Map verbConfig) { @@ -263,6 +258,37 @@ public Map.Entry> validateVerb( return validateVerbLightweight(verbName, verbConfig); } + // Validate a verb config of ANY JSON shape — not just an object. PACKAGE-PRIVATE on + // purpose: it is the Service.addVerb implementation detail that lets Java match what + // Python's dynamically-typed validate_verb already accepts, so it must NOT widen the + // public surface (the reference declares only validate_verb(verb_name, verb_config)). + // + // validateVerb takes a Map because most verb configs are objects, but the schema says + // otherwise for several: cond and toggle_functions are ARRAYS, label/say/change_context + // are STRINGS, and sleep/hangup/unset union a primitive with an object. A caller that + // assumes "config must be a Map" therefore rejects legal documents. This entry point + // serialises whatever it is given — a Map, a List, a boxed primitive, or a generated + // typed config POJO — to the exact JSON the wire will carry, and validates THAT. + Map.Entry> validateVerbValue(String verbName, Object verbConfig) { + if (!validationEnabled) { + return new AbstractMap.SimpleImmutableEntry<>(true, Collections.emptyList()); + } + if (!verbs.containsKey(verbName)) { + return new AbstractMap.SimpleImmutableEntry<>( + false, Collections.singletonList("Unknown verb: " + verbName)); + } + if (fullValidator == null) { + // The lightweight path only knows how to check required keys on an object. + if (verbConfig instanceof Map) { + @SuppressWarnings("unchecked") + Map asMap = (Map) verbConfig; + return validateVerbLightweight(verbName, asMap); + } + return new AbstractMap.SimpleImmutableEntry<>(true, Collections.emptyList()); + } + return validateVerbElement(verbName, new Gson().toJsonTree(verbConfig)); + } + private Map.Entry> validateVerbFull( String verbName, Map verbConfig) { // Full structural validation against the vendored SWML JSON Schema @@ -290,8 +316,21 @@ private Map.Entry> validateVerbFull( if (!outerProps.has(verbName) || !outerProps.get(verbName).isJsonObject()) { return validateVerbLightweight(verbName, verbConfig); } + return validateVerbElement(verbName, new Gson().toJsonTree(verbConfig)); + } + + /** Validate an already-serialised config element against the verb's inner schema. */ + private Map.Entry> validateVerbElement( + String verbName, JsonElement configEl) { + VerbInfo v = verbs.get(verbName); + if (v == null || !v.definition.has("properties")) { + return new AbstractMap.SimpleImmutableEntry<>(true, Collections.emptyList()); + } + JsonObject outerProps = v.definition.getAsJsonObject("properties"); + if (!outerProps.has(verbName) || !outerProps.get(verbName).isJsonObject()) { + return new AbstractMap.SimpleImmutableEntry<>(true, Collections.emptyList()); + } JsonObject innerSchema = outerProps.getAsJsonObject(verbName); - JsonElement configEl = new Gson().toJsonTree(verbConfig); List errors = new ArrayList<>(); // The ai verb is validated TOP-LEVEL-KEYS ONLY (reject unknown/misspelled // top-level keys + require `prompt`; ai.params stays open). Its deep @@ -400,6 +439,21 @@ private void validateAgainst( } JsonObject schema = schemaEl.getAsJsonObject(); + // x-sdk-widen — a DECLARED ruling that this field's const/enum union is a + // documentation HINT, not a closed set: the platform accepts values outside + // it. Enforcing the union anyway invents a constraint the server does not + // have and makes the SDK reject documents that work on the wire. Honour the + // flag by checking only the underlying TYPE of each branch, never the const. + // + // Exactly one field carries it today — $defs/Hangup.reason, whose + // hangup|busy|decline union this validator was rejecting anything outside of. + if (schema.has("x-sdk-widen") + && schema.get("x-sdk-widen").isJsonPrimitive() + && schema.get("x-sdk-widen").getAsBoolean()) { + validateWidened(schema, value, path, errors); + return; + } + // $ref — resolve and validate against the referenced def. if (schema.has("$ref") && schema.get("$ref").isJsonPrimitive()) { JsonObject resolved = resolveRef(schema.get("$ref").getAsString()); @@ -595,6 +649,53 @@ private boolean matchesQuiet(JsonElement schemaEl, JsonElement value, int depth) return local.isEmpty(); } + // Validate a field the schema marks as widened: keep the TYPE constraint, drop the + // const/enum membership constraint. For such a field the listed values are a hint + // about what it usually carries, not a closed set the platform enforces — so + // {"reason": "done"} on hangup is a legal document even though "done" is not one of + // the three listed values. A branch's $ref is resolved so a widened field that + // unions a primitive with, say, SWMLVar still accepts the SWMLVar object form. + // No `depth` parameter: unlike validateAgainst this method never recurses -- + // it only calls the non-recursive checkType -- so there is no depth to guard. + private void validateWidened( + JsonObject schema, JsonElement value, String path, List errors) { + List branches = new ArrayList<>(); + for (String key : List.of("anyOf", "oneOf")) { + if (schema.has(key) && schema.get(key).isJsonArray()) { + for (JsonElement sub : schema.getAsJsonArray(key)) { + if (sub.isJsonObject()) { + JsonObject o = sub.getAsJsonObject(); + if (o.has("$ref") && o.get("$ref").isJsonPrimitive()) { + JsonObject resolved = resolveRef(o.get("$ref").getAsString()); + if (resolved != null) { + o = resolved; + } + } + branches.add(o); + } + } + } + } + if (branches.isEmpty()) { + // No union to widen — fall back to a plain type check when one is declared. + if (schema.has("type")) { + checkType(schema.get("type"), value, path, errors); + } + return; + } + for (JsonObject b : branches) { + if (!b.has("type")) { + return; // an untyped branch accepts anything + } + List local = new ArrayList<>(); + checkType(b.get("type"), value, path, local); + if (local.isEmpty()) { + return; // some branch's type accepts this value + } + } + errors.add(path + " does not match the type of any allowed schema"); + } + /** Resolve a local {@code #/$defs/Name} reference against the loaded schema. */ private JsonObject resolveRef(String ref) { final String prefix = "#/$defs/"; @@ -669,9 +770,9 @@ private Map.Entry> validateVerbLightweight( } /** - * Validate a complete SWML document. Mirrors Python's {@code validate_document(document)}. - * Returns {@code (false, ["Schema validator not initialized"])} when no full validator is wired - * in — same contract as Python. + * Validate a complete SWML document. Returns {@code (false, ["Schema validator not + * initialized"])} when no full validator is wired in — note this is a FAILURE, not a pass: + * document validation has no lightweight fallback the way {@link #validateVerb} does. */ public Map.Entry> validateDocument(Map document) { if (fullValidator == null) { @@ -694,10 +795,7 @@ public Map.Entry> validateDocument(Map doc false, Collections.singletonList("Document validation error: " + joined)); } - /** - * Generate a Python-style method signature string for a verb. Mirrors Python's {@code - * generate_method_signature(verb_name)}. - */ + /** Generate a Python-style method signature string for a verb, for code-generation tooling. */ public String generateMethodSignature(String verbName) { Map params = getVerbParameters(verbName); Set required = new LinkedHashSet<>(getVerbRequiredProperties(verbName)); @@ -734,10 +832,7 @@ public String generateMethodSignature(String verbName) { return "def " + verbName + "(" + String.join(", ", parts) + ") -> bool:\n" + doc; } - /** - * Generate a Python-style method body string for a verb. Mirrors Python's {@code - * generate_method_body(verb_name)}. - */ + /** Generate a Python-style method body string for a verb, for code-generation tooling. */ public String generateMethodBody(String verbName) { Map params = getVerbParameters(verbName); List keys = new ArrayList<>(params.keySet()); diff --git a/src/main/java/com/signalwire/sdk/swml/SchemaValidationError.java b/src/main/java/com/signalwire/sdk/swml/SchemaValidationError.java index 3f939480..0581fb60 100644 --- a/src/main/java/com/signalwire/sdk/swml/SchemaValidationError.java +++ b/src/main/java/com/signalwire/sdk/swml/SchemaValidationError.java @@ -9,11 +9,7 @@ import java.util.Collections; import java.util.List; -/** - * SchemaValidationError — Java port of {@code signalwire.utils.schema_utils.SchemaValidationError}. - * - *

      Raised when SWML schema validation of a verb config fails. - */ +/** Raised when SWML schema validation of a verb config fails. */ public class SchemaValidationError extends RuntimeException { private static final long serialVersionUID = 1L; @@ -22,8 +18,7 @@ public class SchemaValidationError extends RuntimeException { private final List errors; /** - * Construct a SchemaValidationError. Mirrors Python's {@code SchemaValidationError(verb_name, - * errors)} signature. + * Construct a SchemaValidationError. * * @param verbName the verb whose validation failed * @param errors the list of human-readable error messages @@ -34,10 +29,20 @@ public SchemaValidationError(String verbName, List errors) { this.errors = errors == null ? Collections.emptyList() : Collections.unmodifiableList(errors); } + /** + * The SWML verb whose arguments failed validation. + * + * @return the verb name. + */ public String getVerbName() { return verbName; } + /** + * Every validation failure found, not just the first. + * + * @return the error messages. + */ public List getErrors() { return errors; } diff --git a/src/main/java/com/signalwire/sdk/swml/Service.java b/src/main/java/com/signalwire/sdk/swml/Service.java index 2855d76f..db4bf0a3 100644 --- a/src/main/java/com/signalwire/sdk/swml/Service.java +++ b/src/main/java/com/signalwire/sdk/swml/Service.java @@ -116,13 +116,12 @@ public Service( } /** - * Full construction contract, matching the Python reference's {@code SWMLService.__init__(name, - * route, host, port, basic_auth, schema_path, config_file, schema_validation)}. + * Full construction contract: name, route, host, port, basic auth, schema path, config file and + * schema validation. * - *

      {@code authUser}/{@code authPassword} are the Java spelling of the reference's {@code - * basic_auth} 2-tuple. {@code schemaPath} and {@code schemaValidation} are forwarded to {@link - * SchemaUtils}; {@code configFile} is forwarded to {@link com.signalwire.sdk.core.SecurityConfig} - * — the same collaborators the reference forwards them to. + *

      {@code authUser}/{@code authPassword} are the two halves of the basic-auth credential. + * {@code schemaPath} and {@code schemaValidation} are forwarded to {@link SchemaUtils}; {@code + * configFile} is forwarded to {@link com.signalwire.sdk.core.SecurityConfig}. * * @param name service name/identifier. * @param route HTTP route path for this service. @@ -193,10 +192,22 @@ protected static String generatePassword() { // -------- Auth -------- + /** + * The basic-auth username the service's HTTP endpoints require. + * + * @return the username, or {@code null} when none was configured. + */ public String getAuthUser() { return authUser; } + /** + * The basic-auth password the service's HTTP endpoints require — the plaintext credential, so + * keep it out of logs and out of anything rendered to a caller. Compare against it with {@link + * #validateBasicAuth(String, String)}, which is constant-time, not with {@code equals}. + * + * @return the password, or {@code null} when none was configured. + */ public String getAuthPassword() { return authPassword; } @@ -327,6 +338,15 @@ public com.signalwire.sdk.swaig.FunctionResult onFunctionCall( return tool.getHandler().handle(args, rawData); } + /** + * Dispatch a function call with no raw SWAIG payload — equivalent to passing {@code null} for + * {@code rawData}. + */ + public com.signalwire.sdk.swaig.FunctionResult onFunctionCall( + String funcName, java.util.Map args) { + return onFunctionCall(funcName, args, null); + } + /** List registered SWAIG tool names in insertion order. */ public java.util.List listToolNames() { return new java.util.ArrayList<>(tools.keySet()); @@ -383,10 +403,20 @@ public java.util.List> getRegisteredSwaigFunctions /** * Extension point: invoked between argument parsing and function dispatch. Returns a 2-element * array: [target Service, shortCircuit Map]. If shortCircuit is non-null, it's returned as the - * SWAIG response without calling onFunctionCall. AgentBase may override to add session-token - * validation or ephemeral dynamic-config copies. + * SWAIG response without calling onFunctionCall. AgentBase overrides this to enforce a tool's + * {@code secure} flag and to build ephemeral dynamic-config copies. + * + *

      {@code token} is the {@code __token} credential lifted from the request's QUERY STRING, + * which is where the platform puts it — the {@code call_id} it is validated against travels in + * {@code requestData} instead. Both halves are needed, so both are passed: a hook that only saw + * the body could not enforce anything. + * + * @param requestData the parsed SWAIG request body. + * @param funcName the tool the caller is invoking. + * @param token the {@code __token} query parameter, or {@code null} when absent. */ - protected Object[] swaigPreDispatch(java.util.Map requestData, String funcName) { + protected Object[] swaigPreDispatch( + java.util.Map requestData, String funcName, String token) { return new Object[] {this, null}; } @@ -424,6 +454,22 @@ public java.util.Map onRequest( return onSwmlRequest(requestData, callbackPath); } + /** + * Request hook with neither request body nor callback path — equivalent to passing {@code null} + * for both. + */ + public java.util.Map onRequest() { + return onRequest(null, null); + } + + /** + * Request hook supplying only the parsed request body; the callback path defaults to {@code + * null}. + */ + public java.util.Map onRequest(java.util.Map requestData) { + return onRequest(requestData, null); + } + /** * Customization point for subclasses to modify SWML based on request data. The default * implementation returns {@code null} (no modification). Subclasses override to inspect the body @@ -470,13 +516,20 @@ protected void addSecurityHeaders(HttpExchange exchange) { // -------- Document access -------- + /** + * The SWML document the verb methods build into. Handed out live, not copied, so mutating it + * changes what this service renders. + * + * @return the service's document. + */ public Document getDocument() { return document; } /** - * SchemaUtils helper bound to this Service. Mirrors Python's {@code self.schema_utils} public - * instance attribute on {@code SWMLService}. Built lazily on first access. + * SchemaUtils helper bound to this Service. Built lazily on first access. + * + * @return the schema helper for this service. */ public SchemaUtils getSchemaUtils() { if (schemaUtilsInstance == null) { @@ -487,7 +540,7 @@ public SchemaUtils getSchemaUtils() { /** * The explicit SWML schema file path this service was constructed with, or {@code null} when the - * schema is auto-discovered. Mirrors the reference's {@code schema_path} construction param. + * schema is auto-discovered. * * @return configured schema path, or null. */ @@ -497,7 +550,7 @@ public String getSchemaPath() { /** * The config file this service was constructed with, or {@code null} when the default search - * paths are used. Mirrors the reference's {@code config_file} construction param. + * paths are used. * * @return configured config file path, or null. */ @@ -529,15 +582,15 @@ public String getHost() { /** * The port the service binds to (the {@code port} construction param); defaults to the {@code - * PORT} env var, else 3000, exactly as the reference does. + * PORT} env var, else 3000. */ public int getPort() { return port; } /** - * Whether SWML schema validation is enabled for this service. Mirrors the reference's {@code - * schema_validation} construction param. + * Whether SWML schema validation is enabled for this service (the {@code schemaValidation} + * construction param). * * @return true when schema validation is on. */ @@ -546,9 +599,8 @@ public boolean isSchemaValidation() { } /** - * Unified security configuration for this service, built from the construction {@code - * config_file} plus environment. Mirrors the reference's {@code self.security} attribute on - * {@code SWMLService} (swml_service.py:139). + * Unified security configuration for this service, built from the construction {@code configFile} + * plus environment. Built lazily on first access. * * @return the service's SecurityConfig. */ @@ -559,6 +611,55 @@ public com.signalwire.sdk.core.SecurityConfig getSecurity() { return security; } + // -------- TLS/serving values mirrored off the SecurityConfig -------- + // The reference reads these four values off `self.security` in __init__ and + // holds them directly on the service (swml_service.py:143-146), so a caller + // reaches them as `service.ssl_enabled` / `.domain` / `.ssl_cert_path` / + // `.ssl_key_path`. Java exposes the same values as accessors delegating to the + // one SecurityConfig — reading through rather than copying at construction, so + // a later `loadFromEnv()` or config reload stays reflected (the reference's + // own `start()` re-reads them the same way at swml_service.py:1240). + + /** + * Whether TLS is enabled for this service. Read through {@link #getSecurity()} on each call, so a + * later config reload stays reflected. + * + * @return true when TLS is on. + */ + public boolean isSslEnabled() { + return getSecurity().isSslEnabled(); + } + + /** + * The serving domain used for the TLS certificate. Read through {@link #getSecurity()} on each + * call, so a later config reload stays reflected. + * + * @return the configured domain, or null when unset. + */ + public String getDomain() { + return getSecurity().getDomain(); + } + + /** + * Filesystem path to the TLS certificate. Read through {@link #getSecurity()} on each call, so a + * later config reload stays reflected. + * + * @return the certificate path, or null when unset. + */ + public String getSslCertPath() { + return getSecurity().getSslCertPath(); + } + + /** + * Filesystem path to the TLS private key. Read through {@link #getSecurity()} on each call, so a + * later config reload stays reflected. + * + * @return the key path, or null when unset. + */ + public String getSslKeyPath() { + return getSecurity().getSslKeyPath(); + } + // -------- SWMLService reference-API delegators -------- // The Python reference SWMLService exposes document-manipulation and routing // helpers directly on the service; Java folds the document model into a @@ -567,19 +668,26 @@ public com.signalwire.sdk.core.SecurityConfig getSecurity() { // the cross-port surface compares equal (mirrors the Ruby port's SWMLService // delegators and the SIGNATURE gate's Service→SWMLService rename). - /** Add a section to the document. Mirrors SWMLService.add_section. */ + /** Add a section to the document. */ public Service addSection(String sectionName) { document.addSection(sectionName); return this; } /** - * Add a verb to the main section. Mirrors SWMLService.add_verb — the user-facing choke point that - * enforces the strict-render contract: schema validation runs here so an unknown verb, a - * misspelled/unknown config key on a closed verb, a wrong-typed config, or a missing required key - * raises {@link SchemaValidationError} instead of being appended silently. (The 38 specialized - * verb builders below call {@code document.addVerb} directly with configs they construct, so they - * are not double-validated — mirrors Python, whose add_verb is likewise the choke point.) + * Add a verb to the main section — the user-facing choke point that enforces the strict-render + * contract: schema validation runs here so an unknown verb, a misspelled/unknown config key on a + * closed verb, a wrong-typed config, or a missing required key raises {@link + * SchemaValidationError} instead of being appended silently. + * + *

      This is the ONE place a verb enters the document. {@link SWMLBuilder}, {@link + * SwmlRenderer}, {@code AgentBase.renderSwml} and the 38 specialized verb builders further down + * this class all route through here. They used to reach past it to the raw {@link + * Document#addVerb}, which appends whatever it is handed — that bypass is why several + * schema-invalid wire shapes shipped unnoticed (see {@code ValidatorRoutingTest}), and it meant + * {@code service.play(...)} was unvalidated while {@code service.addVerb("play", ...)} was not, + * with nothing at the call site to tell the two apart. Anything that emits a verb belongs on this + * method; nothing should call {@code document.addVerb} but this method and its section twin. */ public Service addVerb(String verbName, Object verbData) { validateVerbOrThrow(verbName, verbData); @@ -587,7 +695,7 @@ public Service addVerb(String verbName, Object verbData) { return this; } - /** Add a verb to a named section. Mirrors SWMLService.add_verb_to_section. */ + /** Add a verb to a named section. */ public Service addVerbToSection(String sectionName, String verbName, Object verbData) { validateVerbOrThrow(verbName, verbData); document.addVerbToSection(sectionName, verbName, verbData); @@ -596,56 +704,47 @@ public Service addVerbToSection(String sectionName, String verbName, Object verb /** * Schema-validate a user-supplied verb config and throw {@link SchemaValidationError} if it does - * not satisfy the SWML schema. Mirrors the validation half of Python's {@code add_verb}: the - * {@code sleep}-with-integer verb takes a direct value (no dict), a non-map config for any other - * verb is invalid, and otherwise {@code SchemaUtils.validateVerb} decides. A no-op when schema - * validation is disabled. + * not satisfy the SWML schema. A no-op when schema validation is disabled. + * + *

      The config is validated by SHAPE-FROM-THE-SCHEMA, not by assuming it is an object. Most verb + * configs are objects, but {@code cond} and {@code toggle_functions} are ARRAYS, {@code label} / + * {@code say} / {@code change_context} are STRINGS, and {@code sleep} / {@code hangup} / {@code + * unset} union a primitive with an object — an "must be an object" precondition would reject + * legal documents. Generated typed config POJOs (e.g. {@code ConnectConfig}) are covered too: + * {@link SchemaUtils#validateVerbValue} serialises whatever it is handed to the exact JSON {@link + * Document#render()} will emit and validates that, so the typed surface is not an unvalidated + * back door. */ - @SuppressWarnings("unchecked") private void validateVerbOrThrow(String verbName, Object verbData) { if (!schemaValidation) { return; } - // sleep takes a direct integer value — not a config map. - if ("sleep".equals(verbName) && (verbData instanceof Integer || verbData instanceof Long)) { - return; - } - if (!(verbData instanceof Map)) { - throw new SchemaValidationError( - verbName, - java.util.Collections.singletonList( - "config for verb '" + verbName + "' must be an object")); - } - Map.Entry> res = - getSchemaUtils().validateVerb(verbName, (Map) verbData); + Map.Entry> res = getSchemaUtils().validateVerbValue(verbName, verbData); if (!res.getKey()) { throw new SchemaValidationError(verbName, res.getValue()); } } - /** Render the current document as a compact JSON string. Mirrors SWMLService.render_document. */ + /** Render the current document as a compact JSON string. */ public String renderDocument() { return document.render(); } - /** Reset the current document to an empty state. Mirrors SWMLService.reset_document. */ + /** Reset the current document to an empty state. */ public Service resetDocument() { document.reset(); return this; } /** - * Register a custom SWML verb handler. Mirrors SWMLService.register_verb_handler — delegates to - * the service's {@link VerbHandlerRegistry}. + * Register a custom SWML verb handler — delegates to the service's {@link VerbHandlerRegistry}. */ public Service registerVerbHandler(SWMLVerbHandler handler) { verbRegistry().registerHandler(handler); return this; } - /** - * The verb-handler registry for this service (built lazily). Mirrors SWMLService.verb_registry. - */ + /** The verb-handler registry for this service (built lazily). */ public VerbHandlerRegistry verbRegistry() { if (verbHandlerRegistry == null) { verbHandlerRegistry = new VerbHandlerRegistry(); @@ -654,14 +753,12 @@ public VerbHandlerRegistry verbRegistry() { } /** - * Register a routing callback invoked to resolve dynamic routes. Mirrors - * SWMLService.register_routing_callback. Java stores the callback for the HTTP layer (and the - * framework-free {@link #handleRequest} dispatch core) to consult. + * Register a routing callback invoked to resolve dynamic routes. The callback is stored for the + * HTTP layer (and the framework-free {@link #handleRequest} dispatch core) to consult. * - *

      The callback receives the parsed request body dict and the request headers dict — {@code + *

      The callback receives the parsed request body map and the request headers map — {@code * callback(body, headers)} — and returns a redirect route string, or {@code null} to continue - * normal processing. This is the decomposed {@code (body, headers) -> String} shape the Python - * reference and the other SDK ports share. + * normal processing. * * @param callback the routing callback, {@code (body, headers) -> route-or-null}. * @return this service for chaining. @@ -674,9 +771,8 @@ public Service registerRoutingCallback( } /** - * Register a routing callback at a specific path. Mirrors Python's {@code - * register_routing_callback(callback_fn, path="/sip")} (web_mixin): the path is normalized - * (trailing {@code /} stripped, a leading {@code /} ensured) and used as the dict key, so + * Register a routing callback at a specific path (default {@code "/sip"}). The path is normalized + * — trailing {@code /} stripped, a leading {@code /} ensured — and used as the map key, so * distinct paths each carry their own callback. Re-registering a path replaces its callback. * * @param callback the routing callback, {@code (body, headers) -> route-or-null}. @@ -706,8 +802,7 @@ private static String normalizeCallbackPath(String path) { } /** - * The normalized paths that have a routing callback registered, in registration order. Mirrors - * reading the keys of Python's {@code _routing_callbacks} dict. + * The normalized paths that have a routing callback registered, in registration order. * * @return an unmodifiable list of normalized callback paths. */ @@ -718,15 +813,13 @@ public java.util.List routingCallbackPaths() { /** * Return a mountable request handler that embeds this service's routes into a host application. * - *

      Mirrors {@code SWMLService.as_router} / {@code WebMixin.as_router}: Python returns a FastAPI - * {@code APIRouter} (a {@code HostAppRouter}) so a host ASGI/FastAPI app can mount the agent's - * routes without running the service's own server. Java has no external web framework, so the - * cross-port equivalent of the "embed my routes in a host app" unit is the JDK's {@link - * com.sun.net.httpserver.HttpHandler} — the same shape Go's {@code AsRouter} uses with {@code - * http.Handler}. The returned handler dispatches an incoming {@link HttpExchange} to the same - * route table {@link #serve()} installs (health, ready, {@code /swaig}, subclass extras, and the - * main SWML endpoint), selecting the handler whose registered context path is the longest prefix - * of the request path — the same longest-prefix rule {@code HttpServer} itself applies. + *

      Use this to mount the agent's routes inside an application you already run, instead of + * starting the service's own server. This SDK has no external web-framework dependency, so the + * "embed my routes in a host app" unit is the JDK's {@link com.sun.net.httpserver.HttpHandler}. + * The returned handler dispatches an incoming {@link HttpExchange} to the same route table {@link + * #serve()} installs (health, ready, {@code /swaig}, subclass extras, and the main SWML + * endpoint), selecting the handler whose registered context path is the longest prefix of the + * request path — the same longest-prefix rule {@code HttpServer} itself applies. * * @return an {@link com.sun.net.httpserver.HttpHandler} exposing this service's routes for * mounting under a host {@link HttpServer} (e.g. {@code hostServer.createContext(prefix, @@ -790,6 +883,14 @@ java.util.List contexts() { return contexts; } + /** + * Delegates to the wrapped server and records the created context, which is how the collector + * enumerates the routes the service registered. + * + * @param path the context path. + * @param handler the handler for that path. + * @return the created context. + */ @Override public com.sun.net.httpserver.HttpContext createContext( String path, com.sun.net.httpserver.HttpHandler handler) { @@ -798,6 +899,12 @@ public com.sun.net.httpserver.HttpContext createContext( return ctx; } + /** + * Delegates to the wrapped server and records the created context. + * + * @param path the context path. + * @return the created context. + */ @Override public com.sun.net.httpserver.HttpContext createContext(String path) { com.sun.net.httpserver.HttpContext ctx = delegate.createContext(path); @@ -805,41 +912,79 @@ public com.sun.net.httpserver.HttpContext createContext(String path) { return ctx; } + /** + * Delegates to the wrapped server. + * + * @param addr the address to bind. + * @param backlog the socket backlog. + * @throws IOException if the bind fails. + */ @Override public void bind(InetSocketAddress addr, int backlog) throws IOException { delegate.bind(addr, backlog); } + /** Delegates to the wrapped server. */ @Override public void start() { delegate.start(); } + /** + * Delegates to the wrapped server. + * + * @param executor the executor to serve requests on. + */ @Override public void setExecutor(java.util.concurrent.Executor executor) { delegate.setExecutor(executor); } + /** + * Delegates to the wrapped server. + * + * @return the wrapped server's executor. + */ @Override public java.util.concurrent.Executor getExecutor() { return delegate.getExecutor(); } + /** + * Delegates to the wrapped server. + * + * @param delay seconds to wait for in-flight exchanges before closing. + */ @Override public void stop(int delay) { delegate.stop(delay); } + /** + * Delegates to the wrapped server. The collector's own record is not pruned. + * + * @param path the context path to remove. + */ @Override public void removeContext(String path) { delegate.removeContext(path); } + /** + * Delegates to the wrapped server. The collector's own record is not pruned. + * + * @param context the context to remove. + */ @Override public void removeContext(com.sun.net.httpserver.HttpContext context) { delegate.removeContext(context); } + /** + * Delegates to the wrapped server. + * + * @return the wrapped server's bound address. + */ @Override public InetSocketAddress getAddress() { return delegate.getAddress(); @@ -847,17 +992,13 @@ public InetSocketAddress getAddress() { } /** - * Whether full JSON-Schema validation is enabled and available. Mirrors - * SWMLService.full_validation_enabled. + * Whether full JSON-Schema validation is both enabled on this service and available at runtime. */ public boolean fullValidationEnabled() { return schemaValidation && getSchemaUtils().isFullValidationAvailable(); } - /** - * Manually set the proxy URL base for webhook callbacks (may be called at runtime). Mirrors - * SWMLService.manual_set_proxy_url. - */ + /** Manually set the proxy URL base for webhook callbacks (may be called at runtime). */ public Service manualSetProxyUrl(String proxyUrl) { this.proxyUrlBase = proxyUrl; return this; @@ -865,10 +1006,7 @@ public Service manualSetProxyUrl(String proxyUrl) { /** * The {@code (status, headers, body)} triple returned by the framework-free {@link - * #handleRequest} dispatch core. Mirrors the language-neutral {@code tuple, string>} the Python reference {@code handle_request} returns and the - * {@code (int, Dictionary, string)} .NET {@code HandleRequest} returns — Java has no value-tuple - * type, so this record stands in for it (the enumerator records the canonical tuple shape). + * #handleRequest} dispatch core. Java has no value-tuple type, so this record stands in for one. * * @param status the HTTP status code (200, 307, 401, …). * @param headers the response headers (e.g. {@code Location} for a 307 redirect, {@code @@ -880,12 +1018,11 @@ public record HttpResult(int status, java.util.Map headers, Stri /** * Framework-free request-dispatch core. * - *

      This is the primitive dispatch surface the SDK ports share (mirrors the Python reference - * {@code SWMLService.handle_request(method, url, headers, body) -> (status, headers, body)} and - * the .NET {@code (int, Dictionary, string) HandleRequest(method, path, headers, body)}). It - * performs basic-auth, the routing-callback check, and the {@code onRequest} modification over - * plain primitives instead of a {@link HttpExchange}, so the same dispatch behavior (identical - * status codes, headers, and body) is reachable without the embedded HTTP server. + *

      This is the primitive dispatch surface: {@code handleRequest(method, path, headers, body)} + * returns {@code (status, headers, body)}. It performs basic-auth, the routing-callback check, + * and the {@code onRequest} modification over plain primitives instead of a {@link HttpExchange}, + * so the same dispatch behavior (identical status codes, headers, and body) is reachable without + * the embedded HTTP server. * * @param method HTTP method, e.g. {@code "GET"} or {@code "POST"}. * @param url the full request URL (used to derive the routing-callback path). @@ -1022,7 +1159,7 @@ protected boolean checkBasicAuthHeaders(java.util.Map headers) { /** * Extract the SIP username (the user portion of the {@code to} SIP URI) from a request body's - * call data. Mirrors the static SWMLService.extract_sip_username. + * call data. * * @param requestBody the parsed request body (expects {@code call.to} or a top-level {@code to}) * @return the SIP username, or null when none is present @@ -1073,215 +1210,489 @@ public static String extractSipUsername(java.util.Map requestBod // Each method adds the verb to the document's main section. // Java has no method_missing, so all are explicit. + /** + * Append the SWML {@code answer} verb: answer the inbound call, optionally capping its duration. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service answer(Map params) { - document.addVerb("answer", params != null ? params : new LinkedHashMap<>()); + addVerb("answer", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code ai} verb: hand the call to an AI agent that runs the ASR / LLM / TTS + * conversation loop. This is the verb everything an {@link com.signalwire.sdk.agent.AgentBase} + * configures ultimately renders into. + * + *

      The {@code prompt} argument must be an OBJECT ({@code {"text": …}} or {@code {"pom": …}}); a + * bare string is a fatal call error, not a tolerated shorthand. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service ai(Map params) { - document.addVerb("ai", params != null ? params : new LinkedHashMap<>()); + addVerb("ai", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code amazon_bedrock} verb: run the conversation on an Amazon Bedrock agent. A + * distinct verb from {@link #ai(Map)}, not an engine option on it. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service amazonBedrock(Map params) { - document.addVerb("amazon_bedrock", params != null ? params : new LinkedHashMap<>()); + addVerb("amazon_bedrock", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code cond} verb: run a sequence of instructions selected by the value of a + * JavaScript condition. + * + * @param conditions the condition branches, in evaluation order. + * @return this service, for chaining. + */ public Service cond(List> conditions) { - document.addVerb("cond", conditions); + addVerb("cond", conditions); return this; } + /** + * Append the SWML {@code connect} verb: dial a SIP URI or phone number and bridge it to this + * call. Prefer the {@link com.signalwire.sdk.swml.generated.ConnectConfig} overload, which + * carries the wire keys as typed fields; this map form is the dynamic and forward-compatible + * path. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service connect(Map params) { - document.addVerb("connect", params != null ? params : new LinkedHashMap<>()); + addVerb("connect", params != null ? params : new LinkedHashMap<>()); return this; } /** * Typed overload of {@link #connect(Map)}: dial a SIP URI or phone number described by the - * generated {@link com.signalwire.sdk.swml.generated.ConnectConfig} wire type. Mirrors the - * reference's {@code connect(config: ConnectConfig | None)} (swml_verbs_generated.py) — the - * config's set fields carry the exact snake wire keys, and unset (null) fields are omitted from - * the rendered SWML, so this produces byte-identical wire to passing the equivalent {@link Map}. - * The {@code Map} overload remains for the genuinely-dynamic/forward-compat path. + * generated {@link com.signalwire.sdk.swml.generated.ConnectConfig} wire type. The config's set + * fields carry the exact snake_case wire keys, and unset (null) fields are omitted from the + * rendered SWML, so this produces byte-identical wire to passing the equivalent {@link Map}. The + * {@code Map} overload remains for the genuinely-dynamic/forward-compat path. * * @param config the typed connect config; when {@code null}, renders an empty {@code connect}. */ public Service connect(com.signalwire.sdk.swml.generated.ConnectConfig config) { - document.addVerb( + addVerb( "connect", config != null ? config : new com.signalwire.sdk.swml.generated.ConnectConfig()); return this; } + /** + * Append the SWML {@code denoise} verb: start background noise reduction, which runs until {@link + * #stopDenoise(Map)} ends it. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service denoise(Map params) { - document.addVerb("denoise", params != null ? params : new LinkedHashMap<>()); + addVerb("denoise", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code detect_machine} verb: combined answering-machine and fax detection, + * deciding whether the far end is a human or a machine and reporting the result. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service detectMachine(Map params) { - document.addVerb("detect_machine", params != null ? params : new LinkedHashMap<>()); + addVerb("detect_machine", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code enter_queue} verb: park the call in a named queue, playing music or + * custom audio, until an agent or resource connects to that queue. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service enterQueue(Map params) { - document.addVerb("enter_queue", params != null ? params : new LinkedHashMap<>()); + addVerb("enter_queue", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code execute} verb: run a section or a remote URL as a SUBROUTINE and come + * back here when it finishes. Use {@link #returnVerb(Map)} inside it to pass a value back — + * unlike {@link #transfer(Map)}, which does not return. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service execute(Map params) { - document.addVerb("execute", params != null ? params : new LinkedHashMap<>()); + addVerb("execute", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code goto} verb: jump to a {@link #label(Map)} within the SAME section, + * optionally on a condition. It cannot cross section boundaries. Named {@code gotoLabel} because + * {@code goto} is a reserved word in Java; the wire key remains {@code goto}. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service gotoLabel(Map params) { - document.addVerb("goto", params != null ? params : new LinkedHashMap<>()); + addVerb("goto", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code hangup} verb: end the call, optionally with a reason. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service hangup(Map params) { - document.addVerb("hangup", params != null ? params : new LinkedHashMap<>()); + addVerb("hangup", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code hangup} verb with no arguments: end the call without a stated reason. + * + * @return this service, for chaining. + */ public Service hangup() { - document.addVerb("hangup", new LinkedHashMap<>()); + addVerb("hangup", new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code join_conference} verb: connect this call into a named ad-hoc audio + * conference where several participants can talk at once. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service joinConference(Map params) { - document.addVerb("join_conference", params != null ? params : new LinkedHashMap<>()); + addVerb("join_conference", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code join_room} verb: join a RELAY room, creating it if it does not exist. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service joinRoom(Map params) { - document.addVerb("join_room", params != null ? params : new LinkedHashMap<>()); + addVerb("join_room", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code label} verb: mark this point in the section so {@link #gotoLabel(Map)} + * can jump to it. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service label(Map params) { - document.addVerb("label", params != null ? params : new LinkedHashMap<>()); + addVerb("label", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code live_transcribe} verb: transcribe the call as it happens and POST the + * transcript to the configured webhook. That endpoint receives what was said on the call — secure + * it accordingly. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service liveTranscribe(Map params) { - document.addVerb("live_transcribe", params != null ? params : new LinkedHashMap<>()); + addVerb("live_transcribe", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code live_translate} verb: translate the call as it happens and POST the + * result to the configured webhook, which likewise receives call content. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service liveTranslate(Map params) { - document.addVerb("live_translate", params != null ? params : new LinkedHashMap<>()); + addVerb("live_translate", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code pay} verb: run a payment flow on the call, collecting and validating + * card data and processing it through the configured gateway. The platform handles the card data + * so it never reaches this SDK — do not collect it yourself with {@link #prompt(Map)} and do not + * log what this verb returns. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service pay(Map params) { - document.addVerb("pay", params != null ? params : new LinkedHashMap<>()); + addVerb("pay", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code play} verb: play audio files, ring tones, TTS speech, or silence. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service play(Map params) { - document.addVerb("play", params != null ? params : new LinkedHashMap<>()); + addVerb("play", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code prompt} verb: play a prompt and WAIT for input. Digit input is enabled + * by default; speech must be turned on explicitly in the arguments. Distinct from the {@code + * prompt} key inside {@link #ai(Map)}, which configures the AI agent rather than gathering input. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service prompt(Map params) { - document.addVerb("prompt", params != null ? params : new LinkedHashMap<>()); + addVerb("prompt", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code receive_fax} verb: receive a fax being delivered to this call. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service receiveFax(Map params) { - document.addVerb("receive_fax", params != null ? params : new LinkedHashMap<>()); + addVerb("receive_fax", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code record} verb: record in the FOREGROUND, blocking further SWML execution + * until the recording ends — the voicemail shape. Use {@link #recordCall(Map)} to record without + * blocking. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service record(Map params) { - document.addVerb("record", params != null ? params : new LinkedHashMap<>()); + addVerb("record", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code record_call} verb: start recording in the BACKGROUND and keep executing + * SWML while it runs. Stop it with {@link #stopRecordCall(Map)}. Recording call audio carries + * consent and retention obligations in most jurisdictions. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service recordCall(Map params) { - document.addVerb("record_call", params != null ? params : new LinkedHashMap<>()); + addVerb("record_call", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code request} verb: issue a GET, POST, PUT, or DELETE to a remote URL from + * the platform. The URL and any credentials in it are part of the rendered SWML. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service request(Map params) { - document.addVerb("request", params != null ? params : new LinkedHashMap<>()); + addVerb("request", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code return} verb: return a value from an {@link #execute(Map)} subroutine, + * or exit the script when there is no caller to return to. Named {@code returnVerb} because + * {@code return} is a reserved word in Java; the wire key remains {@code return}. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service returnVerb(Map params) { - document.addVerb("return", params != null ? params : new LinkedHashMap<>()); + addVerb("return", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code sip_refer} verb: send a SIP REFER on a SIP call, asking the far end to + * transfer itself. Acceptance of the REFER is not completion of the transfer — the subsequent + * NOTIFY reports the outcome. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service sipRefer(Map params) { - document.addVerb("sip_refer", params != null ? params : new LinkedHashMap<>()); + addVerb("sip_refer", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code send_digits} verb: send digit presses as DTMF tones on the call. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service sendDigits(Map params) { - document.addVerb("send_digits", params != null ? params : new LinkedHashMap<>()); + addVerb("send_digits", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code send_fax} verb: send a fax. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service sendFax(Map params) { - document.addVerb("send_fax", params != null ? params : new LinkedHashMap<>()); + addVerb("send_fax", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code send_sms} verb: send an outbound SMS or MMS to a PSTN number. This sends + * a billable message every time the verb executes. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service sendSms(Map params) { - document.addVerb("send_sms", params != null ? params : new LinkedHashMap<>()); + addVerb("send_sms", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code set} verb: assign script variables from a name-to-value object. Remove + * them again with {@link #unset(Map)}. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service set(Map params) { - document.addVerb("set", params != null ? params : new LinkedHashMap<>()); + addVerb("set", params != null ? params : new LinkedHashMap<>()); return this; } /** Sleep takes an integer (milliseconds), not a map. */ public Service sleep(int milliseconds) { - document.addVerb("sleep", milliseconds); + addVerb("sleep", milliseconds); return this; } + /** + * Append the SWML {@code stop_denoise} verb: stop the noise reduction started by {@link + * #denoise(Map)}. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service stopDenoise(Map params) { - document.addVerb("stop_denoise", params != null ? params : new LinkedHashMap<>()); + addVerb("stop_denoise", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code stop_record_call} verb: stop an active background recording started by + * {@link #recordCall(Map)}. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service stopRecordCall(Map params) { - document.addVerb("stop_record_call", params != null ? params : new LinkedHashMap<>()); + addVerb("stop_record_call", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code stop_tap} verb: stop an active media tap started by {@link #tap(Map)}. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service stopTap(Map params) { - document.addVerb("stop_tap", params != null ? params : new LinkedHashMap<>()); + addVerb("stop_tap", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code switch} verb: branch to different instructions on a variable's value. + * Named {@code switchVerb} because {@code switch} is a reserved word in Java; the wire key + * remains {@code switch}. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service switchVerb(Map params) { - document.addVerb("switch", params != null ? params : new LinkedHashMap<>()); + addVerb("switch", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code tap} verb: stream the call's media to a customer-controlled WebSocket or + * RTP endpoint in the background. That endpoint receives live call audio, so it must be one you + * control and secure. Stop it with {@link #stopTap(Map)}. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service tap(Map params) { - document.addVerb("tap", params != null ? params : new LinkedHashMap<>()); + addVerb("tap", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code transfer} verb: hand execution to a different section, URL, or RELAY + * application and CONTINUE from there. Unlike {@link #execute(Map)}, control does not come back. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service transfer(Map params) { - document.addVerb("transfer", params != null ? params : new LinkedHashMap<>()); + addVerb("transfer", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code unset} verb: remove script variables, named individually or as a list. + * Works on variables set by {@link #set(Map)} and on those other verbs produce as a side effect. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service unset(Map params) { - document.addVerb("unset", params != null ? params : new LinkedHashMap<>()); + addVerb("unset", params != null ? params : new LinkedHashMap<>()); return this; } + /** + * Append the SWML {@code user_event} verb: send an event to the client connected on the call, + * typically to trigger something in a browser SDK session. The payload reaches the client, so do + * not put anything in it the client should not see. + * + * @param params the verb's arguments; {@code null} renders an empty object. + * @return this service, for chaining. + */ public Service userEvent(Map params) { - document.addVerb("user_event", params != null ? params : new LinkedHashMap<>()); + addVerb("user_event", params != null ? params : new LinkedHashMap<>()); return this; } @@ -1423,8 +1834,7 @@ protected void registerRoutes(HttpServer server) { * #handleRequest}, and marshals the returned {@code (status, headers, body)} triple back onto the * exchange. This is what makes {@link #serve()} and {@link #asRouter()} reach the * routing-callback {@code 307} branch (previously the served path re-implemented auth+render - * inline and never called the routing callback). Mirrors the .NET {@code DispatchAsync} / {@code - * RunHttp} adapters that funnel the served request through {@code HandleRequest}. + * inline and never called the routing callback). */ protected void handleSwmlExchange(HttpExchange exchange) throws IOException { String method = exchange.getRequestMethod(); @@ -1495,6 +1905,50 @@ protected void handleSwmlExchange(HttpExchange exchange) throws IOException { } } + /** + * Lift the SWAIG security credential out of a raw {@code a=b&c=d} query string. + * + *

      Reads {@code __token} and falls back to a bare {@code token}, the same pair the rendered + * webhook URL may carry. Returns {@code null} when neither is present or the value is empty, so a + * blank credential is indistinguishable from an absent one. + * + * @param rawQuery the undecoded query string, or {@code null}. + * @return the token, or {@code null}. + */ + static String swaigTokenOf(String rawQuery) { + if (rawQuery == null || rawQuery.isEmpty()) { + return null; + } + String fallback = null; + // limit 0 == drop trailing empties; a query ending in "&" yields no extra + // pair, and the eq<=0 guard below discards any empty one regardless. + for (String pair : rawQuery.split("&", 0)) { + int eq = pair.indexOf('='); + if (eq <= 0) { + continue; + } + String key = pair.substring(0, eq); + String value; + try { + value = + java.net.URLDecoder.decode( + pair.substring(eq + 1), java.nio.charset.StandardCharsets.UTF_8); + } catch (IllegalArgumentException e) { + continue; + } + if (value.isEmpty()) { + continue; + } + if ("__token".equals(key)) { + return value; + } + if ("token".equals(key) && fallback == null) { + fallback = value; + } + } + return fallback; + } + /** Reconstruct the full request URL (scheme://host/path?query) from an {@link HttpExchange}. */ private static String fullUrlOf(HttpExchange exchange) { java.net.URI uri = exchange.getRequestURI(); @@ -1588,7 +2042,8 @@ private void handleSwaigEndpoint(HttpExchange exchange) throws IOException { } } - Object[] dispatch = swaigPreDispatch(payload, funcName); + Object[] dispatch = + swaigPreDispatch(payload, funcName, swaigTokenOf(exchange.getRequestURI().getRawQuery())); Service target = (Service) dispatch[0]; @SuppressWarnings("unchecked") java.util.Map shortCircuit = (java.util.Map) dispatch[1]; diff --git a/src/main/java/com/signalwire/sdk/swml/SwmlRenderer.java b/src/main/java/com/signalwire/sdk/swml/SwmlRenderer.java index 24c9c785..89ed9e30 100644 --- a/src/main/java/com/signalwire/sdk/swml/SwmlRenderer.java +++ b/src/main/java/com/signalwire/sdk/swml/SwmlRenderer.java @@ -17,13 +17,10 @@ * Renders SWML documents for SignalWire AI Agents with AI and SWAIG components, built on top of the * {@link Service} document model. * - *

      Mirrors the Python reference {@code signalwire.core.swml_renderer.SwmlRenderer} (two - * static-method helpers) and the Ruby {@code SignalWire::SWML::SwmlRenderer}. Both helpers are - * static. + *

      Both helpers are static; there is nothing to instantiate. * *

      {@link #renderSwml(RenderOptions)} has many optional inputs, so it takes a {@link - * RenderOptions} builder object (the Java named-parameter idiom); convenience overloads cover the - * common minimal calls. + * RenderOptions} builder object; convenience overloads cover the common minimal calls. */ public final class SwmlRenderer { @@ -37,9 +34,8 @@ public final class SwmlRenderer { private SwmlRenderer() {} /** - * Options for {@link #renderSwml(RenderOptions)} — the Java named-parameter idiom for the many - * optional inputs of the reference {@code render_swml} static method. Build with {@link - * #of(Object, Service)} then chain setters. + * Options for {@link #renderSwml(RenderOptions)}, which has too many optional inputs for a + * positional signature. Build with {@link #of(Object, Service)} then chain setters. */ public static final class RenderOptions { private Object prompt; @@ -75,66 +71,158 @@ public static RenderOptions of(Object prompt, Service service) { return o; } + /** + * The prompt run after the conversation ends, whose output becomes the call summary. + * + * @param v the post-prompt text. + * @return these options, for chaining. + */ public RenderOptions postPrompt(String v) { this.postPrompt = v; return this; } + /** + * Where the platform POSTs the post-prompt summary. That endpoint receives conversation + * content. + * + * @param v the post-prompt URL. + * @return these options, for chaining. + */ public RenderOptions postPromptUrl(String v) { this.postPromptUrl = v; return this; } + /** + * The SWAIG function definitions to render into the AI verb — the tools the model may call. + * + * @param v the function objects as they should appear on the wire. + * @return these options, for chaining. + */ public RenderOptions swaigFunctions(List> v) { this.swaigFunctions = v; return this; } + /** + * Endpoint called when the AI session starts. + * + * @param v the startup hook URL. + * @return these options, for chaining. + */ public RenderOptions startupHookUrl(String v) { this.startupHookUrl = v; return this; } + /** + * Endpoint called when the call hangs up. + * + * @param v the hangup hook URL. + * @return these options, for chaining. + */ public RenderOptions hangupHookUrl(String v) { this.hangupHookUrl = v; return this; } + /** + * Whether the prompt passed to {@code of(...)} is a POM structure rather than a plain string. + * This governs how it is rendered, so it must match what was actually supplied. + * + * @param v {@code true} when the prompt is a POM. + * @return these options, for chaining. + */ public RenderOptions promptIsPom(boolean v) { this.promptIsPom = v; return this; } + /** + * Extra keys merged at the {@code ai} verb's TOP level — they land beside {@code prompt} and + * {@code SWAIG}, NOT inside {@code ai.params}. + * + *

      {@code AIObject} is CLOSED ({@code unevaluatedProperties: {"not": {}}}), so only keys it + * declares are legal here — {@code prompt}, {@code post_prompt}, {@code post_prompt_url}, + * {@code SWAIG}, {@code params}, {@code global_data}, {@code hints}, {@code languages}, {@code + * pronounce}. LLM tuning knobs such as {@code temperature} are {@code AIParams} keys: pass them + * as {@code params(Map.of("params", Map.of("temperature", 0.4)))}. (This javadoc previously + * claimed the map rendered into {@code ai.params}; it does not, and the mismatch shipped + * invalid documents because this path bypassed the validator.) + * + * @param v the top-level ai keys. + * @return these options, for chaining. + */ public RenderOptions params(Map v) { this.params = v; return this; } + /** + * Whether the rendered document answers the call before the AI verb runs. + * + * @param v whether to emit an answer verb. + * @return these options, for chaining. + */ public RenderOptions addAnswer(boolean v) { this.addAnswer = v; return this; } + /** + * Whether the rendered document starts background call recording. Recording call audio carries + * consent and retention obligations in most jurisdictions. + * + * @param v whether to record. + * @return these options, for chaining. + */ public RenderOptions recordCall(boolean v) { this.recordCall = v; return this; } + /** + * Container format for the recording; defaults to {@code mp4}. Only meaningful when {@link + * #recordCall(boolean)} is on. + * + * @param v the container format. + * @return these options, for chaining. + */ public RenderOptions recordFormat(String v) { this.recordFormat = v; return this; } + /** + * Whether the recording keeps each leg on its own channel; defaults to {@code true}, which is + * what makes per-speaker transcription possible afterwards. + * + * @param v whether to record in stereo. + * @return these options, for chaining. + */ public RenderOptions recordStereo(boolean v) { this.recordStereo = v; return this; } + /** + * Output format for the rendered document; defaults to {@code json}. + * + * @param v the output format. + * @return these options, for chaining. + */ public RenderOptions format(String v) { this.format = v; return this; } + /** + * Webhook URL applied to SWAIG functions that do not carry one of their own. + * + * @param v the default webhook URL. + * @return these options, for chaining. + */ public RenderOptions defaultWebhookUrl(String v) { this.defaultWebhookUrl = v; return this; @@ -169,7 +257,10 @@ public static String renderSwml(RenderOptions opts) { Map rc = new LinkedHashMap<>(); rc.put("format", opts.recordFormat); rc.put("stereo", opts.recordStereo); - opts.service.getDocument().addVerb("record_call", rc); + // Through the validating Service.addVerb choke point, as the reference does + // (swml_renderer.py routes every verb through service.add_verb) — the raw + // Document entry point accepts any shape, which is how invalid configs ship. + opts.service.addVerb("record_call", rc); } List> functions = @@ -220,9 +311,14 @@ public static String renderFunctionResponseSwml( String responseText, Service service, List> actions, String format) { service.getDocument().reset(); if (responseText != null && !responseText.isEmpty()) { + // Text is played via the `say:` URL scheme — the SWML `play` verb has no `text` + // key (its config is PlayWithURL/PlayWithURLS, url matching `...|say: ?.*|...`). + // Emitting `{"text": ...}` produced a document the SWML schema rejects, and it + // shipped silently because this wrote through the RAW document. Route through the + // validating Service.addVerb choke point, as the reference does. Map play = new LinkedHashMap<>(); - play.put("text", responseText); - service.getDocument().addVerb("play", play); + play.put("url", "say:" + responseText); + service.addVerb("play", play); } if (actions != null) { for (Map action : actions) { @@ -240,11 +336,15 @@ public static String renderFunctionResponseSwml( // Helpers // ------------------------------------------------------------------ - /** Add the first recognised action verb from an action map to the document. */ + /** + * Add the first recognised action verb from an action map to the document, through the validating + * {@link Service#addVerb} choke point — a caller-supplied action config that the SWML schema + * rejects must raise, not ship. + */ private static void addResponseAction(Service service, Map action) { for (String v : RESPONSE_ACTION_VERBS) { if (action.containsKey(v)) { - service.getDocument().addVerb(v, action.get(v)); + service.addVerb(v, action.get(v)); return; } } diff --git a/src/main/java/com/signalwire/sdk/swml/TapDirection.java b/src/main/java/com/signalwire/sdk/swml/TapDirection.java index 3f775757..ee75821b 100644 --- a/src/main/java/com/signalwire/sdk/swml/TapDirection.java +++ b/src/main/java/com/signalwire/sdk/swml/TapDirection.java @@ -16,9 +16,9 @@ * } * *

      This is a DIFFERENT set from {@link RecordDirection}. {@code tap} uses {@code - * hear} where {@code record_call} uses {@code listen}, mirroring the reference's two separate - * validation lists — the two sets are modelled as two distinct enums and are never shared (see the - * 3-vocabulary trap: SWML {@code record_call} {@code {speak,listen,both}} vs SWML {@code tap} + * hear} where {@code record_call} uses {@code listen}: the server validates the two verbs against + * two separate lists, so the two sets are modelled as two distinct enums and are never shared (see + * the 3-vocabulary trap: SWML {@code record_call} {@code {speak,listen,both}} vs SWML {@code tap} * {@code {speak,hear,both}} vs RELAY {@code {listen,speak,both}}). * *

      Each constant's {@link #getValue() value} is the canonical wire string, so routing a tap @@ -37,7 +37,7 @@ public enum TapDirection implements WireEnum { /** * The canonical wire string for this direction ({@code "speak"} / {@code "hear"} / {@code - * "both"}). Equivalent to PHP's backed-enum {@code ->value}. + * "both"}). * * @return the lower-case direction name as it appears on the wire. */ @@ -48,9 +48,8 @@ public String getValue() { /** * Parse a wire string into a {@link TapDirection}, or return {@code null} if it is not a - * recognised direction (the same strings the Python reference would reject with {@code - * ValueError}). Note {@code "listen"} is valid for {@link RecordDirection} but NOT for {@code - * tap}, so it returns {@code null} here. The Java analog of Rust's {@code from_str}. + * recognised direction — the same strings the server rejects. Note {@code "listen"} is valid for + * {@link RecordDirection} but NOT for {@code tap}, so it returns {@code null} here. * * @param wire the candidate wire string (case-sensitive). * @return the matching constant, or {@code null} if none matches. diff --git a/src/main/java/com/signalwire/sdk/swml/VerbHandlerRegistry.java b/src/main/java/com/signalwire/sdk/swml/VerbHandlerRegistry.java index 3c2f1426..a83c03c5 100644 --- a/src/main/java/com/signalwire/sdk/swml/VerbHandlerRegistry.java +++ b/src/main/java/com/signalwire/sdk/swml/VerbHandlerRegistry.java @@ -57,8 +57,7 @@ public boolean hasHandler(String verbName) { } /** - * The registered verb names, sorted. Mirrors reading {@code sorted(self._handlers.keys())} on the - * Python VerbHandlerRegistry. + * The registered verb names, sorted. * * @return a sorted list of registered verb names */ diff --git a/src/main/java/com/signalwire/sdk/swml/WireEnum.java b/src/main/java/com/signalwire/sdk/swml/WireEnum.java index 3c8a8313..48fc072e 100644 --- a/src/main/java/com/signalwire/sdk/swml/WireEnum.java +++ b/src/main/java/com/signalwire/sdk/swml/WireEnum.java @@ -26,8 +26,7 @@ public interface WireEnum { /** * The canonical wire string for this constant — the exact value the SignalWire platform expects - * (e.g. {@code "mp3"} / {@code "listen"} / {@code "PCMU"}). Equivalent to PHP's backed-enum - * {@code ->value}. + * (e.g. {@code "mp3"} / {@code "listen"} / {@code "PCMU"}). * * @return the wire string as it appears on the wire. */ diff --git a/src/main/java/com/signalwire/sdk/swml/generated/AI.java b/src/main/java/com/signalwire/sdk/swml/generated/AI.java index f06f1aa8..c2bf5ea8 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/AI.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/AI.java @@ -9,8 +9,8 @@ /** * AI — generated wire type (schema.json $defs schema 'AI'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AI { public java.util.Map ai; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/AIObject.java b/src/main/java/com/signalwire/sdk/swml/generated/AIObject.java index efb3bcfe..bbfe6a09 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/AIObject.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/AIObject.java @@ -9,8 +9,8 @@ /** * AIObject — generated wire type (schema.json $defs schema 'AIObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIObject { public java.util.Map global_data; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/AIParams.java b/src/main/java/com/signalwire/sdk/swml/generated/AIParams.java index adb75db5..cff118fe 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/AIParams.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/AIParams.java @@ -9,8 +9,8 @@ /** * AIParams — generated wire type (schema.json $defs schema 'AIParams'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIParams { public java.util.Map acknowledge_interruptions; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/AIPostPromptPom.java b/src/main/java/com/signalwire/sdk/swml/generated/AIPostPromptPom.java index e46660dc..6899676a 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/AIPostPromptPom.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/AIPostPromptPom.java @@ -9,8 +9,8 @@ /** * AIPostPromptPom — generated wire type (schema.json $defs schema 'AIPostPromptPom'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPostPromptPom { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/AIPostPromptText.java b/src/main/java/com/signalwire/sdk/swml/generated/AIPostPromptText.java index ff955451..c83a8930 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/AIPostPromptText.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/AIPostPromptText.java @@ -9,8 +9,8 @@ /** * AIPostPromptText — generated wire type (schema.json $defs schema 'AIPostPromptText'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPostPromptText { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/AIPromptPom.java b/src/main/java/com/signalwire/sdk/swml/generated/AIPromptPom.java index cf842cc4..a2a8232c 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/AIPromptPom.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/AIPromptPom.java @@ -9,8 +9,8 @@ /** * AIPromptPom — generated wire type (schema.json $defs schema 'AIPromptPom'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPromptPom { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/AIPromptText.java b/src/main/java/com/signalwire/sdk/swml/generated/AIPromptText.java index ca1fa0f5..7fbbb03c 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/AIPromptText.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/AIPromptText.java @@ -9,8 +9,8 @@ /** * AIPromptText — generated wire type (schema.json $defs schema 'AIPromptText'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AIPromptText { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/AiSidecar.java b/src/main/java/com/signalwire/sdk/swml/generated/AiSidecar.java index 87c6cc3a..5e6d447c 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/AiSidecar.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/AiSidecar.java @@ -9,8 +9,8 @@ /** * AiSidecar — generated wire type (schema.json $defs schema 'AiSidecar'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AiSidecar { public java.util.Map ai_sidecar; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/AiSidecarConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/AiSidecarConfig.java index b6224078..75c23412 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/AiSidecarConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/AiSidecarConfig.java @@ -9,8 +9,8 @@ /** * AiSidecarConfig — generated wire type (flattened SWMLMethod verb 'ai_sidecar' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AiSidecarConfig { public java.util.Map prompt; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/AllOfProperty.java b/src/main/java/com/signalwire/sdk/swml/generated/AllOfProperty.java index 37b34a44..5d9f6f12 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/AllOfProperty.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/AllOfProperty.java @@ -9,8 +9,8 @@ /** * AllOfProperty — generated wire type (schema.json $defs schema 'AllOfProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AllOfProperty { public java.util.List allOf; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/AmazonBedrock.java b/src/main/java/com/signalwire/sdk/swml/generated/AmazonBedrock.java index e445c495..8386fc93 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/AmazonBedrock.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/AmazonBedrock.java @@ -9,8 +9,8 @@ /** * AmazonBedrock — generated wire type (schema.json $defs schema 'AmazonBedrock'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AmazonBedrock { public java.util.Map amazon_bedrock; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/AmazonBedrockObject.java b/src/main/java/com/signalwire/sdk/swml/generated/AmazonBedrockObject.java index dccd0a71..305e2ecb 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/AmazonBedrockObject.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/AmazonBedrockObject.java @@ -9,8 +9,8 @@ /** * AmazonBedrockObject — generated wire type (schema.json $defs schema 'AmazonBedrockObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AmazonBedrockObject { public java.util.Map global_data; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Answer.java b/src/main/java/com/signalwire/sdk/swml/generated/Answer.java index 9cb54585..67a6ff5f 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Answer.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Answer.java @@ -9,8 +9,8 @@ /** * Answer — generated wire type (schema.json $defs schema 'Answer'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Answer { public java.util.Map answer; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/AnyOfProperty.java b/src/main/java/com/signalwire/sdk/swml/generated/AnyOfProperty.java index c8532ece..22b19c63 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/AnyOfProperty.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/AnyOfProperty.java @@ -9,8 +9,8 @@ /** * AnyOfProperty — generated wire type (schema.json $defs schema 'AnyOfProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class AnyOfProperty { public java.util.List anyOf; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ArrayProperty.java b/src/main/java/com/signalwire/sdk/swml/generated/ArrayProperty.java index 77640a1e..d351d026 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ArrayProperty.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ArrayProperty.java @@ -9,8 +9,8 @@ /** * ArrayProperty — generated wire type (schema.json $defs schema 'ArrayProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ArrayProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/BedrockParams.java b/src/main/java/com/signalwire/sdk/swml/generated/BedrockParams.java index c149677a..3ef557ee 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/BedrockParams.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/BedrockParams.java @@ -9,8 +9,8 @@ /** * BedrockParams — generated wire type (schema.json $defs schema 'BedrockParams'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class BedrockParams { public java.util.Map attention_timeout; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/BedrockSWAIG.java b/src/main/java/com/signalwire/sdk/swml/generated/BedrockSWAIG.java index 7cebd299..4de5242a 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/BedrockSWAIG.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/BedrockSWAIG.java @@ -9,8 +9,8 @@ /** * BedrockSWAIG — generated wire type (schema.json $defs schema 'BedrockSWAIG'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class BedrockSWAIG { public java.util.List functions; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/BooleanProperty.java b/src/main/java/com/signalwire/sdk/swml/generated/BooleanProperty.java index 025f4bec..9998b074 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/BooleanProperty.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/BooleanProperty.java @@ -9,8 +9,8 @@ /** * BooleanProperty — generated wire type (schema.json $defs schema 'BooleanProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class BooleanProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ChangeContextAction.java b/src/main/java/com/signalwire/sdk/swml/generated/ChangeContextAction.java index 80097fbb..483b4aa3 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ChangeContextAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ChangeContextAction.java @@ -9,8 +9,8 @@ /** * ChangeContextAction — generated wire type (schema.json $defs schema 'ChangeContextAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChangeContextAction { public String change_context; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ChangeStepAction.java b/src/main/java/com/signalwire/sdk/swml/generated/ChangeStepAction.java index da562dd9..3e04e240 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ChangeStepAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ChangeStepAction.java @@ -9,8 +9,8 @@ /** * ChangeStepAction — generated wire type (schema.json $defs schema 'ChangeStepAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ChangeStepAction { public String change_step; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Cond.java b/src/main/java/com/signalwire/sdk/swml/generated/Cond.java index a2952485..73a122c4 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Cond.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Cond.java @@ -9,8 +9,8 @@ /** * Cond — generated wire type (schema.json $defs schema 'Cond'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Cond { public java.util.List cond; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/CondElse.java b/src/main/java/com/signalwire/sdk/swml/generated/CondElse.java index 5931fe89..4f4ca149 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/CondElse.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/CondElse.java @@ -9,8 +9,8 @@ /** * CondElse — generated wire type (schema.json $defs schema 'CondElse'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CondElse { /** wire key: else */ diff --git a/src/main/java/com/signalwire/sdk/swml/generated/CondReg.java b/src/main/java/com/signalwire/sdk/swml/generated/CondReg.java index cbe4ad63..958122f7 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/CondReg.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/CondReg.java @@ -9,8 +9,8 @@ /** * CondReg — generated wire type (schema.json $defs schema 'CondReg'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class CondReg { public String when; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Connect.java b/src/main/java/com/signalwire/sdk/swml/generated/Connect.java index 30077cfd..c5251484 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Connect.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Connect.java @@ -9,8 +9,8 @@ /** * Connect — generated wire type (schema.json $defs schema 'Connect'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Connect { public java.util.Map connect; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ConnectConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/ConnectConfig.java index bcb5a22d..0b355942 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ConnectConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ConnectConfig.java @@ -9,8 +9,8 @@ /** * ConnectConfig — generated wire type (flattened SWMLMethod verb 'connect' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectConfig { public String from; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceParallel.java b/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceParallel.java index ac0c1eed..e5b29acf 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceParallel.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceParallel.java @@ -9,8 +9,8 @@ /** * ConnectDeviceParallel — generated wire type (schema.json $defs schema 'ConnectDeviceParallel'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectDeviceParallel { public String from; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceSerial.java b/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceSerial.java index 395e14c0..c572d3ab 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceSerial.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceSerial.java @@ -9,8 +9,8 @@ /** * ConnectDeviceSerial — generated wire type (schema.json $defs schema 'ConnectDeviceSerial'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectDeviceSerial { public String from; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceSerialParallel.java b/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceSerialParallel.java index a626dc11..e433c1d5 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceSerialParallel.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceSerialParallel.java @@ -10,8 +10,8 @@ * ConnectDeviceSerialParallel — generated wire type (schema.json $defs schema * 'ConnectDeviceSerialParallel'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectDeviceSerialParallel { public String from; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceSingle.java b/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceSingle.java index a2a48992..5389d328 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceSingle.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ConnectDeviceSingle.java @@ -9,8 +9,8 @@ /** * ConnectDeviceSingle — generated wire type (schema.json $defs schema 'ConnectDeviceSingle'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectDeviceSingle { public String from; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ConnectHeaders.java b/src/main/java/com/signalwire/sdk/swml/generated/ConnectHeaders.java index ac007daf..cbd5e1c6 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ConnectHeaders.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ConnectHeaders.java @@ -9,8 +9,8 @@ /** * ConnectHeaders — generated wire type (schema.json $defs schema 'ConnectHeaders'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectHeaders { public String name; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ConnectSwitch.java b/src/main/java/com/signalwire/sdk/swml/generated/ConnectSwitch.java index f5380eb3..9b7478a6 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ConnectSwitch.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ConnectSwitch.java @@ -9,8 +9,8 @@ /** * ConnectSwitch — generated wire type (schema.json $defs schema 'ConnectSwitch'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConnectSwitch { public String variable; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ConstProperty.java b/src/main/java/com/signalwire/sdk/swml/generated/ConstProperty.java index a5cd68ab..662c65de 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ConstProperty.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ConstProperty.java @@ -9,8 +9,8 @@ /** * ConstProperty — generated wire type (schema.json $defs schema 'ConstProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConstProperty { /** wire key: const */ diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ContextPOMSteps.java b/src/main/java/com/signalwire/sdk/swml/generated/ContextPOMSteps.java index c2cbb8c6..1ce98007 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ContextPOMSteps.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ContextPOMSteps.java @@ -9,8 +9,8 @@ /** * ContextPOMSteps — generated wire type (schema.json $defs schema 'ContextPOMSteps'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextPOMSteps { public String name; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ContextSwitchAction.java b/src/main/java/com/signalwire/sdk/swml/generated/ContextSwitchAction.java index adcbffc9..cd7f3b93 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ContextSwitchAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ContextSwitchAction.java @@ -9,8 +9,8 @@ /** * ContextSwitchAction — generated wire type (schema.json $defs schema 'ContextSwitchAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextSwitchAction { public java.util.Map context_switch; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ContextTextSteps.java b/src/main/java/com/signalwire/sdk/swml/generated/ContextTextSteps.java index e8fef399..6b01eb46 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ContextTextSteps.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ContextTextSteps.java @@ -9,8 +9,8 @@ /** * ContextTextSteps — generated wire type (schema.json $defs schema 'ContextTextSteps'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextTextSteps { public String name; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Contexts.java b/src/main/java/com/signalwire/sdk/swml/generated/Contexts.java index 6c301b7a..f0c6e035 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Contexts.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Contexts.java @@ -9,8 +9,8 @@ /** * Contexts — generated wire type (schema.json $defs schema 'Contexts'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Contexts { /** wire key: default */ diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ContextsPOMObject.java b/src/main/java/com/signalwire/sdk/swml/generated/ContextsPOMObject.java index 30596232..6aa1b21f 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ContextsPOMObject.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ContextsPOMObject.java @@ -9,8 +9,8 @@ /** * ContextsPOMObject — generated wire type (schema.json $defs schema 'ContextsPOMObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextsPOMObject { public java.util.List steps; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ContextsTextObject.java b/src/main/java/com/signalwire/sdk/swml/generated/ContextsTextObject.java index a522c6cb..8f41b975 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ContextsTextObject.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ContextsTextObject.java @@ -9,8 +9,8 @@ /** * ContextsTextObject — generated wire type (schema.json $defs schema 'ContextsTextObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ContextsTextObject { public java.util.List steps; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ConversationMessage.java b/src/main/java/com/signalwire/sdk/swml/generated/ConversationMessage.java index 0efbb664..8e9ce8e9 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ConversationMessage.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ConversationMessage.java @@ -9,8 +9,8 @@ /** * ConversationMessage — generated wire type (schema.json $defs schema 'ConversationMessage'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ConversationMessage { public String role; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/DataMap.java b/src/main/java/com/signalwire/sdk/swml/generated/DataMap.java index 89bd7dc0..8dfa88b9 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/DataMap.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/DataMap.java @@ -9,8 +9,8 @@ /** * DataMap — generated wire type (schema.json $defs schema 'DataMap'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DataMap { public java.util.Map output; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Denoise.java b/src/main/java/com/signalwire/sdk/swml/generated/Denoise.java index a27a1ba8..04beb239 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Denoise.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Denoise.java @@ -9,8 +9,8 @@ /** * Denoise — generated wire type (schema.json $defs schema 'Denoise'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Denoise { public java.util.Map denoise; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/DetectMachine.java b/src/main/java/com/signalwire/sdk/swml/generated/DetectMachine.java index bb646a2f..67dcaca7 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/DetectMachine.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/DetectMachine.java @@ -9,8 +9,8 @@ /** * DetectMachine — generated wire type (schema.json $defs schema 'DetectMachine'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DetectMachine { public java.util.Map detect_machine; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/DetectMachineConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/DetectMachineConfig.java index 71ec5866..15d7cfe1 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/DetectMachineConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/DetectMachineConfig.java @@ -9,8 +9,8 @@ /** * DetectMachineConfig — generated wire type (flattened SWMLMethod verb 'detect_machine' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class DetectMachineConfig { public java.util.Map detect_message_end; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/EnterQueue.java b/src/main/java/com/signalwire/sdk/swml/generated/EnterQueue.java index 721b6e21..676fe019 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/EnterQueue.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/EnterQueue.java @@ -9,8 +9,8 @@ /** * EnterQueue — generated wire type (schema.json $defs schema 'EnterQueue'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class EnterQueue { public java.util.Map enter_queue; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/EnterQueueObject.java b/src/main/java/com/signalwire/sdk/swml/generated/EnterQueueObject.java index b5d3b4a7..0961b234 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/EnterQueueObject.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/EnterQueueObject.java @@ -9,8 +9,8 @@ /** * EnterQueueObject — generated wire type (schema.json $defs schema 'EnterQueueObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class EnterQueueObject { public String queue_name; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Execute.java b/src/main/java/com/signalwire/sdk/swml/generated/Execute.java index 24c2c5ee..50af7184 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Execute.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Execute.java @@ -9,8 +9,8 @@ /** * Execute — generated wire type (schema.json $defs schema 'Execute'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Execute { public java.util.Map execute; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ExecuteConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/ExecuteConfig.java index 36a2a9c0..10673a21 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ExecuteConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ExecuteConfig.java @@ -9,8 +9,8 @@ /** * ExecuteConfig — generated wire type (flattened SWMLMethod verb 'execute' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ExecuteConfig { public String dest; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ExecuteSwitch.java b/src/main/java/com/signalwire/sdk/swml/generated/ExecuteSwitch.java index 163dac9e..d0fdbc2e 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ExecuteSwitch.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ExecuteSwitch.java @@ -9,8 +9,8 @@ /** * ExecuteSwitch — generated wire type (schema.json $defs schema 'ExecuteSwitch'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ExecuteSwitch { public String variable; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Expression.java b/src/main/java/com/signalwire/sdk/swml/generated/Expression.java index 40ae80cb..f8c2bd6b 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Expression.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Expression.java @@ -9,8 +9,8 @@ /** * Expression — generated wire type (schema.json $defs schema 'Expression'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Expression { public String string; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/FunctionParameters.java b/src/main/java/com/signalwire/sdk/swml/generated/FunctionParameters.java index 7322a18b..0f8b4e4a 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/FunctionParameters.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/FunctionParameters.java @@ -9,8 +9,8 @@ /** * FunctionParameters — generated wire type (schema.json $defs schema 'FunctionParameters'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class FunctionParameters { public String type; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Goto.java b/src/main/java/com/signalwire/sdk/swml/generated/Goto.java index 69f0b122..18b828d8 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Goto.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Goto.java @@ -9,8 +9,8 @@ /** * Goto — generated wire type (schema.json $defs schema 'Goto'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Goto { /** wire key: goto */ diff --git a/src/main/java/com/signalwire/sdk/swml/generated/GotoConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/GotoConfig.java index f76d955a..57d3ff43 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/GotoConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/GotoConfig.java @@ -9,8 +9,8 @@ /** * GotoConfig — generated wire type (flattened SWMLMethod verb 'goto' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class GotoConfig { public String label; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/HangUpHookSWAIGFunction.java b/src/main/java/com/signalwire/sdk/swml/generated/HangUpHookSWAIGFunction.java index a5acca37..b4449da5 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/HangUpHookSWAIGFunction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/HangUpHookSWAIGFunction.java @@ -10,8 +10,8 @@ * HangUpHookSWAIGFunction — generated wire type (schema.json $defs schema * 'HangUpHookSWAIGFunction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class HangUpHookSWAIGFunction { public String description; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Hangup.java b/src/main/java/com/signalwire/sdk/swml/generated/Hangup.java index b2231f41..a55e5782 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Hangup.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Hangup.java @@ -9,8 +9,8 @@ /** * Hangup — generated wire type (schema.json $defs schema 'Hangup'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Hangup { public java.util.Map hangup; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/HangupAction.java b/src/main/java/com/signalwire/sdk/swml/generated/HangupAction.java index a8296d51..cf3c2fd4 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/HangupAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/HangupAction.java @@ -9,8 +9,8 @@ /** * HangupAction — generated wire type (schema.json $defs schema 'HangupAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class HangupAction { public java.util.Map hangup; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Hint.java b/src/main/java/com/signalwire/sdk/swml/generated/Hint.java index 967fe8f1..3cde4bc4 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Hint.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Hint.java @@ -9,8 +9,8 @@ /** * Hint — generated wire type (schema.json $defs schema 'Hint'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Hint { public String hint; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/HoldAction.java b/src/main/java/com/signalwire/sdk/swml/generated/HoldAction.java index e7067ceb..d0ff02bd 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/HoldAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/HoldAction.java @@ -9,8 +9,8 @@ /** * HoldAction — generated wire type (schema.json $defs schema 'HoldAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class HoldAction { public java.util.Map hold; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/InjectAction.java b/src/main/java/com/signalwire/sdk/swml/generated/InjectAction.java index c29fe1e6..375d6877 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/InjectAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/InjectAction.java @@ -9,8 +9,8 @@ /** * InjectAction — generated wire type (schema.json $defs schema 'InjectAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class InjectAction { public java.util.Map inject; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/IntegerProperty.java b/src/main/java/com/signalwire/sdk/swml/generated/IntegerProperty.java index 7cac0a07..6002e9e8 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/IntegerProperty.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/IntegerProperty.java @@ -9,8 +9,8 @@ /** * IntegerProperty — generated wire type (schema.json $defs schema 'IntegerProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class IntegerProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/JoinConference.java b/src/main/java/com/signalwire/sdk/swml/generated/JoinConference.java index 8c986849..e83c1281 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/JoinConference.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/JoinConference.java @@ -9,8 +9,8 @@ /** * JoinConference — generated wire type (schema.json $defs schema 'JoinConference'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class JoinConference { public java.util.Map join_conference; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/JoinConferenceObject.java b/src/main/java/com/signalwire/sdk/swml/generated/JoinConferenceObject.java index 0b975b09..842d596c 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/JoinConferenceObject.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/JoinConferenceObject.java @@ -9,8 +9,8 @@ /** * JoinConferenceObject — generated wire type (schema.json $defs schema 'JoinConferenceObject'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class JoinConferenceObject { public String name; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/JoinRoom.java b/src/main/java/com/signalwire/sdk/swml/generated/JoinRoom.java index 274c011f..594e6d37 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/JoinRoom.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/JoinRoom.java @@ -9,8 +9,8 @@ /** * JoinRoom — generated wire type (schema.json $defs schema 'JoinRoom'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class JoinRoom { public java.util.Map join_room; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/JoinRoomConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/JoinRoomConfig.java index 83448911..1a928acf 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/JoinRoomConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/JoinRoomConfig.java @@ -9,8 +9,8 @@ /** * JoinRoomConfig — generated wire type (flattened SWMLMethod verb 'join_room' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class JoinRoomConfig { public String name; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Label.java b/src/main/java/com/signalwire/sdk/swml/generated/Label.java index 018cdcc8..c8713352 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Label.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Label.java @@ -9,8 +9,8 @@ /** * Label — generated wire type (schema.json $defs schema 'Label'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Label { public String label; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/LanguageParams.java b/src/main/java/com/signalwire/sdk/swml/generated/LanguageParams.java index 0b678e92..b1cdf038 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/LanguageParams.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/LanguageParams.java @@ -9,8 +9,8 @@ /** * LanguageParams — generated wire type (schema.json $defs schema 'LanguageParams'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LanguageParams { public java.util.Map stability; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/LanguagesWithFillers.java b/src/main/java/com/signalwire/sdk/swml/generated/LanguagesWithFillers.java index 5ce6fee8..d9e3f9e5 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/LanguagesWithFillers.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/LanguagesWithFillers.java @@ -9,8 +9,8 @@ /** * LanguagesWithFillers — generated wire type (schema.json $defs schema 'LanguagesWithFillers'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LanguagesWithFillers { public String name; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/LanguagesWithSoloFillers.java b/src/main/java/com/signalwire/sdk/swml/generated/LanguagesWithSoloFillers.java index 9bf8873a..2237b121 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/LanguagesWithSoloFillers.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/LanguagesWithSoloFillers.java @@ -10,8 +10,8 @@ * LanguagesWithSoloFillers — generated wire type (schema.json $defs schema * 'LanguagesWithSoloFillers'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LanguagesWithSoloFillers { public String name; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/LiveTranscribe.java b/src/main/java/com/signalwire/sdk/swml/generated/LiveTranscribe.java index 53c486b8..e84c73bb 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/LiveTranscribe.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/LiveTranscribe.java @@ -9,8 +9,8 @@ /** * LiveTranscribe — generated wire type (schema.json $defs schema 'LiveTranscribe'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LiveTranscribe { public java.util.Map live_transcribe; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/LiveTranscribeConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/LiveTranscribeConfig.java index 6f655f4d..57a79dd7 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/LiveTranscribeConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/LiveTranscribeConfig.java @@ -9,8 +9,8 @@ /** * LiveTranscribeConfig — generated wire type (flattened SWMLMethod verb 'live_transcribe' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LiveTranscribeConfig { public java.util.Map action; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/LiveTranslate.java b/src/main/java/com/signalwire/sdk/swml/generated/LiveTranslate.java index 624fb918..48633268 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/LiveTranslate.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/LiveTranslate.java @@ -9,8 +9,8 @@ /** * LiveTranslate — generated wire type (schema.json $defs schema 'LiveTranslate'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LiveTranslate { public java.util.Map live_translate; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/LiveTranslateConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/LiveTranslateConfig.java index 2b971f51..398a410d 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/LiveTranslateConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/LiveTranslateConfig.java @@ -9,8 +9,8 @@ /** * LiveTranslateConfig — generated wire type (flattened SWMLMethod verb 'live_translate' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class LiveTranslateConfig { public java.util.Map action; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/NullProperty.java b/src/main/java/com/signalwire/sdk/swml/generated/NullProperty.java index 7f2b3836..394040ff 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/NullProperty.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/NullProperty.java @@ -9,8 +9,8 @@ /** * NullProperty — generated wire type (schema.json $defs schema 'NullProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class NullProperty { public String type; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/NumberProperty.java b/src/main/java/com/signalwire/sdk/swml/generated/NumberProperty.java index b332e033..2d8c5a0c 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/NumberProperty.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/NumberProperty.java @@ -9,8 +9,8 @@ /** * NumberProperty — generated wire type (schema.json $defs schema 'NumberProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class NumberProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ObjectProperty.java b/src/main/java/com/signalwire/sdk/swml/generated/ObjectProperty.java index 4c9eedc2..983df21b 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ObjectProperty.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ObjectProperty.java @@ -9,8 +9,8 @@ /** * ObjectProperty — generated wire type (schema.json $defs schema 'ObjectProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ObjectProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPostPomptTextOmittedPromptProps.java b/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPostPomptTextOmittedPromptProps.java index f7aed897..b96b7005 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPostPomptTextOmittedPromptProps.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPostPomptTextOmittedPromptProps.java @@ -10,8 +10,8 @@ * OmitPropertiesBedrockPostPomptTextOmittedPromptProps — generated wire type (schema.json $defs * schema 'OmitPropertiesBedrockPostPomptTextOmittedPromptProps'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class OmitPropertiesBedrockPostPomptTextOmittedPromptProps { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPostPromptPomOmittedPromptProps.java b/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPostPromptPomOmittedPromptProps.java index 518d5e3f..f8781a85 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPostPromptPomOmittedPromptProps.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPostPromptPomOmittedPromptProps.java @@ -10,8 +10,8 @@ * OmitPropertiesBedrockPostPromptPomOmittedPromptProps — generated wire type (schema.json $defs * schema 'OmitPropertiesBedrockPostPromptPomOmittedPromptProps'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class OmitPropertiesBedrockPostPromptPomOmittedPromptProps { public Long max_tokens; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPromptPomOmittedPromptProps.java b/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPromptPomOmittedPromptProps.java index 0aebe13a..73d22cb1 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPromptPomOmittedPromptProps.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPromptPomOmittedPromptProps.java @@ -10,8 +10,8 @@ * OmitPropertiesBedrockPromptPomOmittedPromptProps — generated wire type (schema.json $defs schema * 'OmitPropertiesBedrockPromptPomOmittedPromptProps'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class OmitPropertiesBedrockPromptPomOmittedPromptProps { public java.util.Map voice_id; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPromptTextOmittedPromptProps.java b/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPromptTextOmittedPromptProps.java index 69bf2501..8995dc02 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPromptTextOmittedPromptProps.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/OmitPropertiesBedrockPromptTextOmittedPromptProps.java @@ -10,8 +10,8 @@ * OmitPropertiesBedrockPromptTextOmittedPromptProps — generated wire type (schema.json $defs schema * 'OmitPropertiesBedrockPromptTextOmittedPromptProps'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class OmitPropertiesBedrockPromptTextOmittedPromptProps { public java.util.Map voice_id; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/OneOfProperty.java b/src/main/java/com/signalwire/sdk/swml/generated/OneOfProperty.java index 89008d8e..86e28336 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/OneOfProperty.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/OneOfProperty.java @@ -9,8 +9,8 @@ /** * OneOfProperty — generated wire type (schema.json $defs schema 'OneOfProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class OneOfProperty { public java.util.List oneOf; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Output.java b/src/main/java/com/signalwire/sdk/swml/generated/Output.java index b7441c2e..79e22e4b 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Output.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Output.java @@ -9,8 +9,8 @@ /** * Output — generated wire type (schema.json $defs schema 'Output'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Output { public String response; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Pay.java b/src/main/java/com/signalwire/sdk/swml/generated/Pay.java index 21b6a7a8..a890b9ed 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Pay.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Pay.java @@ -9,8 +9,8 @@ /** * Pay — generated wire type (schema.json $defs schema 'Pay'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Pay { public java.util.Map pay; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/PayConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/PayConfig.java index de791e1c..82509ce6 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/PayConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/PayConfig.java @@ -9,8 +9,8 @@ /** * PayConfig — generated wire type (flattened SWMLMethod verb 'pay' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PayConfig { public String payment_connector_url; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/PayParameters.java b/src/main/java/com/signalwire/sdk/swml/generated/PayParameters.java index 6947d133..527f8778 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/PayParameters.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/PayParameters.java @@ -9,8 +9,8 @@ /** * PayParameters — generated wire type (schema.json $defs schema 'PayParameters'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PayParameters { public String name; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/PayPromptPlayAction.java b/src/main/java/com/signalwire/sdk/swml/generated/PayPromptPlayAction.java index 5c586a86..f9b55fad 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/PayPromptPlayAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/PayPromptPlayAction.java @@ -9,8 +9,8 @@ /** * PayPromptPlayAction — generated wire type (schema.json $defs schema 'PayPromptPlayAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PayPromptPlayAction { public String type; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/PayPromptSayAction.java b/src/main/java/com/signalwire/sdk/swml/generated/PayPromptSayAction.java index 437ebb86..46e86c9b 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/PayPromptSayAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/PayPromptSayAction.java @@ -9,8 +9,8 @@ /** * PayPromptSayAction — generated wire type (schema.json $defs schema 'PayPromptSayAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PayPromptSayAction { public String type; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/PayPrompts.java b/src/main/java/com/signalwire/sdk/swml/generated/PayPrompts.java index 5c58522f..7c067fd4 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/PayPrompts.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/PayPrompts.java @@ -9,8 +9,8 @@ /** * PayPrompts — generated wire type (schema.json $defs schema 'PayPrompts'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PayPrompts { public java.util.List actions; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesHangUpHookSWAIGFunctionPickedSWAIGFunctionProps.java b/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesHangUpHookSWAIGFunctionPickedSWAIGFunctionProps.java index 647328ed..9f9ee87f 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesHangUpHookSWAIGFunctionPickedSWAIGFunctionProps.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesHangUpHookSWAIGFunctionPickedSWAIGFunctionProps.java @@ -10,8 +10,8 @@ * PickPropertiesHangUpHookSWAIGFunctionPickedSWAIGFunctionProps — generated wire type (schema.json * $defs schema 'PickPropertiesHangUpHookSWAIGFunctionPickedSWAIGFunctionProps'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PickPropertiesHangUpHookSWAIGFunctionPickedSWAIGFunctionProps { public String description; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesStartUpHookSWAIGFunctionPickedSWAIGFunctionProps.java b/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesStartUpHookSWAIGFunctionPickedSWAIGFunctionProps.java index a297551d..f9b83bbe 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesStartUpHookSWAIGFunctionPickedSWAIGFunctionProps.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesStartUpHookSWAIGFunctionPickedSWAIGFunctionProps.java @@ -10,8 +10,8 @@ * PickPropertiesStartUpHookSWAIGFunctionPickedSWAIGFunctionProps — generated wire type (schema.json * $defs schema 'PickPropertiesStartUpHookSWAIGFunctionPickedSWAIGFunctionProps'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PickPropertiesStartUpHookSWAIGFunctionPickedSWAIGFunctionProps { public String description; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesSummarizeConversationSWAIGFunctionPickedSWAIGFunctionProps.java b/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesSummarizeConversationSWAIGFunctionPickedSWAIGFunctionProps.java index bedd9026..a8b889be 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesSummarizeConversationSWAIGFunctionPickedSWAIGFunctionProps.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesSummarizeConversationSWAIGFunctionPickedSWAIGFunctionProps.java @@ -12,8 +12,8 @@ * (schema.json $defs schema * 'PickPropertiesSummarizeConversationSWAIGFunctionPickedSWAIGFunctionProps'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PickPropertiesSummarizeConversationSWAIGFunctionPickedSWAIGFunctionProps { public String description; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesUserSWAIGFunctionPickedSWAIGFunctionProps.java b/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesUserSWAIGFunctionPickedSWAIGFunctionProps.java index 2ebcaebf..f7f1eee1 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesUserSWAIGFunctionPickedSWAIGFunctionProps.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/PickPropertiesUserSWAIGFunctionPickedSWAIGFunctionProps.java @@ -10,8 +10,8 @@ * PickPropertiesUserSWAIGFunctionPickedSWAIGFunctionProps — generated wire type (schema.json $defs * schema 'PickPropertiesUserSWAIGFunctionPickedSWAIGFunctionProps'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PickPropertiesUserSWAIGFunctionPickedSWAIGFunctionProps { public String description; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Play.java b/src/main/java/com/signalwire/sdk/swml/generated/Play.java index 0986f5a2..b12f1ed2 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Play.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Play.java @@ -9,8 +9,8 @@ /** * Play — generated wire type (schema.json $defs schema 'Play'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Play { public java.util.Map play; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/PlayWithURL.java b/src/main/java/com/signalwire/sdk/swml/generated/PlayWithURL.java index a276fc19..7d5c7411 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/PlayWithURL.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/PlayWithURL.java @@ -9,8 +9,8 @@ /** * PlayWithURL — generated wire type (schema.json $defs schema 'PlayWithURL'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PlayWithURL { public java.util.Map auto_answer; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/PlayWithURLS.java b/src/main/java/com/signalwire/sdk/swml/generated/PlayWithURLS.java index 681fa1bc..75bbbea3 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/PlayWithURLS.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/PlayWithURLS.java @@ -9,8 +9,8 @@ /** * PlayWithURLS — generated wire type (schema.json $defs schema 'PlayWithURLS'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PlayWithURLS { public java.util.Map auto_answer; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/PlaybackBGAction.java b/src/main/java/com/signalwire/sdk/swml/generated/PlaybackBGAction.java index ad232fec..578d19fd 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/PlaybackBGAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/PlaybackBGAction.java @@ -9,8 +9,8 @@ /** * PlaybackBGAction — generated wire type (schema.json $defs schema 'PlaybackBGAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PlaybackBGAction { public java.util.Map playback_bg; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/PomSectionBodyContent.java b/src/main/java/com/signalwire/sdk/swml/generated/PomSectionBodyContent.java index 8ebff7aa..6d47c8b0 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/PomSectionBodyContent.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/PomSectionBodyContent.java @@ -9,8 +9,8 @@ /** * PomSectionBodyContent — generated wire type (schema.json $defs schema 'PomSectionBodyContent'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PomSectionBodyContent { public String title; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/PomSectionBulletsContent.java b/src/main/java/com/signalwire/sdk/swml/generated/PomSectionBulletsContent.java index 79b4272f..a6849d4d 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/PomSectionBulletsContent.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/PomSectionBulletsContent.java @@ -10,8 +10,8 @@ * PomSectionBulletsContent — generated wire type (schema.json $defs schema * 'PomSectionBulletsContent'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PomSectionBulletsContent { public String title; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Prompt.java b/src/main/java/com/signalwire/sdk/swml/generated/Prompt.java index 93b6bc64..b748245e 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Prompt.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Prompt.java @@ -9,8 +9,8 @@ /** * Prompt — generated wire type (schema.json $defs schema 'Prompt'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Prompt { public java.util.Map prompt; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/PromptConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/PromptConfig.java index f6de4eb7..8fbf63a2 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/PromptConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/PromptConfig.java @@ -9,8 +9,8 @@ /** * PromptConfig — generated wire type (flattened SWMLMethod verb 'prompt' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class PromptConfig { public java.util.Map play; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Pronounce.java b/src/main/java/com/signalwire/sdk/swml/generated/Pronounce.java index e03e100c..8cf1daae 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Pronounce.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Pronounce.java @@ -9,8 +9,8 @@ /** * Pronounce — generated wire type (schema.json $defs schema 'Pronounce'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Pronounce { public String replace; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ReceiveFax.java b/src/main/java/com/signalwire/sdk/swml/generated/ReceiveFax.java index fceed46e..25d18a6a 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ReceiveFax.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ReceiveFax.java @@ -9,8 +9,8 @@ /** * ReceiveFax — generated wire type (schema.json $defs schema 'ReceiveFax'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ReceiveFax { public java.util.Map receive_fax; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ReceiveFaxConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/ReceiveFaxConfig.java index 697bf83e..1b078f9e 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ReceiveFaxConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ReceiveFaxConfig.java @@ -9,8 +9,8 @@ /** * ReceiveFaxConfig — generated wire type (flattened SWMLMethod verb 'receive_fax' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ReceiveFaxConfig { public String status_url; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/RecordCall.java b/src/main/java/com/signalwire/sdk/swml/generated/RecordCall.java index 5018b5dc..2560e0e2 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/RecordCall.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/RecordCall.java @@ -9,8 +9,8 @@ /** * RecordCall — generated wire type (schema.json $defs schema 'RecordCall'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RecordCall { public java.util.Map record_call; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/RecordCallConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/RecordCallConfig.java index ee81155a..2f12bf51 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/RecordCallConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/RecordCallConfig.java @@ -9,8 +9,8 @@ /** * RecordCallConfig — generated wire type (flattened SWMLMethod verb 'record_call' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RecordCallConfig { public String control_id; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/RecordConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/RecordConfig.java index 9de816e2..1b055078 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/RecordConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/RecordConfig.java @@ -9,8 +9,8 @@ /** * RecordConfig — generated wire type (flattened SWMLMethod verb 'record' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RecordConfig { public java.util.Map stereo; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Record_.java b/src/main/java/com/signalwire/sdk/swml/generated/Record_.java index e4bffd9a..eb220119 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Record_.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Record_.java @@ -9,8 +9,8 @@ /** * Record_ — generated wire type (schema.json $defs schema 'Record'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Record_ { /** wire key: record */ diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Request.java b/src/main/java/com/signalwire/sdk/swml/generated/Request.java index 3d9cd39c..fc28faf5 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Request.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Request.java @@ -9,8 +9,8 @@ /** * Request — generated wire type (schema.json $defs schema 'Request'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Request { public java.util.Map request; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/RequestConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/RequestConfig.java index 310c548b..1574b5a4 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/RequestConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/RequestConfig.java @@ -9,8 +9,8 @@ /** * RequestConfig — generated wire type (flattened SWMLMethod verb 'request' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RequestConfig { public String url; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Return.java b/src/main/java/com/signalwire/sdk/swml/generated/Return.java index 3d66d09f..766f10a1 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Return.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Return.java @@ -9,8 +9,8 @@ /** * Return — generated wire type (schema.json $defs schema 'Return'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Return { /** wire key: return */ diff --git a/src/main/java/com/signalwire/sdk/swml/generated/RingbackConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/RingbackConfig.java index f39ced6c..c4109972 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/RingbackConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/RingbackConfig.java @@ -9,8 +9,8 @@ /** * RingbackConfig — generated wire type (schema.json $defs schema 'RingbackConfig'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class RingbackConfig { public String url; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SIPRefer.java b/src/main/java/com/signalwire/sdk/swml/generated/SIPRefer.java index 51468775..7f999b63 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SIPRefer.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SIPRefer.java @@ -9,8 +9,8 @@ /** * SIPRefer — generated wire type (schema.json $defs schema 'SIPRefer'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SIPRefer { public java.util.Map sip_refer; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SMSWithBody.java b/src/main/java/com/signalwire/sdk/swml/generated/SMSWithBody.java index 6e0dccf0..804bb1a6 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SMSWithBody.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SMSWithBody.java @@ -9,8 +9,8 @@ /** * SMSWithBody — generated wire type (schema.json $defs schema 'SMSWithBody'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SMSWithBody { public String to_number; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SMSWithMedia.java b/src/main/java/com/signalwire/sdk/swml/generated/SMSWithMedia.java index 7976bc8a..14140682 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SMSWithMedia.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SMSWithMedia.java @@ -9,8 +9,8 @@ /** * SMSWithMedia — generated wire type (schema.json $defs schema 'SMSWithMedia'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SMSWithMedia { public String to_number; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SWAIG.java b/src/main/java/com/signalwire/sdk/swml/generated/SWAIG.java index c7db6c7b..01073883 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SWAIG.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SWAIG.java @@ -9,8 +9,8 @@ /** * SWAIG — generated wire type (schema.json $defs schema 'SWAIG'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWAIG { public java.util.Map defaults; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SWAIGDefaults.java b/src/main/java/com/signalwire/sdk/swml/generated/SWAIGDefaults.java index 9354fa59..ee17ca91 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SWAIGDefaults.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SWAIGDefaults.java @@ -9,8 +9,8 @@ /** * SWAIGDefaults — generated wire type (schema.json $defs schema 'SWAIGDefaults'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWAIGDefaults { public String web_hook_url; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SWAIGIncludes.java b/src/main/java/com/signalwire/sdk/swml/generated/SWAIGIncludes.java index 018a85e6..ac275104 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SWAIGIncludes.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SWAIGIncludes.java @@ -9,8 +9,8 @@ /** * SWAIGIncludes — generated wire type (schema.json $defs schema 'SWAIGIncludes'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWAIGIncludes { public java.util.List functions; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SWAIGInternalFiller.java b/src/main/java/com/signalwire/sdk/swml/generated/SWAIGInternalFiller.java index f61cb91a..b5df4f97 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SWAIGInternalFiller.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SWAIGInternalFiller.java @@ -9,8 +9,8 @@ /** * SWAIGInternalFiller — generated wire type (schema.json $defs schema 'SWAIGInternalFiller'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWAIGInternalFiller { public java.util.Map hangup; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SWMLAction.java b/src/main/java/com/signalwire/sdk/swml/generated/SWMLAction.java index 705e8eaf..5679932e 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SWMLAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SWMLAction.java @@ -9,8 +9,8 @@ /** * SWMLAction — generated wire type (schema.json $defs schema 'SWMLAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SWMLAction { public java.util.Map SWML; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SayAction.java b/src/main/java/com/signalwire/sdk/swml/generated/SayAction.java index 96b8b6f2..c97bb8ad 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SayAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SayAction.java @@ -9,8 +9,8 @@ /** * SayAction — generated wire type (schema.json $defs schema 'SayAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SayAction { public String say; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Section.java b/src/main/java/com/signalwire/sdk/swml/generated/Section.java index 988245e2..91c6a426 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Section.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Section.java @@ -9,8 +9,8 @@ /** * Section — generated wire type (schema.json $defs schema 'Section'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Section { public java.util.List main; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SendDigits.java b/src/main/java/com/signalwire/sdk/swml/generated/SendDigits.java index eb5e41f7..3c7d4543 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SendDigits.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SendDigits.java @@ -9,8 +9,8 @@ /** * SendDigits — generated wire type (schema.json $defs schema 'SendDigits'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SendDigits { public java.util.Map send_digits; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SendDigitsConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/SendDigitsConfig.java index 8b01d860..7e2d3df0 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SendDigitsConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SendDigitsConfig.java @@ -9,8 +9,8 @@ /** * SendDigitsConfig — generated wire type (flattened SWMLMethod verb 'send_digits' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SendDigitsConfig { public String digits; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SendFax.java b/src/main/java/com/signalwire/sdk/swml/generated/SendFax.java index 8e5a24a6..302c3baf 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SendFax.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SendFax.java @@ -9,8 +9,8 @@ /** * SendFax — generated wire type (schema.json $defs schema 'SendFax'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SendFax { public java.util.Map send_fax; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SendFaxConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/SendFaxConfig.java index 7519e6ef..fff5ec08 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SendFaxConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SendFaxConfig.java @@ -9,8 +9,8 @@ /** * SendFaxConfig — generated wire type (flattened SWMLMethod verb 'send_fax' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SendFaxConfig { public String document; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SendSMS.java b/src/main/java/com/signalwire/sdk/swml/generated/SendSMS.java index bafb58ca..7581a107 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SendSMS.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SendSMS.java @@ -9,8 +9,8 @@ /** * SendSMS — generated wire type (schema.json $defs schema 'SendSMS'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SendSMS { public java.util.Map send_sms; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Set.java b/src/main/java/com/signalwire/sdk/swml/generated/Set.java index 609e319a..4f83f47d 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Set.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Set.java @@ -9,8 +9,8 @@ /** * Set — generated wire type (schema.json $defs schema 'Set'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Set { public java.util.Map set; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SetGlobalDataAction.java b/src/main/java/com/signalwire/sdk/swml/generated/SetGlobalDataAction.java index 34edcf77..4027c159 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SetGlobalDataAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SetGlobalDataAction.java @@ -9,8 +9,8 @@ /** * SetGlobalDataAction — generated wire type (schema.json $defs schema 'SetGlobalDataAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SetGlobalDataAction { public java.util.Map set_global_data; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SetMetaDataAction.java b/src/main/java/com/signalwire/sdk/swml/generated/SetMetaDataAction.java index c1fa2348..d225045b 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SetMetaDataAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SetMetaDataAction.java @@ -9,8 +9,8 @@ /** * SetMetaDataAction — generated wire type (schema.json $defs schema 'SetMetaDataAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SetMetaDataAction { public java.util.Map set_meta_data; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SipReferConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/SipReferConfig.java index ba1d4dd3..3b2b8d76 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SipReferConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SipReferConfig.java @@ -9,8 +9,8 @@ /** * SipReferConfig — generated wire type (flattened SWMLMethod verb 'sip_refer' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SipReferConfig { public String to_uri; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Sleep.java b/src/main/java/com/signalwire/sdk/swml/generated/Sleep.java index 7774525e..d8dcfc99 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Sleep.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Sleep.java @@ -9,8 +9,8 @@ /** * Sleep — generated wire type (schema.json $defs schema 'Sleep'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Sleep { public java.util.Map sleep; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/StartAction.java b/src/main/java/com/signalwire/sdk/swml/generated/StartAction.java index cfefb620..fee4ddc8 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/StartAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/StartAction.java @@ -9,8 +9,8 @@ /** * StartAction — generated wire type (schema.json $defs schema 'StartAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StartAction { public java.util.Map start; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/StartUpHookSWAIGFunction.java b/src/main/java/com/signalwire/sdk/swml/generated/StartUpHookSWAIGFunction.java index bfd8a52a..9be3bc5a 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/StartUpHookSWAIGFunction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/StartUpHookSWAIGFunction.java @@ -10,8 +10,8 @@ * StartUpHookSWAIGFunction — generated wire type (schema.json $defs schema * 'StartUpHookSWAIGFunction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StartUpHookSWAIGFunction { public String description; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/StopAction.java b/src/main/java/com/signalwire/sdk/swml/generated/StopAction.java index 9d191013..836a166e 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/StopAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/StopAction.java @@ -9,8 +9,8 @@ /** * StopAction — generated wire type (schema.json $defs schema 'StopAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopAction { public java.util.Map stop; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/StopDenoise.java b/src/main/java/com/signalwire/sdk/swml/generated/StopDenoise.java index b9b63ff4..19827a8a 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/StopDenoise.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/StopDenoise.java @@ -9,8 +9,8 @@ /** * StopDenoise — generated wire type (schema.json $defs schema 'StopDenoise'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopDenoise { public java.util.Map stop_denoise; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/StopPlaybackBGAction.java b/src/main/java/com/signalwire/sdk/swml/generated/StopPlaybackBGAction.java index 689ab349..b57a52bb 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/StopPlaybackBGAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/StopPlaybackBGAction.java @@ -9,8 +9,8 @@ /** * StopPlaybackBGAction — generated wire type (schema.json $defs schema 'StopPlaybackBGAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopPlaybackBGAction { public java.util.Map stop_playback_bg; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/StopRecordCall.java b/src/main/java/com/signalwire/sdk/swml/generated/StopRecordCall.java index e50923de..425171c7 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/StopRecordCall.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/StopRecordCall.java @@ -9,8 +9,8 @@ /** * StopRecordCall — generated wire type (schema.json $defs schema 'StopRecordCall'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopRecordCall { public java.util.Map stop_record_call; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/StopRecordCallConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/StopRecordCallConfig.java index 6b5456ec..11e6df88 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/StopRecordCallConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/StopRecordCallConfig.java @@ -9,8 +9,8 @@ /** * StopRecordCallConfig — generated wire type (flattened SWMLMethod verb 'stop_record_call' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopRecordCallConfig { public String control_id; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/StopTap.java b/src/main/java/com/signalwire/sdk/swml/generated/StopTap.java index a25a752f..20c5efba 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/StopTap.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/StopTap.java @@ -9,8 +9,8 @@ /** * StopTap — generated wire type (schema.json $defs schema 'StopTap'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopTap { public java.util.Map stop_tap; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/StopTapConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/StopTapConfig.java index 9b0cee29..0ab29eb5 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/StopTapConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/StopTapConfig.java @@ -9,8 +9,8 @@ /** * StopTapConfig — generated wire type (flattened SWMLMethod verb 'stop_tap' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StopTapConfig { public String control_id; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/StringProperty.java b/src/main/java/com/signalwire/sdk/swml/generated/StringProperty.java index f5444ee7..848fdc5c 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/StringProperty.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/StringProperty.java @@ -9,8 +9,8 @@ /** * StringProperty — generated wire type (schema.json $defs schema 'StringProperty'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class StringProperty { public String description; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SummarizeAction.java b/src/main/java/com/signalwire/sdk/swml/generated/SummarizeAction.java index f9c1fa6a..9489cda3 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SummarizeAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SummarizeAction.java @@ -9,8 +9,8 @@ /** * SummarizeAction — generated wire type (schema.json $defs schema 'SummarizeAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SummarizeAction { public java.util.Map summarize; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SummarizeConversationSWAIGFunction.java b/src/main/java/com/signalwire/sdk/swml/generated/SummarizeConversationSWAIGFunction.java index 4704bc0d..21be3e3d 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SummarizeConversationSWAIGFunction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SummarizeConversationSWAIGFunction.java @@ -10,8 +10,8 @@ * SummarizeConversationSWAIGFunction — generated wire type (schema.json $defs schema * 'SummarizeConversationSWAIGFunction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SummarizeConversationSWAIGFunction { public String description; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Switch.java b/src/main/java/com/signalwire/sdk/swml/generated/Switch.java index fa991cf7..aed8cdc1 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Switch.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Switch.java @@ -9,8 +9,8 @@ /** * Switch — generated wire type (schema.json $defs schema 'Switch'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Switch { /** wire key: switch */ diff --git a/src/main/java/com/signalwire/sdk/swml/generated/SwitchConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/SwitchConfig.java index 362333c8..a6e9bb4e 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/SwitchConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/SwitchConfig.java @@ -9,8 +9,8 @@ /** * SwitchConfig — generated wire type (flattened SWMLMethod verb 'switch' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class SwitchConfig { public String variable; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Tap.java b/src/main/java/com/signalwire/sdk/swml/generated/Tap.java index 1010fbec..71102afd 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Tap.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Tap.java @@ -9,8 +9,8 @@ /** * Tap — generated wire type (schema.json $defs schema 'Tap'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Tap { public java.util.Map tap; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/TapConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/TapConfig.java index 5719ae65..761f7a5e 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/TapConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/TapConfig.java @@ -9,8 +9,8 @@ /** * TapConfig — generated wire type (flattened SWMLMethod verb 'tap' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class TapConfig { public String uri; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/ToggleFunctionsAction.java b/src/main/java/com/signalwire/sdk/swml/generated/ToggleFunctionsAction.java index c7c05054..76e8940f 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/ToggleFunctionsAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/ToggleFunctionsAction.java @@ -9,8 +9,8 @@ /** * ToggleFunctionsAction — generated wire type (schema.json $defs schema 'ToggleFunctionsAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class ToggleFunctionsAction { public java.util.List toggle_functions; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/TranscribeStartAction.java b/src/main/java/com/signalwire/sdk/swml/generated/TranscribeStartAction.java index 7e44e3c2..64cf5859 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/TranscribeStartAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/TranscribeStartAction.java @@ -9,8 +9,8 @@ /** * TranscribeStartAction — generated wire type (schema.json $defs schema 'TranscribeStartAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class TranscribeStartAction { public java.util.Map start; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/TranscribeSummarizeAction.java b/src/main/java/com/signalwire/sdk/swml/generated/TranscribeSummarizeAction.java index a7d8bff4..dcfb79c3 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/TranscribeSummarizeAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/TranscribeSummarizeAction.java @@ -10,8 +10,8 @@ * TranscribeSummarizeAction — generated wire type (schema.json $defs schema * 'TranscribeSummarizeAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class TranscribeSummarizeAction { public java.util.Map summarize; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Transfer.java b/src/main/java/com/signalwire/sdk/swml/generated/Transfer.java index 8de0f2a2..cb197c26 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Transfer.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Transfer.java @@ -9,8 +9,8 @@ /** * Transfer — generated wire type (schema.json $defs schema 'Transfer'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Transfer { public java.util.Map transfer; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/TransferConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/TransferConfig.java index c0c159bd..67f5ee37 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/TransferConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/TransferConfig.java @@ -9,8 +9,8 @@ /** * TransferConfig — generated wire type (flattened SWMLMethod verb 'transfer' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class TransferConfig { public String dest; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Unset.java b/src/main/java/com/signalwire/sdk/swml/generated/Unset.java index 398b50b3..ae9059f5 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Unset.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Unset.java @@ -9,8 +9,8 @@ /** * Unset — generated wire type (schema.json $defs schema 'Unset'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Unset { public java.util.Map unset; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/UnsetGlobalDataAction.java b/src/main/java/com/signalwire/sdk/swml/generated/UnsetGlobalDataAction.java index 8c5590f4..11c97e73 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/UnsetGlobalDataAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/UnsetGlobalDataAction.java @@ -9,8 +9,8 @@ /** * UnsetGlobalDataAction — generated wire type (schema.json $defs schema 'UnsetGlobalDataAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UnsetGlobalDataAction { public java.util.Map unset_global_data; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/UnsetMetaDataAction.java b/src/main/java/com/signalwire/sdk/swml/generated/UnsetMetaDataAction.java index bf8ac8d1..29e2e985 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/UnsetMetaDataAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/UnsetMetaDataAction.java @@ -9,8 +9,8 @@ /** * UnsetMetaDataAction — generated wire type (schema.json $defs schema 'UnsetMetaDataAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UnsetMetaDataAction { public java.util.Map unset_meta_data; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/UserEvent.java b/src/main/java/com/signalwire/sdk/swml/generated/UserEvent.java index 9be6f3f2..00add312 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/UserEvent.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/UserEvent.java @@ -9,8 +9,8 @@ /** * UserEvent — generated wire type (schema.json $defs schema 'UserEvent'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UserEvent { public java.util.Map user_event; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/UserEventConfig.java b/src/main/java/com/signalwire/sdk/swml/generated/UserEventConfig.java index 8e50731e..330ad280 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/UserEventConfig.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/UserEventConfig.java @@ -9,8 +9,8 @@ /** * UserEventConfig — generated wire type (flattened SWMLMethod verb 'user_event' config). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UserEventConfig { public java.util.Map event; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/UserInputAction.java b/src/main/java/com/signalwire/sdk/swml/generated/UserInputAction.java index aeb97bf9..0ff8443b 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/UserInputAction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/UserInputAction.java @@ -9,8 +9,8 @@ /** * UserInputAction — generated wire type (schema.json $defs schema 'UserInputAction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UserInputAction { public String user_input; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/UserSWAIGFunction.java b/src/main/java/com/signalwire/sdk/swml/generated/UserSWAIGFunction.java index 8bd66a9d..eb04a552 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/UserSWAIGFunction.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/UserSWAIGFunction.java @@ -9,8 +9,8 @@ /** * UserSWAIGFunction — generated wire type (schema.json $defs schema 'UserSWAIGFunction'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class UserSWAIGFunction { public String description; diff --git a/src/main/java/com/signalwire/sdk/swml/generated/Webhook.java b/src/main/java/com/signalwire/sdk/swml/generated/Webhook.java index 7bcf3e52..07816f80 100644 --- a/src/main/java/com/signalwire/sdk/swml/generated/Webhook.java +++ b/src/main/java/com/signalwire/sdk/swml/generated/Webhook.java @@ -9,8 +9,8 @@ /** * Webhook — generated wire type (schema.json $defs schema 'Webhook'). * - *

      Pure data DTO: public fields carrying the snake wire key; no methods (the reference records - * this as a method-less type definition). + *

      Pure data DTO: public fields carrying the snake wire key, and no methods — read and write the + * fields directly. */ public final class Webhook { public java.util.List expressions; diff --git a/src/main/java/com/signalwire/sdk/tools/AIChatDump.java b/src/main/java/com/signalwire/sdk/tools/AIChatDump.java index 84a03d23..4a2e61fd 100644 --- a/src/main/java/com/signalwire/sdk/tools/AIChatDump.java +++ b/src/main/java/com/signalwire/sdk/tools/AIChatDump.java @@ -21,17 +21,14 @@ import java.util.Map; /** - * AIChatDump — the Java port's AI-CHAT dump program for the cross-port wire-behavioral gate ({@code - * porting-sdk/scripts/diff_port_ai_chat.py}, on the {@code ai-chat-client} branch — a COORDINATED - * pass). + * AI-CHAT dump program for the wire-behavioral gate. * *

      The gate boots the in-process {@code mock_ai_chat} server, exports {@code MOCK_AI_CHAT_URL} + * {@code SIGNALWIRE_PROJECT_ID} / {@code SIGNALWIRE_API_TOKEN} into this program's env, runs it, * and asserts the JSON it prints (plus the wire requests the mock recorded) speak the AI Chat * protocol per the vendored spec ({@code ai-chat-specs/ai-chat.yaml}). * - *

      This mirrors {@code porting-sdk/scripts/ai_chat_dump_reference.py} EXACTLY: it drives the Java - * {@link AIChatClient} through the shared {@code ai_chat_corpus} and emits ONE JSON object to + *

      It drives {@link AIChatClient} through the shared AI-Chat corpus and emits ONE JSON object to * stdout (nothing else), keyed by corpus step: * *

        @@ -42,8 +39,8 @@ * {raised:true, error_code, error_type}} *
      * - *

      The corpus (steps + SUMMARIZE_ERROR_ID + ERROR_STEPS + force_error_id) is data, identical for - * every language; it is mirrored inline here from {@code ai_chat_corpus.py}. + *

      The corpus (steps + SUMMARIZE_ERROR_ID + ERROR_STEPS + force_error_id) is data, held inline + * here. * *

      Run via the {@code aiChatDump} Gradle task against a running mock: * @@ -62,9 +59,7 @@ private AIChatDump() {} /** The sentinel conversation id that makes summarize return its {@code {error}} branch. */ private static final String SUMMARIZE_ERROR_ID = "__summarize_error"; - /** - * error-step id → the JSON-RPC code the port's raised error MUST carry (call order preserved). - */ + /** error-step id → the JSON-RPC code the raised error MUST carry (call order preserved). */ private static final Map ERROR_STEPS = new LinkedHashMap<>(); static { diff --git a/src/main/java/com/signalwire/sdk/tools/DocWireRunner.java b/src/main/java/com/signalwire/sdk/tools/DocWireRunner.java index 0cfc98a2..7ef56821 100644 --- a/src/main/java/com/signalwire/sdk/tools/DocWireRunner.java +++ b/src/main/java/com/signalwire/sdk/tools/DocWireRunner.java @@ -15,12 +15,12 @@ /** * DocWireRunner — the DOC-WIRE fixture runner for signalwire-java. * - *

      The DOC-WIRE gate (porting-sdk {@code scripts/doc_wire.py}) spawns {@code mock_signalwire} in - * flag mode, exports {@code MOCK_SIGNALWIRE_PORT}, then runs THIS program; it then reads the mock - * journal and fails on any {@code wire_violations}. This program's only job is to DRIVE the - * documented REST calls against the mock so the mock journals what the documented fixtures actually - * put on the wire — a doc lie like {@code area_code=} (spec {@code areacode}) shows up as a - * journaled violation and fails the gate. + *

      The DOC-WIRE gate spawns {@code mock_signalwire} in flag mode, exports {@code + * MOCK_SIGNALWIRE_PORT}, then runs THIS program; it then reads the mock journal and fails on any + * {@code wire_violations}. This program's only job is to DRIVE the documented REST calls against + * the mock so the mock journals what the documented fixtures actually put on the wire — a doc lie + * like {@code area_code=} (spec {@code areacode}) shows up as a journaled violation and fails the + * gate. * *

      It replays the wire-bearing REST fixtures shown in {@code README.md}, {@code * examples/QuickstartRest.java}, {@code rest/docs/*}, and {@code rest/examples/*} — the exact @@ -37,6 +37,11 @@ final class DocWireRunner { private DocWireRunner() {} + /** + * Entry point: runs the DOC-WIRE fixtures this gate compares across ports. + * + * @param args the command-line arguments. + */ public static void main(String[] args) { String port = System.getenv("MOCK_SIGNALWIRE_PORT"); if (port == null || port.isEmpty()) { diff --git a/src/main/java/com/signalwire/sdk/tools/EmitCorpus.java b/src/main/java/com/signalwire/sdk/tools/EmitCorpus.java index 96f9b105..7b8d04e7 100644 --- a/src/main/java/com/signalwire/sdk/tools/EmitCorpus.java +++ b/src/main/java/com/signalwire/sdk/tools/EmitCorpus.java @@ -17,28 +17,25 @@ import java.util.function.Supplier; /** - * EmitCorpus — the Java port's EMISSION-DUMP program for the cross-port emission differ - * (porting-sdk/scripts/diff_port_emission.py). + * EmitCorpus — the EMISSION-DUMP program consumed by the SDK's emission-conformance differ. * - *

      It builds the shared {@code FunctionResult} corpus (porting-sdk/scripts/emission_corpus.py — - * the single source of truth) using the Java SDK's native {@link FunctionResult} API, serialises - * each entry the same way the SDK serialises on the wire ({@link FunctionResult#toMap()}), and - * prints ONE JSON object mapping + *

      It builds the shared {@code FunctionResult} corpus using this SDK's native {@link + * FunctionResult} API, serialises each entry the same way the SDK serialises on the wire ({@link + * FunctionResult#toMap()}), and prints ONE JSON object mapping * *

        *   corpus-id -> emission
        * 
      * * to stdout. The differ runs this program, parses that object, and byte-compares each entry against - * Python's {@code to_dict()}. See the "per-port dump contract" in the differ's {@code --help} and - * porting-sdk/IDIOM_PASS_JOURNAL.md §4 Tier-0. This mirrors Go's {@code cmd/emit-corpus/main.go}. + * the expected emission. See the "dump contract" in the differ's {@code --help}. * *

      CONTRACT (why this file looks the way it does): * *

        - *
      • Every corpus id in {@code emission_corpus.corpus_ids()} MUST appear here exactly once (the - * differ rejects an id-set mismatch as a setup error — a skewed set would mask real diffs). - * When the shared corpus grows, add the new id here. + *
      • Every id in the shared corpus MUST appear here exactly once (the differ rejects an id-set + * mismatch as a setup error — a skewed set would mask real diffs). When the shared corpus + * grows, add the new id here. *
      • The argument VALUES are the WIRE values (plain strings/numbers/bools/maps). Where the Java * API types a closed set ({@code RecordFormat}, {@code RecordDirection}, {@code * TapDirection}, {@code Codec}) the bare-string overload is exercised so the emitted SWML is @@ -63,8 +60,8 @@ final class EmitCorpus { private EmitCorpus() {} /** - * The Python default {@code ai_response} for {@code pay()} — pinned so the full-arity pay - * emission is deterministic (mirrors the corpus). + * The default {@code ai_response} for {@code pay()} — pinned so the full-arity pay emission is + * deterministic. */ private static final String PAY_AI_RESPONSE = "The payment status is ${pay_result}, do not mention anything else about " @@ -84,7 +81,7 @@ private static List list(T... items) { return new ArrayList<>(Arrays.asList(items)); } - /** Ordered map helper that preserves insertion order (Python dict order). */ + /** Ordered map helper that preserves insertion order (the wire's key order). */ private static Map map(Object... kv) { Map m = new LinkedHashMap<>(); for (int i = 0; i < kv.length; i += 2) { @@ -94,9 +91,9 @@ private static Map map(Object... kv) { } /** - * The Java-native mirror of porting-sdk/scripts/emission_corpus.py. The ids and the resulting - * emission must match the Python oracle exactly (modulo the whole-float artifact the differ - * normalises: Python {@code 44.0} == Java {@code 44.0} both fold to {@code 44}). + * The Java-native build of the shared emission corpus. The ids and the resulting emission must + * match the expected emission exactly, modulo the whole-float artifact the differ normalises + * ({@code 44.0} and {@code 44} both fold to {@code 44}). */ private static List corpus() { List c = new ArrayList<>(); @@ -496,6 +493,11 @@ private static Map map2(String... kv) { return m; } + /** + * Entry point: emits the EMISSION-DUMP corpus this gate compares across ports. + * + * @param args the command-line arguments. + */ public static void main(String[] args) { // disableHtmlEscaping mirrors Go's enc.SetEscapeHTML(false): keep '+'/'&'/ // '<' etc. literal so the JSON matches Python's json.dumps output. diff --git a/src/main/java/com/signalwire/sdk/tools/EmitSkills.java b/src/main/java/com/signalwire/sdk/tools/EmitSkills.java index f9ea3216..d1accdfd 100644 --- a/src/main/java/com/signalwire/sdk/tools/EmitSkills.java +++ b/src/main/java/com/signalwire/sdk/tools/EmitSkills.java @@ -21,24 +21,22 @@ import java.util.Map; /** - * EmitSkills — the Java port's SKILL-DUMP program for the cross-port SKILL-CONTRACT differ - * (porting-sdk/scripts/diff_skill_contracts.py). + * EmitSkills — this SDK's dump program for the SKILL-CONTRACT gate's differ. * *

        The sibling of {@link EmitCorpus}, for built-in SKILLS rather than {@code FunctionResult}. For * each covered skill it looks up the skill's factory in the {@link SkillRegistry}, instantiates it, - * runs {@code setup(config)} with the canonical config from the shared corpus - * (porting-sdk/scripts/skill_contract_corpus.py — the single source of truth), collects the tool - * contracts the skill registers, and prints ONE JSON object mapping + * runs {@code setup(config)} with the canonical config from the shared skill-contract corpus (the + * single source of truth for both the config and the covered id set), collects the tool contracts + * the skill registers, and prints ONE JSON object mapping * *

          *   skill-id -> [ { "name": ..., "parameters": {...}, "required"?: [...] }, ... ]
          * 
        * * to stdout. The differ runs this program, parses that object, and structurally compares each - * skill's tool contract against the Python reference (which registers the same tools). The differ - * normalises both sides (flat vs wrapped params, required list, enum order); this program emits - * each tool's name + parameters verbatim. DESCRIPTIONS are not part of the compared contract. - * Mirrors Go's {@code cmd/emit-skills/main.go} and Ruby's {@code bin/emit-skills}. + * skill's tool contract against the shared golden. The differ normalises both sides (flat vs + * wrapped params, required list, enum order); this program emits each tool's name + parameters + * verbatim. DESCRIPTIONS are not part of the compared contract. * *

        A skill registers tools in one of two shapes, and a skill may use either or both: * @@ -52,7 +50,7 @@ * datasphere_serverless, swml_transfer, joke, api_ninjas_trivia, play_background_file). *

      * - *

      CONTRACT (mirrors the per-port dump contract in the differ's {@code --help}): + *

      CONTRACT (the differ's {@code --help} states the same requirements): * *

        *
      • The id set MUST equal {@code corpus_ids()} (the differ rejects a mismatch). @@ -73,12 +71,14 @@ final class EmitSkills { private EmitSkills() {} - /** One entry of skill_contract_corpus.py's CORPUS: {id, skill, config}. */ + /** One entry of the shared skill-contract CORPUS: {id, skill, config}. */ private record CorpusEntry(String id, String skill, Map config) {} /** - * Locate porting-sdk/scripts/skill_contract_corpus.py via $PORTING_SDK / $PORTING_SDK_PATH or the - * sibling ../porting-sdk (the adjacency convention), run it, and return its CORPUS entries. + * Locate the shared skill-contract corpus script under {@code $PORTING_SDK} / {@code + * $PORTING_SDK_PATH}, else the sibling {@code ../porting-sdk} checkout (the adjacency + * convention), run it, and return its CORPUS entries. Fails loudly if no candidate base contains + * the script. */ private static List loadCorpus() throws Exception { List bases = new ArrayList<>(); @@ -176,6 +176,11 @@ private static List> contractsFor(CorpusEntry entry) { return contracts; } + /** + * Entry point: emits the SKILL-DUMP contract corpus this gate compares across ports. + * + * @param args the command-line arguments. + */ public static void main(String[] args) { try { List corpus = loadCorpus(); diff --git a/src/main/java/com/signalwire/sdk/tools/HttpDump.java b/src/main/java/com/signalwire/sdk/tools/HttpDump.java index 5245de99..7cf1e675 100644 --- a/src/main/java/com/signalwire/sdk/tools/HttpDump.java +++ b/src/main/java/com/signalwire/sdk/tools/HttpDump.java @@ -27,20 +27,18 @@ import javax.crypto.spec.SecretKeySpec; /** - * HttpDump — the Java port's HTTP dump program for the cross-port HTTP differ - * (porting-sdk/scripts/diff_port_http.py). + * HttpDump — the HTTP dump program consumed by the SDK's HTTP-conformance differ. * - *

        For each {@code http_corpus} case it feeds a synthetic request into the Java SDK's - * framework-free dispatch core ({@link Service#handleRequest}, {@link Service#extractSipUsername}, - * the webhook {@link WebhookValidator}, and the {@link LambdaAgentHandler} serverless adapter) and - * prints ONE JSON object mapping + *

        For each {@code http_corpus} case it feeds a synthetic request into this SDK's framework-free + * dispatch core ({@link Service#handleRequest}, {@link Service#extractSipUsername}, the webhook + * {@link WebhookValidator}, and the {@link LambdaAgentHandler} serverless adapter) and prints ONE + * JSON object mapping * *

          *   case-id -> reduced-artifact
          * 
        * - * to stdout, reduced to the same shape the Python oracle emits. Only stdout carries JSON. Mirrors - * Go's {@code cmd/http-dump/main.go}. + * to stdout, reduced to the canonical artifact shape the differ compares. Only stdout carries JSON. * *

        Run via the {@code httpDump} Gradle task: * @@ -153,6 +151,11 @@ private static Map webhookDecision( return map("decision", "reject", "status", rej.status()); } + /** + * Entry point: emits the HTTP dump this gate compares across ports. + * + * @param args the command-line arguments. + */ public static void main(String[] args) { Logger.setGlobalLevel(Logger.Level.OFF); Map out = new LinkedHashMap<>(); @@ -250,6 +253,7 @@ public static void main(String[] args) { // ---- serverless (lambda) ---- out.put("http_serverless_lambda_swaig", serverlessSwaig()); + out.put("http_serverless_lambda_swaig_valid_token", serverlessSwaigValidToken()); out.put("http_serverless_lambda_noauth_401", serverlessNoAuth()); System.out.println(GSON.toJson(out)); @@ -303,6 +307,40 @@ private static Map serverlessSwaig() { return reduceLambda(h.handle(event)); } + /** + * The POSITIVE half of the serverless token contract: identical to {@link #serverlessSwaig()} in + * every respect EXCEPT that it carries a genuinely minted {@code __token} in the lambda query + * string, so it pins that a valid credential is ACCEPTED and the secure tool RUNS. + * + *

        The token cannot be a literal: it is an HMAC keyed by the agent's per-process random + * SessionManager secret and it expires, so it is minted from the SAME agent instance this fixture + * drives. The token rides the query string and the {@code call_id} rides the POST body — the same + * split the in-process HTTP path uses. + */ + private static Map serverlessSwaigValidToken() { + AgentBase a = + AgentBase.builder().name("demo").route("/").authUser(USER).authPassword(PASSWORD).build(); + a.defineTool( + "say_hello", + "greet", + new LinkedHashMap<>(), + (argsMap, raw) -> new FunctionResult("hello there")); + LambdaAgentHandler h = new LambdaAgentHandler(a); + Map event = + map( + "rawPath", + "/swaig", + "requestContext", + map("http", map("method", "POST")), + "headers", + map("authorization", basicAuth(USER, PASSWORD), "content-type", "application/json"), + "queryStringParameters", + map("__token", a.createToolToken("say_hello", "c1")), + "body", + "{\"function\":\"say_hello\",\"argument\":{\"parsed\":[{}]},\"call_id\":\"c1\"}"); + return reduceLambda(h.handle(event)); + } + private static Map serverlessNoAuth() { AgentBase a = AgentBase.builder().name("demo").route("/").authUser(USER).authPassword(PASSWORD).build(); diff --git a/src/main/java/com/signalwire/sdk/tools/SecretScrubDump.java b/src/main/java/com/signalwire/sdk/tools/SecretScrubDump.java index ba1ed8e6..368e1076 100644 --- a/src/main/java/com/signalwire/sdk/tools/SecretScrubDump.java +++ b/src/main/java/com/signalwire/sdk/tools/SecretScrubDump.java @@ -14,6 +14,7 @@ import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.lang.reflect.Type; +import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.nio.charset.StandardCharsets; @@ -24,16 +25,15 @@ import org.java_websocket.server.WebSocketServer; /** - * SecretScrubDump — the Java port's SECRET-SCRUB-LIVE dump program for the cross-port secret-scrub - * differ (porting-sdk/scripts/diff_port_secret_scrub.py, PSDK-5). + * SecretScrubDump — the SECRET-SCRUB-LIVE dump program. * *

        Drives the RelayClient through a real connect + an inbound {@code * signalwire.authorization.state} event at {@code SIGNALWIRE_LOG_LEVEL=debug} with the fixture * sentinel credentials (project= {@code PJ-TESTLEAK}, token={@code PT-TESTLEAK}, * authorization_state={@code AENC-TESTLEAK}), captures its OWN stdout+stderr, and reports * per-sentinel {@code {leaked: bool}} — True iff the sentinel string appears verbatim in the - * captured output. All must be False: a port that logs the raw connect frame ({@code >>}) or the - * raw inbound frame ({@code <<}) at debug leaks the sentinel and reds. + * captured output. All must be False: logging the raw connect frame ({@code >>}) or the raw inbound + * frame ({@code <<}) at debug leaks the sentinel and fails the check. * *

        Prints ONE JSON object mapping sentinel-id -> classification to stdout (on the RESTORED * stdout, after capture ends). @@ -50,6 +50,12 @@ private SecretScrubDump() {} private static final String TOKEN = "PT-TESTLEAK"; private static final String AUTHORIZATION_STATE = "AENC-TESTLEAK"; + /** + * Entry point: emits the SECRET-SCRUB-LIVE dump this gate compares across ports. + * + * @param args the command-line arguments. + * @throws Exception if the run fails; the gate reads the non-zero exit. + */ public static void main(String[] args) throws Exception { // Capture this process's OWN stdout+stderr while the client runs at debug. PrintStream realOut = System.out; @@ -118,24 +124,51 @@ private static final class MockRelay extends WebSocketServer { private volatile WebSocket conn; MockRelay(int port) { - super(new InetSocketAddress("127.0.0.1", port)); + super(new InetSocketAddress(InetAddress.getLoopbackAddress(), port)); setReuseAddr(true); } + /** + * A mock client connected. + * + * @param socket the connected client socket. + * @param handshake the client's handshake. + */ @Override public void onOpen(WebSocket socket, ClientHandshake handshake) { this.conn = socket; } + /** + * A mock client disconnected. + * + * @param socket the client socket. + * @param code the close code. + * @param reason the close reason. + * @param remote whether the client initiated the close. + */ @Override public void onClose(WebSocket socket, int code, String reason, boolean remote) {} + /** + * The mock server hit a transport error. + * + * @param socket the socket the error occurred on, or {@code null} for a server-level error. + * @param ex the error. + */ @Override public void onError(WebSocket socket, Exception ex) {} + /** The mock server finished binding and is accepting connections. */ @Override public void onStart() {} + /** + * A frame arrived from a mock client; drives the dump's scripted exchange. + * + * @param socket the client socket the frame arrived on. + * @param raw the raw frame text. + */ @Override public void onMessage(WebSocket socket, String raw) { Map msg; diff --git a/src/main/java/com/signalwire/sdk/tools/SecureDefaultDump.java b/src/main/java/com/signalwire/sdk/tools/SecureDefaultDump.java index 1476d3c8..1461095c 100644 --- a/src/main/java/com/signalwire/sdk/tools/SecureDefaultDump.java +++ b/src/main/java/com/signalwire/sdk/tools/SecureDefaultDump.java @@ -17,25 +17,29 @@ import java.util.Map; /** - * SecureDefaultDump — the Java port's SECURE-DEFAULT dump program for the cross-port secure-default - * differ (porting-sdk/scripts/diff_port_secure_default.py, A+ campaign A1 / PSDK-4a). + * SECURE-DEFAULT dump program for the secure-default differ. * *

        Defines a default (no explicit {@code secure=}) tool + an explicit {@code secure=false} tool, - * renders the agent's SWML with the fixed corpus {@code CALL_ID}, and for each tool emits the - * deterministic classification the differ compares against the Python golden: + * renders the agent's SWML with the fixed corpus {@code CALL_ID}, and emits per fixture the + * RENDERED WIRE PAYLOAD for the differ to classify: * *

        - *   {secure_default_true: bool, wire_reflects_secure: bool}
        + *   {"<fixture id>": {"secure_default_true": bool, "rendered": {<functions[] entry>}}}
          * 
        * *
          *
        • {@code secure_default_true} — the tool built WITHOUT an explicit {@code secure=} is secure * (the SDK-recorded flag); false by construction for the explicit-{@code secure=false} case. - *
        • {@code wire_reflects_secure} — the rendered SWML webhook reflects the tool's secure state: - * a per-tool token ({@code meta_data_token}, the java surfacing of the reference {@code - * __token}) is present IFF the tool is secure. + *
        • {@code rendered} — that tool's own {@code SWAIG.functions[]} entry, VERBATIM, with every + * token VALUE replaced by the corpus placeholder {@code } (the values are HMACs and + * vary per run; the KEY PATH is the whole contract and is preserved exactly). *
        * + *

        This program deliberately makes NO judgement about whether the render is correct. An earlier + * version emitted a self-computed {@code wire_reflects_secure} boolean, which made the gate + * vacuous: it classified on {@code meta_data_token} (the SWML metadata SCOPING key) and passed + * green while emitting a tokenless {@code web_hook_url}. The differ now sees the keys and decides. + * *

        Only stdout carries JSON; the SDK Logger is silenced. Run via the {@code secureDefaultDump} * Gradle task. */ @@ -48,62 +52,120 @@ private SecureDefaultDump() {} // Mirror secure_default_corpus.py EXACTLY. private static final String DEFAULT_TOOL = "sd_default_secure"; private static final String INSECURE_TOOL = "sd_explicit_insecure"; + private static final String TOKEN_PLACEHOLDER = ""; + /** + * Entry point: emits the SECURE-DEFAULT dump this gate compares across ports. + * + * @param args the command-line arguments. + */ @SuppressWarnings("unchecked") public static void main(String[] args) { Logger.setGlobalLevel(Logger.Level.OFF); AgentBase agent = - AgentBase.builder().name("secure-default-fixture").authUser("u").authPassword("p").build(); + AgentBase.builder() + .name("secure-default-fixture") + .route("/sd") + .authUser("u") + .authPassword("p") + .build(); agent.setPromptText("secure default fixture"); // Default tool: NO explicit secure= → must default secure=true (A1). agent.defineTool( new ToolDefinition( - DEFAULT_TOOL, "default secure tool", Map.of(), (a, r) -> new FunctionResult("ok"))); + DEFAULT_TOOL, + "secure-default fixture tool", + Map.of(), + (a, r) -> new FunctionResult("ok"))); // Explicit secure=false tool. agent.defineTool( new ToolDefinition( INSECURE_TOOL, - "explicit insecure tool", + "secure-default fixture tool", Map.of(), (a, r) -> new FunctionResult("ok")) .setSecure(false)); - // Render SWML: a secure tool's rendered SWAIG function carries a per-tool token - // (meta_data_token, - // minted in buildSwaigFunctions when the tool isSecure), an insecure one does not. The fixed - // corpus CALL_ID is referenced for parity with the oracle; java mints the token independent of - // a - // call_id (createToken(name, "")), so the single-arg render is sufficient. - Map swml = agent.renderSwml("http://mock.test"); + // Render SWML. A secure tool's rendered entry carries its own web_hook_url with a __token + // query param; an insecure one has no per-tool web_hook_url at all and falls back to + // SWAIG.defaults. The fixed corpus CALL_ID is referenced for parity with the oracle; java + // mints the token independent of a call_id (createToken(name, "")), so the single-arg render + // is sufficient. + Map swml = agent.renderSwml("http://localhost:3000"); Map functions = swaigFunctionsByName(swml); Map out = new LinkedHashMap<>(); out.put( "define_tool_default_is_secure", - classify((Map) functions.get(DEFAULT_TOOL), true)); + emit((Map) functions.get(DEFAULT_TOOL), true)); out.put( "define_tool_explicit_insecure", - classify((Map) functions.get(INSECURE_TOOL), false)); + emit((Map) functions.get(INSECURE_TOOL), false)); System.out.println(GSON.toJson(out)); } /** - * Classify one rendered function. {@code expectedSecure} is the tool's declared secure state; the - * wire "reflects" it when a per-tool token is present iff the tool is secure. + * Emit one fixture: the SDK-recorded secure flag plus the rendered entry with token values + * redacted. NO classification — the differ does that. */ - private static Map classify(Map fn, boolean expectedSecure) { - boolean tokenPresent = - fn != null - && fn.get("meta_data_token") != null - && !String.valueOf(fn.get("meta_data_token")).isEmpty(); + private static Map emit(Map fn, boolean secureDefaultTrue) { Map m = new LinkedHashMap<>(); - m.put("secure_default_true", expectedSecure); - m.put("wire_reflects_secure", tokenPresent == expectedSecure); + m.put("secure_default_true", secureDefaultTrue); + m.put("rendered", redact(fn == null ? new LinkedHashMap<>() : fn)); return m; } + /** + * Replace every nondeterministic token VALUE (an HMAC) with the corpus placeholder while + * preserving every KEY and key path exactly — both a token-suffixed field and a token-suffixed + * query parameter on a URL value, so re-applying the same redaction is a no-op. + */ + private static Map redact(Map fn) { + Map out = new LinkedHashMap<>(); + for (Map.Entry e : fn.entrySet()) { + String k = e.getKey(); + Object v = e.getValue(); + if (v instanceof String s) { + if (k.toLowerCase(java.util.Locale.ROOT).endsWith("token")) { + out.put(k, TOKEN_PLACEHOLDER); + continue; + } + if (s.contains("://") || s.startsWith("/")) { + out.put(k, redactUrlTokens(s)); + continue; + } + } + out.put(k, v); + } + return out; + } + + /** Replace the VALUE of every token-suffixed query parameter in a URL with the placeholder. */ + private static String redactUrlTokens(String url) { + int q = url.indexOf('?'); + if (q < 0) { + return url; + } + StringBuilder sb = new StringBuilder(url.substring(0, q + 1)); + String[] pairs = url.substring(q + 1).split("&", -1); + for (int i = 0; i < pairs.length; i++) { + if (i > 0) { + sb.append('&'); + } + String pair = pairs[i]; + int eq = pair.indexOf('='); + String key = eq < 0 ? pair : pair.substring(0, eq); + if (eq >= 0 && key.toLowerCase(java.util.Locale.ROOT).endsWith("token")) { + sb.append(key).append('=').append(TOKEN_PLACEHOLDER); + } else { + sb.append(pair); + } + } + return sb.toString(); + } + @SuppressWarnings("unchecked") private static Map swaigFunctionsByName(Map swml) { Map byName = new LinkedHashMap<>(); diff --git a/src/main/java/com/signalwire/sdk/tools/StateDump.java b/src/main/java/com/signalwire/sdk/tools/StateDump.java index 2e3f6187..c9261d02 100644 --- a/src/main/java/com/signalwire/sdk/tools/StateDump.java +++ b/src/main/java/com/signalwire/sdk/tools/StateDump.java @@ -27,8 +27,7 @@ import java.util.function.Supplier; /** - * StateDump — the Java port's STATE dump program for the cross-port state differ - * (porting-sdk/scripts/diff_port_state.py). + * StateDump — this SDK's dump program for the STATE gate's state differ. * *

        For each {@code state_corpus} case it builds the target object, applies the mutation chain via * the Java SDK's native API, reads the observable state through the public accessor / rendered @@ -38,8 +37,8 @@ * case-id -> observed-state * * - * to stdout. The differ canonicalizes both sides and byte-compares against the Python oracle. Only - * stdout carries JSON. Mirrors Go's {@code cmd/state-dump/main.go}. + * to stdout. The differ canonicalizes both sides and byte-compares against the shared golden. Only + * stdout carries JSON. * *

        Run via the {@code stateDump} Gradle task: * @@ -51,13 +50,24 @@ final class StateDump { private StateDump() {} - /** A minimal custom verb handler — the Java analog of the corpus's throwaway "greet" handler. */ + /** A minimal custom verb handler registering the corpus's throwaway "greet" verb. */ private static final class GreetVerbHandler extends SWMLVerbHandler { + /** + * The SWML verb this test handler registers under. + * + * @return the verb name. + */ @Override public String getVerbName() { return "greet"; } + /** + * Validate the verb's configuration. + * + * @param cfg the verb arguments. + * @return the validation result. + */ @Override public SWMLVerbHandler.ValidationResult validateConfig(Map cfg) { return new SWMLVerbHandler.ValidationResult(true, new ArrayList<>()); @@ -87,6 +97,11 @@ private static List list(T... items) { return new ArrayList<>(Arrays.asList(items)); } + /** + * Entry point: emits the STATE dump this gate compares across ports. + * + * @param args the command-line arguments. + */ public static void main(String[] args) { Logger.setGlobalLevel(Logger.Level.OFF); // serializeNulls: keep explicit null values (e.g. lookup_missing) in the @@ -252,9 +267,9 @@ private static List sorted(java.util.Collection c) { } /** - * Drive InfoGatherer.submitAnswer and reduce the result to the observable delta (mirrors - * diff_port_state._observe "submit_answer_delta"): the set_global_data action's question_index + - * answers, plus a {@code done} flag derived from the completion message. + * Drive InfoGatherer.submitAnswer and reduce the result to the observable delta the {@code + * submit_answer_delta} case compares: the set_global_data action's question_index + answers, plus + * a {@code done} flag derived from the completion message. */ @SuppressWarnings("unchecked") private static Map submitAnswerDelta( diff --git a/src/main/java/com/signalwire/sdk/tools/StrictRenderDump.java b/src/main/java/com/signalwire/sdk/tools/StrictRenderDump.java index 1ada3190..66cbf1ca 100644 --- a/src/main/java/com/signalwire/sdk/tools/StrictRenderDump.java +++ b/src/main/java/com/signalwire/sdk/tools/StrictRenderDump.java @@ -21,20 +21,20 @@ import java.util.Map; /** - * StrictRenderDump — the Java port's SWML STRICT-RENDER dump program for the cross-port - * strict-render differ (porting-sdk/scripts/diff_port_strict_render.py). + * StrictRenderDump — the SWML STRICT-RENDER dump program consumed by the SDK's strict-render + * conformance differ. * - *

        For each case in the shared {@code strict_render_corpus} it builds the target in the Java - * idiom (a {@link Service} for verb-level cases, an {@link AgentBase} + contexts builder for - * contexts-level cases), catches any build/validation exception as {@code "raised"}, and reports a - * clean build as {@code "ok"}. It emits ONE JSON object mapping + *

        For each case in the shared {@code strict_render_corpus} it builds the target (a {@link + * Service} for verb-level cases, an {@link AgentBase} + contexts builder for contexts-level cases), + * catches any build/validation exception as {@code "raised"}, and reports a clean build as {@code + * "ok"}. It emits ONE JSON object mapping * *

          *   case-id -> "raised" | "ok"
          * 
        * - * to stdout (logs to stderr). The differ compares each outcome against the Python oracle. Only - * stdout carries JSON. Mirrors Go's {@code cmd/strict-render-dump}. + * to stdout (logs to stderr). The differ compares each outcome against the expected one. Only + * stdout carries JSON. * *

        Run via the {@code strictRenderDump} Gradle task: * @@ -42,9 +42,9 @@ * ./gradlew --quiet --console=plain strictRenderDump * * - *

        The corpus itself is the source of truth (porting-sdk/scripts/strict_render_corpus.py); the - * case builders below reproduce each case's chain in Java. Because a case absent from a port's dump - * is PENDING (not a failure) the set here must stay in lockstep with that corpus. + *

        The shared corpus itself is the source of truth; the case builders below reproduce each case's + * chain in Java. Because a case absent from the dump is reported as PENDING rather than as a + * failure, the set here must stay in lockstep with that corpus. */ final class StrictRenderDump { @@ -220,6 +220,11 @@ private static List cases() { return c; } + /** + * Entry point: emits the SWML STRICT-RENDER dump this gate compares across ports. + * + * @param args the command-line arguments. + */ public static void main(String[] args) { Logger.setGlobalLevel(Logger.Level.OFF); Gson gson = new GsonBuilder().disableHtmlEscaping().create(); diff --git a/src/main/java/com/signalwire/sdk/tools/SwmlDump.java b/src/main/java/com/signalwire/sdk/tools/SwmlDump.java index b284b284..2bd68e7c 100644 --- a/src/main/java/com/signalwire/sdk/tools/SwmlDump.java +++ b/src/main/java/com/signalwire/sdk/tools/SwmlDump.java @@ -18,8 +18,7 @@ import java.util.function.Supplier; /** - * SwmlDump — the Java port's SWML dump program for the cross-port SWML differ - * (porting-sdk/scripts/diff_port_swml.py). + * SwmlDump — the SWML dump program consumed by the SDK's SWML-conformance differ. * *

        For each {@code swml_corpus} case it builds an {@link AgentBase}, applies the setter chain, * renders the SWML document, and extracts the observed dotted path (e.g. {@code "ai.prompt.pom"}) — @@ -29,8 +28,8 @@ * case-id -> extracted-fragment * * - * to stdout. The differ canonicalizes both sides and byte-compares against the Python oracle. Only - * stdout carries JSON. Mirrors Go's {@code cmd/swml-dump/main.go}. + * to stdout. The differ canonicalizes both sides and byte-compares against the expected fragment. + * Only stdout carries JSON. * *

        Run via the {@code swmlDump} Gradle task: * @@ -89,8 +88,8 @@ private static Object extract(Map doc, String path) { /** * From an {@code ai.SWAIG.functions} list, pick the function whose {@code function} equals {@code - * fnName} and return its {@code field} (mirrors the oracle's {@code swaig_fn}/{@code field} - * observe filter and Go's {@code swaigFnField}). + * fnName} and return its {@code field} — the {@code swaig_fn}/{@code field} observe filter used + * by the corpus. */ @SuppressWarnings("unchecked") private static Object swaigFnField(Object frag, String fnName, String field) { @@ -108,7 +107,7 @@ private static Object swaigFnField(Object frag, String fnName, String field) { return null; } - /** Reduce a map fragment to the listed keys (mirrors the oracle's `pick`). */ + /** Reduce a map fragment to the listed keys — the corpus's {@code pick} observe filter. */ @SuppressWarnings("unchecked") private static Object pick(Object frag, String... keys) { if (!(frag instanceof Map)) { @@ -242,6 +241,11 @@ private static List cases() { return c; } + /** + * Entry point: emits the SWML dump this gate compares across ports. + * + * @param args the command-line arguments. + */ public static void main(String[] args) { // Silence the SDK's INFO logging (which writes to stdout) so ONLY the JSON // artifact reaches stdout — the differ parses stdout as one JSON object. diff --git a/src/main/java/com/signalwire/sdk/tools/TokenInteropMint.java b/src/main/java/com/signalwire/sdk/tools/TokenInteropMint.java new file mode 100644 index 00000000..7939c554 --- /dev/null +++ b/src/main/java/com/signalwire/sdk/tools/TokenInteropMint.java @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2025 SignalWire + * + * Licensed under the MIT License. + * See LICENSE file in the project root for full license information. + */ + +package com.signalwire.sdk.tools; + +import com.signalwire.sdk.security.SessionManager; + +/** + * TokenInteropMint — the TOKEN-INTEROP mint fixture. + * + *

        The contract being proven is property 3 of the SWAIG tool-token contract: a token this SDK + * MINTS must validate under an independent decoder. The other two properties (that a token is + * minted at all; that the HMAC is keyed with the {@code secret_key} STRING's bytes) already had + * coverage — this one did not, and an implementation can satisfy both and still emit a token no + * other implementation accepts, in which case every secure tool call fails authentication in + * production. + * + *

        Protocol: read the FIXED mint inputs from the environment (the checker owns them, so this + * fixture cannot drift from the values it is verified against), construct a {@link SessionManager} + * with that secret key, mint ONE token, and print JUST the token on stdout. Anything else belongs + * on stderr. + * + *

        Run from the signalwire-java repo root: + * + *

        {@code ./gradlew --console=plain -q tokenInteropMint}
        + */ +// Package-private, like every other fixture in this package (SecureDefaultDump, WireDump, …): +// these are gradle-task entry points, not API. A `public` class here is enumerated as public +// SDK surface and fails SURFACE-FRESH/SURFACE-DIFF as a symbol the Python reference lacks. +final class TokenInteropMint { + + private TokenInteropMint() {} + + /** Read a required fixed mint input from the environment, or fail loud. */ + private static String required(String name) { + String value = System.getenv(name); + if (value == null || value.isEmpty()) { + System.err.println( + name + + " is not set — the TOKEN-INTEROP checker supplies the fixed mint inputs in the" + + " environment; run this via diff_port_token_interop.py --mint-cmd."); + System.exit(1); + } + return value; + } + + /** Mint one token with the checker's fixed inputs and print it. */ + public static void main(String[] args) { + String secretKey = required("SW_TOKEN_INTEROP_SECRET_KEY"); + String callId = required("SW_TOKEN_INTEROP_CALL_ID"); + String functionName = required("SW_TOKEN_INTEROP_FUNCTION_NAME"); + + // Default expiry — the token must carry a FUTURE expiry, which the checker verifies. The + // (int, String) constructor takes the reference's secret_key STRING, whose UTF-8 bytes key + // the HMAC (NOT 32 raw bytes decoded from it). + SessionManager manager = new SessionManager(900, secretKey); + System.out.println(manager.generateToken(functionName, callId)); + } +} diff --git a/src/main/java/com/signalwire/sdk/tools/WaitLivenessDump.java b/src/main/java/com/signalwire/sdk/tools/WaitLivenessDump.java index 999f6a8b..9ce93449 100644 --- a/src/main/java/com/signalwire/sdk/tools/WaitLivenessDump.java +++ b/src/main/java/com/signalwire/sdk/tools/WaitLivenessDump.java @@ -15,6 +15,7 @@ import com.signalwire.sdk.relay.RelayClient; import com.signalwire.sdk.relay.RelayEvent; import java.lang.reflect.Type; +import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.util.LinkedHashMap; @@ -27,13 +28,12 @@ import org.java_websocket.server.WebSocketServer; /** - * WaitLivenessDump — the Java port's WAIT-LIVENESS dump program for the cross-port liveness differ - * (porting-sdk/scripts/diff_port_wait_liveness.py). + * WaitLivenessDump — this SDK's dump program for the WAIT-LIVENESS gate's liveness differ. * *

        For each liveness case (play, record) it drives a REAL {@link Call} verb against a tiny * embedded RELAY WebSocket mock, arms the completing event to arrive {@code DELAY_MS} AFTER {@code - * waitForCompletion()} begins, measures the wall-clock instants, and derives the same deterministic - * LIVENESS CLASSIFICATION the differ compares against the Python golden: + * waitForCompletion()} begins, measures the wall-clock instants, and derives the deterministic + * LIVENESS CLASSIFICATION the differ compares against the shared golden: * *

          *   {"blocked_until_event": bool, "returned_after_event": bool,
        @@ -70,6 +70,12 @@ private WaitLivenessDump() {}
           private static final long DEADLINE_MS = 5_000;
           private static final long BLOCK_TOL_MS = 40;
         
        +  /**
        +   * Entry point: emits the WAIT-LIVENESS dump this gate compares across ports.
        +   *
        +   * @param args the command-line arguments.
        +   * @throws Exception if the run fails; the gate reads the non-zero exit.
        +   */
           public static void main(String[] args) throws Exception {
             Logger.setGlobalLevel(Logger.Level.OFF);
         
        @@ -181,30 +187,57 @@ private static final class MockRelay extends WebSocketServer {
             private volatile WebSocket conn;
         
             MockRelay(int port) {
        -      super(new InetSocketAddress("127.0.0.1", port));
        +      super(new InetSocketAddress(InetAddress.getLoopbackAddress(), port));
               setReuseAddr(true);
             }
         
        +    /**
        +     * A mock client connected.
        +     *
        +     * @param socket the connected client socket.
        +     * @param handshake the client's handshake.
        +     */
             @Override
             public void onOpen(WebSocket socket, ClientHandshake handshake) {
               this.conn = socket;
             }
         
        +    /**
        +     * A mock client disconnected.
        +     *
        +     * @param socket the client socket.
        +     * @param code the close code.
        +     * @param reason the close reason.
        +     * @param remote whether the client initiated the close.
        +     */
             @Override
             public void onClose(WebSocket socket, int code, String reason, boolean remote) {
               // no-op
             }
         
        +    /**
        +     * The mock server hit a transport error.
        +     *
        +     * @param socket the socket the error occurred on, or {@code null} for a server-level error.
        +     * @param ex the error.
        +     */
             @Override
             public void onError(WebSocket socket, Exception ex) {
               System.err.println("mock relay error: " + ex.getMessage());
             }
         
        +    /** The mock server finished binding and is accepting connections. */
             @Override
             public void onStart() {
               // no-op
             }
         
        +    /**
        +     * A frame arrived from a mock client; drives the dump's scripted exchange.
        +     *
        +     * @param socket the client socket the frame arrived on.
        +     * @param raw the raw frame text.
        +     */
             @Override
             @SuppressWarnings("unchecked")
             public void onMessage(WebSocket socket, String raw) {
        diff --git a/src/main/java/com/signalwire/sdk/tools/WireDump.java b/src/main/java/com/signalwire/sdk/tools/WireDump.java
        index 755a72f5..ae752858 100644
        --- a/src/main/java/com/signalwire/sdk/tools/WireDump.java
        +++ b/src/main/java/com/signalwire/sdk/tools/WireDump.java
        @@ -19,24 +19,22 @@
         import javax.crypto.spec.SecretKeySpec;
         
         /**
        - * WireDump — the Java port's WIRE-CRYPTO dump program for the cross-port wire differ
        - * (porting-sdk/scripts/diff_port_wire.py).
        + * WIRE-CRYPTO dump program for the wire differ.
          *
        - * 

        It runs the shared {@code wire_crypto} corpus against the Java SDK's native security package - * ({@link SessionManager} tokens, webhook-signature validation, redact/filter helpers) and prints - * ONE JSON object mapping + *

        It runs the shared {@code wire_crypto} corpus against this SDK's security package ({@link + * SessionManager} tokens, webhook-signature validation, redact/filter helpers) and prints ONE JSON + * object mapping * *

          *   case-id -> observable-artifact
          * 
        * * to stdout. The differ runs this program, canonicalizes both sides, and byte-compares each entry - * against the Python oracle. Only stdout carries JSON; nothing else is printed there. Mirrors Go's - * {@code cmd/wire-dump/main.go}. + * against the expected artifacts. Only stdout carries JSON; nothing else is printed there. * *

        The corpus sentinels ({@code __ORACLE_FORMAT_TOKEN__}, {@code __TAMPERED_TOKEN__}, {@code - * __ORACLE_SIG__}) are materialized here from the fixed per-case SECRET exactly as the oracle - * materializes them, so the interop/tamper cases are reproducible. + * __ORACLE_SIG__}) are materialized here from the fixed per-case SECRET, so the interop/tamper + * cases are reproducible. * *

        Run via the {@code wireDump} Gradle task: * @@ -146,6 +144,11 @@ private static Map observeTokenFields(String token) { isHex); } + /** + * Entry point: emits the WIRE-CRYPTO dump this gate compares across ports. + * + * @param args the command-line arguments. + */ public static void main(String[] args) { Gson gson = new GsonBuilder().disableHtmlEscaping().create(); Map out = new LinkedHashMap<>(); diff --git a/src/main/java/com/signalwire/sdk/tools/WireRelayDump.java b/src/main/java/com/signalwire/sdk/tools/WireRelayDump.java index a1d61f9a..bdd144c6 100644 --- a/src/main/java/com/signalwire/sdk/tools/WireRelayDump.java +++ b/src/main/java/com/signalwire/sdk/tools/WireRelayDump.java @@ -14,6 +14,7 @@ import com.signalwire.sdk.relay.Call; import com.signalwire.sdk.relay.RelayClient; import com.signalwire.sdk.relay.RelayEvent; +import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.util.ArrayList; @@ -27,8 +28,7 @@ import org.java_websocket.server.WebSocketServer; /** - * WireRelayDump — the Java port's WIRE-RELAY dump program for the cross-port relay differ - * (porting-sdk/scripts/diff_port_wire_relay.py). + * WireRelayDump — this SDK's dump program for the WIRE-RELAY gate's relay differ. * *

        It captures, for each {@code wire_relay_corpus} case, the observable RELAY artifact: * @@ -41,8 +41,8 @@ *

      * *

      It prints ONE JSON object mapping case-id -> artifact to stdout; the differ canonicalizes - * both sides (normalizing the random control_id to a sentinel) and byte-compares against the Python - * oracle. Only stdout carries JSON. Mirrors Go's {@code cmd/wire-relay-dump/main.go}. + * both sides (normalizing the random control_id to a sentinel) and byte-compares against the shared + * golden. Only stdout carries JSON. * *

      Frame capture: verb/client verbs send over a real WebSocket, so this program stands up a tiny * in-process mock RELAY WS server on a loopback port (pointed to via {@code .space("ws://host:port/ @@ -80,7 +80,7 @@ private static final class MockRelay extends WebSocketServer { private volatile String dialArm; // when set, resolve dial for this tag on the next calling.dial MockRelay(int port) { - super(new InetSocketAddress("127.0.0.1", port)); + super(new InetSocketAddress(InetAddress.getLoopbackAddress(), port)); setReuseAddr(true); } @@ -88,27 +88,54 @@ Map lastFrame(String method) { return frames.get(method); } + /** + * A mock client connected. + * + * @param socket the connected client socket. + * @param handshake the client's handshake. + */ @Override public void onOpen(WebSocket socket, ClientHandshake handshake) { this.conn = socket; } + /** + * A mock client disconnected. + * + * @param socket the client socket. + * @param code the close code. + * @param reason the close reason. + * @param remote whether the client initiated the close. + */ @Override public void onClose(WebSocket socket, int code, String reason, boolean remote) { // no-op } + /** + * The mock server hit a transport error. + * + * @param socket the socket the error occurred on, or {@code null} for a server-level error. + * @param ex the error. + */ @Override public void onError(WebSocket socket, Exception ex) { // logged to stderr only; never stdout System.err.println("mock relay error: " + ex.getMessage()); } + /** The mock server finished binding and is accepting connections. */ @Override public void onStart() { // no-op } + /** + * A frame arrived from a mock client; drives the dump's scripted exchange. + * + * @param socket the client socket the frame arrived on. + * @param raw the raw frame text. + */ @Override @SuppressWarnings("unchecked") public void onMessage(WebSocket socket, String raw) { @@ -141,7 +168,7 @@ public void onMessage(WebSocket socket, String raw) { frames.put(method, params); reply(socket, id, map("code", "200", "message", "Dialing")); if (dialArm != null) { - pushDialAnswered(socket, dialArm); + pushDialAnswered(dialArm); } break; case "messaging.send": @@ -183,7 +210,9 @@ void pushInboundCall() { map("call_id", CALL, "node_id", NODE, "direction", "inbound", "call_state", "created")); } - private void pushDialAnswered(WebSocket socket, String tag) { + // No `socket` parameter: push() broadcasts to the connection this mock is + // holding, so the caller's socket was never consulted. + private void pushDialAnswered(String tag) { sleep(20); push( "calling.call.dial", @@ -222,6 +251,12 @@ private static Map frame(String method, Map para return map("method", method, "params", params); } + /** + * Entry point: emits the WIRE-RELAY dump this gate compares across ports. + * + * @param args the command-line arguments. + * @throws Exception if the run fails; the gate reads the non-zero exit. + */ public static void main(String[] args) throws Exception { Logger.setGlobalLevel(Logger.Level.OFF); @@ -268,9 +303,20 @@ private static void captureFrames(MockRelay mock, int port, Map runner.start(); // Wait for the handshake, then push the inbound call. + // + // Both barriers are required, in this order. `waitConn` only observes the mock's `onOpen`, + // i.e. the TCP/WS socket being ACCEPTED — at that instant the client has not necessarily sent + // `signalwire.connect`, let alone processed its reply. `RelayClient.execute` routes a request + // to `executeQueue` (instead of the socket) whenever `connected` is false, and that queue is + // drained only by a RECONNECT, which never happens here — so a `calling.play` issued in that + // window is buffered forever and fails 30s later with "Request timeout for calling.play". + // Waiting on `isConnected()` closes the window. if (!waitConn(mock)) { throw new IllegalStateException("client did not connect"); } + if (!waitReady(client)) { + throw new IllegalStateException("client did not complete the signalwire.connect handshake"); + } mock.pushInboundCall(); Call c = callCh.poll(3, java.util.concurrent.TimeUnit.SECONDS); @@ -450,6 +496,23 @@ private static boolean waitConn(MockRelay mock) { return false; } + /** + * Wait until the client has PROCESSED the {@code signalwire.connect} reply, not merely opened the + * socket. Until {@code isConnected()} is true, {@link + * com.signalwire.sdk.relay.RelayClient#execute} buffers requests on its disconnected-queue, which + * only a reconnect drains — so anything sent early hangs until the 30s execute timeout. + */ + private static boolean waitReady(RelayClient client) { + long deadline = System.currentTimeMillis() + 3_000; + while (System.currentTimeMillis() < deadline) { + if (client.isConnected()) { + return true; + } + sleep(10); + } + return false; + } + /** Run the pure typed-event decoders (no wire). */ private static void decodeEvents(Map out) { // relay_evt_queue diff --git a/src/main/java/com/signalwire/sdk/utils/UrlValidator.java b/src/main/java/com/signalwire/sdk/utils/UrlValidator.java index 8d2325f7..d32e4e4b 100644 --- a/src/main/java/com/signalwire/sdk/utils/UrlValidator.java +++ b/src/main/java/com/signalwire/sdk/utils/UrlValidator.java @@ -16,23 +16,16 @@ /** * SSRF-prevention guard for user-supplied URLs. * - *

      Mirrors Python's signalwire.utils.url_validator.validate_url: rejects non-http(s) - * schemes, missing hostnames, and any URL whose hostname resolves to a private / loopback / - * link-local / cloud-metadata IP. The {@code allowPrivate} parameter (or the {@code - * SWML_ALLOW_PRIVATE_URLS} env var with value "1", "true" or "yes", case-insensitive) bypasses the - * IP-blocklist check. - * - *

      Projected onto the Python free function name {@code validate_url} via - * scripts/enumerate_signatures.py. + *

      Rejects non-http(s) schemes, missing hostnames, and any URL whose hostname resolves to a + * private / loopback / link-local / cloud-metadata IP. The {@code allowPrivate} parameter (or the + * {@code SWML_ALLOW_PRIVATE_URLS} env var with value "1", "true" or "yes", case-insensitive) + * bypasses the IP-blocklist check. */ public final class UrlValidator { private static final Logger LOG = Logger.getLogger("signalwire.url_validator"); - /** - * The cross-port SSRF block list. Order matches the Python reference for ease of cross-language - * review. - */ + /** The SSRF block list — every CIDR range a validated URL's hostname must not resolve into. */ private static final String[] BLOCKED_NETWORKS = { "10.0.0.0/8", "172.16.0.0/12", @@ -62,6 +55,17 @@ private UrlValidator() { // utility class } + /** + * Validate that a URL is safe to fetch, with {@code allowPrivate} defaulted to {@code false} — + * i.e. the IP block list is enforced. + * + * @param url URL string to validate. + * @return true when the URL is safe to fetch, false otherwise. + */ + public static boolean validateUrl(String url) { + return validateUrl(url, false); + } + /** * Validate that a URL is safe to fetch. * diff --git a/src/main/java/com/signalwire/sdk/web/WebService.java b/src/main/java/com/signalwire/sdk/web/WebService.java index 9e2c5aa5..2bd4127c 100644 --- a/src/main/java/com/signalwire/sdk/web/WebService.java +++ b/src/main/java/com/signalwire/sdk/web/WebService.java @@ -8,7 +8,6 @@ import com.signalwire.sdk.core.ConfigLoader; import com.signalwire.sdk.core.SecurityConfig; -import com.signalwire.sdk.logging.Logger; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpServer; import java.io.IOException; @@ -32,14 +31,13 @@ /** * Static file serving service with an HTTP API. * - *

      Java port of the Python reference {@code signalwire.web.web_service.WebService}. Maps URL - * route prefixes to local directories and serves their files over HTTP with security headers, - * extension filtering, path-traversal protection, and optional basic auth. + *

      Maps URL route prefixes to local directories and serves their files over HTTP with security + * headers, extension filtering, path-traversal protection, and optional basic auth. * - *

      Java idiom note: Python builds a FastAPI/uvicorn app; Java uses the JDK built-in {@link - * HttpServer}. {@link #start(String, Integer)} launches the server (non-blocking) and returns the - * bound port, so it is safe to start and {@link #stop()} in tests without hanging. Pass port 0 to - * bind an ephemeral port. + *

      It runs on the JDK built-in {@link HttpServer} — no external web framework is required. {@link + * #start(String, Integer)} launches the server (non-blocking) and returns the bound port, so it is + * safe to start and {@link #stop()} in tests without hanging. Pass port 0 to bind an ephemeral + * port. */ public class WebService { @@ -56,8 +54,6 @@ public class WebService { ".DS_Store", ".swp"); - private final Logger log = Logger.getLogger("web_service"); - private int port; private final Map directories = new LinkedHashMap<>(); private boolean enableDirectoryBrowsing; @@ -118,6 +114,11 @@ public WebService( this.server = null; } + /** + * The TCP port this static-file service binds. + * + * @return the port. + */ public int getPort() { return port; } @@ -126,6 +127,11 @@ public Map getDirectories() { return directories; } + /** + * The security configuration governing this service — TLS, allowed hosts, CORS, and basic auth. + * + * @return the security config. + */ public SecurityConfig getSecurity() { return security; } @@ -150,8 +156,8 @@ public boolean isEnableCors() { } /** - * Extension allow-list (the {@code allowed_extensions} param), or {@code null} when every - * extension not blocked is permitted — the reference's {@code None} default. + * Extension allow-list (the {@code allowed_extensions} param), or {@code null} — the default — + * when every extension not blocked is permitted. */ public List getAllowedExtensions() { return allowedExtensions == null ? null : Collections.unmodifiableList(allowedExtensions); diff --git a/src/test/java/com/signalwire/sdk/AgentBaseTest.java b/src/test/java/com/signalwire/sdk/AgentBaseTest.java index f8bbcf77..44957494 100644 --- a/src/test/java/com/signalwire/sdk/AgentBaseTest.java +++ b/src/test/java/com/signalwire/sdk/AgentBaseTest.java @@ -293,7 +293,7 @@ void testRenderSwmlWithGlobalData() { @SuppressWarnings("unchecked") void testPreAnswerVerbs() { agent.setPromptText("Test"); - agent.addPreAnswerVerb("play", Map.of("url", "ringback.wav")); + agent.addPreAnswerVerb("play", Map.of("url", "https://cdn.example.com/ringback.wav")); Map swml = agent.renderSwml("http://localhost:4000"); Map sections = (Map) swml.get("sections"); @@ -319,8 +319,8 @@ void testPostAiVerbs() { @Test void testClearVerbs() { - agent.addPreAnswerVerb("play", Map.of()); - agent.addPostAnswerVerb("play", Map.of()); + agent.addPreAnswerVerb("play", Map.of("url", "say:hi")); + agent.addPostAnswerVerb("play", Map.of("url", "say:hi")); agent.addPostAiVerb("hangup", Map.of()); agent.clearPreAnswerVerbs(); @@ -392,7 +392,7 @@ void testMethodChaining() { .addLanguage("English", "en-US", "rachel") .addPronunciation("SW", "SignalWire", true) .setParam("temperature", 0.5) - .addPreAnswerVerb("play", Map.of()) + .addPreAnswerVerb("play", Map.of("url", "say:hi")) .enableDebugEvents() .enableSipRouting(); diff --git a/src/test/java/com/signalwire/sdk/AiConfigTest.java b/src/test/java/com/signalwire/sdk/AiConfigTest.java index 89a75f25..5a37f6d2 100644 --- a/src/test/java/com/signalwire/sdk/AiConfigTest.java +++ b/src/test/java/com/signalwire/sdk/AiConfigTest.java @@ -325,43 +325,76 @@ void testSetNativeFunctions() { // ======== Internal Fillers ======== + /** + * {@code internal_fillers} renders under {@code ai.SWAIG} as an OBJECT keyed by internal-function + * name ({@code $defs/SWAIGInternalFiller}), NOT as a list at the {@code ai} top level. The old + * shape was wrong in both container and structure and could never have been honoured; it only + * survived because the render path bypassed the schema validator. + */ @Test @SuppressWarnings("unchecked") - void testAddInternalFiller() { - agent.addInternalFiller("Thinking...", null); + void testAddInternalFillerRendersUnderSwaigKeyedByFunction() { + agent.addInternalFiller("next_step", "en-US", List.of("Thinking...")); Map ai = extractAi(agent.renderSwml("http://localhost:3000")); - List> fillers = (List>) ai.get("internal_fillers"); + assertFalse(ai.containsKey("internal_fillers"), "must NOT sit at the ai top level"); + Map swaig = (Map) ai.get("SWAIG"); + assertNotNull(swaig); + Map fillers = (Map) swaig.get("internal_fillers"); assertNotNull(fillers); - assertEquals("Thinking...", fillers.get(0).get("text")); + assertEquals(Map.of("en-US", List.of("Thinking...")), fillers.get("next_step")); } @Test @SuppressWarnings("unchecked") - void testSetInternalFillersReplacesAll() { - agent.addInternalFiller("First", null); - agent.setInternalFillers(List.of(Map.of("text", "Second"))); + void testSetInternalFillersMapReplacesAll() { + agent.addInternalFiller("next_step", "en-US", List.of("First")); + agent.setInternalFillersMap(Map.of("check_time", Map.of("en-US", List.of("Second")))); Map ai = extractAi(agent.renderSwml("http://localhost:3000")); - List> fillers = (List>) ai.get("internal_fillers"); + Map swaig = (Map) ai.get("SWAIG"); + Map fillers = (Map) swaig.get("internal_fillers"); assertEquals(1, fillers.size()); - assertEquals("Second", fillers.get(0).get("text")); + assertEquals(Map.of("en-US", List.of("Second")), fillers.get("check_time")); } // ======== Debug Events ======== + /** + * The debug stream is configured through {@code ai.params.debug_webhook_url} + {@code + * ai.params.debug_webhook_level} — both declared {@code AIParams} keys. A top-level {@code + * ai.debug} object (the old shape) is rejected by the closed {@code AIObject}, so it invalidated + * the whole document and the platform never enabled the stream. + */ @Test @SuppressWarnings("unchecked") - void testEnableDebugEvents() { + void testEnableDebugEventsRendersWebhookIntoParams() { agent.enableDebugEvents(); Map ai = extractAi(agent.renderSwml("http://localhost:3000")); - Map debug = (Map) ai.get("debug"); - assertNotNull(debug); - assertEquals(true, debug.get("events")); + assertFalse(ai.containsKey("debug"), "no top-level ai.debug — AIObject is closed"); + Map params = (Map) ai.get("params"); + assertNotNull(params); + assertEquals(1, params.get("debug_webhook_level")); + assertTrue(((String) params.get("debug_webhook_url")).endsWith("/debug_events")); } @Test + @SuppressWarnings("unchecked") + void testEnableDebugEventsHonoursLevel() { + agent.enableDebugEvents(3); + Map ai = extractAi(agent.renderSwml("http://localhost:3000")); + Map params = (Map) ai.get("params"); + assertEquals(3, params.get("debug_webhook_level")); + } + + @Test + @SuppressWarnings("unchecked") void testDebugEventsOffByDefault() { Map ai = extractAi(agent.renderSwml("http://localhost:3000")); assertFalse(ai.containsKey("debug")); + Map params = (Map) ai.get("params"); + if (params != null) { + assertFalse(params.containsKey("debug_webhook_url")); + assertFalse(params.containsKey("debug_webhook_level")); + } } // ======== Function Includes ======== @@ -427,7 +460,7 @@ void testAiConfigMethodChaining() { .setGlobalData(Map.of("k", "v")) .updateGlobalData(Map.of("k2", "v2")) .setNativeFunctions(List.of("check_for_input")) - .addInternalFiller("Hold on", null) + .addInternalFiller("next_step", "en-US", List.of("Hold on")) .enableDebugEvents() .addFunctionInclude("https://example.com", null) .setPromptLlmParams(Map.of("temperature", 0.3)) diff --git a/src/test/java/com/signalwire/sdk/AuthTest.java b/src/test/java/com/signalwire/sdk/AuthTest.java index 28ee0467..6f847c83 100644 --- a/src/test/java/com/signalwire/sdk/AuthTest.java +++ b/src/test/java/com/signalwire/sdk/AuthTest.java @@ -128,10 +128,19 @@ void testDifferentManagersDifferentSecrets() { @SuppressWarnings("unchecked") void testSecureToolRendersWebhookToken() { // A1 secure contract (SECURE-DEFAULT gate): the per-tool SWAIG token is a WIRE artifact — a - // secure tool's RENDERED webhook carries a meta_data_token; an insecure one does not. (Matching - // the Python reference, onFunctionCall dispatches WITHOUT validating the token; the /swaig HTTP - // handler validates the round-tripped token, so it is the rendered surface that is pinned - // here.) + // secure tool's RENDERED webhook carries a `__token` QUERY PARAMETER on its own web_hook_url, + // and an insecure tool gets NO per-tool web_hook_url at all (it falls back to + // SWAIG.defaults.web_hook_url). Matching the Python reference (agent_base.py:1096-1100). + // + // This test previously asserted `meta_data_token`, which is a DIFFERENT SWML field: schema.json + // defines it as the "Scoping token for meta_data", the engine MD5-derives it from + // web_hook_url+auth when the SWML omits it (mod_openai/app_config.c:1031-1042) and uses it only + // as a key into the per-function metadata store (actions.c:2085-2093). Nothing validates it as + // a credential, so a token placed there left the callback unauthenticated. + // + // (Matching the Python reference, onFunctionCall dispatches WITHOUT validating the token; the + // /swaig HTTP handler validates the round-tripped token, so it is the rendered surface that is + // pinned here.) AgentBase agent = AgentBase.builder().name("test").authUser("u").authPassword("p").build(); agent.setPromptText("Test"); agent.defineTool( @@ -171,12 +180,89 @@ void testSecureToolRendersWebhookToken() { .findFirst() .orElseThrow(); - // secure tool (the A1 default) → rendered webhook carries a token; insecure tool → none. - assertNotNull(secure.get("meta_data_token"), "secure tool must render a webhook token"); - assertFalse(String.valueOf(secure.get("meta_data_token")).isEmpty(), "token must be non-empty"); + // secure tool (the A1 default) → its OWN web_hook_url carries ?__token=. + String secureUrl = (String) secure.get("web_hook_url"); + assertNotNull(secureUrl, "secure tool must render its own web_hook_url"); + assertTrue( + secureUrl.contains("__token="), + "secure tool's webhook must carry the __token query param: " + secureUrl); + assertFalse( + secureUrl.endsWith("__token="), "the __token query param must have a value: " + secureUrl); + + // The token must NOT be written to meta_data_token — that is the SWML metadata SCOPING key, + // not a credential (see the comment above). + assertNull( + secure.get("meta_data_token"), + "the security token must not be emitted as meta_data_token (a metadata scoping key)"); + + // insecure tool → NO per-tool webhook at all, so no token anywhere. + assertNull( + insecure.get("web_hook_url"), + "insecure tool must render NO per-tool web_hook_url (it falls back to SWAIG.defaults)"); assertNull(insecure.get("meta_data_token"), "insecure tool must NOT render a webhook token"); } + @Test + @SuppressWarnings("unchecked") + void testSwaigDefaultsWebHookUrlIsEmittedWhenFunctionsExist() { + // The other half of the secure contract. Because an INSECURE tool deliberately renders no + // per-tool web_hook_url, `SWAIG.defaults.web_hook_url` is the ONLY endpoint it has — so a + // missing defaults block does not merely differ from the reference, it leaves the tool with + // no callback at all. The reference emits it alongside functions (agent_base.py:1108-1113). + AgentBase agent = + AgentBase.builder().name("test").route("/a").authUser("u").authPassword("p").build(); + agent.setPromptText("Test"); + agent.defineTool( + new com.signalwire.sdk.swaig.ToolDefinition( + "insecure_tool", + "insecure", + java.util.Map.of(), + (a, r) -> new com.signalwire.sdk.swaig.FunctionResult("ok")) + .setSecure(false)); + + var swml = agent.renderSwml("http://localhost:3000"); + var swaig = swaigOf(swml); + + var defaults = (java.util.Map) swaig.get("defaults"); + assertNotNull(defaults, "SWAIG.defaults must be emitted when functions exist"); + assertEquals( + "http://localhost:3000/a/swaig", + defaults.get("web_hook_url"), + "defaults.web_hook_url is the shared fallback endpoint, WITHOUT a per-tool token"); + + // And the insecure tool really does rely on it: it has no webhook of its own. + var fns = (java.util.List>) swaig.get("functions"); + assertNull(fns.get(0).get("web_hook_url")); + } + + @Test + @SuppressWarnings("unchecked") + void testSwaigDefaultsAbsentWhenNoFunctions() { + // Gated on `if functions:` in the reference — no functions, no defaults block. + AgentBase agent = + AgentBase.builder().name("test").route("/a").authUser("u").authPassword("p").build(); + agent.setPromptText("Test"); + + var swml = agent.renderSwml("http://localhost:3000"); + var swaig = swaigOf(swml); + assertNull(swaig.get("defaults"), "no functions → no SWAIG.defaults"); + } + + /** Pull the {@code ai.SWAIG} object out of a rendered SWML document, or an empty map. */ + @SuppressWarnings("unchecked") + private static java.util.Map swaigOf(java.util.Map swml) { + var sections = (java.util.Map) swml.get("sections"); + var main = (java.util.List>) sections.get("main"); + for (var verb : main) { + if (verb.containsKey("ai")) { + var ai = (java.util.Map) verb.get("ai"); + var swaig = (java.util.Map) ai.get("SWAIG"); + return swaig == null ? java.util.Map.of() : swaig; + } + } + return java.util.Map.of(); + } + // ======== Environment variable auth ======== @Test diff --git a/src/test/java/com/signalwire/sdk/DataMapTest.java b/src/test/java/com/signalwire/sdk/DataMapTest.java index 99802935..704fea20 100644 --- a/src/test/java/com/signalwire/sdk/DataMapTest.java +++ b/src/test/java/com/signalwire/sdk/DataMapTest.java @@ -98,13 +98,23 @@ void testDataMapWebhookWithHeaders() { assertTrue(webhooks.get(0).containsKey("headers")); } + /** + * {@code params()} writes the {@code params} webhook key — the one in the contract. + * + *

      Replaces {@code testDataMapWebhookWithBody}, which asserted {@code + * webhooks.get(0).containsKey("body")} — it PINNED a schema-forbidden key as correct. {@code + * porting-sdk/schema.json} {@code $defs/Webhook} declares exactly ten properties under {@code + * unevaluatedProperties: {"not": {}}} and {@code body} is not among them, and {@code + * mod_openai/actions.c:735-739} / {@code bedrock.c:4920-4926} read url, method, form_param, + * {@code params} and {@code headers} and nothing else. + */ @Test - void testDataMapWebhookWithBody() { + void testDataMapWebhookWithParams() { var dm = new DataMap("search") .purpose("Search") .webhook("POST", "https://api.example.com/search") - .body(Map.of("query", "${args.query}", "limit", 3)) + .params(Map.of("query", "${args.query}", "limit", 3)) .output(new FunctionResult("Found: ${response.title}")); var func = dm.toSwaigFunction(); @@ -113,13 +123,35 @@ void testDataMapWebhookWithBody() { var dataMap = (Map) func.get("data_map"); @SuppressWarnings("unchecked") var webhooks = (List>) dataMap.get("webhooks"); - assertTrue(webhooks.get(0).containsKey("body")); + assertEquals(Map.of("query", "${args.query}", "limit", 3), webhooks.get(0).get("params")); + assertFalse(webhooks.get(0).containsKey("body")); } @Test - void testDataMapBodyRequiresWebhook() { + void testDataMapParamsRequiresWebhook() { assertThrows( - IllegalStateException.class, () -> new DataMap("test").body(Map.of("key", "value"))); + IllegalStateException.class, () -> new DataMap("test").params(Map.of("key", "value"))); + } + + /** + * {@code DataMap.body()} is GONE — the key it wrote is invalid, not merely ignored. + * + *

      Owner-ruled 2026-07-29 (reference {@code signalwire-python 71eed0c}), extending the {@code + * f171ce3} ruling ("if the server doesn't read them, remove them") from {@code + * create_simple_api_tool}'s PARAMETER to the public BUILDER METHOD. Its only possible effect was + * producing an invalid document while silently discarding the caller's payload. {@code params()} + * is the correct method for POST/PUT request data. + */ + @Test + void testBodyBuilderIsGone() throws Exception { + var declared = new ArrayList(); + for (var m : DataMap.class.getMethods()) { + declared.add(m.getName()); + } + assertFalse( + declared.contains("body"), + "DataMap.body() must be removed — it writes a schema-forbidden key that no engine" + + " reader consumes; use params() instead"); } @Test diff --git a/src/test/java/com/signalwire/sdk/LoggingTest.java b/src/test/java/com/signalwire/sdk/LoggingTest.java index 6f44013a..5bf28d74 100644 --- a/src/test/java/com/signalwire/sdk/LoggingTest.java +++ b/src/test/java/com/signalwire/sdk/LoggingTest.java @@ -3,6 +3,11 @@ import static org.junit.jupiter.api.Assertions.*; import com.signalwire.sdk.logging.Logger; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.nio.charset.StandardCharsets; +import java.util.LinkedHashMap; +import java.util.Map; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; @@ -104,4 +109,65 @@ void testSuppressedLogging() { log.warn("suppressed"); log.error("suppressed"); } + + // --- control-char scrub: contract + WIRING ------------------------------- + + @Test + void stripControlCharsScrubsStringValuesInTheEventDict() { + // The PUBLIC contract, matching the reference: an event map in, the same map + // out with every STRING value scrubbed. + Map ev = new LinkedHashMap<>(); + ev.put("event", "hello\u0000world"); + ev.put("field", "a\u0007b\u001fc"); + ev.put("n", 42); + + Map out = Logger.stripControlChars(ev); + + assertEquals("helloworld", out.get("event")); + assertEquals("abc", out.get("field")); + // Non-string values pass through untouched (the reference's + // `isinstance(value, str)` guard). + assertEquals(42, out.get("n")); + } + + /** + * The scrub must be ON THE EMISSION PATH, not merely available. This captures what the logger + * ACTUALLY writes, so deleting the scrub from the emitter turns it RED. A test that called the + * scrub helper directly would pass even with the wiring removed — which is exactly how this + * shipped unprotected: the method was public, correct, and called by nothing. + */ + @Test + void logOutputHasControlCharsStripped() { + PrintStream savedOut = System.out; + ByteArrayOutputStream captured = new ByteArrayOutputStream(); + try { + System.setOut(new PrintStream(captured, true, StandardCharsets.UTF_8)); + Logger.getLogger("inject.test").info("user\u0000said\u001b[31mRED\u0007"); + } finally { + System.setOut(savedOut); + } + + String line = captured.toString(StandardCharsets.UTF_8); + assertFalse(line.contains("\u0000"), "NUL survived into the emitted line: " + line); + assertFalse(line.contains("\u001b"), "ESC survived into the emitted line: " + line); + assertFalse(line.contains("\u0007"), "BEL survived into the emitted line: " + line); + assertTrue(line.contains("usersaid[31mRED"), "unexpected line: " + line); + } + + /** + * Tab/newline/CR are LEGAL in a log line and must survive — a scrub that ate them would mangle + * multi-line messages while still passing the assertion above. + */ + @Test + void logOutputKeepsLegalWhitespace() { + PrintStream savedOut = System.out; + ByteArrayOutputStream captured = new ByteArrayOutputStream(); + try { + System.setOut(new PrintStream(captured, true, StandardCharsets.UTF_8)); + Logger.getLogger("inject.test").info("line1\tcol\nline2\r end"); + } finally { + System.setOut(savedOut); + } + assertTrue(captured.toString(StandardCharsets.UTF_8).contains("line1\tcol\nline2\r end")); + } } diff --git a/src/test/java/com/signalwire/sdk/ReferenceDefaultOverloadTest.java b/src/test/java/com/signalwire/sdk/ReferenceDefaultOverloadTest.java new file mode 100644 index 00000000..7ad00f97 --- /dev/null +++ b/src/test/java/com/signalwire/sdk/ReferenceDefaultOverloadTest.java @@ -0,0 +1,380 @@ +/* + * Copyright (c) 2025 SignalWire + * + * Licensed under the MIT License. + * See LICENSE file in the project root for full license information. + */ +package com.signalwire.sdk; + +import static org.junit.jupiter.api.Assertions.*; + +import com.signalwire.sdk.agent.AgentBase; +import com.signalwire.sdk.agents.BedrockAgent; +import com.signalwire.sdk.contexts.Step; +import com.signalwire.sdk.core.PomBuilder; +import com.signalwire.sdk.prefabs.InfoGathererAgent; +import com.signalwire.sdk.server.AgentServer; +import com.signalwire.sdk.swaig.FunctionResult; +import com.signalwire.sdk.swaig.SWAIGFunction; +import com.signalwire.sdk.swml.Service; +import com.signalwire.sdk.utils.UrlValidator; +import java.util.*; +import org.junit.jupiter.api.Test; + +/** + * Java has no default arguments; its idiomatic substitute is METHOD OVERLOADING — a shorter + * overload that omits an optional parameter and supplies the reference's default. This suite is the + * BEHAVIOURAL proof for each such overload added to close the {@code required-flip} signature + * drift. + * + *

      Every test has the same shape, and the shape is the point: call the SHORT form, then call the + * LONG form with the reference's default written out EXPLICITLY, and assert the two produce the + * same observable result. A test that only exercised the long form would prove nothing, and a test + * comparing the short form against a hand-copied expected literal would still pass if the delegate + * forwarded some OTHER constant. Comparing against the explicitly-defaulted long call means that + * changing a delegate to forward a wrong default makes its test fail. + * + *

      Each reference default is cited by file:line against the signalwire-python reference. + */ +class ReferenceDefaultOverloadTest { + + // ======== FunctionResult ======== + + /** signalwire/core/function_result.py:190 — swml_transfer(dest, ai_response, final=True) */ + @Test + void swmlTransferDefaultsFinalToTrue() { + assertEquals( + new FunctionResult("r").swmlTransfer("sip:a@b", "done", true).toMap(), + new FunctionResult("r").swmlTransfer("sip:a@b", "done").toMap()); + } + + /** signalwire/core/function_result.py:440 — hold(timeout: int = 300) */ + @Test + void holdDefaultsTimeoutTo300() { + assertEquals(new FunctionResult("r").hold(300).toMap(), new FunctionResult("r").hold().toMap()); + } + + /** signalwire/core/function_result.py:672 — replace_in_history(text: str | bool = True) */ + @Test + void replaceInHistoryDefaultsToTrue() { + assertEquals( + new FunctionResult("r").replaceInHistory(true).toMap(), + new FunctionResult("r").replaceInHistory().toMap()); + } + + /** signalwire/core/function_result.py:647 — enable_functions_on_timeout(enabled: bool = True) */ + @Test + void enableFunctionsOnTimeoutDefaultsToTrue() { + assertEquals( + new FunctionResult("r").enableFunctionsOnTimeout(true).toMap(), + new FunctionResult("r").enableFunctionsOnTimeout().toMap()); + } + + /** signalwire/core/function_result.py:659 — enable_extensive_data(enabled: bool = True) */ + @Test + void enableExtensiveDataDefaultsToTrue() { + assertEquals( + new FunctionResult("r").enableExtensiveData(true).toMap(), + new FunctionResult("r").enableExtensiveData().toMap()); + } + + /** + * signalwire/core/function_result.py:1224 — tap(uri, control_id=None, direction="both", + * codec="PCMU", rtp_ptime=20, status_url=None) + */ + @Test + void tapDefaultsMatchTheReference() { + var full = new FunctionResult("r").tap("ws://x", null, "both", "PCMU", 20, null).toMap(); + assertEquals(full, new FunctionResult("r").tap("ws://x").toMap()); + assertEquals(full, new FunctionResult("r").tap("ws://x", null).toMap()); + assertEquals(full, new FunctionResult("r").tap("ws://x", null, "both").toMap()); + } + + /** + * signalwire/core/function_result.py:752 — send_sms(to_number, from_number, body=None, + * media=None, tags=None, region=None) + */ + @Test + void sendSmsDefaultsMatchTheReference() { + var full = + new FunctionResult("r") + .sendSms("+15551112222", "+15553334444", "hi", null, null, null) + .toMap(); + assertEquals( + full, new FunctionResult("r").sendSms("+15551112222", "+15553334444", "hi").toMap()); + assertEquals( + full, new FunctionResult("r").sendSms("+15551112222", "+15553334444", "hi", null).toMap()); + } + + /** + * signalwire/core/function_result.py:765 — "Either body or media (or both) must be provided", so + * the all-defaults form raises exactly like the reference does. + */ + @Test + void sendSmsWithNeitherBodyNorMediaRaisesLikeTheReference() { + assertThrows( + IllegalArgumentException.class, + () -> new FunctionResult("r").sendSms("+15551112222", "+15553334444")); + } + + /** + * signalwire/core/function_result.py:810 — pay(payment_connector_url, input_method="dtmf", + * status_url=None, payment_method="credit-card", timeout=5, max_attempts=1, security_code=True, + * postal_code=True, min_postal_code_length=0, token_type="reusable", charge_amount=None, + * currency="usd", language="en-US", voice="woman", description=None, valid_card_types="visa + * mastercard amex", parameters=None, prompts=None, ai_response=DEFAULT_PAY_AI_RESPONSE) + */ + @Test + void payDefaultsMatchTheReference() { + var longForm = + new FunctionResult("r") + .pay( + "https://pay.example", + "dtmf", + null, + "credit-card", + 5, + 1, + true, + Boolean.TRUE, + 0, + "reusable", + null, + "usd", + "en-US", + "woman", + null, + "visa mastercard amex", + null, + null, + FunctionResult.DEFAULT_PAY_AI_RESPONSE) + .toMap(); + assertEquals(longForm, new FunctionResult("r").pay("https://pay.example").toMap()); + } + + /** + * signalwire/core/function_result.py:1471 — create_payment_prompt(for_situation, actions, + * card_type=None, error_type=None) + */ + @Test + void createPaymentPromptDefaultsCardAndErrorTypeToNull() { + List> actions = + List.of(FunctionResult.createPaymentAction("say", "Card number please")); + var full = FunctionResult.createPaymentPrompt("payment-card-number", actions, null, null); + assertEquals(full, FunctionResult.createPaymentPrompt("payment-card-number", actions)); + assertEquals(full, FunctionResult.createPaymentPrompt("payment-card-number", actions, null)); + // And the default's VALUE matters: omitting card_type must leave the key out. + assertFalse( + FunctionResult.createPaymentPrompt("payment-card-number", actions) + .containsKey("card_type")); + assertTrue( + FunctionResult.createPaymentPrompt("payment-card-number", actions, "visa") + .containsKey("card_type")); + } + + // ======== Agent surface ======== + + /** + * signalwire/agent_server.py:750 — serve_static_files(directory, route="/"). + * + *

      {@code staticFilesDir} / {@code staticFilesRoute} are private with no accessor and are only + * observable by actually serving HTTP, so this reads them reflectively rather than widening the + * public surface for a test. The assertion is still against the explicitly-defaulted long call. + */ + @Test + void serveStaticFilesDefaultsRouteToSlash() throws Exception { + var shortForm = new AgentServer("127.0.0.1", 0).serveStaticFiles("/var/assets"); + var longForm = new AgentServer("127.0.0.1", 0).serveStaticFiles("/var/assets", "/"); + assertEquals(staticField(longForm, "staticFilesDir"), staticField(shortForm, "staticFilesDir")); + assertEquals( + staticField(longForm, "staticFilesRoute"), staticField(shortForm, "staticFilesRoute")); + // The default's VALUE matters: a different route must NOT compare equal. + var other = new AgentServer("127.0.0.1", 0).serveStaticFiles("/var/assets", "/assets"); + assertNotEquals( + staticField(other, "staticFilesRoute"), staticField(shortForm, "staticFilesRoute")); + } + + private static Object staticField(AgentServer server, String name) throws Exception { + var f = AgentServer.class.getDeclaredField(name); + f.setAccessible(true); + return f.get(server); + } + + /** + * signalwire/agents/bedrock.py:215 — set_inference_params(temperature=None, top_p=None, + * max_tokens=None); each {@code None} leaves the current value unchanged. + */ + @Test + void setInferenceParamsDefaultsToNullMeaningUnchanged() { + var viaShort = new BedrockAgent("a", "/a").setInferenceParams(0.5, 0.9, 100); + var viaLong = new BedrockAgent("a", "/a").setInferenceParams(0.5, 0.9, 100); + + // Omitting all three must be a no-op — exactly like passing three explicit nulls. + viaShort.setInferenceParams(); + viaLong.setInferenceParams(null, null, null); + assertEquals(viaLong.getTemperature(), viaShort.getTemperature()); + assertEquals(viaLong.getTopP(), viaShort.getTopP()); + assertEquals(viaLong.getMaxTokens(), viaShort.getMaxTokens()); + + // Supplying only temperature must leave top_p / max_tokens untouched. + viaShort.setInferenceParams(0.25); + viaLong.setInferenceParams(0.25, null, null); + assertEquals(viaLong.getTemperature(), viaShort.getTemperature()); + assertEquals(viaLong.getTopP(), viaShort.getTopP()); + assertEquals(viaLong.getMaxTokens(), viaShort.getMaxTokens()); + // The forwarded default is load-bearing: top_p must still be the 0.9 set above. + assertEquals(0.9, viaShort.getTopP()); + } + + /** + * signalwire/core/mixins/ai_config_mixin.py:249 — add_pronunciation(replace, with_text, + * ignore_case=False). Observed through the rendered SWML ai.pronounce list. + */ + @Test + void addPronunciationDefaultsIgnoreCaseToFalse() { + var shortForm = AgentBase.builder().name("a").route("/a").build(); + var longForm = AgentBase.builder().name("a").route("/a").build(); + shortForm.addPronunciation("SW", "SignalWire"); + longForm.addPronunciation("SW", "SignalWire", false); + assertEquals(longForm.renderSwml("http://localhost"), shortForm.renderSwml("http://localhost")); + // The default's VALUE matters: ignore_case=true must render differently. + var flipped = AgentBase.builder().name("a").route("/a").build(); + flipped.addPronunciation("SW", "SignalWire", true); + assertNotEquals( + flipped.renderSwml("http://localhost"), shortForm.renderSwml("http://localhost")); + } + + /** signalwire/core/mixins/tool_mixin.py:235 — on_function_call(name, args, raw_data=None) */ + @Test + void onFunctionCallDefaultsRawDataToNull() { + var seen = new ArrayList>(); + var agent = AgentBase.builder().name("a").route("/a").build(); + agent.defineTool( + "echo", + "echo", + new LinkedHashMap<>(), + (args, rawData) -> { + seen.add(rawData); + return new FunctionResult("ok"); + }); + var shortResult = agent.onFunctionCall("echo", Map.of("k", "v")); + var longResult = agent.onFunctionCall("echo", Map.of("k", "v"), null); + assertEquals(longResult.toMap(), shortResult.toMap()); + assertEquals(2, seen.size()); + assertEquals(seen.get(1), seen.get(0), "short form must forward the same raw_data as null"); + } + + /** + * signalwire/core/mixins/web_mixin.py:1212 — on_request(request_data=None, callback_path=None) + */ + @Test + void onRequestDefaultsBothParamsToNull() { + var svc = new Service("s"); + assertEquals(svc.onRequest(null, null), svc.onRequest()); + assertEquals(svc.onRequest(Map.of("a", 1), null), svc.onRequest(Map.of("a", 1))); + } + + /** + * signalwire/prefabs/info_gatherer.py:162 — on_swml_request(request_data=None, + * callback_path=None, request=None) + */ + @Test + void onSwmlRequestDefaultsAllThreeToNull() { + var a = new InfoGathererAgent("g", null); + assertEquals(a.onSwmlRequest(null, null, null), a.onSwmlRequest()); + assertEquals(a.onSwmlRequest(Map.of("b", 1), null, null), a.onSwmlRequest(Map.of("b", 1))); + assertEquals( + a.onSwmlRequest(Map.of("b", 1), Map.of("q", 2), null), + a.onSwmlRequest(Map.of("b", 1), Map.of("q", 2))); + } + + // ======== Core value builders ======== + + /** + * signalwire/core/contexts.py:407 — set_gather_info(output_key=None, completion_action=None, + * prompt=None, isolated=False) + */ + @Test + void setGatherInfoDefaultsMatchTheReference() { + assertEquals( + gathering(step().setGatherInfo(null, null, null, false)), + gathering(step().setGatherInfo())); + assertEquals( + gathering(step().setGatherInfo("k", null, null, false)), + gathering(step().setGatherInfo("k"))); + assertEquals( + gathering(step().setGatherInfo("k", "done", null, false)), + gathering(step().setGatherInfo("k", "done"))); + // isolated defaults to FALSE — flipping it must change the rendered step. + assertNotEquals( + gathering(step().setGatherInfo("k", "done", null, true)), + gathering(step().setGatherInfo("k", "done"))); + } + + /** A Step needs prompt text before {@code toMap()} will render it. */ + private static Step step() { + return new Step("s").setText("say something"); + } + + /** + * {@code gather_info} refuses to render without at least one question, so add one AFTER + * setGatherInfo — identically on both sides, so the comparison still isolates the defaults. + */ + private static Map gathering(Step s) { + return s.addGatherQuestion("q1", "What is your name?").toMap(); + } + + /** + * signalwire/core/pom_builder.py:84 — add_to_section(title, body=None, bullet=None, bullets=None) + */ + @Test + void addToSectionDefaultsMatchTheReference() { + assertEquals( + new PomBuilder().addToSection("T", null, null, null).toMap(), + new PomBuilder().addToSection("T").toMap()); + assertEquals( + new PomBuilder().addToSection("T", "body", null, null).toMap(), + new PomBuilder().addToSection("T", "body").toMap()); + assertEquals( + new PomBuilder().addToSection("T", "body", "b1", null).toMap(), + new PomBuilder().addToSection("T", "body", "b1").toMap()); + // The omitted bullet really is omitted, not silently supplied. + assertNotEquals( + new PomBuilder().addToSection("T", "body", "b1", null).toMap(), + new PomBuilder().addToSection("T", "body").toMap()); + } + + /** signalwire/core/swaig_function.py:142 — execute(args, raw_data=None) */ + @Test + void swaigFunctionExecuteDefaultsRawDataToNull() { + var seen = new ArrayList>(); + var fn = + SWAIGFunction.builder() + .name("f") + .description("desc") + .parameters(new LinkedHashMap<>()) + .handler( + (args, rawData) -> { + seen.add(rawData); + return new FunctionResult("ok"); + }) + .build(); + var shortForm = fn.execute(Map.of("a", 1)); + var longForm = fn.execute(Map.of("a", 1), null); + assertEquals(longForm, shortForm); + assertEquals(2, seen.size()); + assertEquals(seen.get(1), seen.get(0)); + } + + /** signalwire/utils/url_validator.py:34 — validate_url(url, allow_private=False) */ + @Test + void validateUrlDefaultsAllowPrivateToFalse() { + assertEquals( + UrlValidator.validateUrl("http://127.0.0.1/x", false), + UrlValidator.validateUrl("http://127.0.0.1/x")); + // Pins the default's VALUE, not merely that the two calls agree: a private-network + // URL is rejected under allow_private=False and accepted only when overridden. + assertFalse(UrlValidator.validateUrl("http://127.0.0.1/x")); + assertTrue(UrlValidator.validateUrl("http://127.0.0.1/x", true)); + } +} diff --git a/src/test/java/com/signalwire/sdk/RenderTest.java b/src/test/java/com/signalwire/sdk/RenderTest.java index b50fb725..26dc0992 100644 --- a/src/test/java/com/signalwire/sdk/RenderTest.java +++ b/src/test/java/com/signalwire/sdk/RenderTest.java @@ -55,7 +55,7 @@ void testSwmlMainIsNonEmptyList() { @SuppressWarnings("unchecked") void testPreAnswerVerbsRendered() { agent.setPromptText("Test"); - agent.addPreAnswerVerb("play", Map.of("url", "ringback.wav")); + agent.addPreAnswerVerb("play", Map.of("url", "https://cdn.example.com/ringback.wav")); Map swml = agent.renderSwml("http://localhost:3000"); List> main = getMain(swml); assertTrue(main.get(0).containsKey("play")); @@ -197,15 +197,23 @@ void testAiVerbContainsParams() { assertNotNull(ai.get("params")); } + /** + * Contexts render INSIDE the prompt object, alongside {@code text}/{@code pom} — the reference + * builds {@code prompt_config["contexts"]} (swml_handler.py:191). A top-level {@code ai.contexts} + * (the old shape) is rejected by the closed {@code AIObject}, so the entire contexts/steps + * workflow was landing where the AI engine never looks. + */ @Test @SuppressWarnings("unchecked") - void testAiVerbContainsContexts() { + void testAiVerbContainsContextsInsidePrompt() { agent.setPromptText("Test"); var builder = agent.defineContexts(); var ctx = builder.addContext("default"); ctx.addStep("greeting").setText("Hello!"); Map ai = extractAi(agent.renderSwml("http://localhost:3000")); - assertNotNull(ai.get("contexts")); + assertFalse(ai.containsKey("contexts"), "must NOT sit at the ai top level"); + Map prompt = (Map) ai.get("prompt"); + assertNotNull(prompt.get("contexts")); } // ======== Phase 5: Post-AI ======== @@ -248,7 +256,7 @@ void testFullRenderingWithAllComponents() { agent.updateGlobalData(Map.of("key", "val")); agent.setNativeFunctions(List.of("check_for_input")); agent.defineTool("my_tool", "desc", Map.of(), (a, r) -> new FunctionResult("ok")); - agent.addPreAnswerVerb("play", Map.of("url", "ring.wav")); + agent.addPreAnswerVerb("play", Map.of("url", "https://cdn.example.com/ring.wav")); agent.addPostAiVerb("hangup", Map.of()); agent.enableDebugEvents(); @@ -268,7 +276,11 @@ void testFullRenderingWithAllComponents() { assertNotNull(ai.get("pronounce")); assertNotNull(ai.get("params")); assertNotNull(ai.get("global_data")); - assertNotNull(ai.get("debug")); + // Debug events ride ai.params.debug_webhook_*, not a top-level ai.debug object. + assertFalse(ai.containsKey("debug")); + Map aiParams = (Map) ai.get("params"); + assertNotNull(aiParams.get("debug_webhook_url")); + assertNotNull(aiParams.get("debug_webhook_level")); assertNotNull(ai.get("SWAIG")); } diff --git a/src/test/java/com/signalwire/sdk/SecurityTest.java b/src/test/java/com/signalwire/sdk/SecurityTest.java index fe0fd7ce..02f97dd9 100644 --- a/src/test/java/com/signalwire/sdk/SecurityTest.java +++ b/src/test/java/com/signalwire/sdk/SecurityTest.java @@ -124,11 +124,28 @@ void testDifferentSessionManagersDifferentSecrets() { @Test void testDefaultExpiry() { - var sm = new SessionManager(); // default 3600 + // The no-arg default is the reference's `token_expiry_secs: int = 900` + // (session_manager.py:30) — 15 minutes, NOT an hour. Owner ruling 2026-07-27; four ports + // (ruby/java/rust/dotnet) had drifted to 3600 while go/ts/php/perl/cpp already matched. + // + // Asserting the VALUE is the point: this test previously only minted a token and validated + // it, which passes at ANY default and so could never have caught the divergence. + var sm = new SessionManager(); + assertEquals(900, sm.getTokenExpirySecs(), "expected default expiry 900"); + + // The minted token must still round-trip at the new default. String token = sm.createToken("func", "call"); assertTrue(sm.validateToken(token, "func", "call")); } + @Test + void testExplicitExpiryIsUnaffectedByTheDefault() { + // Only the DEFAULT folded to 900; an explicitly-passed value must pass through untouched + // (including the old 3600, so existing callers are unchanged). + assertEquals(3600, new SessionManager(3600).getTokenExpirySecs()); + assertEquals(60, new SessionManager(60).getTokenExpirySecs()); + } + @Test void testTokenDecodesToFiveDotFields() { var sm = new SessionManager(); diff --git a/src/test/java/com/signalwire/sdk/SwmlTest.java b/src/test/java/com/signalwire/sdk/SwmlTest.java index 6ac3b0af..f2d97b10 100644 --- a/src/test/java/com/signalwire/sdk/SwmlTest.java +++ b/src/test/java/com/signalwire/sdk/SwmlTest.java @@ -10,6 +10,7 @@ import com.signalwire.sdk.swml.Document; import com.signalwire.sdk.swml.Schema; +import com.signalwire.sdk.swml.SchemaValidationError; import com.signalwire.sdk.swml.Service; import java.util.*; import org.junit.jupiter.api.Test; @@ -318,43 +319,49 @@ void testServiceAll38Verbs() { // Call all 38 verb methods service.answer(Map.of()); - service.ai(Map.of()); - service.amazonBedrock(Map.of()); + // `ai` / `amazon_bedrock` REQUIRE a prompt object; an empty config is not a + // legal verb and the validating path now says so. + service.ai(Map.of("prompt", Map.of("text", "hi"))); + service.amazonBedrock(Map.of("prompt", Map.of("text", "hi"))); service.cond(List.of()); - service.connect(Map.of()); + // $defs/Connect is a oneOf over four device forms; the single-device form + // requires `to`, so an empty config matches none of them. + service.connect(Map.of("to", "sip:alice@example.com")); service.denoise(Map.of()); service.detectMachine(Map.of()); - service.enterQueue(Map.of()); - service.execute(Map.of()); - service.gotoLabel(Map.of()); + service.enterQueue( + Map.of("queue_name", "sales", "transfer_after_bridge", "https://ex.com/after")); + service.execute(Map.of("dest", "my_section")); + service.gotoLabel(Map.of("label", "start")); service.hangup(Map.of()); - service.joinConference(Map.of()); - service.joinRoom(Map.of()); - service.label(Map.of()); - service.liveTranscribe(Map.of()); - service.liveTranslate(Map.of()); - service.pay(Map.of()); - service.play(Map.of()); - service.prompt(Map.of()); + service.joinConference(Map.of("name", "room1")); + service.joinRoom(Map.of("name", "room1")); + service.addVerb("label", "my_label"); + service.liveTranscribe(Map.of("action", "stop")); + service.liveTranslate(Map.of("action", "stop")); + service.pay(Map.of("payment_connector_url", "https://ex.com/pay")); + service.play(Map.of("url", "say:hi")); + service.prompt(Map.of("play", "say:press 1")); service.receiveFax(Map.of()); service.record(Map.of()); service.recordCall(Map.of()); - service.request(Map.of()); + service.request(Map.of("url", "https://ex.com", "method", "GET")); service.returnVerb(Map.of()); - service.sipRefer(Map.of()); - service.sendDigits(Map.of()); - service.sendFax(Map.of()); - service.sendSms(Map.of()); + service.sipRefer(Map.of("to_uri", "sip:alice@example.com")); + service.sendDigits(Map.of("digits", "123")); + service.sendFax(Map.of("document", "https://ex.com/f.pdf")); + service.sendSms( + Map.of("to_number", "+15551112222", "from_number", "+15553334444", "body", "hi")); service.set(Map.of()); service.sleep(100); service.stopDenoise(Map.of()); service.stopRecordCall(Map.of()); service.stopTap(Map.of()); - service.switchVerb(Map.of()); - service.tap(Map.of()); - service.transfer(Map.of()); - service.unset(Map.of()); - service.userEvent(Map.of()); + service.switchVerb(Map.of("variable", "x", "case", Map.of())); + service.tap(Map.of("uri", "wss://ex.com/tap")); + service.transfer(Map.of("dest", "+15551112222")); + service.addVerb("unset", "temp_data"); + service.userEvent(Map.of("event", Map.of())); assertEquals(38, service.getDocument().getVerbs().size()); } @@ -373,11 +380,62 @@ void testServiceAuthAutoGenerated() { @Test void testServiceNullParamsHandled() { var service = new Service("test-service"); - // Should not throw + // A null config renders an empty object, which is fine for a verb with no + // required properties. service.answer(null); - service.ai(null); + service.denoise(null); var verbs = service.getDocument().getVerbs(); assertEquals(2, verbs.size()); } + + /** + * The 38 convenience verb methods validate their config, exactly like {@code addVerb}. They used + * to call the raw {@code document.addVerb}, so {@code service.ai(null)} appended an {@code ai} + * with no {@code prompt} — a document the schema rejects — while {@code service.addVerb("ai", + * Map.of())} raised. A caller could not tell the two apart from the call site. + */ + @Test + void testServiceVerbMethodsValidateLikeAddVerb() { + var service = new Service("test-service"); + assertThrows(SchemaValidationError.class, () -> service.ai(null)); + assertThrows(SchemaValidationError.class, () -> service.ai(Map.of())); + assertThrows(SchemaValidationError.class, () -> service.play(Map.of())); + assertThrows(SchemaValidationError.class, () -> service.hangup(Map.of("reasonn", "busy"))); + assertThrows(SchemaValidationError.class, () -> service.answer(Map.of("maxduration", 5))); + // Valid shapes still pass. + assertDoesNotThrow(() -> service.ai(Map.of("prompt", Map.of("text", "hi")))); + assertDoesNotThrow(() -> service.play(Map.of("url", "say:hi"))); + assertDoesNotThrow(() -> service.hangup(Map.of("reason", "busy"))); + // reason is x-sdk-widen, so an unlisted value is legal. + assertDoesNotThrow(() -> service.hangup(Map.of("reason", "done"))); + } + + /** + * A generated typed verb config validates against the same schema view the wire carries — the + * typed surface must not be an unvalidated back door. + */ + @Test + void testTypedVerbConfigIsValidated() { + var service = new Service("test-service"); + var cfg = new com.signalwire.sdk.swml.generated.ConnectConfig(); + // $defs/Connect is a oneOf over four device forms; the single-device form + // requires `to`. An empty typed config matches none of them. + assertThrows(SchemaValidationError.class, () -> service.connect(cfg)); + cfg.to = "sip:alice@example.com"; + assertDoesNotThrow(() -> service.connect(cfg)); + } + + /** + * Not every verb config is an object: {@code cond} is an ARRAY, {@code label} a STRING, {@code + * sleep} a bare integer. Validation must take the shape from the schema rather than requiring a + * Map, or it rejects legal documents. + */ + @Test + void testNonObjectVerbConfigsValidate() { + var service = new Service("test-service"); + assertDoesNotThrow(() -> service.cond(List.of())); + assertDoesNotThrow(() -> service.sleep(100)); + assertDoesNotThrow(() -> service.addVerb("label", "my_label")); + } } diff --git a/src/test/java/com/signalwire/sdk/VerbTest.java b/src/test/java/com/signalwire/sdk/VerbTest.java index 6577a727..33d0280b 100644 --- a/src/test/java/com/signalwire/sdk/VerbTest.java +++ b/src/test/java/com/signalwire/sdk/VerbTest.java @@ -23,7 +23,7 @@ void setUp() { @Test @SuppressWarnings("unchecked") void testPreAnswerVerbBeforeAnswer() { - agent.addPreAnswerVerb("play", Map.of("url", "ringback.wav")); + agent.addPreAnswerVerb("play", Map.of("url", "https://cdn.example.com/ringback.wav")); Map swml = agent.renderSwml("http://localhost:3000"); List> main = getMain(swml); // First verb should be the pre-answer play @@ -33,8 +33,8 @@ void testPreAnswerVerbBeforeAnswer() { @Test @SuppressWarnings("unchecked") void testMultiplePreAnswerVerbs() { - agent.addPreAnswerVerb("play", Map.of("url", "a.wav")); - agent.addPreAnswerVerb("play", Map.of("url", "b.wav")); + agent.addPreAnswerVerb("play", Map.of("url", "https://cdn.example.com/a.wav")); + agent.addPreAnswerVerb("play", Map.of("url", "https://cdn.example.com/b.wav")); Map swml = agent.renderSwml("http://localhost:3000"); List> main = getMain(swml); assertTrue(main.get(0).containsKey("play")); @@ -44,7 +44,7 @@ void testMultiplePreAnswerVerbs() { @Test @SuppressWarnings("unchecked") void testClearPreAnswerVerbs() { - agent.addPreAnswerVerb("play", Map.of("url", "a.wav")); + agent.addPreAnswerVerb("play", Map.of("url", "https://cdn.example.com/a.wav")); agent.clearPreAnswerVerbs(); Map swml = agent.renderSwml("http://localhost:3000"); List> main = getMain(swml); @@ -149,7 +149,7 @@ void testClearPostAiVerbs() { @Test @SuppressWarnings("unchecked") void testAnswerVerb() { - agent.addAnswerVerb("play", Map.of("url", "welcome.wav")); + agent.addAnswerVerb("play", Map.of("url", "https://cdn.example.com/welcome.wav")); Map swml = agent.renderSwml("http://localhost:3000"); List> main = getMain(swml); // The play verb should appear after answer @@ -189,7 +189,7 @@ void testRecordCallVerb() { @Test @SuppressWarnings("unchecked") void testPhaseOrdering() { - agent.addPreAnswerVerb("play", Map.of("url", "pre.wav")); + agent.addPreAnswerVerb("play", Map.of("url", "https://cdn.example.com/pre.wav")); agent.addPostAnswerVerb("sleep", 100); agent.addPostAiVerb("hangup", Map.of()); @@ -221,8 +221,8 @@ void testPhaseOrdering() { void testVerbMethodChaining() { AgentBase result = agent - .addPreAnswerVerb("play", Map.of()) - .addAnswerVerb("play", Map.of()) + .addPreAnswerVerb("play", Map.of("url", "say:hi")) + .addAnswerVerb("play", Map.of("url", "say:hi")) .addPostAnswerVerb("sleep", 100) .addPostAiVerb("hangup", Map.of()) .clearPreAnswerVerbs() diff --git a/src/test/java/com/signalwire/sdk/WebTest.java b/src/test/java/com/signalwire/sdk/WebTest.java index 396036a5..6f1db5ad 100644 --- a/src/test/java/com/signalwire/sdk/WebTest.java +++ b/src/test/java/com/signalwire/sdk/WebTest.java @@ -33,7 +33,9 @@ void testDefaultWebhookUrl() { Map swaig = (Map) ai.get("SWAIG"); List> fns = (List>) swaig.get("functions"); String url = (String) fns.get(0).get("web_hook_url"); - assertEquals("http://localhost:3000/swaig", url); + // A default tool is SECURE (A1), so its own webhook carries the ?__token= security param + // (reference agent_base.py:1096-1100). The path is what this test pins. + assertTrue(url.startsWith("http://localhost:3000/swaig?__token="), url); } @Test @@ -76,7 +78,10 @@ void testClearSwaigQueryParams() { Map swaig = (Map) ai.get("SWAIG"); List> fns = (List>) swaig.get("functions"); String url = (String) fns.get(0).get("web_hook_url"); - assertFalse(url.contains("?")); + // The cleared param is gone. The URL still has a query string because a default (secure) tool + // carries the ?__token= security param — that is the A1 contract, not a leftover query param. + assertFalse(url.contains("key=val"), url); + assertTrue(url.startsWith("http://localhost:3000/swaig?__token="), url); } // ======== Proxy URL ======== @@ -178,9 +183,11 @@ void testRoutePreservedWithProxyBase() { Map swaig = (Map) ai.get("SWAIG"); List> fns = (List>) swaig.get("functions"); String url = (String) fns.get(0).get("web_hook_url"); - assertEquals("https://xyz.lambda-url.us-east-1.on.aws/my-agent/swaig", url); + // A default tool is SECURE (A1), so ?__token= follows the path; the ROUTE is what this pins. + assertTrue( + url.startsWith("https://xyz.lambda-url.us-east-1.on.aws/my-agent/swaig?__token="), url); assertFalse( - url.endsWith(".on.aws/swaig"), + url.startsWith("https://xyz.lambda-url.us-east-1.on.aws/swaig"), "BUG REGRESSION: webhook URL lost the agent's route: " + url); } diff --git a/src/test/java/com/signalwire/sdk/agents/BedrockAgentTest.java b/src/test/java/com/signalwire/sdk/agents/BedrockAgentTest.java index 8aacd897..12e9038b 100644 --- a/src/test/java/com/signalwire/sdk/agents/BedrockAgentTest.java +++ b/src/test/java/com/signalwire/sdk/agents/BedrockAgentTest.java @@ -147,4 +147,62 @@ void testSystemPromptConstructorSeedsPrompt() { new BedrockAgent("b", "/bedrock", "Seed prompt", "matthew", 0.7, 0.9, 1024); assertEquals("Seed prompt", agent.getRawPrompt()); } + + // ------------------------------------------------------------------ + // Post-render document REWRITE — BedrockAgent.renderSwml takes the already + // rendered document and rebuilds the verb against a fixed key allowlist. + // A key the rebuild does not know about vanishes with no error, so what the + // allowlist contains is load-bearing and needs pinning. + // ------------------------------------------------------------------ + + /** + * {@code $defs/AmazonBedrockObject} is CLOSED over exactly six keys — {@code prompt}, {@code + * SWAIG}, {@code params}, {@code global_data}, {@code post_prompt}, {@code post_prompt_url}. The + * rebuild's allowlist must match that set: dropping {@code hints}/{@code languages}/{@code + * pronounce} is CORRECT here (unlike on the {@code ai} verb, where they are legal), because + * amazon_bedrock does not accept them and carrying them over would invalidate the document. + */ + @Test + @SuppressWarnings("unchecked") + void testBedrockRewriteKeepsExactlyTheSchemasSixKeys() { + BedrockAgent agent = new BedrockAgent(); + agent.setPromptText("hi"); + agent.setPostPrompt("summarize"); + agent.addHint("SignalWire"); + agent.addLanguage("English", "en-US", "rachel"); + agent.addPronunciation("SW", "SignalWire", true); + agent.updateGlobalData(Map.of("k", "v")); + + Map verb = + findVerb(mainSection(agent.renderSwml("http://localhost:3000")), "amazon_bedrock"); + assertNotNull(verb); + Map bedrock = (Map) verb.get("amazon_bedrock"); + assertTrue( + List.of("prompt", "SWAIG", "params", "global_data", "post_prompt", "post_prompt_url") + .containsAll(bedrock.keySet()), + "amazon_bedrock carries keys its closed schema rejects: " + bedrock.keySet()); + assertTrue(bedrock.containsKey("prompt")); + } + + /** + * Debug events are configured through {@code params.debug_webhook_*}, and {@code params} IS in + * the rewrite's allowlist — so the stream survives the transform. (In the TypeScript port the + * equivalent rewrite dropped the debug keys silently, making debug events unreachable on every + * Bedrock agent.) + */ + @Test + @SuppressWarnings("unchecked") + void testBedrockRewritePreservesDebugWebhookKeys() { + BedrockAgent agent = new BedrockAgent(); + agent.setPromptText("hi"); + agent.enableDebugEvents(2); + + Map verb = + findVerb(mainSection(agent.renderSwml("http://localhost:3000")), "amazon_bedrock"); + Map bedrock = (Map) verb.get("amazon_bedrock"); + Map params = (Map) bedrock.get("params"); + assertNotNull(params, "params must survive the amazon_bedrock rewrite"); + assertNotNull(params.get("debug_webhook_url")); + assertEquals(2, params.get("debug_webhook_level")); + } } diff --git a/src/test/java/com/signalwire/sdk/core/AuthHandlerTest.java b/src/test/java/com/signalwire/sdk/core/AuthHandlerTest.java index 8761aa65..732c0384 100644 --- a/src/test/java/com/signalwire/sdk/core/AuthHandlerTest.java +++ b/src/test/java/com/signalwire/sdk/core/AuthHandlerTest.java @@ -94,14 +94,41 @@ void verifyBasicAuthRejectsWrong() { @Test void verifyBearerToken() { AuthHandler h = handler("signalwire", "pw", "tok123", null, null); - assertTrue(h.verifyBearerToken(new BearerCredentials("tok123"))); - assertFalse(h.verifyBearerToken(new BearerCredentials("wrong"))); + assertTrue(h.verifyBearerToken(new BearerCredentials("Bearer", "tok123"))); + assertFalse(h.verifyBearerToken(new BearerCredentials("Bearer", "wrong"))); } @Test void verifyBearerDisabledWithoutToken() { AuthHandler h = handler("signalwire", "pw", null, null, null); - assertFalse(h.verifyBearerToken(new BearerCredentials("anything"))); + assertFalse(h.verifyBearerToken(new BearerCredentials("Bearer", "anything"))); + } + + /** + * RFC 7235 makes the auth-scheme token case-INSENSITIVE, and FastAPI's HTTPBearer — which the + * reference delegates to — lowercases before comparing. A conforming client sending `bearer` or + * `BEARER` must authenticate exactly as `Bearer` does. + */ + @Test + void bearerSchemeIsCaseInsensitiveOnTheWire() { + AuthHandler h = handler("signalwire", "pw", "tok123", null, null); + var auth = h.getFastapiDependency(true); + for (String scheme : new String[] {"Bearer", "bearer", "BEARER", "BeArEr"}) { + assertTrue( + auth.apply(Map.of("Authorization", scheme + " tok123")).authenticated(), + "scheme '" + scheme + "' must be accepted (RFC 7235: case-insensitive)"); + } + // Still rejects a wrong token and a scheme that is genuinely something else. + assertFalse(auth.apply(Map.of("Authorization", "Bearer wrong")).authenticated()); + assertFalse(auth.apply(Map.of("Authorization", "Bearerx tok123")).authenticated()); + } + + /** The carrier keeps BOTH contract fields: the scheme as sent, and the raw credential. */ + @Test + void bearerCredentialsCarriesSchemeAndCredentials() { + BearerCredentials c = new BearerCredentials("Bearer", "tok123"); + assertEquals("Bearer", c.scheme()); + assertEquals("tok123", c.credentials()); } @Test diff --git a/src/test/java/com/signalwire/sdk/relay/ActionTest.java b/src/test/java/com/signalwire/sdk/relay/ActionTest.java index ac6eed1f..1823e76a 100644 --- a/src/test/java/com/signalwire/sdk/relay/ActionTest.java +++ b/src/test/java/com/signalwire/sdk/relay/ActionTest.java @@ -153,7 +153,9 @@ void testAwaitReturnsTerminalEvent() throws Exception { @Test void testAwaitWithTimeoutReturnsNullWhenNotDone() { Action action = new Action("ctrl-1", dummyCall()); - assertNull(action.await(50)); + // await(Double) takes SECONDS (reference parity: timeout: float | None); 0.05s == the 50ms + // this previously passed as await(long). + assertNull(action.await(0.05)); } /** diff --git a/src/test/java/com/signalwire/sdk/relay/CallReferenceDefaultOverloadMockTest.java b/src/test/java/com/signalwire/sdk/relay/CallReferenceDefaultOverloadMockTest.java new file mode 100644 index 00000000..fa2028e2 --- /dev/null +++ b/src/test/java/com/signalwire/sdk/relay/CallReferenceDefaultOverloadMockTest.java @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2025 SignalWire + * + * Licensed under the MIT License. + * See LICENSE file in the project root for full license information. + */ +package com.signalwire.sdk.relay; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +/** + * Mock-relay-backed proof for the {@link Call} overloads that express the reference's OPTIONAL + * keyword params by omitting Java's trailing options bag. + * + *

      The reference declares these params keyword-only with a {@code None} default ({@code + * status_url} / {@code prompt} / {@code event}); Java folds them into a trailing {@code + * Map options}, so "the caller omitted it" is spelled as the no-bag overload. Each + * test asserts the RELAY frame the SHORT form puts on the wire is identical to the one the LONG + * form produces when the bag is passed explicitly as {@code null} — comparing against the + * explicitly-defaulted call, so forwarding some other value would fail the test. + * + *

      Assertions read the shared mock's receive journal, scoped to this test's own client, so the + * suite is parallel-safe. + */ +class CallReferenceDefaultOverloadMockTest { + + private RelayClient client; + private RelayMockTest.Harness mock; + + @BeforeEach + void setUp() { + this.mock = RelayMockTest.harness(); + this.client = + RelayClient.builder() + .project("test_proj") + .token("test_tok") + .space(mock.wsUrl()) + .contexts(List.of("default")) + .build(); + client.connect(10_000); + try { + Thread.sleep(50); + } catch (InterruptedException ignored) { + } + this.mock = mock.scopedTo(client); + } + + @AfterEach + void tearDown() { + if (client != null) { + try { + client.disconnect(); + } catch (Exception ignored) { + } + } + } + + // ── Helpers ────────────────────────────────────────────────────── + + private static Map phoneDevice() { + Map params = new LinkedHashMap<>(); + params.put("to_number", "+15551112222"); + params.put("from_number", "+15553334444"); + Map device = new LinkedHashMap<>(); + device.put("type", "phone"); + device.put("params", params); + return device; + } + + private Call dialAnswered(String tag, String callId) { + Map body = new LinkedHashMap<>(); + body.put("tag", tag); + body.put("winner_call_id", callId); + body.put("states", List.of("created", "answered")); + body.put("node_id", "node-mock-1"); + body.put("device", phoneDevice()); + body.put("delay_ms", 1); + mock.armDial(body); + + Map opts = new LinkedHashMap<>(); + opts.put("tag", tag); + List>> devices = List.of(List.of(phoneDevice())); + Call call = client.dial(devices, opts, 5_000); + assertNotNull(call, "dial did not resolve to a Call"); + return call; + } + + /** The params of the last journalled frame for {@code method}. */ + private Map lastParams(String method) { + List entries = mock.journalRecv(method); + assertFalse(entries.isEmpty(), "no " + method + " frame in journal"); + return entries.get(entries.size() - 1).params(); + } + + /** Run {@code verb}, then read the frame it produced. */ + private Map frameFor(String method, Runnable verb) { + verb.run(); + return lastParams(method); + } + + // ── The overloads ──────────────────────────────────────────────── + + /** signalwire/relay/call.py:974 — refer(device, *, status_url=None, **kwargs) */ + @Test + @DisplayName("refer(device) == refer(device, null) on the wire") + void referDefaultsOptionsToNull() { + Call call = dialAnswered("t-refer", "C-REFER"); + // The RELAY schema requires device.params, so use a well-formed SIP device spec. + Map device = + Map.of("type", "sip", "params", Map.of("to", "sip:agent@example.com")); + var longForm = frameFor(Constants.METHOD_REFER, () -> call.refer(device, null)); + var shortForm = frameFor(Constants.METHOD_REFER, () -> call.refer(device)); + assertEquals(longForm, shortForm); + assertFalse(shortForm.containsKey("status_url"), "omitted status_url must not be emitted"); + } + + /** signalwire/relay/call.py:1412 — join_room(name, *, status_url=None, **kwargs) */ + @Test + @DisplayName("joinRoom(name) == joinRoom(name, null) on the wire") + void joinRoomDefaultsOptionsToNull() { + Call call = dialAnswered("t-room", "C-ROOM"); + var longForm = frameFor(Constants.METHOD_JOIN_ROOM, () -> call.joinRoom("room-1", null)); + var shortForm = frameFor(Constants.METHOD_JOIN_ROOM, () -> call.joinRoom("room-1")); + assertEquals(longForm, shortForm); + assertFalse(shortForm.containsKey("status_url"), "omitted status_url must not be emitted"); + } + + /** signalwire/relay/call.py:1394 — live_translate(action, *, status_url=None, **kwargs) */ + @Test + @DisplayName("liveTranslate(action) == liveTranslate(action, null) on the wire") + void liveTranslateDefaultsOptionsToNull() { + Call call = dialAnswered("t-lt", "C-LT"); + Map action = Map.of("action", "start"); + var longForm = + frameFor(Constants.METHOD_LIVE_TRANSLATE, () -> call.liveTranslate(action, null)); + var shortForm = frameFor(Constants.METHOD_LIVE_TRANSLATE, () -> call.liveTranslate(action)); + assertEquals(longForm, shortForm); + assertFalse(shortForm.containsKey("status_url"), "omitted status_url must not be emitted"); + } + + /** signalwire/relay/call.py:1550 — ai_unhold(*, prompt=None, **kwargs) */ + @Test + @DisplayName("aiUnhold() == aiUnhold(null) on the wire") + void aiUnholdDefaultsOptionsToNull() { + Call call = dialAnswered("t-unhold", "C-UNHOLD"); + var longForm = frameFor(Constants.METHOD_AI_UNHOLD, () -> call.aiUnhold(null)); + var shortForm = frameFor(Constants.METHOD_AI_UNHOLD, () -> call.aiUnhold()); + assertEquals(longForm, shortForm); + assertFalse(shortForm.containsKey("prompt"), "omitted prompt must not be emitted"); + } + + /** + * signalwire/relay/call.py:1567 — user_event(*, event=None, **kwargs). + * + *

      NOTE: the authoritative RELAY schema (relay-protocol/calling.user_event.params.json, + * extracted from switchblade {@code PublicCallUserEventParams.cs}) lists {@code event} in its + * {@code required} set, while the reference declares it {@code event: str | None = None} and + * omits the key when it is None. So the all-defaults call is REJECTED by the server with {@code + * -32602 'event' is a required property} — the reference's default is unsendable. That divergence + * is reported, not papered over here; this test proves the two forms agree on the frame they + * BUILD (the surface contract), and pins the rejection so the wire behaviour is recorded. + */ + @Test + @DisplayName("userEvent() == userEvent(null); both are rejected by the wire schema") + void userEventDefaultsEventToNull() { + Call call = dialAnswered("t-ue", "C-UE"); + // Supplying the event is the sendable path, and the key rides through unchanged. + var supplied = frameFor(Constants.METHOD_USER_EVENT, () -> call.userEvent("ping")); + assertEquals("ping", supplied.get("event")); + // Both no-arg forms omit `event`, so both hit the same schema rejection — identical behaviour, + // which is what the overload has to guarantee. + var fromShort = assertThrows(RelayError.class, () -> call.userEvent()); + var fromLong = assertThrows(RelayError.class, () -> call.userEvent(null)); + assertEquals(fromLong.getMessage(), fromShort.getMessage()); + } +} diff --git a/src/test/java/com/signalwire/sdk/relay/MessageTest.java b/src/test/java/com/signalwire/sdk/relay/MessageTest.java index f4197575..50c86175 100644 --- a/src/test/java/com/signalwire/sdk/relay/MessageTest.java +++ b/src/test/java/com/signalwire/sdk/relay/MessageTest.java @@ -165,6 +165,8 @@ void testAwaitReturnsTerminalEvent() throws Exception { @Test void testAwaitWithTimeoutReturnsNullWhenNotTerminal() { Message msg = new Message("msg-123"); - assertNull(msg.await(50)); + // await(Double) takes SECONDS (reference parity: timeout: float | None); 0.05s == the 50ms + // this previously passed as await(long). + assertNull(msg.await(0.05)); } } diff --git a/src/test/java/com/signalwire/sdk/relay/RelayMockTest.java b/src/test/java/com/signalwire/sdk/relay/RelayMockTest.java index 33c17709..b0acf39c 100644 --- a/src/test/java/com/signalwire/sdk/relay/RelayMockTest.java +++ b/src/test/java/com/signalwire/sdk/relay/RelayMockTest.java @@ -47,6 +47,13 @@ public final class RelayMockTest { private static volatile Harness sharedHarness; private static volatile Throwable startupFailure; + /** + * Body of the most recent {@code /__mock__/health} response that returned HTTP 200, so a startup + * failure can quote what the server actually said (e.g. {@code schemas_loaded:0}) instead of a + * bare timeout. + */ + private static volatile String lastHealthBody; + private RelayMockTest() { // static helper } @@ -655,17 +662,29 @@ private static Harness ensureServer() { } } p.destroy(); - startupFailure = - new IllegalStateException( - "RelayMockTest: `python -m mock_relay` did not become ready within " - + STARTUP_TIMEOUT - + " on http port " - + httpPort - + " / ws port " - + wsPort - + " (clone porting-sdk next to signalwire-java so tests can find " - + "porting-sdk/test_harness/mock_relay/, or pip install the " - + "mock_relay package)"); + StringBuilder sb = new StringBuilder(); + sb.append("RelayMockTest: `python -m mock_relay` did not become ready within ") + .append(STARTUP_TIMEOUT) + .append(" on http port ") + .append(httpPort) + .append(" / ws port ") + .append(wsPort) + .append(". adjacency discovery: "); + String pkgDir = discoverPortingSdkPackage("mock_relay"); + sb.append( + pkgDir == null ? "NO adjacent porting-sdk found (PYTHONPATH not injected)" : pkgDir); + String body = lastHealthBody; + if (body != null) { + sb.append(". The server DID answer /__mock__/health but is unusable") + .append(" (readiness requires schemas_loaded>0); it said: ") + .append(body.length() > 800 ? body.substring(0, 800) + "..." : body) + .append(". A mock reporting schemas_loaded:0 is a DIFFERENT mock_relay than this") + .append(" repo's — typically a stale copy installed in an unrelated venv."); + } + sb.append(" Fix: clone porting-sdk next to signalwire-java so tests can find") + .append(" porting-sdk/test_harness/mock_relay/, or pip install THIS repo's") + .append(" mock_relay package."); + startupFailure = new IllegalStateException(sb.toString()); throw (IllegalStateException) startupFailure; } catch (IOException e) { startupFailure = @@ -765,9 +784,16 @@ private static boolean probeHealth(java.net.http.HttpClient client, String base) } byte[] body = resp.body().readAllBytes(); String text = new String(body, StandardCharsets.UTF_8); - // The health endpoint emits a JSON object containing - // "schemas_loaded"; treat any other shape as a probe failure. - return text.contains("\"schemas_loaded\""); + // A mock that answers is NOT necessarily a mock that can serve this + // suite. Readiness requires schemas_loaded > 0, not merely that the + // key is present: a mock_relay resolved from an unrelated venv (no + // relay-protocol/ schema tree adjacent) still answers 200 with + // schemas_loaded:0 and then fails every scenario. Refuse it here + // rather than diagnose it as an SDK bug later. (The REST twin of this + // bug cost a full run: 547 bogus failures, all "no route for ...", + // from a stale mock_signalwire serving 0 specs / 0 routes.) + lastHealthBody = text; + return healthIsUsable(text); } catch (IOException e) { return false; } catch (InterruptedException e) { @@ -776,6 +802,31 @@ private static boolean probeHealth(java.net.http.HttpClient client, String base) } } + /** + * Decide whether a {@code /__mock__/health} payload describes a mock_relay this suite can run + * against: {@code schemas_loaded} must be strictly positive. A mock that loaded no RELAY schemas + * answers HTTP 200 all the same and then fails every scenario. Package-private so {@link + * com.signalwire.sdk.rest.MockHealthContractTest} can pin the contract without a live server. + * + * @param healthJson the raw body of {@code GET /__mock__/health} + * @return true only when the payload declares at least one loaded schema + */ + public static boolean healthIsUsable(String healthJson) { + if (healthJson == null) { + return false; + } + java.util.regex.Matcher m = + java.util.regex.Pattern.compile("\"schemas_loaded\"\\s*:\\s*(-?\\d+)").matcher(healthJson); + if (!m.find()) { + return false; + } + try { + return Long.parseLong(m.group(1)) > 0; + } catch (NumberFormatException e) { + return false; + } + } + private static void drain(InputStream is) { if (is == null) return; try { diff --git a/src/test/java/com/signalwire/sdk/relay/RelayTest.java b/src/test/java/com/signalwire/sdk/relay/RelayTest.java index efd3946f..00307d56 100644 --- a/src/test/java/com/signalwire/sdk/relay/RelayTest.java +++ b/src/test/java/com/signalwire/sdk/relay/RelayTest.java @@ -11,6 +11,7 @@ import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -1005,6 +1006,54 @@ void messageOnCompleted() { assertEquals("Invalid", msg.getReason().orElseThrow()); } + @Test + @DisplayName("Message onCompleted fires when registered AFTER the terminal event") + void messageOnCompletedLateRegistration() { + Message msg = new Message("msg-1"); + + // Drive the race deterministically by ORDERING, not timing: resolve the + // message FIRST (the terminal event landing on the RELAY reader thread + // before the caller registers), then register. No threads, no sleeps — + // the interleaving under test is expressed directly as program order. + Map params = new HashMap<>(); + params.put("message_id", "msg-1"); + params.put("message_state", "delivered"); + + msg.updateFromEvent( + new RelayEvent.MessagingStateEvent(Constants.EVENT_MESSAGING_STATE, 0.0, params)); + assertTrue(msg.isDone(), "precondition: the message must already be resolved"); + + AtomicBoolean fired = new AtomicBoolean(false); + msg.setOnCompleted(m -> fired.set(true)); + + assertTrue( + fired.get(), + "a callback registered after the terminal event must still fire, not be dropped"); + } + + @Test + @DisplayName("Message onCompleted fires exactly once when resolve races registration") + void messageOnCompletedFiresExactlyOnce() { + Message msg = new Message("msg-1"); + + AtomicInteger fireCount = new AtomicInteger(0); + msg.setOnCompleted(m -> fireCount.incrementAndGet()); + + Map params = new HashMap<>(); + params.put("message_id", "msg-1"); + params.put("message_state", "delivered"); + RelayEvent.MessagingStateEvent event = + new RelayEvent.MessagingStateEvent(Constants.EVENT_MESSAGING_STATE, 0.0, params); + + // resolve() fires it; a second resolve must not re-fire, and the + // one-shot handoff must not let a late registration double-fire either. + msg.updateFromEvent(event); + msg.updateFromEvent(event); + msg.setOnCompleted(m -> fireCount.incrementAndGet()); + + assertEquals(2, fireCount.get(), "one fire per registered callback, never a double-fire"); + } + @Test @DisplayName("Message state listeners are notified") void messageStateListeners() { diff --git a/src/test/java/com/signalwire/sdk/rest/MockHealthContractTest.java b/src/test/java/com/signalwire/sdk/rest/MockHealthContractTest.java new file mode 100644 index 00000000..a5d1a9fa --- /dev/null +++ b/src/test/java/com/signalwire/sdk/rest/MockHealthContractTest.java @@ -0,0 +1,149 @@ +package com.signalwire.sdk.rest; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.signalwire.sdk.relay.RelayMockTest; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +/** + * Pins the mock READINESS contract: a mock server that answers {@code /__mock__/health} with HTTP + * 200 is only usable when it declares that it actually loaded its contract sources. + * + *

      Why this test exists. Both harnesses used to treat "the health JSON mentions {@code + * specs_loaded} / {@code schemas_loaded}" as ready. That is satisfiable by a mock that loaded + * NOTHING: {@code mock_signalwire} emits {@code {"status":"ok","specs_loaded":0,..., + * "total_routes":0}} — HTTP 200, well-formed, and 404 on every route — when it cannot find its + * {@code rest-apis/} spec tree. That happens whenever {@code python -m mock_signalwire} resolves to + * a copy other than this repo's (a stale install in an unrelated venv), which in turn happens + * whenever adjacency discovery finds no sibling {@code porting-sdk} and the PYTHONPATH injection is + * skipped — e.g. a git worktree checked out outside {@code ~/src/}. + * + *

      The observed cost of the old contract was a full suite reporting 547 failures, every one of + * them {@code "no route for "} raised as a {@code RestError} from SDK code. That + * reads as a mass SDK/routing regression and invites diagnoses ranging from a routing bug to a + * TOCTOU port race between concurrent harnesses. It was none of those: the environment handed the + * suite an empty server and the readiness probe waved it through. + * + *

      These are pure predicate tests over the health payload — no server, no ports, no sleeps — so + * they are deterministic and safe under the suite's class-parallel execution. + */ +@DisplayName("mock readiness contract") +class MockHealthContractTest { + + /** Verbatim health body from a mock_signalwire that could not find its rest-apis/ spec tree. */ + private static final String EMPTY_REST_HEALTH = + "{\"status\":\"ok\",\"specs_loaded\":0,\"spec_load_errors\":[{\"spec\":\"calling\"," + + "\"error\":\"spec not found: /some/venv/lib/rest-apis/calling/openapi.yaml\"}]," + + "\"total_routes\":0}"; + + /** Verbatim health body from a correctly resolved mock_signalwire. */ + private static final String GOOD_REST_HEALTH = + "{\"status\":\"ok\",\"specs_loaded\":14,\"spec_load_errors\":[],\"total_routes\":236}"; + + @Nested + @DisplayName("REST (mock_signalwire)") + class Rest { + + @Test + @DisplayName("a mock serving 0 specs / 0 routes is NOT ready") + void emptyMockIsRefused() { + assertFalse( + MockTest.healthIsUsable(EMPTY_REST_HEALTH), + "a mock_signalwire reporting specs_loaded:0 answers 200 but 404s every route; " + + "accepting it as ready is what turned a broken environment into 547 bogus " + + "SDK failures"); + } + + @Test + @DisplayName("a fully loaded mock IS ready") + void loadedMockIsAccepted() { + assertTrue(MockTest.healthIsUsable(GOOD_REST_HEALTH)); + } + + @Test + @DisplayName("specs loaded but ZERO routes registered is NOT ready") + void specsWithoutRoutesIsRefused() { + assertFalse( + MockTest.healthIsUsable( + "{\"status\":\"ok\",\"specs_loaded\":14,\"spec_load_errors\":[],\"total_routes\":0}"), + "specs that parse but register no routes still 404 everything"); + } + + @Test + @DisplayName("routes registered but ZERO specs loaded is NOT ready") + void routesWithoutSpecsIsRefused() { + assertFalse( + MockTest.healthIsUsable( + "{\"status\":\"ok\",\"specs_loaded\":0,\"spec_load_errors\":[]," + + "\"total_routes\":236}")); + } + + @Test + @DisplayName("mentioning the key is not enough — the OLD contract's exact hole") + void mereKeyPresenceIsNotReadiness() { + // The superseded probe was `text.contains("\"specs_loaded\"")`. Every string below + // satisfies that and must still be refused. + assertFalse(MockTest.healthIsUsable("{\"specs_loaded\":0,\"total_routes\":0}")); + assertFalse(MockTest.healthIsUsable("{\"specs_loaded\":\"14\",\"total_routes\":\"236\"}")); + assertFalse(MockTest.healthIsUsable("\"specs_loaded\" is a field name")); + } + + @Test + @DisplayName("a negative count is NOT ready") + void negativeCountIsRefused() { + assertFalse( + MockTest.healthIsUsable("{\"specs_loaded\":-1,\"total_routes\":-1}"), + "a negative count is nonsense, not readiness"); + } + + @Test + @DisplayName("a non-mock server answering 200 is NOT ready") + void foreignServerIsRefused() { + assertFalse(MockTest.healthIsUsable("{\"status\":\"ok\"}")); + assertFalse(MockTest.healthIsUsable("hello")); + assertFalse(MockTest.healthIsUsable("")); + assertFalse(MockTest.healthIsUsable(null)); + } + + @Test + @DisplayName("whitespace around the value does not change the verdict") + void whitespaceTolerant() { + assertTrue(MockTest.healthIsUsable("{\"specs_loaded\" : 14 , \"total_routes\" : 236 }")); + assertFalse(MockTest.healthIsUsable("{\"specs_loaded\" : 0 , \"total_routes\" : 0 }")); + } + } + + @Nested + @DisplayName("RELAY (mock_relay)") + class Relay { + + @Test + @DisplayName("a mock serving 0 schemas is NOT ready") + void emptyMockIsRefused() { + assertFalse(RelayMockTest.healthIsUsable("{\"status\":\"ok\",\"schemas_loaded\":0}")); + } + + @Test + @DisplayName("a fully loaded mock IS ready") + void loadedMockIsAccepted() { + assertTrue(RelayMockTest.healthIsUsable("{\"status\":\"ok\",\"schemas_loaded\":42}")); + } + + @Test + @DisplayName("mentioning the key is not enough — the OLD contract's exact hole") + void mereKeyPresenceIsNotReadiness() { + assertFalse(RelayMockTest.healthIsUsable("{\"schemas_loaded\":0}")); + assertFalse(RelayMockTest.healthIsUsable("\"schemas_loaded\" is a field name")); + } + + @Test + @DisplayName("a non-mock server answering 200 is NOT ready") + void foreignServerIsRefused() { + assertFalse(RelayMockTest.healthIsUsable("{\"status\":\"ok\"}")); + assertFalse(RelayMockTest.healthIsUsable(null)); + } + } +} diff --git a/src/test/java/com/signalwire/sdk/rest/MockTest.java b/src/test/java/com/signalwire/sdk/rest/MockTest.java index 8736aa05..d80cae41 100644 --- a/src/test/java/com/signalwire/sdk/rest/MockTest.java +++ b/src/test/java/com/signalwire/sdk/rest/MockTest.java @@ -46,6 +46,13 @@ public final class MockTest { private static volatile Harness sharedHarness; private static volatile Throwable startupFailure; + /** + * Body of the most recent {@code /__mock__/health} response that returned HTTP 200, so a startup + * failure can quote what the server actually said (e.g. {@code specs_loaded:0}) instead of a bare + * timeout. + */ + private static volatile String lastHealthBody; + private MockTest() { // static helper } @@ -489,15 +496,7 @@ private static Harness ensureServer() { } } p.destroy(); - startupFailure = - new IllegalStateException( - "MockTest: `python -m mock_signalwire` did not become ready within " - + STARTUP_TIMEOUT - + " on port " - + port - + " (clone porting-sdk next to signalwire-java so tests can find " - + "porting-sdk/test_harness/mock_signalwire/, or pip install the " - + "mock_signalwire package)"); + startupFailure = new IllegalStateException(notReadyMessage(port)); throw (IllegalStateException) startupFailure; } catch (IOException e) { startupFailure = @@ -558,10 +557,15 @@ private static Process spawnMockServer(int port) throws IOException { // PYTHONPATH so `python -m mock_signalwire` resolves without a // prior `pip install -e ...`. Adjacency contract: porting-sdk // next to signalwire-java in ~/src/. When the walk fails (e.g. - // porting-sdk is not adjacent), we still spawn — the child falls - // back to whatever is on the system Python's sys.path, and the - // readiness probe surfaces a clear timeout error if neither mode - // is available. + // porting-sdk is not adjacent, as in a git worktree checked out + // outside ~/src/), we still spawn — a `pip install -e` setup is a + // legitimate second mode. But the fallback is exactly how a FOREIGN + // mock_signalwire gets used: a stale copy in an unrelated venv + // resolves, loads 0 specs because its `rest-apis/` tree is missing, + // reports status:"ok", and 404s every route. That is why the + // readiness contract is `specs_loaded > 0 && total_routes > 0` + // (see healthIsUsable) rather than "the health key exists" — an + // empty mock must be refused here, not diagnosed 547 failures later. String pkgDir = discoverPortingSdkPackage("mock_signalwire"); if (pkgDir != null) { Map env = pb.environment(); @@ -599,9 +603,16 @@ private static boolean probeHealth(java.net.http.HttpClient client, String base) } byte[] body = resp.body().readAllBytes(); String text = new String(body, StandardCharsets.UTF_8); - // The health endpoint always emits a JSON object containing - // "specs_loaded"; treat any other shape as a probe failure. - return text.contains("\"specs_loaded\""); + // A mock that answers is NOT necessarily a mock that can serve this + // suite. mock_signalwire reports status:"ok" even when it loaded ZERO + // OpenAPI specs (e.g. a stale copy installed in some unrelated venv, + // whose `rest-apis/` tree is absent) — every route then 404s with + // "no route for ...", which is indistinguishable from a real routing + // bug and, historically, from a port collision. So the readiness + // contract is `specs_loaded > 0 AND total_routes > 0`, not merely + // "the key is present". A server failing that is not ours; refuse it. + lastHealthBody = text; + return healthIsUsable(text); } catch (IOException e) { return false; } catch (InterruptedException e) { @@ -610,6 +621,79 @@ private static boolean probeHealth(java.net.http.HttpClient client, String base) } } + /** + * Build the "mock never became ready" diagnostic. + * + *

      When the mock answered but was unusable, the raw health body is quoted verbatim — {@code + * specs_loaded:0} names the cause outright (a mock_signalwire resolved from somewhere without the + * {@code rest-apis/} spec tree) instead of leaving a bare timeout to be mistaken for a slow + * machine or a port collision. The resolved PYTHONPATH dir is included so it is visible whether + * adjacency discovery found porting-sdk at all. + * + * @param port the port the mock was expected on + * @return the message for the thrown {@link IllegalStateException} + */ + private static String notReadyMessage(int port) { + String pkgDir = discoverPortingSdkPackage("mock_signalwire"); + StringBuilder sb = new StringBuilder(); + sb.append("MockTest: `python -m mock_signalwire` did not become ready within ") + .append(STARTUP_TIMEOUT) + .append(" on port ") + .append(port) + .append(". adjacency discovery: ") + .append( + pkgDir == null ? "NO adjacent porting-sdk found (PYTHONPATH not injected)" : pkgDir); + String body = lastHealthBody; + if (body != null) { + sb.append(". The server DID answer /__mock__/health but is unusable") + .append(" (readiness requires specs_loaded>0 and total_routes>0); it said: ") + .append(body.length() > 800 ? body.substring(0, 800) + "..." : body); + sb.append(". A mock reporting specs_loaded:0 is a DIFFERENT mock_signalwire than this repo's") + .append(" — typically a stale copy installed in an unrelated venv, whose rest-apis/ spec") + .append(" tree is absent. Every route 404s."); + } + sb.append(" Fix: clone porting-sdk next to signalwire-java so tests can find") + .append(" porting-sdk/test_harness/mock_signalwire/, or pip install THIS repo's") + .append(" mock_signalwire package."); + return sb.toString(); + } + + /** + * Decide whether a {@code /__mock__/health} payload describes a mock this suite can actually run + * against. + * + *

      Usable means BOTH counters are strictly positive: {@code specs_loaded} (the OpenAPI specs + * the mock parsed) and {@code total_routes} (the routes it registered from them). A mock that + * loaded no specs still answers {@code {"status":"ok","specs_loaded":0,...,"total_routes":0}} + * with HTTP 200 — and then 404s every request. Treating that as ready turns a broken environment + * into hundreds of bogus assertion failures pointing at the SDK. Package-private so {@link + * MockHealthContractTest} can pin the contract without standing a server up. + * + * @param healthJson the raw body of {@code GET /__mock__/health} + * @return true only when the payload declares at least one loaded spec and one registered route + */ + static boolean healthIsUsable(String healthJson) { + if (healthJson == null) { + return false; + } + return positiveIntField(healthJson, "specs_loaded") + && positiveIntField(healthJson, "total_routes"); + } + + /** True when {@code "": } is present in {@code json} with {@code n > 0}. */ + private static boolean positiveIntField(String json, String field) { + java.util.regex.Matcher m = + java.util.regex.Pattern.compile("\"" + field + "\"\\s*:\\s*(-?\\d+)").matcher(json); + if (!m.find()) { + return false; + } + try { + return Long.parseLong(m.group(1)) > 0; + } catch (NumberFormatException e) { + return false; + } + } + private static void drain(InputStream is) { if (is == null) return; try { diff --git a/src/test/java/com/signalwire/sdk/rest/ResourceTreeReachabilityMockTest.java b/src/test/java/com/signalwire/sdk/rest/ResourceTreeReachabilityMockTest.java new file mode 100644 index 00000000..29b3c4f1 --- /dev/null +++ b/src/test/java/com/signalwire/sdk/rest/ResourceTreeReachabilityMockTest.java @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2025 SignalWire + * + * Licensed under the MIT License. + * See LICENSE file in the project root for full license information. + */ +package com.signalwire.sdk.rest; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +/** + * Behavioural proof that the client-tree accessors {@code RestClient} inherits from the generated + * {@link com.signalwire.sdk.rest.namespaces.generated.ResourceTree} are reachable from a caller and + * actually issue the right wire request. + * + *

      Why this exists: these accessors are declared on {@code ResourceTree}, not on {@code + * RestClient}, so a reflection walker that reads only {@code getDeclaredMethods()} records ZERO + * members for {@code RestClient} and the parity audit reads that as "22 missing resources." This + * test is the regression guard proving the opposite — the capability ships; only the enumerator was + * blind. If someone later flattens or removes the {@code extends ResourceTree} wiring, this goes + * red rather than silently reducing the public API to what the audit happens to see. + * + *

      Each case reaches a resource through the inherited accessor path and asserts a request lands + * on the shared mock with the expected method and path. + */ +class ResourceTreeReachabilityMockTest { + + private RestClient client; + private MockTest.Harness mock; + + @BeforeEach + void setUp() { + MockTest.Bound bound = MockTest.newClient(); + this.client = bound.client; + this.mock = bound.harness; + } + + @Test + @DisplayName("client.calling() — inherited accessor reaches the calling namespace on the wire") + void callingIsReachable() { + client + .calling() + .dial( + com.signalwire.sdk.rest.namespaces.generated.Calling.DialRequest.builder() + .extras(java.util.Map.of("url", "https://example.com/swml", "to", "+15551234567")) + .build()); + + MockTest.JournalEntry j = mock.last(); + assertEquals("POST", j.method, "method"); + assertEquals("/api/calling/calls", j.path, "path"); + } + + @Test + @DisplayName("client.fabric() — inherited accessor reaches a fabric resource on the wire") + void fabricIsReachable() { + client.fabric().subscribers().list(); + + MockTest.JournalEntry j = mock.last(); + assertEquals("GET", j.method, "method"); + assertEquals("/api/fabric/resources/subscribers", j.path, "path"); + } + + @Test + @DisplayName("client.video() — inherited accessor reaches a video resource on the wire") + void videoIsReachable() { + client.video().rooms().list(); + + MockTest.JournalEntry j = mock.last(); + assertEquals("GET", j.method, "method"); + assertEquals("/api/video/rooms", j.path, "path"); + } + + @Test + @DisplayName("client.phoneNumbers() — inherited top-level resource accessor reaches the wire") + void phoneNumbersIsReachable() { + client.phoneNumbers().list(); + + MockTest.JournalEntry j = mock.last(); + assertEquals("GET", j.method, "method"); + assertEquals("/api/relay/rest/phone_numbers", j.path, "path"); + } + + @Test + @DisplayName("every ResourceTree accessor is callable on a RestClient and returns non-null") + void everyAccessorIsNonNull() { + // The 22 client-tree accessors the parity audit reports as "missing". Reaching each one + // through the RestClient reference proves inheritance wires them all, not just the four + // exercised on the wire above. + assertNotNull(client.addresses(), "addresses"); + assertNotNull(client.calling(), "calling"); + assertNotNull(client.chat(), "chat"); + assertNotNull(client.datasphere(), "datasphere"); + assertNotNull(client.fabric(), "fabric"); + assertNotNull(client.importedNumbers(), "importedNumbers"); + assertNotNull(client.logs(), "logs"); + assertNotNull(client.lookup(), "lookup"); + assertNotNull(client.messages(), "messages"); + assertNotNull(client.mfa(), "mfa"); + assertNotNull(client.numberGroups(), "numberGroups"); + assertNotNull(client.phoneNumbers(), "phoneNumbers"); + assertNotNull(client.project(), "project"); + assertNotNull(client.projects(), "projects"); + assertNotNull(client.pubsub(), "pubsub"); + assertNotNull(client.queues(), "queues"); + assertNotNull(client.recordings(), "recordings"); + assertNotNull(client.registry(), "registry"); + assertNotNull(client.shortCodes(), "shortCodes"); + assertNotNull(client.sipProfile(), "sipProfile"); + assertNotNull(client.verifiedCallers(), "verifiedCallers"); + assertNotNull(client.video(), "video"); + } +} diff --git a/src/test/java/com/signalwire/sdk/runtime/lambda/LambdaAgentHandlerTest.java b/src/test/java/com/signalwire/sdk/runtime/lambda/LambdaAgentHandlerTest.java index 14b3caff..074bcdf1 100644 --- a/src/test/java/com/signalwire/sdk/runtime/lambda/LambdaAgentHandlerTest.java +++ b/src/test/java/com/signalwire/sdk/runtime/lambda/LambdaAgentHandlerTest.java @@ -60,6 +60,18 @@ private static Map v2Event( return event; } + /** + * Add the credential a {@code secure} tool requires: a genuinely minted {@code __token} on the + * query string and the {@code call_id} it is bound to in the body. {@code define_tool} defaults + * to secure, so a SWAIG event without these is refused before the handler runs — which is the + * point of the contract, not something these routing/decoding tests are exercising. + */ + private static Map withToolToken( + Map event, AgentBase agent, String fn, String callId) { + event.put("queryStringParameters", Map.of("__token", agent.createToolToken(fn, callId))); + return event; + } + private static AgentBase buildAgent(String route) { AgentBase agent = AgentBase.builder() @@ -141,17 +153,25 @@ void swmlWithValidAuthReturns200() { @Test @SuppressWarnings("unchecked") void swaigExecutesRegisteredTool() { + AgentBase agent = buildAgent("/"); var handler = new LambdaAgentHandler( - buildAgent("/"), + agent, envOf(Map.of("AWS_LAMBDA_FUNCTION_URL", "https://xyz.lambda-url.us-east-1.on.aws"))); Map headers = Map.of("Authorization", basicAuth("u", "p"), "Content-Type", "application/json"); String payload = GSON.toJson( Map.of( - "function", "greet", "argument", Map.of("parsed", List.of(Map.of("name", "Ada"))))); - LambdaResponse r = handler.handle(v2Event("POST", "/swaig", headers, payload)); + "function", + "greet", + "call_id", + "c1", + "argument", + Map.of("parsed", List.of(Map.of("name", "Ada"))))); + LambdaResponse r = + handler.handle( + withToolToken(v2Event("POST", "/swaig", headers, payload), agent, "greet", "c1")); assertEquals(200, r.getStatusCode()); Map body = parseBody(r); assertEquals("Hello, Ada!", body.get("response")); @@ -168,17 +188,21 @@ void swaigUnknownFunctionReturns404() { @Test void swaigBase64BodyDecoded() { - var handler = new LambdaAgentHandler(buildAgent("/"), envOf(Map.of())); + AgentBase agent = buildAgent("/"); + var handler = new LambdaAgentHandler(agent, envOf(Map.of())); Map headers = Map.of("Authorization", basicAuth("u", "p")); String json = GSON.toJson( Map.of( "function", "greet", + "call_id", + "c1", "argument", Map.of("parsed", List.of(Map.of("name", "Grace"))))); String b64 = Base64.getEncoder().encodeToString(json.getBytes(StandardCharsets.UTF_8)); - Map event = v2Event("POST", "/swaig", headers, b64); + Map event = + withToolToken(v2Event("POST", "/swaig", headers, b64), agent, "greet", "c1"); event.put("isBase64Encoded", true); LambdaResponse r = handler.handle(event); diff --git a/src/test/java/com/signalwire/sdk/security/AgentBaseNoSigningKeyTest.java b/src/test/java/com/signalwire/sdk/security/AgentBaseNoSigningKeyTest.java index 47e2aa20..c607ee56 100644 --- a/src/test/java/com/signalwire/sdk/security/AgentBaseNoSigningKeyTest.java +++ b/src/test/java/com/signalwire/sdk/security/AgentBaseNoSigningKeyTest.java @@ -12,6 +12,7 @@ import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.swaig.FunctionResult; +import com.signalwire.sdk.swaig.ToolDefinition; import java.net.ServerSocket; import java.net.URI; import java.net.http.HttpClient; @@ -51,7 +52,12 @@ void start() throws Exception { .authPassword("pass") .envProvider(name -> null) // ensure SIGNALWIRE_SIGNING_KEY isn't picked up .build(); - agent.defineTool("ping", "Test tool", Map.of(), (args, raw) -> new FunctionResult("pong")); + // secure(false): these tests isolate the WEBHOOK-SIGNATURE layer. A secure tool would also + // demand a per-call __token, so an unsigned-vs-signed comparison would be decided by the + // token check instead of the signature check it is meant to exercise. + agent.defineTool( + new ToolDefinition("ping", "Test tool", Map.of(), (args, raw) -> new FunctionResult("pong")) + .setSecure(false)); agent.serve(); client = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(5)).build(); } diff --git a/src/test/java/com/signalwire/sdk/security/AgentBaseWebhookSignatureTest.java b/src/test/java/com/signalwire/sdk/security/AgentBaseWebhookSignatureTest.java index 1ac11552..d172ee16 100644 --- a/src/test/java/com/signalwire/sdk/security/AgentBaseWebhookSignatureTest.java +++ b/src/test/java/com/signalwire/sdk/security/AgentBaseWebhookSignatureTest.java @@ -15,6 +15,7 @@ import com.signalwire.sdk.agent.AgentBase; import com.signalwire.sdk.runtime.EnvProvider; import com.signalwire.sdk.swaig.FunctionResult; +import com.signalwire.sdk.swaig.ToolDefinition; import java.net.ServerSocket; import java.net.URI; import java.net.http.HttpClient; @@ -59,7 +60,12 @@ void start() throws Exception { .authPassword("pass") .signingKey(SIGNING_KEY) .build(); - agent.defineTool("ping", "Test tool", Map.of(), (args, raw) -> new FunctionResult("pong")); + // secure(false): these tests isolate the WEBHOOK-SIGNATURE layer. A secure tool would also + // demand a per-call __token, so an unsigned-vs-signed comparison would be decided by the + // token check instead of the signature check it is meant to exercise. + agent.defineTool( + new ToolDefinition("ping", "Test tool", Map.of(), (args, raw) -> new FunctionResult("pong")) + .setSecure(false)); agent.serve(); client = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(5)).build(); } diff --git a/src/test/java/com/signalwire/sdk/security/SwaigTokenEnforcementTest.java b/src/test/java/com/signalwire/sdk/security/SwaigTokenEnforcementTest.java new file mode 100644 index 00000000..2931b1b9 --- /dev/null +++ b/src/test/java/com/signalwire/sdk/security/SwaigTokenEnforcementTest.java @@ -0,0 +1,314 @@ +package com.signalwire.sdk.security; + +import static org.junit.jupiter.api.Assertions.*; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.signalwire.sdk.agent.AgentBase; +import com.signalwire.sdk.runtime.lambda.LambdaAgentHandler; +import com.signalwire.sdk.runtime.lambda.LambdaResponse; +import com.signalwire.sdk.swaig.FunctionResult; +import com.signalwire.sdk.swaig.ToolDefinition; +import java.nio.charset.StandardCharsets; +import java.util.Base64; +import java.util.LinkedHashMap; +import java.util.Map; +import org.junit.jupiter.api.Test; + +/** + * A tool declared {@code secure} requires a valid per-call {@code __token} before its handler runs, + * on every transport the SDK exposes — the in-process HTTP {@code /swaig} endpoint, the standalone + * {@code AgentServer} route, and the AWS Lambda adapter. + * + *

      The credential and the identity it is checked against travel separately: the token rides the + * QUERY STRING, the {@code call_id} rides the POST body. A token can only be validated against a + * {@code call_id}, so a request that omits one is unvalidated and is refused exactly like a forged + * token — omitting the credential must never be weaker than presenting a wrong one. + * + *

      A refusal is a {@code 200} carrying a {@link FunctionResult} body, NOT an HTTP error status: + * the engine has no handling for a SWAIG refusal status, so the tool reports that it cannot execute + * and the model relays that to the caller. + * + *

      A tool declared {@code secure(false)} runs ungated in every one of these cases. + */ +class SwaigTokenEnforcementTest { + + private static final String USER = "u"; + private static final String PASSWORD = "p"; + private static final Gson GSON = new Gson(); + + /** The refusal text a secure tool produces when its token is absent, forged, or unvalidatable. */ + private static final String REFUSAL = + "I'm sorry, the security token for this function is invalid or expired. " + + "I cannot execute this action."; + + // ------------------------------------------------------------------ + // fixtures + // ------------------------------------------------------------------ + + /** An agent at route "/" with one secure tool and one insecure tool, both echoing a marker. */ + private static AgentBase agent() { + return agent(0); + } + + /** As {@link #agent()}, bound to {@code port} when non-zero so a listener can be started. */ + private static AgentBase agent(int port) { + AgentBase.Builder b = + AgentBase.builder().name("demo").route("/").authUser(USER).authPassword(PASSWORD); + if (port != 0) { + b = b.port(port); + } + AgentBase a = b.build(); + a.defineTool( + "say_hello", "greet", new LinkedHashMap<>(), (args, raw) -> new FunctionResult("ran")); + a.defineTool( + new ToolDefinition( + "open_tool", + "no credential required", + new LinkedHashMap<>(), + (args, raw) -> new FunctionResult("ran")) + .setSecure(false)); + return a; + } + + private static String basicAuth() { + return "Basic " + + Base64.getEncoder() + .encodeToString((USER + ":" + PASSWORD).getBytes(StandardCharsets.UTF_8)); + } + + private static String body(String fn, String callId) { + String callPart = callId == null ? "" : ",\"call_id\":\"" + callId + "\""; + return "{\"function\":\"" + fn + "\",\"argument\":{\"parsed\":[{}]}" + callPart + "}"; + } + + /** Drive the Lambda adapter's /swaig endpoint with an optional __token query parameter. */ + private static Map lambdaSwaig( + AgentBase a, String fn, String callId, String tok) { + Map event = new LinkedHashMap<>(); + event.put("rawPath", "/swaig"); + event.put("requestContext", Map.of("http", Map.of("method", "POST"))); + event.put("headers", Map.of("authorization", basicAuth(), "content-type", "application/json")); + if (tok != null) { + event.put("queryStringParameters", Map.of("__token", tok)); + } + event.put("body", body(fn, callId)); + LambdaResponse resp = new LambdaAgentHandler(a).handle(event); + Map out = new LinkedHashMap<>(); + out.put("status", resp.getStatusCode()); + out.put("body", parse(resp.getBody())); + return out; + } + + @SuppressWarnings("unchecked") + private static Map parse(String json) { + if (json == null || json.isEmpty()) return new LinkedHashMap<>(); + return GSON.fromJson(json, new TypeToken>() {}.getType()); + } + + private static String responseOf(Map reduced) { + @SuppressWarnings("unchecked") + Map b = (Map) reduced.get("body"); + Object r = b.get("response"); + return r == null ? null : r.toString(); + } + + // ================================================================== + // Transport: AWS Lambda adapter + // ================================================================== + + @Test + void lambdaSecureToolRunsWithAValidToken() { + AgentBase a = agent(); + String token = a.createToolToken("say_hello", "c1"); + assertFalse(token.isEmpty(), "the fixture needs a genuinely minted token"); + + Map out = lambdaSwaig(a, "say_hello", "c1", token); + + assertEquals(200.0, ((Number) out.get("status")).doubleValue()); + assertEquals("ran", responseOf(out), "a valid token must let the secure tool's handler run"); + } + + @Test + void lambdaSecureToolIsRefusedWithAForgedToken() { + AgentBase a = agent(); + Map out = + lambdaSwaig(a, "say_hello", "c1", tamper(a.createToolToken("say_hello", "c1"))); + + assertEquals(200.0, ((Number) out.get("status")).doubleValue(), "a refusal is 200, not 4xx"); + assertEquals(REFUSAL, responseOf(out), "a forged token must not reach the handler"); + } + + @Test + void lambdaSecureToolIsRefusedWithNoTokenAtAll() { + Map out = lambdaSwaig(agent(), "say_hello", "c1", null); + + assertEquals(200.0, ((Number) out.get("status")).doubleValue(), "a refusal is 200, not 4xx"); + assertEquals( + REFUSAL, responseOf(out), "an absent token must fail closed, exactly like a forged one"); + } + + @Test + void lambdaSecureToolIsRefusedWhenTheCallIdIsMissing() { + AgentBase a = agent(); + // A token minted for a real call, but the request body omits call_id — there is + // nothing to validate the token against, so it counts as unvalidated. + String token = a.createToolToken("say_hello", "c1"); + + Map out = lambdaSwaig(a, "say_hello", null, token); + + assertEquals(200.0, ((Number) out.get("status")).doubleValue(), "a refusal is 200, not 4xx"); + assertEquals(REFUSAL, responseOf(out), "no call_id means the token cannot be validated"); + } + + @Test + void lambdaInsecureToolRunsUngatedInEveryTokenCase() { + // valid-shaped token, forged token, no token, and no call_id — all must run. + AgentBase a = agent(); + String good = a.createToolToken("open_tool", "c1"); + + assertEquals("ran", responseOf(lambdaSwaig(a, "open_tool", "c1", good))); + assertEquals("ran", responseOf(lambdaSwaig(a, "open_tool", "c1", "not-a-token"))); + assertEquals("ran", responseOf(lambdaSwaig(a, "open_tool", "c1", null))); + assertEquals("ran", responseOf(lambdaSwaig(a, "open_tool", null, null))); + } + + // ================================================================== + // Transport: the in-process HTTP /swaig endpoint (Service) + // ================================================================== + + /** Flip the last character of a base64url token envelope: same shape, broken signature. */ + private static String tamper(String token) { + char last = token.charAt(token.length() - 1); + return token.substring(0, token.length() - 1) + (last == 'A' ? 'B' : 'A'); + } + + @Test + void httpSecureToolRunsWithAValidToken() throws Exception { + Map out = + HttpProbe.swaig("say_hello", "c1", a -> a.createToolToken("say_hello", "c1")); + + assertEquals(200, out.get("status")); + assertEquals("ran", responseOf(out), "a valid token must let the secure tool's handler run"); + } + + @Test + void httpSecureToolIsRefusedWithAForgedToken() throws Exception { + Map out = + HttpProbe.swaig("say_hello", "c1", a -> tamper(a.createToolToken("say_hello", "c1"))); + + assertEquals(200, out.get("status"), "a refusal is 200, not 4xx"); + assertEquals(REFUSAL, responseOf(out), "a forged token must not reach the handler"); + } + + @Test + void httpSecureToolIsRefusedWithNoTokenAtAll() throws Exception { + Map out = HttpProbe.swaig("say_hello", "c1", null); + + assertEquals(200, out.get("status"), "a refusal is 200, not 4xx"); + assertEquals( + REFUSAL, responseOf(out), "an absent token must fail closed, exactly like a forged one"); + } + + @Test + void httpSecureToolIsRefusedWhenTheCallIdIsMissing() throws Exception { + // A token minted for a real call, but the body omits call_id — nothing to check it against. + Map out = + HttpProbe.swaig("say_hello", null, a -> a.createToolToken("say_hello", "c1")); + + assertEquals(200, out.get("status"), "a refusal is 200, not 4xx"); + assertEquals(REFUSAL, responseOf(out), "no call_id means the token cannot be validated"); + } + + @Test + void httpInsecureToolRunsUngatedInEveryTokenCase() throws Exception { + assertEquals( + "ran", + responseOf(HttpProbe.swaig("open_tool", "c1", a -> a.createToolToken("open_tool", "c1")))); + assertEquals("ran", responseOf(HttpProbe.swaig("open_tool", "c1", a -> "not-a-token"))); + assertEquals("ran", responseOf(HttpProbe.swaig("open_tool", "c1", null))); + assertEquals("ran", responseOf(HttpProbe.swaig("open_tool", null, null))); + } + + // ================================================================== + // The seam the transports compose their verdict from + // ================================================================== + + /** + * {@code validateToolToken} is the published seam every transport's check bottoms out in, so its + * verdict table is the one that matters. The refusal BODY is asserted through the transports + * above; the core decision is asserted here. + */ + @Test + void theTokenSeamAcceptsOnlyAGenuineTokenAndCallIdPair() { + AgentBase a = agent(); + String token = a.createToolToken("say_hello", "c1"); + + assertTrue(a.validateToolToken("say_hello", token, "c1"), "a valid pair proceeds"); + assertFalse(a.validateToolToken("say_hello", token, "other"), "wrong call_id is refused"); + assertFalse(a.validateToolToken("say_hello", token, null), "absent call_id is refused"); + assertFalse(a.validateToolToken("say_hello", null, "c1"), "absent token is refused"); + assertFalse(a.validateToolToken("say_hello", "junk", "c1"), "forged token is refused"); + assertFalse( + a.validateToolToken("unregistered", token, "c1"), "an unknown tool never validates"); + } + + /** The secure flag is what gates the check at all — an insecure tool is never asked. */ + @Test + void onlyASecureToolIsGated() { + AgentBase a = agent(); + assertTrue(a.getTools().get("say_hello").isSecure(), "define_tool defaults to secure"); + assertFalse(a.getTools().get("open_tool").isSecure(), "setSecure(false) opts out"); + } + + /** + * Drives a real {@link com.signalwire.sdk.swml.Service} HTTP listener on an ephemeral port. + * + *

      The agent is built INSIDE the probe because the listening port is a build-time property, and + * a token minted before the build would belong to a different {@link SessionManager}. The caller + * therefore hands in a token-minting step rather than a pre-built agent. + */ + private static final class HttpProbe { + /** Mints the request's {@code __token} from the very agent that will serve the request. */ + interface TokenSource { + String tokenFor(AgentBase agent); + } + + static Map swaig(String fn, String callId, TokenSource tokens) + throws Exception { + int port; + try (java.net.ServerSocket s = new java.net.ServerSocket(0)) { + port = s.getLocalPort(); + } + AgentBase a = agent(port); + String tok = tokens == null ? null : tokens.tokenFor(a); + a.run(); + try { + String query = tok == null ? "" : "?__token=" + java.net.URLEncoder.encode(tok, "UTF-8"); + java.net.HttpURLConnection c = + (java.net.HttpURLConnection) + java.net + .URI + .create("http://127.0.0.1:" + port + "/swaig" + query) + .toURL() + .openConnection(); + c.setRequestMethod("POST"); + c.setDoOutput(true); + c.setRequestProperty("Authorization", basicAuth()); + c.setRequestProperty("Content-Type", "application/json"); + c.getOutputStream().write(body(fn, callId).getBytes(StandardCharsets.UTF_8)); + + int status = c.getResponseCode(); + java.io.InputStream in = status < 400 ? c.getInputStream() : c.getErrorStream(); + String text = in == null ? "" : new String(in.readAllBytes(), StandardCharsets.UTF_8); + + Map out = new LinkedHashMap<>(); + out.put("status", status); + out.put("body", parse(text)); + return out; + } finally { + a.stop(); + } + } + } +} diff --git a/src/test/java/com/signalwire/sdk/security/WebhookFilterTest.java b/src/test/java/com/signalwire/sdk/security/WebhookFilterTest.java index 0ac1ee65..fb5bf829 100644 --- a/src/test/java/com/signalwire/sdk/security/WebhookFilterTest.java +++ b/src/test/java/com/signalwire/sdk/security/WebhookFilterTest.java @@ -337,6 +337,12 @@ private static final class Handler implements InvocationHandler { this.stream = new ByteArrayInputStream(req.body); } + // JdkObsolete: the servlet contract declares + // HttpServletRequest.getRequestURL() as returning StringBuffer, and this is a + // dynamic proxy for that interface — the JDK reflects the declared return type + // and would ClassCastException on a StringBuilder. The obsolete type is forced + // by the interface we are implementing, not chosen. + @SuppressWarnings("JdkObsolete") @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { String name = method.getName(); diff --git a/src/test/java/com/signalwire/sdk/skills/DatasphereSkillTest.java b/src/test/java/com/signalwire/sdk/skills/DatasphereSkillTest.java index 773d5d87..2c907437 100644 --- a/src/test/java/com/signalwire/sdk/skills/DatasphereSkillTest.java +++ b/src/test/java/com/signalwire/sdk/skills/DatasphereSkillTest.java @@ -108,6 +108,44 @@ void testServerlessSwaigFunctionsReturned() { assertTrue(fns.get(0).containsKey("data_map")); } + /** + * The engine reads ONLY "params" and "headers" off a webhook object (mod_openai/actions.c:735-739 + * -- there is no read of "body" anywhere), and it expands ${formatted_results} from the "foreach" + * block. This asserts on the EMITTED PAYLOAD rather than on construction, because the + * construction assertions above passed happily while both fields were wrong. + */ + @Test + @SuppressWarnings("unchecked") + void testServerlessWebhookCarriesParamsAndForeach() { + DatasphereServerlessSkill skill = new DatasphereServerlessSkill(); + skill.setup(dsParams()); + + Map dataMap = + (Map) skill.getSwaigFunctions().get(0).get("data_map"); + List> webhooks = (List>) dataMap.get("webhooks"); + assertEquals(1, webhooks.size()); + Map webhook = webhooks.get(0); + + // The search payload must ride on "params" -- a "body" key is silently dropped by the engine. + assertFalse( + webhook.containsKey("body"), + "webhook must not carry a body key; the engine never reads it"); + Map params = (Map) webhook.get("params"); + assertNotNull(params, "webhook must carry params"); + assertEquals("${args.query}", params.get("query_string")); + assertEquals("doc-789", params.get("document_id")); + assertTrue(params.containsKey("count")); + assertTrue(params.containsKey("distance")); + + // ${formatted_results} in the output is only populated by a foreach block. + Map foreach = (Map) webhook.get("foreach"); + assertNotNull(foreach, "webhook must carry a foreach block to populate ${formatted_results}"); + assertEquals("chunks", foreach.get("input_key")); + assertEquals("formatted_results", foreach.get("output_key")); + assertTrue(foreach.containsKey("max")); + assertTrue(((String) foreach.get("append")).contains("${this.text}")); + } + @Test void testServerlessGlobalData() { DatasphereServerlessSkill skill = new DatasphereServerlessSkill(); diff --git a/src/test/java/com/signalwire/sdk/skills/SpiderSkillTest.java b/src/test/java/com/signalwire/sdk/skills/SpiderSkillTest.java index 4b803d26..fde4fc7a 100644 --- a/src/test/java/com/signalwire/sdk/skills/SpiderSkillTest.java +++ b/src/test/java/com/signalwire/sdk/skills/SpiderSkillTest.java @@ -3,7 +3,14 @@ import static org.junit.jupiter.api.Assertions.*; import com.signalwire.sdk.skills.builtin.SpiderSkill; +import com.signalwire.sdk.swaig.FunctionResult; import com.signalwire.sdk.swaig.ToolDefinition; +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpServer; +import java.io.IOException; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.nio.charset.StandardCharsets; import java.util.*; import org.junit.jupiter.api.Test; @@ -53,4 +60,158 @@ void testToolsHaveDescriptions() { assertFalse(td.getDescription().isEmpty()); } } + + // ======== remove_xpaths (reference spider/skill.py:191-199, :313-319) ======== + // The reference drops SEVEN element subtrees via lxml drop_tree before + // calling text_content(). Anything it does not drop reaches the LLM as + // "scraped content", so the set is a behavioural contract, not decoration. + + private static final List REFERENCE_REMOVE_XPATHS = + List.of("//script", "//style", "//nav", "//header", "//footer", "//aside", "//noscript"); + + @Test + void testRemoveXpathsIsPrefilledWithTheReferenceDefaults() { + assertEquals(REFERENCE_REMOVE_XPATHS, new SpiderSkill().getRemoveXpaths()); + } + + @Test + void testSetupOverridesRemoveXpaths() { + SpiderSkill skill = new SpiderSkill(); + skill.setup(Map.of("remove_xpaths", List.of("//aside"))); + assertEquals(List.of("//aside"), skill.getRemoveXpaths()); + } + + /** + * The load-bearing test. Every element the reference drops must have its TEXT CONTENT absent from + * the scraped output — not just its tag stripped. A port that only flattens tags leaks + * nav/header/footer/aside/noscript prose into the model's context. + */ + @Test + void testScrapeDropsEveryRemovedElementSubtree() throws Exception { + String html = + "" + + "" + + "

      HEADERTEXT
      " + + "" + + "" + // Deliberately NOT "NOSCRIPTTEXT": that string CONTAINS "SCRIPTTEXT", + // so a noscript leak would masquerade as a script leak and the two + // element types could not be told apart. + + "" + + "

      KEEPTEXT

      " + + "
      FOOTERTEXT
      " + + ""; + try (PageServer page = PageServer.serving(html)) { + String out = scrape(new SpiderSkill(), page.url()); + + assertTrue(out.contains("KEEPTEXT"), "real page prose must survive: " + out); + for (String leaked : + List.of( + "SCRIPTTEXT", + "STYLETEXT", + "NAVTEXT", + "HEADERTEXT", + "FOOTERTEXT", + "ASIDETEXT", + "NOSCRIPTONLYTEXT")) { + assertFalse( + out.contains(leaked), + "removed element's text content leaked into scraped output: " + leaked + " in " + out); + } + // alert(1)'s body is inside