Creates a new draft campaign from an existing one, for running the same campaign again.
POST
/api/campaigns/{id}/clone
deprecated
Requires: Campaigns.Campaigns, Campaigns.Campaigns.Create, merchant scope.
The clone carries the source's description, external reference, inactive message, overrides and limits, and records the source as its `ClonedFromCampaignId`. It starts in draft with no schedule and no figures of its own: the window belongs to the new run and is set on the clone afterwards, and reporting is keyed on the campaign id, so nothing the source took is counted against the clone. The clone's name is the source's name with a copy marker appended; rename it with an ordinary update.
Example request
Every block below sends the same request. Replace {{BASE_URL}} with the address of the API you are calling and {{API_KEY}} with your own key.
The request body is a . See the Request body section below for its fields.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
id
required |
path | string (uuid) | The campaign to clone. |
suppressNulls
required |
query | boolean | If true, omit properties with null values. |
Request body
application/json
, required
| Field | Type | Description |
|---|
This request body has no documented fields.
Responses
200 OK
Body: CampaignDto
Each item has these fields.
| Field | Type | Description |
|---|---|---|
extraProperties
required |
object | nullableread only |
id
required |
string (uuid) | |
creationTime
required |
string (date-time) | The date and time when this entity was created. |
creatorId
required |
string (uuid) | The ID of the user who created this entity. nullable |
lastModificationTime
required |
string (date-time) | The date and time when this entity was last modified. nullable |
lastModifierId
required |
string (uuid) | The ID of the user who last modified this entity. nullable |
isDeleted
required |
boolean | Indicates whether this entity has been deleted. |
deleterId
required |
string (uuid) | The ID of the user who deleted this entity, if it is deleted. nullable |
deletionTime
required |
string (date-time) | The date and time when this entity was deleted, if it is deleted. nullable |
merchantId
required |
string (uuid) | The merchant that owns this campaign. |
name
required |
string | Operator-facing campaign name. nullable |
description
required |
string | Free-text description of the campaign. nullable |
status
required |
all of CampaignStatus | The campaign's status right now. A running campaign whose scheduled end has already passed reads as `Ended` here, without anything having been written to it. |
endedReason
required |
all of CampaignEndedReason | Why the campaign ended, or `null` while it has not ended. A campaign that ended only because its window closed reports `Schedule`. nullable |
endedAtUtc
required |
string (date-time) | UTC moment the campaign was ended or archived out of a running state, or `null` while it has not been. A campaign that reads as ended only because its window closed carries none: its `endsAtUtc` is its end. nullable |
isAcceptingPayments
required |
boolean | Whether member payment links may transact through this campaign right now. False before the scheduled start, and for any status other than active. |
startsAtUtc
required |
string (date-time) | UTC moment the campaign starts accepting payments. nullable |
endsAtUtc
required |
string (date-time) | UTC moment the campaign stops accepting payments. nullable |
inactiveMessage
required |
string | Payer-facing message shown while the campaign is not accepting payments. nullable |
externalReference
required |
string | The merchant's own identifier for this campaign. nullable |
clonedFromCampaignId
required |
string (uuid) | The campaign this one was cloned from, or `null` for a campaign created from scratch. The source may have been deleted since; the reference is kept either way. nullable |
maxCompletions
required |
integer (int32) | The number of approved payments at which the campaign ends on its own, or `null` for no completion cap. nullable |
maxTotalAmount
required |
number (double) | The net collected amount at which the campaign ends on its own, or `null` for no amount cap. nullable |
goalAmount
required |
number (double) | The amount the campaign is aiming to collect, or `null` for no goal. nullable |
refundsReduceTotal
required |
boolean | Whether refunds, voids and reversals reduce the collected total. |
showProgress
required |
boolean | Whether the campaign's progress is shown to payers and published anonymously. |
completedCount
required |
integer (int32) | Approved payments counted so far. Zero on a campaign that has taken none. |
approvedTotal
required |
number (double) | The approved base amount collected so far, before any refund. |
refundedTotal
required |
number (double) | The amount refunded, voided or reversed so far. |
netTotal
required |
number (double) | The total the caps and the goal are measured against: approved less refunded when refunds reduce the total, approved otherwise. |
lastCompletedAtUtc
required |
string (date-time) | When the most recent approved payment was counted (UTC), or `null` before the first. nullable |
percentOfGoal
required |
integer (int32) | The net total as a whole percentage of the goal, not capped at 100, or `null` without a goal. nullable |
concurrencyStamp
required |
string | Optimistic concurrency token. nullable |
This response has no documented body fields.
403 Forbidden
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
401 Unauthorized
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
400 Bad Request
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
404 Not Found
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
501 Not Implemented
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
500 Internal Server Error
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
default The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. See the error-code reference in this document's description for the values `error.code` can take.
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
429 The request was refused because a rate limit was exceeded. Wait at least the interval `Retry-After` names before retrying, then back off. Limits are tuned per deployment, so read the allowance from the response headers rather than assuming a fixed ceiling.
Body: RateLimitProblemDetails
Each item has these fields.
| Field | Type | Description |
|---|---|---|
type
required |
string | The problem type identifier. Always the same value: the failure is the status code itself, so there is no sub-type for a caller to branch on. nullable |
title
required |
string | A short, human-readable summary of the problem type. nullable |
status
required |
integer (int32) | The HTTP status code, repeated in the body as the problem-details format defines. |
detail
required |
string | A human-readable explanation of this occurrence of the problem. nullable |
retryAfterSeconds
required |
integer (int32) | How long to wait before retrying, in whole seconds, carrying the same figure as the `Retry-After` header. Always at least one: a value of zero would invite an immediate retry that is certain to be rejected again. |
This response has no documented body fields.
Errors
A failed request returns the platform error envelope. The
error reference lists every value
error.code can carry and shows the four response shapes.