From 74a301ff09a28e668a231af1ba87417bd637b8dd Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 13 Jul 2026 14:32:30 +0000 Subject: [PATCH 1/2] feat: Merge pull request #149 from trycourier/geraldosilva/c-19201-notification-template-subscription-topic-id Document subscription_topic_id on notification template V2 responses --- .stats.yml | 4 +- .../NotificationTemplateSummary.kt | 64 ++++++++++++++++++- .../NotificationTemplateSummaryTest.kt | 4 ++ .../AssociatedNotificationListResponseTest.kt | 3 + 4 files changed, 71 insertions(+), 4 deletions(-) diff --git a/.stats.yml b/.stats.yml index 9e3b99b6..32f52ad6 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 138 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/courier/courier-11e1931d767cef402bbed5a965746d1933ae72db0f41881860593a0b1424fd80.yml -openapi_spec_hash: 9def941805f233f8761c4bdae88f6137 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/courier/courier-1ba05406f99c844cf7b32fe80c399017d00c504563f211caf66dfbccf8dd146d.yml +openapi_spec_hash: be1b9b8a351560da21bbe3b53fd04905 config_hash: 6c3a754258f0f77e9032a90a478ab76d diff --git a/courier-java-core/src/main/kotlin/com/courier/models/notifications/NotificationTemplateSummary.kt b/courier-java-core/src/main/kotlin/com/courier/models/notifications/NotificationTemplateSummary.kt index 9df42446..fecacd3d 100644 --- a/courier-java-core/src/main/kotlin/com/courier/models/notifications/NotificationTemplateSummary.kt +++ b/courier-java-core/src/main/kotlin/com/courier/models/notifications/NotificationTemplateSummary.kt @@ -30,6 +30,7 @@ private constructor( private val name: JsonField, private val state: JsonField, private val tags: JsonField>, + private val subscriptionTopicId: JsonField, private val updated: JsonField, private val updater: JsonField, private val additionalProperties: MutableMap, @@ -43,9 +44,23 @@ private constructor( @JsonProperty("name") @ExcludeMissing name: JsonField = JsonMissing.of(), @JsonProperty("state") @ExcludeMissing state: JsonField = JsonMissing.of(), @JsonProperty("tags") @ExcludeMissing tags: JsonField> = JsonMissing.of(), + @JsonProperty("subscription_topic_id") + @ExcludeMissing + subscriptionTopicId: JsonField = JsonMissing.of(), @JsonProperty("updated") @ExcludeMissing updated: JsonField = JsonMissing.of(), @JsonProperty("updater") @ExcludeMissing updater: JsonField = JsonMissing.of(), - ) : this(id, created, creator, name, state, tags, updated, updater, mutableMapOf()) + ) : this( + id, + created, + creator, + name, + state, + tags, + subscriptionTopicId, + updated, + updater, + mutableMapOf(), + ) /** * @throws CourierInvalidDataException if the JSON field has an unexpected type or is @@ -87,6 +102,16 @@ private constructor( */ fun tags(): List = tags.getRequired("tags") + /** + * The linked subscription (preference) topic of the published version. Omitted when no topic is + * linked or the template has never been published. + * + * @throws CourierInvalidDataException if the JSON field has an unexpected type (e.g. if the + * server responded with an unexpected value). + */ + fun subscriptionTopicId(): Optional = + subscriptionTopicId.getOptional("subscription_topic_id") + /** * Epoch milliseconds of last update. * @@ -145,6 +170,16 @@ private constructor( */ @JsonProperty("tags") @ExcludeMissing fun _tags(): JsonField> = tags + /** + * Returns the raw JSON value of [subscriptionTopicId]. + * + * Unlike [subscriptionTopicId], this method doesn't throw if the JSON field has an unexpected + * type. + */ + @JsonProperty("subscription_topic_id") + @ExcludeMissing + fun _subscriptionTopicId(): JsonField = subscriptionTopicId + /** * Returns the raw JSON value of [updated]. * @@ -198,6 +233,7 @@ private constructor( private var name: JsonField? = null private var state: JsonField? = null private var tags: JsonField>? = null + private var subscriptionTopicId: JsonField = JsonMissing.of() private var updated: JsonField = JsonMissing.of() private var updater: JsonField = JsonMissing.of() private var additionalProperties: MutableMap = mutableMapOf() @@ -210,6 +246,7 @@ private constructor( name = notificationTemplateSummary.name state = notificationTemplateSummary.state tags = notificationTemplateSummary.tags.map { it.toMutableList() } + subscriptionTopicId = notificationTemplateSummary.subscriptionTopicId updated = notificationTemplateSummary.updated updater = notificationTemplateSummary.updater additionalProperties = notificationTemplateSummary.additionalProperties.toMutableMap() @@ -289,6 +326,24 @@ private constructor( tags = (tags ?: JsonField.of(mutableListOf())).also { checkKnown("tags", it).add(tag) } } + /** + * The linked subscription (preference) topic of the published version. Omitted when no + * topic is linked or the template has never been published. + */ + fun subscriptionTopicId(subscriptionTopicId: String) = + subscriptionTopicId(JsonField.of(subscriptionTopicId)) + + /** + * Sets [Builder.subscriptionTopicId] to an arbitrary JSON value. + * + * You should usually call [Builder.subscriptionTopicId] with a well-typed [String] value + * instead. This method is primarily for setting the field to an undocumented or not yet + * supported value. + */ + fun subscriptionTopicId(subscriptionTopicId: JsonField) = apply { + this.subscriptionTopicId = subscriptionTopicId + } + /** Epoch milliseconds of last update. */ fun updated(updated: Long) = updated(JsonField.of(updated)) @@ -355,6 +410,7 @@ private constructor( checkRequired("name", name), checkRequired("state", state), checkRequired("tags", tags).map { it.toImmutable() }, + subscriptionTopicId, updated, updater, additionalProperties.toMutableMap(), @@ -382,6 +438,7 @@ private constructor( name() state().validate() tags() + subscriptionTopicId() updated() updater() validated = true @@ -408,6 +465,7 @@ private constructor( (if (name.asKnown().isPresent) 1 else 0) + (state.asKnown().getOrNull()?.validity() ?: 0) + (tags.asKnown().getOrNull()?.size ?: 0) + + (if (subscriptionTopicId.asKnown().isPresent) 1 else 0) + (if (updated.asKnown().isPresent) 1 else 0) + (if (updater.asKnown().isPresent) 1 else 0) @@ -557,6 +615,7 @@ private constructor( name == other.name && state == other.state && tags == other.tags && + subscriptionTopicId == other.subscriptionTopicId && updated == other.updated && updater == other.updater && additionalProperties == other.additionalProperties @@ -570,6 +629,7 @@ private constructor( name, state, tags, + subscriptionTopicId, updated, updater, additionalProperties, @@ -579,5 +639,5 @@ private constructor( override fun hashCode(): Int = hashCode override fun toString() = - "NotificationTemplateSummary{id=$id, created=$created, creator=$creator, name=$name, state=$state, tags=$tags, updated=$updated, updater=$updater, additionalProperties=$additionalProperties}" + "NotificationTemplateSummary{id=$id, created=$created, creator=$creator, name=$name, state=$state, tags=$tags, subscriptionTopicId=$subscriptionTopicId, updated=$updated, updater=$updater, additionalProperties=$additionalProperties}" } diff --git a/courier-java-core/src/test/kotlin/com/courier/models/notifications/NotificationTemplateSummaryTest.kt b/courier-java-core/src/test/kotlin/com/courier/models/notifications/NotificationTemplateSummaryTest.kt index b03e82bf..df730f63 100644 --- a/courier-java-core/src/test/kotlin/com/courier/models/notifications/NotificationTemplateSummaryTest.kt +++ b/courier-java-core/src/test/kotlin/com/courier/models/notifications/NotificationTemplateSummaryTest.kt @@ -19,6 +19,7 @@ internal class NotificationTemplateSummaryTest { .name("name") .state(NotificationTemplateSummary.State.DRAFT) .addTag("string") + .subscriptionTopicId("subscription_topic_id") .updated(0L) .updater("updater") .build() @@ -30,6 +31,8 @@ internal class NotificationTemplateSummaryTest { assertThat(notificationTemplateSummary.state()) .isEqualTo(NotificationTemplateSummary.State.DRAFT) assertThat(notificationTemplateSummary.tags()).containsExactly("string") + assertThat(notificationTemplateSummary.subscriptionTopicId()) + .contains("subscription_topic_id") assertThat(notificationTemplateSummary.updated()).contains(0L) assertThat(notificationTemplateSummary.updater()).contains("updater") } @@ -45,6 +48,7 @@ internal class NotificationTemplateSummaryTest { .name("name") .state(NotificationTemplateSummary.State.DRAFT) .addTag("string") + .subscriptionTopicId("subscription_topic_id") .updated(0L) .updater("updater") .build() diff --git a/courier-java-core/src/test/kotlin/com/courier/models/routingstrategies/AssociatedNotificationListResponseTest.kt b/courier-java-core/src/test/kotlin/com/courier/models/routingstrategies/AssociatedNotificationListResponseTest.kt index 92ed3f51..fc48cf1a 100644 --- a/courier-java-core/src/test/kotlin/com/courier/models/routingstrategies/AssociatedNotificationListResponseTest.kt +++ b/courier-java-core/src/test/kotlin/com/courier/models/routingstrategies/AssociatedNotificationListResponseTest.kt @@ -24,6 +24,7 @@ internal class AssociatedNotificationListResponseTest { .name("name") .state(NotificationTemplateSummary.State.DRAFT) .addTag("string") + .subscriptionTopicId("subscription_topic_id") .updated(0L) .updater("updater") .build() @@ -41,6 +42,7 @@ internal class AssociatedNotificationListResponseTest { .name("name") .state(NotificationTemplateSummary.State.DRAFT) .addTag("string") + .subscriptionTopicId("subscription_topic_id") .updated(0L) .updater("updater") .build() @@ -61,6 +63,7 @@ internal class AssociatedNotificationListResponseTest { .name("name") .state(NotificationTemplateSummary.State.DRAFT) .addTag("string") + .subscriptionTopicId("subscription_topic_id") .updated(0L) .updater("updater") .build() From 29705742345e6b6f330b62a884290be9013da7c7 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 13 Jul 2026 14:32:53 +0000 Subject: [PATCH 2/2] release: 4.21.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ build.gradle.kts | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 59bb50ff..b9e06599 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "4.20.2" + ".": "4.21.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 58efece7..8756f8f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 4.21.0 (2026-07-13) + +Full Changelog: [v4.20.2...v4.21.0](https://github.com/trycourier/courier-java/compare/v4.20.2...v4.21.0) + +### Features + +* Merge pull request [#149](https://github.com/trycourier/courier-java/issues/149) from trycourier/geraldosilva/c-19201-notification-template-subscription-topic-id ([74a301f](https://github.com/trycourier/courier-java/commit/74a301ff09a28e668a231af1ba87417bd637b8dd)) + ## 4.20.2 (2026-07-10) Full Changelog: [v4.20.1...v4.20.2](https://github.com/trycourier/courier-java/compare/v4.20.1...v4.20.2) diff --git a/build.gradle.kts b/build.gradle.kts index 13572d6b..58362a3f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ repositories { allprojects { group = "com.courier" - version = "4.20.2" // x-release-please-version + version = "4.21.0" // x-release-please-version } subprojects {