From 8d572764dd636d6b7a9577a6a5d70516ce193bdf Mon Sep 17 00:00:00 2001 From: Devon-White Date: Mon, 27 Apr 2026 08:26:55 -0400 Subject: [PATCH] Doc updates to sync with Python SDK --- .../python/agents/agent-base/index.mdx | 4 + .../agents/agent-base/reset-contexts.mdx | 40 ++++++++++ .../agents/context-builder/context/index.mdx | 3 + .../context/set-initial-step.mdx | 45 +++++++++++ .../python/agents/context-builder/index.mdx | 4 + .../python/agents/context-builder/reset.mdx | 43 ++++++++++ .../python/rest/phone-numbers/index.mdx | 78 ++++++++++++++++++- .../rest/phone-numbers/set-ai-agent.mdx | 49 ++++++++++++ .../rest/phone-numbers/set-call-flow.mdx | 55 +++++++++++++ .../phone-numbers/set-cxml-application.mdx | 50 ++++++++++++ .../rest/phone-numbers/set-cxml-webhook.mdx | 66 ++++++++++++++++ .../phone-numbers/set-relay-application.mdx | 49 ++++++++++++ .../rest/phone-numbers/set-relay-topic.mdx | 54 +++++++++++++ .../rest/phone-numbers/set-swml-webhook.mdx | 51 ++++++++++++ .../products/server-sdks/sdk-source-sync.json | 4 +- 15 files changed, 591 insertions(+), 4 deletions(-) create mode 100644 fern/products/server-sdks/pages/reference/python/agents/agent-base/reset-contexts.mdx create mode 100644 fern/products/server-sdks/pages/reference/python/agents/context-builder/context/set-initial-step.mdx create mode 100644 fern/products/server-sdks/pages/reference/python/agents/context-builder/reset.mdx create mode 100644 fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-ai-agent.mdx create mode 100644 fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-call-flow.mdx create mode 100644 fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-cxml-application.mdx create mode 100644 fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-cxml-webhook.mdx create mode 100644 fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-relay-application.mdx create mode 100644 fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-relay-topic.mdx create mode 100644 fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-swml-webhook.mdx diff --git a/fern/products/server-sdks/pages/reference/python/agents/agent-base/index.mdx b/fern/products/server-sdks/pages/reference/python/agents/agent-base/index.mdx index 945b5a8e8..8ed0eb538 100644 --- a/fern/products/server-sdks/pages/reference/python/agents/agent-base/index.mdx +++ b/fern/products/server-sdks/pages/reference/python/agents/agent-base/index.mdx @@ -57,6 +57,7 @@ max-toc-depth: 3 [registersipusername]: /docs/server-sdks/reference/python/agents/agent-base/register-sip-username [registerswaigfunction]: /docs/server-sdks/reference/python/agents/agent-base/register-swaig-function [removeskill]: /docs/server-sdks/reference/python/agents/agent-base/remove-skill +[resetcontexts]: /docs/server-sdks/reference/python/agents/agent-base/reset-contexts [run]: /docs/server-sdks/reference/python/agents/agent-base/run [serve]: /docs/server-sdks/reference/python/agents/agent-base/serve [serverless]: /docs/server-sdks/reference/python/agents/agent-base/serverless @@ -526,6 +527,9 @@ agent.run() Unload a skill from the agent. + + Remove all contexts from the agent, returning it to a no-contexts state. + Smart entry point that auto-detects the runtime environment and starts the agent accordingly. diff --git a/fern/products/server-sdks/pages/reference/python/agents/agent-base/reset-contexts.mdx b/fern/products/server-sdks/pages/reference/python/agents/agent-base/reset-contexts.mdx new file mode 100644 index 000000000..bd16472d8 --- /dev/null +++ b/fern/products/server-sdks/pages/reference/python/agents/agent-base/reset-contexts.mdx @@ -0,0 +1,40 @@ +--- +title: "reset_contexts" +slug: /reference/python/agents/agent-base/reset-contexts +description: Remove all contexts from the agent, returning it to a no-contexts state. +max-toc-depth: 3 +--- + +[ref-agentbase]: /docs/server-sdks/reference/python/agents/agent-base +[contextbuilderreset]: /docs/server-sdks/reference/python/agents/context-builder/reset +[setdynamicconfig]: /docs/server-sdks/reference/python/agents/agent-base/set-dynamic-config-callback + +Remove all contexts from the agent, returning it to a no-contexts state. This is a +convenience wrapper around [`define_contexts().reset()`][contextbuilderreset]. + +Use it in a [dynamic config callback][setdynamicconfig] when you need to rebuild +contexts from scratch for a specific request. + +## **Parameters** + +None. + +## **Returns** + +[`AgentBase`][ref-agentbase] -- Self for method chaining. + +## **Example** + +```python {5} +from signalwire import AgentBase + +def on_dynamic_config(query, body, headers, agent): + if query.get("transfer"): + agent.reset_contexts() + ctx = agent.define_contexts().add_context("default") + ctx.add_step("route").set_text("Route the caller.") + +agent = AgentBase(name="router", route="/router") +agent.set_dynamic_config_callback(on_dynamic_config) +agent.serve() +``` diff --git a/fern/products/server-sdks/pages/reference/python/agents/context-builder/context/index.mdx b/fern/products/server-sdks/pages/reference/python/agents/context-builder/context/index.mdx index 9d0a58665..371820335 100644 --- a/fern/products/server-sdks/pages/reference/python/agents/context-builder/context/index.mdx +++ b/fern/products/server-sdks/pages/reference/python/agents/context-builder/context/index.mdx @@ -90,6 +90,9 @@ You obtain a Context by calling `add_context()` on a ContextBuilder or by callin Set whether to completely replace the system prompt when entering this context. + + Set which step the context starts on when entered. + Set whether to truncate conversation history when entering this context. diff --git a/fern/products/server-sdks/pages/reference/python/agents/context-builder/context/set-initial-step.mdx b/fern/products/server-sdks/pages/reference/python/agents/context-builder/context/set-initial-step.mdx new file mode 100644 index 000000000..f909d0c5e --- /dev/null +++ b/fern/products/server-sdks/pages/reference/python/agents/context-builder/context/set-initial-step.mdx @@ -0,0 +1,45 @@ +--- +title: "set_initial_step" +slug: /reference/python/agents/context-builder/context/set-initial-step +description: Set which step the context starts on when entered. +max-toc-depth: 3 +--- + +[ref-context]: /docs/server-sdks/reference/python/agents/context-builder/context +[addstep]: /docs/server-sdks/reference/python/agents/context-builder/context/add-step + +Set which step the context starts on when entered. By default, a context starts on +its first step (index `0`). When a context has a preamble step that should only run +on first entry -- for example, a greeting -- later entries via `change_context` can +skip it by setting `initial_step` to a different step name. + +`initial_step` is honoured both at conversation creation (when the context is first +activated) and when switching to this context via `change_context` during the +conversation. + +## **Parameters** + + + Name of the step to start on. Must exist in this context's + [step list][addstep]; validated by `ContextBuilder.validate()`. + + +## **Returns** + +[`Context`][ref-context] -- Self for method chaining. + +## **Example** + +```python {7} +from signalwire import AgentBase + +agent = AgentBase(name="support", route="/support") +contexts = agent.define_contexts() + +ctx = contexts.add_context("support") +ctx.add_step("greeting").set_text("Welcome the caller to support.") +ctx.add_step("triage").set_text("Ask what they need help with.") +ctx.set_initial_step("triage") # skip greeting on re-entry + +agent.serve() +``` diff --git a/fern/products/server-sdks/pages/reference/python/agents/context-builder/index.mdx b/fern/products/server-sdks/pages/reference/python/agents/context-builder/index.mdx index 20218b4de..5e9e9d422 100644 --- a/fern/products/server-sdks/pages/reference/python/agents/context-builder/index.mdx +++ b/fern/products/server-sdks/pages/reference/python/agents/context-builder/index.mdx @@ -10,6 +10,7 @@ max-toc-depth: 3 [agentbase]: /docs/server-sdks/reference/python/agents/agent-base [addcontext]: /docs/server-sdks/reference/python/agents/context-builder/add-context [getcontext]: /docs/server-sdks/reference/python/agents/context-builder/get-context +[reset]: /docs/server-sdks/reference/python/agents/context-builder/reset [todict]: /docs/server-sdks/reference/python/agents/context-builder/to-dict [validate]: /docs/server-sdks/reference/python/agents/context-builder/validate @@ -45,6 +46,9 @@ automatically. Retrieve an existing context by name. + + Remove all contexts, returning the builder to its initial state. + Convert all contexts to a dictionary for SWML generation. diff --git a/fern/products/server-sdks/pages/reference/python/agents/context-builder/reset.mdx b/fern/products/server-sdks/pages/reference/python/agents/context-builder/reset.mdx new file mode 100644 index 000000000..5076a7c87 --- /dev/null +++ b/fern/products/server-sdks/pages/reference/python/agents/context-builder/reset.mdx @@ -0,0 +1,43 @@ +--- +title: "reset" +slug: /reference/python/agents/context-builder/reset +description: Remove all contexts, returning the builder to its initial state. +max-toc-depth: 3 +--- + +[contextbuilder]: /docs/server-sdks/reference/python/agents/context-builder +[resetcontexts]: /docs/server-sdks/reference/python/agents/agent-base/reset-contexts +[setdynamicconfig]: /docs/server-sdks/reference/python/agents/agent-base/set-dynamic-config-callback + +Remove all contexts from the builder, returning it to its initial empty state. Use +this in a [dynamic config callback][setdynamicconfig] when you need to rebuild +contexts from scratch for a specific request -- for example, skipping a greeting +context on transfers. + +For convenience at the agent level, see +[`AgentBase.reset_contexts()`][resetcontexts], which wraps `define_contexts().reset()`. + +## **Parameters** + +None. + +## **Returns** + +[`ContextBuilder`][contextbuilder] -- Self for method chaining. + +## **Example** + +```python {6} +from signalwire import AgentBase + +def on_dynamic_config(query, body, headers, agent): + if query.get("transfer"): + # Wipe the default contexts and rebuild for transfer flow + agent.define_contexts().reset() + ctx = agent.define_contexts().add_context("default") + ctx.add_step("route").set_text("Route the caller.") + +agent = AgentBase(name="router", route="/router") +agent.set_dynamic_config_callback(on_dynamic_config) +agent.serve() +``` diff --git a/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/index.mdx b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/index.mdx index d654ad1a3..1822c0220 100644 --- a/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/index.mdx +++ b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/index.mdx @@ -1,7 +1,7 @@ --- title: "Phone Numbers" slug: /reference/python/rest/phone-numbers -description: "Search and manage phone numbers." +description: "Search and manage phone numbers, and bind inbound calls to handlers." max-toc-depth: 3 --- @@ -12,10 +12,19 @@ max-toc-depth: 3 [update]: /docs/server-sdks/reference/python/rest/phone-numbers/update [delete]: /docs/server-sdks/reference/python/rest/phone-numbers/delete [search]: /docs/server-sdks/reference/python/rest/phone-numbers/search +[setswml]: /docs/server-sdks/reference/python/rest/phone-numbers/set-swml-webhook +[setcxml]: /docs/server-sdks/reference/python/rest/phone-numbers/set-cxml-webhook +[setcxmlapp]: /docs/server-sdks/reference/python/rest/phone-numbers/set-cxml-application +[setai]: /docs/server-sdks/reference/python/rest/phone-numbers/set-ai-agent +[setflow]: /docs/server-sdks/reference/python/rest/phone-numbers/set-call-flow +[setrelayapp]: /docs/server-sdks/reference/python/rest/phone-numbers/set-relay-application +[setrelaytopic]: /docs/server-sdks/reference/python/rest/phone-numbers/set-relay-topic Search for available phone numbers, purchase them, and manage the numbers in your SignalWire project. This resource extends the standard CRUD pattern with a `search()` -method for discovering available numbers and uses PUT for updates. +method for discovering available numbers, uses PUT for updates, and provides typed +helpers for binding inbound calls to a handler (SWML webhook, cXML webhook, AI agent, +call flow, RELAY application/topic). Access via `client.phone_numbers` on a [`RestClient`][restclient] instance. @@ -35,6 +44,8 @@ for number in available.get("data", []): ## **Methods** +### Standard CRUD + List phone numbers owned by the project. @@ -55,3 +66,66 @@ for number in available.get("data", []): Search for available phone numbers to purchase. + +### Typed Binding Helpers + +Each helper is a one-line wrapper over [`update`][update] that sets `call_handler` to +the right value and populates the handler-specific companion field for you. Pass extra +keyword arguments through to `update` for fields the helper doesn't name explicitly. +Setting a binding auto-materializes the matching Fabric resource on the server. + + + + Route inbound calls to an SWML webhook URL. + + + Route inbound calls to a cXML (LAML) webhook. + + + Route inbound calls to an existing cXML application by ID. + + + Route inbound calls to an AI Agent Fabric resource by ID. + + + Route inbound calls to a Call Flow by ID. + + + Route inbound calls to a named RELAY application. + + + Route inbound calls to a RELAY topic. + + + +## **PhoneCallHandler enum** + +For callers passing `call_handler` directly to [`update`][update], the +`PhoneCallHandler` enum provides typed values. Each member is a `str` subclass, so +passing the enum member serializes to the wire value without `.value` indirection. + +```python +from signalwire.rest import PhoneCallHandler + +client.phone_numbers.update( + "phone-number-id", + call_handler=PhoneCallHandler.AI_AGENT, + call_ai_agent_id="ai-agent-id", +) +``` + +| Enum member | Wire value | Companion field | Auto-creates | +|--------------------|----------------------|----------------------------|---------------------| +| `RELAY_SCRIPT` | `relay_script` | `call_relay_script_url` | `swml_webhook` | +| `LAML_WEBHOOKS` | `laml_webhooks` | `call_request_url` | `cxml_webhook` | +| `LAML_APPLICATION` | `laml_application` | `call_laml_application_id` | `cxml_application` | +| `AI_AGENT` | `ai_agent` | `call_ai_agent_id` | `ai_agent` | +| `CALL_FLOW` | `call_flow` | `call_flow_id` | `call_flow` | +| `RELAY_APPLICATION`| `relay_application` | `call_relay_application` | `relay_application` | +| `RELAY_TOPIC` | `relay_topic` | `call_relay_topic` | (routes via RELAY) | + + +`LAML_WEBHOOKS` (wire value `laml_webhooks`) produces a **cXML** handler, not a +generic webhook. For SWML, use `RELAY_SCRIPT` -- or, more conveniently, the +[`set_swml_webhook`][setswml] helper. + diff --git a/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-ai-agent.mdx b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-ai-agent.mdx new file mode 100644 index 000000000..9eeb55374 --- /dev/null +++ b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-ai-agent.mdx @@ -0,0 +1,49 @@ +--- +title: "set_ai_agent" +slug: /reference/python/rest/phone-numbers/set-ai-agent +description: Route inbound calls to an AI Agent Fabric resource by ID. +max-toc-depth: 3 +--- + +[update]: /docs/server-sdks/reference/python/rest/phone-numbers/update + +Route inbound calls on this phone number to an existing AI Agent Fabric resource by +its ID. + +This is a typed wrapper over [`update`][update] that sets `call_handler` to +`ai_agent` and populates `call_ai_agent_id` for you. + +## **Parameters** + + + ID of the phone number to bind. + + + + ID of the AI Agent Fabric resource to route calls to. + + + + Additional fields forwarded to `update`. + + +## **Returns** + +`dict` -- The updated phone number resource. + +## **Example** + +```python {9} +from signalwire.rest import RestClient + +client = RestClient( + project="your-project-id", + token="your-api-token", + host="your-space.signalwire.com", +) + +client.phone_numbers.set_ai_agent( + "phone-number-id", + "ai-agent-id", +) +``` diff --git a/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-call-flow.mdx b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-call-flow.mdx new file mode 100644 index 000000000..07eee8926 --- /dev/null +++ b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-call-flow.mdx @@ -0,0 +1,55 @@ +--- +title: "set_call_flow" +slug: /reference/python/rest/phone-numbers/set-call-flow +description: Route inbound calls to a Call Flow by ID. +max-toc-depth: 3 +--- + +[update]: /docs/server-sdks/reference/python/rest/phone-numbers/update + +Route inbound calls on this phone number to an existing Call Flow by its ID. + +This is a typed wrapper over [`update`][update] that sets `call_handler` to +`call_flow` and populates `call_flow_id` for you. + +## **Parameters** + + + ID of the phone number to bind. + + + + ID of the Call Flow to route calls to. + + + + Which Call Flow version to invoke. Accepts `"working_copy"` or + `"current_deployed"`. Defaults to the server's current deployed version when + omitted. + + + + Additional fields forwarded to `update`. + + +## **Returns** + +`dict` -- The updated phone number resource. + +## **Example** + +```python {9} +from signalwire.rest import RestClient + +client = RestClient( + project="your-project-id", + token="your-api-token", + host="your-space.signalwire.com", +) + +client.phone_numbers.set_call_flow( + "phone-number-id", + "call-flow-id", + version="working_copy", +) +``` diff --git a/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-cxml-application.mdx b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-cxml-application.mdx new file mode 100644 index 000000000..21505341e --- /dev/null +++ b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-cxml-application.mdx @@ -0,0 +1,50 @@ +--- +title: "set_cxml_application" +slug: /reference/python/rest/phone-numbers/set-cxml-application +description: Route inbound calls to an existing cXML application by ID. +max-toc-depth: 3 +--- + +[update]: /docs/server-sdks/reference/python/rest/phone-numbers/update + +Route inbound calls on this phone number to an existing cXML (LAML) application by +its ID. The server auto-creates a `cxml_application` Fabric resource referencing the +application. + +This is a typed wrapper over [`update`][update] that sets `call_handler` to +`laml_application` and populates `call_laml_application_id` for you. + +## **Parameters** + + + ID of the phone number to bind. + + + + ID of the cXML application to route calls to. + + + + Additional fields forwarded to `update`. + + +## **Returns** + +`dict` -- The updated phone number resource. + +## **Example** + +```python {9} +from signalwire.rest import RestClient + +client = RestClient( + project="your-project-id", + token="your-api-token", + host="your-space.signalwire.com", +) + +client.phone_numbers.set_cxml_application( + "phone-number-id", + "cxml-application-id", +) +``` diff --git a/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-cxml-webhook.mdx b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-cxml-webhook.mdx new file mode 100644 index 000000000..73b228f05 --- /dev/null +++ b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-cxml-webhook.mdx @@ -0,0 +1,66 @@ +--- +title: "set_cxml_webhook" +slug: /reference/python/rest/phone-numbers/set-cxml-webhook +description: Route inbound calls to a cXML (LAML) webhook. +max-toc-depth: 3 +--- + +[update]: /docs/server-sdks/reference/python/rest/phone-numbers/update + +Route inbound calls on this phone number to a cXML (Twilio-compat / LAML) webhook. +Despite the wire value `laml_webhooks` being plural, this creates a single +`cxml_webhook` Fabric resource on the server. + +This is a typed wrapper over [`update`][update] that sets `call_handler` to +`laml_webhooks` and populates the URL fields for you. + + +For SWML webhooks, use +[`set_swml_webhook`](/docs/server-sdks/reference/python/rest/phone-numbers/set-swml-webhook) +instead. + + +## **Parameters** + + + ID of the phone number to bind. + + + + Primary cXML webhook URL. + + + + URL invoked when the primary URL fails. + + + + URL that receives call-status updates. + + + + Additional fields forwarded to `update`. + + +## **Returns** + +`dict` -- The updated phone number resource. + +## **Example** + +```python {9} +from signalwire.rest import RestClient + +client = RestClient( + project="your-project-id", + token="your-api-token", + host="your-space.signalwire.com", +) + +client.phone_numbers.set_cxml_webhook( + "phone-number-id", + "https://example.com/cxml", + fallback_url="https://example.com/cxml-fallback", + status_callback_url="https://example.com/status", +) +``` diff --git a/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-relay-application.mdx b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-relay-application.mdx new file mode 100644 index 000000000..a579d0754 --- /dev/null +++ b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-relay-application.mdx @@ -0,0 +1,49 @@ +--- +title: "set_relay_application" +slug: /reference/python/rest/phone-numbers/set-relay-application +description: Route inbound calls to a named RELAY application. +max-toc-depth: 3 +--- + +[update]: /docs/server-sdks/reference/python/rest/phone-numbers/update + +Route inbound calls on this phone number to a named RELAY application. The server +auto-creates a `relay_application` Fabric resource referencing the application name. + +This is a typed wrapper over [`update`][update] that sets `call_handler` to +`relay_application` and populates `call_relay_application` for you. + +## **Parameters** + + + ID of the phone number to bind. + + + + Name of the RELAY application to route calls to. + + + + Additional fields forwarded to `update`. + + +## **Returns** + +`dict` -- The updated phone number resource. + +## **Example** + +```python {9} +from signalwire.rest import RestClient + +client = RestClient( + project="your-project-id", + token="your-api-token", + host="your-space.signalwire.com", +) + +client.phone_numbers.set_relay_application( + "phone-number-id", + "my-relay-app", +) +``` diff --git a/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-relay-topic.mdx b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-relay-topic.mdx new file mode 100644 index 000000000..393c7760b --- /dev/null +++ b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-relay-topic.mdx @@ -0,0 +1,54 @@ +--- +title: "set_relay_topic" +slug: /reference/python/rest/phone-numbers/set-relay-topic +description: Route inbound calls to a RELAY topic. +max-toc-depth: 3 +--- + +[update]: /docs/server-sdks/reference/python/rest/phone-numbers/update + +Route inbound calls on this phone number to a RELAY topic. RELAY clients subscribed +to the topic will receive the inbound call event. + +This is a typed wrapper over [`update`][update] that sets `call_handler` to +`relay_topic` and populates `call_relay_topic` for you. + +## **Parameters** + + + ID of the phone number to bind. + + + + RELAY topic name. + + + + URL that receives status updates for calls routed via this topic. + + + + Additional fields forwarded to `update`. + + +## **Returns** + +`dict` -- The updated phone number resource. + +## **Example** + +```python {9} +from signalwire.rest import RestClient + +client = RestClient( + project="your-project-id", + token="your-api-token", + host="your-space.signalwire.com", +) + +client.phone_numbers.set_relay_topic( + "phone-number-id", + "office", + status_callback_url="https://example.com/status", +) +``` diff --git a/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-swml-webhook.mdx b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-swml-webhook.mdx new file mode 100644 index 000000000..db09592aa --- /dev/null +++ b/fern/products/server-sdks/pages/reference/python/rest/phone-numbers/set-swml-webhook.mdx @@ -0,0 +1,51 @@ +--- +title: "set_swml_webhook" +slug: /reference/python/rest/phone-numbers/set-swml-webhook +description: Route inbound calls to an SWML webhook URL. +max-toc-depth: 3 +--- + +[update]: /docs/server-sdks/reference/python/rest/phone-numbers/update + +Route inbound calls on this phone number to an SWML webhook URL. Your backend returns +an SWML document per call. The server auto-creates a `swml_webhook` Fabric resource +keyed off this URL. + +This is a typed wrapper over [`update`][update] that sets `call_handler` to +`relay_script` and populates `call_relay_script_url` for you. + +## **Parameters** + + + ID of the phone number to bind. + + + + Webhook URL that returns SWML. The server keys the auto-created Fabric resource off + this value. + + + + Additional fields forwarded to `update` (e.g. `name`, `call_fallback_url`). + + +## **Returns** + +`dict` -- The updated phone number resource. + +## **Example** + +```python {9} +from signalwire.rest import RestClient + +client = RestClient( + project="your-project-id", + token="your-api-token", + host="your-space.signalwire.com", +) + +client.phone_numbers.set_swml_webhook( + "phone-number-id", + "https://example.com/swml", +) +``` diff --git a/fern/products/server-sdks/sdk-source-sync.json b/fern/products/server-sdks/sdk-source-sync.json index 3d6076acd..c7c922135 100644 --- a/fern/products/server-sdks/sdk-source-sync.json +++ b/fern/products/server-sdks/sdk-source-sync.json @@ -5,8 +5,8 @@ "repository": "https://github.com/signalwire/signalwire-python.git", "local_path": "temp/signalwire-python", "status": "active", - "synced_commit": "89f01d3ceb8a928c8a2cd2338e68c407a95ebf47", - "synced_at": "2026-04-08" + "synced_commit": "572ec08cfa36cd9287b3c38b64a07f961c261c38", + "synced_at": "2026-04-27" }, "typescript": { "repository": "https://github.com/signalwire/signalwire-typescript.git",