diff --git a/CHANGELOG.md b/CHANGELOG.md index 68b6e3e..6ff0494 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,8 @@ nylas-python Changelog Unreleased ---------------- -* Support for tentative_as_busy parameter that controls whether tentative events are treated as busy time. -* Available as a query parameter for Events requests and as a property in Availability request bodies +* Added support for for tentative_as_busy parameter to the availability request +* Added missing webhook triggers * Added support for Notetaker APIs * Added support for Notetaker via the calendar and event APIs diff --git a/examples/notetaker_api_demo/notetaker_demo.py b/examples/notetaker_api_demo/notetaker_demo.py index 4e27085..e48d8e8 100644 --- a/examples/notetaker_api_demo/notetaker_demo.py +++ b/examples/notetaker_api_demo/notetaker_demo.py @@ -79,10 +79,20 @@ def get_notetaker_media(notetaker_id): if media.recording: print(f"Recording URL: {media.data.recording.url}") - print(f"Recording Size: {media.data.recording.size} MB") + print(f"Recording Name: {media.data.recording.name}") + print(f"Recording Type: {media.data.recording.type}") + print(f"Recording Size: {media.data.recording.size} bytes") + print(f"Recording Created At: {media.data.recording.created_at}") + print(f"Recording Expires At: {media.data.recording.expires_at}") + print(f"Recording TTL: {media.data.recording.ttl} seconds") if media.transcript: print(f"Transcript URL: {media.data.transcript.url}") - print(f"Transcript Size: {media.data.transcript.size} MB") + print(f"Transcript Name: {media.data.transcript.name}") + print(f"Transcript Type: {media.data.transcript.type}") + print(f"Transcript Size: {media.data.transcript.size} bytes") + print(f"Transcript Created At: {media.data.transcript.created_at}") + print(f"Transcript Expires At: {media.data.transcript.expires_at}") + print(f"Transcript TTL: {media.data.transcript.ttl} seconds") return media except NylasApiError as e: diff --git a/nylas/models/notetakers.py b/nylas/models/notetakers.py index af405bb..2d196b3 100644 --- a/nylas/models/notetakers.py +++ b/nylas/models/notetakers.py @@ -91,12 +91,22 @@ class NotetakerMediaRecording: Class representing a Notetaker media recording. Attributes: - url: A link to the meeting recording. - size: The size of the file, in MB. + size: The size of the file in bytes. + name: The name of the file. + type: The MIME type of the file. + created_at: Unix timestamp when the file was uploaded to the storage server. + expires_at: Unix timestamp when the file will be deleted. + url: A link to download the file. + ttl: Time-to-live in seconds until the file will be deleted off Nylas' storage server. """ - url: str size: int + name: str + type: str + created_at: int + expires_at: int + url: str + ttl: int @dataclass_json @@ -106,8 +116,8 @@ class NotetakerMedia: Class representing Notetaker media. Attributes: - recording: The meeting recording. - transcript: The meeting transcript. + recording: The meeting recording (video/mp4). + transcript: The meeting transcript (application/json). """ recording: Optional[NotetakerMediaRecording] = None diff --git a/tests/resources/test_notetakers.py b/tests/resources/test_notetakers.py index 1137471..44bca39 100644 --- a/tests/resources/test_notetakers.py +++ b/tests/resources/test_notetakers.py @@ -364,21 +364,42 @@ def test_cancel_notetaker_without_identifier(self, http_client_delete_response): def test_media_deserialization(self): media_json = { "recording": { - "url": "https://example.com/recording.mp4", - "size": 25 + "size": 21550491, + "name": "meeting_recording.mp4", + "type": "video/mp4", + "created_at": 1744222418, + "expires_at": 1744481618, + "url": "url_for_recording", + "ttl": 259106 }, "transcript": { - "url": "https://example.com/transcript.txt", - "size": 2 + "size": 862, + "name": "raw_transcript.json", + "type": "application/json", + "created_at": 1744222418, + "expires_at": 1744481618, + "url": "url_for_transcript", + "ttl": 259106 } } media = NotetakerMedia.from_dict(media_json) - assert media.recording.url == "https://example.com/recording.mp4" - assert media.recording.size == 25 - assert media.transcript.url == "https://example.com/transcript.txt" - assert media.transcript.size == 2 + assert media.recording.url == "url_for_recording" + assert media.recording.size == 21550491 + assert media.recording.name == "meeting_recording.mp4" + assert media.recording.type == "video/mp4" + assert media.recording.created_at == 1744222418 + assert media.recording.expires_at == 1744481618 + assert media.recording.ttl == 259106 + + assert media.transcript.url == "url_for_transcript" + assert media.transcript.size == 862 + assert media.transcript.name == "raw_transcript.json" + assert media.transcript.type == "application/json" + assert media.transcript.created_at == 1744222418 + assert media.transcript.expires_at == 1744481618 + assert media.transcript.ttl == 259106 def test_meeting_provider_enum(self): """Test that the MeetingProvider enum works correctly."""