SbPublicApiCampaignResponse

snowbee.SbPublicApiCampaignResponse

campaignTyperequired

The campaign's type, which decides how to read each sku's campaignPrice

Allowed values"NORMAL""THREE_FOR_TWO"
Example"THREE_FOR_TWO"
codeoptional
Example"SUMMER2024"
currencyIsoCoderequired

ISO 4217 currency code for campaign prices

Example"NOK"
idrequired
Example"01234567-89ab-cdef-0123-456789abcdef"
loyaltyProgramoptional

Loyalty program associated with this campaign

Show child fields
idrequired

Unique identifier of the loyalty program

Example"01234567-89ab-cdef-0123-456789abcdef"
namerequired
Example"Premium Members Club"
memberLevelsrequired

Eligible member levels. An empty list adds no level restriction; existing SKU membership requirements still apply. NORMAL explicitly means a program member with no configured level, not a non-member.

Show item fields
codeoptional

Provider member level code; null for NORMAL

idoptional

Configured member level identifier; null for NORMAL

nameoptional

Configured member level display name; null for NORMAL

typerequired

NORMAL is the base member level; CONFIGURED identifies a provider level

Allowed values"NORMAL""CONFIGURED"
namerequired
Example"Summer Sale 2024"
skusrequired
Show item fields
campaignPricerequired

The price this sku sells at while the campaign runs. For a NORMAL campaign that is the discounted price; for THREE_FOR_TWO the unit price does not change, so it is the sku's normal price and campaignType is what carries the offer

  • Format: BigDecimal
  • Pattern: ^-?\d+(\.\d{1,2})?$
Example"199.00"
loyaltyProgramMembershipRequiredrequired

Whether loyalty program membership is required to purchase this SKU at the campaign price

Examplefalse
skuIdrequired

Unique identifier of the SKU

Example"01234567-89ab-cdef-0123-456789abcdef"
statusrequired

Current status of the campaign

Allowed values"PLANNED""ACTIVE"
timeZonerequired

Tenant IANA time zone used to resolve campaign dates and times; also available from GET /settings. Changing the tenant time zone is not supported.

Example"Europe/Oslo"
validFromrequired

Selected start date, without a time or offset. Retained for compatibility; use validFromAt for the inclusive start boundary.

  • Format: date
Example"2024-06-01"
validFromAtrequired

Inclusive campaign start as an ISO 8601 datetime with the tenant time zone's UTC offset at this boundary. Apply the campaign when validFromAt <= now < validToAt.

  • Format: date-time
Example"2024-06-01T00:00:00+02:00"
validFromTimerequired

Inclusive start time on validFrom, in HH:mm; 24:00 means next calendar midnight

Example"00:00"
validTorequired

Selected end date, without a time or offset. Retained for compatibility; use validToAt for the exclusive end boundary.

  • Format: date
Example"2024-08-31"
validToAtrequired

Exclusive campaign end as an ISO 8601 datetime with the tenant time zone's UTC offset at this boundary. The campaign is inactive at this instant. A selected 24:00 resolves to midnight on the next calendar date.

  • Format: date-time
Example"2024-09-01T00:00:00+02:00"
validToTimerequired

Exclusive end time on validTo, in HH:mm; 24:00 means next calendar midnight

Example"24:00"
View raw schema
{
  "type": "object",
  "properties": {
    "campaignType": {
      "$ref": "#/components/schemas/snowbee.SbPublicApiCampaignType",
      "description": "The campaign's type, which decides how to read each sku's campaignPrice"
    },
    "code": {
      "type": [
        "null",
        "string"
      ],
      "example": "SUMMER2024",
      "title": "String"
    },
    "currencyIsoCode": {
      "type": "string",
      "description": "ISO 4217 currency code for campaign prices",
      "example": "NOK",
      "title": "String"
    },
    "id": {
      "type": "string",
      "example": "01234567-89ab-cdef-0123-456789abcdef",
      "title": "String"
    },
    "loyaltyProgram": {
      "description": "Loyalty program associated with this campaign",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/components/schemas/snowbee.SbPublicApiCampaignLoyaltyProgramResponse"
        }
      ]
    },
    "memberLevels": {
      "type": "array",
      "description": "Eligible member levels. An empty list adds no level restriction; existing SKU membership requirements still apply. NORMAL explicitly means a program member with no configured level, not a non-member.",
      "items": {
        "$ref": "#/components/schemas/snowbee.SbPublicApiCampaignMemberLevelResponse"
      },
      "title": "List<SbPublicApiCampaignMemberLevelResponse>"
    },
    "name": {
      "type": "string",
      "example": "Summer Sale 2024",
      "title": "String"
    },
    "skus": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/snowbee.SbPublicApiCampaignSkuResponse"
      },
      "title": "List<SbPublicApiCampaignSkuResponse>"
    },
    "status": {
      "$ref": "#/components/schemas/snowbee.SbPublicApiCampaignStatus",
      "description": "Current status of the campaign"
    },
    "timeZone": {
      "type": "string",
      "description": "Tenant IANA time zone used to resolve campaign dates and times; also available from GET /settings. Changing the tenant time zone is not supported.",
      "example": "Europe/Oslo",
      "title": "String"
    },
    "validFrom": {
      "type": "string",
      "format": "date",
      "description": "Selected start date, without a time or offset. Retained for compatibility; use validFromAt for the inclusive start boundary.",
      "example": "2024-06-01",
      "title": "LocalDate"
    },
    "validFromAt": {
      "type": "string",
      "format": "date-time",
      "description": "Inclusive campaign start as an ISO 8601 datetime with the tenant time zone's UTC offset at this boundary. Apply the campaign when validFromAt <= now < validToAt.",
      "example": "2024-06-01T00:00:00+02:00",
      "title": "String"
    },
    "validFromTime": {
      "type": "string",
      "description": "Inclusive start time on validFrom, in HH:mm; 24:00 means next calendar midnight",
      "example": "00:00",
      "title": "String"
    },
    "validTo": {
      "type": "string",
      "format": "date",
      "description": "Selected end date, without a time or offset. Retained for compatibility; use validToAt for the exclusive end boundary.",
      "example": "2024-08-31",
      "title": "LocalDate"
    },
    "validToAt": {
      "type": "string",
      "format": "date-time",
      "description": "Exclusive campaign end as an ISO 8601 datetime with the tenant time zone's UTC offset at this boundary. The campaign is inactive at this instant. A selected 24:00 resolves to midnight on the next calendar date.",
      "example": "2024-09-01T00:00:00+02:00",
      "title": "String"
    },
    "validToTime": {
      "type": "string",
      "description": "Exclusive end time on validTo, in HH:mm; 24:00 means next calendar midnight",
      "example": "24:00",
      "title": "String"
    }
  },
  "required": [
    "campaignType",
    "currencyIsoCode",
    "id",
    "memberLevels",
    "name",
    "skus",
    "status",
    "timeZone",
    "validFrom",
    "validFromAt",
    "validFromTime",
    "validTo",
    "validToAt",
    "validToTime"
  ],
  "title": "SbPublicApiCampaignResponse"
}