@itm-studio/partner-sdk 0.1.4 → 0.1.6

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 CHANGED
@@ -35,6 +35,10 @@ const { getPartnerMomentsForBrand } = await itm.query({
35
35
  status: true,
36
36
  timezone: true,
37
37
  externalUrl: true,
38
+ coverImage: {
39
+ url: true,
40
+ mimeType: true,
41
+ },
38
42
  venue: {
39
43
  name: true,
40
44
  city: true,
@@ -97,6 +101,10 @@ const { getPartnerMoment } = await itm.query({
97
101
  endDate: true,
98
102
  timezone: true,
99
103
  externalUrl: true,
104
+ coverImage: {
105
+ url: true,
106
+ mimeType: true,
107
+ },
100
108
  ticketTiers: {
101
109
  name: true,
102
110
  price: true,
@@ -175,6 +183,10 @@ const { getPartnerMomentCollection } = await itm.query({
175
183
  status: true,
176
184
  timezone: true,
177
185
  externalUrl: true,
186
+ coverImage: {
187
+ url: true,
188
+ mimeType: true,
189
+ },
178
190
  venue: { name: true, city: true },
179
191
  ticketTiers: {
180
192
  name: true,
package/dist/index.d.mts CHANGED
@@ -1,5 +1,6 @@
1
1
  type Scalars = {
2
2
  DateTime: any;
3
+ JSON: any;
3
4
  ID: string;
4
5
  String: string;
5
6
  Boolean: boolean;
@@ -11,6 +12,8 @@ type MomentSortOrder = 'ASC' | 'DESC';
11
12
  type MomentType = 'DIGITAL' | 'IRL';
12
13
  type MomentCategory = 'ACTIVATION' | 'CONCERT' | 'DIGITAL' | 'DINING' | 'EDUCATION' | 'EXHIBITION' | 'FASHION' | 'FESTIVAL' | 'LAUNCH' | 'NIGHTLIFE' | 'OTHER' | 'PARTY' | 'PERFORMING_ARTS' | 'SCREENING' | 'SPORTS' | 'WELLNESS';
13
14
  type MomentSubcategory = 'ACOUSTIC_SET' | 'ADVANCE_SCREENING' | 'AFTER_PARTY' | 'AIRDROP' | 'ALBUM_DROP' | 'ALBUM_RELEASE_SHOW' | 'AMA' | 'ANNIVERSARY' | 'ARTIST_TALK' | 'ART_FAIR' | 'ART_FESTIVAL' | 'ATHLETE_APPEARANCE' | 'AWARDS' | 'BAR_TAKEOVER' | 'BATTLE' | 'BEER_AND_WINE_FESTIVAL' | 'BIENNALE' | 'BIRTHDAY' | 'BLOCK_PARTY' | 'BRAND_EXPERIENCE' | 'BRAND_REVEAL' | 'BREATHWORK' | 'BRUNCH_EVENT' | 'BURLESQUE' | 'CACAO_CEREMONY' | 'CARNIVAL' | 'CELEBRATION' | 'CHAMPIONSHIP' | 'CHEF_DINNER' | 'CHOIR_OR_ENSEMBLE' | 'CLUB_NIGHT' | 'CLUB_SET' | 'COLD_PLUNGE' | 'COLLABORATION_REVEAL' | 'COLLECTION_DROP' | 'COMEDY_FESTIVAL' | 'COMEDY_NIGHT' | 'COMEDY_SHOW' | 'COMMUNITY_MEETUP' | 'CONFERENCE' | 'COOKING_CLASS' | 'CULTURAL_FESTIVAL' | 'DANCE_PERFORMANCE' | 'DAYCLUB' | 'DIRECTORS_CUT' | 'DISCORD_EVENT' | 'DOCUMENTARY' | 'DRAG_SHOW' | 'ECSTATIC_DANCE' | 'ESPORTS' | 'EXHIBITION_GAME' | 'EXTREME_SPORTS' | 'FAN_EXPERIENCE' | 'FAN_FEST' | 'FASHION_FESTIVAL' | 'FASHION_PANEL' | 'FASHION_WEEK' | 'FIGHT_NIGHT' | 'FILM_FESTIVAL' | 'FILM_PREMIERE' | 'FINISSAGE' | 'FIRESIDE_CHAT' | 'FITNESS_CLASS' | 'FITTING_EVENT' | 'FOOD_FESTIVAL' | 'FOOD_PAIRING' | 'GALLERY_OPENING' | 'GAME_DAY' | 'GIVEAWAY' | 'GROUP_EXHIBITION' | 'GUERRILLA' | 'HACKATHON' | 'HEADLINER_SHOW' | 'HOLIDAY_PARTY' | 'HYBRID_EVENT' | 'IMMERSIVE_EXPERIENCE' | 'IMPROV_SHOW' | 'INFLUENCER_EVENT' | 'INSTALLATION' | 'INTERACTIVE_INSTALLATION' | 'JAZZ_NIGHT' | 'JAZZ_SESSION' | 'KARAOKE_NIGHT' | 'KEYNOTE' | 'LATE_NIGHT_SET' | 'LISTENING_PARTY' | 'LIVESTREAM' | 'LOOKBOOK_SHOOT' | 'MASQUERADE' | 'MASTERCLASS' | 'MEDITATION' | 'MEET_AND_GREET' | 'MEMBERS_ONLY' | 'MOBILE_TOUR' | 'MUSEUM_EVENT' | 'MUSICAL' | 'MUSIC_FESTIVAL' | 'MUSIC_VIDEO_PREMIERE' | 'NETWORKING_MIXER' | 'NFT_MINT' | 'ONLINE_DROP' | 'ONLINE_PREMIERE' | 'ONLINE_WATCH_PARTY' | 'OPEN_MIC' | 'OPERA' | 'ORCHESTRA' | 'OTHER' | 'OUTDOOR_CINEMA' | 'PANEL' | 'PERFORMANCE_ART' | 'PHOTO_ACTIVATION' | 'POOL_PARTY' | 'POP_UP_BOUTIQUE' | 'POP_UP_DINING' | 'POP_UP_GALLERY' | 'POP_UP_SHOP' | 'PRESENTATION' | 'PRESS_EVENT' | 'PREVIEW' | 'PRIDE_FESTIVAL' | 'PRIVATE_EVENT' | 'PRODUCT_LAUNCH' | 'RAVE' | 'RELEASE_PARTY' | 'RESIDENCY' | 'RESTAURANT_OPENING' | 'RETREAT' | 'RIVALRY_GAME' | 'ROOFTOP_PARTY' | 'ROUNDTABLE' | 'RUNWAY_SHOW' | 'RUN_CLUB' | 'RUN_OR_RACE' | 'SAMPLE_SALE' | 'SAMPLING' | 'SECRET_DINING' | 'SEMINAR' | 'SHORT_FILM' | 'SHOWCASE' | 'SHOWROOM' | 'SILENT_DISCO' | 'SOCIAL_CHALLENGE' | 'SOLO_EXHIBITION' | 'SOUND_BATH' | 'SPA_EXPERIENCE' | 'SPOKEN_WORD' | 'SPONSORSHIP' | 'SPORTS_CLINIC' | 'SPORTS_WATCH_PARTY' | 'STANDUP_COMEDY' | 'STREET_TEAM' | 'STUDIO_VISIT' | 'SUMMIT' | 'SUPPER_CLUB' | 'TAILGATE' | 'TASTING' | 'THEATER' | 'THEMED_NIGHT' | 'TOURNAMENT' | 'TOUR_STOP' | 'TRIBUTE_SHOW' | 'TRUNK_SHOW' | 'TWITTER_SPACE' | 'VARIETY_SHOW' | 'VENUE_OPENING' | 'VIRTUAL_CONCERT' | 'VIRTUAL_EVENT' | 'WAREHOUSE_PARTY' | 'WATCH_PARTY' | 'WEBINAR' | 'WELLNESS_FESTIVAL' | 'WELLNESS_WORKSHOP' | 'WORKSHOP' | 'YOGA_SESSION';
15
+ type EchoType = 'LINK' | 'POST' | 'IMAGE' | 'VIDEO' | 'GALLERY' | 'MERCH' | 'AUDIO' | 'QUESTION' | 'POLL' | 'UPLOAD' | 'TOKEN' | 'MOMENT' | 'FORM' | 'THIRD_PARTY';
16
+ type ThirdPartyEchoType = 'SPOTIFY' | 'INSTAGRAM' | 'TIKTOK';
14
17
  type PaymentStatus = 'PENDING' | 'SUCCEEDED' | 'FAILED';
15
18
  type TicketExtensionStatus = 'PENDING' | 'APPLIED' | 'CANCELLED' | 'EXPIRED' | 'FAILED' | 'REFUNDED';
16
19
  interface Currency {
@@ -35,6 +38,17 @@ interface Venue {
35
38
  updatedAt: Scalars['DateTime'];
36
39
  __typename: 'Venue';
37
40
  }
41
+ /**
42
+ * A slim projection of the cover image media asset.
43
+ * Only the publicly useful fields (URL and MIME type) are exposed.
44
+ */
45
+ interface MomentCoverImage {
46
+ /** CloudFront URL of the cover image. */
47
+ url: Scalars['String'];
48
+ /** MIME type of the image (e.g. image/jpeg, image/png, image/webp). */
49
+ mimeType: Scalars['String'];
50
+ __typename: 'MomentCoverImage';
51
+ }
38
52
  interface Moment {
39
53
  uid: Scalars['ID'];
40
54
  name: Scalars['String'];
@@ -52,6 +66,8 @@ interface Moment {
52
66
  timezone: Scalars['String'];
53
67
  minimumAge: Scalars['Int'];
54
68
  externalUrl: (Scalars['String'] | null);
69
+ /** Cover image for the moment. Null if no cover image is set. */
70
+ coverImage: (MomentCoverImage | null);
55
71
  venue: (Venue | null);
56
72
  ticketTiers: TicketTier[];
57
73
  createdAt: Scalars['DateTime'];
@@ -167,6 +183,55 @@ interface MomentCollection {
167
183
  updatedAt: Scalars['DateTime'];
168
184
  __typename: 'MomentCollection';
169
185
  }
186
+ interface Dimensions {
187
+ width: (Scalars['Int'] | null);
188
+ height: (Scalars['Int'] | null);
189
+ __typename: 'Dimensions';
190
+ }
191
+ /** A media asset associated with an echo (cover image, gallery item, audio, etc.). */
192
+ interface EchoMediaAsset {
193
+ uid: Scalars['ID'];
194
+ /** MIME type of the media (e.g. image/jpeg, video/mp4, audio/mpeg). */
195
+ mimeType: Scalars['String'];
196
+ /** S3 / CloudFront key for the asset. */
197
+ s3Key: Scalars['String'];
198
+ dimensions: Dimensions;
199
+ /** File size in bytes. */
200
+ size: Scalars['Int'];
201
+ /** Low-res placeholder URL for lazy loading. */
202
+ placeholderUrl: (Scalars['String'] | null);
203
+ /** Blurhash string for placeholder rendering. */
204
+ blurhash: (Scalars['String'] | null);
205
+ createdAt: Scalars['DateTime'];
206
+ updatedAt: Scalars['DateTime'];
207
+ __typename: 'EchoMediaAsset';
208
+ }
209
+ /** An echo is a content unit published by a brand — links, posts, images, videos, galleries, etc. */
210
+ interface Echo {
211
+ uid: Scalars['ID'];
212
+ type: EchoType;
213
+ name: Scalars['String'];
214
+ slug: (Scalars['String'] | null);
215
+ description: (Scalars['String'] | null);
216
+ /** Rich text body for POST-type echoes. */
217
+ postBody: (Scalars['String'] | null);
218
+ publishTime: Scalars['DateTime'];
219
+ externalLink: (Scalars['String'] | null);
220
+ termsLink: (Scalars['String'] | null);
221
+ isPublic: Scalars['Boolean'];
222
+ thirdPartyEchoType: (ThirdPartyEchoType | null);
223
+ /** Configuration for third-party embeds (Spotify, Instagram, TikTok). */
224
+ thirdPartyEchoConfig: (Scalars['JSON'] | null);
225
+ /** Primary media asset (cover image, single media). */
226
+ mediaAsset: (EchoMediaAsset | null);
227
+ /** Additional media assets (gallery items). */
228
+ echoMedia: (EchoMediaAsset[] | null);
229
+ /** The moment this echo is associated with, if any. */
230
+ moment: (Moment | null);
231
+ createdAt: Scalars['DateTime'];
232
+ updatedAt: Scalars['DateTime'];
233
+ __typename: 'Echo';
234
+ }
170
235
  interface GetPublicMomentsResponse {
171
236
  moments: Moment[];
172
237
  totalCount: Scalars['Int'];
@@ -188,6 +253,13 @@ interface GetPartnerCustomersResponse {
188
253
  nextCursor: (Scalars['String'] | null);
189
254
  __typename: 'GetPartnerCustomersResponse';
190
255
  }
256
+ interface GetBrandEchoesForUserResponse {
257
+ echoes: Echo[];
258
+ totalCount: Scalars['Int'];
259
+ hasNextPage: Scalars['Boolean'];
260
+ nextCursor: (Scalars['String'] | null);
261
+ __typename: 'GetBrandEchoesForUserResponse';
262
+ }
191
263
  interface Query {
192
264
  /** Get paginated moments for the brand associated with the partner token. */
193
265
  getPartnerMomentsForBrand: GetPublicMomentsResponse;
@@ -205,6 +277,12 @@ interface Query {
205
277
  * Returns the collection with its moments and links.
206
278
  */
207
279
  getPartnerMomentCollection: (MomentCollection | null);
280
+ /**
281
+ * Get public echoes for the brand associated with the partner token.
282
+ * If momentSlug is provided, returns moment-level echoes for that moment.
283
+ * If omitted, returns brand-level echoes.
284
+ */
285
+ getPartnerPublicEchoes: GetBrandEchoesForUserResponse;
208
286
  __typename: 'Query';
209
287
  }
210
288
  interface CurrencyGenqlSelection {
@@ -231,6 +309,18 @@ interface VenueGenqlSelection {
231
309
  __typename?: boolean | number;
232
310
  __scalar?: boolean | number;
233
311
  }
312
+ /**
313
+ * A slim projection of the cover image media asset.
314
+ * Only the publicly useful fields (URL and MIME type) are exposed.
315
+ */
316
+ interface MomentCoverImageGenqlSelection {
317
+ /** CloudFront URL of the cover image. */
318
+ url?: boolean | number;
319
+ /** MIME type of the image (e.g. image/jpeg, image/png, image/webp). */
320
+ mimeType?: boolean | number;
321
+ __typename?: boolean | number;
322
+ __scalar?: boolean | number;
323
+ }
234
324
  interface MomentGenqlSelection {
235
325
  uid?: boolean | number;
236
326
  name?: boolean | number;
@@ -248,6 +338,8 @@ interface MomentGenqlSelection {
248
338
  timezone?: boolean | number;
249
339
  minimumAge?: boolean | number;
250
340
  externalUrl?: boolean | number;
341
+ /** Cover image for the moment. Null if no cover image is set. */
342
+ coverImage?: MomentCoverImageGenqlSelection;
251
343
  venue?: VenueGenqlSelection;
252
344
  ticketTiers?: TicketTierGenqlSelection;
253
345
  createdAt?: boolean | number;
@@ -371,6 +463,58 @@ interface MomentCollectionGenqlSelection {
371
463
  __typename?: boolean | number;
372
464
  __scalar?: boolean | number;
373
465
  }
466
+ interface DimensionsGenqlSelection {
467
+ width?: boolean | number;
468
+ height?: boolean | number;
469
+ __typename?: boolean | number;
470
+ __scalar?: boolean | number;
471
+ }
472
+ /** A media asset associated with an echo (cover image, gallery item, audio, etc.). */
473
+ interface EchoMediaAssetGenqlSelection {
474
+ uid?: boolean | number;
475
+ /** MIME type of the media (e.g. image/jpeg, video/mp4, audio/mpeg). */
476
+ mimeType?: boolean | number;
477
+ /** S3 / CloudFront key for the asset. */
478
+ s3Key?: boolean | number;
479
+ dimensions?: DimensionsGenqlSelection;
480
+ /** File size in bytes. */
481
+ size?: boolean | number;
482
+ /** Low-res placeholder URL for lazy loading. */
483
+ placeholderUrl?: boolean | number;
484
+ /** Blurhash string for placeholder rendering. */
485
+ blurhash?: boolean | number;
486
+ createdAt?: boolean | number;
487
+ updatedAt?: boolean | number;
488
+ __typename?: boolean | number;
489
+ __scalar?: boolean | number;
490
+ }
491
+ /** An echo is a content unit published by a brand — links, posts, images, videos, galleries, etc. */
492
+ interface EchoGenqlSelection {
493
+ uid?: boolean | number;
494
+ type?: boolean | number;
495
+ name?: boolean | number;
496
+ slug?: boolean | number;
497
+ description?: boolean | number;
498
+ /** Rich text body for POST-type echoes. */
499
+ postBody?: boolean | number;
500
+ publishTime?: boolean | number;
501
+ externalLink?: boolean | number;
502
+ termsLink?: boolean | number;
503
+ isPublic?: boolean | number;
504
+ thirdPartyEchoType?: boolean | number;
505
+ /** Configuration for third-party embeds (Spotify, Instagram, TikTok). */
506
+ thirdPartyEchoConfig?: boolean | number;
507
+ /** Primary media asset (cover image, single media). */
508
+ mediaAsset?: EchoMediaAssetGenqlSelection;
509
+ /** Additional media assets (gallery items). */
510
+ echoMedia?: EchoMediaAssetGenqlSelection;
511
+ /** The moment this echo is associated with, if any. */
512
+ moment?: MomentGenqlSelection;
513
+ createdAt?: boolean | number;
514
+ updatedAt?: boolean | number;
515
+ __typename?: boolean | number;
516
+ __scalar?: boolean | number;
517
+ }
374
518
  interface GetPublicMomentsResponseGenqlSelection {
375
519
  moments?: MomentGenqlSelection;
376
520
  totalCount?: boolean | number;
@@ -395,6 +539,14 @@ interface GetPartnerCustomersResponseGenqlSelection {
395
539
  __typename?: boolean | number;
396
540
  __scalar?: boolean | number;
397
541
  }
542
+ interface GetBrandEchoesForUserResponseGenqlSelection {
543
+ echoes?: EchoGenqlSelection;
544
+ totalCount?: boolean | number;
545
+ hasNextPage?: boolean | number;
546
+ nextCursor?: boolean | number;
547
+ __typename?: boolean | number;
548
+ __scalar?: boolean | number;
549
+ }
398
550
  interface QueryGenqlSelection {
399
551
  /** Get paginated moments for the brand associated with the partner token. */
400
552
  getPartnerMomentsForBrand?: (GetPublicMomentsResponseGenqlSelection & {
@@ -445,6 +597,20 @@ interface QueryGenqlSelection {
445
597
  slug: Scalars['String'];
446
598
  };
447
599
  });
600
+ /**
601
+ * Get public echoes for the brand associated with the partner token.
602
+ * If momentSlug is provided, returns moment-level echoes for that moment.
603
+ * If omitted, returns brand-level echoes.
604
+ */
605
+ getPartnerPublicEchoes?: (GetBrandEchoesForUserResponseGenqlSelection & {
606
+ __args?: {
607
+ /** If provided, returns moment-level echoes for this moment. If omitted, returns brand-level echoes. */
608
+ momentSlug?: (Scalars['String'] | null);
609
+ /** Cursor UID for pagination */
610
+ cursor?: (Scalars['String'] | null);
611
+ take?: (Scalars['Int'] | null);
612
+ };
613
+ });
448
614
  __typename?: boolean | number;
449
615
  __scalar?: boolean | number;
450
616
  }
@@ -532,6 +698,7 @@ type ITMPartnerClient = Client;
532
698
  * uid: true,
533
699
  * name: true,
534
700
  * startDate: true,
701
+ * coverImage: { url: true, mimeType: true },
535
702
  * venue: { name: true, city: true },
536
703
  * },
537
704
  * totalCount: true,
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  type Scalars = {
2
2
  DateTime: any;
3
+ JSON: any;
3
4
  ID: string;
4
5
  String: string;
5
6
  Boolean: boolean;
@@ -11,6 +12,8 @@ type MomentSortOrder = 'ASC' | 'DESC';
11
12
  type MomentType = 'DIGITAL' | 'IRL';
12
13
  type MomentCategory = 'ACTIVATION' | 'CONCERT' | 'DIGITAL' | 'DINING' | 'EDUCATION' | 'EXHIBITION' | 'FASHION' | 'FESTIVAL' | 'LAUNCH' | 'NIGHTLIFE' | 'OTHER' | 'PARTY' | 'PERFORMING_ARTS' | 'SCREENING' | 'SPORTS' | 'WELLNESS';
13
14
  type MomentSubcategory = 'ACOUSTIC_SET' | 'ADVANCE_SCREENING' | 'AFTER_PARTY' | 'AIRDROP' | 'ALBUM_DROP' | 'ALBUM_RELEASE_SHOW' | 'AMA' | 'ANNIVERSARY' | 'ARTIST_TALK' | 'ART_FAIR' | 'ART_FESTIVAL' | 'ATHLETE_APPEARANCE' | 'AWARDS' | 'BAR_TAKEOVER' | 'BATTLE' | 'BEER_AND_WINE_FESTIVAL' | 'BIENNALE' | 'BIRTHDAY' | 'BLOCK_PARTY' | 'BRAND_EXPERIENCE' | 'BRAND_REVEAL' | 'BREATHWORK' | 'BRUNCH_EVENT' | 'BURLESQUE' | 'CACAO_CEREMONY' | 'CARNIVAL' | 'CELEBRATION' | 'CHAMPIONSHIP' | 'CHEF_DINNER' | 'CHOIR_OR_ENSEMBLE' | 'CLUB_NIGHT' | 'CLUB_SET' | 'COLD_PLUNGE' | 'COLLABORATION_REVEAL' | 'COLLECTION_DROP' | 'COMEDY_FESTIVAL' | 'COMEDY_NIGHT' | 'COMEDY_SHOW' | 'COMMUNITY_MEETUP' | 'CONFERENCE' | 'COOKING_CLASS' | 'CULTURAL_FESTIVAL' | 'DANCE_PERFORMANCE' | 'DAYCLUB' | 'DIRECTORS_CUT' | 'DISCORD_EVENT' | 'DOCUMENTARY' | 'DRAG_SHOW' | 'ECSTATIC_DANCE' | 'ESPORTS' | 'EXHIBITION_GAME' | 'EXTREME_SPORTS' | 'FAN_EXPERIENCE' | 'FAN_FEST' | 'FASHION_FESTIVAL' | 'FASHION_PANEL' | 'FASHION_WEEK' | 'FIGHT_NIGHT' | 'FILM_FESTIVAL' | 'FILM_PREMIERE' | 'FINISSAGE' | 'FIRESIDE_CHAT' | 'FITNESS_CLASS' | 'FITTING_EVENT' | 'FOOD_FESTIVAL' | 'FOOD_PAIRING' | 'GALLERY_OPENING' | 'GAME_DAY' | 'GIVEAWAY' | 'GROUP_EXHIBITION' | 'GUERRILLA' | 'HACKATHON' | 'HEADLINER_SHOW' | 'HOLIDAY_PARTY' | 'HYBRID_EVENT' | 'IMMERSIVE_EXPERIENCE' | 'IMPROV_SHOW' | 'INFLUENCER_EVENT' | 'INSTALLATION' | 'INTERACTIVE_INSTALLATION' | 'JAZZ_NIGHT' | 'JAZZ_SESSION' | 'KARAOKE_NIGHT' | 'KEYNOTE' | 'LATE_NIGHT_SET' | 'LISTENING_PARTY' | 'LIVESTREAM' | 'LOOKBOOK_SHOOT' | 'MASQUERADE' | 'MASTERCLASS' | 'MEDITATION' | 'MEET_AND_GREET' | 'MEMBERS_ONLY' | 'MOBILE_TOUR' | 'MUSEUM_EVENT' | 'MUSICAL' | 'MUSIC_FESTIVAL' | 'MUSIC_VIDEO_PREMIERE' | 'NETWORKING_MIXER' | 'NFT_MINT' | 'ONLINE_DROP' | 'ONLINE_PREMIERE' | 'ONLINE_WATCH_PARTY' | 'OPEN_MIC' | 'OPERA' | 'ORCHESTRA' | 'OTHER' | 'OUTDOOR_CINEMA' | 'PANEL' | 'PERFORMANCE_ART' | 'PHOTO_ACTIVATION' | 'POOL_PARTY' | 'POP_UP_BOUTIQUE' | 'POP_UP_DINING' | 'POP_UP_GALLERY' | 'POP_UP_SHOP' | 'PRESENTATION' | 'PRESS_EVENT' | 'PREVIEW' | 'PRIDE_FESTIVAL' | 'PRIVATE_EVENT' | 'PRODUCT_LAUNCH' | 'RAVE' | 'RELEASE_PARTY' | 'RESIDENCY' | 'RESTAURANT_OPENING' | 'RETREAT' | 'RIVALRY_GAME' | 'ROOFTOP_PARTY' | 'ROUNDTABLE' | 'RUNWAY_SHOW' | 'RUN_CLUB' | 'RUN_OR_RACE' | 'SAMPLE_SALE' | 'SAMPLING' | 'SECRET_DINING' | 'SEMINAR' | 'SHORT_FILM' | 'SHOWCASE' | 'SHOWROOM' | 'SILENT_DISCO' | 'SOCIAL_CHALLENGE' | 'SOLO_EXHIBITION' | 'SOUND_BATH' | 'SPA_EXPERIENCE' | 'SPOKEN_WORD' | 'SPONSORSHIP' | 'SPORTS_CLINIC' | 'SPORTS_WATCH_PARTY' | 'STANDUP_COMEDY' | 'STREET_TEAM' | 'STUDIO_VISIT' | 'SUMMIT' | 'SUPPER_CLUB' | 'TAILGATE' | 'TASTING' | 'THEATER' | 'THEMED_NIGHT' | 'TOURNAMENT' | 'TOUR_STOP' | 'TRIBUTE_SHOW' | 'TRUNK_SHOW' | 'TWITTER_SPACE' | 'VARIETY_SHOW' | 'VENUE_OPENING' | 'VIRTUAL_CONCERT' | 'VIRTUAL_EVENT' | 'WAREHOUSE_PARTY' | 'WATCH_PARTY' | 'WEBINAR' | 'WELLNESS_FESTIVAL' | 'WELLNESS_WORKSHOP' | 'WORKSHOP' | 'YOGA_SESSION';
15
+ type EchoType = 'LINK' | 'POST' | 'IMAGE' | 'VIDEO' | 'GALLERY' | 'MERCH' | 'AUDIO' | 'QUESTION' | 'POLL' | 'UPLOAD' | 'TOKEN' | 'MOMENT' | 'FORM' | 'THIRD_PARTY';
16
+ type ThirdPartyEchoType = 'SPOTIFY' | 'INSTAGRAM' | 'TIKTOK';
14
17
  type PaymentStatus = 'PENDING' | 'SUCCEEDED' | 'FAILED';
15
18
  type TicketExtensionStatus = 'PENDING' | 'APPLIED' | 'CANCELLED' | 'EXPIRED' | 'FAILED' | 'REFUNDED';
16
19
  interface Currency {
@@ -35,6 +38,17 @@ interface Venue {
35
38
  updatedAt: Scalars['DateTime'];
36
39
  __typename: 'Venue';
37
40
  }
41
+ /**
42
+ * A slim projection of the cover image media asset.
43
+ * Only the publicly useful fields (URL and MIME type) are exposed.
44
+ */
45
+ interface MomentCoverImage {
46
+ /** CloudFront URL of the cover image. */
47
+ url: Scalars['String'];
48
+ /** MIME type of the image (e.g. image/jpeg, image/png, image/webp). */
49
+ mimeType: Scalars['String'];
50
+ __typename: 'MomentCoverImage';
51
+ }
38
52
  interface Moment {
39
53
  uid: Scalars['ID'];
40
54
  name: Scalars['String'];
@@ -52,6 +66,8 @@ interface Moment {
52
66
  timezone: Scalars['String'];
53
67
  minimumAge: Scalars['Int'];
54
68
  externalUrl: (Scalars['String'] | null);
69
+ /** Cover image for the moment. Null if no cover image is set. */
70
+ coverImage: (MomentCoverImage | null);
55
71
  venue: (Venue | null);
56
72
  ticketTiers: TicketTier[];
57
73
  createdAt: Scalars['DateTime'];
@@ -167,6 +183,55 @@ interface MomentCollection {
167
183
  updatedAt: Scalars['DateTime'];
168
184
  __typename: 'MomentCollection';
169
185
  }
186
+ interface Dimensions {
187
+ width: (Scalars['Int'] | null);
188
+ height: (Scalars['Int'] | null);
189
+ __typename: 'Dimensions';
190
+ }
191
+ /** A media asset associated with an echo (cover image, gallery item, audio, etc.). */
192
+ interface EchoMediaAsset {
193
+ uid: Scalars['ID'];
194
+ /** MIME type of the media (e.g. image/jpeg, video/mp4, audio/mpeg). */
195
+ mimeType: Scalars['String'];
196
+ /** S3 / CloudFront key for the asset. */
197
+ s3Key: Scalars['String'];
198
+ dimensions: Dimensions;
199
+ /** File size in bytes. */
200
+ size: Scalars['Int'];
201
+ /** Low-res placeholder URL for lazy loading. */
202
+ placeholderUrl: (Scalars['String'] | null);
203
+ /** Blurhash string for placeholder rendering. */
204
+ blurhash: (Scalars['String'] | null);
205
+ createdAt: Scalars['DateTime'];
206
+ updatedAt: Scalars['DateTime'];
207
+ __typename: 'EchoMediaAsset';
208
+ }
209
+ /** An echo is a content unit published by a brand — links, posts, images, videos, galleries, etc. */
210
+ interface Echo {
211
+ uid: Scalars['ID'];
212
+ type: EchoType;
213
+ name: Scalars['String'];
214
+ slug: (Scalars['String'] | null);
215
+ description: (Scalars['String'] | null);
216
+ /** Rich text body for POST-type echoes. */
217
+ postBody: (Scalars['String'] | null);
218
+ publishTime: Scalars['DateTime'];
219
+ externalLink: (Scalars['String'] | null);
220
+ termsLink: (Scalars['String'] | null);
221
+ isPublic: Scalars['Boolean'];
222
+ thirdPartyEchoType: (ThirdPartyEchoType | null);
223
+ /** Configuration for third-party embeds (Spotify, Instagram, TikTok). */
224
+ thirdPartyEchoConfig: (Scalars['JSON'] | null);
225
+ /** Primary media asset (cover image, single media). */
226
+ mediaAsset: (EchoMediaAsset | null);
227
+ /** Additional media assets (gallery items). */
228
+ echoMedia: (EchoMediaAsset[] | null);
229
+ /** The moment this echo is associated with, if any. */
230
+ moment: (Moment | null);
231
+ createdAt: Scalars['DateTime'];
232
+ updatedAt: Scalars['DateTime'];
233
+ __typename: 'Echo';
234
+ }
170
235
  interface GetPublicMomentsResponse {
171
236
  moments: Moment[];
172
237
  totalCount: Scalars['Int'];
@@ -188,6 +253,13 @@ interface GetPartnerCustomersResponse {
188
253
  nextCursor: (Scalars['String'] | null);
189
254
  __typename: 'GetPartnerCustomersResponse';
190
255
  }
256
+ interface GetBrandEchoesForUserResponse {
257
+ echoes: Echo[];
258
+ totalCount: Scalars['Int'];
259
+ hasNextPage: Scalars['Boolean'];
260
+ nextCursor: (Scalars['String'] | null);
261
+ __typename: 'GetBrandEchoesForUserResponse';
262
+ }
191
263
  interface Query {
192
264
  /** Get paginated moments for the brand associated with the partner token. */
193
265
  getPartnerMomentsForBrand: GetPublicMomentsResponse;
@@ -205,6 +277,12 @@ interface Query {
205
277
  * Returns the collection with its moments and links.
206
278
  */
207
279
  getPartnerMomentCollection: (MomentCollection | null);
280
+ /**
281
+ * Get public echoes for the brand associated with the partner token.
282
+ * If momentSlug is provided, returns moment-level echoes for that moment.
283
+ * If omitted, returns brand-level echoes.
284
+ */
285
+ getPartnerPublicEchoes: GetBrandEchoesForUserResponse;
208
286
  __typename: 'Query';
209
287
  }
210
288
  interface CurrencyGenqlSelection {
@@ -231,6 +309,18 @@ interface VenueGenqlSelection {
231
309
  __typename?: boolean | number;
232
310
  __scalar?: boolean | number;
233
311
  }
312
+ /**
313
+ * A slim projection of the cover image media asset.
314
+ * Only the publicly useful fields (URL and MIME type) are exposed.
315
+ */
316
+ interface MomentCoverImageGenqlSelection {
317
+ /** CloudFront URL of the cover image. */
318
+ url?: boolean | number;
319
+ /** MIME type of the image (e.g. image/jpeg, image/png, image/webp). */
320
+ mimeType?: boolean | number;
321
+ __typename?: boolean | number;
322
+ __scalar?: boolean | number;
323
+ }
234
324
  interface MomentGenqlSelection {
235
325
  uid?: boolean | number;
236
326
  name?: boolean | number;
@@ -248,6 +338,8 @@ interface MomentGenqlSelection {
248
338
  timezone?: boolean | number;
249
339
  minimumAge?: boolean | number;
250
340
  externalUrl?: boolean | number;
341
+ /** Cover image for the moment. Null if no cover image is set. */
342
+ coverImage?: MomentCoverImageGenqlSelection;
251
343
  venue?: VenueGenqlSelection;
252
344
  ticketTiers?: TicketTierGenqlSelection;
253
345
  createdAt?: boolean | number;
@@ -371,6 +463,58 @@ interface MomentCollectionGenqlSelection {
371
463
  __typename?: boolean | number;
372
464
  __scalar?: boolean | number;
373
465
  }
466
+ interface DimensionsGenqlSelection {
467
+ width?: boolean | number;
468
+ height?: boolean | number;
469
+ __typename?: boolean | number;
470
+ __scalar?: boolean | number;
471
+ }
472
+ /** A media asset associated with an echo (cover image, gallery item, audio, etc.). */
473
+ interface EchoMediaAssetGenqlSelection {
474
+ uid?: boolean | number;
475
+ /** MIME type of the media (e.g. image/jpeg, video/mp4, audio/mpeg). */
476
+ mimeType?: boolean | number;
477
+ /** S3 / CloudFront key for the asset. */
478
+ s3Key?: boolean | number;
479
+ dimensions?: DimensionsGenqlSelection;
480
+ /** File size in bytes. */
481
+ size?: boolean | number;
482
+ /** Low-res placeholder URL for lazy loading. */
483
+ placeholderUrl?: boolean | number;
484
+ /** Blurhash string for placeholder rendering. */
485
+ blurhash?: boolean | number;
486
+ createdAt?: boolean | number;
487
+ updatedAt?: boolean | number;
488
+ __typename?: boolean | number;
489
+ __scalar?: boolean | number;
490
+ }
491
+ /** An echo is a content unit published by a brand — links, posts, images, videos, galleries, etc. */
492
+ interface EchoGenqlSelection {
493
+ uid?: boolean | number;
494
+ type?: boolean | number;
495
+ name?: boolean | number;
496
+ slug?: boolean | number;
497
+ description?: boolean | number;
498
+ /** Rich text body for POST-type echoes. */
499
+ postBody?: boolean | number;
500
+ publishTime?: boolean | number;
501
+ externalLink?: boolean | number;
502
+ termsLink?: boolean | number;
503
+ isPublic?: boolean | number;
504
+ thirdPartyEchoType?: boolean | number;
505
+ /** Configuration for third-party embeds (Spotify, Instagram, TikTok). */
506
+ thirdPartyEchoConfig?: boolean | number;
507
+ /** Primary media asset (cover image, single media). */
508
+ mediaAsset?: EchoMediaAssetGenqlSelection;
509
+ /** Additional media assets (gallery items). */
510
+ echoMedia?: EchoMediaAssetGenqlSelection;
511
+ /** The moment this echo is associated with, if any. */
512
+ moment?: MomentGenqlSelection;
513
+ createdAt?: boolean | number;
514
+ updatedAt?: boolean | number;
515
+ __typename?: boolean | number;
516
+ __scalar?: boolean | number;
517
+ }
374
518
  interface GetPublicMomentsResponseGenqlSelection {
375
519
  moments?: MomentGenqlSelection;
376
520
  totalCount?: boolean | number;
@@ -395,6 +539,14 @@ interface GetPartnerCustomersResponseGenqlSelection {
395
539
  __typename?: boolean | number;
396
540
  __scalar?: boolean | number;
397
541
  }
542
+ interface GetBrandEchoesForUserResponseGenqlSelection {
543
+ echoes?: EchoGenqlSelection;
544
+ totalCount?: boolean | number;
545
+ hasNextPage?: boolean | number;
546
+ nextCursor?: boolean | number;
547
+ __typename?: boolean | number;
548
+ __scalar?: boolean | number;
549
+ }
398
550
  interface QueryGenqlSelection {
399
551
  /** Get paginated moments for the brand associated with the partner token. */
400
552
  getPartnerMomentsForBrand?: (GetPublicMomentsResponseGenqlSelection & {
@@ -445,6 +597,20 @@ interface QueryGenqlSelection {
445
597
  slug: Scalars['String'];
446
598
  };
447
599
  });
600
+ /**
601
+ * Get public echoes for the brand associated with the partner token.
602
+ * If momentSlug is provided, returns moment-level echoes for that moment.
603
+ * If omitted, returns brand-level echoes.
604
+ */
605
+ getPartnerPublicEchoes?: (GetBrandEchoesForUserResponseGenqlSelection & {
606
+ __args?: {
607
+ /** If provided, returns moment-level echoes for this moment. If omitted, returns brand-level echoes. */
608
+ momentSlug?: (Scalars['String'] | null);
609
+ /** Cursor UID for pagination */
610
+ cursor?: (Scalars['String'] | null);
611
+ take?: (Scalars['Int'] | null);
612
+ };
613
+ });
448
614
  __typename?: boolean | number;
449
615
  __scalar?: boolean | number;
450
616
  }
@@ -532,6 +698,7 @@ type ITMPartnerClient = Client;
532
698
  * uid: true,
533
699
  * name: true,
534
700
  * startDate: true,
701
+ * coverImage: { url: true, mimeType: true },
535
702
  * venue: { name: true, city: true },
536
703
  * },
537
704
  * totalCount: true,