Update a Campaign
PUT
/api/campaigns/{id}
deprecated
Requires: Campaigns.Campaigns, Campaigns.Campaigns.Update, merchant scope.
Update an existing Campaign by id
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 UpdateCampaignDto. See the Request body section below for its fields.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
id
required |
path | string (uuid) | |
suppressNulls
required |
query | boolean | If true, omit properties with null values. |
Request body
application/json
, required
| Field | Type | Description |
|---|---|---|
merchantId
required |
string (uuid) | The merchant that owns this campaign. Required on create, and immutable afterwards: an update that names a different merchant is refused rather than silently moving the campaign and every link pointing at it. nullable |
name
required |
string | Operator-facing campaign name. Never shown to payers. nullablemax length 128 |
description
required |
string | Free-text description of the campaign. nullablemax length 1024 |
startsAtUtc
required |
string (date-time) | UTC moment the campaign starts accepting payments. `null` means it starts as soon as it is activated. nullable |
endsAtUtc
required |
string (date-time) | UTC moment the campaign stops accepting payments. `null` means it stays open until it is ended explicitly. nullable |
inactiveMessage
required |
string | Payer-facing message shown when someone opens a member link while the campaign is not accepting payments. `null` falls back to the platform default copy. nullablemax length 512 |
externalReference
required |
string | The merchant's own identifier for this campaign, carried through to reporting. nullablemax length 128 |
maxCompletions
required |
integer (int32) | The number of approved payments at which the campaign ends on its own, or `null` for no completion cap. Must be greater than zero when set. Enforced exactly: the payment that would exceed it is refused at submit, and two payers cannot both take the last slot. nullablemin 0 |
maxTotalAmount
required |
number (double) | The net collected amount at which the campaign ends on its own, or `null` for no amount cap. Must be greater than zero when set. A payment already in flight when the cap is reached still completes, so the total can overshoot by the payments in flight at that instant. nullablemin 0 |
goalAmount
required |
number (double) | The amount the campaign is aiming to collect, or `null` for no goal. Must be greater than zero when set. Drives the progress bar and the `Campaign.Milestone` and `Campaign.GoalReached` notifications; reaching it never ends the campaign. nullablemin 0 |
refundsReduceTotal
required |
boolean | Whether refunds, voids and reversals reduce the collected total the caps and the goal are measured against. Off by default: the total only ever goes up. |
showProgress
required |
boolean | Whether the campaign's count, total and goal are shown to payers on its hosted pages and links, and published at `GET /api/campaigns/{id}/progress`. Off by default: nothing about the campaign leaves the merchant's own surfaces. |
concurrencyStamp
required |
string | nullable |
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.