@uptime.app/contracts 2.0.7-rc.0 → 2.0.7

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.
Files changed (131) hide show
  1. package/dist/cjs/knowledge-source-parsing/knowledge-source-metadata.d.ts +0 -1
  2. package/dist/cjs/knowledge-source-parsing/knowledge-source-metadata.d.ts.map +1 -1
  3. package/dist/cjs/user/get-user.d.ts +5 -0
  4. package/dist/cjs/user/get-user.d.ts.map +1 -1
  5. package/dist/esm/knowledge-source-parsing/knowledge-source-metadata.d.ts +0 -1
  6. package/dist/esm/knowledge-source-parsing/knowledge-source-metadata.d.ts.map +1 -1
  7. package/dist/esm/user/get-user.d.ts +5 -0
  8. package/dist/esm/user/get-user.d.ts.map +1 -1
  9. package/package.json +2 -2
  10. package/src/access-control/collection-access-control.ts +28 -28
  11. package/src/access-control/hack-access-control.ts +29 -29
  12. package/src/app-hack/app-full-hack.ts +9 -9
  13. package/src/app-hack/app-hack-metadata.ts +60 -60
  14. package/src/app-hack/app-restricted-hack.ts +22 -22
  15. package/src/b2b-content-access/b2b-content-access.ts +57 -57
  16. package/src/b2b-organisation/b2b-carousel.ts +33 -33
  17. package/src/b2b-organisation/b2b-organisation-events.ts +21 -21
  18. package/src/b2b-organisation/b2b-organisation-invitation.ts +35 -35
  19. package/src/b2b-organisation/b2b-organisation-member-events.ts +21 -21
  20. package/src/b2b-organisation/b2b-organisation-member.ts +10 -10
  21. package/src/b2b-organisation/b2b-organisation.ts +32 -32
  22. package/src/brand/brand-events.ts +21 -21
  23. package/src/brand/brand.ts +26 -26
  24. package/src/catalogue/catalogue.ts +149 -149
  25. package/src/cms-hack/cms-searchable-hack.ts +44 -44
  26. package/src/collection/collection-events.ts +21 -21
  27. package/src/collection/collection.ts +57 -57
  28. package/src/collection/enriched-collection-events.ts +18 -18
  29. package/src/collection/enriched-collection.ts +64 -64
  30. package/src/creator/creator-events.ts +32 -32
  31. package/src/creator/creator.ts +7 -7
  32. package/src/distribution/collection-distribution.ts +17 -17
  33. package/src/distribution/distribution-events.ts +61 -61
  34. package/src/distribution/hack-distribution.ts +18 -18
  35. package/src/draft-hack/draft-hack-events.ts +21 -21
  36. package/src/draft-hack/draft-hack.ts +189 -189
  37. package/src/draft-hack-generation/draft-hack-generation-commands.ts +10 -10
  38. package/src/draft-hack-generation/draft-hack-generation-events.ts +52 -52
  39. package/src/draft-hack-generation/draft-hack-generation.ts +39 -39
  40. package/src/enriched-hack/enriched-hack-events.ts +21 -21
  41. package/src/enriched-hack/enriched-hack.ts +103 -103
  42. package/src/enrichment-asset/hack-enrichment-video-events.ts +55 -55
  43. package/src/enrichment-asset/hack-enrichment-video.ts +40 -40
  44. package/src/entitlement/user-entitlements-commands.ts +54 -54
  45. package/src/entitlement/user-entitlements-events.ts +29 -29
  46. package/src/entitlement/user-entitlements.ts +18 -18
  47. package/src/flashcard/flashcard-events.ts +85 -85
  48. package/src/flashcard/flashcard.ts +138 -138
  49. package/src/hack/extracted-subject.ts +31 -31
  50. package/src/hack/hack-events.ts +21 -21
  51. package/src/hack/hack-published.ts +21 -21
  52. package/src/hack/hack-with-voice-events.ts +20 -20
  53. package/src/hack/hack-with-voice.ts +33 -33
  54. package/src/hack/hack.ts +116 -116
  55. package/src/hack/publish-hack-command.ts +20 -20
  56. package/src/hack-metadata/hack-metadata-events.ts +21 -21
  57. package/src/hack-metadata/hack-metadata.ts +17 -17
  58. package/src/hack-of-the-day/hack-of-the-day-events.ts +21 -21
  59. package/src/hack-of-the-day/hack-of-the-day.ts +13 -13
  60. package/src/hack-statistics/hack-statistics-events.ts +21 -21
  61. package/src/hack-statistics/hack-statistics.ts +9 -9
  62. package/src/hackbot/hack-generation-commands.ts +42 -42
  63. package/src/hackbot/hack-generation-trigger-events.ts +21 -21
  64. package/src/hackbot/hack-generation-trigger.ts +54 -54
  65. package/src/history/history-events.ts +21 -21
  66. package/src/history/history.ts +46 -46
  67. package/src/index.ts +165 -165
  68. package/src/interest/interest-events.ts +21 -21
  69. package/src/interest/interest.ts +15 -15
  70. package/src/knowledge-source/knowledge-source-events.ts +21 -21
  71. package/src/knowledge-source/knowledge-source.ts +43 -43
  72. package/src/knowledge-source-parsing/knowledge-source-metadata.ts +40 -42
  73. package/src/knowledge-source-parsing/knowledge-source-parsing-commands.ts +41 -41
  74. package/src/knowledge-source-parsing/knowledge-source-parsing-events.ts +30 -30
  75. package/src/knowledge-source-parsing/podcast-metadata.ts +44 -44
  76. package/src/knowledge-source-parsing/podcast-parsing-events.ts +28 -28
  77. package/src/knowledge-source-parsing/user-hack-generation-options.ts +6 -6
  78. package/src/localisation/live-locales.ts +45 -45
  79. package/src/localisation/locale-language.ts +4 -4
  80. package/src/localisation/supported-languages.ts +11 -11
  81. package/src/localisation/supported-locales.ts +67 -67
  82. package/src/message-bus/Context.ts +7 -7
  83. package/src/moderation/hack-moderation-result-events.ts +18 -18
  84. package/src/moderation/hack-moderation-result.ts +27 -27
  85. package/src/partner/partner-events.ts +21 -21
  86. package/src/partner/partner.ts +7 -7
  87. package/src/pending-hack/pending-hack-events.ts +20 -20
  88. package/src/pending-hack/pending-hack-with-voice-events.ts +20 -20
  89. package/src/pending-hack/pending-hack-with-voice.ts +25 -25
  90. package/src/pending-hack/pending-hack.ts +77 -77
  91. package/src/preferences/preferences-events.ts +15 -15
  92. package/src/preferences/preferences.ts +35 -35
  93. package/src/profile/profile-events.ts +41 -41
  94. package/src/profile/profile.ts +28 -28
  95. package/src/profile/translated-profile.ts +13 -13
  96. package/src/referral/referral-events.ts +41 -41
  97. package/src/referral/referral.ts +76 -76
  98. package/src/saved/saved-collection-events.ts +19 -19
  99. package/src/saved/saved-collection.ts +8 -8
  100. package/src/segment/segment-commands.ts +75 -75
  101. package/src/segment/segment-events.ts +42 -42
  102. package/src/segment/segment-with-voice.ts +8 -8
  103. package/src/segment/segment.ts +82 -82
  104. package/src/skin/skin-events.ts +21 -21
  105. package/src/skin/skin.ts +6 -6
  106. package/src/spark/spark-board-read-model.ts +17 -17
  107. package/src/spark/spark-board.ts +12 -12
  108. package/src/spark/spark-events.ts +42 -42
  109. package/src/spark/spark.ts +80 -80
  110. package/src/text-to-speech/create-speech-commands.ts +22 -22
  111. package/src/text-to-speech/speech-created-events.ts +10 -10
  112. package/src/text-to-speech/supported-voices.ts +184 -184
  113. package/src/text-to-speech/text-segment.ts +29 -29
  114. package/src/theme/theme-events.ts +21 -21
  115. package/src/theme/theme.ts +68 -68
  116. package/src/translation/translation-events.ts +73 -73
  117. package/src/translation/translation.ts +25 -25
  118. package/src/trending/trending-events.ts +21 -21
  119. package/src/trending/trending-hacks.ts +8 -8
  120. package/src/user/get-user.ts +30 -24
  121. package/src/user/user-events.ts +26 -26
  122. package/src/user-context/user-context-events.ts +21 -21
  123. package/src/user-context/user-context.ts +15 -15
  124. package/src/user-notification-context/user-notification-context-events.ts +21 -21
  125. package/src/user-notification-context/user-notification-context.ts +9 -9
  126. package/src/user-statistics/user-statistics-events.ts +97 -97
  127. package/src/user-statistics/user-statistics.ts +82 -82
  128. package/src/video-cropping/video-cropping-events.ts +43 -43
  129. package/src/video-cropping/video-metadata.ts +12 -12
  130. package/tsconfig.cjs.json +7 -7
  131. package/tsconfig.npm.json +21 -21
