diff --git a/src/main/kotlin/com/nylas/models/ListMessagesQueryParams.kt b/src/main/kotlin/com/nylas/models/ListMessagesQueryParams.kt index 2f1f75df..2768ac07 100644 --- a/src/main/kotlin/com/nylas/models/ListMessagesQueryParams.kt +++ b/src/main/kotlin/com/nylas/models/ListMessagesQueryParams.kt @@ -94,6 +94,11 @@ data class ListMessagesQueryParams( */ @Json(name = "search_query_native") val searchQueryNative: String? = null, + /** + * Pass in your metadata key and value pair to search for metadata. + */ + @Json(name = "metadata_pair") + val metadataPair: Map? = null, ) : IQueryParams { class Builder { private var limit: Int? = null @@ -113,6 +118,7 @@ data class ListMessagesQueryParams( private var hasAttachment: Boolean? = null private var fields: MessageFields? = null private var searchQueryNative: String? = null + private var metadataPair: Map? = null /** * Sets the maximum number of objects to return. @@ -236,6 +242,13 @@ data class ListMessagesQueryParams( */ fun searchQueryNative(searchQueryNative: String?) = apply { this.searchQueryNative = searchQueryNative } + /** + * Set the metadata key and value pair to search for metadata. + * @param metadataPair The metadata key and value pair to search for metadata. + * @return The builder + */ + fun metadataPair(metadataPair: Map?) = apply { this.metadataPair = metadataPair } + /** * Builds the [ListMessagesQueryParams] object. * @return The [ListMessagesQueryParams] object. @@ -258,6 +271,7 @@ data class ListMessagesQueryParams( hasAttachment = hasAttachment, fields = fields, searchQueryNative = searchQueryNative, + metadataPair = metadataPair, ) } } diff --git a/src/test/kotlin/com/nylas/resources/MessagesTests.kt b/src/test/kotlin/com/nylas/resources/MessagesTests.kt index 9efe3052..9b0b6fd7 100644 --- a/src/test/kotlin/com/nylas/resources/MessagesTests.kt +++ b/src/test/kotlin/com/nylas/resources/MessagesTests.kt @@ -288,6 +288,31 @@ class MessagesTests { assertEquals(queryParams, queryParamCaptor.firstValue) } + @Test + fun `listing messages with metadata_pair calls requests with the correct params`() { + val queryParams = + ListMessagesQueryParams( + metadataPair = mapOf("campaign" to "welcome-email"), + ) + + messages.list(grantId, queryParams) + + val pathCaptor = argumentCaptor() + val typeCaptor = argumentCaptor() + val queryParamCaptor = argumentCaptor() + val overrideParamCaptor = argumentCaptor() + verify(mockNylasClient).executeGet>( + pathCaptor.capture(), + typeCaptor.capture(), + queryParamCaptor.capture(), + overrideParamCaptor.capture(), + ) + + assertEquals("v3/grants/$grantId/messages", pathCaptor.firstValue) + assertEquals(Types.newParameterizedType(ListResponse::class.java, Message::class.java), typeCaptor.firstValue) + assertEquals(queryParams, queryParamCaptor.firstValue) + } + @Test fun `listing messages without query params calls requests with the correct params`() { messages.list(grantId)