@nautical-commerce/graphql-schema 2.17.0 → 2.19.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.
@@ -17,7 +17,7 @@ directive @shareable repeatable on FIELD_DEFINITION | OBJECT
17
17
  directive @extends on OBJECT | INTERFACE
18
18
 
19
19
  """Federation @override directive"""
20
- directive @override(from: String!) on FIELD_DEFINITION
20
+ directive @override(from: String!, label: String) on FIELD_DEFINITION
21
21
 
22
22
  """Federation @inaccessible directive"""
23
23
  directive @inaccessible on FIELD_DEFINITION | OBJECT | INTERFACE | UNION | ENUM | ENUM_VALUE | SCALAR | INPUT_OBJECT | INPUT_FIELD_DEFINITION | ARGUMENT_DEFINITION
@@ -40,6 +40,18 @@ directive @requiresScopes(scopes: [[federation__Scope!]!]!) on FIELD_DEFINITION
40
40
  """Federation @policy directive"""
41
41
  directive @policy(policies: [[federation__Policy!]!]!) on FIELD_DEFINITION | OBJECT | INTERFACE | SCALAR | ENUM
42
42
 
43
+ """Federation @context directive"""
44
+ directive @context(name: String!) repeatable on OBJECT | INTERFACE | UNION
45
+
46
+ """Federation @fromContext directive"""
47
+ directive @from_context(field: federation__ContextFieldValue) on ARGUMENT_DEFINITION
48
+
49
+ """Federation @listSize directive"""
50
+ directive @listSize(assumedSize: Int, slicingArguments: [String!], sizedFields: [String!], requireOneSlicingArgument: Boolean) on FIELD_DEFINITION
51
+
52
+ """Federation @cost directive"""
53
+ directive @cost(weight: Int!) on ARGUMENT_DEFINITION | FIELD_DEFINITION | INPUT_FIELD_DEFINITION | OBJECT | SCALAR | ENUM
54
+
43
55
  """
44
56
  Custom Decimal implementation.
45
57
 
@@ -178,7 +190,9 @@ type Query {
178
190
  last: Int
179
191
  ): WebhookEventLogCountableConnection
180
192
 
181
- """List of webhook jobs"""
193
+ """
194
+ List of webhook jobs (legacy system - use shopifyWebhookTransactions for Shopify)
195
+ """
182
196
  webhookJobs(
183
197
  """Filtering options for webhook jobs"""
184
198
  filter: WebhookJobFilterInput
@@ -202,6 +216,32 @@ type Query {
202
216
  last: Int
203
217
  ): WebhookJobCountableConnection
204
218
 
219
+ """
220
+ 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.
221
+ """
222
+ shopifyWebhookTransactions(
223
+ """Filtering options for Shopify webhook transactions"""
224
+ filter: ShopifyWebhookTransactionFilterInput
225
+
226
+ """Sort Shopify webhook transactions"""
227
+ sortBy: ShopifyWebhookTransactionSortingInput
228
+
229
+ """Seller global ID to filter by"""
230
+ sellerId: ID
231
+
232
+ """Return the elements in the list that come before the specified cursor."""
233
+ before: String
234
+
235
+ """Return the elements in the list that come after the specified cursor."""
236
+ after: String
237
+
238
+ """Return the first n elements from the list."""
239
+ first: Int
240
+
241
+ """Return the last n elements from the list."""
242
+ last: Int
243
+ ): ShopifyWebhookTransactionCountableConnection
244
+
205
245
  """Look up a warehouse by ID."""
206
246
  warehouse(
207
247
  """ID of an warehouse"""
@@ -1487,6 +1527,33 @@ type Query {
1487
1527
  last: Int
1488
1528
  ): ExportFileCountableConnection
1489
1529
 
1530
+ """Look up an import file by ID."""
1531
+ importFile(
1532
+ """ID of the import file job."""
1533
+ id: ID!
1534
+ ): ImportFile
1535
+
1536
+ """List of import files."""
1537
+ importFiles(
1538
+ """Filtering options for import files."""
1539
+ filter: ImportFileFilterInput
1540
+
1541
+ """Sort import files."""
1542
+ sortBy: ImportFileSortingInput
1543
+
1544
+ """Return the elements in the list that come before the specified cursor."""
1545
+ before: String
1546
+
1547
+ """Return the elements in the list that come after the specified cursor."""
1548
+ after: String
1549
+
1550
+ """Return the first n elements from the list."""
1551
+ first: Int
1552
+
1553
+ """Return the last n elements from the list."""
1554
+ last: Int
1555
+ ): ImportFileCountableConnection
1556
+
1490
1557
  """List of all tax rates available from tax gateway."""
1491
1558
  taxTypes: [TaxType!]!
1492
1559
 
@@ -2652,6 +2719,21 @@ type ProductVariant implements Node & ObjectWithMetadata {
2652
2719
  List of warnings for this product variant that needs to be resolved for publishing.
2653
2720
  """
