@nautical-commerce/graphql-schema 4.10.1 → 4.12.0

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.
@@ -1499,6 +1499,20 @@ type AppUpdate {
1499
1499
  appErrors: [AppError!]!
1500
1500
  }
1501
1501
 
1502
+ """
1503
+ Who walks in (SPEC-030): the holder named on a ticket claim. Empty fields mean the purchaser is the holder — naming is optional and post-purchase.
1504
+ """
1505
+ type AttendeeProfile implements Node {
1506
+ """The Globally Unique ID of this object"""
1507
+ id: ID!
1508
+
1509
+ """Attendee display name."""
1510
+ name: String!
1511
+
1512
+ """Attendee contact email."""
1513
+ email: String!
1514
+ }
1515
+
1502
1516
  """
1503
1517
  Custom attribute of a product. Attributes can be assigned to products and variants at the product type level.
1504
1518
  """
@@ -2858,6 +2872,178 @@ type CSVTemplateType {
2858
2872
  content: String!
2859
2873
  }
2860
2874
 
2875
+ """
2876
+ A variant's link to a capacity pool. Several ticket classes may draw down one capacity; a class may also cap its own share.
2877
+ """
2878
+ type CapacityAllocation implements Node {
2879
+ """The Globally Unique ID of this object"""
2880
+ id: ID!
2881
+
2882
+ """
2883
+ This variant's cap on its share of the pool; null means it draws freely. 0 pauses the variant alone.
2884
+ """
2885
+ maxQuantity: Int
2886
+
2887
+ """The pool this variant draws on."""
2888
+ pool: CapacityPool!
2889
+
2890
+ """The ticket-class variant."""
2891
+ variant: ProductVariant!
2892
+ }
2893
+
2894
+ """Payload for capacityAllocationCreate."""
2895
+ type CapacityAllocationCreate {
2896
+ capacityAllocation: CapacityAllocation
2897
+ entitlementErrors: [EntitlementError!]!
2898
+ }
2899
+
2900
+ """Input for allocating a variant to a capacity pool."""
2901
+ input CapacityAllocationCreateInput {
2902
+ """The pool to draw on."""
2903
+ poolId: ID!
2904
+
2905
+ """The TICKET variant (ticket class). One pool per variant."""
2906
+ variantId: ID!
2907
+
2908
+ """
2909
+ Cap on this variant's share of the pool; omit to draw freely. 0 pauses the variant alone.
2910
+ """
2911
+ maxQuantity: Int = null
2912
+ }
2913
+
2914
+ """Payload for capacityAllocationDelete."""
2915
+ type CapacityAllocationDelete {
2916
+ deletedAllocationId: ID
2917
+ entitlementErrors: [EntitlementError!]!
2918
+ }
2919
+
2920
+ """Payload for capacityAllocationUpdate."""
2921
+ type CapacityAllocationUpdate {
2922
+ capacityAllocation: CapacityAllocation
2923
+ entitlementErrors: [EntitlementError!]!
2924
+ }
2925
+
2926
+ """Input for updating a capacity allocation."""
2927
+ input CapacityAllocationUpdateInput {
2928
+ maxQuantity: Int
2929
+ }
2930
+
2931
+ """
2932
+ Seat capacity for one event (SPEC-030 Stack T). `capacity` is the only stored number — what remains is computed from live claims, so there is no availability counter to drift.
2933
+ """
2934
+ type CapacityPool implements Node {
2935
+ """The Globally Unique ID of this object"""
2936
+ id: ID!
2937
+
2938
+ """Operator-facing label, e.g. "Main hall — Sat night"."""
2939
+ name: String!
2940
+
2941
+ """Total seats. 0 is legal and pauses sales without touching sold seats."""
2942
+ capacity: Int!
2943
+
2944
+ """Event window start; null means unbounded. Drives scan validity."""
2945
+ startsAt: DateTime
2946
+
2947
+ """Event window end; null means unbounded."""
2948
+ endsAt: DateTime
2949
+
2950
+ """Row creation time."""
2951
+ createdAt: DateTime!
2952
+
2953
+ """Row last-modified time."""
2954
+ updatedAt: DateTime!
2955
+
2956
+ """The seller whose event capacity this is."""
2957
+ seller: Seller!
2958
+
2959
+ """The ticket classes (variants) drawing on this capacity."""
2960
+ allocations: [CapacityAllocation!]!
2961
+
2962
+ """Computed seat usage across all allocated variants."""
2963
+ usage: CapacityUsage!
2964
+ }
2965
+
2966
+ """A connection to a list of items."""
2967
+ type CapacityPoolCountableConnection {
2968
+ """Pagination data for this connection"""
2969
+ pageInfo: PageInfo!
2970
+
2971
+ """Contains the nodes in this connection"""
2972
+ edges: [CapacityPoolCountableEdge!]!
2973
+
2974
+ """Total quantity of existing nodes."""
2975
+ totalCount: Int!
2976
+ }
2977
+
2978
+ """An edge in a connection."""
2979
+ type CapacityPoolCountableEdge {
2980
+ """A cursor for use in pagination"""
2981
+ cursor: String!
2982
+
2983
+ """The item at the end of the edge"""
2984
+ node: CapacityPool!
2985
+ }
2986
+
2987
+ """Payload for capacityPoolCreate."""
2988
+ type CapacityPoolCreate {
2989
+ capacityPool: CapacityPool
2990
+ entitlementErrors: [EntitlementError!]!
2991
+ }
2992
+
2993
+ """Input for creating a capacity pool."""
2994
+ input CapacityPoolCreateInput {
2995
+ """Operator-facing label, e.g. "Main hall — Sat night"."""
2996
+ name: String!
2997
+
2998
+ """Total seats. 0 is legal and pauses sales."""
2999
+ capacity: Int!
3000
+
3001
+ """Event window start; omit for unbounded."""
3002
+ startsAt: DateTime = null
3003
+
3004
+ """Event window end; omit for unbounded."""
3005
+ endsAt: DateTime = null
3006
+
3007
+ """
3008
+ Operator-only: which seller owns the pool. Seller requestors always create pools for their own seller and must omit this.
3009
+ """
3010
+ sellerId: ID = null
3011
+ }
3012
+
3013
+ """Payload for capacityPoolDelete."""
3014
+ type CapacityPoolDelete {
3015
+ deletedPoolId: ID
3016
+ entitlementErrors: [EntitlementError!]!
3017
+ }
3018
+
3019
+ """Payload for capacityPoolUpdate."""
3020
+ type CapacityPoolUpdate {
3021
+ capacityPool: CapacityPool
3022
+ entitlementErrors: [EntitlementError!]!
3023
+ }
3024
+
3025
+ """Input for updating a capacity pool."""
3026
+ input CapacityPoolUpdateInput {
3027
+ name: String = null
3028
+ capacity: Int = null
3029
+ startsAt: DateTime
3030
+ endsAt: DateTime
3031
+ }
3032
+
3033
+ """Seat usage for a capacity pool — always computed, never stored."""
3034
+ type CapacityUsage {
3035
+ """The pool's configured capacity."""
3036
+ total: Int!
3037
+
3038
+ """
3039
+ Seats held by live claims: non-terminal ticket entitlements plus seat holds.
3040
+ """
3041
+ consumed: Int!
3042
+
3043
+ """Seats still sellable pool-wide, floored at zero."""
3044
+ available: Int!
3045
+ }
3046
+
2861
3047
  """Result of catalogExport mutation."""
