@encorekit/web-sdk 2.2.0 → 2.3.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 +20 -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 +1 -1
- package/types/analytics/events.d.ts +57 -5
- package/types/analytics/events.d.ts.map +1 -1
- package/types/api/APIClient.d.ts +16 -20
- package/types/api/APIClient.d.ts.map +1 -1
- package/types/api/generated/types.d.ts +643 -9
- package/types/api/generated/types.d.ts.map +1 -1
- package/types/api/models.d.ts +19 -7
- package/types/api/models.d.ts.map +1 -1
- package/types/api/offerBuilder.d.ts +45 -0
- package/types/api/offerBuilder.d.ts.map +1 -0
- package/types/core/Configuration.d.ts +11 -0
- package/types/core/Configuration.d.ts.map +1 -1
- package/types/core/Encore.d.ts.map +1 -1
- package/types/core/OfferManager.d.ts +2 -2
- package/types/core/OfferManager.d.ts.map +1 -1
- package/types/core/claimScreenVariant.d.ts +3 -0
- package/types/core/claimScreenVariant.d.ts.map +1 -0
- package/types/core/giftVariant.d.ts +11 -8
- package/types/core/giftVariant.d.ts.map +1 -1
- package/types/core/share.d.ts +58 -0
- package/types/core/share.d.ts.map +1 -0
- package/types/core/unlockCode.d.ts +4 -1
- package/types/core/unlockCode.d.ts.map +1 -1
- package/types/core/version.d.ts +1 -1
- package/types/types.d.ts +120 -3
- package/types/types.d.ts.map +1 -1
- package/types/ui/ClaimScreen.d.ts +62 -0
- package/types/ui/ClaimScreen.d.ts.map +1 -0
- package/types/ui/CodeUnlock.d.ts +14 -0
- package/types/ui/CodeUnlock.d.ts.map +1 -1
- package/types/ui/GiftSheet.d.ts +48 -4
- package/types/ui/GiftSheet.d.ts.map +1 -1
- package/types/ui/GiftUnwrap.d.ts +70 -0
- package/types/ui/GiftUnwrap.d.ts.map +1 -1
- package/types/ui/OfferCard.d.ts.map +1 -1
- package/types/ui/OfferModal.d.ts +22 -4
- package/types/ui/OfferModal.d.ts.map +1 -1
- package/types/ui/giftUnwrapArt.d.ts +6 -0
- package/types/ui/giftUnwrapArt.d.ts.map +1 -1
- package/types/ui/giftUnwrapCopy.d.ts +20 -0
- package/types/ui/giftUnwrapCopy.d.ts.map +1 -1
- package/types/ui/styles.d.ts.map +1 -1
|
@@ -104,6 +104,10 @@ export interface paths {
|
|
|
104
104
|
heroImageUrl?: string | null;
|
|
105
105
|
/** @description https link to the advertiser offer terms. Null or absent: render terms copy as plain text. */
|
|
106
106
|
termsUrl?: string | null;
|
|
107
|
+
/** @description Display-only strings a variant renders by key, e.g. {"eligibilityNote":"New subscribers only"}. Values are strings; the type is free-form so one unexpected value cannot fail a client decode. Absent or empty: the variant draws none of those lines. */
|
|
108
|
+
displayProperties?: {
|
|
109
|
+
[key: string]: unknown;
|
|
110
|
+
};
|
|
107
111
|
/** Format: date-time */
|
|
108
112
|
createdAt: string;
|
|
109
113
|
/** Format: date-time */
|
|
@@ -152,6 +156,8 @@ export interface paths {
|
|
|
152
156
|
title: string;
|
|
153
157
|
subtitle: string;
|
|
154
158
|
ctaButtonText?: string;
|
|
159
|
+
/** @description Optional https image for this step. Absent: the step has none. */
|
|
160
|
+
imageUrl?: string;
|
|
155
161
|
}[] | null;
|
|
156
162
|
/** @description Short, actionable phrases (max 1-3) that guide users. Examples: "sign up, create registry", "add to cart" */
|
|
157
163
|
quickInstructions: string | null;
|
|
@@ -231,6 +237,8 @@ export interface paths {
|
|
|
231
237
|
"application/json": {
|
|
232
238
|
error: string;
|
|
233
239
|
details?: unknown;
|
|
240
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
241
|
+
code?: string;
|
|
234
242
|
};
|
|
235
243
|
};
|
|
236
244
|
};
|
|
@@ -285,6 +293,7 @@ export interface paths {
|
|
|
285
293
|
longitude?: string;
|
|
286
294
|
dateOfBirth?: string;
|
|
287
295
|
gender?: string;
|
|
296
|
+
/** @description BCP 47 language tag; only the language subtag is used for creative locale resolution, and only when the app has that language enabled. Falls back to Accept-Language, then the app default locale. */
|
|
288
297
|
language?: string;
|
|
289
298
|
subscriptionTier?: string;
|
|
290
299
|
monthsSubscribed?: string;
|
|
@@ -325,8 +334,15 @@ export interface paths {
|
|
|
325
334
|
variantId?: string;
|
|
326
335
|
/** @description Publisher-defined surface label for where the offer is shown (e.g. 'paywall', 'onboarding', 'settings'). Stamped onto the sdk_offer_requested event so publisher analytics can break the funnel out by placement. An Encore admin can also configure a per-placement offer rule for an app, in which case this label SELECTS and ORDERS the offers returned for that placement; with no rule configured, which is the default for every app, it stays analytics-only and changes nothing about what is served. Max 64 chars. SDKs may send their own auto-generated `placement_<8 hex>` id when the publisher supplied none — that is expected and is folded into the '(unlabeled)' bucket at read time; do NOT substitute '(unlabeled)' or an empty string yourself. */
|
|
327
336
|
placementId?: string;
|
|
337
|
+
/**
|
|
338
|
+
* @description Which Encore surface is being filled. Ignored while OFFERS_SEARCH_RESOLVES_SURFACE is off. With it on and no variantId, the server resolves the variant for this use case (and the placementId pin) as GET /config does; a sent variantId always wins. Absent or unrecognised: today's behaviour (churn-intervention). Never a 400.
|
|
339
|
+
* @enum {string}
|
|
340
|
+
*/
|
|
341
|
+
useCase?: "churn-intervention" | "post-action-reward";
|
|
328
342
|
/** @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. */
|
|
329
343
|
maxPostbackTimeMs?: number;
|
|
344
|
+
/** @description Send only when this placement carries the app's own prize for a reward-for-trying Yes: the app's daily prize limit from its SDK configuration (PublisherRewardPolicy), clamped server-side to 1..10. The response then carries publisherRewardPromise. Omit it and nothing changes. */
|
|
345
|
+
publisherRewardDailyLimit?: number;
|
|
330
346
|
/** @description Request-scoped serving context. Unknown keys are ignored. */
|
|
331
347
|
context?: {
|
|
332
348
|
/** @description Request-scoped activity the user is engaged in at serve time (what the surface is being used for, not a persisted user property). Recognized values: laundry, vending, car_wash, air_vacuum, amusement. Any other value is accepted and recorded on serve analytics, so unrecognized activities show up in reporting rather than failing the request. Does not change which offers are served today. */
|
|
@@ -409,6 +425,10 @@ export interface paths {
|
|
|
409
425
|
heroImageUrl?: string | null;
|
|
410
426
|
/** @description https link to the advertiser offer terms. Null or absent: render terms copy as plain text. */
|
|
411
427
|
termsUrl?: string | null;
|
|
428
|
+
/** @description Display-only strings a variant renders by key, e.g. {"eligibilityNote":"New subscribers only"}. Values are strings; the type is free-form so one unexpected value cannot fail a client decode. Absent or empty: the variant draws none of those lines. */
|
|
429
|
+
displayProperties?: {
|
|
430
|
+
[key: string]: unknown;
|
|
431
|
+
};
|
|
412
432
|
/** Format: date-time */
|
|
413
433
|
createdAt: string;
|
|
414
434
|
/** Format: date-time */
|
|
@@ -457,6 +477,8 @@ export interface paths {
|
|
|
457
477
|
title: string;
|
|
458
478
|
subtitle: string;
|
|
459
479
|
ctaButtonText?: string;
|
|
480
|
+
/** @description Optional https image for this step. Absent: the step has none. */
|
|
481
|
+
imageUrl?: string;
|
|
460
482
|
}[] | null;
|
|
461
483
|
/** @description Short, actionable phrases (max 1-3) that guide users. Examples: "sign up, create registry", "add to cart" */
|
|
462
484
|
quickInstructions: string | null;
|
|
@@ -523,11 +545,41 @@ export interface paths {
|
|
|
523
545
|
category?: string | null;
|
|
524
546
|
/** @description The gift-sheet group this campaign files under: "Watch & listen", "Money" or "Everyday". Derived from `category` by the server so a native chip strip shows what web tabs show without holding the taxonomy map. Always set: an absent, blank or unmapped category files under "Everyday", so every offer sits in some group. Whether a strip is worth drawing is the client's call, because only it knows which offers its sheet lists. /offers/search only: web-sdk holds its own copy of the map and groups `category` itself. */
|
|
525
547
|
categoryGroup?: string | null;
|
|
548
|
+
/** @description `category` in the response locale, for display only. Group and filter on `category`, which stays English. Null when `category` is null. /offers/search only. */
|
|
549
|
+
categoryDisplayName?: string | null;
|
|
550
|
+
/** @description `categoryGroup` in the response locale, for display only. Group on `categoryGroup`, which stays English. /offers/search only. */
|
|
551
|
+
categoryGroupDisplayName?: string | null;
|
|
526
552
|
/** @description Estimated time from the user tapping this offer to the reward being confirmed, from recent real conversions (on demo offers, from the demo advertiser's configured behavior instead). Half confirm within medianSeconds, 9 in 10 within p90Seconds. Not a guarantee: to show a wait, use p90Seconds. Null when there is no current estimate (too few recent conversions, data more than 7 days old, or an offer that does not confirm through the advertiser); say nothing about timing then. */
|
|
527
553
|
rewardConfirmationTime?: {
|
|
528
554
|
medianSeconds: number;
|
|
529
555
|
p90Seconds: number;
|
|
530
556
|
} | null;
|
|
557
|
+
/** @description Campaign claim-URL query parameters, keys verbatim (e.g. {"af_rid":"TRANSACTION_ID"}); equals the served creative's whenever one exists. Always pair it with the offer's destinationUrl, never with a creative's, and never build a claim URL from an absent or empty value. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
558
|
+
trackingParameters?: {
|
|
559
|
+
[key: string]: unknown;
|
|
560
|
+
} | null;
|
|
561
|
+
/** @description Campaign call-to-action text. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
562
|
+
ctaText?: string | null;
|
|
563
|
+
/** @description Campaign description, localized like creatives. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
564
|
+
description?: string | null;
|
|
565
|
+
/** @description Campaign step-by-step instructions, same shape as a creative's. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
566
|
+
instructions?: {
|
|
567
|
+
title: string;
|
|
568
|
+
subtitle: string;
|
|
569
|
+
ctaButtonText?: string;
|
|
570
|
+
/** @description Optional https image for this step. Absent: the step has none. */
|
|
571
|
+
imageUrl?: string;
|
|
572
|
+
}[] | null;
|
|
573
|
+
/** @description Campaign one-line instructions. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
574
|
+
quickInstructions?: string | null;
|
|
575
|
+
/** @description Campaign logo override; null means use organization.logoUrl. Plain string, not format: uri, so one bad value cannot fail a whole Android decode. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
576
|
+
logoUrl?: string | null;
|
|
577
|
+
/** @description Campaign card title. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
578
|
+
title?: string | null;
|
|
579
|
+
/** @description Campaign card subtitle. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
580
|
+
subtitle?: string | null;
|
|
581
|
+
/** @description Campaign tooltip text. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
582
|
+
tooltipText?: string | null;
|
|
531
583
|
}[];
|
|
532
584
|
metadata: {
|
|
533
585
|
/** @description Total offers available */
|
|
@@ -545,6 +597,8 @@ export interface paths {
|
|
|
545
597
|
};
|
|
546
598
|
/** @description Resolved locale served in this response (language-only, e.g. 'es'). Absent on pre-localization responses. */
|
|
547
599
|
locale?: string;
|
|
600
|
+
/** @description Whether this user may still be granted the app's prize for a reward-for-trying Yes: true while the prizes granted to them in the last 24 hours (rolling) are under publisherRewardDailyLimit. Present only when the request sent publisherRewardDailyLimit. Offers this user already completed or said Yes to are never served, so this answers the daily limit only. Absent (an older backend, or no limit sent) means no promise. Not a grant: the self-report's granted answer is final. */
|
|
601
|
+
publisherRewardPromise?: boolean;
|
|
548
602
|
error?: string | null;
|
|
549
603
|
};
|
|
550
604
|
};
|
|
@@ -558,6 +612,8 @@ export interface paths {
|
|
|
558
612
|
"application/json": {
|
|
559
613
|
error: string;
|
|
560
614
|
details?: unknown;
|
|
615
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
616
|
+
code?: string;
|
|
561
617
|
};
|
|
562
618
|
};
|
|
563
619
|
};
|
|
@@ -570,6 +626,8 @@ export interface paths {
|
|
|
570
626
|
"application/json": {
|
|
571
627
|
error: string;
|
|
572
628
|
details?: unknown;
|
|
629
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
630
|
+
code?: string;
|
|
573
631
|
};
|
|
574
632
|
};
|
|
575
633
|
};
|
|
@@ -582,6 +640,8 @@ export interface paths {
|
|
|
582
640
|
"application/json": {
|
|
583
641
|
error: string;
|
|
584
642
|
details?: unknown;
|
|
643
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
644
|
+
code?: string;
|
|
585
645
|
};
|
|
586
646
|
};
|
|
587
647
|
};
|
|
@@ -594,6 +654,8 @@ export interface paths {
|
|
|
594
654
|
"application/json": {
|
|
595
655
|
error: string;
|
|
596
656
|
details?: unknown;
|
|
657
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
658
|
+
code?: string;
|
|
597
659
|
};
|
|
598
660
|
};
|
|
599
661
|
};
|
|
@@ -614,7 +676,7 @@ export interface paths {
|
|
|
614
676
|
};
|
|
615
677
|
get?: never;
|
|
616
678
|
put?: never;
|
|
617
|
-
/** @description Rebrokering catalog: the full set of offers your app may serve to a given end user, to render on your own surface. Two hard, server-enforced filters always apply: entitlement (your app's opt-outs + whitelist) and geo (offers not redeemable in the end user's country are dropped: non-redeemable offers are never returned). Serve path requires `userId` (a stable end-user identifier) and geo (`countryCode`, or the end user's IP forwarded via X-Forwarded-For); missing either is a 400. Each returned creative carries a tokenized `clickUrl`: route the end user there on tap and it records an attributed transaction (bound to your app, the offer, the creative, and the userId) then 302s to the advertiser. Filter to your curated offer IDs and order CLIENT-SIDE, falling back to other returned offers so your surface is never empty (the server does not narrow to your picks). Set `includeAllRegions: true` for config-time discovery of your full addressable inventory (skips geo, needs no userId, returns no clickUrls; each offer carries targetCountries); not for display. Authentication: publishable key (X-API-Key: pk_live_* / pk_test_*). */
|
|
679
|
+
/** @description Rebrokering catalog: the full set of offers your app may serve to a given end user, to render on your own surface. Two hard, server-enforced filters always apply: entitlement (your app's opt-outs + whitelist) and geo (offers not redeemable in the end user's country are dropped: non-redeemable offers are never returned). Serve path requires `userId` (a stable end-user identifier) and geo (`countryCode`, or the end user's IP forwarded via X-Forwarded-For); missing either is a 400. On the serve path, offers this end user already completed (a confirmed conversion, or a Yes they reported through an Encore SDK) are left out. Each returned creative carries a tokenized `clickUrl`: route the end user there on tap and it records an attributed transaction (bound to your app, the offer, the creative, and the userId) then 302s to the advertiser. Filter to your curated offer IDs and order CLIENT-SIDE, falling back to other returned offers so your surface is never empty (the server does not narrow to your picks). Set `includeAllRegions: true` for config-time discovery of your full addressable inventory (skips geo, needs no userId, returns no clickUrls; each offer carries targetCountries); not for display. Authentication: publishable key (X-API-Key: pk_live_* / pk_test_*). */
|
|
618
680
|
post: {
|
|
619
681
|
parameters: {
|
|
620
682
|
query?: never;
|
|
@@ -625,7 +687,7 @@ export interface paths {
|
|
|
625
687
|
requestBody?: {
|
|
626
688
|
content: {
|
|
627
689
|
"application/json": {
|
|
628
|
-
/** @description Stable identifier for the END USER you are rendering offers to (any opaque string; does not need to be PII). REQUIRED on the serve path — it is bound into each offer's clickUrl so a click records a transaction attributed to (your app, the offer, the creative, this user),
|
|
690
|
+
/** @description Stable identifier for the END USER you are rendering offers to (any opaque string; does not need to be PII). REQUIRED on the serve path — it is bound into each offer's clickUrl so a click records a transaction attributed to (your app, the offer, the creative, this user), it drives per-user fraud controls (trial caps, retake blocking) at click time, and on the serve path it leaves out offers this user already completed. Use the same value across renders for the same user. Not required when includeAllRegions is set (config mode returns no clickUrls). */
|
|
629
691
|
userId?: string;
|
|
630
692
|
/** @description Optional identifier for the operator/sub-publisher on whose behalf offers are shown. Carried through as an analytics dimension. Defaults to userId when omitted. */
|
|
631
693
|
clientId?: string;
|
|
@@ -638,6 +700,8 @@ export interface paths {
|
|
|
638
700
|
platform?: "android" | "ios" | "web";
|
|
639
701
|
/** @description Optional publisher-defined label for the surface this offer is shown on (e.g. 'cancel_flow', 'home_feed', 'post_purchase'). Stamped onto the impression AND onto the click it produces, so publisher analytics can break the funnel out by placement. Normalised server-side: a blank value is treated as absent, anything longer than 64 characters is TRUNCATED rather than rejected, and the stored label NEVER carries leading or trailing whitespace, including after truncation, so ' my label ' and 'my label' are always one placement and can never show up as two rows. Case IS significant: 'Cancel_Flow' and 'cancel_flow' are different placements. Omit it and this traffic groups under '(unlabeled)', the same bucket as an SDK integration that supplies no placement. A per-placement offer rule NEVER applies here. `/offers/catalog` returns inventory rather than a served set, so a rule configured for this label does not select or order what comes back. Scope an inventory pull on your own filters, never on a rule. */
|
|
640
702
|
placementId?: string;
|
|
703
|
+
/** @description Optional BCP 47 language tag (e.g. "es", "pt-BR"), from the host's language override. Wins over Accept-Language; only the language subtag is used (nb is served as no; iw, in, ji, jw as he, id, yi, jv), and only when the app has it enabled, else Accept-Language, then the app default. A tag the SDKs would refuse (malformed, underscores, or an extended language subtag such as zh-yue-HK) is 400 with details.code INVALID_LANGUAGE. */
|
|
704
|
+
language?: string;
|
|
641
705
|
/** @description CONFIG-TIME ONLY. When true, skips geo-filtering and returns the full addressable inventory for your app (entitlement still applies), with each offer's targetCountries — use this to build your curation. Do NOT use for offers displayed to an end user; those must come from a geo-scoped request (countryCode or forwarded IP). When true, no geography signal is required and countryCode is ignored. */
|
|
642
706
|
includeAllRegions?: boolean;
|
|
643
707
|
/** @description Optional page size (1..100). OMIT to return ALL eligible offers (the default) — catalogs are small enough that you normally take the whole set and curate client-side. Provide only if you want to page (with offset). */
|
|
@@ -680,6 +744,10 @@ export interface paths {
|
|
|
680
744
|
isDemo?: boolean;
|
|
681
745
|
/** @description https link to the advertiser offer terms. Null or absent: render terms copy as plain text. */
|
|
682
746
|
termsUrl?: string | null;
|
|
747
|
+
/** @description Display-only strings a variant renders by key, e.g. {"eligibilityNote":"New subscribers only"}. Values are strings; the type is free-form so one unexpected value cannot fail a client decode. Absent or empty: the variant draws none of those lines. */
|
|
748
|
+
displayProperties?: {
|
|
749
|
+
[key: string]: unknown;
|
|
750
|
+
};
|
|
683
751
|
/** @description Estimated time from the user tapping this offer to the reward being confirmed, from recent real conversions (on demo offers, from the demo advertiser's configured behavior instead). Half confirm within medianSeconds, 9 in 10 within p90Seconds. Not a guarantee: to show a wait, use p90Seconds. Null when there is no current estimate (too few recent conversions, data more than 7 days old, or an offer that does not confirm through the advertiser); say nothing about timing then. */
|
|
684
752
|
rewardConfirmationTime?: {
|
|
685
753
|
medianSeconds: number;
|
|
@@ -712,6 +780,8 @@ export interface paths {
|
|
|
712
780
|
title: string;
|
|
713
781
|
subtitle: string;
|
|
714
782
|
ctaButtonText?: string;
|
|
783
|
+
/** @description Optional https image for this step. Absent: the step has none. */
|
|
784
|
+
imageUrl?: string;
|
|
715
785
|
}[] | null;
|
|
716
786
|
/** @description A short one line version of the instructions, e.g. "sign up, complete one survey". Null or absent: the creative has none. */
|
|
717
787
|
quickInstructions?: string | null;
|
|
@@ -744,6 +814,8 @@ export interface paths {
|
|
|
744
814
|
"application/json": {
|
|
745
815
|
error: string;
|
|
746
816
|
details?: unknown;
|
|
817
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
818
|
+
code?: string;
|
|
747
819
|
};
|
|
748
820
|
};
|
|
749
821
|
};
|
|
@@ -756,6 +828,8 @@ export interface paths {
|
|
|
756
828
|
"application/json": {
|
|
757
829
|
error: string;
|
|
758
830
|
details?: unknown;
|
|
831
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
832
|
+
code?: string;
|
|
759
833
|
};
|
|
760
834
|
};
|
|
761
835
|
};
|
|
@@ -768,6 +842,8 @@ export interface paths {
|
|
|
768
842
|
"application/json": {
|
|
769
843
|
error: string;
|
|
770
844
|
details?: unknown;
|
|
845
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
846
|
+
code?: string;
|
|
771
847
|
};
|
|
772
848
|
};
|
|
773
849
|
};
|
|
@@ -807,7 +883,7 @@ export interface paths {
|
|
|
807
883
|
attributes: {
|
|
808
884
|
/** @description ISO 3166-1 alpha-2 country code (e.g., "US", "GB", "CA"). */
|
|
809
885
|
countryCode: string;
|
|
810
|
-
/** @description BCP 47 language tag
|
|
886
|
+
/** @description BCP 47 language tag; only the language subtag is used for creative locale resolution, and only when the app has that language enabled. Falls back to Accept-Language, then the app default locale. */
|
|
811
887
|
language: string;
|
|
812
888
|
/**
|
|
813
889
|
* @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.
|
|
@@ -875,6 +951,8 @@ export interface paths {
|
|
|
875
951
|
"application/json": {
|
|
876
952
|
error: string;
|
|
877
953
|
details?: unknown;
|
|
954
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
955
|
+
code?: string;
|
|
878
956
|
};
|
|
879
957
|
};
|
|
880
958
|
};
|
|
@@ -887,6 +965,8 @@ export interface paths {
|
|
|
887
965
|
"application/json": {
|
|
888
966
|
error: string;
|
|
889
967
|
details?: unknown;
|
|
968
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
969
|
+
code?: string;
|
|
890
970
|
};
|
|
891
971
|
};
|
|
892
972
|
};
|
|
@@ -899,6 +979,8 @@ export interface paths {
|
|
|
899
979
|
"application/json": {
|
|
900
980
|
error: string;
|
|
901
981
|
details?: unknown;
|
|
982
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
983
|
+
code?: string;
|
|
902
984
|
};
|
|
903
985
|
};
|
|
904
986
|
};
|
|
@@ -938,7 +1020,7 @@ export interface paths {
|
|
|
938
1020
|
attributes: {
|
|
939
1021
|
/** @description ISO 3166-1 alpha-2 country code (e.g., "US", "GB", "CA"). */
|
|
940
1022
|
countryCode: string;
|
|
941
|
-
/** @description BCP 47 language tag
|
|
1023
|
+
/** @description BCP 47 language tag; only the language subtag is used for creative locale resolution, and only when the app has that language enabled. Falls back to Accept-Language, then the app default locale. */
|
|
942
1024
|
language: string;
|
|
943
1025
|
/**
|
|
944
1026
|
* @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.
|
|
@@ -1014,6 +1096,10 @@ export interface paths {
|
|
|
1014
1096
|
heroImageUrl?: string | null;
|
|
1015
1097
|
/** @description https link to the advertiser offer terms. Null or absent: render terms copy as plain text. */
|
|
1016
1098
|
termsUrl?: string | null;
|
|
1099
|
+
/** @description Display-only strings a variant renders by key, e.g. {"eligibilityNote":"New subscribers only"}. Values are strings; the type is free-form so one unexpected value cannot fail a client decode. Absent or empty: the variant draws none of those lines. */
|
|
1100
|
+
displayProperties?: {
|
|
1101
|
+
[key: string]: unknown;
|
|
1102
|
+
};
|
|
1017
1103
|
/** @description Display name of the campaign category, e.g. "Music and Audio". Free string: the taxonomy is admin-editable, so accept any value. */
|
|
1018
1104
|
category?: string | null;
|
|
1019
1105
|
/** @description Step by step instructions from the creative, translated like the title. Null or absent: the creative has none. */
|
|
@@ -1021,6 +1107,8 @@ export interface paths {
|
|
|
1021
1107
|
title: string;
|
|
1022
1108
|
subtitle: string;
|
|
1023
1109
|
ctaButtonText?: string;
|
|
1110
|
+
/** @description Optional https image for this step. Absent: the step has none. */
|
|
1111
|
+
imageUrl?: string;
|
|
1024
1112
|
}[] | null;
|
|
1025
1113
|
/** @description A short one line version of the instructions, e.g. "sign up, complete one survey". Null or absent: the creative has none. */
|
|
1026
1114
|
quickInstructions?: string | null;
|
|
@@ -1042,6 +1130,8 @@ export interface paths {
|
|
|
1042
1130
|
"application/json": {
|
|
1043
1131
|
error: string;
|
|
1044
1132
|
details?: unknown;
|
|
1133
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1134
|
+
code?: string;
|
|
1045
1135
|
};
|
|
1046
1136
|
};
|
|
1047
1137
|
};
|
|
@@ -1054,6 +1144,8 @@ export interface paths {
|
|
|
1054
1144
|
"application/json": {
|
|
1055
1145
|
error: string;
|
|
1056
1146
|
details?: unknown;
|
|
1147
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1148
|
+
code?: string;
|
|
1057
1149
|
};
|
|
1058
1150
|
};
|
|
1059
1151
|
};
|
|
@@ -1066,6 +1158,8 @@ export interface paths {
|
|
|
1066
1158
|
"application/json": {
|
|
1067
1159
|
error: string;
|
|
1068
1160
|
details?: unknown;
|
|
1161
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1162
|
+
code?: string;
|
|
1069
1163
|
};
|
|
1070
1164
|
};
|
|
1071
1165
|
};
|
|
@@ -1129,6 +1223,8 @@ export interface paths {
|
|
|
1129
1223
|
"application/json": {
|
|
1130
1224
|
error: string;
|
|
1131
1225
|
details?: unknown;
|
|
1226
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1227
|
+
code?: string;
|
|
1132
1228
|
};
|
|
1133
1229
|
};
|
|
1134
1230
|
};
|
|
@@ -1141,6 +1237,8 @@ export interface paths {
|
|
|
1141
1237
|
"application/json": {
|
|
1142
1238
|
error: string;
|
|
1143
1239
|
details?: unknown;
|
|
1240
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1241
|
+
code?: string;
|
|
1144
1242
|
};
|
|
1145
1243
|
};
|
|
1146
1244
|
};
|
|
@@ -1153,6 +1251,8 @@ export interface paths {
|
|
|
1153
1251
|
"application/json": {
|
|
1154
1252
|
error: string;
|
|
1155
1253
|
details?: unknown;
|
|
1254
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1255
|
+
code?: string;
|
|
1156
1256
|
};
|
|
1157
1257
|
};
|
|
1158
1258
|
};
|
|
@@ -1173,7 +1273,7 @@ export interface paths {
|
|
|
1173
1273
|
};
|
|
1174
1274
|
get?: never;
|
|
1175
1275
|
put?: never;
|
|
1176
|
-
/** @description Create a new transaction for a specific campaign */
|
|
1276
|
+
/** @description Create a new transaction for a specific campaign. 409 with code 'offerAlreadyCompleted' when this user already completed the offer, or said Yes to it through a self-report: drop the offer from the list rather than retrying. The app-wide trial-limit 409 carries no code. */
|
|
1177
1277
|
post: {
|
|
1178
1278
|
parameters: {
|
|
1179
1279
|
query?: never;
|
|
@@ -1230,6 +1330,8 @@ export interface paths {
|
|
|
1230
1330
|
"application/json": {
|
|
1231
1331
|
error: string;
|
|
1232
1332
|
details?: unknown;
|
|
1333
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1334
|
+
code?: string;
|
|
1233
1335
|
};
|
|
1234
1336
|
};
|
|
1235
1337
|
};
|
|
@@ -1242,6 +1344,8 @@ export interface paths {
|
|
|
1242
1344
|
"application/json": {
|
|
1243
1345
|
error: string;
|
|
1244
1346
|
details?: unknown;
|
|
1347
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1348
|
+
code?: string;
|
|
1245
1349
|
};
|
|
1246
1350
|
};
|
|
1247
1351
|
};
|
|
@@ -1254,6 +1358,8 @@ export interface paths {
|
|
|
1254
1358
|
"application/json": {
|
|
1255
1359
|
error: string;
|
|
1256
1360
|
details?: unknown;
|
|
1361
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1362
|
+
code?: string;
|
|
1257
1363
|
};
|
|
1258
1364
|
};
|
|
1259
1365
|
};
|
|
@@ -1266,6 +1372,8 @@ export interface paths {
|
|
|
1266
1372
|
"application/json": {
|
|
1267
1373
|
error: string;
|
|
1268
1374
|
details?: unknown;
|
|
1375
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1376
|
+
code?: string;
|
|
1269
1377
|
};
|
|
1270
1378
|
};
|
|
1271
1379
|
};
|
|
@@ -1278,6 +1386,8 @@ export interface paths {
|
|
|
1278
1386
|
"application/json": {
|
|
1279
1387
|
error: string;
|
|
1280
1388
|
details?: unknown;
|
|
1389
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1390
|
+
code?: string;
|
|
1281
1391
|
};
|
|
1282
1392
|
};
|
|
1283
1393
|
};
|
|
@@ -1341,6 +1451,8 @@ export interface paths {
|
|
|
1341
1451
|
"application/json": {
|
|
1342
1452
|
error: string;
|
|
1343
1453
|
details?: unknown;
|
|
1454
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1455
|
+
code?: string;
|
|
1344
1456
|
};
|
|
1345
1457
|
};
|
|
1346
1458
|
};
|
|
@@ -1353,6 +1465,8 @@ export interface paths {
|
|
|
1353
1465
|
"application/json": {
|
|
1354
1466
|
error: string;
|
|
1355
1467
|
details?: unknown;
|
|
1468
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1469
|
+
code?: string;
|
|
1356
1470
|
};
|
|
1357
1471
|
};
|
|
1358
1472
|
};
|
|
@@ -1365,6 +1479,8 @@ export interface paths {
|
|
|
1365
1479
|
"application/json": {
|
|
1366
1480
|
error: string;
|
|
1367
1481
|
details?: unknown;
|
|
1482
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1483
|
+
code?: string;
|
|
1368
1484
|
};
|
|
1369
1485
|
};
|
|
1370
1486
|
};
|
|
@@ -1377,6 +1493,133 @@ export interface paths {
|
|
|
1377
1493
|
"application/json": {
|
|
1378
1494
|
error: string;
|
|
1379
1495
|
details?: unknown;
|
|
1496
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1497
|
+
code?: string;
|
|
1498
|
+
};
|
|
1499
|
+
};
|
|
1500
|
+
};
|
|
1501
|
+
/** @description Default Response */
|
|
1502
|
+
500: {
|
|
1503
|
+
headers: {
|
|
1504
|
+
[name: string]: unknown;
|
|
1505
|
+
};
|
|
1506
|
+
content: {
|
|
1507
|
+
"application/json": {
|
|
1508
|
+
error: string;
|
|
1509
|
+
details?: unknown;
|
|
1510
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1511
|
+
code?: string;
|
|
1512
|
+
};
|
|
1513
|
+
};
|
|
1514
|
+
};
|
|
1515
|
+
};
|
|
1516
|
+
};
|
|
1517
|
+
delete?: never;
|
|
1518
|
+
options?: never;
|
|
1519
|
+
head?: never;
|
|
1520
|
+
patch?: never;
|
|
1521
|
+
trace?: never;
|
|
1522
|
+
};
|
|
1523
|
+
"/publisher/sdk/v1/transactions/{transactionId}/self-report": {
|
|
1524
|
+
parameters: {
|
|
1525
|
+
query?: never;
|
|
1526
|
+
header?: never;
|
|
1527
|
+
path?: never;
|
|
1528
|
+
cookie?: never;
|
|
1529
|
+
};
|
|
1530
|
+
get?: never;
|
|
1531
|
+
put?: never;
|
|
1532
|
+
/** @description Record that the user answered "Yes, I completed it" to a reward-for-trying offer, and decide whether the app may grant its own prize. Send it on EVERY tapped Yes, prize or not: the Yes is stored per person (the app's user id), so the offer is hidden from that person on every surface and a re-claim is refused (409 offerAlreadyCompleted), including after a reinstall or on a second device. granted is true only for the first Yes per person per offer, while the person is under the app's daily limit (a rolling 24 hours). Treat no answer as no prize. Idempotent on reportId. Never changes the transaction: no status, payout, entitlement or webhook. 404 when the transaction does not belong to this app, or userId is not the current user id of the person who claimed it. The server cannot tell an identified user from an SDK-generated anonymous id: an app that wants prizes kept to signed-in users must gate the promise client-side. */
|
|
1533
|
+
post: {
|
|
1534
|
+
parameters: {
|
|
1535
|
+
query?: never;
|
|
1536
|
+
header?: never;
|
|
1537
|
+
path: {
|
|
1538
|
+
transactionId: string;
|
|
1539
|
+
};
|
|
1540
|
+
cookie?: never;
|
|
1541
|
+
};
|
|
1542
|
+
requestBody: {
|
|
1543
|
+
content: {
|
|
1544
|
+
"application/json": {
|
|
1545
|
+
/** @description The SDK's CURRENT user id at the moment the report is sent (not the id captured when the user tapped Yes). Must equal the current app user id of the user who owns the transaction, or the request is a 404. */
|
|
1546
|
+
userId: string;
|
|
1547
|
+
/**
|
|
1548
|
+
* Format: uuid
|
|
1549
|
+
* @description Minted once per tapped Yes and reused on every retry of that Yes, with the same body. A retry gets the same granted. On a refused Yes the server keeps only that no prize was granted, so the retry's reason is derived from the retry's own body (daily_cap when it carries publisherRewardId, else no_prize): resend the body unchanged.
|
|
1550
|
+
*/
|
|
1551
|
+
reportId: string;
|
|
1552
|
+
/** @description Present only when a prize was promised for this Yes. Absent: the Yes is still recorded (the offer is hidden and cannot be re-claimed) and granted is false with reason no_prize. */
|
|
1553
|
+
publisherRewardId?: string;
|
|
1554
|
+
/** @description The app's daily prize limit from its SDK configuration. Required when publisherRewardId is present. Clamped server-side to 1..10. */
|
|
1555
|
+
dailyLimit?: number;
|
|
1556
|
+
};
|
|
1557
|
+
};
|
|
1558
|
+
};
|
|
1559
|
+
responses: {
|
|
1560
|
+
/** @description Default Response */
|
|
1561
|
+
200: {
|
|
1562
|
+
headers: {
|
|
1563
|
+
[name: string]: unknown;
|
|
1564
|
+
};
|
|
1565
|
+
content: {
|
|
1566
|
+
"application/json": {
|
|
1567
|
+
/** @enum {boolean} */
|
|
1568
|
+
success: true;
|
|
1569
|
+
/** @description Whether the app may grant its prize for this Yes. True only for the first Yes per person per offer, under the daily limit. The ONLY source of prize eligibility: no answer (timeout, offline, 5xx, 404) means no prize. */
|
|
1570
|
+
granted: boolean;
|
|
1571
|
+
/**
|
|
1572
|
+
* @description Present when granted is false.
|
|
1573
|
+
* @enum {string}
|
|
1574
|
+
*/
|
|
1575
|
+
reason?: "per_offer" | "daily_cap" | "no_prize";
|
|
1576
|
+
/**
|
|
1577
|
+
* Format: date-time
|
|
1578
|
+
* @description When the server recorded this person's Yes for this offer (the first one, on a retry or a second device).
|
|
1579
|
+
*/
|
|
1580
|
+
reportedAt: string;
|
|
1581
|
+
};
|
|
1582
|
+
};
|
|
1583
|
+
};
|
|
1584
|
+
/** @description Default Response */
|
|
1585
|
+
400: {
|
|
1586
|
+
headers: {
|
|
1587
|
+
[name: string]: unknown;
|
|
1588
|
+
};
|
|
1589
|
+
content: {
|
|
1590
|
+
"application/json": {
|
|
1591
|
+
error: string;
|
|
1592
|
+
details?: unknown;
|
|
1593
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1594
|
+
code?: string;
|
|
1595
|
+
};
|
|
1596
|
+
};
|
|
1597
|
+
};
|
|
1598
|
+
/** @description Default Response */
|
|
1599
|
+
401: {
|
|
1600
|
+
headers: {
|
|
1601
|
+
[name: string]: unknown;
|
|
1602
|
+
};
|
|
1603
|
+
content: {
|
|
1604
|
+
"application/json": {
|
|
1605
|
+
error: string;
|
|
1606
|
+
details?: unknown;
|
|
1607
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1608
|
+
code?: string;
|
|
1609
|
+
};
|
|
1610
|
+
};
|
|
1611
|
+
};
|
|
1612
|
+
/** @description Default Response */
|
|
1613
|
+
404: {
|
|
1614
|
+
headers: {
|
|
1615
|
+
[name: string]: unknown;
|
|
1616
|
+
};
|
|
1617
|
+
content: {
|
|
1618
|
+
"application/json": {
|
|
1619
|
+
error: string;
|
|
1620
|
+
details?: unknown;
|
|
1621
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1622
|
+
code?: string;
|
|
1380
1623
|
};
|
|
1381
1624
|
};
|
|
1382
1625
|
};
|
|
@@ -1389,6 +1632,8 @@ export interface paths {
|
|
|
1389
1632
|
"application/json": {
|
|
1390
1633
|
error: string;
|
|
1391
1634
|
details?: unknown;
|
|
1635
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1636
|
+
code?: string;
|
|
1392
1637
|
};
|
|
1393
1638
|
};
|
|
1394
1639
|
};
|
|
@@ -1448,6 +1693,8 @@ export interface paths {
|
|
|
1448
1693
|
"application/json": {
|
|
1449
1694
|
error: string;
|
|
1450
1695
|
details?: unknown;
|
|
1696
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1697
|
+
code?: string;
|
|
1451
1698
|
};
|
|
1452
1699
|
};
|
|
1453
1700
|
};
|
|
@@ -1460,6 +1707,8 @@ export interface paths {
|
|
|
1460
1707
|
"application/json": {
|
|
1461
1708
|
error: string;
|
|
1462
1709
|
details?: unknown;
|
|
1710
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1711
|
+
code?: string;
|
|
1463
1712
|
};
|
|
1464
1713
|
};
|
|
1465
1714
|
};
|
|
@@ -1472,6 +1721,8 @@ export interface paths {
|
|
|
1472
1721
|
"application/json": {
|
|
1473
1722
|
error: string;
|
|
1474
1723
|
details?: unknown;
|
|
1724
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1725
|
+
code?: string;
|
|
1475
1726
|
};
|
|
1476
1727
|
};
|
|
1477
1728
|
};
|
|
@@ -1655,6 +1906,8 @@ export interface paths {
|
|
|
1655
1906
|
"application/json": {
|
|
1656
1907
|
error: string;
|
|
1657
1908
|
details?: unknown;
|
|
1909
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1910
|
+
code?: string;
|
|
1658
1911
|
};
|
|
1659
1912
|
};
|
|
1660
1913
|
};
|
|
@@ -1667,6 +1920,8 @@ export interface paths {
|
|
|
1667
1920
|
"application/json": {
|
|
1668
1921
|
error: string;
|
|
1669
1922
|
details?: unknown;
|
|
1923
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1924
|
+
code?: string;
|
|
1670
1925
|
};
|
|
1671
1926
|
};
|
|
1672
1927
|
};
|
|
@@ -1679,6 +1934,8 @@ export interface paths {
|
|
|
1679
1934
|
"application/json": {
|
|
1680
1935
|
error: string;
|
|
1681
1936
|
details?: unknown;
|
|
1937
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
1938
|
+
code?: string;
|
|
1682
1939
|
};
|
|
1683
1940
|
};
|
|
1684
1941
|
};
|
|
@@ -1854,6 +2111,8 @@ export interface paths {
|
|
|
1854
2111
|
"application/json": {
|
|
1855
2112
|
error: string;
|
|
1856
2113
|
details?: unknown;
|
|
2114
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
2115
|
+
code?: string;
|
|
1857
2116
|
};
|
|
1858
2117
|
};
|
|
1859
2118
|
};
|
|
@@ -1866,6 +2125,8 @@ export interface paths {
|
|
|
1866
2125
|
"application/json": {
|
|
1867
2126
|
error: string;
|
|
1868
2127
|
details?: unknown;
|
|
2128
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
2129
|
+
code?: string;
|
|
1869
2130
|
};
|
|
1870
2131
|
};
|
|
1871
2132
|
};
|
|
@@ -1878,6 +2139,8 @@ export interface paths {
|
|
|
1878
2139
|
"application/json": {
|
|
1879
2140
|
error: string;
|
|
1880
2141
|
details?: unknown;
|
|
2142
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
2143
|
+
code?: string;
|
|
1881
2144
|
};
|
|
1882
2145
|
};
|
|
1883
2146
|
};
|
|
@@ -2059,6 +2322,8 @@ export interface paths {
|
|
|
2059
2322
|
"application/json": {
|
|
2060
2323
|
error: string;
|
|
2061
2324
|
details?: unknown;
|
|
2325
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
2326
|
+
code?: string;
|
|
2062
2327
|
};
|
|
2063
2328
|
};
|
|
2064
2329
|
};
|
|
@@ -2071,6 +2336,8 @@ export interface paths {
|
|
|
2071
2336
|
"application/json": {
|
|
2072
2337
|
error: string;
|
|
2073
2338
|
details?: unknown;
|
|
2339
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
2340
|
+
code?: string;
|
|
2074
2341
|
};
|
|
2075
2342
|
};
|
|
2076
2343
|
};
|
|
@@ -2150,6 +2417,8 @@ export interface paths {
|
|
|
2150
2417
|
"application/json": {
|
|
2151
2418
|
error: string;
|
|
2152
2419
|
details?: unknown;
|
|
2420
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
2421
|
+
code?: string;
|
|
2153
2422
|
};
|
|
2154
2423
|
};
|
|
2155
2424
|
};
|
|
@@ -2162,6 +2431,8 @@ export interface paths {
|
|
|
2162
2431
|
"application/json": {
|
|
2163
2432
|
error: string;
|
|
2164
2433
|
details?: unknown;
|
|
2434
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
2435
|
+
code?: string;
|
|
2165
2436
|
};
|
|
2166
2437
|
};
|
|
2167
2438
|
};
|
|
@@ -2174,6 +2445,8 @@ export interface paths {
|
|
|
2174
2445
|
"application/json": {
|
|
2175
2446
|
error: string;
|
|
2176
2447
|
details?: unknown;
|
|
2448
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
2449
|
+
code?: string;
|
|
2177
2450
|
};
|
|
2178
2451
|
};
|
|
2179
2452
|
};
|
|
@@ -2304,6 +2577,8 @@ export interface paths {
|
|
|
2304
2577
|
"application/json": {
|
|
2305
2578
|
error: string;
|
|
2306
2579
|
details?: unknown;
|
|
2580
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
2581
|
+
code?: string;
|
|
2307
2582
|
};
|
|
2308
2583
|
};
|
|
2309
2584
|
};
|
|
@@ -2316,6 +2591,8 @@ export interface paths {
|
|
|
2316
2591
|
"application/json": {
|
|
2317
2592
|
error: string;
|
|
2318
2593
|
details?: unknown;
|
|
2594
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
2595
|
+
code?: string;
|
|
2319
2596
|
};
|
|
2320
2597
|
};
|
|
2321
2598
|
};
|
|
@@ -2336,7 +2613,7 @@ export interface paths {
|
|
|
2336
2613
|
path?: never;
|
|
2337
2614
|
cookie?: never;
|
|
2338
2615
|
};
|
|
2339
|
-
/** @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. `demoVariant` names an SDUI variant to serve for this request. It is honoured on a TEST key (pk_test_*) for any app, and on a live key only for Encore's own demo apps; for every other app it is ignored silently (never an error). It exists for demos and previews: Encore's own demo pages, and a publisher who wants to see the other variants against their own test key. 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. */
|
|
2616
|
+
/** @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. `demoVariant` names an SDUI variant to serve for this request. It is honoured on a TEST key (pk_test_*) for any app, and on a live key only for Encore's own demo apps; for every other app it is ignored silently (never an error). It exists for demos and previews: Encore's own demo pages, and a publisher who wants to see the other variants against their own test key. `placementId` selects a variant an admin pinned to that placement, in `ui` only; any label without a pin resolves as before. 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. */
|
|
2340
2617
|
get: {
|
|
2341
2618
|
parameters: {
|
|
2342
2619
|
query: {
|
|
@@ -2350,6 +2627,8 @@ export interface paths {
|
|
|
2350
2627
|
useCase?: "churn-intervention" | "post-action-reward";
|
|
2351
2628
|
/** @description Demos and previews only. The SDUI variant file stem to serve for this request, e.g. 'giftUnwrap'. Honoured on a TEST key (pk_test_*) for any app. On a live key it is honoured only for Encore's own demo apps; for every other app it is ignored silently and resolution is unchanged, never an error. Intended for Encore's internal demos and for a publisher previewing the other variants against their own test key. An honoured value bypasses app targeting, experiments and arm weights, and WIDENS the status filter from 'active' to 'active' or 'valid' — the filter is widened, not removed, so a draft, testing, invalid or archived variant is still refused. The use-case partition, the per-app kill switch and the SDK version gate all still apply. Note that a test key also serves the demo campaign catalog rather than live advertiser inventory, and tags the request as test traffic in analytics. */
|
|
2352
2629
|
demoVariant?: string;
|
|
2630
|
+
/** @description The publisher's placement label for the surface being configured, e.g. 'email_code'. Optional. When an admin has pinned an SDUI variant to this (app, placement), `ui` serves that variant instead of the experiment assignment, provided it is active or valid, matches the requested use case and passes its SDK version gate and app targeting. Otherwise, and for any label with no pin, resolution is unchanged. Never a 4xx on any input. Applies to `ui` only; the `useCases` prefetch block is never pinned. */
|
|
2631
|
+
placementId?: string;
|
|
2353
2632
|
};
|
|
2354
2633
|
header?: never;
|
|
2355
2634
|
path?: never;
|
|
@@ -2419,6 +2698,16 @@ export interface paths {
|
|
|
2419
2698
|
rewardHeadline?: string | null;
|
|
2420
2699
|
/** @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. */
|
|
2421
2700
|
rewardSubheadline?: string | null;
|
|
2701
|
+
/** @description Primary button label for the reward template. Resolution: the variant's own defaultCopy.cta. Null when the variant declares none, in which case its template carries a literal instead. An SDK that predates this field receives the wording inlined in the template, not a token. */
|
|
2702
|
+
rewardCta?: string | null;
|
|
2703
|
+
/** @description Decline button label for the reward template. Same resolution and same null meaning as rewardCta. */
|
|
2704
|
+
rewardDecline?: string | null;
|
|
2705
|
+
/** @description Badge on the highlighted offer card, e.g. 'Most claimed'. Same resolution and same null meaning as rewardCta. */
|
|
2706
|
+
rewardBadge?: string | null;
|
|
2707
|
+
/** @description Label on the card that opens the rest of the offer list, e.g. 'Show more gifts'. Same resolution and same null meaning as rewardCta. */
|
|
2708
|
+
rewardMoreGifts?: string | null;
|
|
2709
|
+
/** @description Header above the rest of the offer list, e.g. 'Other gifts'. Same resolution and same null meaning as rewardCta. */
|
|
2710
|
+
rewardOtherGifts?: string | null;
|
|
2422
2711
|
};
|
|
2423
2712
|
/** @description Appearance values */
|
|
2424
2713
|
appearance: {
|
|
@@ -2437,6 +2726,21 @@ export interface paths {
|
|
|
2437
2726
|
/** @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. */
|
|
2438
2727
|
appstoreIcon: string | null;
|
|
2439
2728
|
};
|
|
2729
|
+
/** @description Words the SDK says itself, translated into the response `locale`, by string id (e.g. 'card.claim'). Only ids that locale has; for any other id, and whenever the key is absent, use the SDK's own English. Never served for 'en'. Placeholders use ${name}. Populated in `ui.values` only, not in `useCases`. */
|
|
2730
|
+
strings?: {
|
|
2731
|
+
[key: string]: string;
|
|
2732
|
+
};
|
|
2733
|
+
/** @description Count-dependent SDK strings (e.g. 'unit.month'), translated into the response `locale`, by string id. Same id namespace as `strings`; an id appears in only one of the two. Same fallback rules as `strings`. */
|
|
2734
|
+
plurals?: {
|
|
2735
|
+
[key: string]: {
|
|
2736
|
+
zero?: string;
|
|
2737
|
+
one?: string;
|
|
2738
|
+
two?: string;
|
|
2739
|
+
few?: string;
|
|
2740
|
+
many?: string;
|
|
2741
|
+
other: string;
|
|
2742
|
+
};
|
|
2743
|
+
};
|
|
2440
2744
|
};
|
|
2441
2745
|
};
|
|
2442
2746
|
/** @description Assigned variant for every use case this app is enabled for other than the one REQUESTED, so the SDK can cache them at identify(). When the single-enabled-use-case fallback serves a different surface in `ui`, that surface also appears here under its own key, so a client that files `ui` under the requested use case still finds it. `ui` is unchanged; un-upgraded decoders ignore this key. */
|
|
@@ -2487,6 +2791,16 @@ export interface paths {
|
|
|
2487
2791
|
rewardHeadline?: string | null;
|
|
2488
2792
|
/** @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. */
|
|
2489
2793
|
rewardSubheadline?: string | null;
|
|
2794
|
+
/** @description Primary button label for the reward template. Resolution: the variant's own defaultCopy.cta. Null when the variant declares none, in which case its template carries a literal instead. An SDK that predates this field receives the wording inlined in the template, not a token. */
|
|
2795
|
+
rewardCta?: string | null;
|
|
2796
|
+
/** @description Decline button label for the reward template. Same resolution and same null meaning as rewardCta. */
|
|
2797
|
+
rewardDecline?: string | null;
|
|
2798
|
+
/** @description Badge on the highlighted offer card, e.g. 'Most claimed'. Same resolution and same null meaning as rewardCta. */
|
|
2799
|
+
rewardBadge?: string | null;
|
|
2800
|
+
/** @description Label on the card that opens the rest of the offer list, e.g. 'Show more gifts'. Same resolution and same null meaning as rewardCta. */
|
|
2801
|
+
rewardMoreGifts?: string | null;
|
|
2802
|
+
/** @description Header above the rest of the offer list, e.g. 'Other gifts'. Same resolution and same null meaning as rewardCta. */
|
|
2803
|
+
rewardOtherGifts?: string | null;
|
|
2490
2804
|
};
|
|
2491
2805
|
/** @description Appearance values */
|
|
2492
2806
|
appearance: {
|
|
@@ -2505,6 +2819,21 @@ export interface paths {
|
|
|
2505
2819
|
/** @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. */
|
|
2506
2820
|
appstoreIcon: string | null;
|
|
2507
2821
|
};
|
|
2822
|
+
/** @description Words the SDK says itself, translated into the response `locale`, by string id (e.g. 'card.claim'). Only ids that locale has; for any other id, and whenever the key is absent, use the SDK's own English. Never served for 'en'. Placeholders use ${name}. Populated in `ui.values` only, not in `useCases`. */
|
|
2823
|
+
strings?: {
|
|
2824
|
+
[key: string]: string;
|
|
2825
|
+
};
|
|
2826
|
+
/** @description Count-dependent SDK strings (e.g. 'unit.month'), translated into the response `locale`, by string id. Same id namespace as `strings`; an id appears in only one of the two. Same fallback rules as `strings`. */
|
|
2827
|
+
plurals?: {
|
|
2828
|
+
[key: string]: {
|
|
2829
|
+
zero?: string;
|
|
2830
|
+
one?: string;
|
|
2831
|
+
two?: string;
|
|
2832
|
+
few?: string;
|
|
2833
|
+
many?: string;
|
|
2834
|
+
other: string;
|
|
2835
|
+
};
|
|
2836
|
+
};
|
|
2508
2837
|
};
|
|
2509
2838
|
};
|
|
2510
2839
|
"post-action-reward"?: {
|
|
@@ -2553,6 +2882,16 @@ export interface paths {
|
|
|
2553
2882
|
rewardHeadline?: string | null;
|
|
2554
2883
|
/** @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. */
|
|
2555
2884
|
rewardSubheadline?: string | null;
|
|
2885
|
+
/** @description Primary button label for the reward template. Resolution: the variant's own defaultCopy.cta. Null when the variant declares none, in which case its template carries a literal instead. An SDK that predates this field receives the wording inlined in the template, not a token. */
|
|
2886
|
+
rewardCta?: string | null;
|
|
2887
|
+
/** @description Decline button label for the reward template. Same resolution and same null meaning as rewardCta. */
|
|
2888
|
+
rewardDecline?: string | null;
|
|
2889
|
+
/** @description Badge on the highlighted offer card, e.g. 'Most claimed'. Same resolution and same null meaning as rewardCta. */
|
|
2890
|
+
rewardBadge?: string | null;
|
|
2891
|
+
/** @description Label on the card that opens the rest of the offer list, e.g. 'Show more gifts'. Same resolution and same null meaning as rewardCta. */
|
|
2892
|
+
rewardMoreGifts?: string | null;
|
|
2893
|
+
/** @description Header above the rest of the offer list, e.g. 'Other gifts'. Same resolution and same null meaning as rewardCta. */
|
|
2894
|
+
rewardOtherGifts?: string | null;
|
|
2556
2895
|
};
|
|
2557
2896
|
/** @description Appearance values */
|
|
2558
2897
|
appearance: {
|
|
@@ -2571,6 +2910,21 @@ export interface paths {
|
|
|
2571
2910
|
/** @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. */
|
|
2572
2911
|
appstoreIcon: string | null;
|
|
2573
2912
|
};
|
|
2913
|
+
/** @description Words the SDK says itself, translated into the response `locale`, by string id (e.g. 'card.claim'). Only ids that locale has; for any other id, and whenever the key is absent, use the SDK's own English. Never served for 'en'. Placeholders use ${name}. Populated in `ui.values` only, not in `useCases`. */
|
|
2914
|
+
strings?: {
|
|
2915
|
+
[key: string]: string;
|
|
2916
|
+
};
|
|
2917
|
+
/** @description Count-dependent SDK strings (e.g. 'unit.month'), translated into the response `locale`, by string id. Same id namespace as `strings`; an id appears in only one of the two. Same fallback rules as `strings`. */
|
|
2918
|
+
plurals?: {
|
|
2919
|
+
[key: string]: {
|
|
2920
|
+
zero?: string;
|
|
2921
|
+
one?: string;
|
|
2922
|
+
two?: string;
|
|
2923
|
+
few?: string;
|
|
2924
|
+
many?: string;
|
|
2925
|
+
other: string;
|
|
2926
|
+
};
|
|
2927
|
+
};
|
|
2574
2928
|
};
|
|
2575
2929
|
};
|
|
2576
2930
|
};
|
|
@@ -2613,6 +2967,8 @@ export interface paths {
|
|
|
2613
2967
|
};
|
|
2614
2968
|
/** @description Resolved locale served in this response (language-only, e.g. 'es'). Absent on pre-localization responses. */
|
|
2615
2969
|
locale?: string;
|
|
2970
|
+
/** @description Placement labels for this app that carry a placement rule or pinned variant. Present whenever the app's placement rules can be read; empty when none. Clients scope their offers cache by placement only for labels in this list; when the field is absent (older server) clients keep their pre-2.4 behaviour. */
|
|
2971
|
+
ruledPlacements?: string[];
|
|
2616
2972
|
};
|
|
2617
2973
|
};
|
|
2618
2974
|
};
|
|
@@ -2625,6 +2981,8 @@ export interface paths {
|
|
|
2625
2981
|
"application/json": {
|
|
2626
2982
|
error: string;
|
|
2627
2983
|
details?: unknown;
|
|
2984
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
2985
|
+
code?: string;
|
|
2628
2986
|
};
|
|
2629
2987
|
};
|
|
2630
2988
|
};
|
|
@@ -2637,6 +2995,8 @@ export interface paths {
|
|
|
2637
2995
|
"application/json": {
|
|
2638
2996
|
error: string;
|
|
2639
2997
|
details?: unknown;
|
|
2998
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
2999
|
+
code?: string;
|
|
2640
3000
|
};
|
|
2641
3001
|
};
|
|
2642
3002
|
};
|
|
@@ -2709,6 +3069,8 @@ export interface paths {
|
|
|
2709
3069
|
"application/json": {
|
|
2710
3070
|
error: string;
|
|
2711
3071
|
details?: unknown;
|
|
3072
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3073
|
+
code?: string;
|
|
2712
3074
|
};
|
|
2713
3075
|
};
|
|
2714
3076
|
};
|
|
@@ -2721,6 +3083,8 @@ export interface paths {
|
|
|
2721
3083
|
"application/json": {
|
|
2722
3084
|
error: string;
|
|
2723
3085
|
details?: unknown;
|
|
3086
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3087
|
+
code?: string;
|
|
2724
3088
|
};
|
|
2725
3089
|
};
|
|
2726
3090
|
};
|
|
@@ -2745,7 +3109,7 @@ export interface paths {
|
|
|
2745
3109
|
delete?: never;
|
|
2746
3110
|
options?: never;
|
|
2747
3111
|
head?: never;
|
|
2748
|
-
/** @description Update user identity (anonymous→identified). Updates the user's app_user_id. Called when developer calls SDK.identify() after login. */
|
|
3112
|
+
/** @description Update user identity (anonymous→identified). Updates the user's app_user_id. Called when developer calls SDK.identify() after login. When newUserId already exists (the person signed in before, e.g. on another device), the anonymous user's completed and self-reported offers are copied onto that account, so they stay hidden and cannot be re-claimed. The copy is taken once, at this call: send any queued self-reports BEFORE it. A report for the anonymous user's claim that arrives afterwards is refused if it carries newUserId (404), and recorded on the anonymous user only, not this account, if it carries currentUserId. */
|
|
2749
3113
|
patch: {
|
|
2750
3114
|
parameters: {
|
|
2751
3115
|
query?: never;
|
|
@@ -2795,6 +3159,8 @@ export interface paths {
|
|
|
2795
3159
|
"application/json": {
|
|
2796
3160
|
error: string;
|
|
2797
3161
|
details?: unknown;
|
|
3162
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3163
|
+
code?: string;
|
|
2798
3164
|
};
|
|
2799
3165
|
};
|
|
2800
3166
|
};
|
|
@@ -2807,6 +3173,8 @@ export interface paths {
|
|
|
2807
3173
|
"application/json": {
|
|
2808
3174
|
error: string;
|
|
2809
3175
|
details?: unknown;
|
|
3176
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3177
|
+
code?: string;
|
|
2810
3178
|
};
|
|
2811
3179
|
};
|
|
2812
3180
|
};
|
|
@@ -2828,7 +3196,9 @@ export interface paths {
|
|
|
2828
3196
|
*
|
|
2829
3197
|
* Precedence: an attribute sent on an /offers/search or /offers/feed request always WINS over the stored one. The stored set only fills an attribute the request omits.
|
|
2830
3198
|
*
|
|
2831
|
-
*
|
|
3199
|
+
* LANGUAGE is accepted and ignored: it is never stored. The hosted page and the SDKs send it on each request, else Accept-Language decides.
|
|
3200
|
+
*
|
|
3201
|
+
* AGE. Send `age` as a whole-number integer. If you hold only a RANGE, send its LOWEST end — "13-17" is sent as 13, never 15 and never 17. Sending the middle of a range silently defeats the under-age check: flooring can never mask a minor, a midpoint can. An age below 18 restricts that user to age-appropriate inventory ranked by the app-level bandit, with NO per-user personalisation — offers are still served. For such a user only `age` and `countryCode` are STORED — the attributes that decide where an offer may legally appear; everything else you sent is discarded, `custom` included, and the response reports `minor`. The instant you sent the set is recorded, so a stored age is aged forward rather than frozen. `dateOfBirth` is refused: `age` carries the same targeting value with far less identifying power.
|
|
2832
3202
|
*
|
|
2833
3203
|
* GATED KEYS. email, firstName, lastName, mobile, phoneNumber, postcode, postalCode, latitude, longitude and gender are accepted ONLY from an app whose audience is declared adults_only (store-rated 18+). Any other status, including the default, is refused with 400. `age` is NOT gated — it is accepted from any app, because it is what restricts what a user is shown rather than something that identifies them. Unrecognised keys are refused rather than ignored. Authentication: publishable key (X-API-Key: pk_live_* / pk_test_*).
|
|
2834
3204
|
*/
|
|
@@ -2848,6 +3218,7 @@ export interface paths {
|
|
|
2848
3218
|
attributes: {
|
|
2849
3219
|
/** @description ISO 3166-1 alpha-2 country code (e.g., "US", "GB", "CA"). */
|
|
2850
3220
|
countryCode?: string;
|
|
3221
|
+
/** @description Accepted for compatibility and ignored: the language is never stored. Send it on each request (attributes.language, or Accept-Language) instead. */
|
|
2851
3222
|
language?: string;
|
|
2852
3223
|
city?: string;
|
|
2853
3224
|
state?: string;
|
|
@@ -2895,7 +3266,7 @@ export interface paths {
|
|
|
2895
3266
|
userId: string;
|
|
2896
3267
|
/** @description ISO 8601 instant the set was recorded; what a stored age is aged forward from */
|
|
2897
3268
|
storedAt: string;
|
|
2898
|
-
/** @description True when the supplied age was under 18. Offers are STILL served to this user — from age-appropriate inventory only, ranked by the app-level bandit, with no per-user personalisation. Only `age
|
|
3269
|
+
/** @description True when the supplied age was under 18. Offers are STILL served to this user — from age-appropriate inventory only, ranked by the app-level bandit, with no per-user personalisation. Only `age` and `countryCode` are kept for this user. Everything else you sent is DISCARDED, including `custom`, `city`, `state`, `region` and the subscription and billing fields — a profile that may not be targeted on has no purpose. Re-send the set once they are 18 and it is stored in full. */
|
|
2899
3270
|
minor: boolean;
|
|
2900
3271
|
};
|
|
2901
3272
|
};
|
|
@@ -2909,6 +3280,8 @@ export interface paths {
|
|
|
2909
3280
|
"application/json": {
|
|
2910
3281
|
error: string;
|
|
2911
3282
|
details?: unknown;
|
|
3283
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3284
|
+
code?: string;
|
|
2912
3285
|
};
|
|
2913
3286
|
};
|
|
2914
3287
|
};
|
|
@@ -2921,6 +3294,8 @@ export interface paths {
|
|
|
2921
3294
|
"application/json": {
|
|
2922
3295
|
error: string;
|
|
2923
3296
|
details?: unknown;
|
|
3297
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3298
|
+
code?: string;
|
|
2924
3299
|
};
|
|
2925
3300
|
};
|
|
2926
3301
|
};
|
|
@@ -2933,6 +3308,8 @@ export interface paths {
|
|
|
2933
3308
|
"application/json": {
|
|
2934
3309
|
error: string;
|
|
2935
3310
|
details?: unknown;
|
|
3311
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3312
|
+
code?: string;
|
|
2936
3313
|
};
|
|
2937
3314
|
};
|
|
2938
3315
|
};
|
|
@@ -2999,6 +3376,8 @@ export interface paths {
|
|
|
2999
3376
|
"application/json": {
|
|
3000
3377
|
error: string;
|
|
3001
3378
|
details?: unknown;
|
|
3379
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3380
|
+
code?: string;
|
|
3002
3381
|
};
|
|
3003
3382
|
};
|
|
3004
3383
|
};
|
|
@@ -3011,6 +3390,8 @@ export interface paths {
|
|
|
3011
3390
|
"application/json": {
|
|
3012
3391
|
error: string;
|
|
3013
3392
|
details?: unknown;
|
|
3393
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3394
|
+
code?: string;
|
|
3014
3395
|
};
|
|
3015
3396
|
};
|
|
3016
3397
|
};
|
|
@@ -3067,6 +3448,8 @@ export interface paths {
|
|
|
3067
3448
|
"application/json": {
|
|
3068
3449
|
error: string;
|
|
3069
3450
|
details?: unknown;
|
|
3451
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3452
|
+
code?: string;
|
|
3070
3453
|
};
|
|
3071
3454
|
};
|
|
3072
3455
|
};
|
|
@@ -3079,6 +3462,8 @@ export interface paths {
|
|
|
3079
3462
|
"application/json": {
|
|
3080
3463
|
error: string;
|
|
3081
3464
|
details?: unknown;
|
|
3465
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3466
|
+
code?: string;
|
|
3082
3467
|
};
|
|
3083
3468
|
};
|
|
3084
3469
|
};
|
|
@@ -3091,6 +3476,8 @@ export interface paths {
|
|
|
3091
3476
|
"application/json": {
|
|
3092
3477
|
error: string;
|
|
3093
3478
|
details?: unknown;
|
|
3479
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3480
|
+
code?: string;
|
|
3094
3481
|
};
|
|
3095
3482
|
};
|
|
3096
3483
|
};
|
|
@@ -3103,6 +3490,8 @@ export interface paths {
|
|
|
3103
3490
|
"application/json": {
|
|
3104
3491
|
error: string;
|
|
3105
3492
|
details?: unknown;
|
|
3493
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3494
|
+
code?: string;
|
|
3106
3495
|
};
|
|
3107
3496
|
};
|
|
3108
3497
|
};
|
|
@@ -3169,6 +3558,8 @@ export interface paths {
|
|
|
3169
3558
|
"application/json": {
|
|
3170
3559
|
error: string;
|
|
3171
3560
|
details?: unknown;
|
|
3561
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3562
|
+
code?: string;
|
|
3172
3563
|
};
|
|
3173
3564
|
};
|
|
3174
3565
|
};
|
|
@@ -3181,6 +3572,8 @@ export interface paths {
|
|
|
3181
3572
|
"application/json": {
|
|
3182
3573
|
error: string;
|
|
3183
3574
|
details?: unknown;
|
|
3575
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3576
|
+
code?: string;
|
|
3184
3577
|
};
|
|
3185
3578
|
};
|
|
3186
3579
|
};
|
|
@@ -3193,6 +3586,8 @@ export interface paths {
|
|
|
3193
3586
|
"application/json": {
|
|
3194
3587
|
error: string;
|
|
3195
3588
|
details?: unknown;
|
|
3589
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3590
|
+
code?: string;
|
|
3196
3591
|
};
|
|
3197
3592
|
};
|
|
3198
3593
|
};
|
|
@@ -3229,6 +3624,8 @@ export interface paths {
|
|
|
3229
3624
|
campaignId: string;
|
|
3230
3625
|
/** Format: email */
|
|
3231
3626
|
email: string;
|
|
3627
|
+
/** @description Optional BCP 47 language tag (e.g. "es", "pt-BR"), from the host's language override. Wins over Accept-Language; only the language subtag is used (nb is served as no; iw, in, ji, jw as he, id, yi, jv), and only when the app has it enabled, else Accept-Language, then the app default. A tag the SDKs would refuse (malformed, underscores, or an extended language subtag such as zh-yue-HK) is 400 with details.code INVALID_LANGUAGE. The lead's emails go out in the language served. */
|
|
3628
|
+
language?: string;
|
|
3232
3629
|
/** @description Trial length in days as reported by StoreKit; drives reminder scheduling. */
|
|
3233
3630
|
trialDurationDays?: number | null;
|
|
3234
3631
|
/**
|
|
@@ -3270,6 +3667,8 @@ export interface paths {
|
|
|
3270
3667
|
"application/json": {
|
|
3271
3668
|
error: string;
|
|
3272
3669
|
details?: unknown;
|
|
3670
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3671
|
+
code?: string;
|
|
3273
3672
|
};
|
|
3274
3673
|
};
|
|
3275
3674
|
};
|
|
@@ -3282,6 +3681,8 @@ export interface paths {
|
|
|
3282
3681
|
"application/json": {
|
|
3283
3682
|
error: string;
|
|
3284
3683
|
details?: unknown;
|
|
3684
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3685
|
+
code?: string;
|
|
3285
3686
|
};
|
|
3286
3687
|
};
|
|
3287
3688
|
};
|
|
@@ -3294,6 +3695,8 @@ export interface paths {
|
|
|
3294
3695
|
"application/json": {
|
|
3295
3696
|
error: string;
|
|
3296
3697
|
details?: unknown;
|
|
3698
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3699
|
+
code?: string;
|
|
3297
3700
|
};
|
|
3298
3701
|
};
|
|
3299
3702
|
};
|
|
@@ -3357,6 +3760,8 @@ export interface paths {
|
|
|
3357
3760
|
"application/json": {
|
|
3358
3761
|
error: string;
|
|
3359
3762
|
details?: unknown;
|
|
3763
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3764
|
+
code?: string;
|
|
3360
3765
|
};
|
|
3361
3766
|
};
|
|
3362
3767
|
};
|
|
@@ -3369,6 +3774,8 @@ export interface paths {
|
|
|
3369
3774
|
"application/json": {
|
|
3370
3775
|
error: string;
|
|
3371
3776
|
details?: unknown;
|
|
3777
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3778
|
+
code?: string;
|
|
3372
3779
|
};
|
|
3373
3780
|
};
|
|
3374
3781
|
};
|
|
@@ -3381,6 +3788,8 @@ export interface paths {
|
|
|
3381
3788
|
"application/json": {
|
|
3382
3789
|
error: string;
|
|
3383
3790
|
details?: unknown;
|
|
3791
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3792
|
+
code?: string;
|
|
3384
3793
|
};
|
|
3385
3794
|
};
|
|
3386
3795
|
};
|
|
@@ -3445,6 +3854,8 @@ export interface paths {
|
|
|
3445
3854
|
"application/json": {
|
|
3446
3855
|
error: string;
|
|
3447
3856
|
details?: unknown;
|
|
3857
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3858
|
+
code?: string;
|
|
3448
3859
|
};
|
|
3449
3860
|
};
|
|
3450
3861
|
};
|
|
@@ -3457,6 +3868,8 @@ export interface paths {
|
|
|
3457
3868
|
"application/json": {
|
|
3458
3869
|
error: string;
|
|
3459
3870
|
details?: unknown;
|
|
3871
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3872
|
+
code?: string;
|
|
3460
3873
|
};
|
|
3461
3874
|
};
|
|
3462
3875
|
};
|
|
@@ -3469,6 +3882,8 @@ export interface paths {
|
|
|
3469
3882
|
"application/json": {
|
|
3470
3883
|
error: string;
|
|
3471
3884
|
details?: unknown;
|
|
3885
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3886
|
+
code?: string;
|
|
3472
3887
|
};
|
|
3473
3888
|
};
|
|
3474
3889
|
};
|
|
@@ -3481,6 +3896,8 @@ export interface paths {
|
|
|
3481
3896
|
"application/json": {
|
|
3482
3897
|
error: string;
|
|
3483
3898
|
details?: unknown;
|
|
3899
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3900
|
+
code?: string;
|
|
3484
3901
|
};
|
|
3485
3902
|
};
|
|
3486
3903
|
};
|
|
@@ -3493,6 +3910,8 @@ export interface paths {
|
|
|
3493
3910
|
"application/json": {
|
|
3494
3911
|
error: string;
|
|
3495
3912
|
details?: unknown;
|
|
3913
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3914
|
+
code?: string;
|
|
3496
3915
|
};
|
|
3497
3916
|
};
|
|
3498
3917
|
};
|
|
@@ -3556,6 +3975,8 @@ export interface paths {
|
|
|
3556
3975
|
"application/json": {
|
|
3557
3976
|
error: string;
|
|
3558
3977
|
details?: unknown;
|
|
3978
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3979
|
+
code?: string;
|
|
3559
3980
|
};
|
|
3560
3981
|
};
|
|
3561
3982
|
};
|
|
@@ -3568,6 +3989,8 @@ export interface paths {
|
|
|
3568
3989
|
"application/json": {
|
|
3569
3990
|
error: string;
|
|
3570
3991
|
details?: unknown;
|
|
3992
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
3993
|
+
code?: string;
|
|
3571
3994
|
};
|
|
3572
3995
|
};
|
|
3573
3996
|
};
|
|
@@ -3580,6 +4003,8 @@ export interface paths {
|
|
|
3580
4003
|
"application/json": {
|
|
3581
4004
|
error: string;
|
|
3582
4005
|
details?: unknown;
|
|
4006
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4007
|
+
code?: string;
|
|
3583
4008
|
};
|
|
3584
4009
|
};
|
|
3585
4010
|
};
|
|
@@ -3592,6 +4017,8 @@ export interface paths {
|
|
|
3592
4017
|
"application/json": {
|
|
3593
4018
|
error: string;
|
|
3594
4019
|
details?: unknown;
|
|
4020
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4021
|
+
code?: string;
|
|
3595
4022
|
};
|
|
3596
4023
|
};
|
|
3597
4024
|
};
|
|
@@ -3604,6 +4031,8 @@ export interface paths {
|
|
|
3604
4031
|
"application/json": {
|
|
3605
4032
|
error: string;
|
|
3606
4033
|
details?: unknown;
|
|
4034
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4035
|
+
code?: string;
|
|
3607
4036
|
};
|
|
3608
4037
|
};
|
|
3609
4038
|
};
|
|
@@ -3616,6 +4045,8 @@ export interface paths {
|
|
|
3616
4045
|
"application/json": {
|
|
3617
4046
|
error: string;
|
|
3618
4047
|
details?: unknown;
|
|
4048
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4049
|
+
code?: string;
|
|
3619
4050
|
};
|
|
3620
4051
|
};
|
|
3621
4052
|
};
|
|
@@ -3695,6 +4126,8 @@ export interface paths {
|
|
|
3695
4126
|
"application/json": {
|
|
3696
4127
|
error: string;
|
|
3697
4128
|
details?: unknown;
|
|
4129
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4130
|
+
code?: string;
|
|
3698
4131
|
};
|
|
3699
4132
|
};
|
|
3700
4133
|
};
|
|
@@ -3707,6 +4140,8 @@ export interface paths {
|
|
|
3707
4140
|
"application/json": {
|
|
3708
4141
|
error: string;
|
|
3709
4142
|
details?: unknown;
|
|
4143
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4144
|
+
code?: string;
|
|
3710
4145
|
};
|
|
3711
4146
|
};
|
|
3712
4147
|
};
|
|
@@ -3719,6 +4154,8 @@ export interface paths {
|
|
|
3719
4154
|
"application/json": {
|
|
3720
4155
|
error: string;
|
|
3721
4156
|
details?: unknown;
|
|
4157
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4158
|
+
code?: string;
|
|
3722
4159
|
};
|
|
3723
4160
|
};
|
|
3724
4161
|
};
|
|
@@ -3799,6 +4236,8 @@ export interface paths {
|
|
|
3799
4236
|
"application/json": {
|
|
3800
4237
|
error: string;
|
|
3801
4238
|
details?: unknown;
|
|
4239
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4240
|
+
code?: string;
|
|
3802
4241
|
};
|
|
3803
4242
|
};
|
|
3804
4243
|
};
|
|
@@ -3811,6 +4250,8 @@ export interface paths {
|
|
|
3811
4250
|
"application/json": {
|
|
3812
4251
|
error: string;
|
|
3813
4252
|
details?: unknown;
|
|
4253
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4254
|
+
code?: string;
|
|
3814
4255
|
};
|
|
3815
4256
|
};
|
|
3816
4257
|
};
|
|
@@ -3823,6 +4264,8 @@ export interface paths {
|
|
|
3823
4264
|
"application/json": {
|
|
3824
4265
|
error: string;
|
|
3825
4266
|
details?: unknown;
|
|
4267
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4268
|
+
code?: string;
|
|
3826
4269
|
};
|
|
3827
4270
|
};
|
|
3828
4271
|
};
|
|
@@ -3835,6 +4278,8 @@ export interface paths {
|
|
|
3835
4278
|
"application/json": {
|
|
3836
4279
|
error: string;
|
|
3837
4280
|
details?: unknown;
|
|
4281
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4282
|
+
code?: string;
|
|
3838
4283
|
};
|
|
3839
4284
|
};
|
|
3840
4285
|
};
|
|
@@ -3894,6 +4339,8 @@ export interface paths {
|
|
|
3894
4339
|
"application/json": {
|
|
3895
4340
|
error: string;
|
|
3896
4341
|
details?: unknown;
|
|
4342
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4343
|
+
code?: string;
|
|
3897
4344
|
};
|
|
3898
4345
|
};
|
|
3899
4346
|
};
|
|
@@ -3906,6 +4353,8 @@ export interface paths {
|
|
|
3906
4353
|
"application/json": {
|
|
3907
4354
|
error: string;
|
|
3908
4355
|
details?: unknown;
|
|
4356
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4357
|
+
code?: string;
|
|
3909
4358
|
};
|
|
3910
4359
|
};
|
|
3911
4360
|
};
|
|
@@ -3918,6 +4367,8 @@ export interface paths {
|
|
|
3918
4367
|
"application/json": {
|
|
3919
4368
|
error: string;
|
|
3920
4369
|
details?: unknown;
|
|
4370
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4371
|
+
code?: string;
|
|
3921
4372
|
};
|
|
3922
4373
|
};
|
|
3923
4374
|
};
|
|
@@ -3930,6 +4381,8 @@ export interface paths {
|
|
|
3930
4381
|
"application/json": {
|
|
3931
4382
|
error: string;
|
|
3932
4383
|
details?: unknown;
|
|
4384
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4385
|
+
code?: string;
|
|
3933
4386
|
};
|
|
3934
4387
|
};
|
|
3935
4388
|
};
|
|
@@ -3994,6 +4447,8 @@ export interface paths {
|
|
|
3994
4447
|
"application/json": {
|
|
3995
4448
|
error: string;
|
|
3996
4449
|
details?: unknown;
|
|
4450
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4451
|
+
code?: string;
|
|
3997
4452
|
};
|
|
3998
4453
|
};
|
|
3999
4454
|
};
|
|
@@ -4006,6 +4461,8 @@ export interface paths {
|
|
|
4006
4461
|
"application/json": {
|
|
4007
4462
|
error: string;
|
|
4008
4463
|
details?: unknown;
|
|
4464
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4465
|
+
code?: string;
|
|
4009
4466
|
};
|
|
4010
4467
|
};
|
|
4011
4468
|
};
|
|
@@ -4018,6 +4475,8 @@ export interface paths {
|
|
|
4018
4475
|
"application/json": {
|
|
4019
4476
|
error: string;
|
|
4020
4477
|
details?: unknown;
|
|
4478
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4479
|
+
code?: string;
|
|
4021
4480
|
};
|
|
4022
4481
|
};
|
|
4023
4482
|
};
|
|
@@ -4030,6 +4489,8 @@ export interface paths {
|
|
|
4030
4489
|
"application/json": {
|
|
4031
4490
|
error: string;
|
|
4032
4491
|
details?: unknown;
|
|
4492
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4493
|
+
code?: string;
|
|
4033
4494
|
};
|
|
4034
4495
|
};
|
|
4035
4496
|
};
|
|
@@ -4042,6 +4503,8 @@ export interface paths {
|
|
|
4042
4503
|
"application/json": {
|
|
4043
4504
|
error: string;
|
|
4044
4505
|
details?: unknown;
|
|
4506
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4507
|
+
code?: string;
|
|
4045
4508
|
};
|
|
4046
4509
|
};
|
|
4047
4510
|
};
|
|
@@ -4160,6 +4623,8 @@ export interface paths {
|
|
|
4160
4623
|
"application/json": {
|
|
4161
4624
|
error: string;
|
|
4162
4625
|
details?: unknown;
|
|
4626
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4627
|
+
code?: string;
|
|
4163
4628
|
};
|
|
4164
4629
|
};
|
|
4165
4630
|
};
|
|
@@ -4172,6 +4637,8 @@ export interface paths {
|
|
|
4172
4637
|
"application/json": {
|
|
4173
4638
|
error: string;
|
|
4174
4639
|
details?: unknown;
|
|
4640
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4641
|
+
code?: string;
|
|
4175
4642
|
};
|
|
4176
4643
|
};
|
|
4177
4644
|
};
|
|
@@ -4184,6 +4651,8 @@ export interface paths {
|
|
|
4184
4651
|
"application/json": {
|
|
4185
4652
|
error: string;
|
|
4186
4653
|
details?: unknown;
|
|
4654
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4655
|
+
code?: string;
|
|
4187
4656
|
};
|
|
4188
4657
|
};
|
|
4189
4658
|
};
|
|
@@ -4266,6 +4735,8 @@ export interface paths {
|
|
|
4266
4735
|
"application/json": {
|
|
4267
4736
|
error: string;
|
|
4268
4737
|
details?: unknown;
|
|
4738
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4739
|
+
code?: string;
|
|
4269
4740
|
};
|
|
4270
4741
|
};
|
|
4271
4742
|
};
|
|
@@ -4278,6 +4749,8 @@ export interface paths {
|
|
|
4278
4749
|
"application/json": {
|
|
4279
4750
|
error: string;
|
|
4280
4751
|
details?: unknown;
|
|
4752
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4753
|
+
code?: string;
|
|
4281
4754
|
};
|
|
4282
4755
|
};
|
|
4283
4756
|
};
|
|
@@ -4290,6 +4763,8 @@ export interface paths {
|
|
|
4290
4763
|
"application/json": {
|
|
4291
4764
|
error: string;
|
|
4292
4765
|
details?: unknown;
|
|
4766
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4767
|
+
code?: string;
|
|
4293
4768
|
};
|
|
4294
4769
|
};
|
|
4295
4770
|
};
|
|
@@ -4367,6 +4842,8 @@ export interface paths {
|
|
|
4367
4842
|
"application/json": {
|
|
4368
4843
|
error: string;
|
|
4369
4844
|
details?: unknown;
|
|
4845
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4846
|
+
code?: string;
|
|
4370
4847
|
};
|
|
4371
4848
|
};
|
|
4372
4849
|
};
|
|
@@ -4379,6 +4856,8 @@ export interface paths {
|
|
|
4379
4856
|
"application/json": {
|
|
4380
4857
|
error: string;
|
|
4381
4858
|
details?: unknown;
|
|
4859
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4860
|
+
code?: string;
|
|
4382
4861
|
};
|
|
4383
4862
|
};
|
|
4384
4863
|
};
|
|
@@ -4391,6 +4870,8 @@ export interface paths {
|
|
|
4391
4870
|
"application/json": {
|
|
4392
4871
|
error: string;
|
|
4393
4872
|
details?: unknown;
|
|
4873
|
+
/** @description Machine-readable reason, set only on the few errors a client must branch on (each route that sets one says so in its description) and absent on every other. Treat an unknown value as absent. */
|
|
4874
|
+
code?: string;
|
|
4394
4875
|
};
|
|
4395
4876
|
};
|
|
4396
4877
|
};
|
|
@@ -4473,6 +4954,16 @@ export interface components {
|
|
|
4473
4954
|
rewardHeadline?: string | null;
|
|
4474
4955
|
/** @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. */
|
|
4475
4956
|
rewardSubheadline?: string | null;
|
|
4957
|
+
/** @description Primary button label for the reward template. Resolution: the variant's own defaultCopy.cta. Null when the variant declares none, in which case its template carries a literal instead. An SDK that predates this field receives the wording inlined in the template, not a token. */
|
|
4958
|
+
rewardCta?: string | null;
|
|
4959
|
+
/** @description Decline button label for the reward template. Same resolution and same null meaning as rewardCta. */
|
|
4960
|
+
rewardDecline?: string | null;
|
|
4961
|
+
/** @description Badge on the highlighted offer card, e.g. 'Most claimed'. Same resolution and same null meaning as rewardCta. */
|
|
4962
|
+
rewardBadge?: string | null;
|
|
4963
|
+
/** @description Label on the card that opens the rest of the offer list, e.g. 'Show more gifts'. Same resolution and same null meaning as rewardCta. */
|
|
4964
|
+
rewardMoreGifts?: string | null;
|
|
4965
|
+
/** @description Header above the rest of the offer list, e.g. 'Other gifts'. Same resolution and same null meaning as rewardCta. */
|
|
4966
|
+
rewardOtherGifts?: string | null;
|
|
4476
4967
|
};
|
|
4477
4968
|
/** @description Appearance values */
|
|
4478
4969
|
appearance: {
|
|
@@ -4491,6 +4982,21 @@ export interface components {
|
|
|
4491
4982
|
/** @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. */
|
|
4492
4983
|
appstoreIcon: string | null;
|
|
4493
4984
|
};
|
|
4985
|
+
/** @description Words the SDK says itself, translated into the response `locale`, by string id (e.g. 'card.claim'). Only ids that locale has; for any other id, and whenever the key is absent, use the SDK's own English. Never served for 'en'. Placeholders use ${name}. Populated in `ui.values` only, not in `useCases`. */
|
|
4986
|
+
strings?: {
|
|
4987
|
+
[key: string]: string;
|
|
4988
|
+
};
|
|
4989
|
+
/** @description Count-dependent SDK strings (e.g. 'unit.month'), translated into the response `locale`, by string id. Same id namespace as `strings`; an id appears in only one of the two. Same fallback rules as `strings`. */
|
|
4990
|
+
plurals?: {
|
|
4991
|
+
[key: string]: {
|
|
4992
|
+
zero?: string;
|
|
4993
|
+
one?: string;
|
|
4994
|
+
two?: string;
|
|
4995
|
+
few?: string;
|
|
4996
|
+
many?: string;
|
|
4997
|
+
other: string;
|
|
4998
|
+
};
|
|
4999
|
+
};
|
|
4494
5000
|
};
|
|
4495
5001
|
};
|
|
4496
5002
|
/** @description Assigned variant for every use case this app is enabled for other than the one REQUESTED, so the SDK can cache them at identify(). When the single-enabled-use-case fallback serves a different surface in `ui`, that surface also appears here under its own key, so a client that files `ui` under the requested use case still finds it. `ui` is unchanged; un-upgraded decoders ignore this key. */
|
|
@@ -4541,6 +5047,16 @@ export interface components {
|
|
|
4541
5047
|
rewardHeadline?: string | null;
|
|
4542
5048
|
/** @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. */
|
|
4543
5049
|
rewardSubheadline?: string | null;
|
|
5050
|
+
/** @description Primary button label for the reward template. Resolution: the variant's own defaultCopy.cta. Null when the variant declares none, in which case its template carries a literal instead. An SDK that predates this field receives the wording inlined in the template, not a token. */
|
|
5051
|
+
rewardCta?: string | null;
|
|
5052
|
+
/** @description Decline button label for the reward template. Same resolution and same null meaning as rewardCta. */
|
|
5053
|
+
rewardDecline?: string | null;
|
|
5054
|
+
/** @description Badge on the highlighted offer card, e.g. 'Most claimed'. Same resolution and same null meaning as rewardCta. */
|
|
5055
|
+
rewardBadge?: string | null;
|
|
5056
|
+
/** @description Label on the card that opens the rest of the offer list, e.g. 'Show more gifts'. Same resolution and same null meaning as rewardCta. */
|
|
5057
|
+
rewardMoreGifts?: string | null;
|
|
5058
|
+
/** @description Header above the rest of the offer list, e.g. 'Other gifts'. Same resolution and same null meaning as rewardCta. */
|
|
5059
|
+
rewardOtherGifts?: string | null;
|
|
4544
5060
|
};
|
|
4545
5061
|
/** @description Appearance values */
|
|
4546
5062
|
appearance: {
|
|
@@ -4559,6 +5075,21 @@ export interface components {
|
|
|
4559
5075
|
/** @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. */
|
|
4560
5076
|
appstoreIcon: string | null;
|
|
4561
5077
|
};
|
|
5078
|
+
/** @description Words the SDK says itself, translated into the response `locale`, by string id (e.g. 'card.claim'). Only ids that locale has; for any other id, and whenever the key is absent, use the SDK's own English. Never served for 'en'. Placeholders use ${name}. Populated in `ui.values` only, not in `useCases`. */
|
|
5079
|
+
strings?: {
|
|
5080
|
+
[key: string]: string;
|
|
5081
|
+
};
|
|
5082
|
+
/** @description Count-dependent SDK strings (e.g. 'unit.month'), translated into the response `locale`, by string id. Same id namespace as `strings`; an id appears in only one of the two. Same fallback rules as `strings`. */
|
|
5083
|
+
plurals?: {
|
|
5084
|
+
[key: string]: {
|
|
5085
|
+
zero?: string;
|
|
5086
|
+
one?: string;
|
|
5087
|
+
two?: string;
|
|
5088
|
+
few?: string;
|
|
5089
|
+
many?: string;
|
|
5090
|
+
other: string;
|
|
5091
|
+
};
|
|
5092
|
+
};
|
|
4562
5093
|
};
|
|
4563
5094
|
};
|
|
4564
5095
|
"post-action-reward"?: {
|
|
@@ -4607,6 +5138,16 @@ export interface components {
|
|
|
4607
5138
|
rewardHeadline?: string | null;
|
|
4608
5139
|
/** @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. */
|
|
4609
5140
|
rewardSubheadline?: string | null;
|
|
5141
|
+
/** @description Primary button label for the reward template. Resolution: the variant's own defaultCopy.cta. Null when the variant declares none, in which case its template carries a literal instead. An SDK that predates this field receives the wording inlined in the template, not a token. */
|
|
5142
|
+
rewardCta?: string | null;
|
|
5143
|
+
/** @description Decline button label for the reward template. Same resolution and same null meaning as rewardCta. */
|
|
5144
|
+
rewardDecline?: string | null;
|
|
5145
|
+
/** @description Badge on the highlighted offer card, e.g. 'Most claimed'. Same resolution and same null meaning as rewardCta. */
|
|
5146
|
+
rewardBadge?: string | null;
|
|
5147
|
+
/** @description Label on the card that opens the rest of the offer list, e.g. 'Show more gifts'. Same resolution and same null meaning as rewardCta. */
|
|
5148
|
+
rewardMoreGifts?: string | null;
|
|
5149
|
+
/** @description Header above the rest of the offer list, e.g. 'Other gifts'. Same resolution and same null meaning as rewardCta. */
|
|
5150
|
+
rewardOtherGifts?: string | null;
|
|
4610
5151
|
};
|
|
4611
5152
|
/** @description Appearance values */
|
|
4612
5153
|
appearance: {
|
|
@@ -4625,6 +5166,21 @@ export interface components {
|
|
|
4625
5166
|
/** @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. */
|
|
4626
5167
|
appstoreIcon: string | null;
|
|
4627
5168
|
};
|
|
5169
|
+
/** @description Words the SDK says itself, translated into the response `locale`, by string id (e.g. 'card.claim'). Only ids that locale has; for any other id, and whenever the key is absent, use the SDK's own English. Never served for 'en'. Placeholders use ${name}. Populated in `ui.values` only, not in `useCases`. */
|
|
5170
|
+
strings?: {
|
|
5171
|
+
[key: string]: string;
|
|
5172
|
+
};
|
|
5173
|
+
/** @description Count-dependent SDK strings (e.g. 'unit.month'), translated into the response `locale`, by string id. Same id namespace as `strings`; an id appears in only one of the two. Same fallback rules as `strings`. */
|
|
5174
|
+
plurals?: {
|
|
5175
|
+
[key: string]: {
|
|
5176
|
+
zero?: string;
|
|
5177
|
+
one?: string;
|
|
5178
|
+
two?: string;
|
|
5179
|
+
few?: string;
|
|
5180
|
+
many?: string;
|
|
5181
|
+
other: string;
|
|
5182
|
+
};
|
|
5183
|
+
};
|
|
4628
5184
|
};
|
|
4629
5185
|
};
|
|
4630
5186
|
};
|
|
@@ -4667,6 +5223,8 @@ export interface components {
|
|
|
4667
5223
|
};
|
|
4668
5224
|
/** @description Resolved locale served in this response (language-only, e.g. 'es'). Absent on pre-localization responses. */
|
|
4669
5225
|
locale?: string;
|
|
5226
|
+
/** @description Placement labels for this app that carry a placement rule or pinned variant. Present whenever the app's placement rules can be read; empty when none. Clients scope their offers cache by placement only for labels in this list; when the field is absent (older server) clients keep their pre-2.4 behaviour. */
|
|
5227
|
+
ruledPlacements?: string[];
|
|
4670
5228
|
};
|
|
4671
5229
|
OffersSearchResponse: {
|
|
4672
5230
|
success: boolean;
|
|
@@ -4735,6 +5293,10 @@ export interface components {
|
|
|
4735
5293
|
heroImageUrl?: string | null;
|
|
4736
5294
|
/** @description https link to the advertiser offer terms. Null or absent: render terms copy as plain text. */
|
|
4737
5295
|
termsUrl?: string | null;
|
|
5296
|
+
/** @description Display-only strings a variant renders by key, e.g. {"eligibilityNote":"New subscribers only"}. Values are strings; the type is free-form so one unexpected value cannot fail a client decode. Absent or empty: the variant draws none of those lines. */
|
|
5297
|
+
displayProperties?: {
|
|
5298
|
+
[key: string]: unknown;
|
|
5299
|
+
};
|
|
4738
5300
|
/** Format: date-time */
|
|
4739
5301
|
createdAt: string;
|
|
4740
5302
|
/** Format: date-time */
|
|
@@ -4783,6 +5345,8 @@ export interface components {
|
|
|
4783
5345
|
title: string;
|
|
4784
5346
|
subtitle: string;
|
|
4785
5347
|
ctaButtonText?: string;
|
|
5348
|
+
/** @description Optional https image for this step. Absent: the step has none. */
|
|
5349
|
+
imageUrl?: string;
|
|
4786
5350
|
}[] | null;
|
|
4787
5351
|
/** @description Short, actionable phrases (max 1-3) that guide users. Examples: "sign up, create registry", "add to cart" */
|
|
4788
5352
|
quickInstructions: string | null;
|
|
@@ -4849,11 +5413,41 @@ export interface components {
|
|
|
4849
5413
|
category?: string | null;
|
|
4850
5414
|
/** @description The gift-sheet group this campaign files under: "Watch & listen", "Money" or "Everyday". Derived from `category` by the server so a native chip strip shows what web tabs show without holding the taxonomy map. Always set: an absent, blank or unmapped category files under "Everyday", so every offer sits in some group. Whether a strip is worth drawing is the client's call, because only it knows which offers its sheet lists. /offers/search only: web-sdk holds its own copy of the map and groups `category` itself. */
|
|
4851
5415
|
categoryGroup?: string | null;
|
|
5416
|
+
/** @description `category` in the response locale, for display only. Group and filter on `category`, which stays English. Null when `category` is null. /offers/search only. */
|
|
5417
|
+
categoryDisplayName?: string | null;
|
|
5418
|
+
/** @description `categoryGroup` in the response locale, for display only. Group on `categoryGroup`, which stays English. /offers/search only. */
|
|
5419
|
+
categoryGroupDisplayName?: string | null;
|
|
4852
5420
|
/** @description Estimated time from the user tapping this offer to the reward being confirmed, from recent real conversions (on demo offers, from the demo advertiser's configured behavior instead). Half confirm within medianSeconds, 9 in 10 within p90Seconds. Not a guarantee: to show a wait, use p90Seconds. Null when there is no current estimate (too few recent conversions, data more than 7 days old, or an offer that does not confirm through the advertiser); say nothing about timing then. */
|
|
4853
5421
|
rewardConfirmationTime?: {
|
|
4854
5422
|
medianSeconds: number;
|
|
4855
5423
|
p90Seconds: number;
|
|
4856
5424
|
} | null;
|
|
5425
|
+
/** @description Campaign claim-URL query parameters, keys verbatim (e.g. {"af_rid":"TRANSACTION_ID"}); equals the served creative's whenever one exists. Always pair it with the offer's destinationUrl, never with a creative's, and never build a claim URL from an absent or empty value. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5426
|
+
trackingParameters?: {
|
|
5427
|
+
[key: string]: unknown;
|
|
5428
|
+
} | null;
|
|
5429
|
+
/** @description Campaign call-to-action text. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5430
|
+
ctaText?: string | null;
|
|
5431
|
+
/** @description Campaign description, localized like creatives. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5432
|
+
description?: string | null;
|
|
5433
|
+
/** @description Campaign step-by-step instructions, same shape as a creative's. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5434
|
+
instructions?: {
|
|
5435
|
+
title: string;
|
|
5436
|
+
subtitle: string;
|
|
5437
|
+
ctaButtonText?: string;
|
|
5438
|
+
/** @description Optional https image for this step. Absent: the step has none. */
|
|
5439
|
+
imageUrl?: string;
|
|
5440
|
+
}[] | null;
|
|
5441
|
+
/** @description Campaign one-line instructions. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5442
|
+
quickInstructions?: string | null;
|
|
5443
|
+
/** @description Campaign logo override; null means use organization.logoUrl. Plain string, not format: uri, so one bad value cannot fail a whole Android decode. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5444
|
+
logoUrl?: string | null;
|
|
5445
|
+
/** @description Campaign card title. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5446
|
+
title?: string | null;
|
|
5447
|
+
/** @description Campaign card subtitle. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5448
|
+
subtitle?: string | null;
|
|
5449
|
+
/** @description Campaign tooltip text. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5450
|
+
tooltipText?: string | null;
|
|
4857
5451
|
}[];
|
|
4858
5452
|
metadata: {
|
|
4859
5453
|
/** @description Total offers available */
|
|
@@ -4871,6 +5465,8 @@ export interface components {
|
|
|
4871
5465
|
};
|
|
4872
5466
|
/** @description Resolved locale served in this response (language-only, e.g. 'es'). Absent on pre-localization responses. */
|
|
4873
5467
|
locale?: string;
|
|
5468
|
+
/** @description Whether this user may still be granted the app's prize for a reward-for-trying Yes: true while the prizes granted to them in the last 24 hours (rolling) are under publisherRewardDailyLimit. Present only when the request sent publisherRewardDailyLimit. Offers this user already completed or said Yes to are never served, so this answers the daily limit only. Absent (an older backend, or no limit sent) means no promise. Not a grant: the self-report's granted answer is final. */
|
|
5469
|
+
publisherRewardPromise?: boolean;
|
|
4874
5470
|
error?: string | null;
|
|
4875
5471
|
};
|
|
4876
5472
|
Campaign: {
|
|
@@ -4938,6 +5534,10 @@ export interface components {
|
|
|
4938
5534
|
heroImageUrl?: string | null;
|
|
4939
5535
|
/** @description https link to the advertiser offer terms. Null or absent: render terms copy as plain text. */
|
|
4940
5536
|
termsUrl?: string | null;
|
|
5537
|
+
/** @description Display-only strings a variant renders by key, e.g. {"eligibilityNote":"New subscribers only"}. Values are strings; the type is free-form so one unexpected value cannot fail a client decode. Absent or empty: the variant draws none of those lines. */
|
|
5538
|
+
displayProperties?: {
|
|
5539
|
+
[key: string]: unknown;
|
|
5540
|
+
};
|
|
4941
5541
|
/** Format: date-time */
|
|
4942
5542
|
createdAt: string;
|
|
4943
5543
|
/** Format: date-time */
|
|
@@ -4986,6 +5586,8 @@ export interface components {
|
|
|
4986
5586
|
title: string;
|
|
4987
5587
|
subtitle: string;
|
|
4988
5588
|
ctaButtonText?: string;
|
|
5589
|
+
/** @description Optional https image for this step. Absent: the step has none. */
|
|
5590
|
+
imageUrl?: string;
|
|
4989
5591
|
}[] | null;
|
|
4990
5592
|
/** @description Short, actionable phrases (max 1-3) that guide users. Examples: "sign up, create registry", "add to cart" */
|
|
4991
5593
|
quickInstructions: string | null;
|
|
@@ -5052,11 +5654,41 @@ export interface components {
|
|
|
5052
5654
|
category?: string | null;
|
|
5053
5655
|
/** @description The gift-sheet group this campaign files under: "Watch & listen", "Money" or "Everyday". Derived from `category` by the server so a native chip strip shows what web tabs show without holding the taxonomy map. Always set: an absent, blank or unmapped category files under "Everyday", so every offer sits in some group. Whether a strip is worth drawing is the client's call, because only it knows which offers its sheet lists. /offers/search only: web-sdk holds its own copy of the map and groups `category` itself. */
|
|
5054
5656
|
categoryGroup?: string | null;
|
|
5657
|
+
/** @description `category` in the response locale, for display only. Group and filter on `category`, which stays English. Null when `category` is null. /offers/search only. */
|
|
5658
|
+
categoryDisplayName?: string | null;
|
|
5659
|
+
/** @description `categoryGroup` in the response locale, for display only. Group on `categoryGroup`, which stays English. /offers/search only. */
|
|
5660
|
+
categoryGroupDisplayName?: string | null;
|
|
5055
5661
|
/** @description Estimated time from the user tapping this offer to the reward being confirmed, from recent real conversions (on demo offers, from the demo advertiser's configured behavior instead). Half confirm within medianSeconds, 9 in 10 within p90Seconds. Not a guarantee: to show a wait, use p90Seconds. Null when there is no current estimate (too few recent conversions, data more than 7 days old, or an offer that does not confirm through the advertiser); say nothing about timing then. */
|
|
5056
5662
|
rewardConfirmationTime?: {
|
|
5057
5663
|
medianSeconds: number;
|
|
5058
5664
|
p90Seconds: number;
|
|
5059
5665
|
} | null;
|
|
5666
|
+
/** @description Campaign claim-URL query parameters, keys verbatim (e.g. {"af_rid":"TRANSACTION_ID"}); equals the served creative's whenever one exists. Always pair it with the offer's destinationUrl, never with a creative's, and never build a claim URL from an absent or empty value. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5667
|
+
trackingParameters?: {
|
|
5668
|
+
[key: string]: unknown;
|
|
5669
|
+
} | null;
|
|
5670
|
+
/** @description Campaign call-to-action text. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5671
|
+
ctaText?: string | null;
|
|
5672
|
+
/** @description Campaign description, localized like creatives. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5673
|
+
description?: string | null;
|
|
5674
|
+
/** @description Campaign step-by-step instructions, same shape as a creative's. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5675
|
+
instructions?: {
|
|
5676
|
+
title: string;
|
|
5677
|
+
subtitle: string;
|
|
5678
|
+
ctaButtonText?: string;
|
|
5679
|
+
/** @description Optional https image for this step. Absent: the step has none. */
|
|
5680
|
+
imageUrl?: string;
|
|
5681
|
+
}[] | null;
|
|
5682
|
+
/** @description Campaign one-line instructions. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5683
|
+
quickInstructions?: string | null;
|
|
5684
|
+
/** @description Campaign logo override; null means use organization.logoUrl. Plain string, not format: uri, so one bad value cannot fail a whole Android decode. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5685
|
+
logoUrl?: string | null;
|
|
5686
|
+
/** @description Campaign card title. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5687
|
+
title?: string | null;
|
|
5688
|
+
/** @description Campaign card subtitle. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5689
|
+
subtitle?: string | null;
|
|
5690
|
+
/** @description Campaign tooltip text. Absent unless the campaign offer fields flag is on; null means the campaign has none. */
|
|
5691
|
+
tooltipText?: string | null;
|
|
5060
5692
|
};
|
|
5061
5693
|
Creative: {
|
|
5062
5694
|
/** Format: uuid */
|
|
@@ -5088,6 +5720,8 @@ export interface components {
|
|
|
5088
5720
|
title: string;
|
|
5089
5721
|
subtitle: string;
|
|
5090
5722
|
ctaButtonText?: string;
|
|
5723
|
+
/** @description Optional https image for this step. Absent: the step has none. */
|
|
5724
|
+
imageUrl?: string;
|
|
5091
5725
|
}[] | null;
|
|
5092
5726
|
/** @description Short, actionable phrases (max 1-3) that guide users. Examples: "sign up, create registry", "add to cart" */
|
|
5093
5727
|
quickInstructions: string | null;
|