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: