From 9dc9e60b8b0ee26b3c9f39d96c8a6fd1416f9bc1 Mon Sep 17 00:00:00 2001 From: Maciej Walusiak Date: Mon, 31 Aug 2026 12:38:25 +0200 Subject: [PATCH] Add SDK code samples to email campaigns endpoints All 11 email campaign operations carried only a shell sample. Add javascript, php, python, ruby, csharp and java samples to each, matching the language order and label conventions of the sibling specs. Every sample is written against the campaigns API that each SDK actually ships on origin/main, so all six languages cover all 11 operations. Co-Authored-By: Claude Opus 5 (1M context) --- specs/email-campaigns.openapi.yml | 1038 +++++++++++++++++++++++++++++ 1 file changed, 1038 insertions(+) diff --git a/specs/email-campaigns.openapi.yml b/specs/email-campaigns.openapi.yml index 0f26dc5..0c8919e 100644 --- a/specs/email-campaigns.openapi.yml +++ b/specs/email-campaigns.openapi.yml @@ -58,6 +58,89 @@ paths: source: | curl -X GET "https://mailtrap.io/api/email_campaigns?per_page=50&token=1" \ -H 'Api-Token: YOUR_API_KEY' + - lang: javascript + label: Node.js + source: | + import { MailtrapClient } from "mailtrap"; + + const client = new MailtrapClient({ token: "YOUR_API_KEY" }); + + const list = await client.emailCampaigns.getList({ per_page: 50, token: 1 }); + + console.log(`Campaigns: ${list.data.length}`, list.pagination); + - lang: php + label: PHP + source: | + emailCampaigns($accountId); + + $response = $emailCampaigns->getEmailCampaigns(perPage: 50, token: 1); + + var_dump(ResponseHelper::toArray($response)); + - lang: python + label: Python + source: | + import mailtrap as mt + + client = mt.MailtrapClient(token="YOUR_API_KEY") + campaigns = client.email_campaigns_api.email_campaigns + + page = campaigns.get_list(mt.EmailCampaignListParams(per_page=50, token=1)) + + print(page.data, page.pagination) + - lang: ruby + label: Ruby + source: | + require 'mailtrap' + + client = Mailtrap::Client.new(api_key: 'YOUR_API_KEY') + email_campaigns = Mailtrap::EmailCampaignsAPI.new(client) + + list = email_campaigns.list(per_page: 50, token: 1) + + puts list.data.map(&:name) + puts list.pagination + - lang: csharp + label: .NET + source: | + using Mailtrap; + using Mailtrap.EmailCampaigns.Models; + + using var mailtrapFactory = new MailtrapClientFactory("YOUR_API_KEY"); + var client = mailtrapFactory.CreateClient(); + + var page = await client + .EmailCampaigns() + .GetAll(new EmailCampaignListFilter { PerPage = 50, Token = 1 }); + + Console.WriteLine($"Campaigns: {page.Data.Count}"); + - lang: java + label: Java + source: | + import io.mailtrap.config.MailtrapConfig; + import io.mailtrap.factory.MailtrapClientFactory; + import io.mailtrap.api.emailcampaigns.EmailCampaignListFilter; + + var config = new MailtrapConfig.Builder() + .token("YOUR_API_KEY") + .build(); + + var client = MailtrapClientFactory.createMailtrapClient(config); + var campaigns = client.emailCampaignsApi().emailCampaigns(); + + var page = campaigns.getEmailCampaigns( + EmailCampaignListFilter.builder() + .perPage(50) + .token(1) + .build()); + + System.out.println(page.getData()); post: operationId: createEmailCampaign summary: Create an email campaign @@ -107,6 +190,168 @@ paths: }, "template_attributes": { "subject": "Spring is here — 30% off" } }' + - lang: javascript + label: Node.js + source: | + import { MailtrapClient } from "mailtrap"; + + const client = new MailtrapClient({ token: "YOUR_API_KEY" }); + + const created = await client.emailCampaigns.create({ + name: "Spring Sale", + domain_id: 4321, + from_display_name: "Acme Marketing", + from_local_part: "news", + reply_to: { + display_name: "Acme Support", + local_part: "support", + domain: "acme.com" + }, + template_attributes: { subject: "Spring is here — 30% off" } + }); + + console.log(`Campaign created: ${created.data.id} (${created.data.current_state})`); + - lang: php + label: PHP + source: | + emailCampaigns($accountId); + + $response = $emailCampaigns->createEmailCampaign(new CreateEmailCampaign( + name: 'Spring Sale', + domainId: 4321, + fromLocalPart: 'news', + templateAttributes: new TemplateAttributes(subject: 'Spring is here — 30% off'), + fromDisplayName: 'Acme Marketing', + replyTo: new ReplyTo( + displayName: 'Acme Support', + localPart: 'support', + domain: 'acme.com', + ), + )); + + var_dump(ResponseHelper::toArray($response)); + - lang: python + label: Python + source: | + import mailtrap as mt + + client = mt.MailtrapClient(token="YOUR_API_KEY") + campaigns = client.email_campaigns_api.email_campaigns + + created = campaigns.create( + mt.CreateEmailCampaignParams( + name="Spring Sale", + domain_id=4321, + from_display_name="Acme Marketing", + from_local_part="news", + reply_to=mt.EmailCampaignReplyTo( + display_name="Acme Support", + local_part="support", + domain="acme.com" + ), + template_attributes=mt.CreateEmailCampaignTemplateAttributes( + subject="Spring is here — 30% off" + ) + ) + ) + + print(f"Campaign created: {created.id} ({created.current_state})") + - lang: ruby + label: Ruby + source: | + require 'mailtrap' + + client = Mailtrap::Client.new(api_key: 'YOUR_API_KEY') + email_campaigns = Mailtrap::EmailCampaignsAPI.new(client) + + campaign = email_campaigns.create( + name: 'Spring Sale', + domain_id: 4321, + from_display_name: 'Acme Marketing', + from_local_part: 'news', + reply_to: { + display_name: 'Acme Support', + local_part: 'support', + domain: 'acme.com' + }, + template_attributes: { subject: 'Spring is here — 30% off' } + ) + + puts "Campaign created: #{campaign.id} (#{campaign.current_state})" + - lang: csharp + label: .NET + source: | + using Mailtrap; + using Mailtrap.EmailCampaigns.Models; + using Mailtrap.EmailCampaigns.Requests; + + using var mailtrapFactory = new MailtrapClientFactory("YOUR_API_KEY"); + var client = mailtrapFactory.CreateClient(); + + var request = new CreateEmailCampaignRequest + { + Name = "Spring Sale", + DomainId = 4321, + FromDisplayName = "Acme Marketing", + FromLocalPart = "news", + ReplyTo = new ReplyTo + { + DisplayName = "Acme Support", + LocalPart = "support", + Domain = "acme.com" + }, + TemplateAttributes = new EmailCampaignTemplateAttributes + { + Subject = "Spring is here — 30% off" + } + }; + + var campaign = await client.EmailCampaigns().Create(request); + + Console.WriteLine($"Campaign created: {campaign.Id} ({campaign.CurrentState})"); + - lang: java + label: Java + source: | + import io.mailtrap.config.MailtrapConfig; + import io.mailtrap.factory.MailtrapClientFactory; + import io.mailtrap.model.request.emailcampaigns.CreateEmailCampaign; + import io.mailtrap.model.request.emailcampaigns.TemplateAttributes; + import io.mailtrap.model.response.emailcampaigns.ReplyTo; + + var config = new MailtrapConfig.Builder() + .token("YOUR_API_KEY") + .build(); + + var client = MailtrapClientFactory.createMailtrapClient(config); + var campaigns = client.emailCampaignsApi().emailCampaigns(); + + var created = campaigns.createEmailCampaign( + CreateEmailCampaign.builder() + .name("Spring Sale") + .domainId(4321L) + .fromDisplayName("Acme Marketing") + .fromLocalPart("news") + .replyTo(ReplyTo.builder() + .displayName("Acme Support") + .localPart("support") + .domain("acme.com") + .build()) + .templateAttributes(TemplateAttributes.builder() + .subject("Spring is here — 30% off") + .build()) + .build()); + + System.out.println("Campaign created: " + created.getData().getId()); "/api/email_campaigns/{email_campaign_id}": get: operationId: getEmailCampaign @@ -133,6 +378,80 @@ paths: source: | curl -X GET "https://mailtrap.io/api/email_campaigns/4567" \ -H 'Api-Token: YOUR_API_KEY' + - lang: javascript + label: Node.js + source: | + import { MailtrapClient } from "mailtrap"; + + const client = new MailtrapClient({ token: "YOUR_API_KEY" }); + + const campaign = await client.emailCampaigns.get(4567); + + console.log(`${campaign.data.name}: ${campaign.data.current_state}`); + - lang: php + label: PHP + source: | + emailCampaigns($accountId); + + $response = $emailCampaigns->getEmailCampaign(4567); + + var_dump(ResponseHelper::toArray($response)); + - lang: python + label: Python + source: | + import mailtrap as mt + + client = mt.MailtrapClient(token="YOUR_API_KEY") + campaigns = client.email_campaigns_api.email_campaigns + + campaign = campaigns.get_by_id(email_campaign_id=4567) + + print(f"{campaign.name}: {campaign.current_state}") + - lang: ruby + label: Ruby + source: | + require 'mailtrap' + + client = Mailtrap::Client.new(api_key: 'YOUR_API_KEY') + email_campaigns = Mailtrap::EmailCampaignsAPI.new(client) + + campaign = email_campaigns.get(4567) + + puts "#{campaign.name}: #{campaign.current_state}" + - lang: csharp + label: .NET + source: | + using Mailtrap; + + using var mailtrapFactory = new MailtrapClientFactory("YOUR_API_KEY"); + var client = mailtrapFactory.CreateClient(); + + var campaign = await client.EmailCampaign(4567).GetDetails(); + + Console.WriteLine($"{campaign.Name}: {campaign.CurrentState}"); + - lang: java + label: Java + source: | + import io.mailtrap.config.MailtrapConfig; + import io.mailtrap.factory.MailtrapClientFactory; + + var config = new MailtrapConfig.Builder() + .token("YOUR_API_KEY") + .build(); + + var client = MailtrapClientFactory.createMailtrapClient(config); + var campaigns = client.emailCampaignsApi().emailCampaigns(); + + var campaign = campaigns.getEmailCampaign(4567L); + + System.out.println(campaign.getData().getCurrentState()); patch: operationId: updateEmailCampaign summary: Update an email campaign @@ -186,6 +505,173 @@ paths: "body_html": "

