@nautical-commerce/graphql-schema 2.16.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,106 +8469,6 @@ 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
8207
- }
8208
-
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!
8215
- }
8216
-
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!
8230
-
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
8241
- }
8242
-
8243
- """An enumeration."""
8244
- enum GenericWebhookTransactionType {
8245
- """A payload for order update was received"""
8246
- ORDER_UPDATE
8247
-
8248
- """A payload for order cancel was received"""
8249
- ORDER_CANCEL
8250
-
8251
- """A payload for product create was received."""
8252
- PRODUCT_CREATE
8253
-
8254
- """A payload for product update was received."""
8255
- PRODUCT_UPDATE
8256
-
8257
- """A payload for product delete was received."""
8258
- PRODUCT_DELETE
8259
-
8260
- """A payload for product inventory tracking update was received."""
8261
- INVENTORY_TRACKING_UPDATE
8262
-
8263
- """A payload for stock create was received."""
8264
- STOCK_CREATE
8265
-
8266
- """A payload for stock update was received."""
8267
- STOCK_UPDATE
8268
-
8269
- """A payload for stock delete was received."""
8270
- STOCK_DELETE
8271
-
8272
- """A payload for warehouse create was received."""
8273
- WAREHOUSE_CREATE
8274
-
8275
- """A payload for warehouse update was received."""
8276
- WAREHOUSE_UPDATE
8277
-
8278
- """A payload for warehouse delete was received."""
8279
- WAREHOUSE_DELETE
8280
-
8281
- """A payload for fulfillment create was received."""
8282
- FULFILLMENT_CREATE
8283
-
8284
- """A payload for fulfillment update was received."""
8285
- FULFILLMENT_UPDATE
8286
-
8287
- """A paylod for customer create was received"""
8288
- CUSTOMER_CREATE
8289
-
8290
- """A payload for seller create was received"""
8291
- SELLER_CREATE
8292
-
8293
- """A payload for vehicles was received"""
8294
- VEHICLE_PAYLOAD
8295
-
8296
- """A payload for item shipment that was received"""
8297
- ITEM_SHIP_NOTIFY
8298
- }
8299
-
8300
8472
  input WebhookJobFilterInput {
8301
8473
  status: [WebhookJobStatus!]
8302
8474
  search: String
@@ -8373,6 +8545,24 @@ enum GenericWebhookEventsEnum {
8373
8545
  """A payload for seller create was received"""
8374
8546
  SELLER_CREATE
8375
8547
 
8548
+ """Shopify store successfully connected"""
8549
+ SHOPIFY_CONNECTION_ESTABLISHED
8550
+
8551
+ """Shopify store connection updated"""
8552
+ SHOPIFY_CONNECTION_UPDATED
8553
+
8554
+ """Shopify store connection failed"""
8555
+ SHOPIFY_CONNECTION_FAILED
8556
+
8557
+ """Shopify product import started"""
8558
+ SHOPIFY_IMPORT_STARTED
8559
+
8560
+ """Shopify product import completed"""
8561
+ SHOPIFY_IMPORT_COMPLETED
8562
+
8563
+ """Shopify product import failed"""
8564
+ SHOPIFY_IMPORT_FAILED
8565
+
8376
8566
  """A payload for vehicles was received"""
8377
8567
  VEHICLE_PAYLOAD @deprecated(reason: "This will be removed on September 26, 2025")
8378
8568
 
@@ -8398,8 +8588,166 @@ enum WebhookJobSortField {
8398
8588
  """Sort webhook jobs by status."""
8399
8589
  STATUS
8400
8590
 
8401
- """Sort webhook jobs by created at."""
8402
- CREATED_AT
8591
+ """Sort webhook jobs by created at."""
8592
+ CREATED_AT
8593
+ }
8594
+
8595
+ type ShopifyWebhookTransactionCountableConnection {
8596
+ """Pagination data for this connection."""
8597
+ pageInfo: PageInfo!
8598
+ edges: [ShopifyWebhookTransactionCountableEdge!]!
8599
+
8600
+ """A total count of items in the collection."""
8601
+ totalCount: Int
8602
+ }
8603
+
8604
+ type ShopifyWebhookTransactionCountableEdge {
8605
+ """The item at the end of the edge."""
8606
+ node: ShopifyWebhookTransaction!
8607
+
8608
+ """A cursor for use in pagination."""
8609
+ cursor: String!
8610
+ }
8611
+
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!
8618
+
8619
+ """Job status."""
8620
+ status: JobStatusEnum!
8621
+
8622
+ """Job message."""
8623
+ message: String
8624
+
8625
+ """Created date time of job in ISO 8601 format."""
8626
+ createdAt: DateTime!
8627
+
8628
+ """Date time of job last update in ISO 8601 format."""
8629
+ updatedAt: DateTime!
8630
+ tenant: Tenant!
8631
+
8632
+ """Seller associated with this webhook"""
8633
+ seller: Seller!
8634
+
8635
+ """
8636
+ Shopify event type (e.g., 'products/create', 'inventory_levels/update')
8637
+ """
8638
+ eventType: String
8639
+
8640
+ """Shop domain that sent the webhook (e.g., 'my-store.myshopify.com')"""
8641
+ shopifyDomain: String
8642
+
8643
+ """Shopify's webhook ID from X-Shopify-Webhook-Id header"""
8644
+ shopifyWebhookId: String
8645
+
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
8650
+
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
8655
+
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
8660
+
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
8665
+
8666
+ """
8667
+ Shopify-specific processing context. Includes: API version, processing time, retry count, etc. Useful for performance analysis and debugging.
8668
+ """
8669
+ processingMetadata: JSONString
8670
+
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
8675
+
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]
8680
+
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
8685
+
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
8690
+
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
+ }
8696
+
8697
+ input ShopifyWebhookTransactionFilterInput {
8698
+ status: [WebhookJobStatus!]
8699
+ eventType: [ShopifyEventType!]
8700
+ shopifyDomain: String
8701
+ isPartialSuccess: Boolean
8702
+ createdAt: DateTime
8703
+ search: String
8704
+ created: DateRangeInput
8705
+ }
8706
+
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 {
8725
+ """Specifies the direction in which to sort products."""
8726
+ direction: OrderDirection!
8727
+
8728
+ """Sort shopify_webhook_transactions by the selected field."""
8729
+ field: ShopifyWebhookTransactionSortField!
8730
+ }
8731
+
8732
+ """Sort fields for Shopify webhook transactions."""
8733
+ enum ShopifyWebhookTransactionSortField {
8734
+ """Sort by Shopify event type (e.g., products/create)"""
8735
+ EVENT_TYPE
8736
+
8737
+ """Sort by processing status (pending, processing, success, failed)"""
8738
+ STATUS
8739
+
8740
+ """Sort by webhook received timestamp"""
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
8403
8751
  }