@@ -1,77 +1,77 @@
1
- /* eslint-disable @typescript-eslint/ban-types */
2
- import { ExtractedSubject } from '../hack/extracted-subject';
3
- import { HackAffiliate, HackContributor, HackType, HackSourceData, HackTopic, HackExternalLink } from '../hack/hack';
4
- import { Segment } from '../segment/segment';
5
-
6
- export interface PendingHack {
7
- id: string;
8
- /** use @uptime.app/localisation-contracts */
9
- locale: string;
10
- baseLocaleHackId: string;
11
- v: number;
12
- createdAt: string;
13
- updatedAt: string;
14
- owner?: string;
15
- draftHackId: string;
16
- draftHackVersion: number;
17
- hackId: string;
18
- sourceId?: string;
19
- title: string;
20
- themeId: string;
21
- coverUrl?: string;
22
- /** Added in July 2024. This is the URL of the cover image that is free to use without any copyright. */
23
- copyrightFreeCoverUrl?: string;
24
- affiliate?: HackAffiliate;
25
- topics: HackTopic[];
26
- contributors: HackContributor[];
27
- type: HackType;
28
- sourceData?: HackSourceData;
29
- notifications?: {
30
- aiGeneratedText?: string;
31
- humanCuratedText?: string;
32
- };
33
- segments: {
34
- favouriteQuote: Segment | {};
35
- inANutshell: Segment | {};
36
- introduction: Segment | {};
37
- insights: [
38
- (Segment | {}),
39
- (Segment | {}),
40
- (Segment | {})
41
- ];
42
- conclusion: Segment | {};
43
- // composite segments
44
- overview: Segment | {};
45
- shareableOverview: Segment | {};
46
- hereAreTheInsights: Segment | {};
47
- putInAction?: Segment | {};
48
- };
49
- externalLink?: HackExternalLink;
50
- subjects?: ExtractedSubject[];
51
- }
52
-
53
- export interface CompletePendingHack extends PendingHack {
54
- segments: {
55
- favouriteQuote: Segment;
56
- inANutshell: Segment;
57
- introduction: Segment;
58
- insights: [
59
- Segment,
60
- Segment,
61
- Segment
62
- ];
63
- conclusion: Segment;
64
- // composite segments
65
- overview: Segment;
66
- shareableOverview: Segment;
67
- hereAreTheInsights: Segment;
68
- putInAction?: Segment;
69
- };
70
- subjects: ExtractedSubject[];
71
- }
72
-
73
- export type CompletePendingHackWithPutInAction = CompletePendingHack & {
74
- segments: {
75
- putInAction: Segment;
76
- }
77
- };
1
+ /* eslint-disable @typescript-eslint/ban-types */
2
+ import { ExtractedSubject } from '../hack/extracted-subject';
3
+ import { HackAffiliate, HackContributor, HackType, HackSourceData, HackTopic, HackExternalLink } from '../hack/hack';
4
+ import { Segment } from '../segment/segment';
5
+
6
+ export interface PendingHack {
7
+ id: string;
8
+ /** use @uptime.app/localisation-contracts */
9
+ locale: string;
10
+ baseLocaleHackId: string;
11
+ v: number;
12
+ createdAt: string;
13
+ updatedAt: string;
14
+ owner?: string;
15
+ draftHackId: string;
16
+ draftHackVersion: number;
17
+ hackId: string;
18
+ sourceId?: string;
19
+ title: string;
20
+ themeId: string;
21
+ coverUrl?: string;
22
+ /** Added in July 2024. This is the URL of the cover image that is free to use without any copyright. */
23
+ copyrightFreeCoverUrl?: string;
24
+ affiliate?: HackAffiliate;
25
+ topics: HackTopic[];
26
+ contributors: HackContributor[];
27
+ type: HackType;
28
+ sourceData?: HackSourceData;
29
+ notifications?: {
30
+ aiGeneratedText?: string;
31
+ humanCuratedText?: string;
32
+ };
33
+ segments: {
34
+ favouriteQuote: Segment | {};
35
+ inANutshell: Segment | {};
36
+ introduction: Segment | {};
37
+ insights: [
38
+ (Segment | {}),
39
+ (Segment | {}),
40
+ (Segment | {})
41
+ ];
42
+ conclusion: Segment | {};
43
+ // composite segments
44
+ overview: Segment | {};
45
+ shareableOverview: Segment | {};
46
+ hereAreTheInsights: Segment | {};
47
+ putInAction?: Segment | {};
48
+ };
49
+ externalLink?: HackExternalLink;
50
+ subjects?: ExtractedSubject[];
51
+ }
52
+
53
+ export interface CompletePendingHack extends PendingHack {
54
+ segments: {
55
+ favouriteQuote: Segment;
56
+ inANutshell: Segment;
57
+ introduction: Segment;
58
+ insights: [
59
+ Segment,
60
+ Segment,
61
+ Segment
62
+ ];
63
+ conclusion: Segment;
64
+ // composite segments
65
+ overview: Segment;
66
+ shareableOverview: Segment;
67
+ hereAreTheInsights: Segment;
68
+ putInAction?: Segment;
69
+ };
70
+ subjects: ExtractedSubject[];
71
+ }
72
+
73
+ export type CompletePendingHackWithPutInAction = CompletePendingHack & {
74
+ segments: {
75
+ putInAction: Segment;
76
+ }
77
+ };
@@ -1,15 +1,15 @@
1
- import { Preferences } from './preferences';
2
-
3
- export interface UserPreferencesCreatedEvent {
4
- id: string;
5
- type: 'UserPreferencesCreated';
6
- payload: Preferences;
7
- }
8
-
9
- export interface UserPreferencesUpdatedEvent {
10
- id: string;
11
- type: 'UserPreferencesUpdated';
12
- payload: Preferences;
13
- }
14
-
15
- export type UserPreferencesChangedEvent = UserPreferencesCreatedEvent | UserPreferencesUpdatedEvent;
1
+ import { Preferences } from './preferences';
2
+
3
+ export interface UserPreferencesCreatedEvent {
4
+ id: string;
5
+ type: 'UserPreferencesCreated';
6
+ payload: Preferences;
7
+ }
8
+
9
+ export interface UserPreferencesUpdatedEvent {
10
+ id: string;
11
+ type: 'UserPreferencesUpdated';
12
+ payload: Preferences;
13
+ }
14
+
15
+ export type UserPreferencesChangedEvent = UserPreferencesCreatedEvent | UserPreferencesUpdatedEvent;
@@ -1,35 +1,35 @@
1
- export type Preferences = PreferencesItem & UpdatablePreferences;
2
-
3
- interface PreferencesItem {
4
- id: string;
5
- v: number;
6
- createdAt: string;
7
- updatedAt: string;
8
- userId: string;
9
- }
10
-
11
- export interface UpdatablePreferences {
12
- 'flashcards.showFlashcardsFromInsights': boolean;
13
- // ISO date, UTC. Required to figure out if to generate flashcards from insights in the flashcard-service: ViewedHack event times are compared against it.
14
- 'flashcards.showFlashcardsFromInsights.datePreferenceUpdated': string;
15
- 'notifications.backdrop.email': boolean;
16
- 'notifications.backdrop.push': boolean;
17
- 'notifications.challenges.email': boolean;
18
- 'notifications.challenges.push': boolean;
19
- 'notifications.generalReminders.email': boolean;
20
- 'notifications.generalReminders.push': boolean;
21
- 'notifications.getBackToUptime.email': boolean;
22
- 'notifications.getBackToUptime.push': boolean;
23
- 'notifications.getBackToUptime.timeToReceive': string;
24
- 'notifications.flashcards.newToday.email': boolean;
25
- 'notifications.flashcards.newToday.push': boolean;
26
- 'notifications.recommendedContent.email': boolean;
27
- 'notifications.recommendedContent.push': boolean;
28
- 'notifications.research.email': boolean;
29
- 'notifications.research.push': boolean;
30
- 'notifications.savedHacks.email': boolean;
31
- 'notifications.savedHacks.push': boolean;
32
- 'notifications.uptimeNews.email': boolean;
33
- 'notifications.uptimeNews.push': boolean;
34
- 'timezone': string;
35
- }
1
+ export type Preferences = PreferencesItem & UpdatablePreferences;
2
+
3
+ interface PreferencesItem {
4
+ id: string;
5
+ v: number;
6
+ createdAt: string;
7
+ updatedAt: string;
8
+ userId: string;
9
+ }
10
+
11
+ export interface UpdatablePreferences {
12
+ 'flashcards.showFlashcardsFromInsights': boolean;
13
+ // ISO date, UTC. Required to figure out if to generate flashcards from insights in the flashcard-service: ViewedHack event times are compared against it.
14
+ 'flashcards.showFlashcardsFromInsights.datePreferenceUpdated': string;
15
+ 'notifications.backdrop.email': boolean;
16
+ 'notifications.backdrop.push': boolean;
17
+ 'notifications.challenges.email': boolean;
18
+ 'notifications.challenges.push': boolean;
19
+ 'notifications.generalReminders.email': boolean;
20
+ 'notifications.generalReminders.push': boolean;
21
+ 'notifications.getBackToUptime.email': boolean;
22
+ 'notifications.getBackToUptime.push': boolean;
23
+ 'notifications.getBackToUptime.timeToReceive': string;
24
+ 'notifications.flashcards.newToday.email': boolean;
25
+ 'notifications.flashcards.newToday.push': boolean;
26
+ 'notifications.recommendedContent.email': boolean;
27
+ 'notifications.recommendedContent.push': boolean;
28
+ 'notifications.research.email': boolean;
29
+ 'notifications.research.push': boolean;
30
+ 'notifications.savedHacks.email': boolean;
31
+ 'notifications.savedHacks.push': boolean;
32
+ 'notifications.uptimeNews.email': boolean;
33
+ 'notifications.uptimeNews.push': boolean;
34
+ 'timezone': string;
35
+ }
@@ -1,41 +1,41 @@
1
- import { Profile } from './profile';
2
- import { TranslatedProfile } from './translated-profile';
3
-
4
- export interface ProfileCreatedEvent {
5
- id: string;
6
- type: 'ProfileCreated';
7
- payload: Profile;
8
- }
9
-
10
- export interface ProfileUpdatedEvent {
11
- id: string;
12
- type: 'ProfileUpdated';
13
- payload: Profile;
14
- }
15
-
16
- export interface ProfileDeletedEvent {
17
- id: string;
18
- type: 'ProfileDeleted';
19
- payload: Profile;
20
- }
21
-
22
- export interface TranslatedProfileCreatedEvent {
23
- id: string;
24
- type: 'TranslatedProfileCreated';
25
- payload: TranslatedProfile;
26
- }
27
-
28
- export interface TranslatedProfileUpdatedEvent {
29
- id: string;
30
- type: 'TranslatedProfileUpdated';
31
- payload: TranslatedProfile;
32
- }
33
-
34
- export interface TranslatedProfileDeletedEvent {
35
- id: string;
36
- type: 'TranslatedProfileDeleted';
37
- payload: TranslatedProfile;
38
- }
39
-
40
- export type ProfileChangedEvent = ProfileCreatedEvent | ProfileUpdatedEvent | ProfileDeletedEvent;
41
- export type TranslatedProfileChangedEvent = TranslatedProfileCreatedEvent | TranslatedProfileUpdatedEvent | TranslatedProfileDeletedEvent;
1
+ import { Profile } from './profile';
2
+ import { TranslatedProfile } from './translated-profile';
3
+
4
+ export interface ProfileCreatedEvent {
5
+ id: string;
6
+ type: 'ProfileCreated';
7
+ payload: Profile;
8
+ }
9
+
10
+ export interface ProfileUpdatedEvent {
11
+ id: string;
12
+ type: 'ProfileUpdated';
13
+ payload: Profile;
14
+ }
15
+
16
+ export interface ProfileDeletedEvent {
17
+ id: string;
18
+ type: 'ProfileDeleted';
19
+ payload: Profile;
20
+ }
21
+
22
+ export interface TranslatedProfileCreatedEvent {
23
+ id: string;
24
+ type: 'TranslatedProfileCreated';
25
+ payload: TranslatedProfile;
26
+ }
27
+
28
+ export interface TranslatedProfileUpdatedEvent {
29
+ id: string;
30
+ type: 'TranslatedProfileUpdated';
31
+ payload: TranslatedProfile;
32
+ }
33
+
34
+ export interface TranslatedProfileDeletedEvent {
35
+ id: string;
36
+ type: 'TranslatedProfileDeleted';
37
+ payload: TranslatedProfile;
38
+ }
39
+
40
+ export type ProfileChangedEvent = ProfileCreatedEvent | ProfileUpdatedEvent | ProfileDeletedEvent;
41
+ export type TranslatedProfileChangedEvent = TranslatedProfileCreatedEvent | TranslatedProfileUpdatedEvent | TranslatedProfileDeletedEvent;
@@ -1,28 +1,28 @@
1
- import { SupportedLocale } from '../localisation/supported-locales';
2
-
3
- export interface StoredProfile {
4
- id: string;
5
- v: number;
6
- createdAt: string;
7
- updatedAt: string;
8
- avatarUrl: string;
9
- name: string;
10
- owner: string;
11
- tenant?: string;
12
- handle: string;
13
- _sanitisedHandle?: string; // use to determinate uniqueness for a handle, despite the case of it
14
- headerImageUrl?: string;
15
- tags?: string[];
16
- links?: ProfileLink[];
17
- tagline: string;
18
- description?: string;
19
- /** The locale (language and region) of the draft hack e.g. fr-FR. Mandatory property since 12/05/2023. */
20
- locale: SupportedLocale;
21
- }
22
-
23
- export type Profile = Omit<StoredProfile, '_sanitisedHandle'>;
24
-
25
- export interface ProfileLink {
26
- type: 'Other' | 'Twitter' | 'Facebook' | 'Youtube' | 'Medium' | 'Instagram' | 'Patreon' | 'TikTok' | 'LinkedIn' | 'LinkTree';
27
- url: string;
28
- }
1
+ import { SupportedLocale } from '../localisation/supported-locales';
2
+
3
+ export interface StoredProfile {
4
+ id: string;
5
+ v: number;
6
+ createdAt: string;
7
+ updatedAt: string;
8
+ avatarUrl: string;
9
+ name: string;
10
+ owner: string;
11
+ tenant?: string;
12
+ handle: string;
13
+ _sanitisedHandle?: string; // use to determinate uniqueness for a handle, despite the case of it
14
+ headerImageUrl?: string;
15
+ tags?: string[];
16
+ links?: ProfileLink[];
17
+ tagline: string;
18
+ description?: string;
19
+ /** The locale (language and region) of the draft hack e.g. fr-FR. Mandatory property since 12/05/2023. */
20
+ locale: SupportedLocale;
21
+ }
22
+
23
+ export type Profile = Omit<StoredProfile, '_sanitisedHandle'>;
24
+
25
+ export interface ProfileLink {
26
+ type: 'Other' | 'Twitter' | 'Facebook' | 'Youtube' | 'Medium' | 'Instagram' | 'Patreon' | 'TikTok' | 'LinkedIn' | 'LinkTree';
27
+ url: string;
28
+ }
@@ -1,13 +1,13 @@
1
- import { SupportedLocale } from '../localisation/supported-locales';
2
-
3
- export interface TranslatedProfile {
4
- id: string;
5
- v: number;
6
- createdAt: string;
7
- updatedAt: string;
8
- profileId: string;
9
- locale: SupportedLocale;
10
- tagline: string;
11
- description?: string;
12
- tags?: string[];
13
- }
1
+ import { SupportedLocale } from '../localisation/supported-locales';
2
+
3
+ export interface TranslatedProfile {
4
+ id: string;
5
+ v: number;
6
+ createdAt: string;
7
+ updatedAt: string;
8
+ profileId: string;
9
+ locale: SupportedLocale;
10
+ tagline: string;
11
+ description?: string;
12
+ tags?: string[];
13
+ }
@@ -1,41 +1,41 @@
1
- import { ReferralCredit, ReferralLink } from './referral';
2
-
3
- export interface ReferralCreditCreatedEvent {
4
- id: string;
5
- type: 'ReferralCreditCreated';
6
- payload: ReferralCredit;
7
- }
8
-
9
- export interface ReferralCreditUpdatedEvent {
10
- id: string;
11
- type: 'ReferralCreditUpdated';
12
- payload: ReferralCredit;
13
- }
14
-
15
- export interface ReferralCreditDeletedEvent {
16
- id: string;
17
- type: 'ReferralCreditDeleted';
18
- payload: ReferralCredit;
19
- }
20
-
21
- export type ReferralCreditChangedEvent = ReferralCreditCreatedEvent | ReferralCreditUpdatedEvent | ReferralCreditDeletedEvent;
22
-
23
- export interface ReferralLinkCreatedEvent {
24
- id: string;
25
- type: 'ReferralLinkCreated';
26
- payload: ReferralLink;
27
- }
28
-
29
- export interface ReferralLinkUpdatedEvent {
30
- id: string;
31
- type: 'ReferralLinkUpdated';
32
- payload: ReferralLink;
33
- }
34
-
35
- export interface ReferralLinkDeletedEvent {
36
- id: string;
37
- type: 'ReferralLinkDeleted';
38
- payload: ReferralLink;
39
- }
40
-
41
- export type ReferralLinkChangedEvent = ReferralLinkCreatedEvent | ReferralLinkUpdatedEvent | ReferralLinkDeletedEvent;
1
+ import { ReferralCredit, ReferralLink } from './referral';
2
+
3
+ export interface ReferralCreditCreatedEvent {
4
+ id: string;
5
+ type: 'ReferralCreditCreated';
6
+ payload: ReferralCredit;
7
+ }
8
+
9
+ export interface ReferralCreditUpdatedEvent {
10
+ id: string;
11
+ type: 'ReferralCreditUpdated';
12
+ payload: ReferralCredit;
13
+ }
14
+
15
+ export interface ReferralCreditDeletedEvent {
16
+ id: string;
17
+ type: 'ReferralCreditDeleted';
18
+ payload: ReferralCredit;
19
+ }
20
+
21
+ export type ReferralCreditChangedEvent = ReferralCreditCreatedEvent | ReferralCreditUpdatedEvent | ReferralCreditDeletedEvent;
22
+
23
+ export interface ReferralLinkCreatedEvent {
24
+ id: string;
25
+ type: 'ReferralLinkCreated';
26
+ payload: ReferralLink;
27
+ }
28
+
29
+ export interface ReferralLinkUpdatedEvent {
30
+ id: string;
31
+ type: 'ReferralLinkUpdated';
32
+ payload: ReferralLink;
33
+ }
34
+
35
+ export interface ReferralLinkDeletedEvent {
36
+ id: string;
37
+ type: 'ReferralLinkDeleted';
38
+ payload: ReferralLink;
39
+ }
40
+
41
+ export type ReferralLinkChangedEvent = ReferralLinkCreatedEvent | ReferralLinkUpdatedEvent | ReferralLinkDeletedEvent;
@@ -1,76 +1,76 @@
1
- export interface ReferredUserPurchase {
2
- /** The price the referred user paid in their currency */
3
- price: number;
4
- /** The currency the referred user paid in */
5
- currency: string;
6
- /** The price they paid in United States Dollars (USD) */
7
- priceInUSD: number;
8
- /** The RevenueCat transaction ID */
9
- transactionId: string;
10
- /** The RevenueCat original transaction ID */
11
- originalTransactionId: string;
12
- }
13
-
14
- export interface ReferralCredit {
15
- /** The unique identifier of a referral credit */
16
- id: string;
17
- v: number;
18
- createdAt: string;
19
- updatedAt: string;
20
- /** The ID of the user who shared the referral link */
21
- referrerUserId: string;
22
- /** If the referrer is a creator, this contains their creator ID */
23
- referrerCreatorId?: string;
24
- /** If the referrer is a partner of Uptime, this contains their partner ID */
25
- referrerPartnerId?: string;
26
- /** The unique device ID of the user who shared the referral link */
27
- referrerUniqueDeviceId?: string;
28
- /** The purchase the referred user made (if applicable) */
29
- referredUserPurchase?: ReferredUserPurchase;
30
- /** The ID of the user who clicked on the referral link and triggered the referral */
31
- referredUserId?: string;
32
- /** The unique device ID of the user who clicked on the referral link and triggered the referral */
33
- referredUserUniqueDeviceId?: string;
34
- /** The ISO 8601 UTC timestamp of the successful referral event */
35
- eventTimestamp: string;
36
- /** The source of the successful referral event e.g. Branch */
37
- eventSource: string;
38
- /** The action that triggered the successful referral event e.g. a user sign-up */
39
- eventTrigger: string;
40
- }
41
-
42
- export interface ReferralLink {
43
- /** The unique identifier of a referral link */
44
- id: string;
45
- v: number;
46
- createdAt: string;
47
- updatedAt: string;
48
- /** The ID of the user who will share the link and be credited if it is used */
49
- referrerUserId: string;
50
- /** The URL of the referral deep link */
51
- url: string;
52
- /** The source of the referral link e.g. Branch */
53
- source: string;
54
- /** The action that triggers a successful referral e.g. a user sign-up */
55
- trigger: string;
56
- }
57
-
58
- export enum ReferralEventSource {
59
- Branch = 'branch',
60
- RevenueCat = 'revenue-cat'
61
- }
62
-
63
- /* None of these events are mututally exlusive. For example, a single premium payment could
64
- * yield both a 'trial-converted' and a 'paid-subscription' referral credit, and it's possible
65
- * they could be attributed to different referrers, so we need to track both.
66
- */
67
- export enum ReferralEventTrigger {
68
- /** A new user clicks on a deep link, downloads the Uptime app and registers. */
69
- SignUp = 'sign-up',
70
- /** A user clicks on a deep link and starts a trial during that session. */
71
- TrialStarted = 'trial-started',
72
- /** A trial-started referred user converts to premium during their trial. */
73
- TrialConverted = 'trial-converted',
74
- /** A user clicks a on deep link and pays for premium during that session. */
75
- PaidSubscription = 'paid-subscription'
76
- }
1
+ export interface ReferredUserPurchase {
2
+ /** The price the referred user paid in their currency */
3
+ price: number;
4
+ /** The currency the referred user paid in */
5
+ currency: string;
6
+ /** The price they paid in United States Dollars (USD) */
7
+ priceInUSD: number;
8
+ /** The RevenueCat transaction ID */
9
+ transactionId: string;
10
+ /** The RevenueCat original transaction ID */
11
+ originalTransactionId: string;
12
+ }
13
+
14
+ export interface ReferralCredit {
15
+ /** The unique identifier of a referral credit */
16
+ id: string;
17
+ v: number;
18
+ createdAt: string;
19
+ updatedAt: string;
20
+ /** The ID of the user who shared the referral link */
21
+ referrerUserId: string;
22
+ /** If the referrer is a creator, this contains their creator ID */
23
+ referrerCreatorId?: string;
24
+ /** If the referrer is a partner of Uptime, this contains their partner ID */
25
+ referrerPartnerId?: string;
26
+ /** The unique device ID of the user who shared the referral link */
27
+ referrerUniqueDeviceId?: string;
28
+ /** The purchase the referred user made (if applicable) */
29
+ referredUserPurchase?: ReferredUserPurchase;
30
+ /** The ID of the user who clicked on the referral link and triggered the referral */
31
+ referredUserId?: string;
32
+ /** The unique device ID of the user who clicked on the referral link and triggered the referral */
33
+ referredUserUniqueDeviceId?: string;
34
+ /** The ISO 8601 UTC timestamp of the successful referral event */
35
+ eventTimestamp: string;
36
+ /** The source of the successful referral event e.g. Branch */
37
+ eventSource: string;
38
+ /** The action that triggered the successful referral event e.g. a user sign-up */
39
+ eventTrigger: string;
40
+ }
41
+
42
+ export interface ReferralLink {
43
+ /** The unique identifier of a referral link */
44
+ id: string;
45
+ v: number;
46
+ createdAt: string;
47
+ updatedAt: string;
48
+ /** The ID of the user who will share the link and be credited if it is used */
49
+ referrerUserId: string;
50
+ /** The URL of the referral deep link */
51
+ url: string;
52
+ /** The source of the referral link e.g. Branch */
53
+ source: string;
54
+ /** The action that triggers a successful referral e.g. a user sign-up */
55
+ trigger: string;
56
+ }
57
+
58
+ export enum ReferralEventSource {
59
+ Branch = 'branch',
60
+ RevenueCat = 'revenue-cat'
61
+ }
62
+
63
+ /* None of these events are mututally exlusive. For example, a single premium payment could
64
+ * yield both a 'trial-converted' and a 'paid-subscription' referral credit, and it's possible
65
+ * they could be attributed to different referrers, so we need to track both.
66
+ */
67
+ export enum ReferralEventTrigger {
68
+ /** A new user clicks on a deep link, downloads the Uptime app and registers. */
69
+ SignUp = 'sign-up',
70
+ /** A user clicks on a deep link and starts a trial during that session. */
71
+ TrialStarted = 'trial-started',
72
+ /** A trial-started referred user converts to premium during their trial. */
73
+ TrialConverted = 'trial-converted',
74
+ /** A user clicks a on deep link and pays for premium during that session. */
75
+ PaidSubscription = 'paid-subscription'
76
+ }