Hi {{first_name}}!

Unsubscribe

" } }' + - lang: javascript + label: Node.js + source: | + import { MailtrapClient } from "mailtrap"; + + const client = new MailtrapClient({ token: "YOUR_API_KEY" }); + + const updated = await client.emailCampaigns.update(4567, { + name: "Spring Sale (updated)", + template_attributes: { + subject: "New subject", + body_html: + '

Hi {{first_name}}!

Unsubscribe

', + merge_tags: ["first_name"] + }, + delivery_mode: "gradual", + delivery_options: { emails_per_hour: 1000 }, + contact_list_ids: [55, 56], + contact_segment_ids: [12] + }); + + console.log(`Campaign updated: ${updated.data.name}`); + - lang: php + label: PHP + source: | + emailCampaigns($accountId); + + $response = $emailCampaigns->updateEmailCampaign(4567, new UpdateEmailCampaign( + name: 'Spring Sale (updated)', + deliveryMode: EmailCampaignInterface::DELIVERY_MODE_GRADUAL, + deliveryOptions: ['emails_per_hour' => 1000], + templateAttributes: new TemplateAttributes( + subject: 'New subject', + bodyHtml: '

Hi {{first_name}}!

' + . '

Unsubscribe

', + mergeTags: ['first_name'], + ), + contactListIds: [55, 56], + contactSegmentIds: [12], + )); + + var_dump(ResponseHelper::toArray($response)); + - lang: python + label: Python + source: | + import mailtrap as mt + + client = mt.MailtrapClient(token="YOUR_API_KEY") + campaigns = client.email_campaigns_api.email_campaigns + + updated = campaigns.update( + email_campaign_id=4567, + campaign_params=mt.UpdateEmailCampaignParams( + name="Spring Sale (updated)", + delivery_mode="gradual", + delivery_options=mt.EmailCampaignDeliveryOptions(emails_per_hour=1000), + contact_list_ids=[55, 56], + contact_segment_ids=[12], + template_attributes=mt.EmailCampaignTemplateAttributes( + subject="New subject", + body_html=( + "

