@itm-studio/partner-sdk 0.1.5 → 0.1.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.
package/README.md CHANGED
@@ -223,6 +223,74 @@ const { getPartnerMomentCollection } = await itm.query({
223
223
 
224
224
  > **Note:** `getPartnerMomentCollection` returns `null` if no collection matches the given slug.
225
225
 
226
+ ### `getPartnerPublicEchoes`
227
+
228
+ Get public echoes (content) for your brand. Echoes are content units — links, posts, images, videos, galleries, audio, polls, forms, and third-party embeds (Spotify, Instagram, TikTok).
229
+
230
+ - If `momentSlug` is provided, returns **moment-level** echoes for that moment.
231
+ - If `momentSlug` is omitted, returns **brand-level** echoes.
232
+
233
+ ```typescript
234
+ const { getPartnerPublicEchoes } = await itm.query({
235
+ getPartnerPublicEchoes: {
236
+ __args: { take: 20 },
237
+ echoes: {
238
+ uid: true,
239
+ type: true,
240
+ name: true,
241
+ slug: true,
242
+ description: true,
243
+ publishTime: true,
244
+ externalLink: true,
245
+ mediaAsset: {
246
+ uid: true,
247
+ mimeType: true,
248
+ s3Key: true,
249
+ dimensions: { width: true, height: true },
250
+ placeholderUrl: true,
251
+ blurhash: true,
252
+ },
253
+ echoMedia: {
254
+ uid: true,
255
+ mimeType: true,
256
+ s3Key: true,
257
+ dimensions: { width: true, height: true },
258
+ },
259
+ moment: { uid: true, name: true, slug: true },
260
+ },
261
+ totalCount: true,
262
+ hasNextPage: true,
263
+ nextCursor: true,
264
+ },
265
+ });
266
+ ```
267
+
268
+ Filter by moment to get echoes scoped to a specific event:
269
+
270
+ ```typescript
271
+ const { getPartnerPublicEchoes } = await itm.query({
272
+ getPartnerPublicEchoes: {
273
+ __args: { momentSlug: 'my-event-slug', take: 10 },
274
+ echoes: {
275
+ uid: true,
276
+ type: true,
277
+ name: true,
278
+ postBody: true,
279
+ externalLink: true,
280
+ thirdPartyEchoType: true,
281
+ thirdPartyEchoConfig: true,
282
+ },
283
+ totalCount: true,
284
+ hasNextPage: true,
285
+ nextCursor: true,
286
+ },
287
+ });
288
+ ```
289
+
290
+ **Echo types:** `LINK` | `POST` | `IMAGE` | `VIDEO` | `GALLERY` | `MERCH` | `AUDIO` | `QUESTION` | `POLL` | `UPLOAD` | `TOKEN` | `MOMENT` | `FORM` | `THIRD_PARTY`
291
+
292
+ **Third-party embed types:** `SPOTIFY` | `INSTAGRAM` | `TIKTOK` — use `thirdPartyEchoType` and `thirdPartyEchoConfig` for embed details.
293
+
226
294
  ## Pagination
227
295
 
228
296
  All list endpoints use cursor-based pagination. The default page size is **50** items if `take` is not specified.
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 {
@@ -180,6 +183,55 @@ interface MomentCollection {
180
183
  updatedAt: Scalars['DateTime'];
181
184
  __typename: 'MomentCollection';
182
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
+ }
183
235
  interface GetPublicMomentsResponse {
184
236
  moments: Moment[];
185
237
  totalCount: Scalars['Int'];
@@ -201,6 +253,13 @@ interface GetPartnerCustomersResponse {
201
253
  nextCursor: (Scalars['String'] | null);
202
254
  __typename: 'GetPartnerCustomersResponse';
203
255
  }
256
+ interface GetBrandEchoesForUserResponse {
257
+ echoes: Echo[];
258
+ totalCount: Scalars['Int'];
259
+ hasNextPage: Scalars['Boolean'];
260
+ nextCursor: (Scalars['String'] | null);
261
+ __typename: 'GetBrandEchoesForUserResponse';
262
+ }
204
263
  interface Query {
205
264
  /** Get paginated moments for the brand associated with the partner token. */
206
265
  getPartnerMomentsForBrand: GetPublicMomentsResponse;
@@ -218,6 +277,12 @@ interface Query {
218
277
  * Returns the collection with its moments and links.
219
278
  */
220
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;
221
286
  __typename: 'Query';
222
287
  }
223
288
  interface CurrencyGenqlSelection {
@@ -398,6 +463,58 @@ interface MomentCollectionGenqlSelection {
398
463
  __typename?: boolean | number;
399
464
  __scalar?: boolean | number;
400
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
+ }
401
518
  interface GetPublicMomentsResponseGenqlSelection {
402
519
  moments?: MomentGenqlSelection;
403
520
  totalCount?: boolean | number;
@@ -422,6 +539,14 @@ interface GetPartnerCustomersResponseGenqlSelection {
422
539
  __typename?: boolean | number;
423
540
  __scalar?: boolean | number;
424
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
+ }
425
550
  interface QueryGenqlSelection {
426
551
  /** Get paginated moments for the brand associated with the partner token. */
427
552
  getPartnerMomentsForBrand?: (GetPublicMomentsResponseGenqlSelection & {
@@ -472,6 +597,20 @@ interface QueryGenqlSelection {
472
597
  slug: Scalars['String'];
473
598
  };
474
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
+ });
475
614
  __typename?: boolean | number;
476
615
  __scalar?: boolean | number;
477
616
  }
@@ -571,4 +710,4 @@ type ITMPartnerClient = Client;
571
710
  */
572
711
  declare function createITMPartnerClient(config: ITMPartnerClientConfig): ITMPartnerClient;
573
712
 
574
- export { type Currency, type GetPartnerCustomersResponse, type GetPublicMomentsResponse, type GetTicketsResponse, type ITMPartnerClient, type ITMPartnerClientConfig, type MerchPurchase, type Moment, type MomentCategory, type MomentCollection, type MomentCollectionLink, type MomentDiscountCodeUsage, type MomentSortOrder, type MomentStatus, type MomentSubcategory, type MomentType, type PartnerCustomer, type Payment, type PaymentStatus, type Query, type Ticket, type TicketExtension, type TicketExtensionStatus, type TicketTier, type User, type Venue, createITMPartnerClient, everything, generateQueryOp };
713
+ export { type Currency, type Dimensions, type Echo, type EchoMediaAsset, type EchoType, type GetBrandEchoesForUserResponse, type GetPartnerCustomersResponse, type GetPublicMomentsResponse, type GetTicketsResponse, type ITMPartnerClient, type ITMPartnerClientConfig, type MerchPurchase, type Moment, type MomentCategory, type MomentCollection, type MomentCollectionLink, type MomentDiscountCodeUsage, type MomentSortOrder, type MomentStatus, type MomentSubcategory, type MomentType, type PartnerCustomer, type Payment, type PaymentStatus, type Query, type ThirdPartyEchoType, type Ticket, type TicketExtension, type TicketExtensionStatus, type TicketTier, type User, type Venue, createITMPartnerClient, everything, generateQueryOp };
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 {
@@ -180,6 +183,55 @@ interface MomentCollection {
180
183
  updatedAt: Scalars['DateTime'];
181
184
  __typename: 'MomentCollection';
182
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
+ }
183
235
  interface GetPublicMomentsResponse {
184
236
  moments: Moment[];
185
237
  totalCount: Scalars['Int'];
@@ -201,6 +253,13 @@ interface GetPartnerCustomersResponse {
201
253
  nextCursor: (Scalars['String'] | null);
202
254
  __typename: 'GetPartnerCustomersResponse';
203
255
  }
256
+ interface GetBrandEchoesForUserResponse {
257
+ echoes: Echo[];
258
+ totalCount: Scalars['Int'];
259
+ hasNextPage: Scalars['Boolean'];
260
+ nextCursor: (Scalars['String'] | null);
261
+ __typename: 'GetBrandEchoesForUserResponse';
262
+ }
204
263
  interface Query {
205
264
  /** Get paginated moments for the brand associated with the partner token. */
206
265
  getPartnerMomentsForBrand: GetPublicMomentsResponse;
@@ -218,6 +277,12 @@ interface Query {
218
277
  * Returns the collection with its moments and links.
219
278
  */
220
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;
221
286
  __typename: 'Query';
222
287
  }
223
288
  interface CurrencyGenqlSelection {
@@ -398,6 +463,58 @@ interface MomentCollectionGenqlSelection {
398
463
  __typename?: boolean | number;
399
464
  __scalar?: boolean | number;
400
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
+ }
401
518
  interface GetPublicMomentsResponseGenqlSelection {
402
519
  moments?: MomentGenqlSelection;
403
520
  totalCount?: boolean | number;
@@ -422,6 +539,14 @@ interface GetPartnerCustomersResponseGenqlSelection {
422
539
  __typename?: boolean | number;
423
540
  __scalar?: boolean | number;
424
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
+ }
425
550
  interface QueryGenqlSelection {
426
551
  /** Get paginated moments for the brand associated with the partner token. */
427
552
  getPartnerMomentsForBrand?: (GetPublicMomentsResponseGenqlSelection & {
@@ -472,6 +597,20 @@ interface QueryGenqlSelection {
472
597
  slug: Scalars['String'];
473
598
  };
474
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
+ });
475
614
  __typename?: boolean | number;
476
615
  __scalar?: boolean | number;
477
616
  }
@@ -571,4 +710,4 @@ type ITMPartnerClient = Client;
571
710
  */
572
711
  declare function createITMPartnerClient(config: ITMPartnerClientConfig): ITMPartnerClient;
573
712
 
574
- export { type Currency, type GetPartnerCustomersResponse, type GetPublicMomentsResponse, type GetTicketsResponse, type ITMPartnerClient, type ITMPartnerClientConfig, type MerchPurchase, type Moment, type MomentCategory, type MomentCollection, type MomentCollectionLink, type MomentDiscountCodeUsage, type MomentSortOrder, type MomentStatus, type MomentSubcategory, type MomentType, type PartnerCustomer, type Payment, type PaymentStatus, type Query, type Ticket, type TicketExtension, type TicketExtensionStatus, type TicketTier, type User, type Venue, createITMPartnerClient, everything, generateQueryOp };
713
+ export { type Currency, type Dimensions, type Echo, type EchoMediaAsset, type EchoType, type GetBrandEchoesForUserResponse, type GetPartnerCustomersResponse, type GetPublicMomentsResponse, type GetTicketsResponse, type ITMPartnerClient, type ITMPartnerClientConfig, type MerchPurchase, type Moment, type MomentCategory, type MomentCollection, type MomentCollectionLink, type MomentDiscountCodeUsage, type MomentSortOrder, type MomentStatus, type MomentSubcategory, type MomentType, type PartnerCustomer, type Payment, type PaymentStatus, type Query, type ThirdPartyEchoType, type Ticket, type TicketExtension, type TicketExtensionStatus, type TicketTier, type User, type Venue, createITMPartnerClient, everything, generateQueryOp };