@nautical-commerce/graphql-schema 4.6.0 → 4.7.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.
@@ -6445,6 +6445,134 @@ input EmailTemplateUpdateInput {
6445
6445
  isCustom: Boolean = null
6446
6446
  }
6447
6447
 
6448
+ """
6449
+ 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.
6450
+ """
6451
+ type Entitlement implements Node {
6452
+ """The Globally Unique ID of this object"""
6453
+ id: ID!
6454
+
6455
+ """Identity the claim is bound to. Present even for guest checkouts."""
6456
+ customerEmail: String!
6457
+
6458
+ """Units covered by this claim."""
6459
+ quantity: Int!
6460
+
6461
+ """Product name as recorded at purchase — survives catalog changes."""
6462
+ productName: String!
6463
+
6464
+ """Variant name at purchase."""
6465
+ variantName: String!
6466
+
6467
+ """SKU at purchase."""
6468
+ productSku: String!
6469
+
6470
+ """When the claim was granted."""
6471
+ grantedAt: DateTime
6472
+
6473
+ """When the claim lapses, if ever."""
6474
+ expiresAt: DateTime
6475
+
6476
+ """When the claim was withdrawn."""
6477
+ revokedAt: DateTime
6478
+
6479
+ """Row creation time."""
6480
+ createdAt: DateTime!
6481
+
6482
+ """Row last-modified time."""
6483
+ updatedAt: DateTime!
6484
+
6485
+ """Lifecycle state of the claim."""
6486
+ status: EntitlementStatus!
6487
+
6488
+ """How this was fulfilled, snapshotted at grant time."""
6489
+ kind: FulfillmentKind!
6490
+
6491
+ """Why the claim was withdrawn, if it was."""
6492
+ revokedReason: EntitlementRevokedReason
6493
+
6494
+ """
6495
+ Whether redemption is permitted right now. Combines status with the expiry clock, since nothing sweeps lapsed rows.
6496
+ """
6497
+ isUsable: Boolean!
6498
+
6499
+ """The variant this claim covers, if it still exists."""
6500
+ variant: ProductVariant
6501
+
6502
+ """Uses of this entitlement, most recent first."""
6503
+ redemptions: [RedemptionEvent!]!
6504
+
6505
+ """Download credentials issued against this entitlement."""
6506
+ contentUrls: [DigitalContentUrl!]!
6507
+ }
6508
+
6509
+ """A connection to a list of items."""
6510
+ type EntitlementCountableConnection {
6511
+ """Pagination data for this connection"""
6512
+ pageInfo: PageInfo!
6513
+
6514
+ """Contains the nodes in this connection"""
6515
+ edges: [EntitlementCountableEdge!]!
6516
+
6517
+ """Total quantity of existing nodes."""
6518
+ totalCount: Int!
6519
+ }
6520
+
6521
+ """An edge in a connection."""
6522
+ type EntitlementCountableEdge {
6523
+ """A cursor for use in pagination"""
6524
+ cursor: String!
6525
+
6526
+ """The item at the end of the edge"""
6527
+ node: Entitlement!
6528
+ }
6529
+
6530
+ """Represents errors from entitlement operations."""
6531
+ type EntitlementError {
6532
+ field: String
6533
+
6534
+ """The error message."""
6535
+ message: String!
6536
+
6537
+ """The error code."""
6538
+ code: EntitlementErrorCode!
6539
+ }
6540
+
6541
+ """An enumeration of possible error codes for entitlement operations."""
6542
+ enum EntitlementErrorCode {
6543
+ GRAPHQL_ERROR
6544
+ INTERNAL_ERROR
6545
+ INVALID
6546
+ NOT_FOUND
6547
+ }
6548
+
6549
+ """Payload for entitlementRevoke."""
6550
+ type EntitlementRevoke {
6551
+ entitlement: Entitlement
6552
+ entitlementErrors: [EntitlementError!]!
6553
+ }
6554
+
6555
+ """Why an entitlement was withdrawn. Drives downstream trust policy."""
6556
+ enum EntitlementRevokedReason {
6557
+ REFUND
6558
+ CHARGEBACK
6559
+ FRAUD
6560
+ OPERATOR
6561
+ SELLER
6562
+ }
6563
+
6564
+ """
6565
+ 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.
6566
+ """
6567
+ enum EntitlementStatus {
6568
+ PENDING
6569
+ ACTIVE
6570
+ SUSPENDED
6571
+ EXPIRED
6572
+ REVOKED
6573
+ TRANSFERRED
6574
+ }
6575
+
6448
6576
  """Represents a generic event in the audit log."""
