> ## Documentation Index
> Fetch the complete documentation index at: https://docs.slm.m1amdocs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Campaign Data Members

The `Campaign` object encapsulates the information for a Campaign, including Campaign Type, Status, and Coupon Codes, if applicable.

The following table lists and describes the data members of the `Campaign` object.

| Data Members | Data Type | Description |
| - | - | - |
| `campaignId` | string | Your unique identifier for this Campaign object. **Note:** Read-only once the Campaign has been created. **Note:** use of the forward slash character (/) in merchant identifiers is not allowed. See [Merchant Identifiers](Merchant_Identifiers) for more information. |
| `campaignType` | `CampaignType` | Specifies whether the Campaign is a Coupon or Promotion. Valid `CampaignTypes` include: - `Undefined (Used only for errors.)` - `Coupon` - `Promotion` **Note:** Read-only once the Campaign is Active. |
| `couponCodePrefix` | string | Defines a prefix for the Subscribe randomly generated Coupon Code. |
| `couponCodeQuantity` | integer | The number of Coupon Codes to generate. |
| `couponCodeRequiresActivation` | Boolean | A Boolean flag which, if set to `true`, creates inactive Coupon Codes. (Inactive Coupon Codes must be individually activated before use.) (Default is `false`.) |
| `couponCodeSeparator` | string | The (optional) character used to separate the `couponCodePrefix` from the `CouponCode` string. This may be any printable, non-alphanumeric ASCII character. **Note:** If you use a separator character between the Coupon Prefix string and the Coupon Code string, do not also use one in your prefix, as that might cause confusion about what is actually the prefix. The coupon prefix and auto-generated code: Holiday-2015-934sd553, for example, is ambiguous. Holiday2015-934sd553 is not. |
| `cycles` | integer | The number of Billing Cycles to which the Campaign discount will be applied. **Note:** A `Campaign` must include either the `cycles` or the `expirationDate` data member. It cannot include both. **Note:** Subscribe does not support variable length Billing Cycles in Rolling Campaigns. The length of the cycles in each of the billing `periods` in the billing plan must be the same. For example, if the billing plan has three billing periods and the cycle length of the first billing period is 3 days, the cycle length of the second and third billing periods must also be 3 days. |
| `description` | string | Description of the Campaign. **Note:** Read-only once the Campaign is Active. |
| `eligibleBillingPlans` | `BillingPlan` | One or more Billing Plans eligible for this Campaign. See [BillingPlan Data Members](BillingPlan_Data_Members). |
| `eligibleProducts` | `Product` | One or more Products eligible for this Campaign. See [Product Data Members](Product_Data_Members). |
| `expirationDate` | dateTime | The date the Campaign discount expires. (If `null`, the `offerEndDate` will be used.) This date may be after the Campaign’s `offerEndDate`, but cannot be before it. **Note:** A `Campaign` must include either the `cycles` or the `expirationDate` data member, and it may not include both. |
| `flatAmountDiscount` | `CurrencyAmount` | Defines the discount, or discounts, as a `CurrencyAmount` pair object. **Note:** `flatAmountDiscount` and `percentageDiscount` are mutually exclusive. **Note:** A `Campaign` must include either the `flatAmountDiscount` or the `percentageDiscount` data member, and it may not include both. See [CurrencyAmount Subobject](CurrencyAmount_Subobject) for details. |
| `maxRedemptions` | integer | Sets the maximum number of different AutoBills to which a Campaign Code may be applied. |
| `name` | string | Name of the Campaign. **Note:** Read-only once the Campaign is Active. |
| `note` | string | An optional memo regarding the Campaign. |
| `offerEndDate` | dateTime | The last date on which the Campaign Code may be redeemed. |
| `offerStartDate` | dateTime | The first date on which the Campaign Code may be redeemed. |
| `percentageDiscount` | decimal | Defines the discount as a percentage of the original Product price. **Note:** `flatAmountDiscount` and `percentageDiscount` are mutually exclusive. **Note:** A `Campaign` must include either the `flatAmountDiscount` or the `percentageDiscount` data member, and it may not include both. |
| `promotionCode` | string | The redemption code associated with the Promotion. |
| `promotionCodeAliases` | string (0 or more) | An array of alternative redemption codes for the Promotion. **Note:** Setting this array will replace any existing list of aliases; it will not add new values to an existing list. |
| `restrictToNewSubscription` | Boolean | A Boolean flag which, if `true`, indicates that the Campaign offer applies only to new AutoBills, and may not be applied to existing AutoBills. |
| `state` | `CampaignState` | State of the campaign: - `Undefined` - `Active` - `Inactive` - `Pending` - `Complete` |
| `timeGrant` | `CampaignTimeGrant` | Defines the grant, as a `CampaignTimeGrant` object. This object includes two data members: - `quantity`: the number of time units to grant. - `type` = an enumeration of type `CampaignTimeGrantLengthType`, which may be Day, Week, Month, or Year |
| `VID` | string | Vindicia's Globally Unique Identifier (GUID) for this object. When creating a new `Campaign` object, leave this field blank; it will be automatically populated by Subscribe. |
| **Parent topic:**[The Campaign Object](../topics/The_Campaign_Object) | | |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.