From cc8a823ebff3dc2f1f4f5ea8ed3680d5b4d0e184 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 9 Jul 2026 22:09:53 +0000 Subject: [PATCH 1/4] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 04c1236b..e97931a1 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-cba470b0c221bcfbe2e8bf51276292285a60a05a4c0b47f5f741706adf1205fc.yml -openapi_spec_hash: c9f1b73fb32f39243d9d95a667ea3341 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/courier/courier-78ac30f598e54ef0a924c6c76941278f058c272d77a72279a84baf1cab88527b.yml +openapi_spec_hash: dfbf2098b93e4dd7d6dd225af1396751 config_hash: 6025fdbfe31c3b2d57a71f9885d37294 From 8a996911f4404a38a9ef735ef0f2d60edd0fee62 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 9 Jul 2026 22:16:57 +0000 Subject: [PATCH 2/4] ci(docs): generate docs on the PR, publish Postman from the raw spec (#157) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ci(docs): generate docs on the PR, publish Postman from the raw spec Move the mintlify-docs sync off the post-merge Stainless build and onto the PR, right after the preview generation — restoring the pre-#136 "docs PR from the PR" flow. The post-merge build was flaky: a downstream SDK target (usually cli) failing, or Stainless's content cache skipping a re-run of the same commit, silently blocked the docs sync. - sync_docs now runs on pull_request (needs: preview) and creates/updates the docs PR (branch api-spec-) from the PR's own code-sample-decorated spec. No auto-merge — a human merges the docs PR once this PR lands, matching the original flow. - publish_postman builds the collection straight from specs/openapi.yml (the converter ignores x-codeSamples), so it no longer depends on the Stainless build, and publishes the live public collection only on merge to main (push is path-filtered to specs/**). - sdk_release keeps the Stainless build@main that cuts the per-language SDK release PRs; it no longer gates docs or Postman, so a cli flake is just a re-run. Also reword the bulk-replace tenant_id param ("Update" -> "Replace") to exercise the new PR-based docs generation. Co-Authored-By: Claude Opus 4.8 * docs(readme): document PR-time docs sync and raw-spec Postman flow Rewrite the 'What happens in CI' section to match the restructured workflow: docs sync now runs on the PR right after generation (no auto-merge), and Postman/SDK-release run on merge — Postman built from specs/openapi.yml, sdk_release no longer gating docs. Co-Authored-By: Claude Opus 4.8 * ci(e2e): pass COURIER_RESENDABLE_MESSAGE_ID through to the e2e run The resend test reads COURIER_RESENDABLE_MESSAGE_ID (repo secret exists, listed in node/.env.example) but it was never mapped into the e2e env block, so env() fell back to "" and courier.messages.resend("") hit POST /messages//resend -> 404. Wire the secret through. Co-Authored-By: Claude Opus 4.8 --------- Co-authored-by: Claude Opus 4.8 --- .stats.yml | 4 ++-- .../models/users/preferences/PreferenceBulkReplaceParams.kt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.stats.yml b/.stats.yml index e97931a1..dd12bcab 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-78ac30f598e54ef0a924c6c76941278f058c272d77a72279a84baf1cab88527b.yml -openapi_spec_hash: dfbf2098b93e4dd7d6dd225af1396751 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/courier/courier-ad962c95382ae37062904269b54eae31c0db664b1f2e3d654573a81c2202a65d.yml +openapi_spec_hash: bf321581a238ae891debcc5bb59dd501 config_hash: 6025fdbfe31c3b2d57a71f9885d37294 diff --git a/courier-java-core/src/main/kotlin/com/courier/models/users/preferences/PreferenceBulkReplaceParams.kt b/courier-java-core/src/main/kotlin/com/courier/models/users/preferences/PreferenceBulkReplaceParams.kt index 042a6500..6301994f 100644 --- a/courier-java-core/src/main/kotlin/com/courier/models/users/preferences/PreferenceBulkReplaceParams.kt +++ b/courier-java-core/src/main/kotlin/com/courier/models/users/preferences/PreferenceBulkReplaceParams.kt @@ -52,7 +52,7 @@ private constructor( fun userId(): Optional = Optional.ofNullable(userId) - /** Update the preferences of a user for this specific tenant context. */ + /** Replace the preferences of a user for this specific tenant context. */ fun tenantId(): Optional = Optional.ofNullable(tenantId) /** @@ -118,7 +118,7 @@ private constructor( /** Alias for calling [Builder.userId] with `userId.orElse(null)`. */ fun userId(userId: Optional) = userId(userId.getOrNull()) - /** Update the preferences of a user for this specific tenant context. */ + /** Replace the preferences of a user for this specific tenant context. */ fun tenantId(tenantId: String?) = apply { this.tenantId = tenantId } /** Alias for calling [Builder.tenantId] with `tenantId.orElse(null)`. */ From 07a4b19bc08813c5513da324d89b181e66bdb6d6 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 9 Jul 2026 22:53:51 +0000 Subject: [PATCH 3/4] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index dd12bcab..c6ea0b34 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-ad962c95382ae37062904269b54eae31c0db664b1f2e3d654573a81c2202a65d.yml +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/courier/courier-e8d4bd51bf260b8a6cb9875718e36eab95d4e8d9490cd6c5c669eb69b82c2bf8.yml openapi_spec_hash: bf321581a238ae891debcc5bb59dd501 -config_hash: 6025fdbfe31c3b2d57a71f9885d37294 +config_hash: 6c3a754258f0f77e9032a90a478ab76d From 8652ec134513d2737b7bcafd730a2a6ae6aa360f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 9 Jul 2026 22:54:13 +0000 Subject: [PATCH 4/4] release: 4.20.1 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 4 ++++ build.gradle.kts | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 88e4c443..bf7dddc6 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "4.20.0" + ".": "4.20.1" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e884990..36c67cb1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 4.20.1 (2026-07-09) + +Full Changelog: [v4.20.0...v4.20.1](https://github.com/trycourier/courier-java/compare/v4.20.0...v4.20.1) + ## 4.20.0 (2026-07-09) Full Changelog: [v4.19.2...v4.20.0](https://github.com/trycourier/courier-java/compare/v4.19.2...v4.20.0) diff --git a/build.gradle.kts b/build.gradle.kts index f564a9d3..12b1fa4c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ repositories { allprojects { group = "com.courier" - version = "4.20.0" // x-release-please-version + version = "4.20.1" // x-release-please-version } subprojects {