6449
6577
  type Event {
6450
6578
  """The unique identifier across all event tables."""
@@ -8206,6 +8334,7 @@ type MarketplaceConfiguration {
8206
8334
  automaticFulfillmentDigitalProducts: Boolean!
8207
8335
  defaultDigitalMaxDownloads: Int
8208
8336
  defaultDigitalUrlValidDays: Int
8337
+ revokeEntitlementsOnRefund: Boolean!
8209
8338
  trackInventoryByDefault: Boolean!
8210
8339
  name: String!
8211
8340
  defaultMailSenderName: String!
@@ -9846,6 +9975,11 @@ type Mutation {
9846
9975
  """Complete checkout and create order."""
9847
9976
  checkoutComplete(checkoutId: ID!, storeSource: Boolean = false, poNumber: String = null, userOverride: ID = null, redirectUrl: String = null, paymentData: JSONString = null): CheckoutComplete!
9848
9977
 
9978
+ """
9979
+ Withdraw a customer's entitlement, invalidating any download links issued against it. Requires MANAGE_MARKETPLACE.
9980
+ """
9981
+ entitlementRevoke(id: ID!, reason: EntitlementRevokedReason! = OPERATOR): EntitlementRevoke!
9982
+
9849
9983
  """Create a new payout synchronously."""
9850
9984
  payoutCreate(input: PayoutCreateInput!): PayoutCreate! @deprecated(reason: "This will be removed on July 15, 2025. Use payoutCreateAsync instead.")
9851
9985
 
@@ -17963,6 +18097,23 @@ type Query {
17963
18097
  last: Int = null
17964
18098
  ): RefundCountableConnection!
17965
18099
 
18100
+ """
18101
+ List entitlements. Requires MANAGE_ORDERS. Marketplace operators see every entitlement; a seller sees only claims against their own goods.
18102
+ """
18103
+ entitlements(
18104
+ """Returns the items in the list that come before the specified cursor."""
18105
+ before: String = null
18106
+
18107
+ """Returns the items in the list that come after the specified cursor."""
18108
+ after: String = null
18109
+
18110
+ """Returns the first n items from the list."""
18111
+ first: Int = null
18112
+
18113
+ """Returns the items in the list that come after the specified cursor."""
18114
+ last: Int = null
18115
+ ): EntitlementCountableConnection!
18116
+
17966
18117
  """Look up a payout by ID. Requires MANAGE_PAYOUTS permission."""
17967
18118
  payout(id: ID!): Payout
17968
18119
 
@@ -18647,6 +18798,36 @@ enum RecipientTypeEnum {
18647
18798
  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
18799
  }
18649
18800
 
18801
+ """
18802
+ A single use of an entitlement — a download now, a scan or activation later.
18803
+ """
18804
+ type RedemptionEvent implements Node {
18805
+ """The Globally Unique ID of this object"""
18806
+ id: ID!
18807
+
18808
+ """When the redemption happened."""
18809
+ occurredAt: DateTime!
18810
+
18811
+ """What kind of use this was."""
18812
+ eventType: RedemptionEventType!
18813
+
18814
+ """
18815
+ Key that made this redemption idempotent, when the producer supplied one. Downloads have none — every download is a distinct use.
18816
+ """
18817
+ idempotencyKey: String
18818
+ }
18819
+
18820
+ """
18821
+ 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.
18822
+ """
18823
+ enum RedemptionEventType {
18824
+ DOWNLOAD
18825
+ ACTIVATION
18826
+ REVEAL
18827
+ SCAN
18828
+ CHECK_IN
18829
+ }
18830
+
18650
18831
  """
18651
18832
  Represents a refund scoped to a nautical order, seller order, or order line.
18652
18833
  """
@@ -22709,6 +22890,23 @@ type User implements Node & ObjectWithMetadata {
22709
22890
  last: Int = null
22710
22891
  ): WishlistCountableConnection!
22711
22892
 
22893
+ """
22894
+ The customer's library — everything they own, including items whose download links have expired. Owner-scoped: only ever the requesting user's own entitlements.
22895
+ """
22896
+ entitlements(
22897
+ """Returns the items in the list that come before the specified cursor."""
22898
+ before: String = null
22899
+
22900
+ """Returns the items in the list that come after the specified cursor."""
22901
+ after: String = null
22902
+
22903
+ """Returns the first n items from the list."""
22904
+ first: Int = null
22905
+
22906
+ """Returns the items in the list that come after the specified cursor."""
22907
+ last: Int = null
22908
+ ): EntitlementCountableConnection!
22909
+
22712
22910
  """List of documents associated with the user."""
22713
22911
  documents: [Document!]!
22714
22912
 
@@ -22982,6 +23180,7 @@ type VendorPayout implements Node & ObjectWithMetadata {
22982
23180
  gateway: String!
22983
23181
  included: Boolean!
22984
23182
  statusMessage: String
23183
+ externalBatchId: String!
22985
23184
 
22986
23185
  """Adjustment amount."""
22987
23186
  adjustmentAmount: Float! @deprecated(reason: "This will be removed on August 6, 2025. Use the adjustment field instead.")
@@ -24195,6 +24394,10 @@ enum WebhookEventTypeEnum {
24195
24394
  COLLECTION_DELETED
24196
24395
  COLLECTION_UPDATED
24197
24396
  CUSTOMER_CREATED
24397
+ DIGITAL_CONTENT_URL_CREATED
24398
+ DIGITAL_CONTENT_URL_REVOKED
24399
+ ENTITLEMENT_GRANTED
24400
+ ENTITLEMENT_REVOKED
24198
24401
  CUSTOMER_UPDATED
24199
24402
  CUSTOMER_DELETED
24200
24403
  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.7.0",
4
4
  "description": "Traide API GraphQL Schema",
5
5
  "main": "./nautical/schema.graphql",
6
6
  "scripts": {