8404
8752
 
8405
8753
  input WarehouseFilterInput {
@@ -8785,6 +9133,12 @@ type Plugin implements Node {
8785
9133
  id: ID!
8786
9134
  privateMetadata: JSONString!
8787
9135
  metadata: JSONString!
9136
+ tenant: Tenant!
9137
+ identifier: String!
9138
+ name: String!
9139
+ description: String!
9140
+ active: Boolean!
9141
+ configuration: [ConfigurationItem!]
8788
9142
  company: String
8789
9143
  category: PluginConfigurationCategory
8790
9144
  descriptionShort: String!
@@ -8792,50 +9146,13 @@ type Plugin implements Node {
8792
9146
  created: DateTime!
8793
9147
  externalUrl: String
8794
9148
  supportUrl: String
8795
- allowSellers: Boolean
8796
9149
  allowManyActivePluginsInCategory: Boolean!
8797
9150
  allowSwitchingBetweenPluginsInCategory: Boolean!
8798
- tenant: Tenant!
8799
- identifier: String!
8800
- name: String!
8801
- description: String!
8802
- active: Boolean!
8803
- configuration: [ConfigurationItem!]
8804
9151
  defaultConfiguration: [ConfigurationItem!]
8805
9152
  supportSellerConfiguration: Boolean
8806
9153
  version: String!
8807
9154
  }
8808
9155
 
8809
- """An enumeration."""
8810
- enum PluginConfigurationCategory {
8811
- """Auth"""
8812
- AUTH
8813
-
8814
- """Fulfillment"""
8815
- FULFILLMENT
8816
-
8817
- """Ecommerce"""
8818
- ECOMMERCE
8819
-
8820
- """Data Connectivity"""
8821
- DATA_CONNECTIVITY
8822
-
8823
- """Order Extensions"""
8824
- ORDER_EXTENSIONS
8825
-
8826
- """Utility"""
8827
- UTILITY
8828
-
8829
- """Taxes"""
8830
- TAXES
8831
-
8832
- """Marketing"""
8833
- MARKETING
8834
-
8835
- """Payments"""
8836
- PAYMENTS
8837
- }
8838
-
8839
9156
  """Stores information about a single configuration field."""
8840
9157
  type ConfigurationItem {
8841
9158
  """Name of the field."""
@@ -8868,6 +9185,37 @@ enum ConfigurationTypeFieldEnum {
8868
9185
  SINGLE_SELECT
8869
9186
  OUTPUT
8870
9187
  OUTPUT_BOOLEAN
9188
+ OUTPUT_SECRET
9189
+ }
9190
+
9191
+ """An enumeration."""
9192
+ enum PluginConfigurationCategory {
9193
+ """Auth"""
9194
+ AUTH
9195
+
9196
+ """Fulfillment"""
9197
+ FULFILLMENT
9198
+
9199
+ """Ecommerce"""
9200
+ ECOMMERCE
9201
+
9202
+ """Data Connectivity"""
9203
+ DATA_CONNECTIVITY
9204
+
9205
+ """Order Extensions"""
9206
+ ORDER_EXTENSIONS
9207
+
9208
+ """Utility"""
9209
+ UTILITY
9210
+
9211
+ """Taxes"""
9212
+ TAXES
9213
+
9214
+ """Marketing"""
9215
+ MARKETING
9216
+
9217
+ """Payments"""
9218
+ PAYMENTS
8871
9219
  }
8872
9220
 
8873
9221
  """Represents a checkout page's options."""
@@ -11543,6 +11891,114 @@ enum ExportFileSortField {
11543
11891
  UPDATED_AT
11544
11892
  }
11545
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
+
11546
12002
  """Event object for all models."""
11547
12003
  type Event {
11548
12004
  """The unique identifier across all event tables."""
@@ -12048,7 +12504,7 @@ type Mutation {
12048
12504
  description: String
12049
12505
 
12050
12506
  """
12051
- Used when uploading a new document or file in a multipart request that does not exist in the system already. Supported file types: image/svg+xml, application/x-pdf, image/x-ms-bmp, application/acad, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/x-gzip, image/x-bmp, image/svg, application/vnd.ms-powerpoint, image/webp, drawing/x-dwg, application/x-rar, application/x-tif, application/x-tar, application/x-jpg, drawing/x-dwf, application/vnd.pdf, image/heif, application/svg+xml, application/x-dxf, image/heif-sequence, application/acrobat, application/msword, application/x-csv, application/x-rtf, application/x-tiff, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/eps, application/vnd.oasis.opendocument.spreadsheet, image/png, text/svg, application/rtf, application/pdf, image/x-dxf, image/vnd.dwg, image/dxf, application/dwg, image/jpeg, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/x-acad, text/x-comma-separated-values, text/x-pdf, image/x-dwg, text/svg-xml, image/tif, application/postscript, application/gzipped, text/csv, application/jpg, image/jpg, application/vnd.oasis.opendocument.presentation, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.presentationml.slideshow, text/comma-separated-values, image/eps, text/pdf, drawing/dwg, image/x-tif, text/x-csv, application/zip, application/gzip-compressed, application/vnd.oasis.opendocument.text, application/x-zip-compressed, image/tiff, application/gzip, pplication/vnd.rar, text/plain, image/x-eps, image/bmp, image/heic, image/gif, image/x-tiff, application/x-eps, text/rtf, application/x-dwg, application/x-autocad, application/tif, application/excel, application/tiff, application/dxf, application/csv, image/heic-sequence, application/x-rar-compressed, application/vnd.ms-word.
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.
12052
12508
  """
12053
12509
  file: Upload!
12054
12510
 
@@ -14305,6 +14761,18 @@ type Mutation {
14305
14761
  input: ExportProductsInput!
14306
14762
  ): ProductsExport
14307
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
+
14308
14776
  """Adds a gift card or a voucher to a checkout."""
14309
14777
  checkoutAddPromoCode(
14310
14778
  """Checkout ID."""
@@ -19971,70 +20439,6 @@ type NauticalOrderLinesCsvUpload {
19971
20439
  orderErrors: [OrderError!]!
19972
20440
  }
19973
20441
 
19974
- """Represents a job data of exported file."""
19975
- type ImportFile implements Node & Job {
19976
- """The ID of the object"""
19977
- id: ID!
19978
- user: User
19979
- app: App
19980
-
19981
- """Job status."""
19982
- status: JobStatusEnum!
19983
-
19984
- """Created date time of job in ISO 8601 format."""
19985
- createdAt: DateTime!
19986
-
19987
- """Date time of job last update in ISO 8601 format."""
19988
- updatedAt: DateTime!
19989
-
19990
- """Job message."""
19991
- message: String
19992
-
19993
- """The URL of file to download."""
19994
- url: String
19995
-
19996
- """List of events associated with the import."""
19997
- events: [ImportEvent!]
19998
- }
19999
-
20000
- """History log of import file."""
20001
- type ImportEvent implements Node {
20002
- """The ID of the object"""
20003
- id: ID!
20004
-
20005
- """Date when event happened at in ISO 8601 format."""
20006
- date: DateTime!
20007
-
20008
- """Import event type."""
20009
- type: ImportEventsEnum!
20010
-
20011
- """User who performed the action."""
20012
- user: User
20013
-
20014
- """App which performed the action."""
20015
- app: App
20016
-
20017
- """Content of the event."""
20018
- message: String!
20019
- }
20020
-
20021
- enum ImportEventsEnum {
20022
- """Data import was started."""
20023
- IMPORT_PENDING
20024
-
20025
- """Data import was completed successfully."""
20026
- IMPORT_SUCCESS
20027
-
20028
- """Import Failed"""
20029
- IMPORT_FAILED
20030
-
20031
- """Data import failed."""
20032
- IMPORT_DELETED
20033
-
20034
- """Import file was deleted."""
20035
- IMPORTED_FILE_SENT
20036
- }
20037
-
20038
20442
  """
20039
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
20040
20444
  """
@@ -20430,9 +20834,6 @@ input PluginUpdateInput {
20430
20834
  """Configuration of the plugin."""
20431
20835
  configuration: [ConfigurationItemInput!]
20432
20836
 
20433
- """Indicates whether the plugin should be configurable by sellers."""
20434
- allowSellers: Boolean
20435
-
20436
20837
  """Indicates the seller that is making the update, null if marketplace."""
20437
20838
  seller: ID
20438
20839
  }
@@ -20911,6 +21312,58 @@ enum FileTypesEnum {
20911
21312
  XLSX
20912
21313
  }
20913
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
+
20914
21367
  """Adds a gift card or a voucher to a checkout."""
20915
21368
  type CheckoutAddPromoCode {
20916
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.16.0",
3
+ "version": "v2.18.0",
4
4
  "description": "Traide API GraphQL Schema",
5
5
  "main": "./nautical/schema.graphql",
6
6
  "scripts": {