@itm-studio/partner-sdk 0.2.6 → 0.2.8
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 +543 -170
- package/dist/index.d.mts +733 -9
- package/dist/index.d.ts +733 -9
- package/dist/index.js +1404 -427
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1404 -427
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/schema/partner.graphql +532 -7
package/schema/partner.graphql
CHANGED
|
@@ -20,11 +20,37 @@ enum MomentSortOrder {
|
|
|
20
20
|
DESC
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
enum BrandDropCtaType {
|
|
24
|
+
EXTERNAL_URL
|
|
25
|
+
GATED_LINK
|
|
26
|
+
MUSIC_LINK
|
|
27
|
+
SUBSCRIBE
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
enum MusicReleaseType {
|
|
31
|
+
ALBUM
|
|
32
|
+
EP
|
|
33
|
+
SINGLE
|
|
34
|
+
}
|
|
35
|
+
|
|
23
36
|
enum MomentType {
|
|
24
37
|
DIGITAL
|
|
38
|
+
HYBRID
|
|
25
39
|
IRL
|
|
26
40
|
}
|
|
27
41
|
|
|
42
|
+
enum MomentOnlineProvider {
|
|
43
|
+
GOOGLE_MEET
|
|
44
|
+
MS_TEAMS
|
|
45
|
+
OTHER
|
|
46
|
+
ZOOM
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
enum TicketAttendanceMode {
|
|
50
|
+
IN_PERSON
|
|
51
|
+
ONLINE
|
|
52
|
+
}
|
|
53
|
+
|
|
28
54
|
enum MomentCategory {
|
|
29
55
|
ACTIVATION
|
|
30
56
|
CONCERT
|
|
@@ -297,6 +323,24 @@ type Currency {
|
|
|
297
323
|
updatedAt: DateTime!
|
|
298
324
|
}
|
|
299
325
|
|
|
326
|
+
"""
|
|
327
|
+
The authenticated partner's brand identity and public-facing details.
|
|
328
|
+
The brand is derived from the partner token and cannot be selected by UID or slug.
|
|
329
|
+
"""
|
|
330
|
+
type PartnerBrand {
|
|
331
|
+
uid: ID!
|
|
332
|
+
createdAt: DateTime!
|
|
333
|
+
updatedAt: DateTime!
|
|
334
|
+
name: String!
|
|
335
|
+
slug: String!
|
|
336
|
+
bio: String
|
|
337
|
+
publicUrl: String!
|
|
338
|
+
customDomain: String
|
|
339
|
+
customDomainVerifiedAt: DateTime
|
|
340
|
+
spotifyUrl: String
|
|
341
|
+
youtubeEmbedUrl: String
|
|
342
|
+
}
|
|
343
|
+
|
|
300
344
|
type Venue {
|
|
301
345
|
uid: ID!
|
|
302
346
|
name: String!
|
|
@@ -335,11 +379,13 @@ type Moment {
|
|
|
335
379
|
soldOut: Boolean!
|
|
336
380
|
timezone: String!
|
|
337
381
|
minimumAge: Int!
|
|
382
|
+
"""Tracks the overall capacity of the moment."""
|
|
383
|
+
capacity: Int
|
|
338
384
|
externalUrl: String
|
|
339
385
|
"""Display label to use when rendering the public lineup section."""
|
|
340
386
|
lineupDisplayLabel: MomentLineupDisplayLabel!
|
|
341
387
|
"""Cover image for the moment. Null if no cover image is set."""
|
|
342
|
-
coverImage: MomentCoverImage
|
|
388
|
+
coverImage: MomentCoverImage!
|
|
343
389
|
venue: Venue
|
|
344
390
|
ticketTiers: [TicketTier!]!
|
|
345
391
|
createdAt: DateTime!
|
|
@@ -368,6 +414,7 @@ type TicketTier {
|
|
|
368
414
|
description: String
|
|
369
415
|
price: Float!
|
|
370
416
|
currency: Currency!
|
|
417
|
+
attendanceMode: TicketAttendanceMode!
|
|
371
418
|
isActive: Boolean!
|
|
372
419
|
isPrivate: Boolean!
|
|
373
420
|
maxPerUser: Int!
|
|
@@ -382,7 +429,7 @@ type TicketTier {
|
|
|
382
429
|
type User {
|
|
383
430
|
uid: ID!
|
|
384
431
|
name: String
|
|
385
|
-
phoneNumber: String
|
|
432
|
+
phoneNumber: String
|
|
386
433
|
primaryEmail: String
|
|
387
434
|
instagramProfile: String
|
|
388
435
|
twitterProfile: String
|
|
@@ -457,6 +504,69 @@ type PartnerMomentStats {
|
|
|
457
504
|
ticketRsvpRequestsCount: Int!
|
|
458
505
|
}
|
|
459
506
|
|
|
507
|
+
type PartnerMomentAttendanceCount {
|
|
508
|
+
total: Int!
|
|
509
|
+
checkedIn: Int!
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
type PartnerMomentTicketTierAttendance {
|
|
513
|
+
total: Int!
|
|
514
|
+
checkedIn: Int!
|
|
515
|
+
tierUid: String!
|
|
516
|
+
name: String!
|
|
517
|
+
label: String
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
type PartnerMomentTicketAttendance {
|
|
521
|
+
total: Int!
|
|
522
|
+
checkedIn: Int!
|
|
523
|
+
tiers: [PartnerMomentTicketTierAttendance!]!
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
type PartnerMomentGuestlistLabelAttendance {
|
|
527
|
+
total: Int!
|
|
528
|
+
checkedIn: Int!
|
|
529
|
+
labelUid: String!
|
|
530
|
+
name: String!
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
type PartnerMomentGuestlistAttendance {
|
|
534
|
+
total: Int!
|
|
535
|
+
checkedIn: Int!
|
|
536
|
+
unlabeled: PartnerMomentAttendanceCount!
|
|
537
|
+
labels: [PartnerMomentGuestlistLabelAttendance!]!
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
type PartnerMomentAttendanceStats {
|
|
541
|
+
momentUid: String!
|
|
542
|
+
momentSlug: String!
|
|
543
|
+
generatedAt: DateTime!
|
|
544
|
+
tickets: PartnerMomentTicketAttendance!
|
|
545
|
+
guestlist: PartnerMomentGuestlistAttendance!
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
enum EventImportPlatform {
|
|
549
|
+
EVENTBRITE
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
input PartnerMomentAttendanceLookupInput {
|
|
553
|
+
"""
|
|
554
|
+
ITM moment UID. Provide exactly one of momentUid, momentSlug, or externalPlatform with externalId.
|
|
555
|
+
"""
|
|
556
|
+
momentUid: String
|
|
557
|
+
|
|
558
|
+
"""
|
|
559
|
+
ITM moment slug. Provide exactly one of momentUid, momentSlug, or externalPlatform with externalId.
|
|
560
|
+
"""
|
|
561
|
+
momentSlug: String
|
|
562
|
+
|
|
563
|
+
"""Source platform for externalId, for example EVENTBRITE."""
|
|
564
|
+
externalPlatform: EventImportPlatform
|
|
565
|
+
|
|
566
|
+
"""Opaque source-platform event ID. Must be provided together with externalPlatform."""
|
|
567
|
+
externalId: String
|
|
568
|
+
}
|
|
569
|
+
|
|
460
570
|
type MomentCollectionLink {
|
|
461
571
|
uid: ID!
|
|
462
572
|
url: String!
|
|
@@ -531,6 +641,46 @@ type Echo {
|
|
|
531
641
|
updatedAt: DateTime!
|
|
532
642
|
}
|
|
533
643
|
|
|
644
|
+
type BrandDrop {
|
|
645
|
+
uid: ID!
|
|
646
|
+
name: String!
|
|
647
|
+
slug: String!
|
|
648
|
+
subtitle: String
|
|
649
|
+
disclosures: String
|
|
650
|
+
isPublic: Boolean!
|
|
651
|
+
ctaType: BrandDropCtaType!
|
|
652
|
+
ctaUrl: String
|
|
653
|
+
ctaConfig: JSON
|
|
654
|
+
captureName: Boolean!
|
|
655
|
+
captureEmail: Boolean!
|
|
656
|
+
consentText: String
|
|
657
|
+
coverImage: MediaAsset!
|
|
658
|
+
coverImageMobile: MediaAsset
|
|
659
|
+
isActive: Boolean!
|
|
660
|
+
musicLink: BrandDropMusicLink
|
|
661
|
+
createdAt: DateTime!
|
|
662
|
+
updatedAt: DateTime!
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
type BrandDropMusicLink {
|
|
666
|
+
uid: ID!
|
|
667
|
+
releaseType: MusicReleaseType!
|
|
668
|
+
title: String!
|
|
669
|
+
artistName: String!
|
|
670
|
+
isrcCode: String
|
|
671
|
+
upcCode: String
|
|
672
|
+
releaseDate: DateTime
|
|
673
|
+
thumbnailUrl: String
|
|
674
|
+
thumbnailWidth: Int
|
|
675
|
+
thumbnailHeight: Int
|
|
676
|
+
subscriberOnly: Boolean!
|
|
677
|
+
sourceUrl: String!
|
|
678
|
+
odesliPageUrl: String
|
|
679
|
+
lastSyncedAt: DateTime
|
|
680
|
+
createdAt: DateTime!
|
|
681
|
+
updatedAt: DateTime!
|
|
682
|
+
}
|
|
683
|
+
|
|
534
684
|
# ─── Paginated Responses ─────────────────────────────────────────────────────
|
|
535
685
|
|
|
536
686
|
type GetPublicMomentsResponse {
|
|
@@ -540,6 +690,13 @@ type GetPublicMomentsResponse {
|
|
|
540
690
|
nextCursor: String
|
|
541
691
|
}
|
|
542
692
|
|
|
693
|
+
type GetPartnerDropsResponse {
|
|
694
|
+
drops: [BrandDrop!]!
|
|
695
|
+
totalCount: Int!
|
|
696
|
+
hasNextPage: Boolean!
|
|
697
|
+
nextCursor: String
|
|
698
|
+
}
|
|
699
|
+
|
|
543
700
|
type GetMomentLineupsResponse {
|
|
544
701
|
lineups: [MomentLineup!]!
|
|
545
702
|
totalCount: Int!
|
|
@@ -568,6 +725,201 @@ type GetBrandEchoesForUserResponse {
|
|
|
568
725
|
nextCursor: String
|
|
569
726
|
}
|
|
570
727
|
|
|
728
|
+
type PartnerTicketTier {
|
|
729
|
+
"""Sold-through fill rate as a 0-1 ratio."""
|
|
730
|
+
fillRate: Float!
|
|
731
|
+
isActive: Boolean!
|
|
732
|
+
isPrivate: Boolean!
|
|
733
|
+
label: String
|
|
734
|
+
labelColor: String
|
|
735
|
+
name: String!
|
|
736
|
+
price: Int!
|
|
737
|
+
facilityFee: Int!
|
|
738
|
+
remainingSupply: Int!
|
|
739
|
+
slotDate: DateTime
|
|
740
|
+
slotDurationHours: Int
|
|
741
|
+
supply: Int!
|
|
742
|
+
uid: String!
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
type GetPartnerTicketTiersForMomentResponse {
|
|
746
|
+
ticketTiers: [PartnerTicketTier!]!
|
|
747
|
+
totalCount: Int!
|
|
748
|
+
hasNextPage: Boolean!
|
|
749
|
+
nextCursor: String
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
enum DynamicPricingActorType {
|
|
753
|
+
ADMIN
|
|
754
|
+
PARTNER_API
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
enum DynamicPricingExecutionMode {
|
|
758
|
+
APPLY
|
|
759
|
+
PREVIEW
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
enum DynamicPricingBatchStatus {
|
|
763
|
+
APPLIED
|
|
764
|
+
CONFLICTED
|
|
765
|
+
FAILED
|
|
766
|
+
NO_CHANGES
|
|
767
|
+
PREVIEWED
|
|
768
|
+
PROCESSING
|
|
769
|
+
REJECTED
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
enum DynamicPricingBatchItemStatus {
|
|
773
|
+
APPLIED
|
|
774
|
+
BLOCKED_BY_BATCH
|
|
775
|
+
CONFLICTED
|
|
776
|
+
NO_CHANGE
|
|
777
|
+
REJECTED
|
|
778
|
+
WOULD_APPLY
|
|
779
|
+
WOULD_NOT_CHANGE
|
|
780
|
+
FAILED
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
enum DynamicPricingBatchEventType {
|
|
784
|
+
APPLIED
|
|
785
|
+
CONFLICTED
|
|
786
|
+
FAILED
|
|
787
|
+
IDEMPOTENCY_CONFLICT
|
|
788
|
+
NO_CHANGES
|
|
789
|
+
PREVIEWED
|
|
790
|
+
PROCESSING
|
|
791
|
+
RECEIVED
|
|
792
|
+
REJECTED
|
|
793
|
+
REPLAYED
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
enum DynamicPricingInventoryGuardMode {
|
|
797
|
+
INDEPENDENT
|
|
798
|
+
RANGE
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
enum DynamicPricingInventoryMetric {
|
|
802
|
+
REMAINING_SUPPLY
|
|
803
|
+
FILL_RATE_BPS
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
enum TicketAdmissionWindowSource {
|
|
807
|
+
EXPLICIT
|
|
808
|
+
LEGACY_SLOT
|
|
809
|
+
DEFAULT_MOMENT
|
|
810
|
+
MOMENT_OCCURRENCE
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
type MomentDynamicPricingTierRule {
|
|
814
|
+
uid: String!
|
|
815
|
+
ticketTierUid: String!
|
|
816
|
+
minPrice: Int!
|
|
817
|
+
maxPrice: Int!
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
type MomentDynamicPricingPolicy {
|
|
821
|
+
uid: String!
|
|
822
|
+
momentUid: String!
|
|
823
|
+
enabled: Boolean!
|
|
824
|
+
version: Int!
|
|
825
|
+
advanceBookingHorizonDays: Int!
|
|
826
|
+
tierRules: [MomentDynamicPricingTierRule!]!
|
|
827
|
+
createdAt: DateTime!
|
|
828
|
+
updatedAt: DateTime!
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
type DynamicPricingAdmissionWindow {
|
|
832
|
+
uid: String!
|
|
833
|
+
startsAt: DateTime!
|
|
834
|
+
endsAt: DateTime!
|
|
835
|
+
checkInOpensAt: DateTime
|
|
836
|
+
checkInClosesAt: DateTime
|
|
837
|
+
label: String
|
|
838
|
+
source: TicketAdmissionWindowSource!
|
|
839
|
+
sortOrder: Int!
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
type DynamicPricingTierContext {
|
|
843
|
+
ticketTierUid: String!
|
|
844
|
+
name: String!
|
|
845
|
+
currency: String!
|
|
846
|
+
currentPrice: Int!
|
|
847
|
+
facilityFee: Int!
|
|
848
|
+
minPrice: Int!
|
|
849
|
+
maxPrice: Int!
|
|
850
|
+
supply: Int!
|
|
851
|
+
remainingSupply: Int!
|
|
852
|
+
consumedSupply: Int!
|
|
853
|
+
fillRateBps: Int!
|
|
854
|
+
isActive: Boolean!
|
|
855
|
+
eligible: Boolean!
|
|
856
|
+
ineligibilityReasons: [String!]!
|
|
857
|
+
pricingContextVersion: String!
|
|
858
|
+
lastDynamicPriceChangeAt: DateTime
|
|
859
|
+
admissionWindows: [DynamicPricingAdmissionWindow!]!
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
type DynamicPricingContext {
|
|
863
|
+
serverNow: DateTime!
|
|
864
|
+
horizonEndsAt: DateTime!
|
|
865
|
+
validUntil: DateTime
|
|
866
|
+
momentUid: String!
|
|
867
|
+
momentSlug: String!
|
|
868
|
+
timezone: String!
|
|
869
|
+
policy: MomentDynamicPricingPolicy!
|
|
870
|
+
tiers: [DynamicPricingTierContext!]!
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
type DynamicPricingBatchItem {
|
|
874
|
+
uid: String!
|
|
875
|
+
ticketTierUid: String!
|
|
876
|
+
expectedPrice: Int!
|
|
877
|
+
requestedPrice: Int!
|
|
878
|
+
previousPrice: Int
|
|
879
|
+
resultingPrice: Int
|
|
880
|
+
expectedPricingContextVersion: String!
|
|
881
|
+
actualPricingContextVersion: String
|
|
882
|
+
status: DynamicPricingBatchItemStatus!
|
|
883
|
+
failureCode: String
|
|
884
|
+
failureMessage: String
|
|
885
|
+
contextSnapshot: JSON
|
|
886
|
+
externalSignals: JSON
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
type DynamicPricingBatchEvent {
|
|
890
|
+
uid: String!
|
|
891
|
+
type: DynamicPricingBatchEventType!
|
|
892
|
+
requestHash: String
|
|
893
|
+
details: JSON
|
|
894
|
+
createdAt: DateTime!
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
type DynamicPricingBatch {
|
|
898
|
+
uid: String!
|
|
899
|
+
momentUidRequested: String!
|
|
900
|
+
actorType: DynamicPricingActorType!
|
|
901
|
+
actorUid: String!
|
|
902
|
+
executionMode: DynamicPricingExecutionMode!
|
|
903
|
+
status: DynamicPricingBatchStatus!
|
|
904
|
+
idempotencyKey: String!
|
|
905
|
+
requestHash: String!
|
|
906
|
+
replayCount: Int!
|
|
907
|
+
idempotencyConflictCount: Int!
|
|
908
|
+
policyVersion: Int!
|
|
909
|
+
reason: String!
|
|
910
|
+
strategyKey: String
|
|
911
|
+
strategyVersion: String
|
|
912
|
+
externalReference: String
|
|
913
|
+
metadata: JSON
|
|
914
|
+
failureCode: String
|
|
915
|
+
failureMessage: String
|
|
916
|
+
items: [DynamicPricingBatchItem!]!
|
|
917
|
+
events: [DynamicPricingBatchEvent!]!
|
|
918
|
+
createdAt: DateTime!
|
|
919
|
+
updatedAt: DateTime!
|
|
920
|
+
completedAt: DateTime
|
|
921
|
+
}
|
|
922
|
+
|
|
571
923
|
type BrandSubscription {
|
|
572
924
|
uid: ID!
|
|
573
925
|
isActive: Boolean!
|
|
@@ -594,6 +946,11 @@ type MomentLineupResponseResult {
|
|
|
594
946
|
# ─── Queries ─────────────────────────────────────────────────────────────────
|
|
595
947
|
|
|
596
948
|
type Query {
|
|
949
|
+
"""
|
|
950
|
+
Get details for the brand associated with the partner token.
|
|
951
|
+
"""
|
|
952
|
+
getPartnerBrand: PartnerBrand!
|
|
953
|
+
|
|
597
954
|
"""
|
|
598
955
|
Get paginated moments for the brand associated with the partner token.
|
|
599
956
|
"""
|
|
@@ -606,6 +963,19 @@ type Query {
|
|
|
606
963
|
sortOrder: MomentSortOrder
|
|
607
964
|
): GetPublicMomentsResponse!
|
|
608
965
|
|
|
966
|
+
"""
|
|
967
|
+
Get paginated drops for the brand associated with the partner token.
|
|
968
|
+
"""
|
|
969
|
+
getPartnerDrops(
|
|
970
|
+
"""Cursor UID for pagination"""
|
|
971
|
+
cursor: String
|
|
972
|
+
take: Int
|
|
973
|
+
"""Case-insensitive search over name, subtitle, and slug"""
|
|
974
|
+
search: String
|
|
975
|
+
isPublic: Boolean
|
|
976
|
+
ctaType: BrandDropCtaType
|
|
977
|
+
): GetPartnerDropsResponse!
|
|
978
|
+
|
|
609
979
|
"""
|
|
610
980
|
Get a single moment by slug.
|
|
611
981
|
"""
|
|
@@ -617,6 +987,15 @@ type Query {
|
|
|
617
987
|
"""
|
|
618
988
|
getPartnerMomentStats(momentSlug: String!): PartnerMomentStats
|
|
619
989
|
|
|
990
|
+
"""
|
|
991
|
+
Get a cached attendance snapshot for a partner-owned moment; counts can be
|
|
992
|
+
up to five minutes old. Look up by exactly one of momentUid, momentSlug, or
|
|
993
|
+
externalPlatform with externalId. Returns null when no owned moment matches.
|
|
994
|
+
"""
|
|
995
|
+
getPartnerMomentAttendanceStats(
|
|
996
|
+
input: PartnerMomentAttendanceLookupInput!
|
|
997
|
+
): PartnerMomentAttendanceStats
|
|
998
|
+
|
|
620
999
|
"""
|
|
621
1000
|
Get paginated tickets for a moment.
|
|
622
1001
|
"""
|
|
@@ -659,6 +1038,27 @@ type Query {
|
|
|
659
1038
|
take: Int
|
|
660
1039
|
): GetBrandEchoesForUserResponse!
|
|
661
1040
|
|
|
1041
|
+
"""
|
|
1042
|
+
Get paginated ticket tiers for a partner-owned moment.
|
|
1043
|
+
Provide either momentSlug or momentUid. Omitted isActive defaults to active tiers only.
|
|
1044
|
+
"""
|
|
1045
|
+
getPartnerTicketTiersForMoment(
|
|
1046
|
+
input: GetPartnerTicketTiersForMomentInput!
|
|
1047
|
+
): GetPartnerTicketTiersForMomentResponse!
|
|
1048
|
+
|
|
1049
|
+
"""
|
|
1050
|
+
Get a policy-bounded, admission-window-aware snapshot for dynamic pricing.
|
|
1051
|
+
Use each tier's currentPrice and pricingContextVersion as apply preconditions.
|
|
1052
|
+
"""
|
|
1053
|
+
getPartnerMomentDynamicPricingContext(
|
|
1054
|
+
input: DynamicPricingMomentInput!
|
|
1055
|
+
): DynamicPricingContext!
|
|
1056
|
+
|
|
1057
|
+
"""
|
|
1058
|
+
Retrieve one dynamic pricing batch owned by the authenticated partner brand.
|
|
1059
|
+
"""
|
|
1060
|
+
getPartnerDynamicPricingBatch(batchUid: String!): DynamicPricingBatch!
|
|
1061
|
+
|
|
662
1062
|
"""
|
|
663
1063
|
Get approved public lineup entries for a moment.
|
|
664
1064
|
Use getPartnerMoment to resolve a moment slug to uid before calling this query.
|
|
@@ -680,14 +1080,14 @@ type Query {
|
|
|
680
1080
|
# ─── Input Types ──────────────────────────────────────────────────────────────
|
|
681
1081
|
|
|
682
1082
|
input DimensionsInput {
|
|
683
|
-
width:
|
|
684
|
-
height:
|
|
1083
|
+
width: Float!
|
|
1084
|
+
height: Float!
|
|
685
1085
|
}
|
|
686
1086
|
|
|
687
1087
|
input VenueInput {
|
|
688
1088
|
name: String!
|
|
689
1089
|
city: String!
|
|
690
|
-
country: String
|
|
1090
|
+
country: String
|
|
691
1091
|
address: String
|
|
692
1092
|
postalCode: String
|
|
693
1093
|
}
|
|
@@ -710,30 +1110,139 @@ input CreatePartnerTicketTierInput {
|
|
|
710
1110
|
isPrivate: Boolean
|
|
711
1111
|
"""Default: true."""
|
|
712
1112
|
isActive: Boolean
|
|
1113
|
+
"""
|
|
1114
|
+
Required for HYBRID moments. Defaults from parent type for IRL and DIGITAL moments.
|
|
1115
|
+
"""
|
|
1116
|
+
attendanceMode: TicketAttendanceMode
|
|
1117
|
+
}
|
|
1118
|
+
|
|
1119
|
+
input CreateMomentOnlineConfigInput {
|
|
1120
|
+
hostInstructions: String
|
|
1121
|
+
meetingId: String
|
|
1122
|
+
meetingPasscode: String
|
|
1123
|
+
meetingUrl: String!
|
|
1124
|
+
provider: MomentOnlineProvider!
|
|
713
1125
|
}
|
|
714
1126
|
|
|
715
1127
|
input CreatePartnerMomentInput {
|
|
716
1128
|
name: String!
|
|
717
1129
|
description: String!
|
|
718
|
-
blurb: String
|
|
1130
|
+
blurb: String
|
|
719
1131
|
startDate: DateTime!
|
|
720
1132
|
endDate: DateTime!
|
|
721
1133
|
"""IANA timezone (e.g. "America/New_York")."""
|
|
722
1134
|
timezone: String!
|
|
723
|
-
"""IRL (in-person) or
|
|
1135
|
+
"""IRL (in-person), DIGITAL, or HYBRID."""
|
|
724
1136
|
type: MomentType!
|
|
725
1137
|
"""UID of a previously uploaded media asset. If omitted, uses the brand default cover image."""
|
|
726
1138
|
coverImageUid: String
|
|
727
1139
|
"""Required when type is IRL."""
|
|
728
1140
|
venue: VenueInput
|
|
1141
|
+
"""Allowed when type is DIGITAL or HYBRID."""
|
|
1142
|
+
onlineConfig: CreateMomentOnlineConfigInput
|
|
729
1143
|
"""Default: false."""
|
|
730
1144
|
isPrivate: Boolean
|
|
1145
|
+
"""Tracks the overall capacity of the moment."""
|
|
1146
|
+
capacity: Int
|
|
731
1147
|
category: MomentCategory
|
|
732
1148
|
subcategory: MomentSubcategory
|
|
733
1149
|
"""Ticket tiers to create along with the moment."""
|
|
734
1150
|
ticketTiers: [CreatePartnerTicketTierInput!]
|
|
735
1151
|
}
|
|
736
1152
|
|
|
1153
|
+
input GetPartnerTicketTiersForMomentInput {
|
|
1154
|
+
"""Moment UID to search ticket tiers for. Provide this or momentSlug."""
|
|
1155
|
+
momentUid: String
|
|
1156
|
+
"""Moment slug to search ticket tiers for. Provide this or momentUid."""
|
|
1157
|
+
momentSlug: String
|
|
1158
|
+
cursor: String
|
|
1159
|
+
take: Int
|
|
1160
|
+
"""Optional ticket tier UIDs to return."""
|
|
1161
|
+
ticketTierUids: [String!]
|
|
1162
|
+
"""Case-insensitive search over tier name and label."""
|
|
1163
|
+
search: String
|
|
1164
|
+
isActive: Boolean
|
|
1165
|
+
isPrivate: Boolean
|
|
1166
|
+
"""
|
|
1167
|
+
Filter by payment type: true = paid tiers only, false = free tiers only.
|
|
1168
|
+
"""
|
|
1169
|
+
isPaid: Boolean
|
|
1170
|
+
"""Exact tier price in cents."""
|
|
1171
|
+
price: Int
|
|
1172
|
+
"""Minimum tier price in cents."""
|
|
1173
|
+
minPrice: Int
|
|
1174
|
+
"""Maximum tier price in cents."""
|
|
1175
|
+
maxPrice: Int
|
|
1176
|
+
supply: Int
|
|
1177
|
+
minSupply: Int
|
|
1178
|
+
maxSupply: Int
|
|
1179
|
+
remainingSupply: Int
|
|
1180
|
+
minRemainingSupply: Int
|
|
1181
|
+
maxRemainingSupply: Int
|
|
1182
|
+
"""Minimum sold-through fill rate as a 0-1 ratio."""
|
|
1183
|
+
minFillRate: Float
|
|
1184
|
+
"""Maximum sold-through fill rate as a 0-1 ratio."""
|
|
1185
|
+
maxFillRate: Float
|
|
1186
|
+
"""Filter to tiers with an admission window ending after this date."""
|
|
1187
|
+
startsAt: DateTime
|
|
1188
|
+
"""Filter to tiers with an admission window starting before this date."""
|
|
1189
|
+
endsAt: DateTime
|
|
1190
|
+
"""Filter to tiers with slotDate on or after this date."""
|
|
1191
|
+
slotDateStart: DateTime
|
|
1192
|
+
"""Filter to tiers with slotDate on or before this date."""
|
|
1193
|
+
slotDateEnd: DateTime
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
input PartnerTicketTierUpdateInput {
|
|
1197
|
+
ticketTierUid: String!
|
|
1198
|
+
price: Int
|
|
1199
|
+
facilityFee: Int
|
|
1200
|
+
supply: Int
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1203
|
+
input EditPartnerTicketTiersForMomentInput {
|
|
1204
|
+
"""Moment UID containing the ticket tiers. Provide this or momentSlug."""
|
|
1205
|
+
momentUid: String
|
|
1206
|
+
"""Moment slug containing the ticket tiers. Provide this or momentUid."""
|
|
1207
|
+
momentSlug: String
|
|
1208
|
+
updates: [PartnerTicketTierUpdateInput!]!
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1211
|
+
input DynamicPricingMomentInput {
|
|
1212
|
+
momentUid: String
|
|
1213
|
+
momentSlug: String
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
input DynamicPricingTierUpdateInput {
|
|
1217
|
+
ticketTierUid: String!
|
|
1218
|
+
newPrice: Int!
|
|
1219
|
+
expectedPrice: Int!
|
|
1220
|
+
expectedPricingContextVersion: String!
|
|
1221
|
+
inventoryGuard: DynamicPricingInventoryGuardInput!
|
|
1222
|
+
externalSignals: JSON
|
|
1223
|
+
}
|
|
1224
|
+
|
|
1225
|
+
input DynamicPricingInventoryGuardInput {
|
|
1226
|
+
mode: DynamicPricingInventoryGuardMode!
|
|
1227
|
+
metric: DynamicPricingInventoryMetric
|
|
1228
|
+
minimum: Int
|
|
1229
|
+
maximum: Int
|
|
1230
|
+
}
|
|
1231
|
+
|
|
1232
|
+
input ApplyDynamicPricingInput {
|
|
1233
|
+
momentUid: String
|
|
1234
|
+
momentSlug: String
|
|
1235
|
+
mode: DynamicPricingExecutionMode!
|
|
1236
|
+
idempotencyKey: String!
|
|
1237
|
+
policyVersion: Int!
|
|
1238
|
+
reason: String!
|
|
1239
|
+
strategyKey: String
|
|
1240
|
+
strategyVersion: String
|
|
1241
|
+
externalReference: String
|
|
1242
|
+
metadata: JSON
|
|
1243
|
+
updates: [DynamicPricingTierUpdateInput!]!
|
|
1244
|
+
}
|
|
1245
|
+
|
|
737
1246
|
input RespondToMomentLineupInput {
|
|
738
1247
|
token: String!
|
|
739
1248
|
status: MomentLineupStatus!
|
|
@@ -896,6 +1405,22 @@ type Mutation {
|
|
|
896
1405
|
"""
|
|
897
1406
|
createPartnerMoment(input: CreatePartnerMomentInput!): Moment!
|
|
898
1407
|
|
|
1408
|
+
"""
|
|
1409
|
+
Bulk edit partner-owned ticket tiers for a moment.
|
|
1410
|
+
Supports per-tier price, facility-fee, and supply updates.
|
|
1411
|
+
"""
|
|
1412
|
+
editPartnerTicketTiersForMoment(
|
|
1413
|
+
input: EditPartnerTicketTiersForMomentInput!
|
|
1414
|
+
): [PartnerTicketTier!]!
|
|
1415
|
+
|
|
1416
|
+
"""
|
|
1417
|
+
Preview or atomically apply absolute prices to explicitly selected,
|
|
1418
|
+
policy-enrolled ticket tiers.
|
|
1419
|
+
"""
|
|
1420
|
+
applyPartnerMomentDynamicPricing(
|
|
1421
|
+
input: ApplyDynamicPricingInput!
|
|
1422
|
+
): DynamicPricingBatch!
|
|
1423
|
+
|
|
899
1424
|
"""
|
|
900
1425
|
Complete a partner brand subscription that was created with requireOtpVerification=true.
|
|
901
1426
|
"""
|