2654
2721
  warnings: [WarningMessageItem!]!
2722
+
2723
+ """Shopify webhook events related to this variant"""
2724
+ webhookHistory(
2725
+ """Return the elements in the list that come before the specified cursor."""
2726
+ before: String
2727
+
2728
+ """Return the elements in the list that come after the specified cursor."""
2729
+ after: String
2730
+
2731
+ """Return the first n elements from the list."""
2732
+ first: Int
2733
+
2734
+ """Return the last n elements from the list."""
2735
+ last: Int
2736
+ ): ShopifyWebhookTransactionCountableConnection
2655
2737
  }
2656
2738
 
2657
2739
  """An enumeration."""
@@ -2838,6 +2920,21 @@ type Product implements Node & ObjectWithMetadata {
2838
2920
 
2839
2921
  """Displays whether the product has warnings or not."""
2840
2922
  hasWarnings: Boolean
2923
+
2924
+ """Shopify webhook events related to this product"""
2925
+ webhookHistory(
2926
+ """Return the elements in the list that come before the specified cursor."""
2927
+ before: String
2928
+
2929
+ """Return the elements in the list that come after the specified cursor."""
2930
+ after: String
2931
+
2932
+ """Return the first n elements from the list."""
2933
+ first: Int
2934
+
2935
+ """Return the last n elements from the list."""
2936
+ last: Int
2937
+ ): ShopifyWebhookTransactionCountableConnection
2841
2938
  }
2842
2939
 
2843
2940
  """
@@ -4836,6 +4933,9 @@ enum ProductSubStatusEnum {
4836
4933
 
4837
4934
  """Approved"""
4838
4935
  APPROVED
4936
+
4937
+ """Incomplete data"""
4938
+ INCOMPLETE_DATA
4839
4939
  }
4840
4940
 
4841
4941
  input PriceRangeInput {
@@ -7097,6 +7197,9 @@ enum ProductSubStatus {
7097
7197
 
7098
7198
  """Approved"""
7099
7199
  APPROVED
7200
+
7201
+ """Incomplete data"""
7202
+ INCOMPLETE_DATA
7100
7203
  }
7101
7204
 
7102
7205
  """An enumeration."""
@@ -7299,6 +7402,120 @@ enum ProductWarningEnum {
7299
7402
  DEFAULT_VARIANT_REQUIRED
7300
7403
  }
7301
7404
 
7405
+ type ShopifyWebhookTransactionCountableConnection {
7406
+ """Pagination data for this connection."""
7407
+ pageInfo: PageInfo!
7408
+ edges: [ShopifyWebhookTransactionCountableEdge!]!
7409
+
7410
+ """A total count of items in the collection."""
7411
+ totalCount: Int
7412
+ }
7413
+
7414
+ type ShopifyWebhookTransactionCountableEdge {
7415
+ """The item at the end of the edge."""
7416
+ node: ShopifyWebhookTransaction!
7417
+
7418
+ """A cursor for use in pagination."""
7419
+ cursor: String!
7420
+ }
7421
+
7422
+ """
7423
+ 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.
7424
+ """
7425
+ type ShopifyWebhookTransaction implements Node & Job {
7426
+ """The ID of the object"""
7427
+ id: ID!
7428
+
7429
+ """Job status."""
7430
+ status: JobStatusEnum!
7431
+
7432
+ """Job message."""
7433
+ message: String
7434
+
7435
+ """Created date time of job in ISO 8601 format."""
7436
+ createdAt: DateTime!
7437
+
7438
+ """Date time of job last update in ISO 8601 format."""
7439
+ updatedAt: DateTime!
7440
+ tenant: Tenant!
7441
+
7442
+ """Seller associated with this webhook"""
7443
+ seller: Seller!
7444
+
7445
+ """
7446
+ Shopify event type (e.g., 'products/create', 'inventory_levels/update')
7447
+ """
7448
+ eventType: String
7449
+
7450
+ """Shop domain that sent the webhook (e.g., 'my-store.myshopify.com')"""
7451
+ shopifyDomain: String
7452
+
7453
+ """Shopify's webhook ID from X-Shopify-Webhook-Id header"""
7454
+ shopifyWebhookId: String
7455
+
7456
+ """
7457
+ 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.
7458
+ """
7459
+ rawPayload: JSONString
7460
+
7461
+ """
7462
+ 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.
7463
+ """
7464
+ mappedData: JSONString
7465
+
7466
+ """
7467
+ 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.
7468
+ """
7469
+ unmappedFields: JSONString
7470
+
7471
+ """
7472
+ 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.
7473
+ """
7474
+ fieldMappingVersion: String
7475
+
7476
+ """
7477
+ Shopify-specific processing context. Includes: API version, processing time, retry count, etc. Useful for performance analysis and debugging.
7478
+ """
7479
+ processingMetadata: JSONString
7480
+
7481
+ """
7482
+ Per-field validation errors with severity levels. Format: {field_name: {message, severity, value}}. Severity: 'warning' (non-critical), 'error' (needs fixing), 'critical' (blocks creation).
7483
+ """
7484
+ validationErrors: JSONString
7485
+
7486
+ """
7487
+ 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.
7488
+ """
7489
+ entitiesCreated: [String]
7490
+
7491
+ """
7492
+ 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.
7493
+ """
7494
+ entitiesFailed: JSONString
7495
+
7496
+ """
7497
+ 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.
7498
+ """
7499
+ isPartialSuccess: Boolean
7500
+
7501
+ """
7502
+ Link to primary created marketplace entity (e.g., '/products/123'). Use this to navigate directly to the created entity in the Dashboard.
7503
+ """
7504
+ marketplaceEntityLink: String
7505
+
7506
+ """Product ID if this webhook created/updated a product"""
7507
+ productId: Int
7508
+
7509
+ """ProductVariant ID if this webhook created/updated a variant"""
7510
+ variantId: Int
7511
+
7512
+ """Warehouse ID if this webhook created/updated a warehouse (location)"""
7513
+ warehouseId: Int
7514
+
7515
+ """Stock ID if this webhook created/updated inventory levels"""
7516
+ stockId: Int
7517
+ }
7518
+
7302
7519
  """Represents availability of a variant in the storefront."""