Hi {{first_name}}!

" + '

Unsubscribe

' + ), + merge_tags=["first_name"] + ) + ) + ) + + print(f"Campaign updated: {updated.name}") + - lang: ruby + label: Ruby + source: | + require 'mailtrap' + + client = Mailtrap::Client.new(api_key: 'YOUR_API_KEY') + email_campaigns = Mailtrap::EmailCampaignsAPI.new(client) + + campaign = email_campaigns.update( + 4567, + name: 'Spring Sale (updated)', + template_attributes: { + subject: 'New subject', + body_html: '

Hi {{first_name}}!

' \ + '

Unsubscribe

', + merge_tags: ['first_name'] + }, + delivery_mode: 'gradual', + delivery_options: { emails_per_hour: 1000 }, + contact_list_ids: [55, 56], + contact_segment_ids: [12] + ) + + puts "Campaign updated: #{campaign.name}" + - lang: csharp + label: .NET + source: | + using Mailtrap; + using Mailtrap.EmailCampaigns.Models; + using Mailtrap.EmailCampaigns.Requests; + + using var mailtrapFactory = new MailtrapClientFactory("YOUR_API_KEY"); + var client = mailtrapFactory.CreateClient(); + + var request = new UpdateEmailCampaignRequest + { + Name = "Spring Sale (updated)", + DeliveryMode = DeliveryMode.Gradual, + DeliveryOptions = new EmailCampaignDeliveryOptions { EmailsPerHour = 1000 }, + TemplateAttributes = new EmailCampaignTemplateAttributes + { + Subject = "New subject", + BodyHtml = "

