Skip to content

Commit bf66b16

Browse files
authored
feat(mailgun): add US/EU region selection to the Mailgun block and tools (#8423)
1 parent 025f2ec commit bf66b16

13 files changed

Lines changed: 112 additions & 26 deletions

File tree

‎apps/docs/content/docs/integrations/mailgun.mdx‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ Send an email using Mailgun API
3232
| Parameter | Type | Required | Description |
3333
| --------- | ---- | -------- | ----------- |
3434
| `apiKey` | string | Yes | Mailgun API key |
35+
| `region` | string | No | Mailgun account region: "us" \(default\) or "eu" |
3536
| `domain` | string | Yes | Mailgun sending domain \(e.g., mg.example.com\) |
3637
| `from` | string | Yes | Sender email address \(e.g., sender@example.com or "Name <sender@example.com>"\) |
3738
| `to` | string | Yes | Recipient email address \(e.g., user@example.com\). Use comma-separated values for multiple recipients |
@@ -59,6 +60,7 @@ Retrieve a stored message by its key
5960
| Parameter | Type | Required | Description |
6061
| --------- | ---- | -------- | ----------- |
6162
| `apiKey` | string | Yes | Mailgun API key |
63+
| `region` | string | No | Mailgun account region: "us" \(default\) or "eu" |
6264
| `domain` | string | Yes | Mailgun domain for retrieving messages \(e.g., mg.example.com\) |
6365
| `messageKey` | string | Yes | Message storage key |
6466

@@ -89,6 +91,7 @@ List events (logs) for messages sent through Mailgun
8991
| Parameter | Type | Required | Description |
9092
| --------- | ---- | -------- | ----------- |
9193
| `apiKey` | string | Yes | Mailgun API key |
94+
| `region` | string | No | Mailgun account region: "us" \(default\) or "eu" |
9295
| `domain` | string | Yes | Mailgun domain for listing events \(e.g., mg.example.com\) |
9396
| `event` | string | No | Filter by event type \(accepted, delivered, failed, opened, clicked, etc.\) |
9497
| `limit` | number | No | Maximum number of events to return \(default: 100\) |
@@ -110,6 +113,7 @@ Create a new mailing list
110113
| Parameter | Type | Required | Description |
111114
| --------- | ---- | -------- | ----------- |
112115
| `apiKey` | string | Yes | Mailgun API key |
116+
| `region` | string | No | Mailgun account region: "us" \(default\) or "eu" |
113117
| `address` | string | Yes | Mailing list address \(e.g., newsletter@mg.example.com\) |
114118
| `name` | string | No | Mailing list name |
115119
| `description` | string | No | Mailing list description |
@@ -132,6 +136,7 @@ Get details of a mailing list
132136
| Parameter | Type | Required | Description |
133137
| --------- | ---- | -------- | ----------- |
134138
| `apiKey` | string | Yes | Mailgun API key |
139+
| `region` | string | No | Mailgun account region: "us" \(default\) or "eu" |
135140
| `address` | string | Yes | Mailing list address to retrieve \(e.g., newsletter@mg.example.com\) |
136141

137142
#### Output
@@ -150,6 +155,7 @@ Add a member to a mailing list
150155
| Parameter | Type | Required | Description |
151156
| --------- | ---- | -------- | ----------- |
152157
| `apiKey` | string | Yes | Mailgun API key |
158+
| `region` | string | No | Mailgun account region: "us" \(default\) or "eu" |
153159
| `listAddress` | string | Yes | Mailing list address \(e.g., list@mg.example.com\) |
154160
| `address` | string | Yes | Member email address to add \(e.g., user@example.com\) |
155161
| `name` | string | No | Member name |
@@ -173,6 +179,7 @@ List all domains for your Mailgun account
173179
| Parameter | Type | Required | Description |
174180
| --------- | ---- | -------- | ----------- |
175181
| `apiKey` | string | Yes | Mailgun API key |
182+
| `region` | string | No | Mailgun account region: "us" \(default\) or "eu" |
176183

177184
#### Output
178185

@@ -191,6 +198,7 @@ Get details of a specific domain
191198
| Parameter | Type | Required | Description |
192199
| --------- | ---- | -------- | ----------- |
193200
| `apiKey` | string | Yes | Mailgun API key |
201+
| `region` | string | No | Mailgun account region: "us" \(default\) or "eu" |
194202
| `domain` | string | Yes | Domain name to retrieve details for \(e.g., mg.example.com\) |
195203

196204
#### Output

‎apps/sim/blocks/blocks/mailgun.ts‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,16 @@ export const MailgunBlock: BlockConfig<SendMessageResult> = {
7070
placeholder: 'Enter your Mailgun API key',
7171
required: true,
7272
},
73+
{
74+
id: 'region',
75+
title: 'Region',
76+
type: 'dropdown',
77+
options: [
78+
{ label: 'US', id: 'us' },
79+
{ label: 'EU', id: 'eu' },
80+
],
81+
value: () => 'us',
82+
},
7383
{
7484
id: 'domain',
7585
title: 'Domain',
@@ -405,6 +415,7 @@ Return ONLY the JSON object - no explanations or markdown.`,
405415
inputs: {
406416
operation: { type: 'string', description: 'Operation to perform' },
407417
apiKey: { type: 'string', description: 'Mailgun API key' },
418+
region: { type: 'string', description: 'Mailgun account region: "us" or "eu"' },
408419
domain: { type: 'string', description: 'Mailgun domain' },
409420
// Message inputs
410421
from: { type: 'string', description: 'Sender email address' },

‎apps/sim/tools/generated/tool-metadata.ts‎

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

‎apps/sim/tools/mailgun/add_list_member.ts‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { AddListMemberParams, AddListMemberResult } from '@/tools/mailgun/types'
2+
import { getMailgunApiBaseUrl } from '@/tools/mailgun/utils'
23
import type { ToolConfig } from '@/tools/types'
34

45
export const mailgunAddListMemberTool: ToolConfig<AddListMemberParams, AddListMemberResult> = {
@@ -14,6 +15,12 @@ export const mailgunAddListMemberTool: ToolConfig<AddListMemberParams, AddListMe
1415
visibility: 'user-only',
1516
description: 'Mailgun API key',
1617
},
18+
region: {
19+
type: 'string',
20+
required: false,
21+
visibility: 'user-only',
22+
description: 'Mailgun account region: "us" (default) or "eu"',
23+
},
1724
listAddress: {
1825
type: 'string',
1926
required: true,
@@ -47,7 +54,7 @@ export const mailgunAddListMemberTool: ToolConfig<AddListMemberParams, AddListMe
4754
},
4855

4956
request: {
50-
url: (params) => `https://api.mailgun.net/v3/lists/${params.listAddress}/members`,
57+
url: (params) => `${getMailgunApiBaseUrl(params.region)}/lists/${params.listAddress}/members`,
5158
method: 'POST',
5259
headers: (params) => ({
5360
Authorization: `Basic ${Buffer.from(`api:${params.apiKey}`).toString('base64')}`,

‎apps/sim/tools/mailgun/create_mailing_list.ts‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { CreateMailingListParams, CreateMailingListResult } from '@/tools/mailgun/types'
2+
import { getMailgunApiBaseUrl } from '@/tools/mailgun/utils'
23
import type { ToolConfig } from '@/tools/types'
34

45
export const mailgunCreateMailingListTool: ToolConfig<
@@ -17,6 +18,12 @@ export const mailgunCreateMailingListTool: ToolConfig<
1718
visibility: 'user-only',
1819
description: 'Mailgun API key',
1920
},
21+
region: {
22+
type: 'string',
23+
required: false,
24+
visibility: 'user-only',
25+
description: 'Mailgun account region: "us" (default) or "eu"',
26+
},
2027
address: {
2128
type: 'string',
2229
required: true,
@@ -44,7 +51,7 @@ export const mailgunCreateMailingListTool: ToolConfig<
4451
},
4552

4653
request: {
47-
url: () => 'https://api.mailgun.net/v3/lists',
54+
url: (params) => `${getMailgunApiBaseUrl(params.region)}/lists`,
4855
method: 'POST',
4956
headers: (params) => ({
5057
Authorization: `Basic ${Buffer.from(`api:${params.apiKey}`).toString('base64')}`,

‎apps/sim/tools/mailgun/get_domain.ts‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { GetDomainParams, GetDomainResult } from '@/tools/mailgun/types'
2+
import { getMailgunApiBaseUrl } from '@/tools/mailgun/utils'
23
import type { ToolConfig } from '@/tools/types'
34

45
export const mailgunGetDomainTool: ToolConfig<GetDomainParams, GetDomainResult> = {
@@ -14,6 +15,12 @@ export const mailgunGetDomainTool: ToolConfig<GetDomainParams, GetDomainResult>
1415
visibility: 'user-only',
1516
description: 'Mailgun API key',
1617
},
18+
region: {
19+
type: 'string',
20+
required: false,
21+
visibility: 'user-only',
22+
description: 'Mailgun account region: "us" (default) or "eu"',
23+
},
1724
domain: {
1825
type: 'string',
1926
required: true,
@@ -23,7 +30,7 @@ export const mailgunGetDomainTool: ToolConfig<GetDomainParams, GetDomainResult>
2330
},
2431

2532
request: {
26-
url: (params) => `https://api.mailgun.net/v3/domains/${params.domain}`,
33+
url: (params) => `${getMailgunApiBaseUrl(params.region)}/domains/${params.domain}`,
2734
method: 'GET',
2835
headers: (params) => ({
2936
Authorization: `Basic ${Buffer.from(`api:${params.apiKey}`).toString('base64')}`,

‎apps/sim/tools/mailgun/get_mailing_list.ts‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { GetMailingListParams, GetMailingListResult } from '@/tools/mailgun/types'
2+
import { getMailgunApiBaseUrl } from '@/tools/mailgun/utils'
23
import type { ToolConfig } from '@/tools/types'
34

45
export const mailgunGetMailingListTool: ToolConfig<GetMailingListParams, GetMailingListResult> = {
@@ -14,6 +15,12 @@ export const mailgunGetMailingListTool: ToolConfig<GetMailingListParams, GetMail
1415
visibility: 'user-only',
1516
description: 'Mailgun API key',
1617
},
18+
region: {
19+
type: 'string',
20+
required: false,
21+
visibility: 'user-only',
22+
description: 'Mailgun account region: "us" (default) or "eu"',
23+
},
1724
address: {
1825
type: 'string',
1926
required: true,
@@ -23,7 +30,7 @@ export const mailgunGetMailingListTool: ToolConfig<GetMailingListParams, GetMail
2330
},
2431

2532
request: {
26-
url: (params) => `https://api.mailgun.net/v3/lists/${params.address}`,
33+
url: (params) => `${getMailgunApiBaseUrl(params.region)}/lists/${params.address}`,
2734
method: 'GET',
2835
headers: (params) => ({
2936
Authorization: `Basic ${Buffer.from(`api:${params.apiKey}`).toString('base64')}`,

‎apps/sim/tools/mailgun/get_message.ts‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { GetMessageParams, GetMessageResult } from '@/tools/mailgun/types'
2+
import { getMailgunApiBaseUrl } from '@/tools/mailgun/utils'
23
import type { ToolConfig } from '@/tools/types'
34

45
export const mailgunGetMessageTool: ToolConfig<GetMessageParams, GetMessageResult> = {
@@ -14,6 +15,12 @@ export const mailgunGetMessageTool: ToolConfig<GetMessageParams, GetMessageResul
1415
visibility: 'user-only',
1516
description: 'Mailgun API key',
1617
},
18+
region: {
19+
type: 'string',
20+
required: false,
21+
visibility: 'user-only',
22+
description: 'Mailgun account region: "us" (default) or "eu"',
23+
},
1724
domain: {
1825
type: 'string',
1926
required: true,
@@ -30,7 +37,7 @@ export const mailgunGetMessageTool: ToolConfig<GetMessageParams, GetMessageResul
3037

3138
request: {
3239
url: (params) =>
33-
`https://api.mailgun.net/v3/domains/${params.domain}/messages/${params.messageKey}`,
40+
`${getMailgunApiBaseUrl(params.region)}/domains/${params.domain}/messages/${params.messageKey}`,
3441
method: 'GET',
3542
headers: (params) => ({
3643
Authorization: `Basic ${Buffer.from(`api:${params.apiKey}`).toString('base64')}`,

‎apps/sim/tools/mailgun/list_domains.ts‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { ListDomainsParams, ListDomainsResult } from '@/tools/mailgun/types'
2+
import { getMailgunApiBaseUrl } from '@/tools/mailgun/utils'
23
import type { ToolConfig } from '@/tools/types'
34

45
export const mailgunListDomainsTool: ToolConfig<ListDomainsParams, ListDomainsResult> = {
@@ -14,10 +15,16 @@ export const mailgunListDomainsTool: ToolConfig<ListDomainsParams, ListDomainsRe
1415
visibility: 'user-only',
1516
description: 'Mailgun API key',
1617
},
18+
region: {
19+
type: 'string',
20+
required: false,
21+
visibility: 'user-only',
22+
description: 'Mailgun account region: "us" (default) or "eu"',
23+
},
1724
},
1825

1926
request: {
20-
url: () => 'https://api.mailgun.net/v3/domains',
27+
url: (params) => `${getMailgunApiBaseUrl(params.region)}/domains`,
2128
method: 'GET',
2229
headers: (params) => ({
2330
Authorization: `Basic ${Buffer.from(`api:${params.apiKey}`).toString('base64')}`,

‎apps/sim/tools/mailgun/list_messages.ts‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { ListMessagesParams, ListMessagesResult } from '@/tools/mailgun/types'
2+
import { getMailgunApiBaseUrl } from '@/tools/mailgun/utils'
23
import type { ToolConfig } from '@/tools/types'
34

45
export const mailgunListMessagesTool: ToolConfig<ListMessagesParams, ListMessagesResult> = {
@@ -14,6 +15,12 @@ export const mailgunListMessagesTool: ToolConfig<ListMessagesParams, ListMessage
1415
visibility: 'user-only',
1516
description: 'Mailgun API key',
1617
},
18+
region: {
19+
type: 'string',
20+
required: false,
21+
visibility: 'user-only',
22+
description: 'Mailgun account region: "us" (default) or "eu"',
23+
},
1724
domain: {
1825
type: 'string',
1926
required: true,
@@ -36,7 +43,7 @@ export const mailgunListMessagesTool: ToolConfig<ListMessagesParams, ListMessage
3643

3744
request: {
3845
url: (params) => {
39-
const baseUrl = `https://api.mailgun.net/v3/${params.domain}/events`
46+
const baseUrl = `${getMailgunApiBaseUrl(params.region)}/${params.domain}/events`
4047
const queryParams = new URLSearchParams()
4148

4249
if (params.event) {

0 commit comments

Comments
 (0)