Skip to content
You are reading the pinned copy of v1.0, which is also the latest release. Read the latest.

Campaigns (admin API)

Admin routes of the campaigns module. Every route needs a staff session and the permission named on it; send X-Resolve-Locale: false to receive every locale of a translatable field for editing.

List marketing campaigns

Parameters:

  • kind in query ("BROADCAST", "WINBACK", optional).
  • page in query (number, min 1, optional).
  • pageSize in query (number, min 1, optional).
  • status in query ("CANCELLED", "DRAFT", "FAILED", "SCHEDULED", "SENDING", "SENT", optional).

Responses:

  • 200: Campaigns retrieved.

Create a marketing campaign

Request body: CreateCampaignDto.

Responses:

  • 201: Created.
  • 400: Invalid input / invalid coupon.

Soft-delete a campaign

Parameters:

  • id in path (string, required).

Responses:

  • 204: Deleted.
  • 404: Campaign not found.

Get a campaign

Parameters:

  • id in path (string, required).

Responses:

  • 200: Campaign retrieved.
  • 404: Campaign not found.

Update a draft / scheduled campaign

Parameters:

  • id in path (string, required).

Request body: UpdateCampaignDto.

Responses:

  • 200: Updated.
  • 400: Invalid input / invalid coupon.
  • 404: Campaign not found.
  • 409: Campaign is not editable.

Render a draft campaign for every enabled locale (no send, no persist)

Parameters:

  • id in path (string, required).

Request body: PreviewCampaignDto.

Responses:

  • 200: Rendered preview.
  • 404: Campaign not found.

Send / start a campaign on the isolated campaign queue

Parameters:

  • id in path (string, required).

Responses:

  • 200: Sending started.
  • 404: Campaign not found.
  • 409: Campaign is not sendable.

Per-status send counts for a campaign

Parameters:

  • id in path (string, required).

Responses:

  • 200: Stats retrieved.

Send a test of this campaign to your own inbox

Parameters:

  • id in path (string, required).

Request body: SendTestCampaignDto.

Responses:

  • 200: Test sent.
  • 400: No recipient email on file.
  • 404: Campaign not found.
  • fr (string, optional).
  • en (string, optional).
  • ar (string, optional).
  • default (string, optional).
  • name (string, min length 1, max length 200, required).
  • subject (CampaignTranslatableDto, required).
  • body (CampaignTranslatableDto, required).
  • segment ("ACTIVE", "ALL_CONFIRMED", "AT_RISK", "CHURNED", "LAPSED", "LOYAL", "NEW", required).
  • couponCode (string, max length 100, nullable, optional).
  • scheduledAt (string, nullable, optional).
  • locale ("ar", "en", "fr", optional).
  • name (string, min length 1, max length 200, optional).
  • subject (CampaignTranslatableDto, optional).
  • body (CampaignTranslatableDto, optional).
  • segment ("ACTIVE", "ALL_CONFIRMED", "AT_RISK", "CHURNED", "LAPSED", "LOYAL", "NEW", optional).
  • couponCode (string, max length 100, nullable, optional).
  • scheduledAt (string, nullable, optional).
As seen on Open Source Alternatives The Merchant Engine badge