Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "4.30.0"
".": "4.31.0"
}
6 changes: 3 additions & 3 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 921
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/telnyx%2Ftelnyx-48b62d9be2d62c641c09ba1a692da8a718cfa795003139c97d796b70e12645f8.yml
openapi_spec_hash: 06e030c491261f11bc45549101637763
config_hash: 345b0db1d5e341d0c1efea2ed01f53b7
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/telnyx%2Ftelnyx-cfd489bbb67075950668dda5fa30e2d2a40940f826b68be2101bfe5fcf4fe2c6.yml
openapi_spec_hash: 0e628bb4b2ebb80659d4e2e18094db05
config_hash: f988dc81794e1f58a39055ee99dac184
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 4.31.0 (2026-02-13)

Full Changelog: [v4.30.0...v4.31.0](https://github.com/team-telnyx/telnyx-python/compare/v4.30.0...v4.31.0)

### Features

* Add Label parameter to Dial Conference Participant endpoint ([2443fdd](https://github.com/team-telnyx/telnyx-python/commit/2443fddd6c4be617855d06e06987cc31ddcd7182))

## 4.30.0 (2026-02-13)

Full Changelog: [v4.29.0...v4.30.0](https://github.com/team-telnyx/telnyx-python/compare/v4.29.0...v4.30.0)
Expand Down
12 changes: 6 additions & 6 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -939,9 +939,9 @@ Types:

```python
from telnyx.types.ai import (
MissionData,
MissionCreateResponse,
MissionRetrieveResponse,
MissionListResponse,
MissionListEventsResponse,
MissionUpdateMissionResponse,
)
Expand All @@ -951,7 +951,7 @@ Methods:

- <code title="post /ai/missions">client.ai.missions.<a href="./src/telnyx/resources/ai/missions/missions.py">create</a>(\*\*<a href="src/telnyx/types/ai/mission_create_params.py">params</a>) -> <a href="./src/telnyx/types/ai/mission_create_response.py">MissionCreateResponse</a></code>
- <code title="get /ai/missions/{mission_id}">client.ai.missions.<a href="./src/telnyx/resources/ai/missions/missions.py">retrieve</a>(mission_id) -> <a href="./src/telnyx/types/ai/mission_retrieve_response.py">MissionRetrieveResponse</a></code>
- <code title="get /ai/missions">client.ai.missions.<a href="./src/telnyx/resources/ai/missions/missions.py">list</a>(\*\*<a href="src/telnyx/types/ai/mission_list_params.py">params</a>) -> <a href="./src/telnyx/types/ai/mission_data.py">SyncDefaultFlatPagination[MissionData]</a></code>
- <code title="get /ai/missions">client.ai.missions.<a href="./src/telnyx/resources/ai/missions/missions.py">list</a>(\*\*<a href="src/telnyx/types/ai/mission_list_params.py">params</a>) -> <a href="./src/telnyx/types/ai/mission_list_response.py">SyncDefaultFlatPagination[MissionListResponse]</a></code>
- <code title="post /ai/missions/{mission_id}/clone">client.ai.missions.<a href="./src/telnyx/resources/ai/missions/missions.py">clone_mission</a>(mission_id) -> object</code>
- <code title="delete /ai/missions/{mission_id}">client.ai.missions.<a href="./src/telnyx/resources/ai/missions/missions.py">delete_mission</a>(mission_id) -> None</code>
- <code title="get /ai/missions/events">client.ai.missions.<a href="./src/telnyx/resources/ai/missions/missions.py">list_events</a>(\*\*<a href="src/telnyx/types/ai/mission_list_events_params.py">params</a>) -> <a href="./src/telnyx/types/ai/mission_list_events_response.py">SyncDefaultFlatPagination[MissionListEventsResponse]</a></code>
Expand All @@ -963,11 +963,12 @@ Types:

```python
from telnyx.types.ai.missions import (
MissionRunData,
RunCreateResponse,
RunRetrieveResponse,
RunUpdateResponse,
RunListResponse,
RunCancelRunResponse,
RunListRunsResponse,
RunPauseRunResponse,
RunResumeRunResponse,
)
Expand All @@ -978,9 +979,9 @@ Methods:
- <code title="post /ai/missions/{mission_id}/runs">client.ai.missions.runs.<a href="./src/telnyx/resources/ai/missions/runs/runs.py">create</a>(mission_id, \*\*<a href="src/telnyx/types/ai/missions/run_create_params.py">params</a>) -> <a href="./src/telnyx/types/ai/missions/run_create_response.py">RunCreateResponse</a></code>
- <code title="get /ai/missions/{mission_id}/runs/{run_id}">client.ai.missions.runs.<a href="./src/telnyx/resources/ai/missions/runs/runs.py">retrieve</a>(run_id, \*, mission_id) -> <a href="./src/telnyx/types/ai/missions/run_retrieve_response.py">RunRetrieveResponse</a></code>
- <code title="patch /ai/missions/{mission_id}/runs/{run_id}">client.ai.missions.runs.<a href="./src/telnyx/resources/ai/missions/runs/runs.py">update</a>(run_id, \*, mission_id, \*\*<a href="src/telnyx/types/ai/missions/run_update_params.py">params</a>) -> <a href="./src/telnyx/types/ai/missions/run_update_response.py">RunUpdateResponse</a></code>
- <code title="get /ai/missions/{mission_id}/runs">client.ai.missions.runs.<a href="./src/telnyx/resources/ai/missions/runs/runs.py">list</a>(mission_id, \*\*<a href="src/telnyx/types/ai/missions/run_list_params.py">params</a>) -> <a href="./src/telnyx/types/ai/missions/mission_run_data.py">SyncDefaultFlatPagination[MissionRunData]</a></code>
- <code title="get /ai/missions/{mission_id}/runs">client.ai.missions.runs.<a href="./src/telnyx/resources/ai/missions/runs/runs.py">list</a>(mission_id, \*\*<a href="src/telnyx/types/ai/missions/run_list_params.py">params</a>) -> <a href="./src/telnyx/types/ai/missions/run_list_response.py">SyncDefaultFlatPagination[RunListResponse]</a></code>
- <code title="post /ai/missions/{mission_id}/runs/{run_id}/cancel">client.ai.missions.runs.<a href="./src/telnyx/resources/ai/missions/runs/runs.py">cancel_run</a>(run_id, \*, mission_id) -> <a href="./src/telnyx/types/ai/missions/run_cancel_run_response.py">RunCancelRunResponse</a></code>
- <code title="get /ai/missions/runs">client.ai.missions.runs.<a href="./src/telnyx/resources/ai/missions/runs/runs.py">list_runs</a>(\*\*<a href="src/telnyx/types/ai/missions/run_list_runs_params.py">params</a>) -> <a href="./src/telnyx/types/ai/missions/mission_run_data.py">SyncDefaultFlatPagination[MissionRunData]</a></code>
- <code title="get /ai/missions/runs">client.ai.missions.runs.<a href="./src/telnyx/resources/ai/missions/runs/runs.py">list_runs</a>(\*\*<a href="src/telnyx/types/ai/missions/run_list_runs_params.py">params</a>) -> <a href="./src/telnyx/types/ai/missions/run_list_runs_response.py">SyncDefaultFlatPagination[RunListRunsResponse]</a></code>
- <code title="post /ai/missions/{mission_id}/runs/{run_id}/pause">client.ai.missions.runs.<a href="./src/telnyx/resources/ai/missions/runs/runs.py">pause_run</a>(run_id, \*, mission_id) -> <a href="./src/telnyx/types/ai/missions/run_pause_run_response.py">RunPauseRunResponse</a></code>
- <code title="post /ai/missions/{mission_id}/runs/{run_id}/resume">client.ai.missions.runs.<a href="./src/telnyx/resources/ai/missions/runs/runs.py">resume_run</a>(run_id, \*, mission_id) -> <a href="./src/telnyx/types/ai/missions/run_resume_run_response.py">RunResumeRunResponse</a></code>

Expand Down Expand Up @@ -1008,7 +1009,6 @@ Types:

```python
from telnyx.types.ai.missions.runs import (
PlanStepData,
PlanCreateResponse,
PlanRetrieveResponse,
PlanAddStepsToPlanResponse,
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "telnyx"
version = "4.30.0"
version = "4.31.0"
description = "Telnyx API SDK for global Voice, SMS, MMS, WhatsApp, Fax, Wireless IoT, SIP Trunking, and Call Control."
dynamic = ["readme"]
license = "MIT"
Expand Down
2 changes: 1 addition & 1 deletion src/telnyx/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "telnyx"
__version__ = "4.30.0" # x-release-please-version
__version__ = "4.31.0" # x-release-please-version
14 changes: 7 additions & 7 deletions src/telnyx/resources/ai/missions/missions.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
KnowledgeBasesResourceWithStreamingResponse,
AsyncKnowledgeBasesResourceWithStreamingResponse,
)
from ....types.ai.mission_data import MissionData
from ....types.ai.mission_list_response import MissionListResponse
from ....types.ai.mission_create_response import MissionCreateResponse
from ....types.ai.mission_retrieve_response import MissionRetrieveResponse
from ....types.ai.mission_list_events_response import MissionListEventsResponse
Expand Down Expand Up @@ -193,7 +193,7 @@ def list(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
) -> SyncDefaultFlatPagination[MissionData]:
) -> SyncDefaultFlatPagination[MissionListResponse]:
"""
List all missions for the organization

Expand All @@ -212,7 +212,7 @@ def list(
"""
return self._get_api_list(
"/ai/missions",
page=SyncDefaultFlatPagination[MissionData],
page=SyncDefaultFlatPagination[MissionListResponse],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
Expand All @@ -226,7 +226,7 @@ def list(
mission_list_params.MissionListParams,
),
),
model=MissionData,
model=MissionListResponse,
)

def clone_mission(
Expand Down Expand Up @@ -523,7 +523,7 @@ def list(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
) -> AsyncPaginator[MissionData, AsyncDefaultFlatPagination[MissionData]]:
) -> AsyncPaginator[MissionListResponse, AsyncDefaultFlatPagination[MissionListResponse]]:
"""
List all missions for the organization

Expand All @@ -542,7 +542,7 @@ def list(
"""
return self._get_api_list(
"/ai/missions",
page=AsyncDefaultFlatPagination[MissionData],
page=AsyncDefaultFlatPagination[MissionListResponse],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
Expand All @@ -556,7 +556,7 @@ def list(
mission_list_params.MissionListParams,
),
),
model=MissionData,
model=MissionListResponse,
)

async def clone_mission(
Expand Down
27 changes: 14 additions & 13 deletions src/telnyx/resources/ai/missions/runs/runs.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,11 @@
from .....pagination import SyncDefaultFlatPagination, AsyncDefaultFlatPagination
from ....._base_client import AsyncPaginator, make_request_options
from .....types.ai.missions import run_list_params, run_create_params, run_update_params, run_list_runs_params
from .....types.ai.missions.mission_run_data import MissionRunData
from .....types.ai.missions.run_list_response import RunListResponse
from .....types.ai.missions.run_create_response import RunCreateResponse
from .....types.ai.missions.run_update_response import RunUpdateResponse
from .....types.ai.missions.run_retrieve_response import RunRetrieveResponse
from .....types.ai.missions.run_list_runs_response import RunListRunsResponse
from .....types.ai.missions.run_pause_run_response import RunPauseRunResponse
from .....types.ai.missions.run_cancel_run_response import RunCancelRunResponse
from .....types.ai.missions.run_resume_run_response import RunResumeRunResponse
Expand Down Expand Up @@ -229,7 +230,7 @@ def list(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
) -> SyncDefaultFlatPagination[MissionRunData]:
) -> SyncDefaultFlatPagination[RunListResponse]:
"""
List all runs for a specific mission

Expand All @@ -250,7 +251,7 @@ def list(
raise ValueError(f"Expected a non-empty value for `mission_id` but received {mission_id!r}")
return self._get_api_list(
f"/ai/missions/{mission_id}/runs",
page=SyncDefaultFlatPagination[MissionRunData],
page=SyncDefaultFlatPagination[RunListResponse],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
Expand All @@ -265,7 +266,7 @@ def list(
run_list_params.RunListParams,
),
),
model=MissionRunData,
model=RunListResponse,
)

def cancel_run(
Expand Down Expand Up @@ -316,7 +317,7 @@ def list_runs(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
) -> SyncDefaultFlatPagination[MissionRunData]:
) -> SyncDefaultFlatPagination[RunListRunsResponse]:
"""
List recent runs across all missions

Expand All @@ -335,7 +336,7 @@ def list_runs(
"""
return self._get_api_list(
"/ai/missions/runs",
page=SyncDefaultFlatPagination[MissionRunData],
page=SyncDefaultFlatPagination[RunListRunsResponse],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
Expand All @@ -350,7 +351,7 @@ def list_runs(
run_list_runs_params.RunListRunsParams,
),
),
model=MissionRunData,
model=RunListRunsResponse,
)

def pause_run(
Expand Down Expand Up @@ -600,7 +601,7 @@ def list(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
) -> AsyncPaginator[MissionRunData, AsyncDefaultFlatPagination[MissionRunData]]:
) -> AsyncPaginator[RunListResponse, AsyncDefaultFlatPagination[RunListResponse]]:
"""
List all runs for a specific mission

Expand All @@ -621,7 +622,7 @@ def list(
raise ValueError(f"Expected a non-empty value for `mission_id` but received {mission_id!r}")
return self._get_api_list(
f"/ai/missions/{mission_id}/runs",
page=AsyncDefaultFlatPagination[MissionRunData],
page=AsyncDefaultFlatPagination[RunListResponse],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
Expand All @@ -636,7 +637,7 @@ def list(
run_list_params.RunListParams,
),
),
model=MissionRunData,
model=RunListResponse,
)

async def cancel_run(
Expand Down Expand Up @@ -687,7 +688,7 @@ def list_runs(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
) -> AsyncPaginator[MissionRunData, AsyncDefaultFlatPagination[MissionRunData]]:
) -> AsyncPaginator[RunListRunsResponse, AsyncDefaultFlatPagination[RunListRunsResponse]]:
"""
List recent runs across all missions

Expand All @@ -706,7 +707,7 @@ def list_runs(
"""
return self._get_api_list(
"/ai/missions/runs",
page=AsyncDefaultFlatPagination[MissionRunData],
page=AsyncDefaultFlatPagination[RunListRunsResponse],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
Expand All @@ -721,7 +722,7 @@ def list_runs(
run_list_runs_params.RunListRunsParams,
),
),
model=MissionRunData,
model=RunListRunsResponse,
)

async def pause_run(
Expand Down
12 changes: 12 additions & 0 deletions src/telnyx/resources/texml/accounts/conferences/participants.py
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,7 @@ def participants(
early_media: bool | Omit = omit,
end_conference_on_exit: bool | Omit = omit,
from_: str | Omit = omit,
label: str | Omit = omit,
machine_detection: Literal["Enable", "DetectMessageEnd"] | Omit = omit,
machine_detection_silence_timeout: int | Omit = omit,
machine_detection_speech_end_threshold: int | Omit = omit,
Expand Down Expand Up @@ -356,6 +357,10 @@ def participants(
from_: The phone number of the party that initiated the call. Phone numbers are
formatted with a `+` and country code.

label: A unique label for the participant that will be added to the conference. The
label can be used to reference the participant for updates via the TeXML REST
API.

machine_detection: Whether to detect if a human or an answering machine picked up the call. Use
`Enable` if you would like to ne notified as soon as the called party is
identified. Use `DetectMessageEnd`, if you would like to leave a message on an
Expand Down Expand Up @@ -460,6 +465,7 @@ def participants(
"early_media": early_media,
"end_conference_on_exit": end_conference_on_exit,
"from_": from_,
"label": label,
"machine_detection": machine_detection,
"machine_detection_silence_timeout": machine_detection_silence_timeout,
"machine_detection_speech_end_threshold": machine_detection_speech_end_threshold,
Expand Down Expand Up @@ -758,6 +764,7 @@ async def participants(
early_media: bool | Omit = omit,
end_conference_on_exit: bool | Omit = omit,
from_: str | Omit = omit,
label: str | Omit = omit,
machine_detection: Literal["Enable", "DetectMessageEnd"] | Omit = omit,
machine_detection_silence_timeout: int | Omit = omit,
machine_detection_speech_end_threshold: int | Omit = omit,
Expand Down Expand Up @@ -858,6 +865,10 @@ async def participants(
from_: The phone number of the party that initiated the call. Phone numbers are
formatted with a `+` and country code.

label: A unique label for the participant that will be added to the conference. The
label can be used to reference the participant for updates via the TeXML REST
API.

machine_detection: Whether to detect if a human or an answering machine picked up the call. Use
`Enable` if you would like to ne notified as soon as the called party is
identified. Use `DetectMessageEnd`, if you would like to leave a message on an
Expand Down Expand Up @@ -962,6 +973,7 @@ async def participants(
"early_media": early_media,
"end_conference_on_exit": end_conference_on_exit,
"from_": from_,
"label": label,
"machine_detection": machine_detection,
"machine_detection_silence_timeout": machine_detection_silence_timeout,
"machine_detection_speech_end_threshold": machine_detection_speech_end_threshold,
Expand Down
2 changes: 1 addition & 1 deletion src/telnyx/types/ai/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
from .bucket_ids import BucketIDs as BucketIDs
from .hangup_tool import HangupTool as HangupTool
from .conversation import Conversation as Conversation
from .mission_data import MissionData as MissionData
from .assistant_tool import AssistantTool as AssistantTool
from .retrieval_tool import RetrievalTool as RetrievalTool
from .voice_settings import VoiceSettings as VoiceSettings
Expand Down Expand Up @@ -36,6 +35,7 @@
from .cluster_list_response import ClusterListResponse as ClusterListResponse
from .embedding_list_params import EmbeddingListParams as EmbeddingListParams
from .mission_create_params import MissionCreateParams as MissionCreateParams
from .mission_list_response import MissionListResponse as MissionListResponse
from .widget_settings_param import WidgetSettingsParam as WidgetSettingsParam
from .background_task_status import BackgroundTaskStatus as BackgroundTaskStatus
from .cluster_compute_params import ClusterComputeParams as ClusterComputeParams
Expand Down
29 changes: 26 additions & 3 deletions src/telnyx/types/ai/mission_create_response.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,33 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from typing import Dict, Optional
from datetime import datetime
from typing_extensions import Literal

from ..._models import BaseModel
from .mission_data import MissionData

__all__ = ["MissionCreateResponse"]
__all__ = ["MissionCreateResponse", "Data"]


class Data(BaseModel):
created_at: datetime

execution_mode: Literal["external", "managed"]

mission_id: str

name: str

updated_at: datetime

description: Optional[str] = None

instructions: Optional[str] = None

metadata: Optional[Dict[str, object]] = None

model: Optional[str] = None


class MissionCreateResponse(BaseModel):
data: MissionData
data: Data
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@

from ..._models import BaseModel

__all__ = ["MissionData"]
__all__ = ["MissionListResponse"]


class MissionData(BaseModel):
class MissionListResponse(BaseModel):
created_at: datetime

execution_mode: Literal["external", "managed"]
Expand Down
Loading