@itm-studio/partner-sdk 0.2.3 → 0.2.5
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 +211 -2
- package/dist/index.d.mts +126 -1
- package/dist/index.d.ts +126 -1
- package/dist/index.js +422 -280
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +422 -280
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/schema/partner.graphql +89 -0
package/README.md
CHANGED
|
@@ -35,6 +35,7 @@ const { getPartnerMomentsForBrand } = await itm.query({
|
|
|
35
35
|
status: true,
|
|
36
36
|
timezone: true,
|
|
37
37
|
externalUrl: true,
|
|
38
|
+
lineupDisplayLabel: true,
|
|
38
39
|
coverImage: {
|
|
39
40
|
url: true,
|
|
40
41
|
mimeType: true,
|
|
@@ -126,6 +127,7 @@ const { getPartnerMoment } = await itm.query({
|
|
|
126
127
|
endDate: true,
|
|
127
128
|
timezone: true,
|
|
128
129
|
externalUrl: true,
|
|
130
|
+
lineupDisplayLabel: true,
|
|
129
131
|
coverImage: {
|
|
130
132
|
url: true,
|
|
131
133
|
mimeType: true,
|
|
@@ -139,6 +141,73 @@ const { getPartnerMoment } = await itm.query({
|
|
|
139
141
|
});
|
|
140
142
|
```
|
|
141
143
|
|
|
144
|
+
### `getPublicMomentLineups`
|
|
145
|
+
|
|
146
|
+
Get approved public lineup entries for a moment. Use `getPartnerMoment` first if you only have the moment slug; this query takes the moment `uid`.
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
const { getPartnerMoment } = await itm.query({
|
|
150
|
+
getPartnerMoment: {
|
|
151
|
+
__args: { slug: 'my-event-slug' },
|
|
152
|
+
uid: true,
|
|
153
|
+
lineupDisplayLabel: true,
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
const momentUid = getPartnerMoment?.uid;
|
|
158
|
+
|
|
159
|
+
if (momentUid) {
|
|
160
|
+
const { getPublicMomentLineups } = await itm.query({
|
|
161
|
+
getPublicMomentLineups: {
|
|
162
|
+
__args: {
|
|
163
|
+
momentUid,
|
|
164
|
+
take: 50,
|
|
165
|
+
lineupType: 'DJ', // optional: LINEUP | CO_HOST | PROMOTER | DJ | SPEAKER | VENDOR
|
|
166
|
+
},
|
|
167
|
+
lineups: {
|
|
168
|
+
uid: true,
|
|
169
|
+
name: true,
|
|
170
|
+
status: true,
|
|
171
|
+
lineupType: true,
|
|
172
|
+
sortOrder: true,
|
|
173
|
+
url: true,
|
|
174
|
+
image: {
|
|
175
|
+
url: true,
|
|
176
|
+
mimeType: true,
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
totalCount: true,
|
|
180
|
+
hasNextPage: true,
|
|
181
|
+
nextCursor: true,
|
|
182
|
+
},
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
console.log(getPartnerMoment?.lineupDisplayLabel, getPublicMomentLineups.lineups);
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Only approved lineup entries are returned. `momentUid`, `cursor`, `take`, and `lineupType` map directly to the backend query args; use `nextCursor` as `cursor` while `hasNextPage` is true. The public lineup query is throttled to 30 requests per minute, so cache or batch page loads if you render it in high-traffic public pages.
|
|
190
|
+
|
|
191
|
+
`lineupDisplayLabel` is available on `Moment` so your UI can label the section as `LINEUP`, `CO_HOSTS`, `DJS`, `PROMOTERS`, `SPEAKERS`, or `VENDORS`.
|
|
192
|
+
|
|
193
|
+
### `getMomentLineupByToken`
|
|
194
|
+
|
|
195
|
+
Get public lineup invitation details by response token. This is useful if you build a custom artist or collaborator response page.
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
const { getMomentLineupByToken } = await itm.query({
|
|
199
|
+
getMomentLineupByToken: {
|
|
200
|
+
__args: { token: 'lineup-response-token' },
|
|
201
|
+
artistName: true,
|
|
202
|
+
momentName: true,
|
|
203
|
+
brandName: true,
|
|
204
|
+
status: true,
|
|
205
|
+
lineupType: true,
|
|
206
|
+
alreadyResponded: true,
|
|
207
|
+
},
|
|
208
|
+
});
|
|
209
|
+
```
|
|
210
|
+
|
|
142
211
|
### `getMomentStats`
|
|
143
212
|
|
|
144
213
|
Get cached partner-facing counts for a moment owned by the authenticated partner's brand.
|
|
@@ -341,7 +410,28 @@ const { getPartnerPublicEchoes } = await itm.query({
|
|
|
341
410
|
|
|
342
411
|
## Available Mutations
|
|
343
412
|
|
|
344
|
-
The SDK supports write operations via `client.mutation()`.
|
|
413
|
+
The SDK supports write operations via `client.mutation()`. Partner mutations use the same authentication — your brand is determined from the partner token.
|
|
414
|
+
|
|
415
|
+
### `respondToMomentLineup`
|
|
416
|
+
|
|
417
|
+
Submit a public lineup invitation response by token.
|
|
418
|
+
|
|
419
|
+
```typescript
|
|
420
|
+
const { respondToMomentLineup } = await itm.mutation({
|
|
421
|
+
respondToMomentLineup: {
|
|
422
|
+
__args: {
|
|
423
|
+
input: {
|
|
424
|
+
token: 'lineup-response-token',
|
|
425
|
+
status: 'APPROVED', // APPROVED or REJECTED
|
|
426
|
+
},
|
|
427
|
+
},
|
|
428
|
+
status: true,
|
|
429
|
+
success: true,
|
|
430
|
+
},
|
|
431
|
+
});
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
Admin-only lineup creation and ordering are not part of the partner-token SDK surface. Use backstage for managing lineup entries.
|
|
345
435
|
|
|
346
436
|
## Partner Brand Subscription Guide
|
|
347
437
|
|
|
@@ -369,7 +459,7 @@ Use OTP subscribe when you want the user to confirm the phone number before the
|
|
|
369
459
|
- `listNames`: optional brand list names. Missing lists are created automatically and the subscribed user is attached to them.
|
|
370
460
|
- `compliance`: optional metadata about how consent was collected. This is the right place for fields like `pageUrl`, `submissionMethod`, `submittedAt`, `timezone`, and geo/browser/device details.
|
|
371
461
|
- `compliance.ipAddress` and `compliance.userAgent`: optional. If you omit them and forward `x-forwarded-for` and `user-agent`, the backend backfills those values for you.
|
|
372
|
-
- `postSubscriptionMessage`: optional welcome message delivered automatically after the subscription becomes active. See [Post-Subscription Welcome Message](#post-subscription-welcome-message).
|
|
462
|
+
- `postSubscriptionMessage`: optional welcome message delivered automatically after the subscription becomes active. The SDK exposes this as `PostSubscriptionMessageInput` and accepts it on `CreatePartnerBrandSubscriptionInput`. See [Post-Subscription Welcome Message](#post-subscription-welcome-message).
|
|
373
463
|
|
|
374
464
|
### OTP Flow Step By Step
|
|
375
465
|
|
|
@@ -388,6 +478,37 @@ If the verification token is invalid or expired, verification fails and the subs
|
|
|
388
478
|
|
|
389
479
|
**Channels are independent.** Provide any combination of `sms`, `email`, and `push`. Channels you omit are skipped.
|
|
390
480
|
|
|
481
|
+
The field is part of the generated SDK input types:
|
|
482
|
+
|
|
483
|
+
```typescript
|
|
484
|
+
import type {
|
|
485
|
+
CreatePartnerBrandSubscriptionInput,
|
|
486
|
+
PostSubscriptionMessageInput,
|
|
487
|
+
} from '@itm-studio/partner-sdk';
|
|
488
|
+
|
|
489
|
+
const welcomeMessage: PostSubscriptionMessageInput = {
|
|
490
|
+
sms: {
|
|
491
|
+
body: 'Welcome to Acme. Reply STOP to opt out.',
|
|
492
|
+
mediaUrls: ['https://cdn.example.com/welcome-banner.png'],
|
|
493
|
+
},
|
|
494
|
+
email: {
|
|
495
|
+
subject: 'Welcome to Acme',
|
|
496
|
+
body: 'Thanks for subscribing. Your first update is on the way.',
|
|
497
|
+
},
|
|
498
|
+
push: {
|
|
499
|
+
title: 'Welcome to Acme',
|
|
500
|
+
body: 'Tap to see what is dropping this week.',
|
|
501
|
+
},
|
|
502
|
+
};
|
|
503
|
+
|
|
504
|
+
const input: CreatePartnerBrandSubscriptionInput = {
|
|
505
|
+
phoneNumber: '+14155550111',
|
|
506
|
+
fullName: 'Jane Doe',
|
|
507
|
+
email: 'jane@example.com',
|
|
508
|
+
postSubscriptionMessage: welcomeMessage,
|
|
509
|
+
};
|
|
510
|
+
```
|
|
511
|
+
|
|
391
512
|
```typescript
|
|
392
513
|
await itm.mutation({
|
|
393
514
|
createPartnerBrandSubscription: {
|
|
@@ -418,6 +539,15 @@ await itm.mutation({
|
|
|
418
539
|
});
|
|
419
540
|
```
|
|
420
541
|
|
|
542
|
+
**Direct vs OTP timing:**
|
|
543
|
+
|
|
544
|
+
| Mode | Where to pass `postSubscriptionMessage` | When delivery starts |
|
|
545
|
+
|---|---|---|
|
|
546
|
+
| Direct subscribe | Initial `createPartnerBrandSubscription` call | After the subscription is created or reactivated |
|
|
547
|
+
| OTP subscribe | Initial `createPartnerBrandSubscription` call with `requireOtpVerification: true` | After `verifyPartnerBrandSubscription` succeeds |
|
|
548
|
+
|
|
549
|
+
Do not pass `postSubscriptionMessage` to `verifyPartnerBrandSubscription`; that mutation only accepts `verificationToken` and `code`.
|
|
550
|
+
|
|
421
551
|
**Channel inputs:**
|
|
422
552
|
|
|
423
553
|
| Channel | Required | Optional | Notes |
|
|
@@ -432,12 +562,76 @@ await itm.mutation({
|
|
|
432
562
|
- The message is delivered when the subscription is **newly created or reactivated** — re-subscribing an already-active user is a no-op.
|
|
433
563
|
- In OTP mode, the message fires **after** `verifyPartnerBrandSubscription` succeeds, not when the OTP is requested.
|
|
434
564
|
- Channel failures are isolated: if email cannot be sent because the user has no primary email, SMS and push are still attempted.
|
|
565
|
+
- Delivery is asynchronous. A successful mutation means the subscription request was accepted; it does not mean each SMS, email, or push provider has already completed delivery.
|
|
435
566
|
|
|
436
567
|
**Recommended usage:**
|
|
437
568
|
|
|
438
569
|
- Pass `postSubscriptionMessage` on the **first** `createPartnerBrandSubscription` call. In OTP mode, the message is buffered with the pending session and delivered after `verifyPartnerBrandSubscription`. You do **not** repeat it on the verify call.
|
|
439
570
|
- For a marketing-style first SMS, prefer including a clear opt-out instruction (e.g. `Reply STOP to opt out`) alongside any branded copy.
|
|
440
571
|
- For the email channel, your brand must have an email alias configured on the backend. Confirm this in backstage before relying on the email channel in production.
|
|
572
|
+
- Keep message content deterministic for a signup attempt. Because delivery is idempotent per active subscription period, retrying the same create call is safe; changing the message between retries should not be used as an update mechanism.
|
|
573
|
+
|
|
574
|
+
**Minimal SMS-only example:**
|
|
575
|
+
|
|
576
|
+
```typescript
|
|
577
|
+
await itm.mutation({
|
|
578
|
+
createPartnerBrandSubscription: {
|
|
579
|
+
__args: {
|
|
580
|
+
input: {
|
|
581
|
+
phoneNumber: '+14155550111',
|
|
582
|
+
postSubscriptionMessage: {
|
|
583
|
+
sms: {
|
|
584
|
+
body: 'You are subscribed to Acme updates. Reply STOP to opt out.',
|
|
585
|
+
},
|
|
586
|
+
},
|
|
587
|
+
},
|
|
588
|
+
},
|
|
589
|
+
verificationRequired: true,
|
|
590
|
+
subscription: { uid: true },
|
|
591
|
+
},
|
|
592
|
+
});
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
**OTP example with buffered welcome message:**
|
|
596
|
+
|
|
597
|
+
```typescript
|
|
598
|
+
const { createPartnerBrandSubscription } = await itm.mutation({
|
|
599
|
+
createPartnerBrandSubscription: {
|
|
600
|
+
__args: {
|
|
601
|
+
input: {
|
|
602
|
+
phoneNumber: '+14155550112',
|
|
603
|
+
requireOtpVerification: true,
|
|
604
|
+
email: 'jane@example.com',
|
|
605
|
+
postSubscriptionMessage: {
|
|
606
|
+
sms: {
|
|
607
|
+
body: 'Thanks for joining Acme. Reply STOP to opt out.',
|
|
608
|
+
},
|
|
609
|
+
email: {
|
|
610
|
+
subject: 'You are subscribed',
|
|
611
|
+
body: 'Your subscription is confirmed. We will send updates here.',
|
|
612
|
+
},
|
|
613
|
+
},
|
|
614
|
+
},
|
|
615
|
+
},
|
|
616
|
+
verificationRequired: true,
|
|
617
|
+
verificationToken: true,
|
|
618
|
+
},
|
|
619
|
+
});
|
|
620
|
+
|
|
621
|
+
// Later, after collecting the SMS code from the user:
|
|
622
|
+
await itm.mutation({
|
|
623
|
+
verifyPartnerBrandSubscription: {
|
|
624
|
+
__args: {
|
|
625
|
+
input: {
|
|
626
|
+
verificationToken: createPartnerBrandSubscription.verificationToken!,
|
|
627
|
+
code: '123456',
|
|
628
|
+
},
|
|
629
|
+
},
|
|
630
|
+
uid: true,
|
|
631
|
+
isActive: true,
|
|
632
|
+
},
|
|
633
|
+
});
|
|
634
|
+
```
|
|
441
635
|
|
|
442
636
|
### `createPartnerBrandSubscription`
|
|
443
637
|
|
|
@@ -446,6 +640,7 @@ Subscribe a phone number to the authenticated partner brand.
|
|
|
446
640
|
- Omit `requireOtpVerification` or set it to `false` to create the subscription immediately.
|
|
447
641
|
- Set `requireOtpVerification: true` to start the OTP flow. The backend sends the code to the provided phone number and returns a `verificationToken`.
|
|
448
642
|
- If you pass `fullName`, include both first and last name.
|
|
643
|
+
- Pass `postSubscriptionMessage` here if you want SMS, email, or push sent after activation. This field is accepted only on the create mutation, including OTP starts.
|
|
449
644
|
|
|
450
645
|
```typescript
|
|
451
646
|
const { createPartnerBrandSubscription } = await itm.mutation({
|
|
@@ -460,6 +655,11 @@ const { createPartnerBrandSubscription } = await itm.mutation({
|
|
|
460
655
|
pageUrl: 'https://example.com/signup',
|
|
461
656
|
submissionMethod: 'partner_sdk',
|
|
462
657
|
},
|
|
658
|
+
postSubscriptionMessage: {
|
|
659
|
+
sms: {
|
|
660
|
+
body: 'Welcome to Acme updates. Reply STOP to opt out.',
|
|
661
|
+
},
|
|
662
|
+
},
|
|
463
663
|
},
|
|
464
664
|
},
|
|
465
665
|
verificationRequired: true,
|
|
@@ -580,6 +780,15 @@ export async function startOtpSubscription(request: Request) {
|
|
|
580
780
|
submittedAt: new Date().toISOString(),
|
|
581
781
|
timezone: 'America/New_York',
|
|
582
782
|
},
|
|
783
|
+
postSubscriptionMessage: {
|
|
784
|
+
sms: {
|
|
785
|
+
body: 'You are subscribed. Reply STOP to opt out.',
|
|
786
|
+
},
|
|
787
|
+
email: {
|
|
788
|
+
subject: 'Welcome',
|
|
789
|
+
body: 'Your subscription is confirmed.',
|
|
790
|
+
},
|
|
791
|
+
},
|
|
583
792
|
},
|
|
584
793
|
},
|
|
585
794
|
verificationRequired: true,
|
package/dist/index.d.mts
CHANGED
|
@@ -12,6 +12,10 @@ type MomentSortOrder = 'ASC' | 'DESC';
|
|
|
12
12
|
type MomentType = 'DIGITAL' | 'IRL';
|
|
13
13
|
type MomentCategory = 'ACTIVATION' | 'CONCERT' | 'DIGITAL' | 'DINING' | 'EDUCATION' | 'EXHIBITION' | 'FASHION' | 'FESTIVAL' | 'LAUNCH' | 'NIGHTLIFE' | 'OTHER' | 'PARTY' | 'PERFORMING_ARTS' | 'SCREENING' | 'SPORTS' | 'WELLNESS';
|
|
14
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 MomentLineupStatus = 'APPROVED' | 'PENDING' | 'REJECTED';
|
|
16
|
+
type MomentLineupType = 'CO_HOST' | 'DJ' | 'LINEUP' | 'PROMOTER' | 'SPEAKER' | 'VENDOR';
|
|
17
|
+
/** Display label for the lineup section on public event pages. */
|
|
18
|
+
type MomentLineupDisplayLabel = 'CO_HOSTS' | 'DJS' | 'LINEUP' | 'PROMOTERS' | 'SPEAKERS' | 'VENDORS';
|
|
15
19
|
type EchoType = 'LINK' | 'POST' | 'IMAGE' | 'VIDEO' | 'GALLERY' | 'MERCH' | 'AUDIO' | 'QUESTION' | 'POLL' | 'UPLOAD' | 'TOKEN' | 'MOMENT' | 'FORM' | 'THIRD_PARTY';
|
|
16
20
|
type ThirdPartyEchoType = 'SPOTIFY' | 'INSTAGRAM' | 'TIKTOK';
|
|
17
21
|
type PaymentStatus = 'PENDING' | 'SUCCEEDED' | 'FAILED';
|
|
@@ -66,6 +70,8 @@ interface Moment {
|
|
|
66
70
|
timezone: Scalars['String'];
|
|
67
71
|
minimumAge: Scalars['Int'];
|
|
68
72
|
externalUrl: (Scalars['String'] | null);
|
|
73
|
+
/** Display label to use when rendering the public lineup section. */
|
|
74
|
+
lineupDisplayLabel: MomentLineupDisplayLabel;
|
|
69
75
|
/** Cover image for the moment. Null if no cover image is set. */
|
|
70
76
|
coverImage: (MomentCoverImage | null);
|
|
71
77
|
venue: (Venue | null);
|
|
@@ -74,6 +80,22 @@ interface Moment {
|
|
|
74
80
|
updatedAt: Scalars['DateTime'];
|
|
75
81
|
__typename: 'Moment';
|
|
76
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Public-facing lineup entry for a moment.
|
|
85
|
+
* Only approved entries are returned by getPublicMomentLineups.
|
|
86
|
+
*/
|
|
87
|
+
interface MomentLineup {
|
|
88
|
+
uid: Scalars['ID'];
|
|
89
|
+
name: Scalars['String'];
|
|
90
|
+
status: MomentLineupStatus;
|
|
91
|
+
lineupType: MomentLineupType;
|
|
92
|
+
sortOrder: Scalars['String'];
|
|
93
|
+
url: (Scalars['String'] | null);
|
|
94
|
+
image: (MomentCoverImage | null);
|
|
95
|
+
createdAt: Scalars['DateTime'];
|
|
96
|
+
updatedAt: Scalars['DateTime'];
|
|
97
|
+
__typename: 'MomentLineup';
|
|
98
|
+
}
|
|
77
99
|
interface TicketTier {
|
|
78
100
|
uid: Scalars['ID'];
|
|
79
101
|
name: Scalars['String'];
|
|
@@ -246,6 +268,13 @@ interface GetPublicMomentsResponse {
|
|
|
246
268
|
nextCursor: (Scalars['String'] | null);
|
|
247
269
|
__typename: 'GetPublicMomentsResponse';
|
|
248
270
|
}
|
|
271
|
+
interface GetMomentLineupsResponse {
|
|
272
|
+
lineups: MomentLineup[];
|
|
273
|
+
totalCount: Scalars['Int'];
|
|
274
|
+
hasNextPage: Scalars['Boolean'];
|
|
275
|
+
nextCursor: (Scalars['String'] | null);
|
|
276
|
+
__typename: 'GetMomentLineupsResponse';
|
|
277
|
+
}
|
|
249
278
|
interface GetTicketsResponse {
|
|
250
279
|
tickets: Ticket[];
|
|
251
280
|
totalCount: Scalars['Int'];
|
|
@@ -275,6 +304,21 @@ interface BrandSubscription {
|
|
|
275
304
|
updatedAt: Scalars['DateTime'];
|
|
276
305
|
__typename: 'BrandSubscription';
|
|
277
306
|
}
|
|
307
|
+
interface PublicMomentLineupInfo {
|
|
308
|
+
token: Scalars['String'];
|
|
309
|
+
artistName: Scalars['String'];
|
|
310
|
+
momentName: Scalars['String'];
|
|
311
|
+
brandName: Scalars['String'];
|
|
312
|
+
status: MomentLineupStatus;
|
|
313
|
+
lineupType: MomentLineupType;
|
|
314
|
+
alreadyResponded: Scalars['Boolean'];
|
|
315
|
+
__typename: 'PublicMomentLineupInfo';
|
|
316
|
+
}
|
|
317
|
+
interface MomentLineupResponseResult {
|
|
318
|
+
status: MomentLineupStatus;
|
|
319
|
+
success: Scalars['Boolean'];
|
|
320
|
+
__typename: 'MomentLineupResponseResult';
|
|
321
|
+
}
|
|
278
322
|
interface Query {
|
|
279
323
|
/** Get paginated moments for the brand associated with the partner token. */
|
|
280
324
|
getPartnerMomentsForBrand: GetPublicMomentsResponse;
|
|
@@ -303,6 +347,13 @@ interface Query {
|
|
|
303
347
|
* If omitted, returns brand-level echoes.
|
|
304
348
|
*/
|
|
305
349
|
getPartnerPublicEchoes: GetBrandEchoesForUserResponse;
|
|
350
|
+
/**
|
|
351
|
+
* Get approved public lineup entries for a moment.
|
|
352
|
+
* Use getPartnerMoment to resolve a moment slug to uid before calling this query.
|
|
353
|
+
*/
|
|
354
|
+
getPublicMomentLineups: GetMomentLineupsResponse;
|
|
355
|
+
/** Get public lineup invitation details by response token. */
|
|
356
|
+
getMomentLineupByToken: PublicMomentLineupInfo;
|
|
306
357
|
__typename: 'Query';
|
|
307
358
|
}
|
|
308
359
|
/**
|
|
@@ -364,6 +415,7 @@ interface Mutation {
|
|
|
364
415
|
createPartnerMoment: Moment;
|
|
365
416
|
/** Complete a partner brand subscription that was created with requireOtpVerification=true. */
|
|
366
417
|
verifyPartnerBrandSubscription: BrandSubscription;
|
|
418
|
+
respondToMomentLineup: MomentLineupResponseResult;
|
|
367
419
|
__typename: 'Mutation';
|
|
368
420
|
}
|
|
369
421
|
interface CurrencyGenqlSelection {
|
|
@@ -419,6 +471,8 @@ interface MomentGenqlSelection {
|
|
|
419
471
|
timezone?: boolean | number;
|
|
420
472
|
minimumAge?: boolean | number;
|
|
421
473
|
externalUrl?: boolean | number;
|
|
474
|
+
/** Display label to use when rendering the public lineup section. */
|
|
475
|
+
lineupDisplayLabel?: boolean | number;
|
|
422
476
|
/** Cover image for the moment. Null if no cover image is set. */
|
|
423
477
|
coverImage?: MomentCoverImageGenqlSelection;
|
|
424
478
|
venue?: VenueGenqlSelection;
|
|
@@ -428,6 +482,23 @@ interface MomentGenqlSelection {
|
|
|
428
482
|
__typename?: boolean | number;
|
|
429
483
|
__scalar?: boolean | number;
|
|
430
484
|
}
|
|
485
|
+
/**
|
|
486
|
+
* Public-facing lineup entry for a moment.
|
|
487
|
+
* Only approved entries are returned by getPublicMomentLineups.
|
|
488
|
+
*/
|
|
489
|
+
interface MomentLineupGenqlSelection {
|
|
490
|
+
uid?: boolean | number;
|
|
491
|
+
name?: boolean | number;
|
|
492
|
+
status?: boolean | number;
|
|
493
|
+
lineupType?: boolean | number;
|
|
494
|
+
sortOrder?: boolean | number;
|
|
495
|
+
url?: boolean | number;
|
|
496
|
+
image?: MomentCoverImageGenqlSelection;
|
|
497
|
+
createdAt?: boolean | number;
|
|
498
|
+
updatedAt?: boolean | number;
|
|
499
|
+
__typename?: boolean | number;
|
|
500
|
+
__scalar?: boolean | number;
|
|
501
|
+
}
|
|
431
502
|
interface TicketTierGenqlSelection {
|
|
432
503
|
uid?: boolean | number;
|
|
433
504
|
name?: boolean | number;
|
|
@@ -612,6 +683,14 @@ interface GetPublicMomentsResponseGenqlSelection {
|
|
|
612
683
|
__typename?: boolean | number;
|
|
613
684
|
__scalar?: boolean | number;
|
|
614
685
|
}
|
|
686
|
+
interface GetMomentLineupsResponseGenqlSelection {
|
|
687
|
+
lineups?: MomentLineupGenqlSelection;
|
|
688
|
+
totalCount?: boolean | number;
|
|
689
|
+
hasNextPage?: boolean | number;
|
|
690
|
+
nextCursor?: boolean | number;
|
|
691
|
+
__typename?: boolean | number;
|
|
692
|
+
__scalar?: boolean | number;
|
|
693
|
+
}
|
|
615
694
|
interface GetTicketsResponseGenqlSelection {
|
|
616
695
|
tickets?: TicketGenqlSelection;
|
|
617
696
|
totalCount?: boolean | number;
|
|
@@ -645,6 +724,23 @@ interface BrandSubscriptionGenqlSelection {
|
|
|
645
724
|
__typename?: boolean | number;
|
|
646
725
|
__scalar?: boolean | number;
|
|
647
726
|
}
|
|
727
|
+
interface PublicMomentLineupInfoGenqlSelection {
|
|
728
|
+
token?: boolean | number;
|
|
729
|
+
artistName?: boolean | number;
|
|
730
|
+
momentName?: boolean | number;
|
|
731
|
+
brandName?: boolean | number;
|
|
732
|
+
status?: boolean | number;
|
|
733
|
+
lineupType?: boolean | number;
|
|
734
|
+
alreadyResponded?: boolean | number;
|
|
735
|
+
__typename?: boolean | number;
|
|
736
|
+
__scalar?: boolean | number;
|
|
737
|
+
}
|
|
738
|
+
interface MomentLineupResponseResultGenqlSelection {
|
|
739
|
+
status?: boolean | number;
|
|
740
|
+
success?: boolean | number;
|
|
741
|
+
__typename?: boolean | number;
|
|
742
|
+
__scalar?: boolean | number;
|
|
743
|
+
}
|
|
648
744
|
interface QueryGenqlSelection {
|
|
649
745
|
/** Get paginated moments for the brand associated with the partner token. */
|
|
650
746
|
getPartnerMomentsForBrand?: (GetPublicMomentsResponseGenqlSelection & {
|
|
@@ -718,6 +814,25 @@ interface QueryGenqlSelection {
|
|
|
718
814
|
take?: (Scalars['Int'] | null);
|
|
719
815
|
};
|
|
720
816
|
});
|
|
817
|
+
/**
|
|
818
|
+
* Get approved public lineup entries for a moment.
|
|
819
|
+
* Use getPartnerMoment to resolve a moment slug to uid before calling this query.
|
|
820
|
+
*/
|
|
821
|
+
getPublicMomentLineups?: (GetMomentLineupsResponseGenqlSelection & {
|
|
822
|
+
__args: {
|
|
823
|
+
momentUid: Scalars['String'];
|
|
824
|
+
/** Cursor UID for pagination. */
|
|
825
|
+
cursor?: (Scalars['String'] | null);
|
|
826
|
+
take?: (Scalars['Int'] | null);
|
|
827
|
+
lineupType?: (MomentLineupType | null);
|
|
828
|
+
};
|
|
829
|
+
});
|
|
830
|
+
/** Get public lineup invitation details by response token. */
|
|
831
|
+
getMomentLineupByToken?: (PublicMomentLineupInfoGenqlSelection & {
|
|
832
|
+
__args: {
|
|
833
|
+
token: Scalars['String'];
|
|
834
|
+
};
|
|
835
|
+
});
|
|
721
836
|
__typename?: boolean | number;
|
|
722
837
|
__scalar?: boolean | number;
|
|
723
838
|
}
|
|
@@ -772,6 +887,10 @@ interface CreatePartnerMomentInput {
|
|
|
772
887
|
/** Ticket tiers to create along with the moment. */
|
|
773
888
|
ticketTiers?: (CreatePartnerTicketTierInput[] | null);
|
|
774
889
|
}
|
|
890
|
+
interface RespondToMomentLineupInput {
|
|
891
|
+
token: Scalars['String'];
|
|
892
|
+
status: MomentLineupStatus;
|
|
893
|
+
}
|
|
775
894
|
interface SubscriptionComplianceInput {
|
|
776
895
|
browserName?: (Scalars['String'] | null);
|
|
777
896
|
browserVersion?: (Scalars['String'] | null);
|
|
@@ -930,6 +1049,11 @@ interface MutationGenqlSelection {
|
|
|
930
1049
|
input: VerifyPartnerBrandSubscriptionInput;
|
|
931
1050
|
};
|
|
932
1051
|
});
|
|
1052
|
+
respondToMomentLineup?: (MomentLineupResponseResultGenqlSelection & {
|
|
1053
|
+
__args: {
|
|
1054
|
+
input: RespondToMomentLineupInput;
|
|
1055
|
+
};
|
|
1056
|
+
});
|
|
933
1057
|
__typename?: boolean | number;
|
|
934
1058
|
__scalar?: boolean | number;
|
|
935
1059
|
}
|
|
@@ -1032,6 +1156,7 @@ type ITMPartnerClient = Client;
|
|
|
1032
1156
|
* uid: true,
|
|
1033
1157
|
* name: true,
|
|
1034
1158
|
* startDate: true,
|
|
1159
|
+
* lineupDisplayLabel: true,
|
|
1035
1160
|
* coverImage: { url: true, mimeType: true },
|
|
1036
1161
|
* venue: { name: true, city: true },
|
|
1037
1162
|
* },
|
|
@@ -1044,4 +1169,4 @@ type ITMPartnerClient = Client;
|
|
|
1044
1169
|
*/
|
|
1045
1170
|
declare function createITMPartnerClient(config: ITMPartnerClientConfig): ITMPartnerClient;
|
|
1046
1171
|
|
|
1047
|
-
export { type BrandSubscription, type CreatePartnerBrandSubscriptionInput, type CreatePartnerBrandSubscriptionResponse, type CreatePartnerMomentInput, type CreatePartnerTicketTierInput, type Currency, DEFAULT_API_URL, type Dimensions, type DimensionsInput, type Echo, type EchoMediaAsset, type EchoType, type GetBrandEchoesForUserResponse, type GetPartnerCustomersResponse, type GetPublicMomentsResponse, type GetTicketsResponse, type ITMPartnerClient, type ITMPartnerClientConfig, type ITMPartnerHeaders, type ITMPartnerHeadersObject, type MediaAsset, type MediaAssetUploadUrl, type MerchPurchase, type Moment, type MomentCategory, type MomentCollection, type MomentCollectionLink, type MomentDiscountCodeUsage, type MomentSortOrder, type MomentStatus, type MomentSubcategory, type MomentType, type Mutation, type PartnerCustomer, type PartnerMomentStats, type Payment, type PaymentStatus, type PostSubscriptionEmailInput, type PostSubscriptionMessageInput, type PostSubscriptionPushInput, type PostSubscriptionSmsInput, type Query, type SubscriptionComplianceInput, type ThirdPartyEchoType, type Ticket, type TicketExtension, type TicketExtensionStatus, type TicketTier, type User, type Venue, type VenueInput, type VerifyPartnerBrandSubscriptionInput, createITMPartnerClient, everything, generateMutationOp, generateQueryOp };
|
|
1172
|
+
export { type BrandSubscription, type CreatePartnerBrandSubscriptionInput, type CreatePartnerBrandSubscriptionResponse, type CreatePartnerMomentInput, type CreatePartnerTicketTierInput, type Currency, DEFAULT_API_URL, type Dimensions, type DimensionsInput, type Echo, type EchoMediaAsset, type EchoType, type GetBrandEchoesForUserResponse, type GetMomentLineupsResponse, type GetPartnerCustomersResponse, type GetPublicMomentsResponse, type GetTicketsResponse, type ITMPartnerClient, type ITMPartnerClientConfig, type ITMPartnerHeaders, type ITMPartnerHeadersObject, type MediaAsset, type MediaAssetUploadUrl, type MerchPurchase, type Moment, type MomentCategory, type MomentCollection, type MomentCollectionLink, type MomentDiscountCodeUsage, type MomentLineup, type MomentLineupDisplayLabel, type MomentLineupResponseResult, type MomentLineupStatus, type MomentLineupType, type MomentSortOrder, type MomentStatus, type MomentSubcategory, type MomentType, type Mutation, type PartnerCustomer, type PartnerMomentStats, type Payment, type PaymentStatus, type PostSubscriptionEmailInput, type PostSubscriptionMessageInput, type PostSubscriptionPushInput, type PostSubscriptionSmsInput, type PublicMomentLineupInfo, type Query, type RespondToMomentLineupInput, type SubscriptionComplianceInput, type ThirdPartyEchoType, type Ticket, type TicketExtension, type TicketExtensionStatus, type TicketTier, type User, type Venue, type VenueInput, type VerifyPartnerBrandSubscriptionInput, createITMPartnerClient, everything, generateMutationOp, generateQueryOp };
|