diff --git a/fishjam/_openapi_client/api/recordings/list_recordings.py b/fishjam/_openapi_client/api/recordings/list_recordings.py index b62b930..b23294c 100644 --- a/fishjam/_openapi_client/api/recordings/list_recordings.py +++ b/fishjam/_openapi_client/api/recordings/list_recordings.py @@ -8,12 +8,14 @@ from ...models.error import Error from ...models.list_recordings_metadata import ListRecordingsMetadata from ...models.recording_list_response import RecordingListResponse +from ...models.recording_status import RecordingStatus from ...types import UNSET, Response, Unset def _get_kwargs( *, metadata: ListRecordingsMetadata | Unset = UNSET, + status: RecordingStatus | Unset = UNSET, ) -> dict[str, Any]: params: dict[str, Any] = {} @@ -23,6 +25,12 @@ def _get_kwargs( if not isinstance(json_metadata, Unset): params.update(json_metadata) + json_status: str | Unset = UNSET + if not isinstance(status, Unset): + json_status = status.value + + params["status"] = json_status + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} _kwargs: dict[str, Any] = { @@ -68,13 +76,15 @@ def sync_detailed( *, client: AuthenticatedClient, metadata: ListRecordingsMetadata | Unset = UNSET, + status: RecordingStatus | Unset = UNSET, ) -> Response[Error | RecordingListResponse]: """List recordings - List recordings for the tenant, optionally filtered by metadata. + List recordings for the tenant, optionally filtered by metadata and status. Args: metadata (ListRecordingsMetadata | Unset): + status (RecordingStatus | Unset): Lifecycle status of a recording Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -86,6 +96,7 @@ def sync_detailed( kwargs = _get_kwargs( metadata=metadata, + status=status, ) response = client.get_httpx_client().request( @@ -99,13 +110,15 @@ def sync( *, client: AuthenticatedClient, metadata: ListRecordingsMetadata | Unset = UNSET, + status: RecordingStatus | Unset = UNSET, ) -> Error | RecordingListResponse | None: """List recordings - List recordings for the tenant, optionally filtered by metadata. + List recordings for the tenant, optionally filtered by metadata and status. Args: metadata (ListRecordingsMetadata | Unset): + status (RecordingStatus | Unset): Lifecycle status of a recording Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -118,6 +131,7 @@ def sync( return sync_detailed( client=client, metadata=metadata, + status=status, ).parsed @@ -125,13 +139,15 @@ async def asyncio_detailed( *, client: AuthenticatedClient, metadata: ListRecordingsMetadata | Unset = UNSET, + status: RecordingStatus | Unset = UNSET, ) -> Response[Error | RecordingListResponse]: """List recordings - List recordings for the tenant, optionally filtered by metadata. + List recordings for the tenant, optionally filtered by metadata and status. Args: metadata (ListRecordingsMetadata | Unset): + status (RecordingStatus | Unset): Lifecycle status of a recording Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -143,6 +159,7 @@ async def asyncio_detailed( kwargs = _get_kwargs( metadata=metadata, + status=status, ) response = await client.get_async_httpx_client().request(**kwargs) @@ -154,13 +171,15 @@ async def asyncio( *, client: AuthenticatedClient, metadata: ListRecordingsMetadata | Unset = UNSET, + status: RecordingStatus | Unset = UNSET, ) -> Error | RecordingListResponse | None: """List recordings - List recordings for the tenant, optionally filtered by metadata. + List recordings for the tenant, optionally filtered by metadata and status. Args: metadata (ListRecordingsMetadata | Unset): + status (RecordingStatus | Unset): Lifecycle status of a recording Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -174,5 +193,6 @@ async def asyncio( await asyncio_detailed( client=client, metadata=metadata, + status=status, ) ).parsed diff --git a/fishjam/_openapi_client/models/__init__.py b/fishjam/_openapi_client/models/__init__.py index 1a8af5f..ba6ee03 100644 --- a/fishjam/_openapi_client/models/__init__.py +++ b/fishjam/_openapi_client/models/__init__.py @@ -30,6 +30,7 @@ from .recording_config import RecordingConfig from .recording_config_metadata_type_0 import RecordingConfigMetadataType0 from .recording_details_response import RecordingDetailsResponse +from .recording_file import RecordingFile from .recording_list_response import RecordingListResponse from .recording_metadata_type_0 import RecordingMetadataType0 from .recording_status import RecordingStatus @@ -93,6 +94,7 @@ "RecordingConfig", "RecordingConfigMetadataType0", "RecordingDetailsResponse", + "RecordingFile", "RecordingListResponse", "RecordingMetadataType0", "RecordingStatus", diff --git a/fishjam/_openapi_client/models/recording.py b/fishjam/_openapi_client/models/recording.py index b4c2c51..acc983b 100644 --- a/fishjam/_openapi_client/models/recording.py +++ b/fishjam/_openapi_client/models/recording.py @@ -11,6 +11,7 @@ if TYPE_CHECKING: from ..models.composition_source import CompositionSource + from ..models.recording_file import RecordingFile from ..models.recording_metadata_type_0 import RecordingMetadataType0 @@ -22,6 +23,8 @@ class Recording: """A recording and its current lifecycle status Attributes: + files (list[RecordingFile]): Media files of the recording, in playback order. Empty until the recording is + `available`. id (str): Assigned recording id source (CompositionSource): Recording source coming from composition status (RecordingStatus): Lifecycle status of a recording @@ -29,6 +32,7 @@ class Recording: recordings """ + files: list[RecordingFile] id: str source: CompositionSource status: RecordingStatus @@ -38,6 +42,11 @@ class Recording: def to_dict(self) -> dict[str, Any]: from ..models.recording_metadata_type_0 import RecordingMetadataType0 + files = [] + for files_item_data in self.files: + files_item = files_item_data.to_dict() + files.append(files_item) + id = self.id source = self.source.to_dict() @@ -55,6 +64,7 @@ def to_dict(self) -> dict[str, Any]: field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) field_dict.update({ + "files": files, "id": id, "source": source, "status": status, @@ -67,9 +77,17 @@ def to_dict(self) -> dict[str, Any]: @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.composition_source import CompositionSource + from ..models.recording_file import RecordingFile from ..models.recording_metadata_type_0 import RecordingMetadataType0 d = dict(src_dict) + files = [] + _files = d.pop("files") + for files_item_data in _files: + files_item = RecordingFile.from_dict(files_item_data) + + files.append(files_item) + id = d.pop("id") source = CompositionSource.from_dict(d.pop("source")) @@ -94,6 +112,7 @@ def _parse_metadata(data: object) -> None | RecordingMetadataType0 | Unset: metadata = _parse_metadata(d.pop("metadata", UNSET)) recording = cls( + files=files, id=id, source=source, status=status, diff --git a/fishjam/_openapi_client/models/recording_file.py b/fishjam/_openapi_client/models/recording_file.py new file mode 100644 index 0000000..b4f8a12 --- /dev/null +++ b/fishjam/_openapi_client/models/recording_file.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="RecordingFile") + + +@_attrs_define +class RecordingFile: + """A single media file of a recording + + Attributes: + url (str): Public URL the file is served at + """ + + url: str + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + url = self.url + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({ + "url": url, + }) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + url = d.pop("url") + + recording_file = cls( + url=url, + ) + + recording_file.additional_properties = d + return recording_file + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/pyproject.toml b/pyproject.toml index efaac4f..f8bffbf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "fishjam-server-sdk" -version = "0.29.0" +version = "0.30.0" description = "Python server SDK for the Fishjam" authors = [{ name = "Fishjam Team", email = "contact@fishjam.io" }] requires-python = ">=3.10" diff --git a/uv.lock b/uv.lock index 4e8f3ae..77954a5 100644 --- a/uv.lock +++ b/uv.lock @@ -679,7 +679,7 @@ wheels = [ [[package]] name = "fishjam-server-sdk" -version = "0.29.0" +version = "0.30.0" source = { editable = "." } dependencies = [ { name = "aenum" },