# CreateCampaignDto

A model the API reference uses in a request or a response. The operation pages link every field typed as this model here.

Input for creating a campaign. The new campaign starts in `Draft`.

## Fields
- `merchantId` (string(uuid)) required: 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` (string) required: Operator-facing campaign name. Never shown to payers. (nullable, max length 128)
- `description` (string): Free-text description of the campaign. (nullable, max length 1024)
- `startsAtUtc` (string(date-time)): UTC moment the campaign starts accepting payments. `null` means it starts as soon as it  is activated. (nullable)
- `endsAtUtc` (string(date-time)): UTC moment the campaign stops accepting payments. `null` means it stays open until it is  ended explicitly. (nullable)
- `inactiveMessage` (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. (nullable, max length 512)
- `externalReference` (string): The merchant's own identifier for this campaign, carried through to reporting. (nullable, max length 128)
- `maxCompletions` (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. (nullable, greater than 0)
- `maxTotalAmount` (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. (nullable, greater than 0)
- `goalAmount` (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. (nullable, greater than 0)
- `refundsReduceTotal` (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` (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.
- `overrides` ([CampaignOverridesDto](https://devportal.demo.winkpg.io/docs/api/models/CampaignOverridesDto.md)): Branding and text laid over every hosted page and payment link in the campaign when it  renders. On an update, leave this out (or send `null`) to keep the overrides the campaign  already has; send an object to replace them all, where each member left out or `null`  inherits the member page's own value.
  Fields:
  - `panelBackColor` (string): Panel background color, for example `#ffffff`. (nullable, max length 20)
  - `panelBorderColor` (string): Panel border color. (nullable, max length 20)
  - `buttonColor` (string): Process button color. (nullable, max length 20)
  - `buttonBorderColor` (string): Process button border color. (nullable, max length 20)
  - `inputFieldBorderColor` (string): Input field border color. (nullable, max length 20)
  - `inputFieldBackgroundColor` (string): Input field background color. (nullable, max length 20)
  - `inputFieldFontSize` (integer(int32)): Input field font size, in pixels. (nullable, min 1, max 72)
  - `inputFieldFontColor` (string): Input field font color. (nullable, max length 20)
  - `inputFieldBackgroundFocusColor` (string): Input field background color while the field has focus. (nullable, max length 20)
  - `backColor` (string): Page background color. (nullable, max length 20)
  - `fontColor` (string): Body font color. (nullable, max length 20)
  - `font` (string): Body font family. (nullable, max length 50)
  - `fontSize` (integer(int32)): Body font size, in pixels. (nullable, min 1, max 72)
  - `headerFont` (string): Header font family. (nullable, max length 50)
  - `headerFontColor` (string): Header font color. (nullable, max length 20)
  - `headerFontSize` (integer(int32)): Header font size, in pixels. (nullable, min 1, max 72)
  - `headerBackColor` (string): Header background color. (nullable, max length 20)
  - `headerBorderColor` (string): Header border color. (nullable, max length 20)
  - `customCSS` (string): Custom CSS added after each member page's own custom CSS, so a campaign rule wins over a page  rule of equal specificity and the page's other rules keep applying. (nullable, max length 3000)
  - `headerText` (string): Text shown at the top of each member page. (nullable, max length 100)
  - `promoText` (string): Highlighted announcement or promotion text. (nullable, max length 200)
  - `promoLink` (string): HTTPS link the promotion text points at. (nullable, max length 200)
  - `processButtonText` (string): Text on the process button. (nullable, max length 50)
  - `callToActionText` (string): Text on the call-to-action button of a streamlined page. (nullable, max length 50)
  - `bannerImage` (string): Banner image: the filename the portal image uploader returns, for example  `3f2a5b90-7c41-4d2e-9f0a-1b8c6d5e4f21.png`. Not a URL. (nullable, max length 128)
  - `hideBanner` (boolean): Whether the banner is hidden. `true` hides it on every member page, `false` shows it  even on a page that hides its own, and `null` leaves each page's own setting. (nullable)

## See also

- [All documentation](https://devportal.demo.winkpg.io/llms.txt): the machine-readable index of every public page on this site.
