From a3929ca6b69c09365ca3f9b2a68381ce3d3bea39 Mon Sep 17 00:00:00 2001 From: Gordan Ovcaric Date: Thu, 9 Jul 2026 12:50:22 +0200 Subject: [PATCH] TA-3804: add tentative-as-busy to calendar request --- CHANGELOG.md | 3 ++ .../com/nylas/models/GetFreeBusyRequest.kt | 7 +++- .../com/nylas/resources/CalendarsTest.kt | 33 +++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a10149b..73312850 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## [Unreleased] +### Added +* `GetFreeBusyRequest.tentativeAsBusy` mapped to the `tentative_as_busy` request field while preserving the existing Java constructor overload for backward compatibility + ### Changed * Clarify that event `default` visibility is Google-only diff --git a/src/main/kotlin/com/nylas/models/GetFreeBusyRequest.kt b/src/main/kotlin/com/nylas/models/GetFreeBusyRequest.kt index 47c43c82..2fc2cb02 100644 --- a/src/main/kotlin/com/nylas/models/GetFreeBusyRequest.kt +++ b/src/main/kotlin/com/nylas/models/GetFreeBusyRequest.kt @@ -5,7 +5,7 @@ import com.squareup.moshi.Json /** * Class representation of a Nylas get free-busy request */ -data class GetFreeBusyRequest( +data class GetFreeBusyRequest @JvmOverloads constructor( /** * Unix timestamp representing the start of the time block for assessing the account's free/busy schedule. */ @@ -21,4 +21,9 @@ data class GetFreeBusyRequest( */ @Json(name = "emails") val emails: List, + /** + * When true, tentative events are counted as busy. + */ + @Json(name = "tentative_as_busy") + val tentativeAsBusy: Boolean? = null, ) diff --git a/src/test/kotlin/com/nylas/resources/CalendarsTest.kt b/src/test/kotlin/com/nylas/resources/CalendarsTest.kt index 01de97e7..6f1ef04b 100644 --- a/src/test/kotlin/com/nylas/resources/CalendarsTest.kt +++ b/src/test/kotlin/com/nylas/resources/CalendarsTest.kt @@ -101,6 +101,38 @@ class CalendarsTest { assertEquals(2, cal.notetaker?.rules?.participantFilter?.participantsGte) assertEquals(10, cal.notetaker?.rules?.participantFilter?.participantsLte) } + + @Test + fun `GetFreeBusyRequest serializes tentative as busy when set`() { + val adapter = JsonHelper.moshi().adapter(GetFreeBusyRequest::class.java) + val request = GetFreeBusyRequest( + startTime = 1620000000, + endTime = 1620003600, + emails = listOf("test@nylas.com"), + tentativeAsBusy = true, + ) + + val json = adapter.toJson(request) + val deserialized = adapter.fromJson(json)!! + + assertEquals(true, deserialized.tentativeAsBusy) + } + + @Test + fun `GetFreeBusyRequest legacy constructor remains backward compatible`() { + val adapter = JsonHelper.moshi().adapter(GetFreeBusyRequest::class.java) + val request = GetFreeBusyRequest( + 1620000000, + 1620003600, + listOf("test@nylas.com"), + ) + + val json = adapter.toJson(request) + val deserialized = adapter.fromJson(json)!! + + assertEquals(null, deserialized.tentativeAsBusy) + assertEquals(false, json.contains("tentative_as_busy")) + } } @Nested @@ -923,6 +955,7 @@ class CalendarsTest { startTime = 1620000000, endTime = 1620000000, emails = listOf("test@nylas.com"), + tentativeAsBusy = true, ) calendars.getFreeBusy(grantId, getFreeBusyRequest)