@encorekit/web-sdk 1.1.20 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +135 -0
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/umd/encore.min.js +1 -1
- package/dist/umd/encore.min.js.map +1 -1
- package/package.json +4 -3
- package/types/analytics/AnalyticsClient.d.ts +11 -1
- package/types/analytics/AnalyticsClient.d.ts.map +1 -1
- package/types/analytics/events.d.ts +215 -3
- package/types/analytics/events.d.ts.map +1 -1
- package/types/analytics/transport.d.ts.map +1 -1
- package/types/api/APIClient.d.ts +32 -7
- package/types/api/APIClient.d.ts.map +1 -1
- package/types/api/generated/types.d.ts +568 -11
- package/types/api/generated/types.d.ts.map +1 -1
- package/types/core/DisplayResolver.d.ts +121 -0
- package/types/core/DisplayResolver.d.ts.map +1 -0
- package/types/core/Encore.d.ts.map +1 -1
- package/types/core/OfferManager.d.ts +50 -9
- package/types/core/OfferManager.d.ts.map +1 -1
- package/types/core/PlacementBuilder.d.ts +24 -1
- package/types/core/PlacementBuilder.d.ts.map +1 -1
- package/types/core/useCase.d.ts +21 -0
- package/types/core/useCase.d.ts.map +1 -0
- package/types/core/version.d.ts +1 -1
- package/types/core/version.d.ts.map +1 -1
- package/types/types.d.ts +118 -8
- package/types/types.d.ts.map +1 -1
- package/types/ui/OfferCard.d.ts.map +1 -1
- package/types/ui/OfferCarousel.d.ts +23 -0
- package/types/ui/OfferCarousel.d.ts.map +1 -1
- package/types/ui/PrimerScreen.d.ts +34 -0
- package/types/ui/PrimerScreen.d.ts.map +1 -0
- package/types/ui/RedemptionScreen.d.ts +31 -7
- package/types/ui/RedemptionScreen.d.ts.map +1 -1
- package/types/ui/ThankYouLayout.d.ts +11 -0
- package/types/ui/ThankYouLayout.d.ts.map +1 -1
- package/types/ui/brandComponents.d.ts +45 -0
- package/types/ui/brandComponents.d.ts.map +1 -0
- package/types/ui/safeImageSrc.d.ts +15 -0
- package/types/ui/safeImageSrc.d.ts.map +1 -0
- package/types/ui/styles.d.ts.map +1 -1
|
@@ -83,7 +83,7 @@ export interface paths {
|
|
|
83
83
|
/** @description When true, this campaign is auto-granted to every newly created app. Independent of priority (which controls ranking order only). */
|
|
84
84
|
defaultCatalog: boolean;
|
|
85
85
|
/**
|
|
86
|
-
* @description
|
|
86
|
+
* @description Deprecated; always 'whitelist'. Retained because iOS/Android SDK decoders require the field. Access is governed solely by campaign_allowed_apps + enabled.
|
|
87
87
|
* @enum {string}
|
|
88
88
|
*/
|
|
89
89
|
targetingMode: "blacklist" | "whitelist";
|
|
@@ -317,6 +317,8 @@ export interface paths {
|
|
|
317
317
|
* @description SDUI variant ID from frontend config fetch. If provided, filters creatives by variant assignment. If not provided, no variant filtering is applied.
|
|
318
318
|
*/
|
|
319
319
|
variantId?: string;
|
|
320
|
+
/** @description Publisher-defined surface label for where the offer is shown (e.g. 'paywall', 'onboarding', 'settings'). Best-effort analytics context: when supplied it is stamped onto the sdk_offer_requested event so publisher analytics can break the funnel out by placement. Max 64 chars; omit for auto-generated/absent ids (they bucket as '(unlabeled)'). */
|
|
321
|
+
placementId?: string;
|
|
320
322
|
/** @description Strict unlock mode: only include campaigns whose postback latency is less than or equal to this value (in milliseconds). Omit for no filtering. Bounded 1000..120000. */
|
|
321
323
|
maxPostbackTimeMs?: number;
|
|
322
324
|
};
|
|
@@ -375,7 +377,7 @@ export interface paths {
|
|
|
375
377
|
/** @description When true, this campaign is auto-granted to every newly created app. Independent of priority (which controls ranking order only). */
|
|
376
378
|
defaultCatalog: boolean;
|
|
377
379
|
/**
|
|
378
|
-
* @description
|
|
380
|
+
* @description Deprecated; always 'whitelist'. Retained because iOS/Android SDK decoders require the field. Access is governed solely by campaign_allowed_apps + enabled.
|
|
379
381
|
* @enum {string}
|
|
380
382
|
*/
|
|
381
383
|
targetingMode: "blacklist" | "whitelist";
|
|
@@ -737,17 +739,17 @@ export interface paths {
|
|
|
737
739
|
clientId: string;
|
|
738
740
|
/** @description Conversation / thread identifier on the messaging platform. Used as the messaging-surface userId — drives bandit seeding for `/offers/message`, the transaction created at click time, and the userId dimension on the click event. */
|
|
739
741
|
chatId: string;
|
|
740
|
-
/** @description
|
|
742
|
+
/** @description Targeting attributes — countryCode and language are required; platform is optional (omit for a platform='api' app to receive all offers untrimmed). */
|
|
741
743
|
attributes: {
|
|
742
744
|
/** @description ISO 3166-1 alpha-2 country code (e.g., "US", "GB", "CA"). */
|
|
743
745
|
countryCode: string;
|
|
744
746
|
/** @description BCP 47 language tag — drives creative locale resolution (e.g., 'en', 'es'). */
|
|
745
747
|
language: string;
|
|
746
748
|
/**
|
|
747
|
-
* @description Recipient's device platform — drives creative compatibility filtering.
|
|
749
|
+
* @description Recipient's device platform — drives creative compatibility filtering. Optional: omit for a platform='api' app to receive all eligible offers untrimmed; device-SDK apps always send it. 'api' is not a valid value here.
|
|
748
750
|
* @enum {string}
|
|
749
751
|
*/
|
|
750
|
-
platform
|
|
752
|
+
platform?: "android" | "ios" | "web";
|
|
751
753
|
};
|
|
752
754
|
};
|
|
753
755
|
};
|
|
@@ -859,17 +861,17 @@ export interface paths {
|
|
|
859
861
|
clientId: string;
|
|
860
862
|
/** @description End-user identifier on the partner surface. Used as the bandit-seeding userId for ranking and as the userId on the transaction created at click time. */
|
|
861
863
|
userId: string;
|
|
862
|
-
/** @description
|
|
864
|
+
/** @description Targeting attributes — countryCode and language are required; platform is optional (omit for a platform='api' app to receive all offers untrimmed). */
|
|
863
865
|
attributes: {
|
|
864
866
|
/** @description ISO 3166-1 alpha-2 country code (e.g., "US", "GB", "CA"). */
|
|
865
867
|
countryCode: string;
|
|
866
868
|
/** @description BCP 47 language tag — drives creative locale resolution (e.g., 'en', 'es'). */
|
|
867
869
|
language: string;
|
|
868
870
|
/**
|
|
869
|
-
* @description Recipient's device platform — drives creative compatibility filtering.
|
|
871
|
+
* @description Recipient's device platform — drives creative compatibility filtering. Optional: omit for a platform='api' app to receive all eligible offers untrimmed; device-SDK apps always send it. 'api' is not a valid value here.
|
|
870
872
|
* @enum {string}
|
|
871
873
|
*/
|
|
872
|
-
platform
|
|
874
|
+
platform?: "android" | "ios" | "web";
|
|
873
875
|
};
|
|
874
876
|
/**
|
|
875
877
|
* @description Maximum number of offers to return (1–25, default 10). The client controls display order and cycles through them one at a time.
|
|
@@ -1083,6 +1085,11 @@ export interface paths {
|
|
|
1083
1085
|
"application/json": {
|
|
1084
1086
|
campaignId: string;
|
|
1085
1087
|
userId: string;
|
|
1088
|
+
/**
|
|
1089
|
+
* @description Which Encore surface the user claimed from. Persisted on the transaction so the server-side completion — which is built from that row alone and carries no client context — can be split by use case, along with the payout booked on it. Absent means 'churn-intervention'.
|
|
1090
|
+
* @enum {string}
|
|
1091
|
+
*/
|
|
1092
|
+
useCase?: "churn-intervention" | "post-action-reward";
|
|
1086
1093
|
};
|
|
1087
1094
|
};
|
|
1088
1095
|
};
|
|
@@ -2216,7 +2223,7 @@ export interface paths {
|
|
|
2216
2223
|
path?: never;
|
|
2217
2224
|
cookie?: never;
|
|
2218
2225
|
};
|
|
2219
|
-
/** @description Get unified SDK configuration including SDUI, entitlements, experiments, and remote config. This endpoint replaces /ui-config with a cleaner structure. Entitlement mode is implicit: if entitlements.iap.productId exists, use IAP mode; otherwise use Native mode. */
|
|
2226
|
+
/** @description Get unified SDK configuration including SDUI, entitlements, experiments, and remote config. This endpoint replaces /ui-config with a cleaner structure. Entitlement mode is implicit: if entitlements.iap.productId exists, use IAP mode; otherwise use Native mode. Pass `useCase` to configure a surface other than churn-intervention; the response echoes it as ui.useCase. Requesting a surface is all it takes to be served it — no setup call is required. A surface Encore has explicitly switched off for this app, or one with no variant available, returns ui.template: null — clients must no-op, never reuse another use case's template. */
|
|
2220
2227
|
get: {
|
|
2221
2228
|
parameters: {
|
|
2222
2229
|
query: {
|
|
@@ -2226,6 +2233,8 @@ export interface paths {
|
|
|
2226
2233
|
sdkVersion: string;
|
|
2227
2234
|
/** @description Optional language hint (e.g. 'es'). Overrides the Accept-Language header; region subtags are stripped. */
|
|
2228
2235
|
language?: string;
|
|
2236
|
+
/** @description Which Encore surface is being configured. Omit for today's behaviour. Requesting a surface is all it takes to be served it — no setup call is required. A surface Encore has explicitly switched off for this app, or one with no variant available, resolves to template: null — it NEVER falls back to another use case's template. */
|
|
2237
|
+
useCase?: "churn-intervention" | "post-action-reward";
|
|
2229
2238
|
};
|
|
2230
2239
|
header?: never;
|
|
2231
2240
|
path?: never;
|
|
@@ -2243,6 +2252,11 @@ export interface paths {
|
|
|
2243
2252
|
success: boolean;
|
|
2244
2253
|
/** @description UI configuration: template + values */
|
|
2245
2254
|
ui: {
|
|
2255
|
+
/**
|
|
2256
|
+
* @description The Encore surface this UI config is for
|
|
2257
|
+
* @enum {string}
|
|
2258
|
+
*/
|
|
2259
|
+
useCase: "churn-intervention" | "post-action-reward";
|
|
2246
2260
|
/**
|
|
2247
2261
|
* Format: uuid
|
|
2248
2262
|
* @description Selected variant ID
|
|
@@ -2286,6 +2300,10 @@ export interface paths {
|
|
|
2286
2300
|
customHeadline?: string | null;
|
|
2287
2301
|
/** @description Custom subheadline text for SDUI variant (falls back to subtitle) */
|
|
2288
2302
|
customSubheadline?: string | null;
|
|
2303
|
+
/** @description Headline for the reward template. NON-NULL whenever ui.useCase is 'post-action-reward' — the template references ${rewardHeadline} unconditionally and the substitution engine leaves an unresolved token visible on screen. Resolution: app_use_cases.headline, else the shipped default. */
|
|
2304
|
+
rewardHeadline?: string | null;
|
|
2305
|
+
/** @description Subheadline for the reward template. NON-NULL whenever ui.useCase is 'post-action-reward', for the same reason as rewardHeadline — the template references ${rewardSubheadline} unconditionally. Resolution: app_use_cases.subheadline, else the shipped default. */
|
|
2306
|
+
rewardSubheadline?: string | null;
|
|
2289
2307
|
};
|
|
2290
2308
|
/** @description Appearance values */
|
|
2291
2309
|
appearance: {
|
|
@@ -2299,6 +2317,146 @@ export interface paths {
|
|
|
2299
2317
|
/** @description Accent title color (hex) */
|
|
2300
2318
|
accentTitleColor?: string | null;
|
|
2301
2319
|
};
|
|
2320
|
+
/** @description Media values (imagery URLs) */
|
|
2321
|
+
media: {
|
|
2322
|
+
/** @description App icon URL (App Store artwork for mobile apps, fetched favicon for web apps). Web SDK uses it as the default host logo when display.logoUrl is not set. */
|
|
2323
|
+
appstoreIcon: string | null;
|
|
2324
|
+
};
|
|
2325
|
+
};
|
|
2326
|
+
};
|
|
2327
|
+
/** @description NEW, additive. Default variant for every OTHER use case this app is enabled for, so the SDK can cache them at identify(). `ui` is unchanged; un-upgraded decoders ignore this key. */
|
|
2328
|
+
useCases: {
|
|
2329
|
+
"churn-intervention"?: {
|
|
2330
|
+
/**
|
|
2331
|
+
* Format: uuid
|
|
2332
|
+
* @description Default variant ID for this use case; null when the app is enabled for the surface but no default is eligible for it.
|
|
2333
|
+
*/
|
|
2334
|
+
variantId: string | null;
|
|
2335
|
+
/** @description Default variant name; null alongside a null variantId. */
|
|
2336
|
+
variantName: string | null;
|
|
2337
|
+
/** @description The default variant's SDUI template. NULL means 'enabled, but nothing to render' — the SDK must no-op on this surface. It must NEVER substitute another use case's template. */
|
|
2338
|
+
template: {
|
|
2339
|
+
[key: string]: unknown;
|
|
2340
|
+
} | null;
|
|
2341
|
+
/** @description Values to substitute into this use case's template. Always present, even when template is null — the copy is resolved from app_use_cases regardless. */
|
|
2342
|
+
values: {
|
|
2343
|
+
/** @description Text values for template substitution */
|
|
2344
|
+
text: {
|
|
2345
|
+
/** @description App name for ${appName} substitution */
|
|
2346
|
+
appName?: string | null;
|
|
2347
|
+
/** @description Main title text */
|
|
2348
|
+
title?: string | null;
|
|
2349
|
+
/** @description Subtitle text */
|
|
2350
|
+
subtitle?: string | null;
|
|
2351
|
+
/** @description Offer description text */
|
|
2352
|
+
offerDescription?: string | null;
|
|
2353
|
+
/** @description Instructions title */
|
|
2354
|
+
instructionsTitle?: string | null;
|
|
2355
|
+
/** @description Last step header text */
|
|
2356
|
+
lastStepHeader?: string | null;
|
|
2357
|
+
/** @description Last step description */
|
|
2358
|
+
lastStepDescription?: string | null;
|
|
2359
|
+
/** @description Credit claimed title */
|
|
2360
|
+
creditClaimedTitle?: string | null;
|
|
2361
|
+
/** @description Credit claimed subtitle */
|
|
2362
|
+
creditClaimedSubtitle?: string | null;
|
|
2363
|
+
/** @description Apply credits button text */
|
|
2364
|
+
applyCreditsButton?: string | null;
|
|
2365
|
+
/** @description Accent title text */
|
|
2366
|
+
accentTitle?: string | null;
|
|
2367
|
+
/** @description Custom headline text for SDUI variant (falls back to title) */
|
|
2368
|
+
customHeadline?: string | null;
|
|
2369
|
+
/** @description Custom subheadline text for SDUI variant (falls back to subtitle) */
|
|
2370
|
+
customSubheadline?: string | null;
|
|
2371
|
+
/** @description Headline for the reward template. NON-NULL whenever ui.useCase is 'post-action-reward' — the template references ${rewardHeadline} unconditionally and the substitution engine leaves an unresolved token visible on screen. Resolution: app_use_cases.headline, else the shipped default. */
|
|
2372
|
+
rewardHeadline?: string | null;
|
|
2373
|
+
/** @description Subheadline for the reward template. NON-NULL whenever ui.useCase is 'post-action-reward', for the same reason as rewardHeadline — the template references ${rewardSubheadline} unconditionally. Resolution: app_use_cases.subheadline, else the shipped default. */
|
|
2374
|
+
rewardSubheadline?: string | null;
|
|
2375
|
+
};
|
|
2376
|
+
/** @description Appearance values */
|
|
2377
|
+
appearance: {
|
|
2378
|
+
/**
|
|
2379
|
+
* @description Appearance mode
|
|
2380
|
+
* @enum {string|null}
|
|
2381
|
+
*/
|
|
2382
|
+
mode?: "light" | "dark" | "auto" | null;
|
|
2383
|
+
/** @description Primary accent color (hex) */
|
|
2384
|
+
accentColor?: string | null;
|
|
2385
|
+
/** @description Accent title color (hex) */
|
|
2386
|
+
accentTitleColor?: string | null;
|
|
2387
|
+
};
|
|
2388
|
+
/** @description Media values (imagery URLs) */
|
|
2389
|
+
media: {
|
|
2390
|
+
/** @description App icon URL (App Store artwork for mobile apps, fetched favicon for web apps). Web SDK uses it as the default host logo when display.logoUrl is not set. */
|
|
2391
|
+
appstoreIcon: string | null;
|
|
2392
|
+
};
|
|
2393
|
+
};
|
|
2394
|
+
};
|
|
2395
|
+
"post-action-reward"?: {
|
|
2396
|
+
/**
|
|
2397
|
+
* Format: uuid
|
|
2398
|
+
* @description Default variant ID for this use case; null when the app is enabled for the surface but no default is eligible for it.
|
|
2399
|
+
*/
|
|
2400
|
+
variantId: string | null;
|
|
2401
|
+
/** @description Default variant name; null alongside a null variantId. */
|
|
2402
|
+
variantName: string | null;
|
|
2403
|
+
/** @description The default variant's SDUI template. NULL means 'enabled, but nothing to render' — the SDK must no-op on this surface. It must NEVER substitute another use case's template. */
|
|
2404
|
+
template: {
|
|
2405
|
+
[key: string]: unknown;
|
|
2406
|
+
} | null;
|
|
2407
|
+
/** @description Values to substitute into this use case's template. Always present, even when template is null — the copy is resolved from app_use_cases regardless. */
|
|
2408
|
+
values: {
|
|
2409
|
+
/** @description Text values for template substitution */
|
|
2410
|
+
text: {
|
|
2411
|
+
/** @description App name for ${appName} substitution */
|
|
2412
|
+
appName?: string | null;
|
|
2413
|
+
/** @description Main title text */
|
|
2414
|
+
title?: string | null;
|
|
2415
|
+
/** @description Subtitle text */
|
|
2416
|
+
subtitle?: string | null;
|
|
2417
|
+
/** @description Offer description text */
|
|
2418
|
+
offerDescription?: string | null;
|
|
2419
|
+
/** @description Instructions title */
|
|
2420
|
+
instructionsTitle?: string | null;
|
|
2421
|
+
/** @description Last step header text */
|
|
2422
|
+
lastStepHeader?: string | null;
|
|
2423
|
+
/** @description Last step description */
|
|
2424
|
+
lastStepDescription?: string | null;
|
|
2425
|
+
/** @description Credit claimed title */
|
|
2426
|
+
creditClaimedTitle?: string | null;
|
|
2427
|
+
/** @description Credit claimed subtitle */
|
|
2428
|
+
creditClaimedSubtitle?: string | null;
|
|
2429
|
+
/** @description Apply credits button text */
|
|
2430
|
+
applyCreditsButton?: string | null;
|
|
2431
|
+
/** @description Accent title text */
|
|
2432
|
+
accentTitle?: string | null;
|
|
2433
|
+
/** @description Custom headline text for SDUI variant (falls back to title) */
|
|
2434
|
+
customHeadline?: string | null;
|
|
2435
|
+
/** @description Custom subheadline text for SDUI variant (falls back to subtitle) */
|
|
2436
|
+
customSubheadline?: string | null;
|
|
2437
|
+
/** @description Headline for the reward template. NON-NULL whenever ui.useCase is 'post-action-reward' — the template references ${rewardHeadline} unconditionally and the substitution engine leaves an unresolved token visible on screen. Resolution: app_use_cases.headline, else the shipped default. */
|
|
2438
|
+
rewardHeadline?: string | null;
|
|
2439
|
+
/** @description Subheadline for the reward template. NON-NULL whenever ui.useCase is 'post-action-reward', for the same reason as rewardHeadline — the template references ${rewardSubheadline} unconditionally. Resolution: app_use_cases.subheadline, else the shipped default. */
|
|
2440
|
+
rewardSubheadline?: string | null;
|
|
2441
|
+
};
|
|
2442
|
+
/** @description Appearance values */
|
|
2443
|
+
appearance: {
|
|
2444
|
+
/**
|
|
2445
|
+
* @description Appearance mode
|
|
2446
|
+
* @enum {string|null}
|
|
2447
|
+
*/
|
|
2448
|
+
mode?: "light" | "dark" | "auto" | null;
|
|
2449
|
+
/** @description Primary accent color (hex) */
|
|
2450
|
+
accentColor?: string | null;
|
|
2451
|
+
/** @description Accent title color (hex) */
|
|
2452
|
+
accentTitleColor?: string | null;
|
|
2453
|
+
};
|
|
2454
|
+
/** @description Media values (imagery URLs) */
|
|
2455
|
+
media: {
|
|
2456
|
+
/** @description App icon URL (App Store artwork for mobile apps, fetched favicon for web apps). Web SDK uses it as the default host logo when display.logoUrl is not set. */
|
|
2457
|
+
appstoreIcon: string | null;
|
|
2458
|
+
};
|
|
2459
|
+
};
|
|
2302
2460
|
};
|
|
2303
2461
|
};
|
|
2304
2462
|
/** @description Entitlement configuration (IAP or Native mode) */
|
|
@@ -3645,6 +3803,256 @@ export interface paths {
|
|
|
3645
3803
|
patch?: never;
|
|
3646
3804
|
trace?: never;
|
|
3647
3805
|
};
|
|
3806
|
+
"/publisher/sdk/v1/creators/links": {
|
|
3807
|
+
parameters: {
|
|
3808
|
+
query?: never;
|
|
3809
|
+
header?: never;
|
|
3810
|
+
path?: never;
|
|
3811
|
+
cookie?: never;
|
|
3812
|
+
};
|
|
3813
|
+
get?: never;
|
|
3814
|
+
put?: never;
|
|
3815
|
+
/** @description Mint the creator's shareable affiliate links: one stable branded short link per campaign your app is entitled to serve (every enabled campaign, regardless of geo). Idempotent — the same creatorId always returns the same link per campaign. Each link is a single URL clickable by many people; every distinct click is an independent claim tracked as its own transaction. Authentication: publishable key (X-API-Key: pk_live_* / pk_test_*). */
|
|
3816
|
+
post: {
|
|
3817
|
+
parameters: {
|
|
3818
|
+
query?: never;
|
|
3819
|
+
header?: never;
|
|
3820
|
+
path?: never;
|
|
3821
|
+
cookie?: never;
|
|
3822
|
+
};
|
|
3823
|
+
requestBody: {
|
|
3824
|
+
content: {
|
|
3825
|
+
"application/json": {
|
|
3826
|
+
/** @description Publisher-supplied stable identifier for the creator (opaque to Encore). */
|
|
3827
|
+
creatorId: string;
|
|
3828
|
+
};
|
|
3829
|
+
};
|
|
3830
|
+
};
|
|
3831
|
+
responses: {
|
|
3832
|
+
/** @description Default Response */
|
|
3833
|
+
200: {
|
|
3834
|
+
headers: {
|
|
3835
|
+
[name: string]: unknown;
|
|
3836
|
+
};
|
|
3837
|
+
content: {
|
|
3838
|
+
"application/json": {
|
|
3839
|
+
creatorId: string;
|
|
3840
|
+
links: {
|
|
3841
|
+
name: string;
|
|
3842
|
+
/** @description User-facing value proposition, e.g., "3 months of Hulu free". Rendered in the deal email. */
|
|
3843
|
+
perk: string | null;
|
|
3844
|
+
/**
|
|
3845
|
+
* @description Constrained promo badge for in-app offer cards: free_trial | discount. Drives the card pill display AND client-side free-trial-vs-discount logic. Clients map the enum to display text + free-trial boolean. NULL means no badge.
|
|
3846
|
+
* @enum {string|null}
|
|
3847
|
+
*/
|
|
3848
|
+
badgeLabel: "free_trial" | "discount" | null;
|
|
3849
|
+
/** @description Original price before discount */
|
|
3850
|
+
oldPrice: string | null;
|
|
3851
|
+
/** @description New/discounted price for the offer */
|
|
3852
|
+
newPrice: string | null;
|
|
3853
|
+
targetCountries: string[];
|
|
3854
|
+
/** @description Campaign the link points to. */
|
|
3855
|
+
campaignId: string;
|
|
3856
|
+
/**
|
|
3857
|
+
* Format: uri
|
|
3858
|
+
* @description The shareable branded short link (https://<host>/<slug>).
|
|
3859
|
+
*/
|
|
3860
|
+
linkUrl: string;
|
|
3861
|
+
payout: {
|
|
3862
|
+
/** @description Publisher's payout per completion: campaign payout × the app's payout split (raw campaign payout when no split is set). */
|
|
3863
|
+
amount: number;
|
|
3864
|
+
/** @description ISO-4217 currency. Always USD. */
|
|
3865
|
+
currency: string;
|
|
3866
|
+
/**
|
|
3867
|
+
* @description Campaign payout model (CPA / CPC / CPI / CPM).
|
|
3868
|
+
* @enum {string}
|
|
3869
|
+
*/
|
|
3870
|
+
model: "CPA" | "CPC" | "CPI" | "CPM";
|
|
3871
|
+
};
|
|
3872
|
+
/** @description The campaign's categories (for offer-wall filter tabs). Empty when the campaign has none. */
|
|
3873
|
+
categories: {
|
|
3874
|
+
id: string;
|
|
3875
|
+
name: string;
|
|
3876
|
+
}[];
|
|
3877
|
+
organization?: {
|
|
3878
|
+
/** Format: uuid */
|
|
3879
|
+
id: string;
|
|
3880
|
+
name: string;
|
|
3881
|
+
description: string | null;
|
|
3882
|
+
url: string | null;
|
|
3883
|
+
logoUrl: string | null;
|
|
3884
|
+
};
|
|
3885
|
+
creatives?: {
|
|
3886
|
+
/** Format: uuid */
|
|
3887
|
+
id: string;
|
|
3888
|
+
title: string;
|
|
3889
|
+
subtitle: string | null;
|
|
3890
|
+
description: string | null;
|
|
3891
|
+
/** Format: uri */
|
|
3892
|
+
primaryImageUrl: string;
|
|
3893
|
+
/** Format: uri */
|
|
3894
|
+
logoUrl: string | null;
|
|
3895
|
+
additionalImages: string[] | null;
|
|
3896
|
+
ctaText: string;
|
|
3897
|
+
/** @description Platforms this creative supports (empty = all platforms) */
|
|
3898
|
+
supportedPlatforms: ("android" | "ios" | "web")[] | null;
|
|
3899
|
+
}[];
|
|
3900
|
+
}[];
|
|
3901
|
+
};
|
|
3902
|
+
};
|
|
3903
|
+
};
|
|
3904
|
+
/** @description Default Response */
|
|
3905
|
+
400: {
|
|
3906
|
+
headers: {
|
|
3907
|
+
[name: string]: unknown;
|
|
3908
|
+
};
|
|
3909
|
+
content: {
|
|
3910
|
+
"application/json": {
|
|
3911
|
+
error: string;
|
|
3912
|
+
details?: unknown;
|
|
3913
|
+
};
|
|
3914
|
+
};
|
|
3915
|
+
};
|
|
3916
|
+
/** @description Default Response */
|
|
3917
|
+
401: {
|
|
3918
|
+
headers: {
|
|
3919
|
+
[name: string]: unknown;
|
|
3920
|
+
};
|
|
3921
|
+
content: {
|
|
3922
|
+
"application/json": {
|
|
3923
|
+
error: string;
|
|
3924
|
+
details?: unknown;
|
|
3925
|
+
};
|
|
3926
|
+
};
|
|
3927
|
+
};
|
|
3928
|
+
/** @description Default Response */
|
|
3929
|
+
500: {
|
|
3930
|
+
headers: {
|
|
3931
|
+
[name: string]: unknown;
|
|
3932
|
+
};
|
|
3933
|
+
content: {
|
|
3934
|
+
"application/json": {
|
|
3935
|
+
error: string;
|
|
3936
|
+
details?: unknown;
|
|
3937
|
+
};
|
|
3938
|
+
};
|
|
3939
|
+
};
|
|
3940
|
+
};
|
|
3941
|
+
};
|
|
3942
|
+
delete?: never;
|
|
3943
|
+
options?: never;
|
|
3944
|
+
head?: never;
|
|
3945
|
+
patch?: never;
|
|
3946
|
+
trace?: never;
|
|
3947
|
+
};
|
|
3948
|
+
"/publisher/sdk/v1/creators/{creatorId}/stats": {
|
|
3949
|
+
parameters: {
|
|
3950
|
+
query?: never;
|
|
3951
|
+
header?: never;
|
|
3952
|
+
path?: never;
|
|
3953
|
+
cookie?: never;
|
|
3954
|
+
};
|
|
3955
|
+
/** @description Real-time performance for a creator's links, per campaign and per day: clicks (each click = one claim), completions (verified/final-granted conversions), and earnings (after your app's payout split; USD). Returns rolled-up totals plus a per-day series (`daily`). Optional `startDate`/`endDate` (YYYY-MM-DD, UTC, inclusive; start must be <= end) filter everything; absent = all-time. Clicks attribute by transaction date; completions + earnings by completion date. An unknown creatorId returns 200 with empty campaigns/daily and zeroed totals. Authentication: publishable key (X-API-Key: pk_live_* / pk_test_*). */
|
|
3956
|
+
get: {
|
|
3957
|
+
parameters: {
|
|
3958
|
+
query?: {
|
|
3959
|
+
startDate?: string;
|
|
3960
|
+
endDate?: string;
|
|
3961
|
+
};
|
|
3962
|
+
header?: never;
|
|
3963
|
+
path: {
|
|
3964
|
+
creatorId: string;
|
|
3965
|
+
};
|
|
3966
|
+
cookie?: never;
|
|
3967
|
+
};
|
|
3968
|
+
requestBody?: never;
|
|
3969
|
+
responses: {
|
|
3970
|
+
/** @description Default Response */
|
|
3971
|
+
200: {
|
|
3972
|
+
headers: {
|
|
3973
|
+
[name: string]: unknown;
|
|
3974
|
+
};
|
|
3975
|
+
content: {
|
|
3976
|
+
"application/json": {
|
|
3977
|
+
creatorId: string;
|
|
3978
|
+
/** @description ISO-4217 currency for every `earnings` figure. Always USD. */
|
|
3979
|
+
currency: string;
|
|
3980
|
+
/** @description Echoed applied range start (YYYY-MM-DD), present only when supplied. */
|
|
3981
|
+
startDate?: string;
|
|
3982
|
+
/** @description Echoed applied range end (YYYY-MM-DD), present only when supplied. */
|
|
3983
|
+
endDate?: string;
|
|
3984
|
+
campaigns: {
|
|
3985
|
+
campaignId: string;
|
|
3986
|
+
campaignTitle: string;
|
|
3987
|
+
/** @description Distinct clicks in range (each click mints one transaction). */
|
|
3988
|
+
clicks: number;
|
|
3989
|
+
/** @description Clicks whose transaction reached a completed status (verified / final_granted) in range. */
|
|
3990
|
+
completions: number;
|
|
3991
|
+
/** @description Creator/publisher's earnings for this campaign in `currency`, after the app's payout split (raw payout sum if no split is set). */
|
|
3992
|
+
earnings: number;
|
|
3993
|
+
}[];
|
|
3994
|
+
totals: {
|
|
3995
|
+
clicks: number;
|
|
3996
|
+
completions: number;
|
|
3997
|
+
earnings: number;
|
|
3998
|
+
};
|
|
3999
|
+
/** @description Per-day series across all campaigns, ascending; days with no activity are omitted. Clicks attributed by transaction created_at (UTC); completions + earnings by completion timestamp (UTC). */
|
|
4000
|
+
daily: {
|
|
4001
|
+
/** @description UTC calendar date (YYYY-MM-DD). */
|
|
4002
|
+
date: string;
|
|
4003
|
+
clicks: number;
|
|
4004
|
+
completions: number;
|
|
4005
|
+
earnings: number;
|
|
4006
|
+
}[];
|
|
4007
|
+
};
|
|
4008
|
+
};
|
|
4009
|
+
};
|
|
4010
|
+
/** @description Default Response */
|
|
4011
|
+
400: {
|
|
4012
|
+
headers: {
|
|
4013
|
+
[name: string]: unknown;
|
|
4014
|
+
};
|
|
4015
|
+
content: {
|
|
4016
|
+
"application/json": {
|
|
4017
|
+
error: string;
|
|
4018
|
+
details?: unknown;
|
|
4019
|
+
};
|
|
4020
|
+
};
|
|
4021
|
+
};
|
|
4022
|
+
/** @description Default Response */
|
|
4023
|
+
401: {
|
|
4024
|
+
headers: {
|
|
4025
|
+
[name: string]: unknown;
|
|
4026
|
+
};
|
|
4027
|
+
content: {
|
|
4028
|
+
"application/json": {
|
|
4029
|
+
error: string;
|
|
4030
|
+
details?: unknown;
|
|
4031
|
+
};
|
|
4032
|
+
};
|
|
4033
|
+
};
|
|
4034
|
+
/** @description Default Response */
|
|
4035
|
+
500: {
|
|
4036
|
+
headers: {
|
|
4037
|
+
[name: string]: unknown;
|
|
4038
|
+
};
|
|
4039
|
+
content: {
|
|
4040
|
+
"application/json": {
|
|
4041
|
+
error: string;
|
|
4042
|
+
details?: unknown;
|
|
4043
|
+
};
|
|
4044
|
+
};
|
|
4045
|
+
};
|
|
4046
|
+
};
|
|
4047
|
+
};
|
|
4048
|
+
put?: never;
|
|
4049
|
+
post?: never;
|
|
4050
|
+
delete?: never;
|
|
4051
|
+
options?: never;
|
|
4052
|
+
head?: never;
|
|
4053
|
+
patch?: never;
|
|
4054
|
+
trace?: never;
|
|
4055
|
+
};
|
|
3648
4056
|
"/v1/events": {
|
|
3649
4057
|
parameters: {
|
|
3650
4058
|
query?: never;
|
|
@@ -3763,6 +4171,11 @@ export interface components {
|
|
|
3763
4171
|
success: boolean;
|
|
3764
4172
|
/** @description UI configuration: template + values */
|
|
3765
4173
|
ui: {
|
|
4174
|
+
/**
|
|
4175
|
+
* @description The Encore surface this UI config is for
|
|
4176
|
+
* @enum {string}
|
|
4177
|
+
*/
|
|
4178
|
+
useCase: "churn-intervention" | "post-action-reward";
|
|
3766
4179
|
/**
|
|
3767
4180
|
* Format: uuid
|
|
3768
4181
|
* @description Selected variant ID
|
|
@@ -3806,6 +4219,10 @@ export interface components {
|
|
|
3806
4219
|
customHeadline?: string | null;
|
|
3807
4220
|
/** @description Custom subheadline text for SDUI variant (falls back to subtitle) */
|
|
3808
4221
|
customSubheadline?: string | null;
|
|
4222
|
+
/** @description Headline for the reward template. NON-NULL whenever ui.useCase is 'post-action-reward' — the template references ${rewardHeadline} unconditionally and the substitution engine leaves an unresolved token visible on screen. Resolution: app_use_cases.headline, else the shipped default. */
|
|
4223
|
+
rewardHeadline?: string | null;
|
|
4224
|
+
/** @description Subheadline for the reward template. NON-NULL whenever ui.useCase is 'post-action-reward', for the same reason as rewardHeadline — the template references ${rewardSubheadline} unconditionally. Resolution: app_use_cases.subheadline, else the shipped default. */
|
|
4225
|
+
rewardSubheadline?: string | null;
|
|
3809
4226
|
};
|
|
3810
4227
|
/** @description Appearance values */
|
|
3811
4228
|
appearance: {
|
|
@@ -3819,6 +4236,146 @@ export interface components {
|
|
|
3819
4236
|
/** @description Accent title color (hex) */
|
|
3820
4237
|
accentTitleColor?: string | null;
|
|
3821
4238
|
};
|
|
4239
|
+
/** @description Media values (imagery URLs) */
|
|
4240
|
+
media: {
|
|
4241
|
+
/** @description App icon URL (App Store artwork for mobile apps, fetched favicon for web apps). Web SDK uses it as the default host logo when display.logoUrl is not set. */
|
|
4242
|
+
appstoreIcon: string | null;
|
|
4243
|
+
};
|
|
4244
|
+
};
|
|
4245
|
+
};
|
|
4246
|
+
/** @description NEW, additive. Default variant for every OTHER use case this app is enabled for, so the SDK can cache them at identify(). `ui` is unchanged; un-upgraded decoders ignore this key. */
|
|
4247
|
+
useCases: {
|
|
4248
|
+
"churn-intervention"?: {
|
|
4249
|
+
/**
|
|
4250
|
+
* Format: uuid
|
|
4251
|
+
* @description Default variant ID for this use case; null when the app is enabled for the surface but no default is eligible for it.
|
|
4252
|
+
*/
|
|
4253
|
+
variantId: string | null;
|
|
4254
|
+
/** @description Default variant name; null alongside a null variantId. */
|
|
4255
|
+
variantName: string | null;
|
|
4256
|
+
/** @description The default variant's SDUI template. NULL means 'enabled, but nothing to render' — the SDK must no-op on this surface. It must NEVER substitute another use case's template. */
|
|
4257
|
+
template: {
|
|
4258
|
+
[key: string]: unknown;
|
|
4259
|
+
} | null;
|
|
4260
|
+
/** @description Values to substitute into this use case's template. Always present, even when template is null — the copy is resolved from app_use_cases regardless. */
|
|
4261
|
+
values: {
|
|
4262
|
+
/** @description Text values for template substitution */
|
|
4263
|
+
text: {
|
|
4264
|
+
/** @description App name for ${appName} substitution */
|
|
4265
|
+
appName?: string | null;
|
|
4266
|
+
/** @description Main title text */
|
|
4267
|
+
title?: string | null;
|
|
4268
|
+
/** @description Subtitle text */
|
|
4269
|
+
subtitle?: string | null;
|
|
4270
|
+
/** @description Offer description text */
|
|
4271
|
+
offerDescription?: string | null;
|
|
4272
|
+
/** @description Instructions title */
|
|
4273
|
+
instructionsTitle?: string | null;
|
|
4274
|
+
/** @description Last step header text */
|
|
4275
|
+
lastStepHeader?: string | null;
|
|
4276
|
+
/** @description Last step description */
|
|
4277
|
+
lastStepDescription?: string | null;
|
|
4278
|
+
/** @description Credit claimed title */
|
|
4279
|
+
creditClaimedTitle?: string | null;
|
|
4280
|
+
/** @description Credit claimed subtitle */
|
|
4281
|
+
creditClaimedSubtitle?: string | null;
|
|
4282
|
+
/** @description Apply credits button text */
|
|
4283
|
+
applyCreditsButton?: string | null;
|
|
4284
|
+
/** @description Accent title text */
|
|
4285
|
+
accentTitle?: string | null;
|
|
4286
|
+
/** @description Custom headline text for SDUI variant (falls back to title) */
|
|
4287
|
+
customHeadline?: string | null;
|
|
4288
|
+
/** @description Custom subheadline text for SDUI variant (falls back to subtitle) */
|
|
4289
|
+
customSubheadline?: string | null;
|
|
4290
|
+
/** @description Headline for the reward template. NON-NULL whenever ui.useCase is 'post-action-reward' — the template references ${rewardHeadline} unconditionally and the substitution engine leaves an unresolved token visible on screen. Resolution: app_use_cases.headline, else the shipped default. */
|
|
4291
|
+
rewardHeadline?: string | null;
|
|
4292
|
+
/** @description Subheadline for the reward template. NON-NULL whenever ui.useCase is 'post-action-reward', for the same reason as rewardHeadline — the template references ${rewardSubheadline} unconditionally. Resolution: app_use_cases.subheadline, else the shipped default. */
|
|
4293
|
+
rewardSubheadline?: string | null;
|
|
4294
|
+
};
|
|
4295
|
+
/** @description Appearance values */
|
|
4296
|
+
appearance: {
|
|
4297
|
+
/**
|
|
4298
|
+
* @description Appearance mode
|
|
4299
|
+
* @enum {string|null}
|
|
4300
|
+
*/
|
|
4301
|
+
mode?: "light" | "dark" | "auto" | null;
|
|
4302
|
+
/** @description Primary accent color (hex) */
|
|
4303
|
+
accentColor?: string | null;
|
|
4304
|
+
/** @description Accent title color (hex) */
|
|
4305
|
+
accentTitleColor?: string | null;
|
|
4306
|
+
};
|
|
4307
|
+
/** @description Media values (imagery URLs) */
|
|
4308
|
+
media: {
|
|
4309
|
+
/** @description App icon URL (App Store artwork for mobile apps, fetched favicon for web apps). Web SDK uses it as the default host logo when display.logoUrl is not set. */
|
|
4310
|
+
appstoreIcon: string | null;
|
|
4311
|
+
};
|
|
4312
|
+
};
|
|
4313
|
+
};
|
|
4314
|
+
"post-action-reward"?: {
|
|
4315
|
+
/**
|
|
4316
|
+
* Format: uuid
|
|
4317
|
+
* @description Default variant ID for this use case; null when the app is enabled for the surface but no default is eligible for it.
|
|
4318
|
+
*/
|
|
4319
|
+
variantId: string | null;
|
|
4320
|
+
/** @description Default variant name; null alongside a null variantId. */
|
|
4321
|
+
variantName: string | null;
|
|
4322
|
+
/** @description The default variant's SDUI template. NULL means 'enabled, but nothing to render' — the SDK must no-op on this surface. It must NEVER substitute another use case's template. */
|
|
4323
|
+
template: {
|
|
4324
|
+
[key: string]: unknown;
|
|
4325
|
+
} | null;
|
|
4326
|
+
/** @description Values to substitute into this use case's template. Always present, even when template is null — the copy is resolved from app_use_cases regardless. */
|
|
4327
|
+
values: {
|
|
4328
|
+
/** @description Text values for template substitution */
|
|
4329
|
+
text: {
|
|
4330
|
+
/** @description App name for ${appName} substitution */
|
|
4331
|
+
appName?: string | null;
|
|
4332
|
+
/** @description Main title text */
|
|
4333
|
+
title?: string | null;
|
|
4334
|
+
/** @description Subtitle text */
|
|
4335
|
+
subtitle?: string | null;
|
|
4336
|
+
/** @description Offer description text */
|
|
4337
|
+
offerDescription?: string | null;
|
|
4338
|
+
/** @description Instructions title */
|
|
4339
|
+
instructionsTitle?: string | null;
|
|
4340
|
+
/** @description Last step header text */
|
|
4341
|
+
lastStepHeader?: string | null;
|
|
4342
|
+
/** @description Last step description */
|
|
4343
|
+
lastStepDescription?: string | null;
|
|
4344
|
+
/** @description Credit claimed title */
|
|
4345
|
+
creditClaimedTitle?: string | null;
|
|
4346
|
+
/** @description Credit claimed subtitle */
|
|
4347
|
+
creditClaimedSubtitle?: string | null;
|
|
4348
|
+
/** @description Apply credits button text */
|
|
4349
|
+
applyCreditsButton?: string | null;
|
|
4350
|
+
/** @description Accent title text */
|
|
4351
|
+
accentTitle?: string | null;
|
|
4352
|
+
/** @description Custom headline text for SDUI variant (falls back to title) */
|
|
4353
|
+
customHeadline?: string | null;
|
|
4354
|
+
/** @description Custom subheadline text for SDUI variant (falls back to subtitle) */
|
|
4355
|
+
customSubheadline?: string | null;
|
|
4356
|
+
/** @description Headline for the reward template. NON-NULL whenever ui.useCase is 'post-action-reward' — the template references ${rewardHeadline} unconditionally and the substitution engine leaves an unresolved token visible on screen. Resolution: app_use_cases.headline, else the shipped default. */
|
|
4357
|
+
rewardHeadline?: string | null;
|
|
4358
|
+
/** @description Subheadline for the reward template. NON-NULL whenever ui.useCase is 'post-action-reward', for the same reason as rewardHeadline — the template references ${rewardSubheadline} unconditionally. Resolution: app_use_cases.subheadline, else the shipped default. */
|
|
4359
|
+
rewardSubheadline?: string | null;
|
|
4360
|
+
};
|
|
4361
|
+
/** @description Appearance values */
|
|
4362
|
+
appearance: {
|
|
4363
|
+
/**
|
|
4364
|
+
* @description Appearance mode
|
|
4365
|
+
* @enum {string|null}
|
|
4366
|
+
*/
|
|
4367
|
+
mode?: "light" | "dark" | "auto" | null;
|
|
4368
|
+
/** @description Primary accent color (hex) */
|
|
4369
|
+
accentColor?: string | null;
|
|
4370
|
+
/** @description Accent title color (hex) */
|
|
4371
|
+
accentTitleColor?: string | null;
|
|
4372
|
+
};
|
|
4373
|
+
/** @description Media values (imagery URLs) */
|
|
4374
|
+
media: {
|
|
4375
|
+
/** @description App icon URL (App Store artwork for mobile apps, fetched favicon for web apps). Web SDK uses it as the default host logo when display.logoUrl is not set. */
|
|
4376
|
+
appstoreIcon: string | null;
|
|
4377
|
+
};
|
|
4378
|
+
};
|
|
3822
4379
|
};
|
|
3823
4380
|
};
|
|
3824
4381
|
/** @description Entitlement configuration (IAP or Native mode) */
|
|
@@ -3907,7 +4464,7 @@ export interface components {
|
|
|
3907
4464
|
/** @description When true, this campaign is auto-granted to every newly created app. Independent of priority (which controls ranking order only). */
|
|
3908
4465
|
defaultCatalog: boolean;
|
|
3909
4466
|
/**
|
|
3910
|
-
* @description
|
|
4467
|
+
* @description Deprecated; always 'whitelist'. Retained because iOS/Android SDK decoders require the field. Access is governed solely by campaign_allowed_apps + enabled.
|
|
3911
4468
|
* @enum {string}
|
|
3912
4469
|
*/
|
|
3913
4470
|
targetingMode: "blacklist" | "whitelist";
|
|
@@ -4093,7 +4650,7 @@ export interface components {
|
|
|
4093
4650
|
/** @description When true, this campaign is auto-granted to every newly created app. Independent of priority (which controls ranking order only). */
|
|
4094
4651
|
defaultCatalog: boolean;
|
|
4095
4652
|
/**
|
|
4096
|
-
* @description
|
|
4653
|
+
* @description Deprecated; always 'whitelist'. Retained because iOS/Android SDK decoders require the field. Access is governed solely by campaign_allowed_apps + enabled.
|
|
4097
4654
|
* @enum {string}
|
|
4098
4655
|
*/
|
|
4099
4656
|
targetingMode: "blacklist" | "whitelist";
|