Repository navigation
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
The template request currently allows Bruno to interpolate Postman template placeholders before sending them.
1 open finding
What changed in this PR
Adds a version-controlled Bruno collection covering the Postman Email API.
Changes:
- Adds 39 API requests across authentication, campaigns, email, settings, API keys, and attachments.
- Adds local, staging, and production environments with secret API-key handling.
- Documents setup, email-sending operations, and excluded routes.
| File | Description |
|---|---|
Transactional email/Send email.bru |
Sends transactional email. |
Transactional email/Send email with attachment.bru |
Sends multipart email. |
Transactional email/List emails.bru |
Lists transactional emails. |
Transactional email/Get email by ID.bru |
Retrieves one email. |
Transactional email/folder.bru |
Defines the folder. |
Settings/Verify custom from address.bru |
Verifies a sender address. |
Settings/List custom from addresses.bru |
Lists sender addresses. |
Settings/Get user settings.bru |
Retrieves settings. |
Settings/folder.bru |
Documents session authentication. |
README.md |
Documents collection usage. |
Ping.bru |
Adds the health check. |
fixtures/sample.txt |
Provides an attachment fixture. |
environments/Staging.bru |
Defines staging variables. |
environments/Production.bru |
Defines production variables. |
environments/Local.bru |
Defines local variables. |
Email campaign/Start protected upload.bru |
Starts multipart upload. |
Email campaign/Start CSV upload.bru |
Starts CSV upload. |
Email campaign/Send test email.bru |
Sends a campaign test. |
Email campaign/Send campaign.bru |
Sends or schedules a campaign. |
Email campaign/Save template.bru |
Saves the email template. |
Email campaign/Retry campaign.bru |
Retries a campaign. |
Email campaign/Refresh stats.bru |
Refreshes statistics. |
Email campaign/Preview first message.bru |
Previews a message. |
Email campaign/Get stats.bru |
Retrieves statistics. |
Email campaign/Get CSV upload status.bru |
Checks CSV processing. |
Email campaign/Get campaign details.bru |
Retrieves email campaign details. |
Email campaign/folder.bru |
Documents campaign variables. |
Email campaign/Export delivered recipients.bru |
Exports delivered recipients. |
Email campaign/Duplicate campaign.bru |
Duplicates a campaign. |
Email campaign/Delete CSV upload error.bru |
Clears upload errors. |
Email campaign/Complete protected upload.bru |
Completes multipart upload. |
Email campaign/Complete CSV upload.bru |
Completes CSV upload. |
collection.bru |
Configures inherited bearer authentication. |
Campaigns/Update campaign.bru |
Updates campaign metadata. |
Campaigns/List campaigns.bru |
Lists campaigns. |
Campaigns/folder.bru |
Defines the folder. |
Campaigns/Delete campaign.bru |
Deletes a campaign. |
Campaigns/Create email campaign.bru |
Creates an email campaign. |
Campaigns/Cancel scheduled campaign.bru |
Cancels scheduled sending. |
bruno.json |
Defines the Bruno collection. |
Auth/Verify OTP and log in.bru |
Establishes a session. |
Auth/Request OTP.bru |
Requests an OTP. |
Auth/Log out.bru |
Ends the session. |
Auth/Get user info.bru |
Retrieves session user data. |
Auth/folder.bru |
Defines the folder. |
Attachments/Upload campaign embed.bru |
Uploads an embedded attachment. |
Attachments/Get campaign embed.bru |
Retrieves an embedded attachment. |
Attachments/folder.bru |
Documents session authentication. |
API keys/Update API key.bru |
Updates notification contacts. |
API keys/List API keys.bru |
Lists API keys. |
API keys/folder.bru |
Documents session authentication. |
API keys/Delete API key.bru |
Deletes an API key. |
API keys/Create API key.bru |
Creates an API key. |
🧠 Review effort: Balanced
Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.
Comment on lines
+15
to
+16
| "subject": "Hello {{name}}", | ||
| "body": "<p>Dear {{name}},</p>", |
seancze
approved these changes
Oct 9, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jia1
force-pushed
the
add-bruno-collection
branch
from
October 9, 2026 03:51
af2ebb2 to
a2f453a
Compare
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Problem
There's no shared, version-controlled request collection for the Postman Email API, so trying an endpoint means rebuilding requests by hand or passing around personal Insomnia exports.
Solution
bruno/postman-email/: 39 requests covering auth (OTP), transactional email, campaigns, the email campaign lifecycle, email settings, API keys and attachments. Built from the route validators onstaging, including the one.gov.sg changes.api-hosts.apiKeyis a Bruno secret variable, so key values never land in.brufiles. Every other value is an@example.comaddress or a placeholder.bru runagainst a local echo server: each request's method, path, query string, auth header, cookie and multipart body went out as expected. Not run against a real backend yet.