Skip to content

release: 3.11.0#68

Merged
mikemilla merged 7 commits into
mainfrom
release-please--branches--main--changes--next
Jul 9, 2026
Merged

release: 3.11.0#68
mikemilla merged 7 commits into
mainfrom
release-please--branches--main--changes--next

Conversation

@stainless-app

@stainless-app stainless-app Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Automated Release PR

3.11.0 (2026-07-09)

Full Changelog: v3.10.2...v3.11.0

Features

  • Add bulk user preference upsert and replace endpoints (35dc84e)
  • Preferences v3 REST fields: section/topic description + publish body (723c055)

Bug Fixes

  • openapi: drop invalid empty required:[] on PublishPreferencesRequest (79f7197)

This pull request is managed by Stainless's GitHub App.

The semver version number is based on included commit messages. Alternatively, you can manually set the version number in the title of this pull request.

For a better experience, it is recommended to use either rebase-merge or squash-merge when merging this pull request.

🔗 Stainless website
📚 Read the docs
🙋 Reach out for help or questions

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 486fc60 to c9d1727 Compare July 9, 2026 16:20
@stainless-app stainless-app Bot changed the title release: 3.10.2 release: 3.11.0 Jul 9, 2026
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from c9d1727 to 488d6bc Compare July 9, 2026 16:20
@stainless-app

stainless-app Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor Author

🧪 Testing

To try out this version of the SDK:

Download and unzip: 'https://pkg.stainless.com/s/courier-cli/fb3f2bbc647e16c5055d871eb3f3d537da58d0a5/dist.zip'. On macOS, run 'xattr -d com.apple.quarantine {executable name}'.

Expires at: Sat, 08 Aug 2026 22:19:13 GMT
Updated at: Thu, 09 Jul 2026 22:19:13 GMT

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 488d6bc to 363b52d Compare July 9, 2026 16:43
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 363b52d to 6644672 Compare July 9, 2026 20:00
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 6644672 to 600834b Compare July 9, 2026 22:10
…(#157)

* 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-<pr>) 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 <noreply@anthropic.com>

* 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 <noreply@anthropic.com>

* 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 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 600834b to 78905db Compare July 9, 2026 22:17
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 78905db to d076a39 Compare July 9, 2026 22:54
@mikemilla mikemilla merged commit 76dab19 into main Jul 9, 2026
7 checks passed
@stainless-app

stainless-app Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

1 participant