@fluentcommerce/fc-connect-sdk 0.1.53 → 0.1.55
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.
- package/CHANGELOG.md +30 -2
- package/README.md +39 -0
- package/dist/cjs/auth/index.d.ts +3 -0
- package/dist/cjs/auth/index.js +13 -0
- package/dist/cjs/auth/profile-loader.d.ts +18 -0
- package/dist/cjs/auth/profile-loader.js +208 -0
- package/dist/cjs/client-factory.d.ts +4 -0
- package/dist/cjs/client-factory.js +10 -0
- package/dist/cjs/clients/fluent-client.js +13 -6
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.js +8 -2
- package/dist/cjs/utils/pagination-helpers.js +38 -2
- package/dist/cjs/versori/fluent-versori-client.js +11 -5
- package/dist/esm/auth/index.d.ts +3 -0
- package/dist/esm/auth/index.js +2 -0
- package/dist/esm/auth/profile-loader.d.ts +18 -0
- package/dist/esm/auth/profile-loader.js +169 -0
- package/dist/esm/client-factory.d.ts +4 -0
- package/dist/esm/client-factory.js +9 -0
- package/dist/esm/clients/fluent-client.js +13 -6
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/utils/pagination-helpers.js +38 -2
- package/dist/esm/versori/fluent-versori-client.js +11 -5
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/tsconfig.types.tsbuildinfo +1 -1
- package/dist/types/auth/index.d.ts +3 -0
- package/dist/types/auth/profile-loader.d.ts +18 -0
- package/dist/types/client-factory.d.ts +4 -0
- package/dist/types/index.d.ts +3 -1
- package/docs/00-START-HERE/EXPORT-VALIDATION.md +158 -158
- package/docs/00-START-HERE/cli-analyze-source-structure-guide.md +655 -655
- package/docs/00-START-HERE/cli-documentation-index.md +202 -202
- package/docs/00-START-HERE/cli-quick-reference.md +252 -252
- package/docs/00-START-HERE/decision-tree.md +552 -552
- package/docs/00-START-HERE/getting-started.md +1070 -1070
- package/docs/00-START-HERE/mapper-quick-decision-guide.md +235 -235
- package/docs/00-START-HERE/readme.md +237 -237
- package/docs/00-START-HERE/retailerid-configuration.md +404 -404
- package/docs/00-START-HERE/sdk-philosophy.md +794 -794
- package/docs/00-START-HERE/troubleshooting-quick-reference.md +1086 -1086
- package/docs/01-TEMPLATES/faq.md +686 -686
- package/docs/01-TEMPLATES/patterns/pattern-templates-guide.md +68 -68
- package/docs/01-TEMPLATES/patterns/patterns-csv-schema-validation-and-rejection-report.md +233 -233
- package/docs/01-TEMPLATES/patterns/patterns-custom-resolvers.md +407 -407
- package/docs/01-TEMPLATES/patterns/patterns-error-handling-retry.md +511 -511
- package/docs/01-TEMPLATES/patterns/patterns-field-mapping-universal.md +701 -701
- package/docs/01-TEMPLATES/patterns/patterns-large-file-splitting.md +1430 -1430
- package/docs/01-TEMPLATES/patterns/patterns-master-data-etl.md +2399 -2399
- package/docs/01-TEMPLATES/patterns/patterns-pagination-streaming.md +447 -447
- package/docs/01-TEMPLATES/patterns/patterns-state-duplicate-prevention.md +385 -385
- package/docs/01-TEMPLATES/readme.md +957 -957
- package/docs/01-TEMPLATES/standalone/standalone-asn-inbound-processing.md +1209 -1209
- package/docs/01-TEMPLATES/standalone/standalone-graphql-query-export.md +1140 -1140
- package/docs/01-TEMPLATES/standalone/standalone-graphql-to-parquet-partitioned-s3.md +432 -432
- package/docs/01-TEMPLATES/standalone/standalone-multi-channel-inventory-sync.md +1185 -1185
- package/docs/01-TEMPLATES/standalone/standalone-multi-source-aggregation.md +1462 -1462
- package/docs/01-TEMPLATES/standalone/standalone-s3-csv-batch-api.md +1390 -1390
- package/docs/01-TEMPLATES/standalone/standalone-s3-csv-inventory-to-batch.md +330 -330
- package/docs/01-TEMPLATES/standalone/standalone-scripts-guide.md +87 -87
- package/docs/01-TEMPLATES/standalone/standalone-sftp-xml-graphql.md +1444 -1444
- package/docs/01-TEMPLATES/standalone/standalone-webhook-payload-processing.md +688 -688
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-dropship-order-routing.md +193 -193
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-graphql-parquet-extraction.md +518 -518
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-inter-location-transfers.md +2162 -2162
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-pre-order-allocation.md +2226 -2226
- package/docs/01-TEMPLATES/versori/business-examples/business-scenarios-guide.md +87 -87
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-connection-validation-pattern.md +656 -656
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-dual-workflow-connector.md +835 -835
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-guide.md +108 -108
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-kv-state-management.md +1533 -1533
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-xml-response-patterns.md +1160 -1160
- package/docs/01-TEMPLATES/versori/versori-platform-guide.md +201 -201
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-asn-purchase-order.md +1906 -1906
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-dropship-routing.md +1074 -1074
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-flash-sale-reserve.md +1395 -1395
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-generic-xml-order.md +888 -888
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-payment-gateway-integration.md +2478 -2478
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-rma-returns-comprehensive.md +2240 -2240
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-xml-order-ingestion.md +2029 -2029
- package/docs/01-TEMPLATES/versori/webhooks/webhook-templates-guide.md +140 -140
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/inventory-mapping.json +20 -20
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/products_2025-01-22.csv +11 -11
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/sample-data-guide.md +34 -34
- package/docs/01-TEMPLATES/versori/workflows/_examples/workflow-examples-guide.md +36 -36
- package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-modes-guide.md +1038 -1038
- package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-workflows-guide.md +138 -138
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/graphql-extraction-guide.md +63 -63
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-csv.md +2062 -2062
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-xml.md +2294 -2294
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-s3-csv.md +2461 -2461
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-sftp-xml.md +2529 -2529
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-csv.md +2464 -2464
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-json.md +1959 -1959
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-s3-csv.md +1953 -1953
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-sftp-xml.md +2541 -2541
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-s3-json.md +2384 -2384
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-sftp-xml.md +2445 -2445
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-csv.md +2355 -2355
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-json.md +2042 -2042
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-sftp-xml.md +2726 -2726
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/batch-api-guide.md +206 -206
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-cycle-count-reconciliation.md +2030 -2030
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-multi-channel-inventory-sync.md +1882 -1882
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md +2827 -2827
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-json-inventory-batch.md +1952 -1952
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-xml-inventory-batch.md +3289 -3289
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md +3064 -3064
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-json-inventory-batch.md +3238 -3238
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-xml-inventory-batch.md +2977 -2977
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/event-api-guide.md +321 -321
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-json-order-cancel-event.md +959 -959
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-xml-order-cancel-event.md +1170 -1170
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-csv-product-event.md +2312 -2312
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-json-product-event.md +2999 -2999
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-parquet-product-event.md +2836 -2836
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-xml-product-event.md +2395 -2395
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-csv-product-event.md +2295 -2295
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-json-product-event.md +2602 -2602
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-parquet-product-event.md +2589 -2589
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-xml-product-event.md +3578 -3578
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/graphql-mutations-guide.md +93 -93
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-json-order-update-graphql.md +1260 -1260
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-xml-order-update-graphql.md +1472 -1472
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-control-graphql.md +2417 -2417
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-location-graphql.md +2811 -2811
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-price-graphql.md +2619 -2619
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-json-location-graphql.md +2807 -2807
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-xml-location-graphql.md +2373 -2373
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-control-graphql.md +2740 -2740
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-location-graphql.md +2760 -2760
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-json-location-graphql.md +1710 -1710
- package/docs/01-TEMPLATES/versori/workflows/ingestion/ingestion-workflows-guide.md +136 -136
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/rubix-webhooks-guide.md +520 -520
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-inline.md +1418 -1418
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-universal-mapper.md +1785 -1785
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-order-attribute-update.md +824 -824
- package/docs/01-TEMPLATES/versori/workflows/workflows-overview-guide.md +646 -646
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-batch-archival.md +724 -724
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-job-tracker.md +627 -627
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-partial-batch-recovery.md +561 -561
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-quick-reference.md +367 -367
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-readme.md +407 -407
- package/docs/02-CORE-GUIDES/advanced-services/readme.md +49 -49
- package/docs/02-CORE-GUIDES/api-reference/api-reference-quick-reference.md +548 -548
- package/docs/02-CORE-GUIDES/api-reference/event-api-input-output-reference.md +702 -1171
- package/docs/02-CORE-GUIDES/api-reference/examples/client-initialization.ts +286 -286
- package/docs/02-CORE-GUIDES/api-reference/graphql-error-classification.md +337 -337
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-01-client-api.md +399 -482
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-03-authentication.md +199 -199
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-04-graphql-mapping.md +925 -925
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-05-services.md +1198 -1198
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-06-data-sources.md +1083 -1083
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-07-parsers.md +1097 -1097
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-pagination.md +513 -513
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-types.md +545 -597
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-error-handling.md +527 -527
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-webhook-validation.md +514 -514
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-extraction.md +557 -557
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-utilities.md +412 -412
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-cli-tools.md +423 -423
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-error-handling.md +716 -716
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-analyze-source-structure.md +518 -518
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-partial-responses.md +212 -212
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-testing.md +300 -300
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-13-resolver-builder.md +322 -322
- package/docs/02-CORE-GUIDES/api-reference/readme.md +279 -279
- package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-quick-reference.md +351 -351
- package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-readme.md +277 -277
- package/docs/02-CORE-GUIDES/auto-pagination/examples/auto-pagination-readme.md +178 -178
- package/docs/02-CORE-GUIDES/auto-pagination/examples/common-patterns.ts +351 -351
- package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-products.ts +384 -384
- package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-virtual-positions.ts +308 -308
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-01-foundations.md +470 -470
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-02-quick-start.md +713 -713
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-03-configuration.md +754 -754
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-04-advanced-patterns.md +732 -732
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-05-sdk-integration.md +847 -847
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-06-troubleshooting.md +359 -359
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-07-api-reference.md +462 -462
- package/docs/02-CORE-GUIDES/auto-pagination/readme.md +54 -54
- package/docs/02-CORE-GUIDES/data-sources/data-sources-file-operations-error-handling.md +1487 -1487
- package/docs/02-CORE-GUIDES/data-sources/data-sources-quick-reference.md +836 -836
- package/docs/02-CORE-GUIDES/data-sources/data-sources-readme.md +276 -276
- package/docs/02-CORE-GUIDES/data-sources/data-sources-sftp-credential-access-security.md +553 -553
- package/docs/02-CORE-GUIDES/data-sources/examples/common-patterns.ts +409 -409
- package/docs/02-CORE-GUIDES/data-sources/examples/data-sources-readme.md +178 -178
- package/docs/02-CORE-GUIDES/data-sources/examples/s3-operations.ts +308 -308
- package/docs/02-CORE-GUIDES/data-sources/examples/sftp-operations.ts +371 -371
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-01-foundations.md +735 -735
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-02-s3-operations.md +1302 -1302
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-03-sftp-operations.md +1379 -1379
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-04-file-patterns.md +941 -941
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-05-advanced-topics.md +813 -813
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-06-integration-patterns.md +486 -486
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-07-troubleshooting.md +387 -387
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-08-api-reference.md +417 -417
- package/docs/02-CORE-GUIDES/data-sources/readme.md +77 -77
- package/docs/02-CORE-GUIDES/error-handling-guide.md +936 -936
- package/docs/02-CORE-GUIDES/extraction/examples/02-core-guides-extraction-readme.md +116 -116
- package/docs/02-CORE-GUIDES/extraction/examples/common-patterns.ts +428 -428
- package/docs/02-CORE-GUIDES/extraction/examples/extract-inventory-basic.ts +187 -187
- package/docs/02-CORE-GUIDES/extraction/extraction-quick-reference.md +596 -596
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-01-foundations.md +514 -514
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-02-basic-extraction.md +823 -823
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-03-parquet-processing.md +507 -507
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-04-data-enrichment.md +546 -546
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-05-transformation.md +494 -494
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-export-formats.md +458 -458
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-performance.md +138 -138
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-api-reference.md +148 -148
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-optimization.md +692 -692
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-08-extraction-orchestrator.md +1008 -1008
- package/docs/02-CORE-GUIDES/extraction/readme.md +151 -151
- package/docs/02-CORE-GUIDES/ingestion/examples/_simple-kv-store.ts +40 -40
- package/docs/02-CORE-GUIDES/ingestion/examples/error-recovery.ts +728 -728
- package/docs/02-CORE-GUIDES/ingestion/examples/event-driven.ts +501 -501
- package/docs/02-CORE-GUIDES/ingestion/examples/local-file-ingestion.ts +88 -88
- package/docs/02-CORE-GUIDES/ingestion/examples/parquet-ingestion.ts +117 -117
- package/docs/02-CORE-GUIDES/ingestion/examples/performance-optimized.ts +647 -647
- package/docs/02-CORE-GUIDES/ingestion/examples/s3-csv-ingestion.ts +169 -169
- package/docs/02-CORE-GUIDES/ingestion/examples/sftp-csv-ingestion.ts +134 -134
- package/docs/02-CORE-GUIDES/ingestion/ingestion-quick-reference.md +546 -546
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-01-introduction.md +626 -626
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-02-quick-start.md +658 -658
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-03-data-sources.md +1052 -1052
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-04-field-mapping.md +763 -763
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-05-advanced-parsers.md +676 -676
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-06-batch-api.md +1295 -1295
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-api-reference.md +138 -138
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-state-management.md +1037 -1037
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-08-performance-optimization.md +1349 -1349
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-09-best-practices.md +1893 -1893
- package/docs/02-CORE-GUIDES/ingestion/readme.md +160 -160
- package/docs/02-CORE-GUIDES/logging-guide.md +585 -585
- package/docs/02-CORE-GUIDES/mapping/error-handling-patterns.md +401 -401
- package/docs/02-CORE-GUIDES/mapping/examples/02-core-guides-mapping-readme.md +128 -128
- package/docs/02-CORE-GUIDES/mapping/examples/common-patterns.ts +273 -273
- package/docs/02-CORE-GUIDES/mapping/examples/csv-location-ingestion.json +36 -36
- package/docs/02-CORE-GUIDES/mapping/examples/csv-mapping.ts +242 -242
- package/docs/02-CORE-GUIDES/mapping/examples/graphql-to-parquet-extraction.json +36 -36
- package/docs/02-CORE-GUIDES/mapping/examples/json-mapping.ts +213 -213
- package/docs/02-CORE-GUIDES/mapping/examples/json-product-to-mutation.json +48 -48
- package/docs/02-CORE-GUIDES/mapping/examples/xml-mapping.ts +291 -291
- package/docs/02-CORE-GUIDES/mapping/examples/xml-order-to-mutation.json +45 -45
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-quick-reference.md +463 -463
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-readme.md +227 -227
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-01-introduction.md +222 -222
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-02-quick-start.md +351 -351
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-03-schema-validation.md +569 -569
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-04-mapping-patterns.md +471 -471
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-05-configuration-reference.md +611 -611
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-advanced-xpath.md +148 -148
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-path-syntax.md +464 -464
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-api-reference.md +94 -94
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-array-handling.md +307 -307
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-08-custom-resolvers.md +544 -544
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-09-advanced-patterns.md +427 -427
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-10-hooks-and-variables.md +336 -336
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-11-error-handling.md +488 -488
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-12-arguments-vs-nodes.md +383 -383
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-13-best-practices.md +477 -477
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/readme.md +62 -62
- package/docs/02-CORE-GUIDES/mapping/mapping-format-decision-tree.md +480 -480
- package/docs/02-CORE-GUIDES/mapping/mapping-graphql-alias-batching-guide.md +820 -820
- package/docs/02-CORE-GUIDES/mapping/mapping-javascript-objects.md +2369 -2369
- package/docs/02-CORE-GUIDES/mapping/mapping-mapper-comparison-guide.md +682 -682
- package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-07-api-reference.md +1327 -1327
- package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-08-error-handling.md +1142 -1142
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-04-use-cases.md +891 -891
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-helpers-resolvers.md +1126 -1126
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-sdk-resolvers.md +199 -199
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-07-api-reference.md +1319 -1319
- package/docs/02-CORE-GUIDES/mapping/readme.md +178 -178
- package/docs/02-CORE-GUIDES/mapping/resolver-registration.md +410 -410
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/common-patterns.ts +226 -226
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/custom-resolvers.ts +227 -227
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/sdk-resolvers-usage.ts +203 -203
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-readme.md +274 -274
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-api-reference.md +679 -679
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-cookbook.md +826 -826
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-guide.md +1330 -1330
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-helpers-reference.md +1437 -1437
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-parameters-reference.md +553 -553
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-troubleshooting.md +854 -854
- package/docs/02-CORE-GUIDES/mapping/resolvers/readme.md +75 -75
- package/docs/02-CORE-GUIDES/parsers/examples/02-core-guides-parsers-readme.md +161 -161
- package/docs/02-CORE-GUIDES/parsers/examples/csv-parser-examples.ts +110 -110
- package/docs/02-CORE-GUIDES/parsers/examples/json-parser-examples.ts +33 -33
- package/docs/02-CORE-GUIDES/parsers/examples/parquet-parser-examples.ts +47 -47
- package/docs/02-CORE-GUIDES/parsers/examples/xml-parser-examples.ts +38 -38
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-01-foundations.md +355 -355
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-02-csv-parser.md +772 -772
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-03-json-parser.md +789 -789
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-04-xml-parser.md +857 -857
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-05-parquet-parser.md +603 -603
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-integration-patterns.md +702 -702
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-streaming.md +121 -121
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-api-reference.md +89 -89
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-troubleshooting.md +727 -727
- package/docs/02-CORE-GUIDES/parsers/parsers-quick-reference.md +482 -482
- package/docs/02-CORE-GUIDES/parsers/parsers-readme.md +258 -258
- package/docs/02-CORE-GUIDES/parsers/readme.md +65 -65
- package/docs/02-CORE-GUIDES/readme.md +194 -194
- package/docs/02-CORE-GUIDES/webhook-validation/examples/basic-validation.ts +108 -108
- package/docs/02-CORE-GUIDES/webhook-validation/examples/common-patterns.ts +316 -316
- package/docs/02-CORE-GUIDES/webhook-validation/examples/webhook-validation-readme.md +61 -61
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-01-foundations.md +440 -440
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-02-quick-start.md +525 -525
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-03-versori-integration.md +741 -741
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-04-platform-integration.md +629 -629
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-05-configuration.md +535 -535
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-error-handling.md +611 -611
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-troubleshooting.md +124 -124
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-07-api-reference.md +511 -511
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-08-rubix-webhooks.md +590 -590
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-09-rubix-event-vs-http-call.md +432 -432
- package/docs/02-CORE-GUIDES/webhook-validation/readme.md +239 -239
- package/docs/02-CORE-GUIDES/webhook-validation/webhook-validation-quick-reference.md +392 -392
- package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-quick-reference.md +498 -498
- package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-readme.md +313 -313
- package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/common-patterns.ts +612 -612
- package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/connector-scenarios-readme.md +253 -253
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-01-foundations.md +452 -452
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-02-simple-scenarios.md +681 -681
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-03-intermediate-scenarios.md +637 -637
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-04-advanced-scenarios.md +650 -650
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-05-bidirectional-sync.md +233 -233
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-06-production-patterns.md +442 -442
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-07-reference.md +445 -445
- package/docs/03-PATTERN-GUIDES/connector-scenarios/readme.md +31 -31
- package/docs/03-PATTERN-GUIDES/enterprise-integration-patterns.md +1528 -1528
- package/docs/03-PATTERN-GUIDES/error-handling/comprehensive-error-handling-guide.md +1437 -1437
- package/docs/03-PATTERN-GUIDES/error-handling/error-handling-quick-reference.md +390 -390
- package/docs/03-PATTERN-GUIDES/error-handling/examples/common-patterns.ts +438 -438
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-01-foundations.md +362 -362
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-02-error-types.md +850 -850
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-03-utf8-handling.md +456 -456
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-04-error-scenarios.md +658 -658
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-05-calling-patterns.md +671 -671
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-06-retry-strategies.md +1034 -1034
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-07-monitoring.md +653 -653
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-08-api-reference.md +847 -847
- package/docs/03-PATTERN-GUIDES/error-handling/readme.md +36 -36
- package/docs/03-PATTERN-GUIDES/examples/__tests__/readme.md +40 -40
- package/docs/03-PATTERN-GUIDES/examples/__tests__/resolver-examples.test.js +282 -282
- package/docs/03-PATTERN-GUIDES/examples/test-data/03-pattern-guides-readme.md +110 -110
- package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-inventory.json +123 -123
- package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-order.json +171 -171
- package/docs/03-PATTERN-GUIDES/examples/test-data/readme.md +28 -28
- package/docs/03-PATTERN-GUIDES/extraction/extraction-readme.md +15 -15
- package/docs/03-PATTERN-GUIDES/extraction/readme.md +25 -25
- package/docs/03-PATTERN-GUIDES/file-operations/examples/common-patterns.ts +407 -407
- package/docs/03-PATTERN-GUIDES/file-operations/examples/file-operations-readme.md +142 -142
- package/docs/03-PATTERN-GUIDES/file-operations/file-operations-quick-reference.md +462 -462
- package/docs/03-PATTERN-GUIDES/file-operations/file-operations-readme.md +379 -379
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-01-foundations.md +430 -430
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-02-quick-start.md +484 -484
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-03-s3-operations.md +507 -507
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-04-sftp-operations.md +963 -963
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-05-streaming-performance.md +503 -503
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-archive-patterns.md +386 -386
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-error-handling.md +117 -117
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-api-reference.md +78 -78
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-testing-troubleshooting.md +567 -567
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-08-api-reference.md +1055 -1055
- package/docs/03-PATTERN-GUIDES/file-operations/readme.md +32 -32
- package/docs/03-PATTERN-GUIDES/ingestion/ingestion-readme.md +15 -15
- package/docs/03-PATTERN-GUIDES/ingestion/readme.md +25 -25
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/batch-processing.ts +130 -130
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/common-patterns.ts +360 -360
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/delta-sync.ts +130 -130
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/integration-patterns-readme.md +100 -100
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/real-time-webhook.ts +398 -398
- package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-quick-reference.md +962 -962
- package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-readme.md +134 -134
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-01-real-time-processing.md +991 -991
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-02-batch-processing.md +1547 -1547
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-03-delta-sync.md +1108 -1108
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-04-webhook-patterns.md +1181 -1181
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-05-error-handling.md +1061 -1061
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-advanced-integration-services.md +1547 -1547
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-performance.md +109 -109
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-07-api-reference.md +34 -34
- package/docs/03-PATTERN-GUIDES/integration-patterns/readme.md +30 -30
- package/docs/03-PATTERN-GUIDES/logging-minimal-mode.md +128 -128
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/common-patterns.ts +380 -380
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/multiple-connections-readme.md +139 -139
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/parallel-root-connections.ts +149 -149
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/real-world-scenarios.ts +405 -405
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-01-foundations.md +378 -378
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-02-quick-start.md +566 -566
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-03-targeting-connections.md +659 -659
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-04-parallel-queries.md +656 -656
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-05-best-practices.md +624 -624
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-api-reference.md +824 -824
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-versori.md +119 -119
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-07-api-reference.md +87 -87
- package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-quick-reference.md +353 -353
- package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-readme.md +270 -270
- package/docs/03-PATTERN-GUIDES/multiple-connections/readme.md +30 -30
- package/docs/03-PATTERN-GUIDES/pagination/pagination-readme.md +14 -14
- package/docs/03-PATTERN-GUIDES/pagination/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/parquet/examples/common-patterns.ts +180 -180
- package/docs/03-PATTERN-GUIDES/parquet/examples/read-parquet.ts +48 -48
- package/docs/03-PATTERN-GUIDES/parquet/examples/write-parquet.ts +65 -65
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-01-introduction.md +393 -393
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-02-quick-start.md +572 -572
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-03-reading-parquet.md +525 -525
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-04-writing-parquet.md +554 -554
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-05-graphql-extraction.md +405 -405
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-performance.md +104 -104
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-s3-integration.md +511 -511
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-api-reference.md +90 -90
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-performance-optimization.md +525 -525
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-08-best-practices.md +712 -712
- package/docs/03-PATTERN-GUIDES/parquet/parquet-quick-reference.md +683 -683
- package/docs/03-PATTERN-GUIDES/parquet/parquet-readme.md +248 -248
- package/docs/03-PATTERN-GUIDES/parquet/readme.md +32 -32
- package/docs/03-PATTERN-GUIDES/parsers/parsers-readme.md +12 -12
- package/docs/03-PATTERN-GUIDES/parsers/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/readme.md +159 -159
- package/docs/03-PATTERN-GUIDES/webhooks/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/webhooks/webhooks-readme.md +8 -8
- package/docs/04-REFERENCE/architecture/architecture-01-overview.md +427 -427
- package/docs/04-REFERENCE/architecture/architecture-02-client-architecture.md +424 -424
- package/docs/04-REFERENCE/architecture/architecture-03-data-flow.md +690 -690
- package/docs/04-REFERENCE/architecture/architecture-04-service-layer.md +834 -834
- package/docs/04-REFERENCE/architecture/architecture-05-integration-architecture.md +655 -655
- package/docs/04-REFERENCE/architecture/architecture-06-state-management.md +653 -653
- package/docs/04-REFERENCE/architecture/architecture-adding-new-data-sources.md +686 -686
- package/docs/04-REFERENCE/architecture/readme.md +279 -279
- package/docs/04-REFERENCE/platforms/deno/readme.md +117 -117
- package/docs/04-REFERENCE/platforms/nodejs/readme.md +146 -146
- package/docs/04-REFERENCE/platforms/readme.md +135 -135
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-01-introduction.md +398 -398
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-02-quick-start.md +560 -560
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-03-authentication.md +757 -757
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-04-workflows.md +2476 -2476
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-05-connections.md +1167 -1167
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-kv-storage.md +990 -990
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-state-management.md +121 -121
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-api-reference.md +68 -68
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-deployment.md +731 -731
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-08-best-practices.md +1111 -1111
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-09-signature-reference.md +766 -766
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-readme.md +299 -299
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-s3-sftp-configuration-guide.md +1425 -1425
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-api-key-security.md +816 -816
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-connection-security.md +681 -681
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-workflow-task-types.md +708 -708
- package/docs/04-REFERENCE/platforms/versori/readme.md +108 -108
- package/docs/04-REFERENCE/readme.md +148 -148
- package/docs/04-REFERENCE/resolver-signature/examples/advanced-resolvers.ts +482 -482
- package/docs/04-REFERENCE/resolver-signature/examples/async-resolvers.ts +496 -496
- package/docs/04-REFERENCE/resolver-signature/examples/basic-resolvers.ts +343 -343
- package/docs/04-REFERENCE/resolver-signature/examples/resolver-signature-readme.md +188 -188
- package/docs/04-REFERENCE/resolver-signature/examples/testing-resolvers.ts +463 -463
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-01-foundations.md +286 -286
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-02-parameter-reference.md +643 -643
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-03-basic-examples.md +521 -521
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-04-advanced-patterns.md +739 -739
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-05-sdk-resolvers.md +531 -531
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-migration-guide.md +650 -650
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-testing.md +125 -125
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-07-api-reference.md +794 -794
- package/docs/04-REFERENCE/resolver-signature/readme.md +64 -64
- package/docs/04-REFERENCE/resolver-signature/resolver-signature-quick-reference.md +270 -270
- package/docs/04-REFERENCE/resolver-signature/resolver-signature-readme.md +351 -351
- package/docs/04-REFERENCE/schema/fluent-commerce-schema.json +764 -764
- package/docs/04-REFERENCE/schema/readme.md +141 -141
- package/docs/04-REFERENCE/testing/examples/04-reference-testing-readme.md +158 -158
- package/docs/04-REFERENCE/testing/examples/fluent-testing.ts +62 -62
- package/docs/04-REFERENCE/testing/examples/health-check.ts +155 -155
- package/docs/04-REFERENCE/testing/examples/integration-test.ts +119 -119
- package/docs/04-REFERENCE/testing/examples/performance-test.ts +183 -183
- package/docs/04-REFERENCE/testing/examples/s3-testing.ts +127 -127
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-01-foundations.md +267 -267
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-02-s3-testing.md +599 -599
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-03-fluent-testing.md +589 -589
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-04-integration-testing.md +699 -699
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-05-debugging.md +478 -478
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-cicd-integration.md +463 -463
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-preflight-validation.md +131 -131
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-best-practices.md +499 -499
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-coverage-ci.md +165 -165
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-08-api-reference.md +634 -634
- package/docs/04-REFERENCE/testing/readme.md +86 -86
- package/docs/04-REFERENCE/testing/testing-quick-reference.md +667 -667
- package/docs/04-REFERENCE/testing/testing-readme.md +286 -286
- package/docs/04-REFERENCE/troubleshooting/readme.md +144 -144
- package/docs/04-REFERENCE/troubleshooting/troubleshooting-deno-sftp-compatibility.md +392 -392
- package/docs/template-loading-matrix.md +242 -242
- package/package.json +5 -3
|
@@ -1,611 +1,611 @@
|
|
|
1
|
-
# Configuration Reference
|
|
2
|
-
|
|
3
|
-
[← Back to GraphQL Mutation Mapping Guide](../graphql-mutation-mapping-readme.md)
|
|
4
|
-
|
|
5
|
-
**Module 5 of 13** | **Level**: Intermediate | **Time**: 15 minutes
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Overview
|
|
10
|
-
|
|
11
|
-
This module documents the complete mapping configuration structure used by `GraphQLMutationMapper`. There are **two distinct configuration patterns** (see [Module 04: Mapping Patterns](./graphql-mutation-mapping-04-mapping-patterns.md)):
|
|
12
|
-
|
|
13
|
-
1. **Pattern 1 (Simple):** Uses `arguments` property - Direct mapping
|
|
14
|
-
2. **Pattern 2 (Advanced):** Uses `fields` + optional `nodes` - Node extraction + mapping
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## Base Configuration Properties
|
|
19
|
-
|
|
20
|
-
All mapping configurations share these top-level properties from the `MappingConfig` interface:
|
|
21
|
-
|
|
22
|
-
| Property | Type | Required | Description |
|
|
23
|
-
|----------|------|----------|-------------|
|
|
24
|
-
| `version` | string | ✅ | Config version (use "1.0") |
|
|
25
|
-
| `mutation` | string | ✅ | GraphQL mutation name (e.g., "createOrder") |
|
|
26
|
-
| `operationName` | string | | Named operation for debugging/logging |
|
|
27
|
-
| `sourceFormat` | `"xml"` \| `"json"` \| `"jsonl"` | ✅ | Input data format |
|
|
28
|
-
| `schemaValidation` | boolean | | Enable schema validation (not used at runtime) |
|
|
29
|
-
| `returnFields` | string[] | | Fields to return from mutation response |
|
|
30
|
-
| `name` | string | | Human-readable configuration name |
|
|
31
|
-
| `description` | string | | Configuration description/documentation |
|
|
32
|
-
| `customTransforms` | Record<string, TransformFunction> | | Custom transformation functions |
|
|
33
|
-
|
|
34
|
-
**Pattern 1 adds:**
|
|
35
|
-
| Property | Type | Required | Description |
|
|
36
|
-
|----------|------|----------|-------------|
|
|
37
|
-
| `arguments` | Record<string, any> | ✅ | GraphQL mutation arguments mapping |
|
|
38
|
-
|
|
39
|
-
**Pattern 2 adds (runtime extensions):**
|
|
40
|
-
| Property | Type | Required | Description |
|
|
41
|
-
|----------|------|----------|-------------|
|
|
42
|
-
| `fields` | Record<string, FieldConfig> | ✅ | Field mapping configuration |
|
|
43
|
-
| `nodes` | Record<string, NodeConfig> | | Named extractors for nested/encoded data |
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## Pattern 1: Simple Mapping Configuration
|
|
48
|
-
|
|
49
|
-
Uses the `arguments` property for direct source-to-GraphQL mapping.
|
|
50
|
-
|
|
51
|
-
### Structure
|
|
52
|
-
|
|
53
|
-
```json
|
|
54
|
-
{
|
|
55
|
-
"version": "1.0",
|
|
56
|
-
"mutation": "createOrder",
|
|
57
|
-
"operationName": "CreateOrder",
|
|
58
|
-
"sourceFormat": "json",
|
|
59
|
-
"schemaValidation": true,
|
|
60
|
-
|
|
61
|
-
"arguments": {
|
|
62
|
-
"input": {
|
|
63
|
-
"ref": { "source": "order.orderNo", "required": true },
|
|
64
|
-
"type": { "value": "STANDARD" },
|
|
65
|
-
"totalPrice": { "source": "order.total", "resolver": "sdk.parseFloat" },
|
|
66
|
-
"items": {
|
|
67
|
-
"_array": true,
|
|
68
|
-
"source": "order.lineItems",
|
|
69
|
-
"ref": { "source": "productId" },
|
|
70
|
-
"quantity": { "source": "qty", "resolver": "sdk.parseInt" }
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
|
|
75
|
-
"returnFields": ["id", "ref", "status"]
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### When to Use Pattern 1
|
|
80
|
-
|
|
81
|
-
✅ Source data structure closely matches GraphQL schema
|
|
82
|
-
✅ Direct field-to-field mapping (no complex extraction)
|
|
83
|
-
✅ Source format is JSON or simple XML
|
|
84
|
-
✅ No custom resolvers needed, or resolvers only need mapped fields
|
|
85
|
-
|
|
86
|
-
See [Module 04: Mapping Patterns](./graphql-mutation-mapping-04-mapping-patterns.md#pattern-1-simple-mapping-map) for complete details.
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## Pattern 2: Advanced Mapping Configuration
|
|
91
|
-
|
|
92
|
-
Uses `fields` (required) and `nodes` (optional) for extraction-then-mapping workflow.
|
|
93
|
-
|
|
94
|
-
### Structure
|
|
95
|
-
|
|
96
|
-
```json
|
|
97
|
-
{
|
|
98
|
-
"version": "1.0",
|
|
99
|
-
"mutation": "createOrder",
|
|
100
|
-
"operationName": "CreateOrder",
|
|
101
|
-
"sourceFormat": "xml",
|
|
102
|
-
"schemaValidation": true,
|
|
103
|
-
|
|
104
|
-
"nodes": {
|
|
105
|
-
"orderDetails": {
|
|
106
|
-
"extract": "order.custom-attributes.custom-attribute@attribute-id=orderData",
|
|
107
|
-
"unescape": true,
|
|
108
|
-
"parse": "xml",
|
|
109
|
-
"required": true
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
|
|
113
|
-
"fields": {
|
|
114
|
-
"ref": { "source": "order@order-no", "required": true },
|
|
115
|
-
"type": { "source": "nodes.orderDetails.orderType" },
|
|
116
|
-
"totalPrice": {
|
|
117
|
-
"source": "order.totals.order-total",
|
|
118
|
-
"resolver": "sdk.parseFloat",
|
|
119
|
-
"required": true
|
|
120
|
-
},
|
|
121
|
-
"items": {
|
|
122
|
-
"_array": true,
|
|
123
|
-
"_type": "[OrderItemInput]!",
|
|
124
|
-
"source": "product-lineitems.product-lineitem",
|
|
125
|
-
"fields": {
|
|
126
|
-
"ref": { "source": "product-id", "required": true },
|
|
127
|
-
"quantity": { "source": "quantity", "resolver": "sdk.parseInt" }
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
},
|
|
131
|
-
|
|
132
|
-
"returnFields": ["id", "ref", "status"]
|
|
133
|
-
}
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
### When to Use Pattern 2
|
|
137
|
-
|
|
138
|
-
✅ Source contains nested/encoded data that needs extraction first
|
|
139
|
-
✅ XML data with embedded XML strings (common in SFCC)
|
|
140
|
-
✅ Custom resolvers need access to unmapped source fields
|
|
141
|
-
✅ Multiple levels of data transformation required
|
|
142
|
-
✅ HTML-encoded content needs unescaping
|
|
143
|
-
|
|
144
|
-
See [Module 04: Mapping Patterns](./graphql-mutation-mapping-04-mapping-patterns.md#pattern-2-advanced-mapping-with-nodes-mapwithnodes) for complete details.
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## Field Configuration (FieldConfig)
|
|
149
|
-
|
|
150
|
-
These properties define how individual fields are mapped. Used in BOTH patterns (inside `arguments` or `fields`).
|
|
151
|
-
|
|
152
|
-
### Core Field Properties
|
|
153
|
-
|
|
154
|
-
| Property | Type | Description | Example |
|
|
155
|
-
|----------|------|-------------|---------|
|
|
156
|
-
| `source` | string | Path to source data | `"order@order-no"` (XML)<br>`"order.orderNo"` (JSON) |
|
|
157
|
-
| `value` | any | Static value | `"STANDARD"`, `123`, `true` |
|
|
158
|
-
| `resolver` | string | Transformation function | `"sdk.parseInt"`, `"custom.calculateTotal"` |
|
|
159
|
-
| `required` | boolean | Field is required (throw if missing). **Note:** With resolvers, validation timing depends on whether field has `source` - see mapping foundations guide. | `true` |
|
|
160
|
-
| `defaultValue` | any | Default if source is null/undefined | `1`, `"UNKNOWN"` |
|
|
161
|
-
| `fields` | Record<string, FieldConfig> | Nested object fields | See [Nested Objects](#nested-object-configuration) |
|
|
162
|
-
|
|
163
|
-
### Internal Field Markers
|
|
164
|
-
|
|
165
|
-
These properties are used internally by the mapper for type information and array handling:
|
|
166
|
-
|
|
167
|
-
| Property | Type | Description | Usage |
|
|
168
|
-
|----------|------|-------------|-------|
|
|
169
|
-
| `_array` | boolean | Marks field as array | Arrays of items (line items, addresses, etc.) |
|
|
170
|
-
| `_type` | string | GraphQL type annotation | `"String!"`, `"[OrderItemInput]!"` |
|
|
171
|
-
| `_nested` | boolean | Marks field as nested object | Nested object structures |
|
|
172
|
-
| `_autoWrap` | boolean | Wrap single value in array | Auto-convert single item → array |
|
|
173
|
-
| `_validation` | object | Validation constraints | `{ "minItems": 1, "maxItems": 100 }` |
|
|
174
|
-
|
|
175
|
-
**Note:** Use `resolver` for all transformations. See [Module 08: Custom Resolvers](./graphql-mutation-mapping-08-custom-resolvers.md) for details.
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
## Node Configuration (NodeConfig)
|
|
180
|
-
|
|
181
|
-
Used only in Pattern 2 for extracting and parsing nested/encoded data **before** field mapping.
|
|
182
|
-
|
|
183
|
-
### Structure
|
|
184
|
-
|
|
185
|
-
```typescript
|
|
186
|
-
interface NodeConfig {
|
|
187
|
-
/** Path to extract data from source */
|
|
188
|
-
extract: string;
|
|
189
|
-
|
|
190
|
-
/** Decode HTML entities in extracted content */
|
|
191
|
-
unescape?: boolean;
|
|
192
|
-
|
|
193
|
-
/** Parse extracted string as XML or JSON */
|
|
194
|
-
parse?: 'xml' | 'json';
|
|
195
|
-
|
|
196
|
-
/** Documentation comment */
|
|
197
|
-
comment?: string;
|
|
198
|
-
|
|
199
|
-
/** Throw error if extraction returns null/undefined */
|
|
200
|
-
required?: boolean;
|
|
201
|
-
}
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
### Examples
|
|
205
|
-
|
|
206
|
-
**Extract and parse nested XML:**
|
|
207
|
-
```json
|
|
208
|
-
{
|
|
209
|
-
"nodes": {
|
|
210
|
-
"customData": {
|
|
211
|
-
"extract": "custom-attributes.custom-attribute@attribute-id=xmlData",
|
|
212
|
-
"unescape": true,
|
|
213
|
-
"parse": "xml",
|
|
214
|
-
"required": true
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
**Extract and parse nested JSON:**
|
|
221
|
-
```json
|
|
222
|
-
{
|
|
223
|
-
"nodes": {
|
|
224
|
-
"metadata": {
|
|
225
|
-
"extract": "order.custom-attributes.metadata",
|
|
226
|
-
"parse": "json"
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
**Reference extracted node in fields:**
|
|
233
|
-
```json
|
|
234
|
-
{
|
|
235
|
-
"fields": {
|
|
236
|
-
"orderType": { "source": "nodes.customData.orderType" }
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
## Complete Configuration Examples
|
|
244
|
-
|
|
245
|
-
### Minimal Configuration (Pattern 1)
|
|
246
|
-
|
|
247
|
-
```json
|
|
248
|
-
{
|
|
249
|
-
"version": "1.0",
|
|
250
|
-
"mutation": "createOrder",
|
|
251
|
-
"sourceFormat": "json",
|
|
252
|
-
|
|
253
|
-
"arguments": {
|
|
254
|
-
"input": {
|
|
255
|
-
"ref": { "source": "order.orderNo", "required": true },
|
|
256
|
-
"type": { "value": "STANDARD" }
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
### Complete Configuration (Pattern 1)
|
|
263
|
-
|
|
264
|
-
```json
|
|
265
|
-
{
|
|
266
|
-
"version": "1.0",
|
|
267
|
-
"name": "SFCC Order Ingestion",
|
|
268
|
-
"description": "Maps SFCC JSON orders to Fluent GraphQL createOrder mutation",
|
|
269
|
-
"mutation": "createOrder",
|
|
270
|
-
"operationName": "CreateOrderFromSFCC",
|
|
271
|
-
"sourceFormat": "json",
|
|
272
|
-
"schemaValidation": true,
|
|
273
|
-
|
|
274
|
-
"arguments": {
|
|
275
|
-
"input": {
|
|
276
|
-
"ref": {
|
|
277
|
-
"source": "order.orderNo",
|
|
278
|
-
"required": true
|
|
279
|
-
},
|
|
280
|
-
"type": {
|
|
281
|
-
"value": "STANDARD",
|
|
282
|
-
"required": true
|
|
283
|
-
},
|
|
284
|
-
"retailer": {
|
|
285
|
-
"id": { "value": "${FLUENT_RETAILER_ID}" }
|
|
286
|
-
},
|
|
287
|
-
"customer": {
|
|
288
|
-
"ref": { "source": "customer.customerId", "required": true },
|
|
289
|
-
"email": {
|
|
290
|
-
"source": "customer.email",
|
|
291
|
-
"resolver": "sdk.lowercase",
|
|
292
|
-
"defaultValue": "unknown@example.com"
|
|
293
|
-
}
|
|
294
|
-
},
|
|
295
|
-
"totalPrice": {
|
|
296
|
-
"source": "order.total",
|
|
297
|
-
"resolver": "sdk.parseFloat",
|
|
298
|
-
"required": true
|
|
299
|
-
},
|
|
300
|
-
"items": {
|
|
301
|
-
"_array": true,
|
|
302
|
-
"_type": "[OrderItemInput]!",
|
|
303
|
-
"_autoWrap": true,
|
|
304
|
-
"source": "order.lineItems",
|
|
305
|
-
"ref": { "source": "productId", "required": true },
|
|
306
|
-
"quantity": { "source": "qty", "resolver": "sdk.parseInt" }
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
},
|
|
310
|
-
|
|
311
|
-
"returnFields": ["id", "ref", "status"]
|
|
312
|
-
}
|
|
313
|
-
```
|
|
314
|
-
|
|
315
|
-
### Complete Configuration (Pattern 2 with Nodes)
|
|
316
|
-
|
|
317
|
-
```json
|
|
318
|
-
{
|
|
319
|
-
"version": "1.0",
|
|
320
|
-
"name": "SFCC Order with XML Nodes",
|
|
321
|
-
"description": "Extracts embedded XML from SFCC order, then maps to Fluent GraphQL",
|
|
322
|
-
"mutation": "createOrder",
|
|
323
|
-
"operationName": "CreateOrderFromSFCC",
|
|
324
|
-
"sourceFormat": "xml",
|
|
325
|
-
"schemaValidation": true,
|
|
326
|
-
|
|
327
|
-
"nodes": {
|
|
328
|
-
"orderDetails": {
|
|
329
|
-
"extract": "order.custom-attributes.custom-attribute@attribute-id=orderData",
|
|
330
|
-
"unescape": true,
|
|
331
|
-
"parse": "xml",
|
|
332
|
-
"required": true,
|
|
333
|
-
"comment": "Extracts and parses embedded order XML"
|
|
334
|
-
},
|
|
335
|
-
"shippingInfo": {
|
|
336
|
-
"extract": "order.custom-attributes.custom-attribute@attribute-id=shipping",
|
|
337
|
-
"unescape": true,
|
|
338
|
-
"parse": "xml",
|
|
339
|
-
"comment": "Extracts shipping details"
|
|
340
|
-
}
|
|
341
|
-
},
|
|
342
|
-
|
|
343
|
-
"fields": {
|
|
344
|
-
"ref": {
|
|
345
|
-
"source": "order@order-no",
|
|
346
|
-
"required": true,
|
|
347
|
-
"comment": "Order number from root XML"
|
|
348
|
-
},
|
|
349
|
-
"type": {
|
|
350
|
-
"source": "nodes.orderDetails.orderType",
|
|
351
|
-
"required": true,
|
|
352
|
-
"comment": "Order type from extracted node"
|
|
353
|
-
},
|
|
354
|
-
"retailer": {
|
|
355
|
-
"fields": {
|
|
356
|
-
"id": { "value": "${FLUENT_RETAILER_ID}" }
|
|
357
|
-
}
|
|
358
|
-
},
|
|
359
|
-
"customer": {
|
|
360
|
-
"fields": {
|
|
361
|
-
"ref": { "source": "customer.customer-no", "required": true },
|
|
362
|
-
"email": {
|
|
363
|
-
"source": "customer.customer-email",
|
|
364
|
-
"resolver": "sdk.lowercase",
|
|
365
|
-
"defaultValue": "unknown@example.com"
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
},
|
|
369
|
-
"totalPrice": {
|
|
370
|
-
"source": "order.totals.order-total",
|
|
371
|
-
"resolver": "sdk.parseFloat",
|
|
372
|
-
"required": true
|
|
373
|
-
},
|
|
374
|
-
"shippingMethod": {
|
|
375
|
-
"source": "nodes.shippingInfo.method",
|
|
376
|
-
"comment": "Shipping method from extracted shipping node"
|
|
377
|
-
},
|
|
378
|
-
"items": {
|
|
379
|
-
"_array": true,
|
|
380
|
-
"_type": "[OrderItemInput]!",
|
|
381
|
-
"_autoWrap": true,
|
|
382
|
-
"source": "product-lineitems.product-lineitem",
|
|
383
|
-
"fields": {
|
|
384
|
-
"ref": { "source": "product-id", "required": true },
|
|
385
|
-
"quantity": {
|
|
386
|
-
"source": "quantity",
|
|
387
|
-
"resolver": "sdk.parseInt",
|
|
388
|
-
"required": true
|
|
389
|
-
},
|
|
390
|
-
"price": {
|
|
391
|
-
"source": "price",
|
|
392
|
-
"resolver": "sdk.parseFloat"
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
},
|
|
397
|
-
|
|
398
|
-
"returnFields": ["id", "ref", "status", "type"]
|
|
399
|
-
}
|
|
400
|
-
```
|
|
401
|
-
|
|
402
|
-
---
|
|
403
|
-
|
|
404
|
-
## Array Configuration
|
|
405
|
-
|
|
406
|
-
Arrays require the `_array: true` marker and can be used in both patterns.
|
|
407
|
-
|
|
408
|
-
### Pattern 1 (Simple)
|
|
409
|
-
|
|
410
|
-
```json
|
|
411
|
-
{
|
|
412
|
-
"arguments": {
|
|
413
|
-
"input": {
|
|
414
|
-
"items": {
|
|
415
|
-
"_array": true,
|
|
416
|
-
"_type": "[OrderItemInput]!",
|
|
417
|
-
"source": "order.lineItems",
|
|
418
|
-
"ref": { "source": "productId" },
|
|
419
|
-
"quantity": { "source": "qty", "resolver": "sdk.parseInt" }
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
```
|
|
425
|
-
|
|
426
|
-
### Pattern 2 (Advanced)
|
|
427
|
-
|
|
428
|
-
```json
|
|
429
|
-
{
|
|
430
|
-
"fields": {
|
|
431
|
-
"items": {
|
|
432
|
-
"_array": true,
|
|
433
|
-
"_type": "[OrderItemInput]!",
|
|
434
|
-
"_autoWrap": true,
|
|
435
|
-
"_validation": { "minItems": 1, "maxItems": 100 },
|
|
436
|
-
"source": "product-lineitems.product-lineitem",
|
|
437
|
-
"fields": {
|
|
438
|
-
"ref": { "source": "product-id", "required": true },
|
|
439
|
-
"quantity": {
|
|
440
|
-
"source": "quantity",
|
|
441
|
-
"resolver": "sdk.parseInt",
|
|
442
|
-
"required": true,
|
|
443
|
-
"defaultValue": 1
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
```
|
|
450
|
-
|
|
451
|
-
**Key Points:**
|
|
452
|
-
- `_array: true` - Marks field as array
|
|
453
|
-
- `_type` - GraphQL type annotation (e.g., `"[OrderItemInput]!"`)
|
|
454
|
-
- `_autoWrap` - Auto-convert single object to array
|
|
455
|
-
- `_validation` - Min/max item constraints
|
|
456
|
-
- `source` - Path to array in source data
|
|
457
|
-
- `fields` - Configuration for each array item
|
|
458
|
-
|
|
459
|
-
---
|
|
460
|
-
|
|
461
|
-
## Nested Object Configuration
|
|
462
|
-
|
|
463
|
-
Nested objects use the `fields` property to define child field mappings.
|
|
464
|
-
|
|
465
|
-
### Pattern 1 (Simple)
|
|
466
|
-
|
|
467
|
-
```json
|
|
468
|
-
{
|
|
469
|
-
"arguments": {
|
|
470
|
-
"input": {
|
|
471
|
-
"customer": {
|
|
472
|
-
"ref": { "source": "customer.id", "required": true },
|
|
473
|
-
"email": { "source": "customer.email" },
|
|
474
|
-
"address": {
|
|
475
|
-
"street": { "source": "customer.address.street" },
|
|
476
|
-
"city": { "source": "customer.address.city" },
|
|
477
|
-
"country": { "source": "customer.address.country" }
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
```
|
|
484
|
-
|
|
485
|
-
### Pattern 2 (Advanced)
|
|
486
|
-
|
|
487
|
-
```json
|
|
488
|
-
{
|
|
489
|
-
"fields": {
|
|
490
|
-
"customer": {
|
|
491
|
-
"_nested": true,
|
|
492
|
-
"fields": {
|
|
493
|
-
"ref": { "source": "customer.customer-no", "required": true },
|
|
494
|
-
"email": { "source": "customer.customer-email", "resolver": "sdk.lowercase" },
|
|
495
|
-
"address": {
|
|
496
|
-
"fields": {
|
|
497
|
-
"street": { "source": "customer.address.street" },
|
|
498
|
-
"city": { "source": "customer.address.city" },
|
|
499
|
-
"country": { "source": "customer.address.country" }
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
```
|
|
507
|
-
|
|
508
|
-
**Nesting Levels:**
|
|
509
|
-
- Level 1: `customer` (object)
|
|
510
|
-
- Level 2: `address` (nested object inside customer)
|
|
511
|
-
- Level 3: `street`, `city`, `country` (scalar fields)
|
|
512
|
-
|
|
513
|
-
---
|
|
514
|
-
|
|
515
|
-
## Environment Variables
|
|
516
|
-
|
|
517
|
-
Use `${VARIABLE_NAME}` syntax for environment variable substitution:
|
|
518
|
-
|
|
519
|
-
```json
|
|
520
|
-
{
|
|
521
|
-
"fields": {
|
|
522
|
-
"retailer": {
|
|
523
|
-
"fields": {
|
|
524
|
-
"id": { "value": "${FLUENT_RETAILER_ID}" }
|
|
525
|
-
}
|
|
526
|
-
},
|
|
527
|
-
"apiKey": {
|
|
528
|
-
"value": "${API_KEY}",
|
|
529
|
-
"comment": "API key from environment"
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
```
|
|
534
|
-
|
|
535
|
-
**Supported in:**
|
|
536
|
-
- ✅ `value` property
|
|
537
|
-
- ❌ `source` property (use nodes for dynamic paths)
|
|
538
|
-
- ❌ `resolver` property
|
|
539
|
-
|
|
540
|
-
---
|
|
541
|
-
|
|
542
|
-
## Configuration Validation
|
|
543
|
-
|
|
544
|
-
Before deployment, validate your configuration:
|
|
545
|
-
|
|
546
|
-
```bash
|
|
547
|
-
# 1. Introspect GraphQL schema
|
|
548
|
-
npx fc-connect introspect-schema \
|
|
549
|
-
--url https://your-account.api.fluentcommerce.com/graphql \
|
|
550
|
-
--output fluent-schema.json
|
|
551
|
-
|
|
552
|
-
# 2. Validate mapping against schema
|
|
553
|
-
npx fc-connect validate-schema \
|
|
554
|
-
--mapping your-mapping.json \
|
|
555
|
-
--schema fluent-schema.json
|
|
556
|
-
|
|
557
|
-
# 3. Check field coverage
|
|
558
|
-
npx fc-connect analyze-coverage \
|
|
559
|
-
--mapping your-mapping.json \
|
|
560
|
-
--schema fluent-schema.json
|
|
561
|
-
```
|
|
562
|
-
|
|
563
|
-
See [Module 03: Schema Validation](./graphql-mutation-mapping-03-schema-validation.md) for complete CLI workflow.
|
|
564
|
-
|
|
565
|
-
---
|
|
566
|
-
|
|
567
|
-
## Best Practices
|
|
568
|
-
|
|
569
|
-
### ✅ DO
|
|
570
|
-
|
|
571
|
-
- Use Pattern 1 for simple JSON/XML → GraphQL mapping
|
|
572
|
-
- Use Pattern 2 when you need node extraction or full source context in resolvers
|
|
573
|
-
- Document configurations with `name`, `description`, and field `comment` properties
|
|
574
|
-
- Use `sdk.` resolvers for common transformations
|
|
575
|
-
- Validate configurations before deployment
|
|
576
|
-
- Use environment variables for credentials/IDs
|
|
577
|
-
- Mark required fields explicitly
|
|
578
|
-
|
|
579
|
-
### ❌ DON'T
|
|
580
|
-
|
|
581
|
-
- Don't use Pattern 2 if you don't need nodes or advanced resolvers
|
|
582
|
-
- Don't mix `arguments` and `fields` patterns in same config
|
|
583
|
-
- Don't nest more than 3-4 levels deep (performance impact)
|
|
584
|
-
- Don't hardcode credentials - use environment variables
|
|
585
|
-
- Don't skip validation step before deployment
|
|
586
|
-
|
|
587
|
-
---
|
|
588
|
-
|
|
589
|
-
## Key Takeaways
|
|
590
|
-
|
|
591
|
-
✅ **Two patterns** - Simple (`arguments`) and Advanced (`fields` + `nodes`)
|
|
592
|
-
✅ **Base properties** - version, mutation, sourceFormat always required
|
|
593
|
-
✅ **Field markers** - `_array`, `_type`, `_nested` are FieldConfig properties, not top-level
|
|
594
|
-
✅ **Node extraction** - Use `nodes` for nested/encoded XML strings (Pattern 2 only)
|
|
595
|
-
✅ **Resolvers** - Use `sdk.` built-in or custom resolvers for transformations
|
|
596
|
-
✅ **Validation** - Always validate with CLI tools before deployment
|
|
597
|
-
|
|
598
|
-
---
|
|
599
|
-
|
|
600
|
-
## Navigation
|
|
601
|
-
|
|
602
|
-
[← Previous: Mapping Patterns](./graphql-mutation-mapping-04-mapping-patterns.md) | [Back to Guide](../graphql-mutation-mapping-readme.md) | [Next: Path Syntax →](./graphql-mutation-mapping-06-path-syntax.md)
|
|
603
|
-
|
|
604
|
-
## Related Documentation
|
|
605
|
-
|
|
606
|
-
- [Module 03: Schema Validation](./graphql-mutation-mapping-03-schema-validation.md) - CLI validation workflow
|
|
607
|
-
- [Module 04: Mapping Patterns](./graphql-mutation-mapping-04-mapping-patterns.md) - When to use each pattern
|
|
608
|
-
- [Module 06: Path Syntax](./graphql-mutation-mapping-06-path-syntax.md) - XML and JSON path expressions
|
|
609
|
-
- [Module 07: Array Handling](./graphql-mutation-mapping-07-array-handling.md) - Array mapping patterns
|
|
610
|
-
- [Module 08: Custom Resolvers](./graphql-mutation-mapping-08-custom-resolvers.md) - Custom transformation functions
|
|
611
|
-
- [Universal Mapping Guide](../../mapping-readme.md) - Universal mapping patterns
|
|
1
|
+
# Configuration Reference
|
|
2
|
+
|
|
3
|
+
[← Back to GraphQL Mutation Mapping Guide](../graphql-mutation-mapping-readme.md)
|
|
4
|
+
|
|
5
|
+
**Module 5 of 13** | **Level**: Intermediate | **Time**: 15 minutes
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
This module documents the complete mapping configuration structure used by `GraphQLMutationMapper`. There are **two distinct configuration patterns** (see [Module 04: Mapping Patterns](./graphql-mutation-mapping-04-mapping-patterns.md)):
|
|
12
|
+
|
|
13
|
+
1. **Pattern 1 (Simple):** Uses `arguments` property - Direct mapping
|
|
14
|
+
2. **Pattern 2 (Advanced):** Uses `fields` + optional `nodes` - Node extraction + mapping
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Base Configuration Properties
|
|
19
|
+
|
|
20
|
+
All mapping configurations share these top-level properties from the `MappingConfig` interface:
|
|
21
|
+
|
|
22
|
+
| Property | Type | Required | Description |
|
|
23
|
+
|----------|------|----------|-------------|
|
|
24
|
+
| `version` | string | ✅ | Config version (use "1.0") |
|
|
25
|
+
| `mutation` | string | ✅ | GraphQL mutation name (e.g., "createOrder") |
|
|
26
|
+
| `operationName` | string | | Named operation for debugging/logging |
|
|
27
|
+
| `sourceFormat` | `"xml"` \| `"json"` \| `"jsonl"` | ✅ | Input data format |
|
|
28
|
+
| `schemaValidation` | boolean | | Enable schema validation (not used at runtime) |
|
|
29
|
+
| `returnFields` | string[] | | Fields to return from mutation response |
|
|
30
|
+
| `name` | string | | Human-readable configuration name |
|
|
31
|
+
| `description` | string | | Configuration description/documentation |
|
|
32
|
+
| `customTransforms` | Record<string, TransformFunction> | | Custom transformation functions |
|
|
33
|
+
|
|
34
|
+
**Pattern 1 adds:**
|
|
35
|
+
| Property | Type | Required | Description |
|
|
36
|
+
|----------|------|----------|-------------|
|
|
37
|
+
| `arguments` | Record<string, any> | ✅ | GraphQL mutation arguments mapping |
|
|
38
|
+
|
|
39
|
+
**Pattern 2 adds (runtime extensions):**
|
|
40
|
+
| Property | Type | Required | Description |
|
|
41
|
+
|----------|------|----------|-------------|
|
|
42
|
+
| `fields` | Record<string, FieldConfig> | ✅ | Field mapping configuration |
|
|
43
|
+
| `nodes` | Record<string, NodeConfig> | | Named extractors for nested/encoded data |
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Pattern 1: Simple Mapping Configuration
|
|
48
|
+
|
|
49
|
+
Uses the `arguments` property for direct source-to-GraphQL mapping.
|
|
50
|
+
|
|
51
|
+
### Structure
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"version": "1.0",
|
|
56
|
+
"mutation": "createOrder",
|
|
57
|
+
"operationName": "CreateOrder",
|
|
58
|
+
"sourceFormat": "json",
|
|
59
|
+
"schemaValidation": true,
|
|
60
|
+
|
|
61
|
+
"arguments": {
|
|
62
|
+
"input": {
|
|
63
|
+
"ref": { "source": "order.orderNo", "required": true },
|
|
64
|
+
"type": { "value": "STANDARD" },
|
|
65
|
+
"totalPrice": { "source": "order.total", "resolver": "sdk.parseFloat" },
|
|
66
|
+
"items": {
|
|
67
|
+
"_array": true,
|
|
68
|
+
"source": "order.lineItems",
|
|
69
|
+
"ref": { "source": "productId" },
|
|
70
|
+
"quantity": { "source": "qty", "resolver": "sdk.parseInt" }
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
"returnFields": ["id", "ref", "status"]
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### When to Use Pattern 1
|
|
80
|
+
|
|
81
|
+
✅ Source data structure closely matches GraphQL schema
|
|
82
|
+
✅ Direct field-to-field mapping (no complex extraction)
|
|
83
|
+
✅ Source format is JSON or simple XML
|
|
84
|
+
✅ No custom resolvers needed, or resolvers only need mapped fields
|
|
85
|
+
|
|
86
|
+
See [Module 04: Mapping Patterns](./graphql-mutation-mapping-04-mapping-patterns.md#pattern-1-simple-mapping-map) for complete details.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Pattern 2: Advanced Mapping Configuration
|
|
91
|
+
|
|
92
|
+
Uses `fields` (required) and `nodes` (optional) for extraction-then-mapping workflow.
|
|
93
|
+
|
|
94
|
+
### Structure
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"version": "1.0",
|
|
99
|
+
"mutation": "createOrder",
|
|
100
|
+
"operationName": "CreateOrder",
|
|
101
|
+
"sourceFormat": "xml",
|
|
102
|
+
"schemaValidation": true,
|
|
103
|
+
|
|
104
|
+
"nodes": {
|
|
105
|
+
"orderDetails": {
|
|
106
|
+
"extract": "order.custom-attributes.custom-attribute@attribute-id=orderData",
|
|
107
|
+
"unescape": true,
|
|
108
|
+
"parse": "xml",
|
|
109
|
+
"required": true
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
"fields": {
|
|
114
|
+
"ref": { "source": "order@order-no", "required": true },
|
|
115
|
+
"type": { "source": "nodes.orderDetails.orderType" },
|
|
116
|
+
"totalPrice": {
|
|
117
|
+
"source": "order.totals.order-total",
|
|
118
|
+
"resolver": "sdk.parseFloat",
|
|
119
|
+
"required": true
|
|
120
|
+
},
|
|
121
|
+
"items": {
|
|
122
|
+
"_array": true,
|
|
123
|
+
"_type": "[OrderItemInput]!",
|
|
124
|
+
"source": "product-lineitems.product-lineitem",
|
|
125
|
+
"fields": {
|
|
126
|
+
"ref": { "source": "product-id", "required": true },
|
|
127
|
+
"quantity": { "source": "quantity", "resolver": "sdk.parseInt" }
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
"returnFields": ["id", "ref", "status"]
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### When to Use Pattern 2
|
|
137
|
+
|
|
138
|
+
✅ Source contains nested/encoded data that needs extraction first
|
|
139
|
+
✅ XML data with embedded XML strings (common in SFCC)
|
|
140
|
+
✅ Custom resolvers need access to unmapped source fields
|
|
141
|
+
✅ Multiple levels of data transformation required
|
|
142
|
+
✅ HTML-encoded content needs unescaping
|
|
143
|
+
|
|
144
|
+
See [Module 04: Mapping Patterns](./graphql-mutation-mapping-04-mapping-patterns.md#pattern-2-advanced-mapping-with-nodes-mapwithnodes) for complete details.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Field Configuration (FieldConfig)
|
|
149
|
+
|
|
150
|
+
These properties define how individual fields are mapped. Used in BOTH patterns (inside `arguments` or `fields`).
|
|
151
|
+
|
|
152
|
+
### Core Field Properties
|
|
153
|
+
|
|
154
|
+
| Property | Type | Description | Example |
|
|
155
|
+
|----------|------|-------------|---------|
|
|
156
|
+
| `source` | string | Path to source data | `"order@order-no"` (XML)<br>`"order.orderNo"` (JSON) |
|
|
157
|
+
| `value` | any | Static value | `"STANDARD"`, `123`, `true` |
|
|
158
|
+
| `resolver` | string | Transformation function | `"sdk.parseInt"`, `"custom.calculateTotal"` |
|
|
159
|
+
| `required` | boolean | Field is required (throw if missing). **Note:** With resolvers, validation timing depends on whether field has `source` - see mapping foundations guide. | `true` |
|
|
160
|
+
| `defaultValue` | any | Default if source is null/undefined | `1`, `"UNKNOWN"` |
|
|
161
|
+
| `fields` | Record<string, FieldConfig> | Nested object fields | See [Nested Objects](#nested-object-configuration) |
|
|
162
|
+
|
|
163
|
+
### Internal Field Markers
|
|
164
|
+
|
|
165
|
+
These properties are used internally by the mapper for type information and array handling:
|
|
166
|
+
|
|
167
|
+
| Property | Type | Description | Usage |
|
|
168
|
+
|----------|------|-------------|-------|
|
|
169
|
+
| `_array` | boolean | Marks field as array | Arrays of items (line items, addresses, etc.) |
|
|
170
|
+
| `_type` | string | GraphQL type annotation | `"String!"`, `"[OrderItemInput]!"` |
|
|
171
|
+
| `_nested` | boolean | Marks field as nested object | Nested object structures |
|
|
172
|
+
| `_autoWrap` | boolean | Wrap single value in array | Auto-convert single item → array |
|
|
173
|
+
| `_validation` | object | Validation constraints | `{ "minItems": 1, "maxItems": 100 }` |
|
|
174
|
+
|
|
175
|
+
**Note:** Use `resolver` for all transformations. See [Module 08: Custom Resolvers](./graphql-mutation-mapping-08-custom-resolvers.md) for details.
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Node Configuration (NodeConfig)
|
|
180
|
+
|
|
181
|
+
Used only in Pattern 2 for extracting and parsing nested/encoded data **before** field mapping.
|
|
182
|
+
|
|
183
|
+
### Structure
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
interface NodeConfig {
|
|
187
|
+
/** Path to extract data from source */
|
|
188
|
+
extract: string;
|
|
189
|
+
|
|
190
|
+
/** Decode HTML entities in extracted content */
|
|
191
|
+
unescape?: boolean;
|
|
192
|
+
|
|
193
|
+
/** Parse extracted string as XML or JSON */
|
|
194
|
+
parse?: 'xml' | 'json';
|
|
195
|
+
|
|
196
|
+
/** Documentation comment */
|
|
197
|
+
comment?: string;
|
|
198
|
+
|
|
199
|
+
/** Throw error if extraction returns null/undefined */
|
|
200
|
+
required?: boolean;
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Examples
|
|
205
|
+
|
|
206
|
+
**Extract and parse nested XML:**
|
|
207
|
+
```json
|
|
208
|
+
{
|
|
209
|
+
"nodes": {
|
|
210
|
+
"customData": {
|
|
211
|
+
"extract": "custom-attributes.custom-attribute@attribute-id=xmlData",
|
|
212
|
+
"unescape": true,
|
|
213
|
+
"parse": "xml",
|
|
214
|
+
"required": true
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**Extract and parse nested JSON:**
|
|
221
|
+
```json
|
|
222
|
+
{
|
|
223
|
+
"nodes": {
|
|
224
|
+
"metadata": {
|
|
225
|
+
"extract": "order.custom-attributes.metadata",
|
|
226
|
+
"parse": "json"
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**Reference extracted node in fields:**
|
|
233
|
+
```json
|
|
234
|
+
{
|
|
235
|
+
"fields": {
|
|
236
|
+
"orderType": { "source": "nodes.customData.orderType" }
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Complete Configuration Examples
|
|
244
|
+
|
|
245
|
+
### Minimal Configuration (Pattern 1)
|
|
246
|
+
|
|
247
|
+
```json
|
|
248
|
+
{
|
|
249
|
+
"version": "1.0",
|
|
250
|
+
"mutation": "createOrder",
|
|
251
|
+
"sourceFormat": "json",
|
|
252
|
+
|
|
253
|
+
"arguments": {
|
|
254
|
+
"input": {
|
|
255
|
+
"ref": { "source": "order.orderNo", "required": true },
|
|
256
|
+
"type": { "value": "STANDARD" }
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Complete Configuration (Pattern 1)
|
|
263
|
+
|
|
264
|
+
```json
|
|
265
|
+
{
|
|
266
|
+
"version": "1.0",
|
|
267
|
+
"name": "SFCC Order Ingestion",
|
|
268
|
+
"description": "Maps SFCC JSON orders to Fluent GraphQL createOrder mutation",
|
|
269
|
+
"mutation": "createOrder",
|
|
270
|
+
"operationName": "CreateOrderFromSFCC",
|
|
271
|
+
"sourceFormat": "json",
|
|
272
|
+
"schemaValidation": true,
|
|
273
|
+
|
|
274
|
+
"arguments": {
|
|
275
|
+
"input": {
|
|
276
|
+
"ref": {
|
|
277
|
+
"source": "order.orderNo",
|
|
278
|
+
"required": true
|
|
279
|
+
},
|
|
280
|
+
"type": {
|
|
281
|
+
"value": "STANDARD",
|
|
282
|
+
"required": true
|
|
283
|
+
},
|
|
284
|
+
"retailer": {
|
|
285
|
+
"id": { "value": "${FLUENT_RETAILER_ID}" }
|
|
286
|
+
},
|
|
287
|
+
"customer": {
|
|
288
|
+
"ref": { "source": "customer.customerId", "required": true },
|
|
289
|
+
"email": {
|
|
290
|
+
"source": "customer.email",
|
|
291
|
+
"resolver": "sdk.lowercase",
|
|
292
|
+
"defaultValue": "unknown@example.com"
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
"totalPrice": {
|
|
296
|
+
"source": "order.total",
|
|
297
|
+
"resolver": "sdk.parseFloat",
|
|
298
|
+
"required": true
|
|
299
|
+
},
|
|
300
|
+
"items": {
|
|
301
|
+
"_array": true,
|
|
302
|
+
"_type": "[OrderItemInput]!",
|
|
303
|
+
"_autoWrap": true,
|
|
304
|
+
"source": "order.lineItems",
|
|
305
|
+
"ref": { "source": "productId", "required": true },
|
|
306
|
+
"quantity": { "source": "qty", "resolver": "sdk.parseInt" }
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
|
|
311
|
+
"returnFields": ["id", "ref", "status"]
|
|
312
|
+
}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### Complete Configuration (Pattern 2 with Nodes)
|
|
316
|
+
|
|
317
|
+
```json
|
|
318
|
+
{
|
|
319
|
+
"version": "1.0",
|
|
320
|
+
"name": "SFCC Order with XML Nodes",
|
|
321
|
+
"description": "Extracts embedded XML from SFCC order, then maps to Fluent GraphQL",
|
|
322
|
+
"mutation": "createOrder",
|
|
323
|
+
"operationName": "CreateOrderFromSFCC",
|
|
324
|
+
"sourceFormat": "xml",
|
|
325
|
+
"schemaValidation": true,
|
|
326
|
+
|
|
327
|
+
"nodes": {
|
|
328
|
+
"orderDetails": {
|
|
329
|
+
"extract": "order.custom-attributes.custom-attribute@attribute-id=orderData",
|
|
330
|
+
"unescape": true,
|
|
331
|
+
"parse": "xml",
|
|
332
|
+
"required": true,
|
|
333
|
+
"comment": "Extracts and parses embedded order XML"
|
|
334
|
+
},
|
|
335
|
+
"shippingInfo": {
|
|
336
|
+
"extract": "order.custom-attributes.custom-attribute@attribute-id=shipping",
|
|
337
|
+
"unescape": true,
|
|
338
|
+
"parse": "xml",
|
|
339
|
+
"comment": "Extracts shipping details"
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
|
|
343
|
+
"fields": {
|
|
344
|
+
"ref": {
|
|
345
|
+
"source": "order@order-no",
|
|
346
|
+
"required": true,
|
|
347
|
+
"comment": "Order number from root XML"
|
|
348
|
+
},
|
|
349
|
+
"type": {
|
|
350
|
+
"source": "nodes.orderDetails.orderType",
|
|
351
|
+
"required": true,
|
|
352
|
+
"comment": "Order type from extracted node"
|
|
353
|
+
},
|
|
354
|
+
"retailer": {
|
|
355
|
+
"fields": {
|
|
356
|
+
"id": { "value": "${FLUENT_RETAILER_ID}" }
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
"customer": {
|
|
360
|
+
"fields": {
|
|
361
|
+
"ref": { "source": "customer.customer-no", "required": true },
|
|
362
|
+
"email": {
|
|
363
|
+
"source": "customer.customer-email",
|
|
364
|
+
"resolver": "sdk.lowercase",
|
|
365
|
+
"defaultValue": "unknown@example.com"
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
},
|
|
369
|
+
"totalPrice": {
|
|
370
|
+
"source": "order.totals.order-total",
|
|
371
|
+
"resolver": "sdk.parseFloat",
|
|
372
|
+
"required": true
|
|
373
|
+
},
|
|
374
|
+
"shippingMethod": {
|
|
375
|
+
"source": "nodes.shippingInfo.method",
|
|
376
|
+
"comment": "Shipping method from extracted shipping node"
|
|
377
|
+
},
|
|
378
|
+
"items": {
|
|
379
|
+
"_array": true,
|
|
380
|
+
"_type": "[OrderItemInput]!",
|
|
381
|
+
"_autoWrap": true,
|
|
382
|
+
"source": "product-lineitems.product-lineitem",
|
|
383
|
+
"fields": {
|
|
384
|
+
"ref": { "source": "product-id", "required": true },
|
|
385
|
+
"quantity": {
|
|
386
|
+
"source": "quantity",
|
|
387
|
+
"resolver": "sdk.parseInt",
|
|
388
|
+
"required": true
|
|
389
|
+
},
|
|
390
|
+
"price": {
|
|
391
|
+
"source": "price",
|
|
392
|
+
"resolver": "sdk.parseFloat"
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
|
|
398
|
+
"returnFields": ["id", "ref", "status", "type"]
|
|
399
|
+
}
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
## Array Configuration
|
|
405
|
+
|
|
406
|
+
Arrays require the `_array: true` marker and can be used in both patterns.
|
|
407
|
+
|
|
408
|
+
### Pattern 1 (Simple)
|
|
409
|
+
|
|
410
|
+
```json
|
|
411
|
+
{
|
|
412
|
+
"arguments": {
|
|
413
|
+
"input": {
|
|
414
|
+
"items": {
|
|
415
|
+
"_array": true,
|
|
416
|
+
"_type": "[OrderItemInput]!",
|
|
417
|
+
"source": "order.lineItems",
|
|
418
|
+
"ref": { "source": "productId" },
|
|
419
|
+
"quantity": { "source": "qty", "resolver": "sdk.parseInt" }
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
### Pattern 2 (Advanced)
|
|
427
|
+
|
|
428
|
+
```json
|
|
429
|
+
{
|
|
430
|
+
"fields": {
|
|
431
|
+
"items": {
|
|
432
|
+
"_array": true,
|
|
433
|
+
"_type": "[OrderItemInput]!",
|
|
434
|
+
"_autoWrap": true,
|
|
435
|
+
"_validation": { "minItems": 1, "maxItems": 100 },
|
|
436
|
+
"source": "product-lineitems.product-lineitem",
|
|
437
|
+
"fields": {
|
|
438
|
+
"ref": { "source": "product-id", "required": true },
|
|
439
|
+
"quantity": {
|
|
440
|
+
"source": "quantity",
|
|
441
|
+
"resolver": "sdk.parseInt",
|
|
442
|
+
"required": true,
|
|
443
|
+
"defaultValue": 1
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
**Key Points:**
|
|
452
|
+
- `_array: true` - Marks field as array
|
|
453
|
+
- `_type` - GraphQL type annotation (e.g., `"[OrderItemInput]!"`)
|
|
454
|
+
- `_autoWrap` - Auto-convert single object to array
|
|
455
|
+
- `_validation` - Min/max item constraints
|
|
456
|
+
- `source` - Path to array in source data
|
|
457
|
+
- `fields` - Configuration for each array item
|
|
458
|
+
|
|
459
|
+
---
|
|
460
|
+
|
|
461
|
+
## Nested Object Configuration
|
|
462
|
+
|
|
463
|
+
Nested objects use the `fields` property to define child field mappings.
|
|
464
|
+
|
|
465
|
+
### Pattern 1 (Simple)
|
|
466
|
+
|
|
467
|
+
```json
|
|
468
|
+
{
|
|
469
|
+
"arguments": {
|
|
470
|
+
"input": {
|
|
471
|
+
"customer": {
|
|
472
|
+
"ref": { "source": "customer.id", "required": true },
|
|
473
|
+
"email": { "source": "customer.email" },
|
|
474
|
+
"address": {
|
|
475
|
+
"street": { "source": "customer.address.street" },
|
|
476
|
+
"city": { "source": "customer.address.city" },
|
|
477
|
+
"country": { "source": "customer.address.country" }
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
### Pattern 2 (Advanced)
|
|
486
|
+
|
|
487
|
+
```json
|
|
488
|
+
{
|
|
489
|
+
"fields": {
|
|
490
|
+
"customer": {
|
|
491
|
+
"_nested": true,
|
|
492
|
+
"fields": {
|
|
493
|
+
"ref": { "source": "customer.customer-no", "required": true },
|
|
494
|
+
"email": { "source": "customer.customer-email", "resolver": "sdk.lowercase" },
|
|
495
|
+
"address": {
|
|
496
|
+
"fields": {
|
|
497
|
+
"street": { "source": "customer.address.street" },
|
|
498
|
+
"city": { "source": "customer.address.city" },
|
|
499
|
+
"country": { "source": "customer.address.country" }
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
**Nesting Levels:**
|
|
509
|
+
- Level 1: `customer` (object)
|
|
510
|
+
- Level 2: `address` (nested object inside customer)
|
|
511
|
+
- Level 3: `street`, `city`, `country` (scalar fields)
|
|
512
|
+
|
|
513
|
+
---
|
|
514
|
+
|
|
515
|
+
## Environment Variables
|
|
516
|
+
|
|
517
|
+
Use `${VARIABLE_NAME}` syntax for environment variable substitution:
|
|
518
|
+
|
|
519
|
+
```json
|
|
520
|
+
{
|
|
521
|
+
"fields": {
|
|
522
|
+
"retailer": {
|
|
523
|
+
"fields": {
|
|
524
|
+
"id": { "value": "${FLUENT_RETAILER_ID}" }
|
|
525
|
+
}
|
|
526
|
+
},
|
|
527
|
+
"apiKey": {
|
|
528
|
+
"value": "${API_KEY}",
|
|
529
|
+
"comment": "API key from environment"
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
**Supported in:**
|
|
536
|
+
- ✅ `value` property
|
|
537
|
+
- ❌ `source` property (use nodes for dynamic paths)
|
|
538
|
+
- ❌ `resolver` property
|
|
539
|
+
|
|
540
|
+
---
|
|
541
|
+
|
|
542
|
+
## Configuration Validation
|
|
543
|
+
|
|
544
|
+
Before deployment, validate your configuration:
|
|
545
|
+
|
|
546
|
+
```bash
|
|
547
|
+
# 1. Introspect GraphQL schema
|
|
548
|
+
npx fc-connect introspect-schema \
|
|
549
|
+
--url https://your-account.api.fluentcommerce.com/graphql \
|
|
550
|
+
--output fluent-schema.json
|
|
551
|
+
|
|
552
|
+
# 2. Validate mapping against schema
|
|
553
|
+
npx fc-connect validate-schema \
|
|
554
|
+
--mapping your-mapping.json \
|
|
555
|
+
--schema fluent-schema.json
|
|
556
|
+
|
|
557
|
+
# 3. Check field coverage
|
|
558
|
+
npx fc-connect analyze-coverage \
|
|
559
|
+
--mapping your-mapping.json \
|
|
560
|
+
--schema fluent-schema.json
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
See [Module 03: Schema Validation](./graphql-mutation-mapping-03-schema-validation.md) for complete CLI workflow.
|
|
564
|
+
|
|
565
|
+
---
|
|
566
|
+
|
|
567
|
+
## Best Practices
|
|
568
|
+
|
|
569
|
+
### ✅ DO
|
|
570
|
+
|
|
571
|
+
- Use Pattern 1 for simple JSON/XML → GraphQL mapping
|
|
572
|
+
- Use Pattern 2 when you need node extraction or full source context in resolvers
|
|
573
|
+
- Document configurations with `name`, `description`, and field `comment` properties
|
|
574
|
+
- Use `sdk.` resolvers for common transformations
|
|
575
|
+
- Validate configurations before deployment
|
|
576
|
+
- Use environment variables for credentials/IDs
|
|
577
|
+
- Mark required fields explicitly
|
|
578
|
+
|
|
579
|
+
### ❌ DON'T
|
|
580
|
+
|
|
581
|
+
- Don't use Pattern 2 if you don't need nodes or advanced resolvers
|
|
582
|
+
- Don't mix `arguments` and `fields` patterns in same config
|
|
583
|
+
- Don't nest more than 3-4 levels deep (performance impact)
|
|
584
|
+
- Don't hardcode credentials - use environment variables
|
|
585
|
+
- Don't skip validation step before deployment
|
|
586
|
+
|
|
587
|
+
---
|
|
588
|
+
|
|
589
|
+
## Key Takeaways
|
|
590
|
+
|
|
591
|
+
✅ **Two patterns** - Simple (`arguments`) and Advanced (`fields` + `nodes`)
|
|
592
|
+
✅ **Base properties** - version, mutation, sourceFormat always required
|
|
593
|
+
✅ **Field markers** - `_array`, `_type`, `_nested` are FieldConfig properties, not top-level
|
|
594
|
+
✅ **Node extraction** - Use `nodes` for nested/encoded XML strings (Pattern 2 only)
|
|
595
|
+
✅ **Resolvers** - Use `sdk.` built-in or custom resolvers for transformations
|
|
596
|
+
✅ **Validation** - Always validate with CLI tools before deployment
|
|
597
|
+
|
|
598
|
+
---
|
|
599
|
+
|
|
600
|
+
## Navigation
|
|
601
|
+
|
|
602
|
+
[← Previous: Mapping Patterns](./graphql-mutation-mapping-04-mapping-patterns.md) | [Back to Guide](../graphql-mutation-mapping-readme.md) | [Next: Path Syntax →](./graphql-mutation-mapping-06-path-syntax.md)
|
|
603
|
+
|
|
604
|
+
## Related Documentation
|
|
605
|
+
|
|
606
|
+
- [Module 03: Schema Validation](./graphql-mutation-mapping-03-schema-validation.md) - CLI validation workflow
|
|
607
|
+
- [Module 04: Mapping Patterns](./graphql-mutation-mapping-04-mapping-patterns.md) - When to use each pattern
|
|
608
|
+
- [Module 06: Path Syntax](./graphql-mutation-mapping-06-path-syntax.md) - XML and JSON path expressions
|
|
609
|
+
- [Module 07: Array Handling](./graphql-mutation-mapping-07-array-handling.md) - Array mapping patterns
|
|
610
|
+
- [Module 08: Custom Resolvers](./graphql-mutation-mapping-08-custom-resolvers.md) - Custom transformation functions
|
|
611
|
+
- [Universal Mapping Guide](../../mapping-readme.md) - Universal mapping patterns
|