Models and Errors
Models, callbacks, stores, and errors exposed by the GrowSurf iOS SDK.
This reference documents the models, callbacks, advanced protocols, stores, and errors exposed by the GrowSurf iOS SDK.
Core models
GrowSurfConfiguration
campaignId
String
GrowSurf program ID.
publicKey
String
Mobile SDK public key.
baseURL
URL
Mobile SDK API base URL.
GrowSurfAttribution
referredBy
String?
Referrer participant ID or vanity key.
ref
String?
Referrer value mirrored for provider compatibility.
unique
Bool?
Whether the attribution provider marked the click as unique.
provider
String?
Attribution provider name.
clickId
String?
Provider click ID.
GrowSurfParticipantInput
email
String
Participant email address.
firstName
String?
Participant first name.
lastName
String?
Participant last name.
referredBy
String?
Explicit referrer value.
attribution
GrowSurfAttribution?
Explicit attribution payload.
metadata
[String: String]?
Custom metadata to store on the participant.
mobileInstanceId is generated and sent by the SDK automatically. It is not part of GrowSurfParticipantInput.
GrowSurfParticipantUpdateInput
firstName
String?
Updated first name.
lastName
String?
Updated last name.
metadata
[String: String]?
Updated metadata.
GrowSurfCampaign
id
String
name
String?
type
String?
referralCount
Int?
participantCount
Int?
impressionCount
Int?
inviteCount
Int?
winnerCount
Int?
currencyISO
String?
status
String?
rewards
[GrowSurfCampaignReward]
GrowSurfCampaignReward
id
String?
type
String?
title
String?
description
String?
referralDescription
String?
isUnlimited
Bool?
limit
Int?
conversionsRequired
Int?
numberOfWinners
Int?
imageUrl
String?
order
Int?
limitDuration
String?
nextMilestonePrefix
String?
nextMilestoneSuffix
String?
couponCode
String?
referredRewardUpfront
Bool?
GrowSurfParticipant
id
String
email
String?
firstName
String?
lastName
String?
shareUrl
String?
paypalEmailAddress
String?
referralCount
Int?
inviteCount
Int?
monthlyReferralCount
Int?
prevMonthlyReferralCount
Int?
rank
Int?
monthlyRank
Int?
prevMonthlyRank
Int?
vanityKeys
[String]?
unreadCommissionsCount
Int?
unreadPayoutsCount
Int?
GrowSurfCreateParticipantResponse
participantToken
String?
expiresIn
Int?
participant
GrowSurfParticipant?
isNew
Bool?
requiresParticipantToken
Bool?
window
GrowSurfWindowResponse?
GrowSurfAddReferredParticipantResponse
added
Bool
validReferral
Bool
referredBy
String?
notAddedReason
GrowSurfAddReferredParticipantNotAddedReason?
participantToken
String?
expiresIn
Int?
participant
GrowSurfParticipant?
isNew
Bool?
requiresParticipantToken
Bool?
GrowSurfAddReferredParticipantNotAddedReason
.noReferrer
no_referrer
.invalidReferrer
invalid_referrer
.participantAlreadyExists
participant_already_exists
Referral and reward models
GrowSurfReferralsResponse
referrals, limit, nextOffset, more
GrowSurfReferral
id, email, referralStatus, createdAt, updatedAt, referralTriggeredAt, referralCreditExpiredAt
GrowSurfRewardsResponse
rewards, limit, nextId
GrowSurfReward
id, status, unread, approved, rewardId, isReferrer, title, description
GrowSurfSuccessResponse
success, message
GrowSurfAttributionResponse
success, valid, referredBy
GrowSurfValidateReferrerResponse
success, valid, referredBy
GrowSurfInviteResponse
success, message, messageType
GrowSurf window models
GrowSurfWindowIdentity
.anonymous
Loads the window without participant identity.
.participantFields(GrowSurfParticipantInput)
Creates a new participant from fields before loading the window. Existing participants need a participant token; use .existingParticipantToken(String) with a token created by your backend or returned by the SDK.
.existingParticipantToken(String)
Uses a participant token created by your backend or by the SDK.
GrowSurfWindowTheme
primaryColorHex
String?
Optional primary color override, such as #13795B.
colorScheme
GrowSurfWindowTheme.ColorScheme
.system, .light, or .dark.
cornerRadius
Double?
Optional corner radius override.
presentationStyle
GrowSurfWindowTheme.PresentationStyle
.automatic, .fullScreen, or .sheet.
GrowSurfWindowCallbacks
onOpen
() -> Void
onClose
() -> Void
onParticipantCreated
(GrowSurfParticipant, String?) -> Void
onShareTracked
(String) -> Void
onInviteSent
() -> Void
onPayoutOrSettingsAction
(String) -> Void
onError
(Error) -> Void
GrowSurfWindowController
close()
Closes the presented GrowSurf window.
GrowSurfWindowResponse
version
String?
campaign
GrowSurfWindowCampaign?
signup
GrowSurfWindowSignup?
visibleSections
[String: Bool]
share
GrowSurfWindowShareConfig?
participant
GrowSurfParticipant?
unreadCounts
GrowSurfWindowUnreadCounts?
payoutSettings
GrowSurfPayoutSettings?
content
[String: GrowSurfJSONValue]?
referrals
GrowSurfReferralsResponse?
rewards
GrowSurfRewardsResponse?
leaderboard
GrowSurfLeaderboardResponse?
referralSummary
GrowSurfReferralSummary?
affiliateSummary
GrowSurfAffiliateSummary?
commissions
GrowSurfCommissionsResponse?
payouts
GrowSurfPayoutsResponse?
Additional window models
GrowSurfWindowCampaign
id, type, status, companyName, companyLogoImageUrl, goal, currencyISO, shouldDisplayPoweredBy, rewardTypes, rewards, design
GrowSurfWindowSignup
state, canCreateParticipant
GrowSurfWindowShareConfig
preferredUrl, fallbackUrl, nativeShare, channels, invite
GrowSurfWindowShareChannel
type, label, order, subject, message, nativePreferred
GrowSurfWindowUnreadCounts
commissions, payouts
GrowSurfPayoutSettings
provider, paypalEmailAddress, canRequestPaypalConfirmEmail, hostedActions, requiredActions, taxInfo
GrowSurfTaxInfo
status, formType
GrowSurfTaxSessionResponse
hostedUrl, status
GrowSurfLeaderboardResponse
participants, offsetKey, nextKey, page, hasMore
GrowSurfLeaderboardParticipant
id, rank, monthlyRank, prevMonthlyRank, email, isWinner, referralCount, monthlyReferralCount, prevMonthlyReferralCount, pendingReferralCount, revenueAmount, commissionAmount
GrowSurfReferralSummary
referrals, leads, expiredReferrals, clicks, rewardsEarned, pendingRewards, invitesSent, currencyISO
GrowSurfAffiliateSummary
referralRevenue, totalPaidOut, upcomingPayout, referrals, leads, clicks, currencyISO
GrowSurfCommissionsResponse
commissions, totalCount, totalAmount, summary, nextId
GrowSurfCommission
id, amount, currencyISO, status, holdDuration, createdAt, amountInCampaignCurrency, saleAmountAmountInCampaignCurrency, campaignCurrencyISO, unread
GrowSurfPayoutsResponse
payouts, totalCount, totalAmount, summary, nextId
GrowSurfPayout
id, amount, currencyISO, status, queuedAt, createdAt, amountInCampaignCurrency, campaignCurrencyISO, unread
GrowSurfJSONValue
.string, .number, .bool, .object, .array, .null
Advanced protocols and stores
Use these APIs for tests or custom storage/transport integrations.
GrowSurfHTTPClient
data(for:)
GrowSurfTokenStore
sessionToken(), participantToken(), saveSessionToken(_:), saveParticipantToken(_:), clear()
GrowSurfAttributionStore
attribution(), saveAttribution(_:), clearAttribution()
GrowSurfMobileInstanceIdStore
mobileInstanceId()
GrowSurfWindowCacheStore
windowData(cacheKey:now:), saveWindowData(_:cacheKey:expiresAt:), clear()
GrowSurfUserDefaultsAttributionStore
UserDefaults-backed attribution store.
GrowSurfUserDefaultsMobileInstanceIdStore
UserDefaults-backed mobile instance ID store.
GrowSurfUserDefaultsWindowCacheStore
UserDefaults-backed window cache store.
GrowSurfFileWindowCacheStore
File-backed window cache store used by default.
GrowSurfKeychainTokenStore
Keychain-backed token store used by default.
Errors
GrowSurfError can be:
invalidURLmissingSessionTokenmissingParticipantTokeninvalidResponsehttpStatus(Int, String?)
Last updated
Was this helpful?