2862
3048
  type CatalogExport {
2863
3049
  """Whether the export was successful."""
@@ -6583,6 +6769,23 @@ type Entitlement implements Node {
6583
6769
 
6584
6770
  """Download credentials issued against this entitlement."""
6585
6771
  contentUrls: [DigitalContentUrl!]!
6772
+
6773
+ """
6774
+ Who walks in, when named (SPEC-030 T-OD3). Null means the purchaser is the holder. Not owner-gated: the gate agent reads this at the door, and a name is not a bearer credential.
6775
+ """
6776
+ attendee: AttendeeProfile
6777
+
6778
+ """
6779
+ Active QR token for a TICKET claim (SPEC-030) — the payload the buyer's ticket page renders as a barcode. Owner-scoped: null unless the requesting customer holds this claim, and null once the claim stops being usable or the credential rotates away (transfer voids the old token).
6780
+ """
6781
+ activeTicketToken: UUID
6782
+ }
6783
+
6784
+ """Payload for entitlementAttendeeUpsert."""
6785
+ type EntitlementAttendeeUpsert {
6786
+ entitlement: Entitlement
6787
+ attendee: AttendeeProfile
6788
+ entitlementErrors: [EntitlementError!]!
6586
6789
  }
6587
6790
 
6588
6791
  """A connection to a list of items."""
@@ -6625,6 +6828,19 @@ enum EntitlementErrorCode {
6625
6828
  NOT_FOUND
6626
6829
  }
6627
6830
 
6831
+ """
6832
+ Payload for entitlementRevealCode: the plaintext secret, exactly here and nowhere else.
6833
+ """
6834
+ type EntitlementRevealCode {
6835
+ entitlement: Entitlement
6836
+
6837
+ """
6838
+ The plaintext secret. Returned ONLY by this mutation (C-OD3 reveal-on-demand); the first successful call flips the key to REVEALED and thereby the unit's refund eligibility.
6839
+ """
6840
+ code: String
6841
+ entitlementErrors: [EntitlementError!]!
6842
+ }
6843
+
6628
6844
  """Payload for entitlementRevoke."""
6629
6845
  type EntitlementRevoke {
6630
6846
  entitlement: Entitlement
@@ -6652,6 +6868,14 @@ enum EntitlementStatus {
6652
6868
  TRANSFERRED
6653
6869
  }
6654
6870
 
6871
+ """
6872
+ Payload for entitlementTransfer. `entitlement` is the RECIPIENT'S new claim; the sender's row is now TRANSFERRED and its barcode is dead.
6873
+ """
6874
+ type EntitlementTransfer {
6875
+ entitlement: Entitlement
6876
+ entitlementErrors: [EntitlementError!]!
6877
+ }
6878
+
6655
6879
  """Represents a generic event in the audit log."""
6656
6880
  type Event {
6657
6881
  """The unique identifier across all event tables."""
@@ -7217,6 +7441,10 @@ enum FulfillmentKind {
7217
7441
  SHIPMENT
7218
7442
  DIGITAL_FILE
7219
7443
  SERVICE
7444
+ LICENSE_KEY
7445
+ CODE
7446
+ GIFT_CARD
7447
+ TICKET
7220
7448
  }
7221
7449
 
7222
7450
  """Represents a line in a fulfillment."""
@@ -8316,6 +8544,213 @@ enum LengthUnitsStrEnum {
8316
8544
  M
8317
8545
  }
8318
8546
 
8547
+ """
8548
+ One secret credential in a pool. The secret itself is never exposed here — buyers reveal it through their entitlement (Stack C3); operators and sellers see only the last four characters.
8549
+ """
8550
+ type LicenseKey implements Node {
8551
+ """The Globally Unique ID of this object"""
8552
+ id: ID!
8553
+
8554
+ """Display form of the secret — its last four characters."""
8555
+ secretLast4: String!
8556
+
8557
+ """Verification-API uses recorded against this key."""
8558
+ activationCount: Int!
8559
+
8560
+ """When a checkout held it."""
8561
+ reservedAt: DateTime
8562
+
8563
+ """When it was sold."""
8564
+ issuedAt: DateTime
8565
+
8566
+ """When the buyer first saw it."""
8567
+ revealedAt: DateTime
8568
+
8569
+ """When it was withdrawn."""
8570
+ voidedAt: DateTime
8571
+
8572
+ """Row creation time."""
8573
+ createdAt: DateTime!
8574
+
8575
+ """Lifecycle state."""
8576
+ status: LicenseKeyStatus!
8577
+
8578
+ """The customer claim this key was issued against, if sold."""
8579
+ entitlement: Entitlement
8580
+ }
8581
+
8582
+ """A connection to a list of items."""
8583
+ type LicenseKeyCountableConnection {
8584
+ """Pagination data for this connection"""
8585
+ pageInfo: PageInfo!
8586
+
8587
+ """Contains the nodes in this connection"""
8588
+ edges: [LicenseKeyCountableEdge!]!
8589
+
8590
+ """Total quantity of existing nodes."""
8591
+ totalCount: Int!
8592
+ }
8593
+
8594
+ """An edge in a connection."""
8595
+ type LicenseKeyCountableEdge {
8596
+ """A cursor for use in pagination"""
8597
+ cursor: String!
8598
+
8599
+ """The item at the end of the edge"""
8600
+ node: LicenseKey!
8601
+ }
8602
+
8603
+ """Key counts by lifecycle state for a license key pool."""
8604
+ type LicenseKeyCounts {
8605
+ """In inventory, sellable."""
8606
+ available: Int!
8607
+
8608
+ """Held by a live checkout."""
8609
+ reserved: Int!
8610
+
8611
+ """Sold; bound to an entitlement."""
8612
+ issued: Int!
8613
+
8614
+ """Seen by the buyer."""
8615
+ revealed: Int!
8616
+
8617
+ """Withdrawn."""
8618
+ void: Int!
8619
+
8620
+ """Every key ever added to the pool."""
8621
+ total: Int!
8622
+ }
8623
+
8624
+ """
8625
+ Secret-credential inventory for one variant (SPEC-029 Stack C). Availability is computed from key states — a code is a secret issued once, never a stock counter.
8626
+ """
8627
+ type LicenseKeyPool implements Node {
8628
+ """The Globally Unique ID of this object"""
8629
+ id: ID!
8630
+
8631
+ """An inactive pool stops selling without touching issued keys."""
8632
+ isActive: Boolean!
8633
+
8634
+ """Row creation time."""
8635
+ createdAt: DateTime!
8636
+
8637
+ """Row last-modified time."""
8638
+ updatedAt: DateTime!
8639
+
8640
+ """How this pool obtains its keys."""
8641
+ mode: LicenseKeyPoolMode!
8642
+
8643
+ """Minting parameters for GENERATED pools; UPLOADED pools ignore it."""
8644
+ generatorConfig: JSONString!
8645
+
8646
+ """The variant this pool sells keys for."""
8647
+ variant: ProductVariant!
8648
+
8649
+ """The seller whose inventory this is."""
8650
+ seller: Seller!
8651
+
8652
+ """Key counts by lifecycle state."""
8653
+ keyCounts: LicenseKeyCounts!
8654
+ }
8655
+
8656
+ """A connection to a list of items."""
8657
+ type LicenseKeyPoolCountableConnection {
8658
+ """Pagination data for this connection"""
8659
+ pageInfo: PageInfo!
8660
+
8661
+ """Contains the nodes in this connection"""
8662
+ edges: [LicenseKeyPoolCountableEdge!]!
8663
+
8664
+ """Total quantity of existing nodes."""
8665
+ totalCount: Int!
8666
+ }
8667
+
8668
+ """An edge in a connection."""
8669
+ type LicenseKeyPoolCountableEdge {
8670
+ """A cursor for use in pagination"""
8671
+ cursor: String!
8672
+
8673
+ """The item at the end of the edge"""
8674
+ node: LicenseKeyPool!
8675
+ }
8676
+
8677
+ """Payload for licenseKeyPoolCreate."""
8678
+ type LicenseKeyPoolCreate {
8679
+ licenseKeyPool: LicenseKeyPool
8680
+ entitlementErrors: [EntitlementError!]!
8681
+ }
8682
+
8683
+ """Input for creating a license key pool."""
8684
+ input LicenseKeyPoolCreateInput {
8685
+ """The variant this pool sells keys for."""
8686
+ variantId: ID!
8687
+
8688
+ """UPLOADED (seller supplies keys) or GENERATED (platform mints)."""
8689
+ mode: LicenseKeyPoolMode! = UPLOADED
8690
+
8691
+ """Minting parameters for GENERATED pools; ignored for UPLOADED."""
8692
+ generatorConfig: JSONString = null
8693
+
8694
+ """Whether the pool is sellable once stocked."""
8695
+ isActive: Boolean! = true
8696
+
8697
+ """
8698
+ Operator-only: which seller owns the pool. Seller requestors always create pools for their own seller and must omit this.
8699
+ """
8700
+ sellerId: ID = null
8701
+ }
8702
+
8703
+ """Payload for licenseKeyPoolDelete."""
8704
+ type LicenseKeyPoolDelete {
8705
+ deletedPoolId: ID
8706
+ entitlementErrors: [EntitlementError!]!
8707
+ }
8708
+
8709
+ """How a license key pool obtains its keys."""
8710
+ enum LicenseKeyPoolMode {
8711
+ UPLOADED
8712
+ GENERATED
8713
+ }
8714
+
8715
+ """Payload for licenseKeyPoolUpdate."""
8716
+ type LicenseKeyPoolUpdate {
8717
+ licenseKeyPool: LicenseKeyPool
8718
+ entitlementErrors: [EntitlementError!]!
8719
+ }
8720
+
8721
+ """Input for updating a license key pool."""
8722
+ input LicenseKeyPoolUpdateInput {
8723
+ isActive: Boolean = null
8724
+ generatorConfig: JSONString = null
8725
+ }
8726
+
8727
+ """
8728
+ Forward-only lifecycle of a secret credential. A code is a secret issued once, never a stock counter: states only move toward consumption, VOID is reachable from anywhere, and only the reservation sweep may return a RESERVED key to AVAILABLE.
8729
+ """
8730
+ enum LicenseKeyStatus {
8731
+ AVAILABLE
8732
+ RESERVED
8733
+ ISSUED
8734
+ REVEALED
8735
+ VOID
8736
+ }
8737
+
8738
+ """Payload for licenseKeyVoid."""
8739
+ type LicenseKeyVoid {
8740
+ licenseKey: LicenseKey
8741
+ entitlementErrors: [EntitlementError!]!
8742
+ }
8743
+
8744
+ """Payload for licenseKeysAdd."""
8745
+ type LicenseKeysAdd {
8746
+ licenseKeyPool: LicenseKeyPool
8747
+ addedCount: Int!
8748
+
8749
+ """Keys skipped because an identical secret already exists in the pool."""
8750
+ skippedCount: Int!
8751
+ entitlementErrors: [EntitlementError!]!
8752
+ }
8753
+
8319
8754
  """Per-tenant configuration for the hosted MCP surface."""
8320
8755
  type MCPConfiguration {
8321
8756
  """The ID of the object."""
@@ -9960,13 +10395,13 @@ type Mutation {
9960
10395
  refundsDelete(ids: [ID!]!): RefundBulkDelete!
9961
10396
 
9962
10397
  """Change status of multiple refunds."""
9963
- refundsChangeStatus(ids: [ID!]!, status: RefundStatusEnum!): RefundsChangeStatus!
10398
+ refundsChangeStatus(ids: [ID!]!, status: RefundStatusEnum!, allowRevealed: Boolean! = false): RefundsChangeStatus!
9964
10399
 
9965
10400
  """Add refund lines to a refund."""
9966
- refundLinesAdd(refundId: ID!, lineItems: [RefundLineInput!]!): RefundLinesAdd!
10401
+ refundLinesAdd(refundId: ID!, lineItems: [RefundLineInput!]!, allowRevealed: Boolean! = false): RefundLinesAdd!
9967
10402
 
9968
10403
  """Update refund lines."""
9969
- refundLinesUpdate(refundId: ID!, lineItems: [RefundLineUpdateInput!]!): RefundLinesUpdate!
10404
+ refundLinesUpdate(refundId: ID!, lineItems: [RefundLineUpdateInput!]!, allowRevealed: Boolean! = false): RefundLinesUpdate!
9970
10405
 
9971
10406
  """Delete refund lines."""
9972
10407
  refundLinesDelete(refundId: ID!, ids: [ID!]!): RefundLineBulkDelete!
@@ -10060,6 +10495,81 @@ type Mutation {
10060
10495
  """
10061
10496
  entitlementRevoke(id: ID!, reason: EntitlementRevokedReason! = OPERATOR): EntitlementRevoke!
10062
10497
 
10498
+ """
10499
+ Reveal the secret code behind one of YOUR entitlements. The first successful call is the audited reveal event (flips the unit's refund eligibility); later calls return the same code. Owner-scoped: this always means the requesting customer's own library.
10500
+ """
10501
+ entitlementRevealCode(id: ID!): EntitlementRevealCode!
10502
+
10503
+ """
10504
+ Create a license key pool for a variant. Requires MANAGE_PRODUCTS; sellers create pools for their own variants, operators name a seller. The seller must be approved for digital sales.
10505
+ """
10506
+ licenseKeyPoolCreate(input: LicenseKeyPoolCreateInput!): LicenseKeyPoolCreate!
10507
+
10508
+ """
10509
+ Update a license key pool's activity flag or generator config. Requires MANAGE_PRODUCTS; the pool's mode is immutable.
10510
+ """
10511
+ licenseKeyPoolUpdate(id: ID!, input: LicenseKeyPoolUpdateInput!): LicenseKeyPoolUpdate!
10512
+
10513
+ """
10514
+ Delete a license key pool. Refused while the pool holds reserved, issued, or revealed keys — sold inventory is customer history. Requires MANAGE_PRODUCTS.
10515
+ """
10516
+ licenseKeyPoolDelete(id: ID!): LicenseKeyPoolDelete!
10517
+
10518
+ """
10519
+ Add uploaded secrets to an UPLOADED pool. Duplicates of keys already in the pool are skipped, not errors. Requires MANAGE_PRODUCTS and a digital-approved seller.
10520
+ """
10521
+ licenseKeysAdd(id: ID!, keys: [String!]!): LicenseKeysAdd!
10522
+
10523
+ """
10524
+ Withdraw one UNSOLD license key (AVAILABLE/RESERVED -> VOID). Idempotent: voiding a VOID key returns it unchanged. Keys already issued to a customer are refused — withdrawing those is entitlement revocation (Stack C3), which also tells the customer. Requires MANAGE_PRODUCTS.
10525
+ """
10526
+ licenseKeyVoid(id: ID!): LicenseKeyVoid!
10527
+
10528
+ """
10529
+ Create a capacity pool for ticket sales (SPEC-030). Requires MANAGE_PRODUCTS; sellers create pools for themselves, operators name a seller.
10530
+ """
10531
+ capacityPoolCreate(input: CapacityPoolCreateInput!): CapacityPoolCreate!
10532
+
10533
+ """
10534
+ Update a capacity pool's name, capacity, or event window. Requires MANAGE_PRODUCTS. Shrinking capacity below what is sold is legal — availability floors at zero; sold seats are untouched.
10535
+ """
10536
+ capacityPoolUpdate(id: ID!, input: CapacityPoolUpdateInput!): CapacityPoolUpdate!
10537
+
10538
+ """
10539
+ Delete a capacity pool. Refused while live seat holds exist or any allocated variant carries a non-terminal ticket claim — sold seats are customer history. Requires MANAGE_PRODUCTS.
10540
+ """
10541
+ capacityPoolDelete(id: ID!): CapacityPoolDelete!
10542
+
10543
+ """
10544
+ Allocate a TICKET variant (ticket class) to a capacity pool. One pool per variant — availability must never face an ambiguous choice of inventory. Requires MANAGE_PRODUCTS.
10545
+ """
10546
+ capacityAllocationCreate(input: CapacityAllocationCreateInput!): CapacityAllocationCreate!
10547
+
10548
+ """
10549
+ Update a capacity allocation's per-variant cap. Pass null to remove the cap. Requires MANAGE_PRODUCTS.
10550
+ """
10551
+ capacityAllocationUpdate(id: ID!, input: CapacityAllocationUpdateInput!): CapacityAllocationUpdate!
10552
+
10553
+ """
10554
+ Detach a variant from its capacity pool. Refused while the variant carries live seat holds or non-terminal ticket claims — those seats would silently fall out of the pool's consumed count. Requires MANAGE_PRODUCTS.
10555
+ """
10556
+ capacityAllocationDelete(id: ID!): CapacityAllocationDelete!
10557
+
10558
+ """
10559
+ Scan a ticket barcode at the door (SPEC-030). Requires MANAGE_ORDERS; seller staff scan only their own seller's tickets, operators any. Single-use: a second scan of the same barcode fails with when the first admission happened. scannerId is an optional operator label (gate/device) recorded with the event.
10560
+ """
10561
+ ticketScan(token: String!, scannerId: String = null): TicketScan!
10562
+
10563
+ """
10564
+ Transfer one of YOUR tickets to another email (SPEC-030). The recipient gets a new claim with a fresh barcode; yours becomes TRANSFERRED and its barcode dies immediately. Admission moves — money does not: refunds still belong to the original purchaser. Owner-scoped, tickets only, refused once the ticket has been scanned.
10565
+ """
10566
+ entitlementTransfer(id: ID!, toEmail: String!): EntitlementTransfer!
10567
+
10568
+ """
10569
+ Name (or rename) who attends on one of YOUR tickets (SPEC-030 T-OD3). Optional and post-purchase; empty fields mean the purchaser is the holder. Owner-scoped, tickets only.
10570
+ """
10571
+ entitlementAttendeeUpsert(id: ID!, name: String = null, email: String = null): EntitlementAttendeeUpsert!
10572
+
10063
10573
  """Create a new payout synchronously."""
10064
10574
  payoutCreate(input: PayoutCreateInput!): PayoutCreate! @deprecated(reason: "This will be removed on July 15, 2025. Use payoutCreateAsync instead.")
10065
10575
 
@@ -12074,6 +12584,9 @@ enum NotifyEventTypeEnum {
12074
12584
  """Merchant Account Staff Reset Password"""
12075
12585
  MERCHANT_ACCOUNT_STAFF_RESET_PASSWORD
12076
12586
 
12587
+ """Account Added To Seller"""
12588
+ ACCOUNT_ADDED_TO_SELLER
12589
+
12077
12590
  """Csv Export Products Success"""
12078
12591
  CSV_EXPORT_PRODUCTS_SUCCESS
12079
12592
 
@@ -14247,6 +14760,7 @@ enum PayoutStatusEnum {
14247
14760
  ERROR
14248
14761
  CREATING
14249
14762
  PROCESSING
14763
+ ABANDONED
14250
14764
  }
14251
14765
 
14252
14766
  """Filter values for payout status."""
@@ -14976,7 +15490,7 @@ type Product implements Node & ObjectWithMetadata {
14976
15490
  imageById(id: ID = null): ProductImage
14977
15491
 
14978
15492
  """The seller that owns this product"""
14979
- seller: Seller
15493
+ seller: Seller!
14980
15494
 
14981
15495
  """The category this product belongs to"""
14982
15496
  category: Category
@@ -16602,6 +17116,11 @@ type ProductVariant implements Node & ObjectWithMetadata {
16602
17116
  """Quantity of variant available for sale"""
16603
17117
  quantityAvailable(countryCode: CountryCode = null): Int!
16604
17118
 
17119
+ """
17120
+ Sellable seats for a TICKET variant (SPEC-030): its capacity pool's remaining seats, further capped by the variant's own allocation limit when one is set. Null for variants with no capacity allocation (non-ticket variants included). Advisory — the binding check runs under the pool lock at checkout completion.
17121
+ """
17122
+ availableTicketCount: Int
17123
+
16605
17124
  """
16606
17125
  Whether this variant belongs to a bundle product. Equivalent to `product.isBundle` — exposed here so clients can branch on the variant without an additional product lookup.
16607
17126
  """
@@ -17477,6 +17996,7 @@ enum ProductWarningEnum {
17477
17996
  DEFAULT_VARIANT_REQUIRED
17478
17997
  SELLER_PAUSED
17479
17998
  SELLER_DIGITAL_SUSPENDED
17999
+ SELLER_AGREEMENT_UNACKNOWLEDGED
17480
18000
  }
17481
18001
 
17482
18002
  """Result of products export mutation."""
@@ -18226,6 +18746,65 @@ type Query {
18226
18746
  last: Int = null
18227
18747
  ): EntitlementCountableConnection!
18228
18748
 
18749
+ """
18750
+ List license key pools. Requires MANAGE_PRODUCTS. Operators see every pool; a seller sees only their own inventory.
18751
+ """
18752
+ licenseKeyPools(
18753
+ """Returns the items in the list that come before the specified cursor."""
18754
+ before: String = null
18755
+
18756
+ """Returns the items in the list that come after the specified cursor."""
18757
+ after: String = null
18758
+
18759
+ """Returns the first n items from the list."""
18760
+ first: Int = null
18761
+
18762
+ """Returns the items in the list that come after the specified cursor."""
18763
+ last: Int = null
18764
+ ): LicenseKeyPoolCountableConnection!
18765
+
18766
+ """
18767
+ Look up one capacity pool (SPEC-030). Requires MANAGE_PRODUCTS; operators reach any pool, a seller only their own — missing and unowned are both null. The detail-page fetch: CapacityPool is deliberately NOT node-exposed, so this scoped query is the only by-id path.
18768
+ """
18769
+ capacityPool(id: ID!): CapacityPool
18770
+
18771
+ """
18772
+ List ticket capacity pools (SPEC-030). Requires MANAGE_PRODUCTS. Operators see every pool; a seller sees only their own.
18773
+ """
18774
+ capacityPools(
18775
+ """Returns the items in the list that come before the specified cursor."""
18776
+ before: String = null
18777
+
18778
+ """Returns the items in the list that come after the specified cursor."""
18779
+ after: String = null
18780
+
18781
+ """Returns the first n items from the list."""
18782
+ first: Int = null
18783
+
18784
+ """Returns the items in the list that come after the specified cursor."""
18785
+ last: Int = null
18786
+ ): CapacityPoolCountableConnection!
18787
+
18788
+ """
18789
+ List one pool's keys, optionally by lifecycle state. Requires MANAGE_PRODUCTS; sellers see only their own pools. Secrets are never exposed — rows carry display and lifecycle data only.
18790
+ """
18791
+ licenseKeys(
18792
+ pool: ID!
18793
+ status: LicenseKeyStatus = null
18794
+
18795
+ """Returns the items in the list that come before the specified cursor."""
18796
+ before: String = null
18797
+
18798
+ """Returns the items in the list that come after the specified cursor."""
18799
+ after: String = null
18800
+
18801
+ """Returns the first n items from the list."""
18802
+ first: Int = null
18803
+
18804
+ """Returns the items in the list that come after the specified cursor."""
18805
+ last: Int = null
18806
+ ): LicenseKeyCountableConnection!
18807
+
18229
18808
  """Look up a payout by ID. Requires MANAGE_PAYOUTS permission."""
18230
18809
  payout(id: ID!): Payout
18231
18810
 
@@ -22680,6 +23259,15 @@ type ThirtySixtyNinetySellerReportRowType {
22680
23259
  sales61to90amount: Float
22681
23260
  }
22682
23261
 
23262
+ """Payload for ticketScan."""
23263
+ type TicketScan {
23264
+ entitlement: Entitlement
23265
+
23266
+ """When THIS admission was recorded."""
23267
+ scannedAt: DateTime
23268
+ entitlementErrors: [EntitlementError!]!
23269
+ }
23270
+
22683
23271
  """A single data point in a time series chart"""
22684
23272
  type TimeSeriesDataPoint {
22685
23273
  """The date/time for this data point"""
@@ -24597,6 +25185,9 @@ enum WebhookEventTypeEnum {
24597
25185
  DIGITAL_CONTENT_URL_REVOKED
24598
25186
  ENTITLEMENT_GRANTED
24599
25187
  ENTITLEMENT_REVOKED
25188
+ LICENSE_KEY_ISSUED
25189
+ LICENSE_KEY_REVEALED
25190
+ LICENSE_KEY_VOIDED
24600
25191
  CUSTOMER_UPDATED
24601
25192
  CUSTOMER_DELETED
24602
25193
  FULFILLMENT_CREATED
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nautical-commerce/graphql-schema",
3
- "version": "4.10.1",
3
+ "version": "4.12.0",
4
4
  "description": "Traide API GraphQL Schema",
5
5
  "main": "./nautical/schema.graphql",
6
6
  "scripts": {