Hi {{first_name}}!

" + + "

Unsubscribe

", + MergeTags = ["first_name"] + }, + ContactListIds = [55, 56], + ContactSegmentIds = [12] + }; + + var campaign = await client.EmailCampaign(4567).Update(request); + + Console.WriteLine($"Campaign updated: {campaign.Name}"); + - lang: java + label: Java + source: | + import io.mailtrap.config.MailtrapConfig; + import io.mailtrap.factory.MailtrapClientFactory; + import io.mailtrap.model.DeliveryMode; + import io.mailtrap.model.request.emailcampaigns.TemplateAttributes; + import io.mailtrap.model.request.emailcampaigns.UpdateEmailCampaign; + import io.mailtrap.model.response.emailcampaigns.DeliveryOptions; + import java.util.List; + + var config = new MailtrapConfig.Builder() + .token("YOUR_API_KEY") + .build(); + + var client = MailtrapClientFactory.createMailtrapClient(config); + var campaigns = client.emailCampaignsApi().emailCampaigns(); + + var updated = campaigns.updateEmailCampaign(4567L, + UpdateEmailCampaign.builder() + .name("Spring Sale (updated)") + .templateAttributes(TemplateAttributes.builder() + .subject("New subject") + .bodyHtml("

Hi {{first_name}}!

" + + "

Unsubscribe

