AugusteVN.Modules.EmailCampaigns.Api
1.0.7
dotnet add package AugusteVN.Modules.EmailCampaigns.Api --version 1.0.7
NuGet\Install-Package AugusteVN.Modules.EmailCampaigns.Api -Version 1.0.7
<PackageReference Include="AugusteVN.Modules.EmailCampaigns.Api" Version="1.0.7" />
<PackageVersion Include="AugusteVN.Modules.EmailCampaigns.Api" Version="1.0.7" />
<PackageReference Include="AugusteVN.Modules.EmailCampaigns.Api" />
paket add AugusteVN.Modules.EmailCampaigns.Api --version 1.0.7
#r "nuget: AugusteVN.Modules.EmailCampaigns.Api, 1.0.7"
#:package AugusteVN.Modules.EmailCampaigns.Api@1.0.7
#addin nuget:?package=AugusteVN.Modules.EmailCampaigns.Api&version=1.0.7
#tool nuget:?package=AugusteVN.Modules.EmailCampaigns.Api&version=1.0.7
AugusteVN.Modules.EmailCampaigns.Api
Minimal API endpoints for email campaigns, templates, subscribers, sent emails, and jobs with authorization, validation, and email metric tracking.
Part of the AugusteVN Modules collection.
Extension Methods
AddEmailCampaignsApi
Registers EmailCampaigns API services into the DI container.
public static void AddEmailCampaignsApi(this IServiceCollection services, IConfiguration configuration)
What it registers:
| Service | Lifetime | Description |
|---|---|---|
Validators from _Shared assembly |
Transient | FluentValidation validators for all request DTOs |
EmailCampaignsConfig |
Options | Bound from configuration (ApiBaseUrl, FrontendBaseUrl) |
MemoryCache |
Singleton | In-memory cache for API responses |
MapEmailCampaignsEndpoints
Maps all EmailCampaigns API endpoint groups to the route builder.
public static void MapEmailCampaignsEndpoints(this IEndpointRouteBuilder routeBuilder)
Delegates to five private mapping methods, each creating a tagged route group with an ApiExceptionFilter:
| Method | Route Group |
|---|---|
MapCampaignsEndpoints() |
ApiRoutes.EmailCampaigns |
MapEmailTemplatesEndpoints() |
ApiRoutes.EmailTemplates |
MapSentEmailsEndpoints() |
ApiRoutes.SentEmails |
MapEmailSubscribersEndpoints() |
ApiRoutes.EmailSubscribers |
MapEmailJobsEndpoints() |
ApiRoutes.EmailJobs |
API Routes
EmailCampaigns (/EmailCampaigns)
| Method | Route | Handler | Auth | Description |
|---|---|---|---|---|
GET |
/EmailCampaigns/ |
GetEmailCampaignsEndpoint |
— | Paginated listing of all campaigns |
GET |
/EmailCampaigns/{id} |
GetEmailCampaignByIdEndpoint |
— | Single campaign by ID with nested templates |
POST |
/EmailCampaigns/ |
CreateEmailCampaignEndpoint |
ManageEmailCampaigns |
Create a new campaign |
PUT |
/EmailCampaigns/{id}/status |
UpdateEmailCampaignStatusEndpoint |
ManageEmailCampaigns |
Update campaign status (NotActive / InTestMode / Active) |
EmailTemplates (/EmailTemplates)
| Method | Route | Handler | Auth | Description |
|---|---|---|---|---|
GET |
/EmailTemplates/ |
GetEmailTemplatesEndpoint |
— | Listing of all email templates |
GET |
/EmailTemplates/{id} |
GetEmailTemplateByIdEndpoint |
— | Single template by ID |
POST |
/EmailTemplates/ |
CreateEmailTemplateEndpoint |
ManageEmailCampaigns |
Create a new template |
PUT |
/EmailTemplates/{id} |
UpdateEmailTemplateEndpoint |
ManageEmailCampaigns |
Update an existing template |
PUT |
/EmailTemplates/{id}/status |
UpdateEmailTemplateStatusEndpoint |
ManageEmailCampaigns |
Update template status |
POST |
/EmailTemplates/test |
TestEmailTemplateEndpoint |
ManageEmailCampaigns |
Send a test email using a template |
SentEmails (/SentEmails)
| Method | Route | Handler | Auth | Description |
|---|---|---|---|---|
GET |
/SentEmails/ |
GetSentEmailsEndpoint |
— | Listing of sent emails with optional filters (template, campaign, job, creator) |
GET |
/SentEmails/metrics |
GetSentEmailMetricsEndpoint |
— | Email metrics (reads, clicks, unsubs) with optional filters |
GET |
/SentEmails/{encodedParams} |
TrackSentEmailEndpoint |
— | Tracking pixel / proxy redirect — decodes Base64 params to record metric and redirect or return a 1x1 pixel |
EmailSubscribers (/EmailSubscribers)
| Method | Route | Handler | Auth | Description |
|---|---|---|---|---|
GET |
/EmailSubscribers/ |
GetEmailSubscribersEndpoint |
— | Listing of all subscribers |
GET |
/EmailSubscribers/{id} |
GetEmailSubscriberByIdEndpoint |
— | Single subscriber by ID |
GET |
/EmailSubscribers/count |
CountEmailSubscribersEndpoint |
— | Count subscribers with optional filters |
PUT |
/EmailSubscribers/{id}/subscription |
UpdateEmailSubscriptionEndpoint |
— | Update subscriber list memberships (opt in/out per category) |
POST |
/EmailSubscribers/ |
UpsertEmailSubscriberEndpoint |
— | Create or update a subscriber by email |
DELETE |
/EmailSubscribers/{id} |
DeleteEmailSubscriberEndpoint |
ManageEmailSubscribers |
Permanently delete a subscriber |
EmailJobs (/EmailJobs)
| Method | Route | Handler | Auth | Description |
|---|---|---|---|---|
GET |
/EmailJobs/ |
GetEmailJobsEndpoint |
— | Listing of all email jobs |
POST |
/EmailJobs/ |
CreateEmailJobEndpoint |
ManageEmailCampaigns |
Create a new email job |
PUT |
/EmailJobs/{id}/status |
UpdateEmailJobStatusEndpoint |
ManageEmailCampaigns |
Update job status |
Endpoint Filters
| Filter | Usage |
|---|---|
ApiExceptionFilter |
Global exception handler applied to all endpoint groups, logging errors and returning Problem responses |
Tracking Mechanism
The SentEmails/{encodedParams} endpoint serves dual purposes:
- Tracking pixel — Returns a 1x1 transparent image to track email opens (
Readmetric) - Link proxy — Redirects to the original URL while recording a
LinkClickedmetric
The encodedParams is a Base64-encoded string with the format: {traceId}/{metricType}/{encodedRedirectUrl}.
Registration
// Program.cs
builder.Services.AddEmailCampaignsApi(builder.Configuration);
app.MapEmailCampaignsEndpoints();
Installation
dotnet add package AugusteVN.Modules.EmailCampaigns.Api
Dependencies
- AugusteVN.Modules.EmailCampaigns._Shared
- AugusteVN.Modules.EmailCampaigns.Features
AugusteVN.Api.EndpointFilters
Links
- EmailCampaigns module overview
- EmailCampaigns._Shared
- EmailCampaigns.Database
- EmailCampaigns.Features
- EmailCampaigns.Templates
- EmailCampaigns._Shared.Spa
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- AugusteVN._Shared.Extensions (>= 1.1.1)
- AugusteVN.Api.Auth.Extensions (>= 1.1.0)
- AugusteVN.Api.EndpointFilters (>= 1.1.0)
- AugusteVN.CQRS.Extensions (>= 1.1.0)
- AugusteVN.MailKit.SmtpMailer (>= 1.2.0)
- AugusteVN.Modules.EmailCampaigns._Shared (>= 1.0.7)
- AugusteVN.Modules.EmailCampaigns.Database.EfCore (>= 1.0.7)
- AugusteVN.Modules.EmailCampaigns.Database.Mongo (>= 1.0.7)
- AugusteVN.Modules.EmailCampaigns.Features (>= 1.0.7)
- FluentValidation.DependencyInjectionExtensions (>= 12.1.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.