From f5db6f4844d962b1b02748eea9b33e63decf92ca 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:10:10 +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 04c1236..e97931a 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 3aebf8285669d8ba175aa82b926393eb937aca79 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:17:20 +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 ++-- lib/courier/models/users/preference_bulk_replace_params.rb | 4 ++-- lib/courier/resources/users/preferences.rb | 2 +- rbi/courier/models/users/preference_bulk_replace_params.rbi | 4 ++-- rbi/courier/resources/users/preferences.rbi | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.stats.yml b/.stats.yml index e97931a..dd12bca 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/lib/courier/models/users/preference_bulk_replace_params.rb b/lib/courier/models/users/preference_bulk_replace_params.rb index 3291f38..b39e43b 100644 --- a/lib/courier/models/users/preference_bulk_replace_params.rb +++ b/lib/courier/models/users/preference_bulk_replace_params.rb @@ -23,7 +23,7 @@ class PreferenceBulkReplaceParams < Courier::Internal::Type::BaseModel -> { Courier::Internal::Type::ArrayOf[Courier::Users::PreferenceBulkReplaceParams::Topic] } # @!attribute tenant_id - # Update the preferences of a user for this specific tenant context. + # Replace the preferences of a user for this specific tenant context. # # @return [String, nil] optional :tenant_id, String, nil?: true @@ -36,7 +36,7 @@ class PreferenceBulkReplaceParams < Courier::Internal::Type::BaseModel # # @param topics [Array] The complete set of topic overrides for the user. Up to 50 topics may be provide # - # @param tenant_id [String, nil] Update the preferences of a user for this specific tenant context. + # @param tenant_id [String, nil] Replace the preferences of a user for this specific tenant context. # # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}] diff --git a/lib/courier/resources/users/preferences.rb b/lib/courier/resources/users/preferences.rb index bc184bc..c2f7693 100644 --- a/lib/courier/resources/users/preferences.rb +++ b/lib/courier/resources/users/preferences.rb @@ -59,7 +59,7 @@ def retrieve(user_id, params = {}) # # @param topics [Array] Body param: The complete set of topic overrides for the user. Up to 50 topics ma # - # @param tenant_id [String, nil] Query param: Update the preferences of a user for this specific tenant context. + # @param tenant_id [String, nil] Query param: Replace the preferences of a user for this specific tenant context. # # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil] # diff --git a/rbi/courier/models/users/preference_bulk_replace_params.rbi b/rbi/courier/models/users/preference_bulk_replace_params.rbi index e0c7db2..92c7a93 100644 --- a/rbi/courier/models/users/preference_bulk_replace_params.rbi +++ b/rbi/courier/models/users/preference_bulk_replace_params.rbi @@ -26,7 +26,7 @@ module Courier end attr_accessor :topics - # Update the preferences of a user for this specific tenant context. + # Replace the preferences of a user for this specific tenant context. sig { returns(T.nilable(String)) } attr_accessor :tenant_id @@ -47,7 +47,7 @@ module Courier # provided. Any existing override not listed here is reset to its topic default; # an empty array resets every existing override. topics:, - # Update the preferences of a user for this specific tenant context. + # Replace the preferences of a user for this specific tenant context. tenant_id: nil, request_options: {} ) diff --git a/rbi/courier/resources/users/preferences.rbi b/rbi/courier/resources/users/preferences.rbi index 2aaceb9..e33a762 100644 --- a/rbi/courier/resources/users/preferences.rbi +++ b/rbi/courier/resources/users/preferences.rbi @@ -58,7 +58,7 @@ module Courier # may be provided. Any existing override not listed here is reset to its topic # default; an empty array resets every existing override. topics:, - # Query param: Update the preferences of a user for this specific tenant context. + # Query param: Replace the preferences of a user for this specific tenant context. tenant_id: nil, request_options: {} ) From fba7e395543248a14ddfdc47e536512d7dddc02f 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:14 +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 dd12bca..c6ea0b3 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 ee52ded817b3df8033fdc47ad83289054f6b957f 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:35 +0000 Subject: [PATCH 4/4] release: 4.19.1 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 4 ++++ Gemfile.lock | 2 +- lib/courier/version.rb | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 647ed9c..a458854 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "4.19.0" + ".": "4.19.1" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index dc18076..72ee7b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 4.19.1 (2026-07-09) + +Full Changelog: [v4.19.0...v4.19.1](https://github.com/trycourier/courier-ruby/compare/v4.19.0...v4.19.1) + ## 4.19.0 (2026-07-09) Full Changelog: [v4.18.2...v4.19.0](https://github.com/trycourier/courier-ruby/compare/v4.18.2...v4.19.0) diff --git a/Gemfile.lock b/Gemfile.lock index 1d4d665..7a6d503 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: . specs: - trycourier (4.19.0) + trycourier (4.19.1) cgi connection_pool diff --git a/lib/courier/version.rb b/lib/courier/version.rb index 5a84ab4..b8b4655 100644 --- a/lib/courier/version.rb +++ b/lib/courier/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Courier - VERSION = "4.19.0" + VERSION = "4.19.1" end