") + .mergeTags(List.of("first_name")) + .build()) + .deliveryMode(DeliveryMode.GRADUAL) + .deliveryOptions(DeliveryOptions.builder().emailsPerHour(1000).build()) + .contactListIds(List.of(55L, 56L)) + .contactSegmentIds(List.of(12L)) + .build()); + + System.out.println("Campaign updated: " + updated.getData().getName()); delete: operationId: deleteEmailCampaign summary: Delete an email campaign @@ -219,6 +705,80 @@ paths: source: | curl -X DELETE "https://mailtrap.io/api/email_campaigns/4567" \ -H 'Api-Token: YOUR_API_KEY' + - lang: javascript + label: Node.js + source: | + import { MailtrapClient } from "mailtrap"; + + const client = new MailtrapClient({ token: "YOUR_API_KEY" }); + + await client.emailCampaigns.delete(4567); + + console.log("Campaign deleted"); + - lang: php + label: PHP + source: | + emailCampaigns($accountId); + + $response = $emailCampaigns->deleteEmailCampaign(4567); + + var_dump($response->getStatusCode()); // 204 + - lang: python + label: Python + source: | + import mailtrap as mt + + client = mt.MailtrapClient(token="YOUR_API_KEY") + campaigns = client.email_campaigns_api.email_campaigns + + deleted = campaigns.delete(email_campaign_id=4567) + + print(f"Campaign deleted: {deleted.id}") + - lang: ruby + label: Ruby + source: | + require 'mailtrap' + + client = Mailtrap::Client.new(api_key: 'YOUR_API_KEY') + email_campaigns = Mailtrap::EmailCampaignsAPI.new(client) + + email_campaigns.delete(4567) + + puts 'Campaign deleted' + - lang: csharp + label: .NET + source: | + using Mailtrap; + + using var mailtrapFactory = new MailtrapClientFactory("YOUR_API_KEY"); + var client = mailtrapFactory.CreateClient(); + + await client.EmailCampaign(4567).Delete(); + + Console.WriteLine("Campaign deleted"); + - lang: java + label: Java + source: | + import io.mailtrap.config.MailtrapConfig; + import io.mailtrap.factory.MailtrapClientFactory; + + var config = new MailtrapConfig.Builder() + .token("YOUR_API_KEY") + .build(); + + var client = MailtrapClientFactory.createMailtrapClient(config); + var campaigns = client.emailCampaignsApi().emailCampaigns(); + + campaigns.deleteEmailCampaign(4567L); + + System.out.println("Campaign deleted"); "/api/email_campaigns/{email_campaign_id}/start": post: operationId: startEmailCampaign @@ -252,6 +812,80 @@ paths: source: | curl -X POST "https://mailtrap.io/api/email_campaigns/4567/start" \ -H 'Api-Token: YOUR_API_KEY' + - lang: javascript + label: Node.js + source: | + import { MailtrapClient } from "mailtrap"; + + const client = new MailtrapClient({ token: "YOUR_API_KEY" }); + + const started = await client.emailCampaigns.start(4567); + + console.log(`State after start: ${started.data.current_state}`); + - lang: php + label: PHP + source: | + emailCampaigns($accountId); + + $response = $emailCampaigns->startEmailCampaign(4567); + + var_dump(ResponseHelper::toArray($response)); + - lang: python + label: Python + source: | + import mailtrap as mt + + client = mt.MailtrapClient(token="YOUR_API_KEY") + campaigns = client.email_campaigns_api.email_campaigns + + started = campaigns.start(email_campaign_id=4567) + + print(f"State after start: {started.current_state}") + - lang: ruby + label: Ruby + source: | + require 'mailtrap' + + client = Mailtrap::Client.new(api_key: 'YOUR_API_KEY') + email_campaigns = Mailtrap::EmailCampaignsAPI.new(client) + + campaign = email_campaigns.start(4567) + + puts "State after start: #{campaign.current_state}" + - lang: csharp + label: .NET + source: | + using Mailtrap; + + using var mailtrapFactory = new MailtrapClientFactory("YOUR_API_KEY"); + var client = mailtrapFactory.CreateClient(); + + var campaign = await client.EmailCampaign(4567).Start(); + + Console.WriteLine($"State after start: {campaign.CurrentState}"); + - lang: java + label: Java + source: | + import io.mailtrap.config.MailtrapConfig; + import io.mailtrap.factory.MailtrapClientFactory; + + var config = new MailtrapConfig.Builder() + .token("YOUR_API_KEY") + .build(); + + var client = MailtrapClientFactory.createMailtrapClient(config); + var campaigns = client.emailCampaignsApi().emailCampaigns(); + + var started = campaigns.startEmailCampaign(4567L); + + System.out.println("State after start: " + started.getData().getCurrentState()); "/api/email_campaigns/{email_campaign_id}/schedule": post: operationId: scheduleEmailCampaign @@ -294,6 +928,92 @@ paths: -H 'Api-Token: YOUR_API_KEY' \ -H 'Content-Type: application/json' \ -d '{ "datetime": "2026-06-01T09:00:00.000Z" }' + - lang: javascript + label: Node.js + source: | + import { MailtrapClient } from "mailtrap"; + + const client = new MailtrapClient({ token: "YOUR_API_KEY" }); + + const scheduled = await client.emailCampaigns.schedule(4567, { + datetime: "2026-06-01T09:00:00.000Z" + }); + + console.log(`Scheduled for: ${scheduled.data.current_state_metadata.scheduled_at}`); + - lang: php + label: PHP + source: | + emailCampaigns($accountId); + + $response = $emailCampaigns->scheduleEmailCampaign(4567, '2026-06-01T09:00:00.000Z'); + + var_dump(ResponseHelper::toArray($response)); + - lang: python + label: Python + source: | + import mailtrap as mt + + client = mt.MailtrapClient(token="YOUR_API_KEY") + campaigns = client.email_campaigns_api.email_campaigns + + scheduled = campaigns.schedule( + email_campaign_id=4567, + schedule_params=mt.ScheduleEmailCampaignParams(datetime="2026-06-01T09:00:00.000Z") + ) + + print(f"Scheduled for: {scheduled.current_state_metadata.scheduled_at}") + - lang: ruby + label: Ruby + source: | + require 'mailtrap' + + client = Mailtrap::Client.new(api_key: 'YOUR_API_KEY') + email_campaigns = Mailtrap::EmailCampaignsAPI.new(client) + + campaign = email_campaigns.schedule(4567, '2026-06-01T09:00:00.000Z') + + puts "State after schedule: #{campaign.current_state}" + - lang: csharp + label: .NET + source: | + using Mailtrap; + using Mailtrap.EmailCampaigns.Requests; + + using var mailtrapFactory = new MailtrapClientFactory("YOUR_API_KEY"); + var client = mailtrapFactory.CreateClient(); + + var request = new ScheduleEmailCampaignRequest( + DateTimeOffset.Parse("2026-06-01T09:00:00.000Z")); + + var campaign = await client.EmailCampaign(4567).Schedule(request); + + Console.WriteLine($"State after schedule: {campaign.CurrentState}"); + - lang: java + label: Java + source: | + import io.mailtrap.config.MailtrapConfig; + import io.mailtrap.factory.MailtrapClientFactory; + import io.mailtrap.model.request.emailcampaigns.ScheduleEmailCampaignRequest; + import java.time.OffsetDateTime; + + var config = new MailtrapConfig.Builder() + .token("YOUR_API_KEY") + .build(); + + var client = MailtrapClientFactory.createMailtrapClient(config); + var campaigns = client.emailCampaignsApi().emailCampaigns(); + + var scheduled = campaigns.scheduleEmailCampaign(4567L, + new ScheduleEmailCampaignRequest(OffsetDateTime.parse("2026-06-01T09:00:00.000Z"))); + + System.out.println(scheduled.getData().getCurrentStateMetadata().getScheduledAt()); "/api/email_campaigns/{email_campaign_id}/cancel": post: operationId: cancelEmailCampaign @@ -325,6 +1045,80 @@ paths: source: | curl -X POST "https://mailtrap.io/api/email_campaigns/4567/cancel" \ -H 'Api-Token: YOUR_API_KEY' + - lang: javascript + label: Node.js + source: | + import { MailtrapClient } from "mailtrap"; + + const client = new MailtrapClient({ token: "YOUR_API_KEY" }); + + const cancelled = await client.emailCampaigns.cancel(4567); + + console.log(`State after cancel: ${cancelled.data.current_state}`); + - lang: php + label: PHP + source: | + emailCampaigns($accountId); + + $response = $emailCampaigns->cancelEmailCampaign(4567); + + var_dump(ResponseHelper::toArray($response)); + - lang: python + label: Python + source: | + import mailtrap as mt + + client = mt.MailtrapClient(token="YOUR_API_KEY") + campaigns = client.email_campaigns_api.email_campaigns + + cancelled = campaigns.cancel(email_campaign_id=4567) + + print(f"State after cancel: {cancelled.current_state}") + - lang: ruby + label: Ruby + source: | + require 'mailtrap' + + client = Mailtrap::Client.new(api_key: 'YOUR_API_KEY') + email_campaigns = Mailtrap::EmailCampaignsAPI.new(client) + + campaign = email_campaigns.cancel(4567) + + puts "State after cancel: #{campaign.current_state}" + - lang: csharp + label: .NET + source: | + using Mailtrap; + + using var mailtrapFactory = new MailtrapClientFactory("YOUR_API_KEY"); + var client = mailtrapFactory.CreateClient(); + + var campaign = await client.EmailCampaign(4567).Cancel(); + + Console.WriteLine($"State after cancel: {campaign.CurrentState}"); + - lang: java + label: Java + source: | + import io.mailtrap.config.MailtrapConfig; + import io.mailtrap.factory.MailtrapClientFactory; + + var config = new MailtrapConfig.Builder() + .token("YOUR_API_KEY") + .build(); + + var client = MailtrapClientFactory.createMailtrapClient(config); + var campaigns = client.emailCampaignsApi().emailCampaigns(); + + var cancelled = campaigns.cancelEmailCampaign(4567L); + + System.out.println("State after cancel: " + cancelled.getData().getCurrentState()); "/api/email_campaigns/{email_campaign_id}/terminate": post: operationId: terminateEmailCampaign @@ -356,6 +1150,80 @@ paths: source: | curl -X POST "https://mailtrap.io/api/email_campaigns/4567/terminate" \ -H 'Api-Token: YOUR_API_KEY' + - lang: javascript + label: Node.js + source: | + import { MailtrapClient } from "mailtrap"; + + const client = new MailtrapClient({ token: "YOUR_API_KEY" }); + + const terminated = await client.emailCampaigns.terminate(4567); + + console.log(`State after terminate: ${terminated.data.current_state}`); + - lang: php + label: PHP + source: | + emailCampaigns($accountId); + + $response = $emailCampaigns->terminateEmailCampaign(4567); + + var_dump(ResponseHelper::toArray($response)); + - lang: python + label: Python + source: | + import mailtrap as mt + + client = mt.MailtrapClient(token="YOUR_API_KEY") + campaigns = client.email_campaigns_api.email_campaigns + + terminated = campaigns.terminate(email_campaign_id=4567) + + print(f"State after terminate: {terminated.current_state}") + - lang: ruby + label: Ruby + source: | + require 'mailtrap' + + client = Mailtrap::Client.new(api_key: 'YOUR_API_KEY') + email_campaigns = Mailtrap::EmailCampaignsAPI.new(client) + + campaign = email_campaigns.terminate(4567) + + puts "State after terminate: #{campaign.current_state}" + - lang: csharp + label: .NET + source: | + using Mailtrap; + + using var mailtrapFactory = new MailtrapClientFactory("YOUR_API_KEY"); + var client = mailtrapFactory.CreateClient(); + + var campaign = await client.EmailCampaign(4567).Terminate(); + + Console.WriteLine($"State after terminate: {campaign.CurrentState}"); + - lang: java + label: Java + source: | + import io.mailtrap.config.MailtrapConfig; + import io.mailtrap.factory.MailtrapClientFactory; + + var config = new MailtrapConfig.Builder() + .token("YOUR_API_KEY") + .build(); + + var client = MailtrapClientFactory.createMailtrapClient(config); + var campaigns = client.emailCampaignsApi().emailCampaigns(); + + var terminated = campaigns.terminateEmailCampaign(4567L); + + System.out.println("State after terminate: " + terminated.getData().getCurrentState()); "/api/email_campaigns/{email_campaign_id}/reset": post: operationId: resetEmailCampaign @@ -386,6 +1254,80 @@ paths: source: | curl -X POST "https://mailtrap.io/api/email_campaigns/4567/reset" \ -H 'Api-Token: YOUR_API_KEY' + - lang: javascript + label: Node.js + source: | + import { MailtrapClient } from "mailtrap"; + + const client = new MailtrapClient({ token: "YOUR_API_KEY" }); + + const reset = await client.emailCampaigns.reset(4567); + + console.log(`State after reset: ${reset.data.current_state}`); + - lang: php + label: PHP + source: | + emailCampaigns($accountId); + + $response = $emailCampaigns->resetEmailCampaign(4567); + + var_dump(ResponseHelper::toArray($response)); + - lang: python + label: Python + source: | + import mailtrap as mt + + client = mt.MailtrapClient(token="YOUR_API_KEY") + campaigns = client.email_campaigns_api.email_campaigns + + reset = campaigns.reset(email_campaign_id=4567) + + print(f"State after reset: {reset.current_state}") + - lang: ruby + label: Ruby + source: | + require 'mailtrap' + + client = Mailtrap::Client.new(api_key: 'YOUR_API_KEY') + email_campaigns = Mailtrap::EmailCampaignsAPI.new(client) + + campaign = email_campaigns.reset(4567) + + puts "State after reset: #{campaign.current_state}" + - lang: csharp + label: .NET + source: | + using Mailtrap; + + using var mailtrapFactory = new MailtrapClientFactory("YOUR_API_KEY"); + var client = mailtrapFactory.CreateClient(); + + var campaign = await client.EmailCampaign(4567).Reset(); + + Console.WriteLine($"State after reset: {campaign.CurrentState}"); + - lang: java + label: Java + source: | + import io.mailtrap.config.MailtrapConfig; + import io.mailtrap.factory.MailtrapClientFactory; + + var config = new MailtrapConfig.Builder() + .token("YOUR_API_KEY") + .build(); + + var client = MailtrapClientFactory.createMailtrapClient(config); + var campaigns = client.emailCampaignsApi().emailCampaigns(); + + var reset = campaigns.resetEmailCampaign(4567L); + + System.out.println("State after reset: " + reset.getData().getCurrentState()); "/api/email_campaigns/{email_campaign_id}/stats": get: operationId: getEmailCampaignStats @@ -424,6 +1366,102 @@ paths: source: | curl -X GET "https://mailtrap.io/api/email_campaigns/4567/stats?start_date=2026-05-01&end_date=2026-05-31" \ -H 'Api-Token: YOUR_API_KEY' + - lang: javascript + label: Node.js + source: | + import { MailtrapClient } from "mailtrap"; + + const client = new MailtrapClient({ token: "YOUR_API_KEY" }); + + const stats = await client.emailCampaigns.getStats(4567, { + start_date: "2026-05-01", + end_date: "2026-05-31" + }); + + console.log(`Delivered: ${stats.data.delivery_count}, opened: ${stats.data.open_count}`); + - lang: php + label: PHP + source: | + emailCampaigns($accountId); + + $response = $emailCampaigns->getEmailCampaignStats( + 4567, + startDate: '2026-05-01', + endDate: '2026-05-31' + ); + + var_dump(ResponseHelper::toArray($response)); + - lang: python + label: Python + source: | + import mailtrap as mt + + client = mt.MailtrapClient(token="YOUR_API_KEY") + campaigns = client.email_campaigns_api.email_campaigns + + stats = campaigns.get_stats( + email_campaign_id=4567, + params=mt.EmailCampaignStatsParams(start_date="2026-05-01", end_date="2026-05-31") + ) + + print(f"Delivered: {stats.delivery_count}, opened: {stats.open_count}") + - lang: ruby + label: Ruby + source: | + require 'mailtrap' + + client = Mailtrap::Client.new(api_key: 'YOUR_API_KEY') + email_campaigns = Mailtrap::EmailCampaignsAPI.new(client) + + stats = email_campaigns.stats(4567, start_date: '2026-05-01', end_date: '2026-05-31') + + puts "Delivered: #{stats.delivery_count}, opened: #{stats.open_count}" + - lang: csharp + label: .NET + source: | + using Mailtrap; + using Mailtrap.EmailCampaigns.Models; + + using var mailtrapFactory = new MailtrapClientFactory("YOUR_API_KEY"); + var client = mailtrapFactory.CreateClient(); + + var filter = new EmailCampaignStatsFilter + { + StartDate = "2026-05-01", + EndDate = "2026-05-31" + }; + + var stats = await client.EmailCampaign(4567).GetStats(filter); + + Console.WriteLine($"Delivered: {stats.DeliveryCount}, opened: {stats.OpenCount}"); + - lang: java + label: Java + source: | + import io.mailtrap.config.MailtrapConfig; + import io.mailtrap.factory.MailtrapClientFactory; + import io.mailtrap.api.emailcampaigns.EmailCampaignStatsFilter; + + var config = new MailtrapConfig.Builder() + .token("YOUR_API_KEY") + .build(); + + var client = MailtrapClientFactory.createMailtrapClient(config); + var campaigns = client.emailCampaignsApi().emailCampaigns(); + + var stats = campaigns.getEmailCampaignStats(4567L, + EmailCampaignStatsFilter.builder() + .startDate("2026-05-01") + .endDate("2026-05-31") + .build()); + + System.out.println(stats.getData()); components: securitySchemes: HeaderAuth: