@nautical-commerce/graphql-schema 2.17.0 → 2.18.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.
@@ -178,7 +178,9 @@ type Query {
178
178
  last: Int
179
179
  ): WebhookEventLogCountableConnection
180
180
 
181
- """List of webhook jobs"""
181
+ """
182
+ List of webhook jobs (legacy system - use shopifyWebhookTransactions for Shopify)
183
+ """
182
184
  webhookJobs(
183
185
  """Filtering options for webhook jobs"""
184
186
  filter: WebhookJobFilterInput
@@ -202,6 +204,32 @@ type Query {
202
204
  last: Int
203
205
  ): WebhookJobCountableConnection
204
206
 
207
+ """
208
+ List of Shopify webhook transactions from the new plugin-based architecture. Provides better debugging and tracking than the legacy webhookJobs query. Use this for all new Shopify webhook monitoring.
209
+ """
210
+ shopifyWebhookTransactions(
211
+ """Filtering options for Shopify webhook transactions"""
212
+ filter: ShopifyWebhookTransactionFilterInput
213
+
214
+ """Sort Shopify webhook transactions"""
215
+ sortBy: ShopifyWebhookTransactionSortingInput
216
+
217
+ """Seller global ID to filter by"""
218
+ sellerId: ID
219
+
220
+ """Return the elements in the list that come before the specified cursor."""
221
+ before: String
222
+
223
+ """Return the elements in the list that come after the specified cursor."""
224
+ after: String
225
+
226
+ """Return the first n elements from the list."""
227
+ first: Int
228
+
229
+ """Return the last n elements from the list."""
230
+ last: Int
231
+ ): ShopifyWebhookTransactionCountableConnection
232
+
205
233
  """Look up a warehouse by ID."""
206
234
  warehouse(
207
235
  """ID of an warehouse"""
@@ -1487,6 +1515,33 @@ type Query {
1487
1515
  last: Int
1488
1516
  ): ExportFileCountableConnection
1489
1517
 
1518
+ """Look up an import file by ID."""
1519
+ importFile(
1520
+ """ID of the import file job."""
1521
+ id: ID!
1522
+ ): ImportFile
1523
+
1524
+ """List of import files."""
1525
+ importFiles(
1526
+ """Filtering options for import files."""
1527
+ filter: ImportFileFilterInput
1528
+
1529
+ """Sort import files."""
1530
+ sortBy: ImportFileSortingInput
1531
+
1532
+ """Return the elements in the list that come before the specified cursor."""
1533
+ before: String
1534
+
1535
+ """Return the elements in the list that come after the specified cursor."""
1536
+ after: String
1537
+
1538
+ """Return the first n elements from the list."""
1539
+ first: Int
1540
+
1541
+ """Return the last n elements from the list."""
1542
+ last: Int
1543
+ ): ImportFileCountableConnection
1544
+
1490
1545
  """List of all tax rates available from tax gateway."""
1491
1546
  taxTypes: [TaxType!]!
1492
1547
 
@@ -2652,6 +2707,21 @@ type ProductVariant implements Node & ObjectWithMetadata {
2652
2707
  List of warnings for this product variant that needs to be resolved for publishing.
2653
2708
  """
2654
2709
  warnings: [WarningMessageItem!]!
2710
+
2711
+ """Webhook events related to this variant"""
2712
+ webhookHistory(
2713
+ """Return the elements in the list that come before the specified cursor."""
2714
+ before: String
2715
+
2716
+ """Return the elements in the list that come after the specified cursor."""
2717
+ after: String
2718
+
2719
+ """Return the first n elements from the list."""
2720
+ first: Int
2721
+
2722
+ """Return the last n elements from the list."""
2723
+ last: Int
2724
+ ): WebhookJobCountableConnection
2655
2725
  }
2656
2726
 
2657
2727
  """An enumeration."""
@@ -2838,6 +2908,21 @@ type Product implements Node & ObjectWithMetadata {
2838
2908
 
2839
2909
  """Displays whether the product has warnings or not."""
2840
2910
  hasWarnings: Boolean
2911
+
2912
+ """Webhook events related to this product"""
2913
+ webhookHistory(
2914
+ """Return the elements in the list that come before the specified cursor."""
2915
+ before: String
2916
+
2917
+ """Return the elements in the list that come after the specified cursor."""
2918
+ after: String
2919
+
2920
+ """Return the first n elements from the list."""
2921
+ first: Int
2922
+
2923
+ """Return the last n elements from the list."""
2924
+ last: Int
2925
+ ): WebhookJobCountableConnection
2841
2926
  }
2842
2927
 
2843
2928
  """
@@ -4836,6 +4921,9 @@ enum ProductSubStatusEnum {
4836
4921
 
4837
4922
  """Approved"""
4838
4923
  APPROVED
4924
+
4925
+ """Incomplete data"""
4926
+ INCOMPLETE_DATA
4839
4927
  }
4840
4928
 
4841
4929
  input PriceRangeInput {
@@ -7097,6 +7185,9 @@ enum ProductSubStatus {
7097
7185
 
7098
7186
  """Approved"""
7099
7187
  APPROVED
7188
+
7189
+ """Incomplete data"""
7190
+ INCOMPLETE_DATA
7100
7191
  }
7101
7192
 
7102
7193
  """An enumeration."""
@@ -7299,6 +7390,187 @@ enum ProductWarningEnum {
7299
7390
  DEFAULT_VARIANT_REQUIRED
7300
7391
  }
7301
7392
 
7393
+ type WebhookJobCountableConnection {
7394
+ """Pagination data for this connection."""
7395
+ pageInfo: PageInfo!
7396
+ edges: [WebhookJobCountableEdge!]!
7397
+
7398
+ """A total count of items in the collection."""
7399
+ totalCount: Int
7400
+ }
7401
+
7402
+ type WebhookJobCountableEdge {
7403
+ """The item at the end of the edge."""
7404
+ node: WebhookJob!
7405
+
7406
+ """A cursor for use in pagination."""
7407
+ cursor: String!
7408
+ }
7409
+
7410
+ """
7411
+ Represents incoming webhook transaction with comprehensive data preservation. New ELT-based approach ensures no data loss and supports partial success states.
7412
+ """
7413
+ type WebhookJob implements Node & Job {
7414
+ """The ID of the object"""
7415
+ id: ID!
7416
+
7417
+ """Job status."""
7418
+ status: JobStatusEnum!
7419
+
7420
+ """Job message."""
7421
+ message: String
7422
+
7423
+ """Created date time of job in ISO 8601 format."""
7424
+ createdAt: DateTime!
7425
+
7426
+ """Date time of job last update in ISO 8601 format."""
7427
+ updatedAt: DateTime!
7428
+ tenant: Tenant!
7429
+
7430
+ """Original webhook payload (legacy field)"""
7431
+ body: JSONString
7432
+
7433
+ """Request headers and metadata"""
7434
+ requestMeta: JSONString
7435
+
7436
+ """Webhook source (e.g., 'shopify')"""
7437
+ source: String
7438
+
7439
+ """Normalized event type"""
7440
+ type: GenericWebhookTransactionType
7441
+
7442
+ """Link to vendor entity. DEPRECATED: No longer used."""
7443
+ vendorEntityLink: String @deprecated(reason: "This will be removed on September 26, 2025")
7444
+
7445
+ """
7446
+ Link to marketplace entity (e.g., /products/123). DEPRECATED: Use entities_created instead.
7447
+ """
7448
+ marketplaceEntityLink: String @deprecated(reason: "This will be removed on September 26, 2025")
7449
+
7450
+ """Seller associated with this webhook"""
7451
+ seller: Seller
7452
+
7453
+ """
7454
+ Complete unmodified webhook payload. Preserves all fields from external system, including unmapped ones. Use this for debugging or accessing fields not yet mapped to Nautical.
7455
+ """
7456
+ rawPayload: JSONString
7457
+
7458
+ """
7459
+ Data after field mapping transformation applied. Shows what values were extracted from raw_payload and how they were transformed. Compare with validation_errors to see which fields had issues.
7460
+ """
7461
+ mappedData: JSONString
7462
+
7463
+ """
7464
+ Fields from webhook that don't have Nautical field mappings. Preserved for future use. If you see important data here, request a custom field mapping configuration.
7465
+ """
7466
+ unmappedFields: JSONString
7467
+
7468
+ """
7469
+ Per-field validation errors with severity levels. Format: {field_name: {message, severity, value}}. Severity: 'warning' (non-critical), 'error' (needs fixing), 'critical' (blocks creation).
7470
+ """
7471
+ validationErrors: JSONString
7472
+
7473
+ """
7474
+ Version of field mapping configuration used (e.g., '1.0.0'). Used to track schema evolution. If mappings change, you can identify which webhooks used old vs new mappings.
7475
+ """
7476
+ fieldMappingVersion: String
7477
+
7478
+ """
7479
+ Additional processing context. Includes: ingestion_method, start_time, end_time, entities_created_count, entities_failed_count. Useful for performance analysis and debugging.
7480
+ """
7481
+ processingMetadata: JSONString
7482
+
7483
+ """
7484
+ List of successfully created entities. Format: ['product:123', 'variant:456', 'image:789']. Use this to track what was created from the webhook.
7485
+ """
7486
+ entitiesCreated: [String]
7487
+
7488
+ """
7489
+ List of entities that failed creation with error details. Format: [{type, error, details}]. Review this to understand why some entities couldn't be created.
7490
+ """
7491
+ entitiesFailed: JSONString
7492
+
7493
+ """
7494
+ True if webhook processing succeeded for some but not all entities. Example: Product created but 2 out of 5 images failed. Check entities_failed for details on what went wrong.
7495
+ """
7496
+ isPartialSuccess: Boolean
7497
+ }
7498
+
7499
+ """An enumeration."""
7500
+ enum GenericWebhookTransactionType {
7501
+ """A payload for order update was received"""
7502
+ ORDER_UPDATE
7503
+
7504
+ """A payload for order cancel was received"""
7505
+ ORDER_CANCEL
7506
+
7507
+ """A payload for product create was received."""
7508
+ PRODUCT_CREATE
7509
+
7510
+ """A payload for product update was received."""
7511
+ PRODUCT_UPDATE
7512
+
7513
+ """A payload for product delete was received."""
7514
+ PRODUCT_DELETE
7515
+
7516
+ """A payload for product inventory tracking update was received."""
7517
+ INVENTORY_TRACKING_UPDATE
7518
+
7519
+ """A payload for stock create was received."""
7520
+ STOCK_CREATE
7521
+
7522
+ """A payload for stock update was received."""
7523
+ STOCK_UPDATE
7524
+
7525
+ """A payload for stock delete was received."""
7526
+ STOCK_DELETE
7527
+
7528
+ """A payload for warehouse create was received."""
7529
+ WAREHOUSE_CREATE
7530
+
7531
+ """A payload for warehouse update was received."""
7532
+ WAREHOUSE_UPDATE
7533
+
7534
+ """A payload for warehouse delete was received."""
7535
+ WAREHOUSE_DELETE
7536
+
7537
+ """A payload for fulfillment create was received."""
7538
+ FULFILLMENT_CREATE
7539
+
7540
+ """A payload for fulfillment update was received."""
7541
+ FULFILLMENT_UPDATE
7542
+
7543
+ """A paylod for customer create was received"""
7544
+ CUSTOMER_CREATE
7545
+
7546
+ """A payload for seller create was received"""
7547
+ SELLER_CREATE
7548
+
7549
+ """Shopify store successfully connected"""
7550
+ SHOPIFY_CONNECTION_ESTABLISHED
7551
+
7552
+ """Shopify store connection updated"""
7553
+ SHOPIFY_CONNECTION_UPDATED
7554
+
7555
+ """Shopify store connection failed"""
7556
+ SHOPIFY_CONNECTION_FAILED
7557
+
7558
+ """Shopify product import started"""
7559
+ SHOPIFY_IMPORT_STARTED
7560
+
7561
+ """Shopify product import completed"""
7562
+ SHOPIFY_IMPORT_COMPLETED
7563
+
7564
+ """Shopify product import failed"""
7565
+ SHOPIFY_IMPORT_FAILED
7566
+
7567
+ """A payload for vehicles was received"""
7568
+ VEHICLE_PAYLOAD
7569
+
7570
+ """A payload for item shipment that was received"""
7571
+ ITEM_SHIP_NOTIFY
7572
+ }
7573
+
7302
7574
  """Represents availability of a variant in the storefront."""
7303
7575
  type VariantPricingInfo {
7304
7576
  """Whether it is in sale or not."""
@@ -8197,51 +8469,34 @@ enum WebhookDirectionEnum {
8197
8469
  EMITTED
8198
8470
  }
8199
8471
 
8200
- type WebhookJobCountableConnection {
8201
- """Pagination data for this connection."""
8202
- pageInfo: PageInfo!
8203
- edges: [WebhookJobCountableEdge!]!
8204
-
8205
- """A total count of items in the collection."""
8206
- totalCount: Int
8472
+ input WebhookJobFilterInput {
8473
+ status: [WebhookJobStatus!]
8474
+ search: String
8475
+ source: [WebhookJobSource!]
8476
+ type: [WebhookJobType!] @deprecated(reason: "This will be removed on September 3, 2025. Use webhook_event_type instead")
8477
+ createdAt: DateTime
8478
+ created: DateRangeInput
8479
+ webhookEventType: [GenericWebhookEventsEnum!]
8207
8480
  }
8208
8481
 
8209
- type WebhookJobCountableEdge {
8210
- """The item at the end of the edge."""
8211
- node: WebhookJob!
8212
-
8213
- """A cursor for use in pagination."""
8214
- cursor: String!
8482
+ enum WebhookJobStatus {
8483
+ SUCCESS
8484
+ FAILED
8485
+ PENDING
8486
+ DELETED
8215
8487
  }
8216
8488
 
8217
- """Represents job data of incoming webhook."""
8218
- type WebhookJob implements Node & Job {
8219
- """The ID of the object"""
8220
- id: ID!
8221
-
8222
- """Job status."""
8223
- status: JobStatusEnum!
8224
-
8225
- """Job message."""
8226
- message: String
8227
-
8228
- """Created date time of job in ISO 8601 format."""
8229
- createdAt: DateTime!
8489
+ enum WebhookJobSource {
8490
+ DEFAULT
8491
+ SHOPIFY
8492
+ }
8230
8493
 
8231
- """Date time of job last update in ISO 8601 format."""
8232
- updatedAt: DateTime!
8233
- tenant: Tenant!
8234
- body: JSONString
8235
- requestMeta: JSONString
8236
- source: String
8237
- type: GenericWebhookTransactionType
8238
- vendorEntityLink: String @deprecated(reason: "This will be removed on September 26, 2025")
8239
- marketplaceEntityLink: String @deprecated(reason: "This will be removed on September 26, 2025")
8240
- seller: Seller
8494
+ enum WebhookJobType {
8495
+ ORDER_CREATE
8496
+ ORDER_UPDATE
8241
8497
  }
8242
8498
 
8243
- """An enumeration."""
8244
- enum GenericWebhookTransactionType {
8499
+ enum GenericWebhookEventsEnum {
8245
8500
  """A payload for order update was received"""
8246
8501
  ORDER_UPDATE
8247
8502
 
@@ -8309,133 +8564,190 @@ enum GenericWebhookTransactionType {
8309
8564
  SHOPIFY_IMPORT_FAILED
8310
8565
 
8311
8566
  """A payload for vehicles was received"""
8312
- VEHICLE_PAYLOAD
8567
+ VEHICLE_PAYLOAD @deprecated(reason: "This will be removed on September 26, 2025")
8313
8568
 
8314
8569
  """A payload for item shipment that was received"""
8315
8570
  ITEM_SHIP_NOTIFY
8316
8571
  }
8317
8572
 
8318
- input WebhookJobFilterInput {
8319
- status: [WebhookJobStatus!]
8320
- search: String
8321
- source: [WebhookJobSource!]
8322
- type: [WebhookJobType!] @deprecated(reason: "This will be removed on September 3, 2025. Use webhook_event_type instead")
8323
- createdAt: DateTime
8324
- created: DateRangeInput
8325
- webhookEventType: [GenericWebhookEventsEnum!]
8326
- }
8573
+ input WebhookJobSortingInput {
8574
+ """Specifies the direction in which to sort products."""
8575
+ direction: OrderDirection!
8327
8576
 
8328
- enum WebhookJobStatus {
8329
- SUCCESS
8330
- FAILED
8331
- PENDING
8332
- DELETED
8577
+ """Sort webhook_jobs by the selected field."""
8578
+ field: WebhookJobSortField!
8333
8579
  }
8334
8580
 
8335
- enum WebhookJobSource {
8336
- DEFAULT
8337
- SHOPIFY
8338
- }
8581
+ enum WebhookJobSortField {
8582
+ """Sort webhook jobs by source."""
8583
+ SOURCE
8339
8584
 
8340
- enum WebhookJobType {
8341
- ORDER_CREATE
8342
- ORDER_UPDATE
8585
+ """Sort webhook jobs by type."""
8586
+ TYPE
8587
+
8588
+ """Sort webhook jobs by status."""
8589
+ STATUS
8590
+
8591
+ """Sort webhook jobs by created at."""
8592
+ CREATED_AT
8343
8593
  }
8344
8594
 
8345
- enum GenericWebhookEventsEnum {
8346
- """A payload for order update was received"""
8347
- ORDER_UPDATE
8595
+ type ShopifyWebhookTransactionCountableConnection {
8596
+ """Pagination data for this connection."""
8597
+ pageInfo: PageInfo!
8598
+ edges: [ShopifyWebhookTransactionCountableEdge!]!
8348
8599
 
8349
- """A payload for order cancel was received"""
8350
- ORDER_CANCEL
8600
+ """A total count of items in the collection."""
8601
+ totalCount: Int
8602
+ }
8351
8603
 
8352
- """A payload for product create was received."""
8353
- PRODUCT_CREATE
8604
+ type ShopifyWebhookTransactionCountableEdge {
8605
+ """The item at the end of the edge."""
8606
+ node: ShopifyWebhookTransaction!
8354
8607
 
8355
- """A payload for product update was received."""
8356
- PRODUCT_UPDATE
8608
+ """A cursor for use in pagination."""
8609
+ cursor: String!
8610
+ }
8357
8611
 
8358
- """A payload for product delete was received."""
8359
- PRODUCT_DELETE
8612
+ """
8613
+ Shopify webhook transaction from the new plugin-based architecture. Uses synchronous processing (no Celery queue bugs) and preserves all Shopify data for debugging and future field mapping updates.
8614
+ """
8615
+ type ShopifyWebhookTransaction implements Node & Job {
8616
+ """The ID of the object"""
8617
+ id: ID!
8360
8618
 
8361
- """A payload for product inventory tracking update was received."""
8362
- INVENTORY_TRACKING_UPDATE
8619
+ """Job status."""
8620
+ status: JobStatusEnum!
8363
8621
 
8364
- """A payload for stock create was received."""
8365
- STOCK_CREATE
8622
+ """Job message."""
8623
+ message: String
8366
8624
 
8367
- """A payload for stock update was received."""
8368
- STOCK_UPDATE
8625
+ """Created date time of job in ISO 8601 format."""
8626
+ createdAt: DateTime!
8369
8627
 
8370
- """A payload for stock delete was received."""
8371
- STOCK_DELETE
8628
+ """Date time of job last update in ISO 8601 format."""
8629
+ updatedAt: DateTime!
8630
+ tenant: Tenant!
8372
8631
 
8373
- """A payload for warehouse create was received."""
8374
- WAREHOUSE_CREATE
8632
+ """Seller associated with this webhook"""
8633
+ seller: Seller!
8375
8634
 
8376
- """A payload for warehouse update was received."""
8377
- WAREHOUSE_UPDATE
8635
+ """
8636
+ Shopify event type (e.g., 'products/create', 'inventory_levels/update')
8637
+ """
8638
+ eventType: String
8378
8639
 
8379
- """A payload for warehouse delete was received."""
8380
- WAREHOUSE_DELETE
8640
+ """Shop domain that sent the webhook (e.g., 'my-store.myshopify.com')"""
8641
+ shopifyDomain: String
8381
8642
 
8382
- """A payload for fulfillment create was received."""
8383
- FULFILLMENT_CREATE
8643
+ """Shopify's webhook ID from X-Shopify-Webhook-Id header"""
8644
+ shopifyWebhookId: String
8384
8645
 
8385
- """A payload for fulfillment update was received."""
8386
- FULFILLMENT_UPDATE
8646
+ """
8647
+ Complete unmodified Shopify webhook payload. Preserves ALL fields from Shopify, including unmapped ones. Use this for debugging or accessing fields not yet in Nautical schema.
8648
+ """
8649
+ rawPayload: JSONString
8387
8650
 
8388
- """A paylod for customer create was received"""
8389
- CUSTOMER_CREATE
8651
+ """
8652
+ Data after field mapping transformation applied. Shows what values were extracted from raw_payload and how they were transformed to Nautical format. Compare with validation_errors to see which fields had issues.
8653
+ """
8654
+ mappedData: JSONString
8390
8655
 
8391
- """A payload for seller create was received"""
8392
- SELLER_CREATE
8656
+ """
8657
+ Shopify fields that don't have Nautical field mappings. Preserved for future use. If you see important data here, you can configure custom field mappings in your plugin settings.
8658
+ """
8659
+ unmappedFields: JSONString
8393
8660
 
8394
- """Shopify store successfully connected"""
8395
- SHOPIFY_CONNECTION_ESTABLISHED
8661
+ """
8662
+ Version of Shopify field mapping configuration used (e.g., '1.0.0'). Used to track schema evolution. If mappings change, you can identify which webhooks used old vs new mappings.
8663
+ """
8664
+ fieldMappingVersion: String
8396
8665
 
8397
- """Shopify store connection updated"""
8398
- SHOPIFY_CONNECTION_UPDATED
8666
+ """
8667
+ Shopify-specific processing context. Includes: API version, processing time, retry count, etc. Useful for performance analysis and debugging.
8668
+ """
8669
+ processingMetadata: JSONString
8399
8670
 
8400
- """Shopify store connection failed"""
8401
- SHOPIFY_CONNECTION_FAILED
8671
+ """
8672
+ Per-field validation errors with severity levels. Format: {field_name: {message, severity, value}}. Severity: 'warning' (non-critical), 'error' (needs fixing), 'critical' (blocks creation).
8673
+ """
8674
+ validationErrors: JSONString
8402
8675
 
8403
- """Shopify product import started"""
8404
- SHOPIFY_IMPORT_STARTED
8676
+ """
8677
+ List of successfully created entities. Format: ['product:uuid-123', 'variant:uuid-456', 'stock:uuid-789']. Use this to track what Nautical entities were created from the Shopify webhook.
8678
+ """
8679
+ entitiesCreated: [String]
8405
8680
 
8406
- """Shopify product import completed"""
8407
- SHOPIFY_IMPORT_COMPLETED
8681
+ """
8682
+ List of entities that failed creation with error details. Format: [{type, shopify_id, error, details}]. Review this to understand why some entities couldn't be created.
8683
+ """
8684
+ entitiesFailed: JSONString
8408
8685
 
8409
- """Shopify product import failed"""
8410
- SHOPIFY_IMPORT_FAILED
8686
+ """
8687
+ True if webhook processing succeeded for some but not all entities. Example: Product created but 2 out of 5 variants failed validation. Check entities_failed for details on what went wrong.
8688
+ """
8689
+ isPartialSuccess: Boolean
8411
8690
 
8412
- """A payload for vehicles was received"""
8413
- VEHICLE_PAYLOAD @deprecated(reason: "This will be removed on September 26, 2025")
8691
+ """
8692
+ Link to primary created marketplace entity (e.g., '/products/123'). Use this to navigate directly to the created entity in the Dashboard.
8693
+ """
8694
+ marketplaceEntityLink: String
8695
+ }
8414
8696
 
8415
- """A payload for item shipment that was received"""
8416
- ITEM_SHIP_NOTIFY
8697
+ input ShopifyWebhookTransactionFilterInput {
8698
+ status: [WebhookJobStatus!]
8699
+ eventType: [ShopifyEventType!]
8700
+ shopifyDomain: String
8701
+ isPartialSuccess: Boolean
8702
+ createdAt: DateTime
8703
+ search: String
8704
+ created: DateRangeInput
8417
8705
  }
8418
8706
 
8419
- input WebhookJobSortingInput {
8707
+ """Shopify webhook event types (new plugin-based architecture)."""
8708
+ enum ShopifyEventType {
8709
+ PRODUCTS_CREATE
8710
+ PRODUCTS_UPDATE
8711
+ PRODUCTS_DELETE
8712
+ INVENTORY_LEVELS_UPDATE
8713
+ INVENTORY_LEVELS_CONNECT
8714
+ INVENTORY_LEVELS_DISCONNECT
8715
+ LOCATIONS_CREATE
8716
+ LOCATIONS_UPDATE
8717
+ LOCATIONS_DELETE
8718
+ ORDERS_CANCELLED
8719
+ FULFILLMENTS_CREATE
8720
+ FULFILLMENTS_UPDATE
8721
+ }
8722
+
8723
+ """Sorting options for Shopify webhook transactions."""
8724
+ input ShopifyWebhookTransactionSortingInput {
8420
8725
  """Specifies the direction in which to sort products."""
8421
8726
  direction: OrderDirection!
8422
8727
 
8423
- """Sort webhook_jobs by the selected field."""
8424
- field: WebhookJobSortField!
8728
+ """Sort shopify_webhook_transactions by the selected field."""
8729
+ field: ShopifyWebhookTransactionSortField!
8425
8730
  }
8426
8731
 
8427
- enum WebhookJobSortField {
8428
- """Sort webhook jobs by source."""
8429
- SOURCE
8430
-
8431
- """Sort webhook jobs by type."""
8432
- TYPE
8732
+ """Sort fields for Shopify webhook transactions."""
8733
+ enum ShopifyWebhookTransactionSortField {
8734
+ """Sort by Shopify event type (e.g., products/create)"""
8735
+ EVENT_TYPE
8433
8736
 
8434
- """Sort webhook jobs by status."""
8737
+ """Sort by processing status (pending, processing, success, failed)"""
8435
8738
  STATUS
8436
8739
 
8437
- """Sort webhook jobs by created at."""
8740
+ """Sort by webhook received timestamp"""
8438
8741
  CREATED_AT
8742
+
8743
+ """Sort by last update timestamp"""
8744
+ UPDATED_AT
8745
+
8746
+ """Sort by shop domain"""
8747
+ SHOPIFY_DOMAIN
8748
+
8749
+ """Sort by partial success state"""
8750
+ IS_PARTIAL_SUCCESS
8439
8751
  }
8440
8752
 
8441
8753
  input WarehouseFilterInput {
@@ -11579,6 +11891,114 @@ enum ExportFileSortField {
11579
11891
  UPDATED_AT
11580
11892
  }
11581
11893
 
11894
+ """Represents a job data of exported file."""
11895
+ type ImportFile implements Node & Job {
11896
+ """The ID of the object"""
11897
+ id: ID!
11898
+ user: User
11899
+ app: App
11900
+
11901
+ """Job status."""
11902
+ status: JobStatusEnum!
11903
+
11904
+ """Created date time of job in ISO 8601 format."""
11905
+ createdAt: DateTime!
11906
+
11907
+ """Date time of job last update in ISO 8601 format."""
11908
+ updatedAt: DateTime!
11909
+
11910
+ """Job message."""
11911
+ message: String
11912
+
11913
+ """The URL of file to download."""
11914
+ url: String
11915
+
11916
+ """List of events associated with the import."""
11917
+ events: [ImportEvent!]
11918
+ }
11919
+
11920
+ """History log of import file."""
11921
+ type ImportEvent implements Node {
11922
+ """The ID of the object"""
11923
+ id: ID!
11924
+
11925
+ """Date when event happened at in ISO 8601 format."""
11926
+ date: DateTime!
11927
+
11928
+ """Import event type."""
11929
+ type: ImportEventsEnum!
11930
+
11931
+ """User who performed the action."""
11932
+ user: User
11933
+
11934
+ """App which performed the action."""
11935
+ app: App
11936
+
11937
+ """Content of the event."""
11938
+ message: String!
11939
+ }
11940
+
11941
+ enum ImportEventsEnum {
11942
+ """Data import was started."""
11943
+ IMPORT_PENDING
11944
+
11945
+ """Data import was completed successfully."""
11946
+ IMPORT_SUCCESS
11947
+
11948
+ """Import Failed"""
11949
+ IMPORT_FAILED
11950
+
11951
+ """Data import failed."""
11952
+ IMPORT_DELETED
11953
+
11954
+ """Import file was deleted."""
11955
+ IMPORTED_FILE_SENT
11956
+ }
11957
+
11958
+ type ImportFileCountableConnection {
11959
+ """Pagination data for this connection."""
11960
+ pageInfo: PageInfo!
11961
+ edges: [ImportFileCountableEdge!]!
11962
+
11963
+ """A total count of items in the collection."""
11964
+ totalCount: Int
11965
+ }
11966
+
11967
+ type ImportFileCountableEdge {
11968
+ """The item at the end of the edge."""
11969
+ node: ImportFile!
11970
+
11971
+ """A cursor for use in pagination."""
11972
+ cursor: String!
11973
+ }
11974
+
11975
+ input ImportFileFilterInput {
11976
+ createdAt: DateTimeRangeInput
11977
+ updatedAt: DateTimeRangeInput
11978
+ status: JobStatusEnum
11979
+ user: String
11980
+ app: String
11981
+ }
11982
+
11983
+ input ImportFileSortingInput {
11984
+ """Specifies the direction in which to sort products."""
11985
+ direction: OrderDirection!
11986
+
11987
+ """Sort import file by the selected field."""
11988
+ field: ImportFileSortField!
11989
+ }
11990
+
11991
+ enum ImportFileSortField {
11992
+ """Sort import file by status."""
11993
+ STATUS
11994
+
11995
+ """Sort import file by created at."""
11996
+ CREATED_AT
11997
+
11998
+ """Sort import file by updated at."""
11999
+ UPDATED_AT
12000
+ }
12001
+
11582
12002
  """Event object for all models."""
11583
12003
  type Event {
11584
12004
  """The unique identifier across all event tables."""
@@ -12084,7 +12504,7 @@ type Mutation {
12084
12504
  description: String
12085
12505
 
12086
12506
  """
12087
- Used when uploading a new document or file in a multipart request that does not exist in the system already. Supported file types: application/vnd.openxmlformats-officedocument.wordprocessingml.document, image/heic-sequence, application/acad, image/heif-sequence, image/tif, application/eps, application/pdf, application/x-dxf, image/jpeg, image/heic, application/rtf, application/x-tiff, text/svg-xml, application/svg+xml, text/csv, image/svg, application/x-acad, application/zip, application/gzip, image/x-tif, application/x-dwg, application/x-rar-compressed, pplication/vnd.rar, application/x-tif, drawing/x-dwf, text/svg, application/tiff, image/bmp, image/x-dxf, application/x-rar, application/x-rtf, image/dxf, application/x-jpg, application/csv, application/x-gzip, drawing/dwg, image/x-bmp, image/jpg, application/jpg, application/vnd.oasis.opendocument.presentation, image/eps, application/acrobat, application/x-eps, application/excel, application/vnd.ms-word, application/vnd.ms-excel, application/x-autocad, image/x-eps, application/x-csv, application/vnd.pdf, application/dwg, application/vnd.openxmlformats-officedocument.presentationml.slideshow, text/comma-separated-values, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/x-tar, text/x-comma-separated-values, text/x-csv, application/gzip-compressed, image/png, image/webp, image/tiff, image/vnd.dwg, image/svg+xml, text/pdf, application/tif, application/vnd.ms-powerpoint, application/dxf, application/vnd.oasis.opendocument.text, application/x-zip-compressed, image/x-dwg, image/gif, text/rtf, image/x-tiff, application/msword, application/gzipped, drawing/x-dwg, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, image/x-ms-bmp, image/heif, text/plain, text/x-pdf, application/vnd.oasis.opendocument.spreadsheet, application/x-pdf, application/postscript.
12507
+ Used when uploading a new document or file in a multipart request that does not exist in the system already. Supported file types: application/tiff, application/x-rar, application/vnd.oasis.opendocument.text, application/x-jpg, image/x-ms-bmp, application/x-tif, image/webp, application/vnd.oasis.opendocument.spreadsheet, application/zip, image/jpg, application/eps, application/svg+xml, application/vnd.oasis.opendocument.presentation, text/svg, application/x-dxf, text/csv, application/vnd.pdf, image/tif, drawing/x-dwf, image/x-dxf, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, image/vnd.dwg, image/tiff, application/vnd.ms-powerpoint, text/pdf, application/x-autocad, image/heic, application/x-csv, application/x-acad, text/x-csv, application/x-pdf, application/excel, image/heif-sequence, application/vnd.openxmlformats-officedocument.presentationml.presentation, image/svg+xml, image/x-eps, application/x-rar-compressed, application/acad, drawing/dwg, image/jpeg, application/dwg, application/acrobat, image/eps, application/x-gzip, application/x-dwg, application/postscript, image/dxf, application/vnd.ms-word, image/x-tiff, text/comma-separated-values, application/x-tiff, application/pdf, image/gif, application/x-tar, application/x-eps, application/dxf, drawing/x-dwg, application/x-zip-compressed, text/svg-xml, application/tif, image/png, application/gzip-compressed, application/gzip, application/csv, application/vnd.openxmlformats-officedocument.presentationml.slideshow, image/heif, text/rtf, text/x-pdf, application/rtf, application/jpg, pplication/vnd.rar, image/x-tif, image/x-dwg, application/vnd.ms-excel, image/heic-sequence, image/x-bmp, application/vnd.openxmlformats-officedocument.wordprocessingml.document, text/plain, application/msword, text/x-comma-separated-values, image/svg, image/bmp, application/gzipped, application/x-rtf.
12088
12508
  """
12089
12509
  file: Upload!
12090
12510
 
@@ -14341,6 +14761,18 @@ type Mutation {
14341
14761
  input: ExportProductsInput!
14342
14762
  ): ProductsExport
14343
14763
 
14764
+ """Upload CSV file for product import and parse its structure."""
14765
+ createImportFile(
14766
+ """CSV file to upload."""
14767
+ file: Upload!
14768
+ ): CreateImportFile
14769
+
14770
+ """Start processing CSV product import with field mappings."""
14771
+ startCsvImport(
14772
+ """Input data for CSV import"""
14773
+ input: ImportProductsInput!
14774
+ ): StartCSVImport
14775
+
14344
14776
  """Adds a gift card or a voucher to a checkout."""
14345
14777
  checkoutAddPromoCode(
14346
14778
  """Checkout ID."""
@@ -20007,70 +20439,6 @@ type NauticalOrderLinesCsvUpload {
20007
20439
  orderErrors: [OrderError!]!
20008
20440
  }
20009
20441
 
20010
- """Represents a job data of exported file."""
20011
- type ImportFile implements Node & Job {
20012
- """The ID of the object"""
20013
- id: ID!
20014
- user: User
20015
- app: App
20016
-
20017
- """Job status."""
20018
- status: JobStatusEnum!
20019
-
20020
- """Created date time of job in ISO 8601 format."""
20021
- createdAt: DateTime!
20022
-
20023
- """Date time of job last update in ISO 8601 format."""
20024
- updatedAt: DateTime!
20025
-
20026
- """Job message."""
20027
- message: String
20028
-
20029
- """The URL of file to download."""
20030
- url: String
20031
-
20032
- """List of events associated with the import."""
20033
- events: [ImportEvent!]
20034
- }
20035
-
20036
- """History log of import file."""
20037
- type ImportEvent implements Node {
20038
- """The ID of the object"""
20039
- id: ID!
20040
-
20041
- """Date when event happened at in ISO 8601 format."""
20042
- date: DateTime!
20043
-
20044
- """Import event type."""
20045
- type: ImportEventsEnum!
20046
-
20047
- """User who performed the action."""
20048
- user: User
20049
-
20050
- """App which performed the action."""
20051
- app: App
20052
-
20053
- """Content of the event."""
20054
- message: String!
20055
- }
20056
-
20057
- enum ImportEventsEnum {
20058
- """Data import was started."""
20059
- IMPORT_PENDING
20060
-
20061
- """Data import was completed successfully."""
20062
- IMPORT_SUCCESS
20063
-
20064
- """Import Failed"""
20065
- IMPORT_FAILED
20066
-
20067
- """Data import failed."""
20068
- IMPORT_DELETED
20069
-
20070
- """Import file was deleted."""
20071
- IMPORTED_FILE_SENT
20072
- }
20073
-
20074
20442
  """
20075
20443
  Uploads lines for a draft order via CSV. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec
20076
20444
  """
@@ -20944,6 +21312,58 @@ enum FileTypesEnum {
20944
21312
  XLSX
20945
21313
  }
20946
21314
 
21315
+ """Upload CSV file for product import and parse its structure."""
21316
+ type CreateImportFile {
21317
+ """The newly created import file with parsed metadata."""
21318
+ importFile: ImportFile
21319
+
21320
+ """Parsed CSV metadata (headers, row count, examples)."""
21321
+ metadata: CSVMetadata
21322
+ importErrors: [ExportError!]!
21323
+ }
21324
+
21325
+ """CSV file metadata extracted during parsing."""
21326
+ type CSVMetadata {
21327
+ """List of CSV column headers."""
21328
+ headers: [String!]!
21329
+
21330
+ """Total number of rows in CSV (excluding header)."""
21331
+ rowCount: Int!
21332
+
21333
+ """Sample values for each column (first 3 non-empty values)."""
21334
+ examples: JSONString!
21335
+ }
21336
+
21337
+ """Start processing CSV product import with field mappings."""
21338
+ type StartCSVImport {
21339
+ """The import file being processed."""
21340
+ importFile: ImportFile
21341
+
21342
+ """Celery task ID for tracking import progress."""
21343
+ taskId: String
21344
+ importErrors: [ExportError!]!
21345
+ }
21346
+
21347
+ """Input for starting CSV product import."""
21348
+ input ImportProductsInput {
21349
+ """ID of the ImportFile to process."""
21350
+ importFileId: ID!
21351
+
21352
+ """
21353
+ Mapping of CSV column headers to Nautical product fields. Example: {"Product Name": "name", "Price": "price", "SKU": "sku"}
21354
+ """
21355
+ fieldMappings: JSONString!
21356
+
21357
+ """Optional default ProductType ID for products without type specified."""
21358
+ defaultProductTypeId: ID
21359
+
21360
+ """Optional default Category ID for products without category specified."""
21361
+ defaultCategoryId: ID
21362
+
21363
+ """Number of rows to process per batch (default 100)."""
21364
+ batchSize: Int = 100
21365
+ }
21366
+
20947
21367
  """Adds a gift card or a voucher to a checkout."""
20948
21368
  type CheckoutAddPromoCode {
20949
21369
  """The checkout with the added gift card or voucher."""
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nautical-commerce/graphql-schema",
3
- "version": "v2.17.0",
3
+ "version": "v2.18.0",
4
4
  "description": "Traide API GraphQL Schema",
5
5
  "main": "./nautical/schema.graphql",
6
6
  "scripts": {