7303
7520
  type VariantPricingInfo {
7304
7521
  """Whether it is in sale or not."""
@@ -8214,7 +8431,9 @@ type WebhookJobCountableEdge {
8214
8431
  cursor: String!
8215
8432
  }
8216
8433
 
8217
- """Represents job data of incoming webhook."""
8434
+ """
8435
+ Represents incoming webhook transaction with comprehensive data preservation. New ELT-based approach ensures no data loss and supports partial success states.
8436
+ """
8218
8437
  type WebhookJob implements Node & Job {
8219
8438
  """The ID of the object"""
8220
8439
  id: ID!
@@ -8231,13 +8450,74 @@ type WebhookJob implements Node & Job {
8231
8450
  """Date time of job last update in ISO 8601 format."""
8232
8451
  updatedAt: DateTime!
8233
8452
  tenant: Tenant!
8453
+
8454
+ """Original webhook payload (legacy field)"""
8234
8455
  body: JSONString
8456
+
8457
+ """Request headers and metadata"""
8235
8458
  requestMeta: JSONString
8459
+
8460
+ """Webhook source (e.g., 'shopify')"""
8236
8461
  source: String
8462
+
8463
+ """Normalized event type"""
8237
8464
  type: GenericWebhookTransactionType
8465
+
8466
+ """Link to vendor entity. DEPRECATED: No longer used."""
8238
8467
  vendorEntityLink: String @deprecated(reason: "This will be removed on September 26, 2025")
8468
+
8469
+ """
8470
+ Link to marketplace entity (e.g., /products/123). DEPRECATED: Use entities_created instead.
8471
+ """
8239
8472
  marketplaceEntityLink: String @deprecated(reason: "This will be removed on September 26, 2025")
8473
+
8474
+ """Seller associated with this webhook"""
8240
8475
  seller: Seller
8476
+
8477
+ """
8478
+ 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.
8479
+ """
8480
+ rawPayload: JSONString
8481
+
8482
+ """
8483
+ 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.
8484
+ """
8485
+ mappedData: JSONString
8486
+
8487
+ """
8488
+ 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.
8489
+ """
8490
+ unmappedFields: JSONString
8491
+
8492
+ """
8493
+ Per-field validation errors with severity levels. Format: {field_name: {message, severity, value}}. Severity: 'warning' (non-critical), 'error' (needs fixing), 'critical' (blocks creation).
8494
+ """
8495
+ validationErrors: JSONString
8496
+
8497
+ """
8498
+ 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.
8499
+ """
8500
+ fieldMappingVersion: String
8501
+
8502
+ """
8503
+ Additional processing context. Includes: ingestion_method, start_time, end_time, entities_created_count, entities_failed_count. Useful for performance analysis and debugging.
8504
+ """
8505
+ processingMetadata: JSONString
8506
+
8507
+ """
8508
+ List of successfully created entities. Format: ['product:123', 'variant:456', 'image:789']. Use this to track what was created from the webhook.
8509
+ """
8510
+ entitiesCreated: [String]
8511
+
8512
+ """
8513
+ List of entities that failed creation with error details. Format: [{type, error, details}]. Review this to understand why some entities couldn't be created.
8514
+ """
8515
+ entitiesFailed: JSONString
8516
+
8517
+ """
8518
+ 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.
8519
+ """
8520
+ isPartialSuccess: Boolean
8241
8521
  }
8242
8522
 
8243
8523
  """An enumeration."""
@@ -8438,6 +8718,62 @@ enum WebhookJobSortField {
8438
8718
  CREATED_AT
8439
8719
  }
8440
8720
 
8721
+ input ShopifyWebhookTransactionFilterInput {
8722
+ status: [WebhookJobStatus!]
8723
+ eventType: [ShopifyEventType!]
8724
+ shopifyDomain: String
8725
+ isPartialSuccess: Boolean
8726
+ createdAt: DateTime
8727
+ search: String
8728
+ created: DateRangeInput
8729
+ }
8730
+
8731
+ """Shopify webhook event types (new plugin-based architecture)."""
8732
+ enum ShopifyEventType {
8733
+ PRODUCTS_CREATE
8734
+ PRODUCTS_UPDATE
8735
+ PRODUCTS_DELETE
8736
+ INVENTORY_LEVELS_UPDATE
8737
+ INVENTORY_LEVELS_CONNECT
8738
+ INVENTORY_LEVELS_DISCONNECT
8739
+ LOCATIONS_CREATE
8740
+ LOCATIONS_UPDATE
8741
+ LOCATIONS_DELETE
8742
+ ORDERS_CANCELLED
8743
+ FULFILLMENTS_CREATE
8744
+ FULFILLMENTS_UPDATE
8745
+ }
8746
+
8747
+ """Sorting options for Shopify webhook transactions."""
8748
+ input ShopifyWebhookTransactionSortingInput {
8749
+ """Specifies the direction in which to sort products."""
8750
+ direction: OrderDirection!
8751
+
8752
+ """Sort shopify_webhook_transactions by the selected field."""
8753
+ field: ShopifyWebhookTransactionSortField!
8754
+ }
8755
+
8756
+ """Sort fields for Shopify webhook transactions."""
8757
+ enum ShopifyWebhookTransactionSortField {
8758
+ """Sort by Shopify event type (e.g., products/create)"""
8759
+ EVENT_TYPE
8760
+
8761
+ """Sort by processing status (pending, processing, success, failed)"""
8762
+ STATUS
8763
+
8764
+ """Sort by webhook received timestamp"""
8765
+ CREATED_AT
8766
+
8767
+ """Sort by last update timestamp"""
8768
+ UPDATED_AT
8769
+
8770
+ """Sort by shop domain"""
8771
+ SHOPIFY_DOMAIN
8772
+
8773
+ """Sort by partial success state"""
8774
+ IS_PARTIAL_SUCCESS
8775
+ }
8776
+
8441
8777
  input WarehouseFilterInput {
8442
8778
  seller: ID
8443
8779
  search: String
@@ -11579,6 +11915,114 @@ enum ExportFileSortField {
11579
11915
  UPDATED_AT
11580
11916
  }
11581
11917
 
11918
+ """Represents a job data of exported file."""
11919
+ type ImportFile implements Node & Job {
11920
+ """The ID of the object"""
11921
+ id: ID!
11922
+ user: User
11923
+ app: App
11924
+
11925
+ """Job status."""
11926
+ status: JobStatusEnum!
11927
+
11928
+ """Created date time of job in ISO 8601 format."""
11929
+ createdAt: DateTime!
11930
+
11931
+ """Date time of job last update in ISO 8601 format."""
11932
+ updatedAt: DateTime!
11933
+
11934
+ """Job message."""
11935
+ message: String
11936
+
11937
+ """The URL of file to download."""
11938
+ url: String
11939
+
11940
+ """List of events associated with the import."""
11941
+ events: [ImportEvent!]
11942
+ }
11943
+
11944
+ """History log of import file."""
11945
+ type ImportEvent implements Node {
11946
+ """The ID of the object"""
11947
+ id: ID!
11948
+
11949
+ """Date when event happened at in ISO 8601 format."""
11950
+ date: DateTime!
11951
+
11952
+ """Import event type."""
11953
+ type: ImportEventsEnum!
11954
+
11955
+ """User who performed the action."""
11956
+ user: User
11957
+
11958
+ """App which performed the action."""
11959
+ app: App
11960
+
11961
+ """Content of the event."""
11962
+ message: String!
11963
+ }
11964
+
11965
+ enum ImportEventsEnum {
11966
+ """Data import was started."""
11967
+ IMPORT_PENDING
11968
+
11969
+ """Data import was completed successfully."""
11970
+ IMPORT_SUCCESS
11971
+
11972
+ """Import Failed"""
11973
+ IMPORT_FAILED
11974
+
11975
+ """Data import failed."""
11976
+ IMPORT_DELETED
11977
+
11978
+ """Import file was deleted."""
11979
+ IMPORTED_FILE_SENT
11980
+ }
11981
+
11982
+ type ImportFileCountableConnection {
11983
+ """Pagination data for this connection."""
11984
+ pageInfo: PageInfo!
11985
+ edges: [ImportFileCountableEdge!]!
11986
+
11987
+ """A total count of items in the collection."""
11988
+ totalCount: Int
11989
+ }
11990
+
11991
+ type ImportFileCountableEdge {
11992
+ """The item at the end of the edge."""
11993
+ node: ImportFile!
11994
+
11995
+ """A cursor for use in pagination."""
11996
+ cursor: String!
11997
+ }
11998
+
11999
+ input ImportFileFilterInput {
12000
+ createdAt: DateTimeRangeInput
12001
+ updatedAt: DateTimeRangeInput
12002
+ status: JobStatusEnum
12003
+ user: String
12004
+ app: String
12005
+ }
12006
+
12007
+ input ImportFileSortingInput {
12008
+ """Specifies the direction in which to sort products."""
12009
+ direction: OrderDirection!
12010
+
12011
+ """Sort import file by the selected field."""
12012
+ field: ImportFileSortField!
12013
+ }
12014
+
12015
+ enum ImportFileSortField {
12016
+ """Sort import file by status."""
12017
+ STATUS
12018
+
12019
+ """Sort import file by created at."""
12020
+ CREATED_AT
12021
+
12022
+ """Sort import file by updated at."""
12023
+ UPDATED_AT
12024
+ }
12025
+
11582
12026
  """Event object for all models."""
11583
12027
  type Event {
11584
12028
  """The unique identifier across all event tables."""
@@ -12084,7 +12528,7 @@ type Mutation {
12084
12528
  description: String
12085
12529
 
12086
12530
  """
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.
12531
+ Used when uploading a new document or file in a multipart request that does not exist in the system already. Supported file types: image/x-eps, image/jpeg, application/x-pdf, image/jpg, application/x-acad, image/bmp, application/gzip, application/acad, application/x-gzip, image/eps, image/x-dwg, application/x-dxf, text/x-pdf, text/rtf, application/vnd.openxmlformats-officedocument.presentationml.slideshow, application/pdf, application/x-zip-compressed, application/gzip-compressed, application/dwg, image/svg, application/x-rar, application/svg+xml, application/x-rtf, image/tif, application/x-eps, text/pdf, text/x-csv, application/csv, text/csv, application/x-csv, application/eps, text/comma-separated-values, drawing/x-dwf, application/vnd.pdf, application/vnd.oasis.opendocument.presentation, image/x-ms-bmp, text/svg, text/plain, application/vnd.ms-powerpoint, text/svg-xml, application/excel, application/x-tiff, application/dxf, application/acrobat, application/zip, image/svg+xml, application/x-tar, image/x-tif, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/x-jpg, text/x-comma-separated-values, image/x-tiff, image/x-dxf, drawing/dwg, application/rtf, image/webp, application/jpg, application/x-tif, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/tif, image/heif-sequence, application/msword, application/vnd.ms-word, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.oasis.opendocument.text, application/x-dwg, image/gif, image/tiff, image/x-bmp, pplication/vnd.rar, application/x-autocad, image/png, drawing/x-dwg, application/x-rar-compressed, image/heic-sequence, image/vnd.dwg, application/postscript, image/dxf, application/tiff, application/gzipped, image/heif, image/heic, application/vnd.oasis.opendocument.spreadsheet.
12088
12532
  """
12089
12533
  file: Upload!
12090
12534
 
@@ -14341,6 +14785,18 @@ type Mutation {
14341
14785
  input: ExportProductsInput!
14342
14786
  ): ProductsExport
14343
14787
 
14788
+ """Upload CSV file for product import and parse its structure."""
14789
+ createImportFile(
14790
+ """CSV file to upload."""
14791
+ file: Upload!
14792
+ ): CreateImportFile
14793
+
14794
+ """Start processing CSV product import with field mappings."""
14795
+ startCsvImport(
14796
+ """Input data for CSV import"""
14797
+ input: ImportProductsInput!
14798
+ ): StartCSVImport
14799
+
14344
14800
  """Adds a gift card or a voucher to a checkout."""
14345
14801
  checkoutAddPromoCode(
14346
14802
  """Checkout ID."""
@@ -20007,70 +20463,6 @@ type NauticalOrderLinesCsvUpload {
20007
20463
  orderErrors: [OrderError!]!
20008
20464
  }
20009
20465
 
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
20466
  """
20075
20467
  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
20468
  """
@@ -20944,6 +21336,58 @@ enum FileTypesEnum {
20944
21336
  XLSX
20945
21337
  }
20946
21338
 
21339
+ """Upload CSV file for product import and parse its structure."""
21340
+ type CreateImportFile {
21341
+ """The newly created import file with parsed metadata."""
21342
+ importFile: ImportFile
21343
+
21344
+ """Parsed CSV metadata (headers, row count, examples)."""
21345
+ metadata: CSVMetadata
21346
+ importErrors: [ExportError!]!
21347
+ }
21348
+
21349
+ """CSV file metadata extracted during parsing."""
21350
+ type CSVMetadata {
21351
+ """List of CSV column headers."""
21352
+ headers: [String!]!
21353
+
21354
+ """Total number of rows in CSV (excluding header)."""
21355
+ rowCount: Int!
21356
+
21357
+ """Sample values for each column (first 3 non-empty values)."""
21358
+ examples: JSONString!
21359
+ }
21360
+
21361
+ """Start processing CSV product import with field mappings."""
21362
+ type StartCSVImport {
21363
+ """The import file being processed."""
21364
+ importFile: ImportFile
21365
+
21366
+ """Celery task ID for tracking import progress."""
21367
+ taskId: String
21368
+ importErrors: [ExportError!]!
21369
+ }
21370
+
21371
+ """Input for starting CSV product import."""
21372
+ input ImportProductsInput {
21373
+ """ID of the ImportFile to process."""
21374
+ importFileId: ID!
21375
+
21376
+ """
21377
+ Mapping of CSV column headers to Nautical product fields. Example: {"Product Name": "name", "Price": "price", "SKU": "sku"}
21378
+ """
21379
+ fieldMappings: JSONString!
21380
+
21381
+ """Optional default ProductType ID for products without type specified."""
21382
+ defaultProductTypeId: ID
21383
+
21384
+ """Optional default Category ID for products without category specified."""
21385
+ defaultCategoryId: ID
21386
+
21387
+ """Number of rows to process per batch (default 100)."""
21388
+ batchSize: Int = 100
21389
+ }
21390
+
20947
21391
  """Adds a gift card or a voucher to a checkout."""
20948
21392
  type CheckoutAddPromoCode {
20949
21393
  """The checkout with the added gift card or voucher."""
@@ -22368,3 +22812,8 @@ scalar federation__Scope
22368
22812
 
22369
22813
  """This string-serialized scalar represents an authorization policy."""
22370
22814
  scalar federation__Policy
22815
+
22816
+ """
22817
+ Contains the name of a defined context and a selection of a field from the context's type
22818
+ """
22819
+ scalar federation__ContextFieldValue
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.19.0",
4
4
  "description": "Traide API GraphQL Schema",
5
5
  "main": "./nautical/schema.graphql",
6
6
  "scripts": {
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "homepage": "https://nauticalcommerce.com",
23
23
  "devDependencies": {
24
- "@graphql-inspector/cli": "^5.0.8",
24
+ "@graphql-inspector/cli": "^6.0.3",
25
25
  "graphql": "^16.9.0"
26
26
  }
27
27
  }