@nautical-commerce/graphql-schema 4.6.0 → 4.8.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.
@@ -1515,7 +1515,9 @@ type Attribute implements Node & ObjectWithMetadata {
1515
1515
  """The input type to use for entering attribute values in the dashboard."""
1516
1516
  inputType: AttributeInputTypeEnum!
1517
1517
 
1518
- """The values available for this attribute"""
1518
+ """
1519
+ ALL values defined for this attribute — the full catalogue of options it can take, NOT the values assigned to any particular product or variant. For the values assigned to a specific object, use the `values` field on SelectedAttribute (a sibling of `attribute`, one level up). Narrowed to a subset when `search` or `first` is supplied. Returns an empty list unless `inputType` is DROPDOWN or MULTISELECT — the other input types carry a unique value per object rather than a shared catalogue.
1520
+ """
1519
1521
  values(search: String = null, first: Int = null): [AttributeValue!]!
1520
1522
 
1521
1523
  """Seller who created this attribute, if any"""
@@ -6445,6 +6447,134 @@ input EmailTemplateUpdateInput {
6445
6447
  isCustom: Boolean = null
6446
6448
  }
6447
6449
 
6450
+ """
6451
+ A customer's durable claim on something they bought, held separately from the artifacts that deliver it. A download link may expire or be re-issued without changing what the customer owns.
6452
+ """
6453
+ type Entitlement implements Node {
6454
+ """The Globally Unique ID of this object"""
6455
+ id: ID!
6456
+
6457
+ """Identity the claim is bound to. Present even for guest checkouts."""
6458
+ customerEmail: String!
6459
+
6460
+ """Units covered by this claim."""
6461
+ quantity: Int!
6462
+
6463
+ """Product name as recorded at purchase — survives catalog changes."""
6464
+ productName: String!
6465
+
6466
+ """Variant name at purchase."""
6467
+ variantName: String!
6468
+
6469
+ """SKU at purchase."""
6470
+ productSku: String!
6471
+
6472
+ """When the claim was granted."""
6473
+ grantedAt: DateTime
6474
+
6475
+ """When the claim lapses, if ever."""
6476
+ expiresAt: DateTime
6477
+
6478
+ """When the claim was withdrawn."""
6479
+ revokedAt: DateTime
6480
+
6481
+ """Row creation time."""
6482
+ createdAt: DateTime!
6483
+
6484
+ """Row last-modified time."""
6485
+ updatedAt: DateTime!
6486
+
6487
+ """Lifecycle state of the claim."""
6488
+ status: EntitlementStatus!
6489
+
6490
+ """How this was fulfilled, snapshotted at grant time."""
6491
+ kind: FulfillmentKind!
6492
+
6493
+ """Why the claim was withdrawn, if it was."""
6494
+ revokedReason: EntitlementRevokedReason
6495
+
6496
+ """
6497
+ Whether redemption is permitted right now. Combines status with the expiry clock, since nothing sweeps lapsed rows.
6498
+ """
6499
+ isUsable: Boolean!
6500
+
6501
+ """The variant this claim covers, if it still exists."""
6502
+ variant: ProductVariant
6503
+
6504
+ """Uses of this entitlement, most recent first."""
6505
+ redemptions: [RedemptionEvent!]!
6506
+
6507
+ """Download credentials issued against this entitlement."""
6508
+ contentUrls: [DigitalContentUrl!]!
6509
+ }
6510
+
6511
+ """A connection to a list of items."""
6512
+ type EntitlementCountableConnection {
6513
+ """Pagination data for this connection"""
6514
+ pageInfo: PageInfo!
6515
+
6516
+ """Contains the nodes in this connection"""
6517
+ edges: [EntitlementCountableEdge!]!
6518
+
6519
+ """Total quantity of existing nodes."""
6520
+ totalCount: Int!
6521
+ }
6522
+
6523
+ """An edge in a connection."""
6524
+ type EntitlementCountableEdge {
6525
+ """A cursor for use in pagination"""
6526
+ cursor: String!
6527
+
6528
+ """The item at the end of the edge"""
6529
+ node: Entitlement!
6530
+ }
6531
+
6532
+ """Represents errors from entitlement operations."""
6533
+ type EntitlementError {
6534
+ field: String
6535
+
6536
+ """The error message."""
6537
+ message: String!
6538
+
6539
+ """The error code."""
6540
+ code: EntitlementErrorCode!
6541
+ }
6542
+
6543
+ """An enumeration of possible error codes for entitlement operations."""
6544
+ enum EntitlementErrorCode {
6545
+ GRAPHQL_ERROR
6546
+ INTERNAL_ERROR
6547
+ INVALID
6548
+ NOT_FOUND
6549
+ }
6550
+
6551
+ """Payload for entitlementRevoke."""
6552
+ type EntitlementRevoke {
6553
+ entitlement: Entitlement
6554
+ entitlementErrors: [EntitlementError!]!
6555
+ }
6556
+
6557
+ """Why an entitlement was withdrawn. Drives downstream trust policy."""
6558
+ enum EntitlementRevokedReason {
6559
+ REFUND
6560
+ CHARGEBACK
6561
+ FRAUD
6562
+ OPERATOR
6563
+ SELLER
6564
+ }
6565
+
6566
+ """
6567
+ Lifecycle of a customer's claim. States rather than booleans: 'revoked because refunded' and 'expired because the term ended' are different facts, and only ACTIVE permits redemption.
6568
+ """
6569
+ enum EntitlementStatus {
6570
+ PENDING
6571
+ ACTIVE
6572
+ SUSPENDED
6573
+ EXPIRED
6574
+ REVOKED
6575
+ TRANSFERRED
6576
+ }
6577
+
6448
6578
  """Represents a generic event in the audit log."""
6449
6579
  type Event {
6450
6580
  """The unique identifier across all event tables."""
@@ -8206,6 +8336,7 @@ type MarketplaceConfiguration {
8206
8336
  automaticFulfillmentDigitalProducts: Boolean!
8207
8337
  defaultDigitalMaxDownloads: Int
8208
8338
  defaultDigitalUrlValidDays: Int
8339
+ revokeEntitlementsOnRefund: Boolean!
8209
8340
  trackInventoryByDefault: Boolean!
8210
8341
  name: String!
8211
8342
  defaultMailSenderName: String!
@@ -9828,10 +9959,10 @@ type Mutation {
9828
9959
  """Clear all seller shipping methods."""
9829
9960
  checkoutSellerShippingMethodsClear(checkoutId: ID!): CheckoutSellerShippingMethodsClear!
9830
9961
 
9831
- """Add a promo code (voucher or gift card)."""
9962
+ """Add a voucher code to the checkout."""
9832
9963
  checkoutAddPromoCode(checkoutId: ID!, promoCode: String!): CheckoutAddPromoCode!
9833
9964
 
9834
- """Remove a promo code."""
9965
+ """Remove a voucher code from the checkout."""
9835
9966
  checkoutRemovePromoCode(checkoutId: ID!, promoCode: String!): CheckoutRemovePromoCode!
9836
9967
 
9837
9968
  """Add purchase order numbers."""
@@ -9846,6 +9977,11 @@ type Mutation {
9846
9977
  """Complete checkout and create order."""
9847
9978
  checkoutComplete(checkoutId: ID!, storeSource: Boolean = false, poNumber: String = null, userOverride: ID = null, redirectUrl: String = null, paymentData: JSONString = null): CheckoutComplete!
9848
9979
 
9980
+ """
9981
+ Withdraw a customer's entitlement, invalidating any download links issued against it. Requires MANAGE_MARKETPLACE.
9982
+ """
9983
+ entitlementRevoke(id: ID!, reason: EntitlementRevokedReason! = OPERATOR): EntitlementRevoke!
9984
+
9849
9985
  """Create a new payout synchronously."""
9850
9986
  payoutCreate(input: PayoutCreateInput!): PayoutCreate! @deprecated(reason: "This will be removed on July 15, 2025. Use payoutCreateAsync instead.")
9851
9987
 
@@ -17963,6 +18099,23 @@ type Query {
17963
18099
  last: Int = null
17964
18100
  ): RefundCountableConnection!
17965
18101
 
18102
+ """
18103
+ List entitlements. Requires MANAGE_ORDERS. Marketplace operators see every entitlement; a seller sees only claims against their own goods.
18104
+ """
18105
+ entitlements(
18106
+ """Returns the items in the list that come before the specified cursor."""
18107
+ before: String = null
18108
+
18109
+ """Returns the items in the list that come after the specified cursor."""
18110
+ after: String = null
18111
+
18112
+ """Returns the first n items from the list."""
18113
+ first: Int = null
18114
+
18115
+ """Returns the items in the list that come after the specified cursor."""
18116
+ last: Int = null
18117
+ ): EntitlementCountableConnection!
18118
+
17966
18119
  """Look up a payout by ID. Requires MANAGE_PAYOUTS permission."""
17967
18120
  payout(id: ID!): Payout
17968
18121
 
@@ -18647,6 +18800,36 @@ enum RecipientTypeEnum {
18647
18800
  STAFF_MEMBER_MARKETPLACE_OR_SELLER @deprecated(reason: "Use STAFF_MEMBER_MARKETPLACE or STAFF_MEMBER_SELLER instead. This value will be deprecated on September 30, 2025")
18648
18801
  }
18649
18802
 
18803
+ """
18804
+ A single use of an entitlement — a download now, a scan or activation later.
18805
+ """
18806
+ type RedemptionEvent implements Node {
18807
+ """The Globally Unique ID of this object"""
18808
+ id: ID!
18809
+
18810
+ """When the redemption happened."""
18811
+ occurredAt: DateTime!
18812
+
18813
+ """What kind of use this was."""
18814
+ eventType: RedemptionEventType!
18815
+
18816
+ """
18817
+ Key that made this redemption idempotent, when the producer supplied one. Downloads have none — every download is a distinct use.
18818
+ """
18819
+ idempotencyKey: String
18820
+ }
18821
+
18822
+ """
18823
+ A use of an entitlement. Only DOWNLOAD is produced in v1; the remaining values are reserved for the fulfillment kinds whose stacks have not shipped.
18824
+ """
18825
+ enum RedemptionEventType {
18826
+ DOWNLOAD
18827
+ ACTIVATION
18828
+ REVEAL
18829
+ SCAN
18830
+ CHECK_IN
18831
+ }
18832
+
18650
18833
  """
18651
18834
  Represents a refund scoped to a nautical order, seller order, or order line.
18652
18835
  """
@@ -19669,10 +19852,14 @@ type SalesVelocityReport {
19669
19852
 
19670
19853
  """Represents a selected attribute with its values"""
19671
19854
  type SelectedAttribute {
19672
- """The attribute definition"""
19855
+ """
19856
+ The attribute definition. Its `values` field lists every value the attribute CAN take — for the values actually assigned here, use the `values` field alongside this one, not the one nested inside it.
19857
+ """
19673
19858
  attribute: Attribute!
19674
19859
 
19675
- """Values of the attribute"""
19860
+ """
19861
+ The values assigned to THIS object — this product, variant, or custom-field owner. Usually the field you want. Contrast `attribute.values`, which is the attribute's full catalogue of possible values and is identical for every object sharing it.
19862
+ """
19676
19863
  values: [AttributeValue!]!
19677
19864
 
19678
19865
  """
@@ -22709,6 +22896,23 @@ type User implements Node & ObjectWithMetadata {
22709
22896
  last: Int = null
22710
22897
  ): WishlistCountableConnection!
22711
22898
 
22899
+ """
22900
+ The customer's library — everything they own, including items whose download links have expired. Owner-scoped: only ever the requesting user's own entitlements.
22901
+ """
22902
+ entitlements(
22903
+ """Returns the items in the list that come before the specified cursor."""
22904
+ before: String = null
22905
+
22906
+ """Returns the items in the list that come after the specified cursor."""
22907
+ after: String = null
22908
+
22909
+ """Returns the first n items from the list."""
22910
+ first: Int = null
22911
+
22912
+ """Returns the items in the list that come after the specified cursor."""
22913
+ last: Int = null
22914
+ ): EntitlementCountableConnection!
22915
+
22712
22916
  """List of documents associated with the user."""
22713
22917
  documents: [Document!]!
22714
22918
 
@@ -22982,6 +23186,7 @@ type VendorPayout implements Node & ObjectWithMetadata {
22982
23186
  gateway: String!
22983
23187
  included: Boolean!
22984
23188
  statusMessage: String
23189
+ externalBatchId: String!
22985
23190
 
22986
23191
  """Adjustment amount."""
22987
23192
  adjustmentAmount: Float! @deprecated(reason: "This will be removed on August 6, 2025. Use the adjustment field instead.")
@@ -24195,6 +24400,10 @@ enum WebhookEventTypeEnum {
24195
24400
  COLLECTION_DELETED
24196
24401
  COLLECTION_UPDATED
24197
24402
  CUSTOMER_CREATED
24403
+ DIGITAL_CONTENT_URL_CREATED
24404
+ DIGITAL_CONTENT_URL_REVOKED
24405
+ ENTITLEMENT_GRANTED
24406
+ ENTITLEMENT_REVOKED
24198
24407
  CUSTOMER_UPDATED
24199
24408
  CUSTOMER_DELETED
24200
24409
  FULFILLMENT_CREATED
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nautical-commerce/graphql-schema",
3
- "version": "4.6.0",
3
+ "version": "4.8.0",
4
4
  "description": "Traide API GraphQL Schema",
5
5
  "main": "./nautical/schema.graphql",
6
6
  "scripts": {