@fluentcommerce/fc-connect-sdk 0.1.54 → 0.1.56

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.
Files changed (476) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +11 -0
  3. package/dist/cjs/clients/fluent-client.js +13 -6
  4. package/dist/cjs/utils/pagination-helpers.js +38 -2
  5. package/dist/cjs/versori/fluent-versori-client.js +11 -5
  6. package/dist/esm/clients/fluent-client.js +13 -6
  7. package/dist/esm/utils/pagination-helpers.js +38 -2
  8. package/dist/esm/versori/fluent-versori-client.js +11 -5
  9. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  10. package/dist/tsconfig.tsbuildinfo +1 -1
  11. package/dist/tsconfig.types.tsbuildinfo +1 -1
  12. package/docs/00-START-HERE/EXPORT-VALIDATION.md +158 -158
  13. package/docs/00-START-HERE/cli-analyze-source-structure-guide.md +655 -655
  14. package/docs/00-START-HERE/cli-documentation-index.md +202 -202
  15. package/docs/00-START-HERE/cli-quick-reference.md +252 -252
  16. package/docs/00-START-HERE/decision-tree.md +552 -552
  17. package/docs/00-START-HERE/getting-started.md +1070 -1070
  18. package/docs/00-START-HERE/mapper-quick-decision-guide.md +235 -235
  19. package/docs/00-START-HERE/readme.md +237 -237
  20. package/docs/00-START-HERE/retailerid-configuration.md +404 -404
  21. package/docs/00-START-HERE/sdk-philosophy.md +794 -794
  22. package/docs/00-START-HERE/troubleshooting-quick-reference.md +1086 -1086
  23. package/docs/01-TEMPLATES/faq.md +686 -686
  24. package/docs/01-TEMPLATES/patterns/pattern-templates-guide.md +68 -68
  25. package/docs/01-TEMPLATES/patterns/patterns-csv-schema-validation-and-rejection-report.md +233 -233
  26. package/docs/01-TEMPLATES/patterns/patterns-custom-resolvers.md +407 -407
  27. package/docs/01-TEMPLATES/patterns/patterns-error-handling-retry.md +511 -511
  28. package/docs/01-TEMPLATES/patterns/patterns-field-mapping-universal.md +701 -701
  29. package/docs/01-TEMPLATES/patterns/patterns-large-file-splitting.md +1430 -1430
  30. package/docs/01-TEMPLATES/patterns/patterns-master-data-etl.md +2399 -2399
  31. package/docs/01-TEMPLATES/patterns/patterns-pagination-streaming.md +447 -447
  32. package/docs/01-TEMPLATES/patterns/patterns-state-duplicate-prevention.md +385 -385
  33. package/docs/01-TEMPLATES/readme.md +957 -957
  34. package/docs/01-TEMPLATES/standalone/standalone-asn-inbound-processing.md +1209 -1209
  35. package/docs/01-TEMPLATES/standalone/standalone-graphql-query-export.md +1140 -1140
  36. package/docs/01-TEMPLATES/standalone/standalone-graphql-to-parquet-partitioned-s3.md +432 -432
  37. package/docs/01-TEMPLATES/standalone/standalone-multi-channel-inventory-sync.md +1185 -1185
  38. package/docs/01-TEMPLATES/standalone/standalone-multi-source-aggregation.md +1462 -1462
  39. package/docs/01-TEMPLATES/standalone/standalone-s3-csv-batch-api.md +1390 -1390
  40. package/docs/01-TEMPLATES/standalone/standalone-s3-csv-inventory-to-batch.md +330 -330
  41. package/docs/01-TEMPLATES/standalone/standalone-scripts-guide.md +87 -87
  42. package/docs/01-TEMPLATES/standalone/standalone-sftp-xml-graphql.md +1444 -1444
  43. package/docs/01-TEMPLATES/standalone/standalone-webhook-payload-processing.md +688 -688
  44. package/docs/01-TEMPLATES/versori/business-examples/business-examples-dropship-order-routing.md +193 -193
  45. package/docs/01-TEMPLATES/versori/business-examples/business-examples-graphql-parquet-extraction.md +518 -518
  46. package/docs/01-TEMPLATES/versori/business-examples/business-examples-inter-location-transfers.md +2162 -2162
  47. package/docs/01-TEMPLATES/versori/business-examples/business-examples-pre-order-allocation.md +2226 -2226
  48. package/docs/01-TEMPLATES/versori/business-examples/business-scenarios-guide.md +87 -87
  49. package/docs/01-TEMPLATES/versori/patterns/versori-patterns-connection-validation-pattern.md +656 -656
  50. package/docs/01-TEMPLATES/versori/patterns/versori-patterns-dual-workflow-connector.md +835 -835
  51. package/docs/01-TEMPLATES/versori/patterns/versori-patterns-guide.md +108 -108
  52. package/docs/01-TEMPLATES/versori/patterns/versori-patterns-kv-state-management.md +1533 -1533
  53. package/docs/01-TEMPLATES/versori/patterns/versori-patterns-xml-response-patterns.md +1160 -1160
  54. package/docs/01-TEMPLATES/versori/versori-platform-guide.md +201 -201
  55. package/docs/01-TEMPLATES/versori/webhooks/template-webhook-asn-purchase-order.md +1906 -1906
  56. package/docs/01-TEMPLATES/versori/webhooks/template-webhook-dropship-routing.md +1074 -1074
  57. package/docs/01-TEMPLATES/versori/webhooks/template-webhook-flash-sale-reserve.md +1395 -1395
  58. package/docs/01-TEMPLATES/versori/webhooks/template-webhook-generic-xml-order.md +888 -888
  59. package/docs/01-TEMPLATES/versori/webhooks/template-webhook-payment-gateway-integration.md +2478 -2478
  60. package/docs/01-TEMPLATES/versori/webhooks/template-webhook-rma-returns-comprehensive.md +2240 -2240
  61. package/docs/01-TEMPLATES/versori/webhooks/template-webhook-xml-order-ingestion.md +2029 -2029
  62. package/docs/01-TEMPLATES/versori/webhooks/webhook-templates-guide.md +140 -140
  63. package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/inventory-mapping.json +20 -20
  64. package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/products_2025-01-22.csv +11 -11
  65. package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/sample-data-guide.md +34 -34
  66. package/docs/01-TEMPLATES/versori/workflows/_examples/workflow-examples-guide.md +36 -36
  67. package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-modes-guide.md +1038 -1038
  68. package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-workflows-guide.md +138 -138
  69. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/graphql-extraction-guide.md +63 -63
  70. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-csv.md +2062 -2062
  71. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-xml.md +2294 -2294
  72. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-s3-csv.md +2461 -2461
  73. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-sftp-xml.md +2529 -2529
  74. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-csv.md +2464 -2464
  75. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-json.md +1959 -1959
  76. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-s3-csv.md +1953 -1953
  77. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-sftp-xml.md +2541 -2541
  78. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-s3-json.md +2384 -2384
  79. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-sftp-xml.md +2445 -2445
  80. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-csv.md +2355 -2355
  81. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-json.md +2042 -2042
  82. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-sftp-xml.md +2726 -2726
  83. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/batch-api-guide.md +206 -206
  84. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-cycle-count-reconciliation.md +2030 -2030
  85. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-multi-channel-inventory-sync.md +1882 -1882
  86. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md +2827 -2827
  87. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-json-inventory-batch.md +1952 -1952
  88. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-xml-inventory-batch.md +3289 -3289
  89. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md +3064 -3064
  90. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-json-inventory-batch.md +3238 -3238
  91. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-xml-inventory-batch.md +2977 -2977
  92. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/event-api-guide.md +321 -321
  93. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-json-order-cancel-event.md +959 -959
  94. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-xml-order-cancel-event.md +1170 -1170
  95. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-csv-product-event.md +2312 -2312
  96. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-json-product-event.md +2999 -2999
  97. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-parquet-product-event.md +2836 -2836
  98. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-xml-product-event.md +2395 -2395
  99. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-csv-product-event.md +2295 -2295
  100. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-json-product-event.md +2602 -2602
  101. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-parquet-product-event.md +2589 -2589
  102. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-xml-product-event.md +3578 -3578
  103. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/graphql-mutations-guide.md +93 -93
  104. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-json-order-update-graphql.md +1260 -1260
  105. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-xml-order-update-graphql.md +1472 -1472
  106. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-control-graphql.md +2417 -2417
  107. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-location-graphql.md +2811 -2811
  108. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-price-graphql.md +2619 -2619
  109. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-json-location-graphql.md +2807 -2807
  110. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-xml-location-graphql.md +2373 -2373
  111. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-control-graphql.md +2740 -2740
  112. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-location-graphql.md +2760 -2760
  113. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-json-location-graphql.md +1710 -1710
  114. package/docs/01-TEMPLATES/versori/workflows/ingestion/ingestion-workflows-guide.md +136 -136
  115. package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/rubix-webhooks-guide.md +520 -520
  116. package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-inline.md +1418 -1418
  117. package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-universal-mapper.md +1785 -1785
  118. package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-order-attribute-update.md +824 -824
  119. package/docs/01-TEMPLATES/versori/workflows/workflows-overview-guide.md +646 -646
  120. package/docs/02-CORE-GUIDES/advanced-services/advanced-services-batch-archival.md +724 -724
  121. package/docs/02-CORE-GUIDES/advanced-services/advanced-services-job-tracker.md +627 -627
  122. package/docs/02-CORE-GUIDES/advanced-services/advanced-services-partial-batch-recovery.md +561 -561
  123. package/docs/02-CORE-GUIDES/advanced-services/advanced-services-quick-reference.md +367 -367
  124. package/docs/02-CORE-GUIDES/advanced-services/advanced-services-readme.md +407 -407
  125. package/docs/02-CORE-GUIDES/advanced-services/readme.md +49 -49
  126. package/docs/02-CORE-GUIDES/api-reference/api-reference-quick-reference.md +548 -548
  127. package/docs/02-CORE-GUIDES/api-reference/event-api-input-output-reference.md +702 -1171
  128. package/docs/02-CORE-GUIDES/api-reference/examples/client-initialization.ts +286 -286
  129. package/docs/02-CORE-GUIDES/api-reference/graphql-error-classification.md +337 -337
  130. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-01-client-api.md +399 -520
  131. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-03-authentication.md +199 -199
  132. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-04-graphql-mapping.md +925 -925
  133. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-05-services.md +1198 -1198
  134. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-06-data-sources.md +1083 -1083
  135. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-07-parsers.md +1097 -1097
  136. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-pagination.md +513 -513
  137. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-types.md +545 -597
  138. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-error-handling.md +527 -527
  139. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-webhook-validation.md +514 -514
  140. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-extraction.md +557 -557
  141. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-utilities.md +412 -412
  142. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-cli-tools.md +423 -423
  143. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-error-handling.md +716 -716
  144. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-analyze-source-structure.md +518 -518
  145. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-partial-responses.md +212 -212
  146. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-testing.md +300 -300
  147. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-13-resolver-builder.md +322 -322
  148. package/docs/02-CORE-GUIDES/api-reference/readme.md +279 -279
  149. package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-quick-reference.md +351 -351
  150. package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-readme.md +277 -277
  151. package/docs/02-CORE-GUIDES/auto-pagination/examples/auto-pagination-readme.md +178 -178
  152. package/docs/02-CORE-GUIDES/auto-pagination/examples/common-patterns.ts +351 -351
  153. package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-products.ts +384 -384
  154. package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-virtual-positions.ts +308 -308
  155. package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-01-foundations.md +470 -470
  156. package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-02-quick-start.md +713 -713
  157. package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-03-configuration.md +754 -754
  158. package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-04-advanced-patterns.md +732 -732
  159. package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-05-sdk-integration.md +847 -847
  160. package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-06-troubleshooting.md +359 -359
  161. package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-07-api-reference.md +462 -462
  162. package/docs/02-CORE-GUIDES/auto-pagination/readme.md +54 -54
  163. package/docs/02-CORE-GUIDES/data-sources/data-sources-file-operations-error-handling.md +1487 -1487
  164. package/docs/02-CORE-GUIDES/data-sources/data-sources-quick-reference.md +836 -836
  165. package/docs/02-CORE-GUIDES/data-sources/data-sources-readme.md +276 -276
  166. package/docs/02-CORE-GUIDES/data-sources/data-sources-sftp-credential-access-security.md +553 -553
  167. package/docs/02-CORE-GUIDES/data-sources/examples/common-patterns.ts +409 -409
  168. package/docs/02-CORE-GUIDES/data-sources/examples/data-sources-readme.md +178 -178
  169. package/docs/02-CORE-GUIDES/data-sources/examples/s3-operations.ts +308 -308
  170. package/docs/02-CORE-GUIDES/data-sources/examples/sftp-operations.ts +371 -371
  171. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-01-foundations.md +735 -735
  172. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-02-s3-operations.md +1302 -1302
  173. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-03-sftp-operations.md +1379 -1379
  174. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-04-file-patterns.md +941 -941
  175. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-05-advanced-topics.md +813 -813
  176. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-06-integration-patterns.md +486 -486
  177. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-07-troubleshooting.md +387 -387
  178. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-08-api-reference.md +417 -417
  179. package/docs/02-CORE-GUIDES/data-sources/readme.md +77 -77
  180. package/docs/02-CORE-GUIDES/error-handling-guide.md +936 -936
  181. package/docs/02-CORE-GUIDES/extraction/examples/02-core-guides-extraction-readme.md +116 -116
  182. package/docs/02-CORE-GUIDES/extraction/examples/common-patterns.ts +428 -428
  183. package/docs/02-CORE-GUIDES/extraction/examples/extract-inventory-basic.ts +187 -187
  184. package/docs/02-CORE-GUIDES/extraction/extraction-quick-reference.md +596 -596
  185. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-01-foundations.md +514 -514
  186. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-02-basic-extraction.md +823 -823
  187. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-03-parquet-processing.md +507 -507
  188. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-04-data-enrichment.md +546 -546
  189. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-05-transformation.md +494 -494
  190. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-export-formats.md +458 -458
  191. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-performance.md +138 -138
  192. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-api-reference.md +148 -148
  193. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-optimization.md +692 -692
  194. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-08-extraction-orchestrator.md +1008 -1008
  195. package/docs/02-CORE-GUIDES/extraction/readme.md +151 -151
  196. package/docs/02-CORE-GUIDES/ingestion/examples/_simple-kv-store.ts +40 -40
  197. package/docs/02-CORE-GUIDES/ingestion/examples/error-recovery.ts +728 -728
  198. package/docs/02-CORE-GUIDES/ingestion/examples/event-driven.ts +501 -501
  199. package/docs/02-CORE-GUIDES/ingestion/examples/local-file-ingestion.ts +88 -88
  200. package/docs/02-CORE-GUIDES/ingestion/examples/parquet-ingestion.ts +117 -117
  201. package/docs/02-CORE-GUIDES/ingestion/examples/performance-optimized.ts +647 -647
  202. package/docs/02-CORE-GUIDES/ingestion/examples/s3-csv-ingestion.ts +169 -169
  203. package/docs/02-CORE-GUIDES/ingestion/examples/sftp-csv-ingestion.ts +134 -134
  204. package/docs/02-CORE-GUIDES/ingestion/ingestion-quick-reference.md +546 -546
  205. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-01-introduction.md +626 -626
  206. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-02-quick-start.md +658 -658
  207. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-03-data-sources.md +1052 -1052
  208. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-04-field-mapping.md +763 -763
  209. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-05-advanced-parsers.md +676 -676
  210. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-06-batch-api.md +1295 -1295
  211. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-api-reference.md +138 -138
  212. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-state-management.md +1037 -1037
  213. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-08-performance-optimization.md +1349 -1349
  214. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-09-best-practices.md +1893 -1893
  215. package/docs/02-CORE-GUIDES/ingestion/readme.md +160 -160
  216. package/docs/02-CORE-GUIDES/logging-guide.md +585 -585
  217. package/docs/02-CORE-GUIDES/mapping/error-handling-patterns.md +401 -401
  218. package/docs/02-CORE-GUIDES/mapping/examples/02-core-guides-mapping-readme.md +128 -128
  219. package/docs/02-CORE-GUIDES/mapping/examples/common-patterns.ts +273 -273
  220. package/docs/02-CORE-GUIDES/mapping/examples/csv-location-ingestion.json +36 -36
  221. package/docs/02-CORE-GUIDES/mapping/examples/csv-mapping.ts +242 -242
  222. package/docs/02-CORE-GUIDES/mapping/examples/graphql-to-parquet-extraction.json +36 -36
  223. package/docs/02-CORE-GUIDES/mapping/examples/json-mapping.ts +213 -213
  224. package/docs/02-CORE-GUIDES/mapping/examples/json-product-to-mutation.json +48 -48
  225. package/docs/02-CORE-GUIDES/mapping/examples/xml-mapping.ts +291 -291
  226. package/docs/02-CORE-GUIDES/mapping/examples/xml-order-to-mutation.json +45 -45
  227. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-quick-reference.md +463 -463
  228. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-readme.md +227 -227
  229. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-01-introduction.md +222 -222
  230. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-02-quick-start.md +351 -351
  231. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-03-schema-validation.md +569 -569
  232. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-04-mapping-patterns.md +471 -471
  233. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-05-configuration-reference.md +611 -611
  234. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-advanced-xpath.md +148 -148
  235. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-path-syntax.md +464 -464
  236. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-api-reference.md +94 -94
  237. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-array-handling.md +307 -307
  238. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-08-custom-resolvers.md +544 -544
  239. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-09-advanced-patterns.md +427 -427
  240. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-10-hooks-and-variables.md +336 -336
  241. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-11-error-handling.md +488 -488
  242. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-12-arguments-vs-nodes.md +383 -383
  243. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-13-best-practices.md +477 -477
  244. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/readme.md +62 -62
  245. package/docs/02-CORE-GUIDES/mapping/mapping-format-decision-tree.md +480 -480
  246. package/docs/02-CORE-GUIDES/mapping/mapping-graphql-alias-batching-guide.md +820 -820
  247. package/docs/02-CORE-GUIDES/mapping/mapping-javascript-objects.md +2369 -2369
  248. package/docs/02-CORE-GUIDES/mapping/mapping-mapper-comparison-guide.md +682 -682
  249. package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-07-api-reference.md +1327 -1327
  250. package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-08-error-handling.md +1142 -1142
  251. package/docs/02-CORE-GUIDES/mapping/modules/mapping-04-use-cases.md +891 -891
  252. package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-helpers-resolvers.md +1126 -1126
  253. package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-sdk-resolvers.md +199 -199
  254. package/docs/02-CORE-GUIDES/mapping/modules/mapping-07-api-reference.md +1319 -1319
  255. package/docs/02-CORE-GUIDES/mapping/readme.md +178 -178
  256. package/docs/02-CORE-GUIDES/mapping/resolver-registration.md +410 -410
  257. package/docs/02-CORE-GUIDES/mapping/resolvers/examples/common-patterns.ts +226 -226
  258. package/docs/02-CORE-GUIDES/mapping/resolvers/examples/custom-resolvers.ts +227 -227
  259. package/docs/02-CORE-GUIDES/mapping/resolvers/examples/sdk-resolvers-usage.ts +203 -203
  260. package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-readme.md +274 -274
  261. package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-api-reference.md +679 -679
  262. package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-cookbook.md +826 -826
  263. package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-guide.md +1330 -1330
  264. package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-helpers-reference.md +1437 -1437
  265. package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-parameters-reference.md +553 -553
  266. package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-troubleshooting.md +854 -854
  267. package/docs/02-CORE-GUIDES/mapping/resolvers/readme.md +75 -75
  268. package/docs/02-CORE-GUIDES/parsers/examples/02-core-guides-parsers-readme.md +161 -161
  269. package/docs/02-CORE-GUIDES/parsers/examples/csv-parser-examples.ts +110 -110
  270. package/docs/02-CORE-GUIDES/parsers/examples/json-parser-examples.ts +33 -33
  271. package/docs/02-CORE-GUIDES/parsers/examples/parquet-parser-examples.ts +47 -47
  272. package/docs/02-CORE-GUIDES/parsers/examples/xml-parser-examples.ts +38 -38
  273. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-01-foundations.md +355 -355
  274. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-02-csv-parser.md +772 -772
  275. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-03-json-parser.md +789 -789
  276. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-04-xml-parser.md +857 -857
  277. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-05-parquet-parser.md +603 -603
  278. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-integration-patterns.md +702 -702
  279. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-streaming.md +121 -121
  280. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-api-reference.md +89 -89
  281. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-troubleshooting.md +727 -727
  282. package/docs/02-CORE-GUIDES/parsers/parsers-quick-reference.md +482 -482
  283. package/docs/02-CORE-GUIDES/parsers/parsers-readme.md +258 -258
  284. package/docs/02-CORE-GUIDES/parsers/readme.md +65 -65
  285. package/docs/02-CORE-GUIDES/readme.md +194 -194
  286. package/docs/02-CORE-GUIDES/webhook-validation/examples/basic-validation.ts +108 -108
  287. package/docs/02-CORE-GUIDES/webhook-validation/examples/common-patterns.ts +316 -316
  288. package/docs/02-CORE-GUIDES/webhook-validation/examples/webhook-validation-readme.md +61 -61
  289. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-01-foundations.md +440 -440
  290. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-02-quick-start.md +525 -525
  291. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-03-versori-integration.md +741 -741
  292. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-04-platform-integration.md +629 -629
  293. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-05-configuration.md +535 -535
  294. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-error-handling.md +611 -611
  295. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-troubleshooting.md +124 -124
  296. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-07-api-reference.md +511 -511
  297. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-08-rubix-webhooks.md +590 -590
  298. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-09-rubix-event-vs-http-call.md +432 -432
  299. package/docs/02-CORE-GUIDES/webhook-validation/readme.md +239 -239
  300. package/docs/02-CORE-GUIDES/webhook-validation/webhook-validation-quick-reference.md +392 -392
  301. package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-quick-reference.md +498 -498
  302. package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-readme.md +313 -313
  303. package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/common-patterns.ts +612 -612
  304. package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/connector-scenarios-readme.md +253 -253
  305. package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-01-foundations.md +452 -452
  306. package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-02-simple-scenarios.md +681 -681
  307. package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-03-intermediate-scenarios.md +637 -637
  308. package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-04-advanced-scenarios.md +650 -650
  309. package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-05-bidirectional-sync.md +233 -233
  310. package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-06-production-patterns.md +442 -442
  311. package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-07-reference.md +445 -445
  312. package/docs/03-PATTERN-GUIDES/connector-scenarios/readme.md +31 -31
  313. package/docs/03-PATTERN-GUIDES/enterprise-integration-patterns.md +1528 -1528
  314. package/docs/03-PATTERN-GUIDES/error-handling/comprehensive-error-handling-guide.md +1437 -1437
  315. package/docs/03-PATTERN-GUIDES/error-handling/error-handling-quick-reference.md +390 -390
  316. package/docs/03-PATTERN-GUIDES/error-handling/examples/common-patterns.ts +438 -438
  317. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-01-foundations.md +362 -362
  318. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-02-error-types.md +850 -850
  319. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-03-utf8-handling.md +456 -456
  320. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-04-error-scenarios.md +658 -658
  321. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-05-calling-patterns.md +671 -671
  322. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-06-retry-strategies.md +1034 -1034
  323. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-07-monitoring.md +653 -653
  324. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-08-api-reference.md +847 -847
  325. package/docs/03-PATTERN-GUIDES/error-handling/readme.md +36 -36
  326. package/docs/03-PATTERN-GUIDES/examples/__tests__/readme.md +40 -40
  327. package/docs/03-PATTERN-GUIDES/examples/__tests__/resolver-examples.test.js +282 -282
  328. package/docs/03-PATTERN-GUIDES/examples/test-data/03-pattern-guides-readme.md +110 -110
  329. package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-inventory.json +123 -123
  330. package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-order.json +171 -171
  331. package/docs/03-PATTERN-GUIDES/examples/test-data/readme.md +28 -28
  332. package/docs/03-PATTERN-GUIDES/extraction/extraction-readme.md +15 -15
  333. package/docs/03-PATTERN-GUIDES/extraction/readme.md +25 -25
  334. package/docs/03-PATTERN-GUIDES/file-operations/examples/common-patterns.ts +407 -407
  335. package/docs/03-PATTERN-GUIDES/file-operations/examples/file-operations-readme.md +142 -142
  336. package/docs/03-PATTERN-GUIDES/file-operations/file-operations-quick-reference.md +462 -462
  337. package/docs/03-PATTERN-GUIDES/file-operations/file-operations-readme.md +379 -379
  338. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-01-foundations.md +430 -430
  339. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-02-quick-start.md +484 -484
  340. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-03-s3-operations.md +507 -507
  341. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-04-sftp-operations.md +963 -963
  342. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-05-streaming-performance.md +503 -503
  343. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-archive-patterns.md +386 -386
  344. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-error-handling.md +117 -117
  345. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-api-reference.md +78 -78
  346. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-testing-troubleshooting.md +567 -567
  347. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-08-api-reference.md +1055 -1055
  348. package/docs/03-PATTERN-GUIDES/file-operations/readme.md +32 -32
  349. package/docs/03-PATTERN-GUIDES/ingestion/ingestion-readme.md +15 -15
  350. package/docs/03-PATTERN-GUIDES/ingestion/readme.md +25 -25
  351. package/docs/03-PATTERN-GUIDES/integration-patterns/examples/batch-processing.ts +130 -130
  352. package/docs/03-PATTERN-GUIDES/integration-patterns/examples/common-patterns.ts +360 -360
  353. package/docs/03-PATTERN-GUIDES/integration-patterns/examples/delta-sync.ts +130 -130
  354. package/docs/03-PATTERN-GUIDES/integration-patterns/examples/integration-patterns-readme.md +100 -100
  355. package/docs/03-PATTERN-GUIDES/integration-patterns/examples/real-time-webhook.ts +398 -398
  356. package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-quick-reference.md +962 -962
  357. package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-readme.md +134 -134
  358. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-01-real-time-processing.md +991 -991
  359. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-02-batch-processing.md +1547 -1547
  360. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-03-delta-sync.md +1108 -1108
  361. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-04-webhook-patterns.md +1181 -1181
  362. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-05-error-handling.md +1061 -1061
  363. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-advanced-integration-services.md +1547 -1547
  364. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-performance.md +109 -109
  365. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-07-api-reference.md +34 -34
  366. package/docs/03-PATTERN-GUIDES/integration-patterns/readme.md +30 -30
  367. package/docs/03-PATTERN-GUIDES/logging-minimal-mode.md +128 -128
  368. package/docs/03-PATTERN-GUIDES/multiple-connections/examples/common-patterns.ts +380 -380
  369. package/docs/03-PATTERN-GUIDES/multiple-connections/examples/multiple-connections-readme.md +139 -139
  370. package/docs/03-PATTERN-GUIDES/multiple-connections/examples/parallel-root-connections.ts +149 -149
  371. package/docs/03-PATTERN-GUIDES/multiple-connections/examples/real-world-scenarios.ts +405 -405
  372. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-01-foundations.md +378 -378
  373. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-02-quick-start.md +566 -566
  374. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-03-targeting-connections.md +659 -659
  375. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-04-parallel-queries.md +656 -656
  376. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-05-best-practices.md +624 -624
  377. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-api-reference.md +824 -824
  378. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-versori.md +119 -119
  379. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-07-api-reference.md +87 -87
  380. package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-quick-reference.md +353 -353
  381. package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-readme.md +270 -270
  382. package/docs/03-PATTERN-GUIDES/multiple-connections/readme.md +30 -30
  383. package/docs/03-PATTERN-GUIDES/pagination/pagination-readme.md +14 -14
  384. package/docs/03-PATTERN-GUIDES/pagination/readme.md +24 -24
  385. package/docs/03-PATTERN-GUIDES/parquet/examples/common-patterns.ts +180 -180
  386. package/docs/03-PATTERN-GUIDES/parquet/examples/read-parquet.ts +48 -48
  387. package/docs/03-PATTERN-GUIDES/parquet/examples/write-parquet.ts +65 -65
  388. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-01-introduction.md +393 -393
  389. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-02-quick-start.md +572 -572
  390. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-03-reading-parquet.md +525 -525
  391. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-04-writing-parquet.md +554 -554
  392. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-05-graphql-extraction.md +405 -405
  393. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-performance.md +104 -104
  394. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-s3-integration.md +511 -511
  395. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-api-reference.md +90 -90
  396. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-performance-optimization.md +525 -525
  397. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-08-best-practices.md +712 -712
  398. package/docs/03-PATTERN-GUIDES/parquet/parquet-quick-reference.md +683 -683
  399. package/docs/03-PATTERN-GUIDES/parquet/parquet-readme.md +248 -248
  400. package/docs/03-PATTERN-GUIDES/parquet/readme.md +32 -32
  401. package/docs/03-PATTERN-GUIDES/parsers/parsers-readme.md +12 -12
  402. package/docs/03-PATTERN-GUIDES/parsers/readme.md +24 -24
  403. package/docs/03-PATTERN-GUIDES/readme.md +159 -159
  404. package/docs/03-PATTERN-GUIDES/webhooks/readme.md +24 -24
  405. package/docs/03-PATTERN-GUIDES/webhooks/webhooks-readme.md +8 -8
  406. package/docs/04-REFERENCE/architecture/architecture-01-overview.md +427 -427
  407. package/docs/04-REFERENCE/architecture/architecture-02-client-architecture.md +424 -424
  408. package/docs/04-REFERENCE/architecture/architecture-03-data-flow.md +690 -690
  409. package/docs/04-REFERENCE/architecture/architecture-04-service-layer.md +834 -834
  410. package/docs/04-REFERENCE/architecture/architecture-05-integration-architecture.md +655 -655
  411. package/docs/04-REFERENCE/architecture/architecture-06-state-management.md +653 -653
  412. package/docs/04-REFERENCE/architecture/architecture-adding-new-data-sources.md +686 -686
  413. package/docs/04-REFERENCE/architecture/readme.md +279 -279
  414. package/docs/04-REFERENCE/platforms/deno/readme.md +117 -117
  415. package/docs/04-REFERENCE/platforms/nodejs/readme.md +146 -146
  416. package/docs/04-REFERENCE/platforms/readme.md +135 -135
  417. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-01-introduction.md +398 -398
  418. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-02-quick-start.md +560 -560
  419. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-03-authentication.md +757 -757
  420. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-04-workflows.md +2476 -2476
  421. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-05-connections.md +1167 -1167
  422. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-kv-storage.md +990 -990
  423. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-state-management.md +121 -121
  424. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-api-reference.md +68 -68
  425. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-deployment.md +731 -731
  426. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-08-best-practices.md +1111 -1111
  427. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-09-signature-reference.md +766 -766
  428. package/docs/04-REFERENCE/platforms/versori/platforms-versori-readme.md +299 -299
  429. package/docs/04-REFERENCE/platforms/versori/platforms-versori-s3-sftp-configuration-guide.md +1425 -1425
  430. package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-api-key-security.md +816 -816
  431. package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-connection-security.md +681 -681
  432. package/docs/04-REFERENCE/platforms/versori/platforms-versori-workflow-task-types.md +708 -708
  433. package/docs/04-REFERENCE/platforms/versori/readme.md +108 -108
  434. package/docs/04-REFERENCE/readme.md +148 -148
  435. package/docs/04-REFERENCE/resolver-signature/examples/advanced-resolvers.ts +482 -482
  436. package/docs/04-REFERENCE/resolver-signature/examples/async-resolvers.ts +496 -496
  437. package/docs/04-REFERENCE/resolver-signature/examples/basic-resolvers.ts +343 -343
  438. package/docs/04-REFERENCE/resolver-signature/examples/resolver-signature-readme.md +188 -188
  439. package/docs/04-REFERENCE/resolver-signature/examples/testing-resolvers.ts +463 -463
  440. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-01-foundations.md +286 -286
  441. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-02-parameter-reference.md +643 -643
  442. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-03-basic-examples.md +521 -521
  443. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-04-advanced-patterns.md +739 -739
  444. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-05-sdk-resolvers.md +531 -531
  445. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-migration-guide.md +650 -650
  446. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-testing.md +125 -125
  447. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-07-api-reference.md +794 -794
  448. package/docs/04-REFERENCE/resolver-signature/readme.md +64 -64
  449. package/docs/04-REFERENCE/resolver-signature/resolver-signature-quick-reference.md +270 -270
  450. package/docs/04-REFERENCE/resolver-signature/resolver-signature-readme.md +351 -351
  451. package/docs/04-REFERENCE/schema/fluent-commerce-schema.json +764 -764
  452. package/docs/04-REFERENCE/schema/readme.md +141 -141
  453. package/docs/04-REFERENCE/testing/examples/04-reference-testing-readme.md +158 -158
  454. package/docs/04-REFERENCE/testing/examples/fluent-testing.ts +62 -62
  455. package/docs/04-REFERENCE/testing/examples/health-check.ts +155 -155
  456. package/docs/04-REFERENCE/testing/examples/integration-test.ts +119 -119
  457. package/docs/04-REFERENCE/testing/examples/performance-test.ts +183 -183
  458. package/docs/04-REFERENCE/testing/examples/s3-testing.ts +127 -127
  459. package/docs/04-REFERENCE/testing/modules/04-reference-testing-01-foundations.md +267 -267
  460. package/docs/04-REFERENCE/testing/modules/04-reference-testing-02-s3-testing.md +599 -599
  461. package/docs/04-REFERENCE/testing/modules/04-reference-testing-03-fluent-testing.md +589 -589
  462. package/docs/04-REFERENCE/testing/modules/04-reference-testing-04-integration-testing.md +699 -699
  463. package/docs/04-REFERENCE/testing/modules/04-reference-testing-05-debugging.md +478 -478
  464. package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-cicd-integration.md +463 -463
  465. package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-preflight-validation.md +131 -131
  466. package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-best-practices.md +499 -499
  467. package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-coverage-ci.md +165 -165
  468. package/docs/04-REFERENCE/testing/modules/04-reference-testing-08-api-reference.md +634 -634
  469. package/docs/04-REFERENCE/testing/readme.md +86 -86
  470. package/docs/04-REFERENCE/testing/testing-quick-reference.md +667 -667
  471. package/docs/04-REFERENCE/testing/testing-readme.md +286 -286
  472. package/docs/04-REFERENCE/troubleshooting/readme.md +144 -144
  473. package/docs/04-REFERENCE/troubleshooting/troubleshooting-deno-sftp-compatibility.md +392 -392
  474. package/docs/template-loading-matrix.md +242 -242
  475. package/package.json +5 -3
  476. package/docs/02-CORE-GUIDES/api-reference/cli-profile-integration.md +0 -377
@@ -1,957 +1,957 @@
1
- # FC Connect SDK - Template Guides
2
-
3
- **Complete catalog of production-ready templates** for building Fluent Commerce integrations.
4
-
5
- Last Updated: 2025-01-27
6
-
7
- ---
8
-
9
- ## 🎯 Quick Decision Tree
10
-
11
- **Not sure which template to use?** Follow this flowchart:
12
-
13
- ```
14
- START: What do you want to build?
15
-
16
- ├─ I need a PATTERN (concept/technique) ────────────────────────┐
17
- │ │
18
- ├─ I'm building for VERSORI PLATFORM ────────────────────────────┤
19
- │ │
20
- └─ I'm building STANDALONE (Node.js/Deno) ───────────────────────┤
21
-
22
-
23
- ```
24
-
25
- ### 1️⃣ What Runtime Are You Using?
26
-
27
- ```
28
- ┌──────────────────────────────────────────────────────────────┐
29
- │ Where will your integration run? │
30
- └──────────────────────────────────────────────────────────────┘
31
-
32
- ┌─────────────────┼─────────────────┐
33
- │ │ │
34
- ▼ ▼ ▼
35
- VERSORI STANDALONE JUST A
36
- PLATFORM NODE.JS/DENO PATTERN
37
- ```
38
-
39
- ---
40
-
41
- ## 🅰️ Versori Platform Templates
42
-
43
- ### Webhook-Triggered Workflows (7)
44
-
45
- #### XML Order Ingestion
46
- **File**: [`versori/webhooks/template-webhook-xml-order-ingestion.md`](versori/webhooks/template-webhook-xml-order-ingestion.md)
47
-
48
- **Description**: Build a Versori HTTP webhook that receives SFCC/Radial XML orders and creates orders in Fluent Commerce using GraphQL mutations. Includes nodes processing for nested XML extraction, custom resolvers with async API calls, and complete audit trail.
49
-
50
- **Complexity**: Medium | **Lines**: ~500
51
-
52
- **SDK Methods**:
53
- - `createClient(ctx)` - Versori context auto-detected
54
- - `GraphQLMutationMapper(config, logger, { fluentClient, customResolvers })` - XML → GraphQL mapping
55
- - `mapper.mapWithNodes(data)` - Process nodes config (resolvers from constructor)
56
- - `mapWithNodes()` returns query automatically (no need for buildMutation())
57
- - `client.graphql({ query, variables })` - Execute mutation
58
-
59
- **Key Patterns**:
60
- - Versori connection setup with auto-authentication
61
- - Nodes configuration (extracting nested/escaped XML)
62
- - Custom resolvers with context and async API calls
63
- - GraphQL mutation generation and execution
64
- - Error handling with structured responses
65
-
66
- **Use When**: Receiving XML webhooks (SFCC, Radial, custom), need to extract nested XML documents, transforming XML to Fluent orders/entities
67
-
68
- ---
69
-
70
- #### Generic XML Order
71
- **File**: [`versori/webhooks/template-webhook-generic-xml-order.md`](versori/webhooks/template-webhook-generic-xml-order.md)
72
-
73
- **Description**: Generic, vendor-agnostic XML order ingestion via Versori webhook using `GraphQLMutationMapper`. Includes optional nodes extraction, custom resolvers, audit trail, and robust error handling.
74
-
75
- **Complexity**: Medium | **Lines**: ~450
76
-
77
- **Use When**: Any XML order format (not SFCC-specific)
78
-
79
- ---
80
-
81
- #### ASN/Purchase Order
82
- **File**: [`versori/webhooks/template-webhook-asn-purchase-order.md`](versori/webhooks/template-webhook-asn-purchase-order.md)
83
-
84
- **Description**: Advanced Shipping Notice (ASN) webhook processing with purchase order matching, shipment tracking, and inventory receiving workflows.
85
-
86
- **Complexity**: Medium | **Lines**: ~600
87
-
88
- **Use When**: Processing Advanced Shipping Notices
89
-
90
- ---
91
-
92
- #### Dropship Routing
93
- **File**: [`versori/webhooks/template-webhook-dropship-routing.md`](versori/webhooks/template-webhook-dropship-routing.md)
94
-
95
- **Description**: Supplier selection logic, PO submission, fallback to warehouse, and order status updates for dropship fulfillment.
96
-
97
- **Complexity**: High | **Lines**: ~700
98
-
99
- **Use When**: Routing orders to suppliers with fallback
100
-
101
- ---
102
-
103
- #### Flash Sale Inventory Reserve
104
- **File**: [`versori/webhooks/template-webhook-flash-sale-reserve.md`](versori/webhooks/template-webhook-flash-sale-reserve.md)
105
-
106
- **Description**: Time-bound inventory reservations, distributed locking, real-time decrement pattern, and periodic reconciliation for flash sales.
107
-
108
- **Complexity**: High | **Lines**: ~700
109
-
110
- **SDK Methods**:
111
- - `createClient(ctx)`
112
- - `VersoriKVAdapter` - Distributed locking
113
- - `StateService` - Reservation tracking
114
- - Custom resolvers (time-bound checks, quantity validation)
115
-
116
- **Key Patterns**:
117
- - Time-bound reservations (expiry logic)
118
- - Distributed locking (prevent overselling)
119
- - Real-time inventory decrement
120
- - Periodic reconciliation workflow
121
-
122
- **Use When**: Managing high-velocity flash sale inventory
123
-
124
- ---
125
-
126
- #### RMA/Returns Processing (Comprehensive)
127
- **File**: [`versori/webhooks/template-webhook-rma-returns-comprehensive.md`](versori/webhooks/template-webhook-rma-returns-comprehensive.md)
128
-
129
- **Description**: Complete RMA lifecycle: return initiation → RMA creation → shipping label → quality inspection → refund/exchange → inventory restock. Includes 5 separate webhooks for full workflow.
130
-
131
- **Complexity**: Medium-High | **Lines**: ~1700
132
-
133
- **Webhooks**:
134
- 1. `createRmaFromReturn` - Creates RMA from return request
135
- 2. `trackReturnShipment` - Tracks return shipment
136
- 3. `qualityInspection` - Processes warehouse inspection
137
- 4. `processRefundOrExchange` - Handles refund/exchange
138
- 5. `getRmaStatus` - Query endpoint for RMA status
139
-
140
- **Use When**: Full return/exchange workflow
141
-
142
- ---
143
-
144
- #### Payment Gateway Integration (Adyen)
145
- **File**: [`versori/webhooks/template-webhook-payment-gateway-integration.md`](versori/webhooks/template-webhook-payment-gateway-integration.md)
146
-
147
- **Description**: Complete payment gateway integration with 4 webhooks: Capture, Refund, Auth Cancel, and ReAuth. Modular architecture allows easy swapping of payment providers (Adyen → Stripe).
148
-
149
- **Complexity**: Medium-High | **Lines**: ~1500
150
-
151
- **SDK Methods**:
152
- - `createClient(ctx)` - Versori context auto-detected
153
- - `client.setRetailerId()` - Required for Event API
154
- - `client.sendEvent()` - Send events to Fluent Commerce Event API
155
- - `VersoriKVAdapter(ctx.openKv(':project:'))` - Idempotency tracking
156
-
157
- **Key Patterns**:
158
- - Payment provider abstraction (easy to swap Adyen → Stripe)
159
- - Trigger source validation (ORDER_FULFILLMENT vs PAYMENT_ENTITY)
160
- - Shared services (webhook validation, event sending, idempotency)
161
- - Event mapping (payment provider → Fluent event format)
162
-
163
- **Use When**: Integrating payment gateways (Adyen, Stripe, PayPal)
164
-
165
- ---
166
-
167
- ### Scheduled Workflows (6)
168
-
169
- #### CSV Inventory Sync (S3)
170
- **File**: [`versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md`](versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md)
171
-
172
- **Description**: Build a Versori scheduled workflow (cron-based) that reads inventory CSV files from S3 and updates Fluent Commerce inventory via Batch API. Includes VersoriKV state management for duplicate prevention and file archival.
173
-
174
- **Complexity**: Medium | **Lines**: ~600
175
-
176
- **SDK Methods**:
177
- - `createClient(ctx)` - Versori client
178
- - `S3DataSource(config, logger)` - S3 operations
179
- - `UniversalMapper(mappingConfig)` - Field transformations
180
- - `mapper.map(record)` - Transform record
181
- - `client.createJob({ name, retailerId })` - Create Batch job
182
- - `client.sendBatch(jobId, { entities })` - Send inventory batch
183
- - `VersoriKVAdapter(openKv())` - State management
184
- - `VersoriFileTracker` - File tracking
185
-
186
- **Key Patterns**:
187
- - Versori scheduled triggers (cron expressions)
188
- - S3 file operations (list, download, archive)
189
- - UniversalMapper with SDK resolvers
190
- - Batch API processing with chunking
191
- - VersoriKV state management (duplicate prevention)
192
- - File archival after processing
193
-
194
- **Use When**: Scheduled inventory sync (daily, hourly), reading CSV from S3, need duplicate prevention
195
-
196
- ---
197
-
198
- #### SFTP CSV Ingestion
199
- **File**: [`versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md`](versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md)
200
-
201
- **Description**: Scheduled/manual ingestion from SFTP CSV with `CSVParserService` and `UniversalMapper`, duplicate prevention with `VersoriFileTracker`, and robust retry/backoff for downloads and batch sends.
202
-
203
- **Complexity**: Medium | **Lines**: ~700
204
-
205
- **SDK Methods**:
206
- - `createClient(ctx)`
207
- - `SftpDataSource.listFiles`, `downloadFile`, `moveFile`
208
- - `CSVParserService.parse`
209
- - `UniversalMapper.map`
210
- - `VersoriFileTracker`, `VersoriKVAdapter`, `StateService`
211
- - `client.createJob`, `client.sendBatch`
212
-
213
- **Key Patterns**:
214
- - SFTP connection and file operations
215
- - CSV parsing with validation
216
- - File tracking and duplicate prevention
217
- - Retry logic with exponential backoff
218
- - File archival (processed/error folders)
219
-
220
- **Use When**: Scheduled SFTP polling for CSV files
221
-
222
- ---
223
-
224
- #### Cycle Count Reconciliation
225
- **File**: [`versori/workflows/ingestion/batch-api/template-ingestion-cycle-count-reconciliation.md`](versori/workflows/ingestion/batch-api/template-ingestion-cycle-count-reconciliation.md)
226
-
227
- **Description**: Scheduled cycle count import with variance detection, adjustment workflows, and reporting.
228
-
229
- **Complexity**: Medium | **Lines**: ~650
230
-
231
- **Use When**: Scheduled cycle count imports with variance handling
232
-
233
- ---
234
-
235
- #### Multi-Channel Inventory Sync
236
- **File**: [`versori/workflows/ingestion/batch-api/template-ingestion-multi-channel-inventory-sync.md`](versori/workflows/ingestion/batch-api/template-ingestion-multi-channel-inventory-sync.md)
237
-
238
- **Description**: ATP computation, channel-specific allocation rules, delta sync optimization, and rate-limit handling for multi-channel inventory distribution.
239
-
240
- **Complexity**: High | **Lines**: ~750
241
-
242
- **SDK Methods**:
243
- - `createClient(ctx)`
244
- - `client.graphql` - Query inventory
245
- - `UniversalMapper` - Transform for channels
246
- - Channel-specific custom resolvers
247
- - Rate limiting logic
248
-
249
- **Key Patterns**:
250
- - ATP (Available-To-Promise) calculation
251
- - Channel allocation rules
252
- - Delta sync (only changed inventory)
253
- - Rate limiting per channel
254
- - Multi-channel distribution
255
-
256
- **Use When**: Distributing inventory across multiple sales channels
257
-
258
- ---
259
-
260
- #### Event API Templates
261
- **File**: [`versori/workflows/ingestion/event-api/`](versori/workflows/ingestion/event-api/)
262
-
263
- **Description**: Product, location, and control entity ingestion via Event API with GraphQL mutations. Supports CSV, JSON, XML, and Parquet formats from S3 and SFTP sources.
264
-
265
- **Available Templates**:
266
- - S3 CSV Product Event → [`template-ingestion-s3-csv-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-s3-csv-product-event.md)
267
- - SFTP CSV Product Event → [`template-ingestion-sftp-csv-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-sftp-csv-product-event.md)
268
- - S3 JSON Product Event → [`template-ingestion-s3-json-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-s3-json-product-event.md)
269
- - SFTP JSON Product Event → [`template-ingestion-sftp-json-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-sftp-json-product-event.md)
270
- - S3 XML Product Event → [`template-ingestion-s3-xml-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-s3-xml-product-event.md)
271
- - SFTP XML Product Event → [`template-ingestion-sftp-xml-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-sftp-xml-product-event.md)
272
- - S3 Parquet Product Event → [`template-ingestion-s3-parquet-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-s3-parquet-product-event.md)
273
- - SFTP Parquet Product Event → [`template-ingestion-sftp-parquet-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-sftp-parquet-product-event.md)
274
-
275
- **Complexity**: Medium | **Lines**: ~550-700
276
-
277
- **Use When**: Ingesting products, locations, or control entities via Event API
278
-
279
- ---
280
-
281
- #### GraphQL Mutation Templates
282
- **File**: [`versori/workflows/ingestion/graphql-mutations/`](versori/workflows/ingestion/graphql-mutations/)
283
-
284
- **Description**: Direct GraphQL mutation templates for creating/updating locations, prices, and control entities.
285
-
286
- **Available Templates**:
287
- - S3 CSV Location GraphQL → [`template-ingestion-s3-csv-location-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-location-graphql.md)
288
- - SFTP CSV Location GraphQL → [`template-ingestion-sftp-csv-location-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-location-graphql.md)
289
- - S3 JSON Location GraphQL → [`template-ingestion-s3-json-location-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-json-location-graphql.md)
290
- - SFTP JSON Location GraphQL → [`template-ingestion-sftp-json-location-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-json-location-graphql.md)
291
- - S3 XML Location GraphQL → [`template-ingestion-s3-xml-location-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-xml-location-graphql.md)
292
- - S3 CSV Price GraphQL → [`template-ingestion-s3-csv-price-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-price-graphql.md)
293
- - S3 CSV Control GraphQL → [`template-ingestion-s3-csv-control-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-control-graphql.md)
294
- - SFTP CSV Control GraphQL → [`template-ingestion-sftp-csv-control-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-control-graphql.md)
295
-
296
- **Complexity**: Medium | **Lines**: ~600-800
297
-
298
- **Use When**: Direct GraphQL mutations for entities not supported by Event API
299
-
300
- ---
301
-
302
- ### Versori Patterns (3)
303
-
304
- #### KV State Management
305
- **File**: [`versori/patterns/kv-state-management.md`](versori/patterns/kv-state-management.md)
306
-
307
- **Description**: Comprehensive guide on using Versori KV storage for state management, duplicate prevention, checkpoints, and file tracking. Includes 6 complete patterns from simple file tracking to advanced indexed tracking.
308
-
309
- **Complexity**: Low-Medium | **Lines**: ~400
310
-
311
- **SDK Methods**:
312
- - `VersoriKVAdapter(openKv())` - Wrap Versori KV
313
- - `VersoriFileTracker(kvAdapter)` - Track files
314
- - `StateService(kvAdapter)` - High-level state operations
315
- - `stateService.isFileProcessed(key)` - Check if processed
316
- - `stateService.markFileProcessed(key, metadata)` - Mark complete
317
- - `stateService.saveCheckpoint(key, data)` - Save checkpoint
318
- - `stateService.getCheckpoint(key)` - Restore checkpoint
319
-
320
- **Key Patterns**:
321
- - Simple file duplicate prevention
322
- - Distributed locking (prevent concurrent workflows)
323
- - Checkpoint & resume (long-running workflows)
324
- - Daily job management (reuse jobs)
325
- - Error state management (retry logic)
326
- - Advanced indexed tracking (list files)
327
-
328
- **Use When**: Preventing duplicate file processing, need checkpoint/resume capabilities, distributed workflow coordination
329
-
330
- ---
331
-
332
- #### XML Response Patterns
333
- **File**: [`versori/patterns/xml-response-patterns.md`](versori/patterns/xml-response-patterns.md)
334
-
335
- **Description**: CRITICAL guide on returning non-JSON content (XML, HTML, CSV) from Versori webhooks using custom Response objects.
336
-
337
- **Complexity**: Low-Medium | **Lines**: ~300
338
-
339
- **SDK Methods**:
340
- - `webhook('name', { response: { mode, onSuccess, onError } })` - Custom handlers
341
- - `XMLBuilder(options)` - Build XML responses
342
- - `builder.build(data)` - Generate XML string
343
- - `new Response(body, { status, headers })` - Custom response objects
344
-
345
- **Key Patterns**:
346
- - Why custom Response objects are needed (JSON encoding problem)
347
- - onSuccess handler pattern (return Response)
348
- - onError handler pattern (error responses)
349
- - Content-Type headers (application/xml, text/html, text/csv)
350
-
351
- **Use When**: Returning XML responses (SOAP, RSS, custom), HTML status pages, CSV downloads, CRITICAL for SFCC order detail responses
352
-
353
- ---
354
-
355
- #### Dual Workflow Connector
356
- **File**: [`versori/patterns/dual-workflow-connector.md`](versori/patterns/dual-workflow-connector.md)
357
-
358
- **Description**: Build a complete Versori connector with multiple workflows (ingestion + extraction), shared resolvers, proper index.ts structure, and package.json configuration.
359
-
360
- **Complexity**: Medium | **Lines**: ~500
361
-
362
- **Key Patterns**:
363
- - Multi-workflow index structure (clean exports)
364
- - Shared resolvers library (domain-organized)
365
- - Bidirectional data flow (ingestion vs extraction)
366
- - Package.json configuration (Versori-specific)
367
- - Testing multi-workflow connectors
368
-
369
- **Use When**: Building complete bidirectional integration, multiple workflows sharing code, production Versori connector
370
-
371
- ---
372
-
373
- ### Business Use Case Examples (4)
374
-
375
- #### GraphQL → Parquet Extraction
376
- **File**: [`versori/business-examples/graphql-parquet-extraction.md`](versori/business-examples/graphql-parquet-extraction.md)
377
-
378
- **Description**: Scheduled/manual Versori workflow that extracts via GraphQL with auto-pagination, transforms with `UniversalMapper`, partitions by date/entity/size, and uploads Parquet parts to S3 with incremental KV state.
379
-
380
- **Complexity**: Medium | **Lines**: ~600
381
-
382
- **SDK Methods**:
383
- - `createClient(ctx)` with Versori connection
384
- - `client.graphql({ pagination })`
385
- - `UniversalMapper`
386
- - `VersoriKVAdapter`, `StateService`
387
- - `S3DataSource.writeParquetContent`, `S3DataSource.uploadFile`
388
-
389
- **Key Patterns**:
390
- - Auto-pagination extraction
391
- - Data transformation with UniversalMapper
392
- - Parquet file generation
393
- - Partitioning strategies (date, entity, size)
394
- - Incremental state tracking
395
-
396
- **Use When**: Extracting data from Fluent to data warehouse
397
-
398
- ---
399
-
400
- #### Dropship Order Routing
401
- **File**: [`versori/business-examples/dropship-order-routing.md`](versori/business-examples/dropship-order-routing.md)
402
-
403
- **Description**: Intelligent supplier selection with fallback logic and complete order orchestration workflow.
404
-
405
- **Complexity**: High | **Lines**: ~700
406
-
407
- **Use When**: Complex dropship routing with fallback logic
408
-
409
- ---
410
-
411
- #### Inter-Location Transfers
412
- **File**: [`versori/business-examples/inter-location-transfers.md`](versori/business-examples/inter-location-transfers.md)
413
-
414
- **Description**: Transfer order creation, fulfillment workflow, and receiving processes for inter-location inventory movement.
415
-
416
- **Complexity**: Medium-High | **Lines**: ~650
417
-
418
- **Use When**: Moving inventory between locations
419
-
420
- ---
421
-
422
- #### Pre-Order Allocation
423
- **File**: [`versori/business-examples/pre-order-allocation.md`](versori/business-examples/pre-order-allocation.md)
424
-
425
- **Description**: Pre-order reservation system, allocation rules engine, and fulfillment on inventory availability.
426
-
427
- **Complexity**: High | **Lines**: ~750
428
-
429
- **SDK Methods**:
430
- - `createClient(ctx)`
431
- - `VersoriKVAdapter` - Reservation tracking
432
- - Allocation rules engine
433
- - Fulfillment triggers
434
-
435
- **Use When**: Managing pre-orders with allocation logic
436
-
437
- ---
438
-
439
- ## 🅱️ Standalone Node.js / Deno Templates
440
-
441
- ### Ingestion (External → Fluent)
442
-
443
- #### S3 CSV → Batch API
444
- **File**: [`standalone/s3-csv-batch-api.md`](standalone/s3-csv-batch-api.md)
445
-
446
- **Description**: Read CSV inventory files from S3, transform with `UniversalMapper`, and update Fluent via Batch API with chunking and archival.
447
-
448
- **Complexity**: Medium | **Lines**: ~450-500
449
-
450
- **SDK Methods**:
451
- - `createClient({ config: { baseUrl, clientId, clientSecret, retailerId } })`
452
- - `S3DataSource`, `CSVParserService`, `UniversalMapper`
453
- - `client.createJob`, `client.sendBatch`
454
-
455
- **Use When**: Simple S3 CSV ingestion with field mapping
456
-
457
- ---
458
-
459
- #### SFTP XML → GraphQL Mutation
460
- **File**: [`standalone/sftp-xml-graphql.md`](standalone/sftp-xml-graphql.md)
461
-
462
- **Description**: Standalone Node.js script that reads XML order files from SFTP and creates orders in Fluent Commerce using GraphQL mutations. Includes SFTP connection, XML parsing, and file archival.
463
-
464
- **Complexity**: Medium | **Lines**: ~600
465
-
466
- **SDK Methods**:
467
- - `createClient({ config: { baseUrl, clientId, clientSecret, retailerId } })` - OAuth2
468
- - `SftpDataSource(config, logger)` - SFTP operations
469
- - `XMLParserService` - XML parsing
470
- - `GraphQLMutationMapper(config, logger, { fluentClient, customResolvers })` - XML → GraphQL
471
- - `mapper.mapWithNodes(xmlData)` - Transform with custom resolvers (from constructor)
472
- - `mapper.map(xmlData)` - Transform without custom resolvers (built-in SDK resolvers only)
473
- - `client.graphql({ query, variables })` - Execute mutation
474
-
475
- **Key Patterns**:
476
- - SFTP connection & file operations
477
- - XML parsing & validation
478
- - GraphQL mutation mapping
479
- - Custom resolvers for complex logic
480
- - File management (archive/error folders)
481
-
482
- **Deployment**: Local, Docker, Cron/Systemd
483
-
484
- **Use When**: Polling SFTP for XML orders
485
-
486
- ---
487
-
488
- #### Webhook Payload Processing
489
- **File**: [`standalone/webhook-payload-processing.md`](standalone/webhook-payload-processing.md)
490
-
491
- **Description**: Process stored webhook payloads offline with signature validation, payload parsing, and file-based queue.
492
-
493
- **Complexity**: Low-Medium | **Lines**: ~250
494
-
495
- **Use When**: Processing stored webhook payloads offline
496
-
497
- ---
498
-
499
- #### ASN Inbound Processing
500
- **File**: [`standalone/asn-inbound-processing.md`](standalone/asn-inbound-processing.md)
501
-
502
- **Description**: Process Advanced Shipping Notice (ASN) files with PO matching and inventory updates.
503
-
504
- **Complexity**: Medium | **Lines**: ~500
505
-
506
- **Use When**: Processing inbound shipment notices
507
-
508
- ---
509
-
510
- ### Extraction (Fluent → External)
511
-
512
- #### GraphQL Query → Parquet Export
513
- **File**: [`standalone/graphql-query-export.md`](standalone/graphql-query-export.md)
514
-
515
- **Description**: Standalone Node.js script that extracts inventory/orders from Fluent Commerce via GraphQL queries and exports to S3 as Parquet files. Includes auto-pagination and incremental extraction.
516
-
517
- **Complexity**: Medium | **Lines**: ~500
518
-
519
- **SDK Methods**:
520
- - `createClient({ config: { baseUrl, clientId, clientSecret, retailerId } })` - OAuth2
521
- - `client.graphql({ query, variables })` - Execute GraphQL query
522
- - `detectPaginationVariables(query)` - Auto-detect pagination
523
- - `hasMorePages(response)` - Check for next page
524
- - `UniversalMapper(extractionConfig)` - Transform for export
525
- - `ParquetParserService.write(data, outputPath)` - Generate Parquet
526
- - `S3DataSource.uploadFile(path, buffer)` - Upload to S3
527
-
528
- **Deployment**: Local, Scheduled (cron), AWS Lambda
529
-
530
- **Use When**: Extracting inventory/orders to S3 as Parquet
531
-
532
- ---
533
-
534
- #### GraphQL → Partitioned Parquet on S3
535
- **File**: [`standalone/graphql-to-parquet-partitioned-s3.md`](standalone/graphql-to-parquet-partitioned-s3.md)
536
-
537
- **Description**: Extract entities via GraphQL with auto-pagination, transform with `UniversalMapper`, and write multiple Parquet files to S3 with date/entity/size partitioning and incremental state.
538
-
539
- **Complexity**: Medium | **Lines**: ~550
540
-
541
- **SDK Methods**:
542
- - `createClient`, `client.graphql({ pagination })`
543
- - `UniversalMapper`
544
- - `S3DataSource.writeParquetContent`, `S3DataSource.uploadFile`
545
-
546
- **Key Patterns**:
547
- - Auto-pagination extraction
548
- - Data transformation with UniversalMapper
549
- - Parquet file generation
550
- - Partitioning strategies (date, entity, size)
551
- - Incremental state tracking
552
-
553
- **Use When**: Large-scale extraction with date/entity partitioning
554
-
555
- ---
556
-
557
- ### Complex Workflows
558
-
559
- #### Multi-Source Aggregation
560
- **File**: [`standalone/multi-source-aggregation.md`](standalone/multi-source-aggregation.md)
561
-
562
- **Description**: Standalone Node.js script that aggregates inventory from multiple sources (SFTP CSV + S3 JSON), reconciles with Fluent Commerce current state, and updates differences. Includes comprehensive reporting.
563
-
564
- **Complexity**: High | **Lines**: ~800
565
-
566
- **SDK Methods**:
567
- - `createClient({ config: { baseUrl, clientId, clientSecret, retailerId } })` - OAuth2
568
- - `SftpDataSource(...)` - SFTP operations
569
- - `S3DataSource(...)` - S3 operations
570
- - `CSVParserService` - Parse SFTP CSV
571
- - `client.graphql({ query, variables })` - Query current inventory
572
- - `UniversalMapper(...)` - Transform aggregated data
573
-
574
- **Deployment**: Scheduled (hourly), Manual, Containerized
575
-
576
- **Use When**: Combining inventory from multiple sources
577
-
578
- ---
579
-
580
- #### Multi-Channel Inventory Sync
581
- **File**: [`standalone/multi-channel-inventory-sync.md`](standalone/multi-channel-inventory-sync.md)
582
-
583
- **Description**: Node.js script that aggregates Available-to-Promise (ATP) inventory from Fluent Commerce and pushes real-time updates to multiple marketplaces (Amazon, eBay, Walmart).
584
-
585
- **Complexity**: High | **Lines**: ~950
586
-
587
- **SDK Methods**:
588
- - `createClient({ config: { baseUrl, clientId, clientSecret, retailerId } })` - OAuth2 client
589
- - `client.graphql({ query, variables, pagination })` - Query with auto-pagination
590
- - `UniversalMapper(mappingConfig)` - Transform Fluent data to marketplace formats
591
- - `createConsoleLogger()` - Simple console logger
592
- - `toStructuredLogger(logger, context)` - Add context to logs
593
- - `generateCorrelationId()` - Generate unique correlation IDs
594
- - State tracking for incremental updates
595
-
596
- **Key Patterns**:
597
- - GraphQL pagination → external marketplace APIs
598
- - ATP (Available-to-Promise) aggregation across multiple locations
599
- - Marketplace-specific buffer stock calculations
600
- - Parallel marketplace updates with rate limiting
601
- - Per-marketplace error handling and retry logic
602
- - SLA tracking (15-minute sync requirement)
603
-
604
- **Use When**: Standalone multi-channel distribution (different from Versori template - this pushes TO marketplaces)
605
-
606
- ---
607
-
608
- ## 🅲️ Pattern Guides (Reusable Concepts)
609
-
610
- ### Universal Field Mapping
611
- **File**: [`patterns/field-mapping-universal.md`](patterns/field-mapping-universal.md)
612
-
613
- **Description**: Focused guide on UniversalMapper for field transformations. Covers basic mapping, SDK resolvers, custom resolvers, nested fields, arrays, and error handling.
614
-
615
- **Lines**: ~150-200
616
-
617
- **SDK Methods**:
618
- - `UniversalMapper(config)` - Create mapper
619
- - `mapper.map(sourceData)` - Transform record
620
- - SDK Resolvers: `sdk.*` prefix (15+ built-in)
621
- - Custom resolvers: User-defined functions
622
-
623
- **Patterns Covered**:
624
- - Basic field mapping
625
- - SDK resolver usage (string, number, date, type, utility)
626
- - Custom resolver patterns (simple, helper-based, context-aware)
627
- - Nested field mapping (dot notation)
628
- - Array transformations
629
- - Error handling in mapping
630
-
631
- ---
632
-
633
- ### Custom Resolvers
634
- **File**: [`patterns/custom-resolvers.md`](patterns/custom-resolvers.md)
635
-
636
- **Description**: Focused guide on writing custom resolvers. Covers 4-parameter signature, async resolvers, helper functions, and best practices.
637
-
638
- **Lines**: ~100-150
639
-
640
- **Resolver Signature**:
641
- ```typescript
642
- (value, sourceData, helpers, config) => any | Promise<any>
643
- ```
644
-
645
- **Helper Functions**:
646
- - Path access (get, set)
647
- - Type coercion (parseFloatSafe, parseIntSafe, parseBool)
648
- - Date operations (formatDate, parseDate, addDays)
649
- - Array operations (ensureArray, coalesce, groupBy)
650
- - String operations (toCamelCase, toSnakeCase, template)
651
-
652
- ---
653
-
654
- ### Error Handling & Retry Strategies
655
- **File**: [`patterns/error-handling-retry.md`](patterns/error-handling-retry.md)
656
-
657
- **Description**: Focused guide on error handling and retry strategies. Covers try/catch, exponential backoff, circuit breaker, batch error isolation, and graceful degradation.
658
-
659
- **Lines**: ~100-150
660
-
661
- **SDK Error Classes**:
662
- - `ConfigurationError` - Config validation
663
- - `AggregateIngestionError` - Multiple failures
664
- - `IngestionErrorFactory` - Create structured errors
665
-
666
- **Patterns Covered**:
667
- - Basic try/catch with logging
668
- - Exponential backoff retry
669
- - Circuit breaker pattern
670
- - Batch error isolation
671
- - Graceful degradation
672
-
673
- ---
674
-
675
- ### State Management & Duplicate Prevention
676
- **File**: [`patterns/state-duplicate-prevention.md`](patterns/state-duplicate-prevention.md)
677
-
678
- **Description**: Focused guide on state management and duplicate prevention. Covers file tracking, checkpoints, distributed locking, and idempotency.
679
-
680
- **Lines**: ~100-150
681
-
682
- **SDK Methods**:
683
- - `StateService(kvAdapter)` - State management
684
- - `VersoriKVAdapter(openKv())` - Versori KV wrapper
685
- - `VersoriFileTracker` - File tracking
686
-
687
- ---
688
-
689
- ### Pagination & Streaming
690
- **File**: [`patterns/pagination-streaming.md`](patterns/pagination-streaming.md)
691
-
692
- **Description**: Focused guide on handling large datasets with pagination and streaming. Covers GraphQL auto-pagination, CSV/Parquet streaming, and memory optimization.
693
-
694
- **Lines**: ~150-200
695
-
696
- **SDK Methods**:
697
- - `detectPaginationVariables(query)` - Auto-detect
698
- - `hasMorePages(response)` - Check for next page
699
- - `extractCursor(response)` - Get cursor
700
- - `buildPaginationVariables(variables, cursor)` - Build next query
701
- - CSV/Parquet streaming APIs
702
-
703
- ---
704
-
705
- ### CSV Schema Validation + Rejection Report
706
- **File**: [`patterns/csv-schema-validation-and-rejection-report.md`](patterns/csv-schema-validation-and-rejection-report.md)
707
-
708
- **Description**: Validate CSV headers and rows; generate a rejection report CSV and upload to S3. Fits into both S3 and SFTP ingestion flows before mapping.
709
-
710
- **Complexity**: Low-Medium | **Lines**: ~220
711
-
712
- ---
713
-
714
- ### Large File Splitting
715
- **File**: [`patterns/large-file-splitting.md`](patterns/large-file-splitting.md)
716
-
717
- **Description**: Chunk large files for memory-efficient processing.
718
-
719
- **Use When**: Handling files too large for memory
720
-
721
- ---
722
-
723
- ### Master Data ETL
724
- **File**: [`patterns/master-data-etl.md`](patterns/master-data-etl.md)
725
-
726
- **Description**: Generic patterns for products, locations, networks ingestion.
727
-
728
- **Use When**: Master data ingestion best practices
729
-
730
- ---
731
-
732
- ## 🔍 Find Templates By Use Case
733
-
734
- ### I want to...
735
-
736
- #### Import Inventory
737
- - **From S3 CSV** → [S3 CSV Inventory Batch](versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md) (Versori) or [S3 CSV Batch API](standalone/s3-csv-batch-api.md) (Standalone)
738
- - **From SFTP CSV** → [SFTP CSV Ingestion](versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md)
739
- - **From Multiple Sources** → [Multi-Source Aggregation](standalone/multi-source-aggregation.md)
740
-
741
- #### Import Orders
742
- - **From XML Webhooks** → [XML Order Ingestion](versori/webhooks/template-webhook-xml-order-ingestion.md)
743
- - **From SFTP XML** → [SFTP XML GraphQL](standalone/sftp-xml-graphql.md)
744
- - **Generic XML** → [Generic XML Order](versori/webhooks/template-webhook-generic-xml-order.md)
745
-
746
- #### Import Products/Locations
747
- - **Event API** → [Event API Templates](versori/workflows/ingestion/event-api/)
748
- - **GraphQL Mutations** → [GraphQL Mutation Templates](versori/workflows/ingestion/graphql-mutations/)
749
-
750
- #### Export Data
751
- - **To Parquet** → [GraphQL Query Export](standalone/graphql-query-export.md)
752
- - **To Partitioned Parquet** → [GraphQL to Parquet Partitioned S3](standalone/graphql-to-parquet-partitioned-s3.md)
753
- - **With Versori** → [GraphQL Parquet Extraction](versori/business-examples/graphql-parquet-extraction.md)
754
-
755
- #### Process Returns
756
- - **Complete RMA Flow** → [RMA Returns Comprehensive](versori/webhooks/template-webhook-rma-returns-comprehensive.md)
757
-
758
- #### Manage Pricing
759
- - **Bulk Updates** → [S3 CSV Price GraphQL](versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-price-graphql.md)
760
-
761
- #### Advanced Workflows
762
- - **Dropship Routing** → [Dropship Routing](versori/webhooks/template-webhook-dropship-routing.md) or [Business Example](versori/business-examples/dropship-order-routing.md)
763
- - **Flash Sales** → [Flash Sale Reserve](versori/webhooks/template-webhook-flash-sale-reserve.md)
764
- - **Multi-Channel Sync** → [Multi-Channel Sync](versori/workflows/ingestion/batch-api/template-ingestion-multi-channel-inventory-sync.md) (Versori) or [Standalone](standalone/multi-channel-inventory-sync.md)
765
- - **Inter-Location Transfers** → [Inter-Location Transfers](versori/business-examples/inter-location-transfers.md)
766
- - **Pre-Orders** → [Pre-Order Allocation](versori/business-examples/pre-order-allocation.md)
767
-
768
- ---
769
-
770
- ## 💡 Quick Recommendations
771
-
772
- ### For Beginners
773
- Start with these guides (easiest to hardest):
774
-
775
- 1. **[Field Mapping Universal](patterns/field-mapping-universal.md)** - Learn core mapping concepts
776
- 2. **[S3 CSV Batch API](standalone/s3-csv-batch-api.md)** - Simple standalone ingestion
777
- 3. **[CSV Inventory Sync](versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md)** - Versori scheduled workflow
778
- 4. **[XML Order Ingestion](versori/webhooks/template-webhook-xml-order-ingestion.md)** - Webhook with advanced features
779
-
780
- ### For Production Deployments
781
- These guides are production-tested:
782
-
783
- - **Inventory Ingestion**: [SFTP CSV Ingestion](versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md)
784
- - **Order Processing**: [XML Order Ingestion](versori/webhooks/template-webhook-xml-order-ingestion.md)
785
- - **Data Extraction**: [GraphQL to Parquet Partitioned S3](standalone/graphql-to-parquet-partitioned-s3.md)
786
- - **State Management**: [KV State Management](versori/patterns/kv-state-management.md)
787
-
788
- ### For Complex Integrations
789
- These guides show advanced patterns:
790
-
791
- - [Multi-Source Aggregation](standalone/multi-source-aggregation.md)
792
- - [Dropship Order Routing](versori/business-examples/dropship-order-routing.md)
793
- - [Flash Sale Reserve](versori/webhooks/template-webhook-flash-sale-reserve.md)
794
- - [Pre-Order Allocation](versori/business-examples/pre-order-allocation.md)
795
-
796
- ---
797
-
798
- ## 📖 How to Use These Templates
799
-
800
- ### For Developers
801
-
802
- 1. **Pick a template** - Use the decision tree above or browse by use case
803
- 2. **Copy the code** - All examples are production-ready
804
- 3. **Customize** environment variables and configurations
805
- 4. **Test locally** with provided sample data
806
- 5. **Deploy** using deployment options in each guide
807
-
808
- **Need Help?** Check our comprehensive [**FAQ**](faq.md) for troubleshooting.
809
-
810
- ### For AI / LLM Prompts
811
-
812
- These templates are optimized for AI consumption:
813
-
814
- ```
815
- Build a Versori connector that receives SFCC XML orders via HTTP webhook
816
- and creates orders in Fluent Commerce.
817
-
818
- Context: Use patterns from docs/01-TEMPLATES/versori/webhooks/template-webhook-xml-order-ingestion.md
819
- ```
820
-
821
- AI gets **focused context** without API reference overload.
822
-
823
- ---
824
-
825
- ## ✅ What's Included in Each Template
826
-
827
- Every template provides:
828
-
829
- - ✅ **Complete working code** (400-800 lines)
830
- - ✅ **Real SDK methods** with proper usage
831
- - ✅ **Production patterns** from actual connectors
832
- - ✅ **Environment setup** and configuration
833
- - ✅ **Testing instructions** with sample data
834
- - ✅ **Deployment options** (Docker, Lambda, cron, etc.)
835
- - ✅ **Common issues** with solutions
836
- - ✅ **Related guides** for deeper dives
837
-
838
- ---
839
-
840
- ## 🚀 Quick Start Examples
841
-
842
- ### Versori HTTP Webhook
843
-
844
- ```typescript
845
- import { createClient, GraphQLMutationMapper } from '@fluentcommerce/fc-connect-sdk';
846
-
847
- export default async function processOrder(ctx) {
848
- const client = await createClient(ctx); // Auto-detects Versori context
849
- const mapper = new GraphQLMutationMapper(mappingConfig, ctx.log, { fluentClient: client });
850
- const result = await mapper.mapWithNodes(ctx.body, customResolvers);
851
-
852
- // Check success (errors are returned, not thrown)
853
- if (!result.success) {
854
- throw new Error(`Mapping failed: ${result.errors?.join(', ')}`);
855
- }
856
-
857
- // Execute mutation (query is auto-generated in result)
858
- return await client.graphql({
859
- query: result.query,
860
- variables: result.variables // ✅ Use variables (wrapped if fields pattern)
861
- });
862
- }
863
- ```
864
-
865
- ### Standalone Node.js Script
866
-
867
- ```typescript
868
- import { createClient, S3DataSource, UniversalMapper } from '@fluentcommerce/fc-connect-sdk';
869
-
870
- const client = await createClient({
871
- config: {
872
- baseUrl: process.env.FLUENT_BASE_URL!,
873
- clientId: process.env.FLUENT_CLIENT_ID!,
874
- clientSecret: process.env.FLUENT_CLIENT_SECRET!,
875
- retailerId: process.env.FLUENT_RETAILER_ID!,
876
- },
877
- });
878
-
879
- const s3Source = new S3DataSource(config, logger);
880
- const mapper = new UniversalMapper(mappingConfig);
881
- const files = await s3Source.listFiles();
882
- // ... process files
883
- ```
884
-
885
- ---
886
-
887
- ## 📚 Additional Resources
888
-
889
- - **[FAQ - Troubleshooting](faq.md)** - Consolidated solutions to common issues
890
- - **[API Reference](../02-CORE-GUIDES/api-reference/api-reference-readme.md)** - Complete SDK method reference
891
- - **[SDK Philosophy](../00-START-HERE/sdk-philosophy.md)** - Design principles
892
- - **[Complete Documentation](../readme.md)** - All guides and references
893
-
894
- ---
895
-
896
- ## 🎓 Learning Path
897
-
898
- **New to SDK?**
899
-
900
- 1. Start with [SDK Philosophy](../00-START-HERE/sdk-philosophy.md)
901
- 2. Read [Getting Started](../00-START-HERE/getting-started.md)
902
- 3. Pick a **Standalone** template (simpler, no Versori)
903
- 4. Try a **Versori** template if deploying to Versori
904
- 5. Use **Pattern** guides for specific concepts
905
-
906
- **Building Connectors?**
907
-
908
- 1. Pick matching use case template
909
- 2. Review **Pattern** guides for concepts
910
- 3. Check [API Reference](../02-CORE-GUIDES/api-reference/api-reference-readme.md) for details
911
- 4. Deploy and monitor
912
-
913
- ---
914
-
915
- ## 📊 Template Statistics
916
-
917
- - **38+ Total Templates**
918
- - 20 Versori Platform templates
919
- - 7 Webhook-triggered workflows
920
- - 6 Scheduled workflows (Batch API)
921
- - 8 Event API templates
922
- - 9 GraphQL mutation templates
923
- - 3 Versori patterns
924
- - 4 Business use case examples
925
- - 9 Standalone Node.js/Deno templates
926
- - 9 Reusable Pattern guides
927
- - **~15,000+ lines** of production-ready code
928
- - **100% tested** patterns from real connectors
929
- - **Organized by trigger type** for easy navigation
930
-
931
- ---
932
-
933
- ## 🆘 Still Can't Decide?
934
-
935
- ### Answer These Questions:
936
-
937
- 1. **Runtime**: Versori or Standalone?
938
- 2. **Direction**: Ingestion (IN) or Extraction (OUT)?
939
- 3. **Trigger**: Webhook, Schedule, or Manual?
940
- 4. **Format**: CSV, XML, JSON, or Parquet?
941
- 5. **Complexity**: Simple, Medium, or High?
942
-
943
- **Then use the decision tree above to find your template!**
944
-
945
- ---
946
-
947
- ## 🆘 Need Help?
948
-
949
- - **Issues**: [GitHub Issues](https://github.com/fluentcommerce/fc-connect-sdk/issues)
950
- - **Documentation**: [Complete Docs](../readme.md)
951
- - **API Reference**: [API Reference](../02-CORE-GUIDES/api-reference/api-reference-readme.md)
952
- - **Troubleshooting**: [FAQ](faq.md)
953
- - **Examples**: Check individual template files
954
-
955
- ---
956
-
957
- *Last Updated: 2025-01-27*
1
+ # FC Connect SDK - Template Guides
2
+
3
+ **Complete catalog of production-ready templates** for building Fluent Commerce integrations.
4
+
5
+ Last Updated: 2025-01-27
6
+
7
+ ---
8
+
9
+ ## 🎯 Quick Decision Tree
10
+
11
+ **Not sure which template to use?** Follow this flowchart:
12
+
13
+ ```
14
+ START: What do you want to build?
15
+
16
+ ├─ I need a PATTERN (concept/technique) ────────────────────────┐
17
+ │ │
18
+ ├─ I'm building for VERSORI PLATFORM ────────────────────────────┤
19
+ │ │
20
+ └─ I'm building STANDALONE (Node.js/Deno) ───────────────────────┤
21
+
22
+
23
+ ```
24
+
25
+ ### 1️⃣ What Runtime Are You Using?
26
+
27
+ ```
28
+ ┌──────────────────────────────────────────────────────────────┐
29
+ │ Where will your integration run? │
30
+ └──────────────────────────────────────────────────────────────┘
31
+
32
+ ┌─────────────────┼─────────────────┐
33
+ │ │ │
34
+ ▼ ▼ ▼
35
+ VERSORI STANDALONE JUST A
36
+ PLATFORM NODE.JS/DENO PATTERN
37
+ ```
38
+
39
+ ---
40
+
41
+ ## 🅰️ Versori Platform Templates
42
+
43
+ ### Webhook-Triggered Workflows (7)
44
+
45
+ #### XML Order Ingestion
46
+ **File**: [`versori/webhooks/template-webhook-xml-order-ingestion.md`](versori/webhooks/template-webhook-xml-order-ingestion.md)
47
+
48
+ **Description**: Build a Versori HTTP webhook that receives SFCC/Radial XML orders and creates orders in Fluent Commerce using GraphQL mutations. Includes nodes processing for nested XML extraction, custom resolvers with async API calls, and complete audit trail.
49
+
50
+ **Complexity**: Medium | **Lines**: ~500
51
+
52
+ **SDK Methods**:
53
+ - `createClient(ctx)` - Versori context auto-detected
54
+ - `GraphQLMutationMapper(config, logger, { fluentClient, customResolvers })` - XML → GraphQL mapping
55
+ - `mapper.mapWithNodes(data)` - Process nodes config (resolvers from constructor)
56
+ - `mapWithNodes()` returns query automatically (no need for buildMutation())
57
+ - `client.graphql({ query, variables })` - Execute mutation
58
+
59
+ **Key Patterns**:
60
+ - Versori connection setup with auto-authentication
61
+ - Nodes configuration (extracting nested/escaped XML)
62
+ - Custom resolvers with context and async API calls
63
+ - GraphQL mutation generation and execution
64
+ - Error handling with structured responses
65
+
66
+ **Use When**: Receiving XML webhooks (SFCC, Radial, custom), need to extract nested XML documents, transforming XML to Fluent orders/entities
67
+
68
+ ---
69
+
70
+ #### Generic XML Order
71
+ **File**: [`versori/webhooks/template-webhook-generic-xml-order.md`](versori/webhooks/template-webhook-generic-xml-order.md)
72
+
73
+ **Description**: Generic, vendor-agnostic XML order ingestion via Versori webhook using `GraphQLMutationMapper`. Includes optional nodes extraction, custom resolvers, audit trail, and robust error handling.
74
+
75
+ **Complexity**: Medium | **Lines**: ~450
76
+
77
+ **Use When**: Any XML order format (not SFCC-specific)
78
+
79
+ ---
80
+
81
+ #### ASN/Purchase Order
82
+ **File**: [`versori/webhooks/template-webhook-asn-purchase-order.md`](versori/webhooks/template-webhook-asn-purchase-order.md)
83
+
84
+ **Description**: Advanced Shipping Notice (ASN) webhook processing with purchase order matching, shipment tracking, and inventory receiving workflows.
85
+
86
+ **Complexity**: Medium | **Lines**: ~600
87
+
88
+ **Use When**: Processing Advanced Shipping Notices
89
+
90
+ ---
91
+
92
+ #### Dropship Routing
93
+ **File**: [`versori/webhooks/template-webhook-dropship-routing.md`](versori/webhooks/template-webhook-dropship-routing.md)
94
+
95
+ **Description**: Supplier selection logic, PO submission, fallback to warehouse, and order status updates for dropship fulfillment.
96
+
97
+ **Complexity**: High | **Lines**: ~700
98
+
99
+ **Use When**: Routing orders to suppliers with fallback
100
+
101
+ ---
102
+
103
+ #### Flash Sale Inventory Reserve
104
+ **File**: [`versori/webhooks/template-webhook-flash-sale-reserve.md`](versori/webhooks/template-webhook-flash-sale-reserve.md)
105
+
106
+ **Description**: Time-bound inventory reservations, distributed locking, real-time decrement pattern, and periodic reconciliation for flash sales.
107
+
108
+ **Complexity**: High | **Lines**: ~700
109
+
110
+ **SDK Methods**:
111
+ - `createClient(ctx)`
112
+ - `VersoriKVAdapter` - Distributed locking
113
+ - `StateService` - Reservation tracking
114
+ - Custom resolvers (time-bound checks, quantity validation)
115
+
116
+ **Key Patterns**:
117
+ - Time-bound reservations (expiry logic)
118
+ - Distributed locking (prevent overselling)
119
+ - Real-time inventory decrement
120
+ - Periodic reconciliation workflow
121
+
122
+ **Use When**: Managing high-velocity flash sale inventory
123
+
124
+ ---
125
+
126
+ #### RMA/Returns Processing (Comprehensive)
127
+ **File**: [`versori/webhooks/template-webhook-rma-returns-comprehensive.md`](versori/webhooks/template-webhook-rma-returns-comprehensive.md)
128
+
129
+ **Description**: Complete RMA lifecycle: return initiation → RMA creation → shipping label → quality inspection → refund/exchange → inventory restock. Includes 5 separate webhooks for full workflow.
130
+
131
+ **Complexity**: Medium-High | **Lines**: ~1700
132
+
133
+ **Webhooks**:
134
+ 1. `createRmaFromReturn` - Creates RMA from return request
135
+ 2. `trackReturnShipment` - Tracks return shipment
136
+ 3. `qualityInspection` - Processes warehouse inspection
137
+ 4. `processRefundOrExchange` - Handles refund/exchange
138
+ 5. `getRmaStatus` - Query endpoint for RMA status
139
+
140
+ **Use When**: Full return/exchange workflow
141
+
142
+ ---
143
+
144
+ #### Payment Gateway Integration (Adyen)
145
+ **File**: [`versori/webhooks/template-webhook-payment-gateway-integration.md`](versori/webhooks/template-webhook-payment-gateway-integration.md)
146
+
147
+ **Description**: Complete payment gateway integration with 4 webhooks: Capture, Refund, Auth Cancel, and ReAuth. Modular architecture allows easy swapping of payment providers (Adyen → Stripe).
148
+
149
+ **Complexity**: Medium-High | **Lines**: ~1500
150
+
151
+ **SDK Methods**:
152
+ - `createClient(ctx)` - Versori context auto-detected
153
+ - `client.setRetailerId()` - Required for Event API
154
+ - `client.sendEvent()` - Send events to Fluent Commerce Event API
155
+ - `VersoriKVAdapter(ctx.openKv(':project:'))` - Idempotency tracking
156
+
157
+ **Key Patterns**:
158
+ - Payment provider abstraction (easy to swap Adyen → Stripe)
159
+ - Trigger source validation (ORDER_FULFILLMENT vs PAYMENT_ENTITY)
160
+ - Shared services (webhook validation, event sending, idempotency)
161
+ - Event mapping (payment provider → Fluent event format)
162
+
163
+ **Use When**: Integrating payment gateways (Adyen, Stripe, PayPal)
164
+
165
+ ---
166
+
167
+ ### Scheduled Workflows (6)
168
+
169
+ #### CSV Inventory Sync (S3)
170
+ **File**: [`versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md`](versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md)
171
+
172
+ **Description**: Build a Versori scheduled workflow (cron-based) that reads inventory CSV files from S3 and updates Fluent Commerce inventory via Batch API. Includes VersoriKV state management for duplicate prevention and file archival.
173
+
174
+ **Complexity**: Medium | **Lines**: ~600
175
+
176
+ **SDK Methods**:
177
+ - `createClient(ctx)` - Versori client
178
+ - `S3DataSource(config, logger)` - S3 operations
179
+ - `UniversalMapper(mappingConfig)` - Field transformations
180
+ - `mapper.map(record)` - Transform record
181
+ - `client.createJob({ name, retailerId })` - Create Batch job
182
+ - `client.sendBatch(jobId, { entities })` - Send inventory batch
183
+ - `VersoriKVAdapter(openKv())` - State management
184
+ - `VersoriFileTracker` - File tracking
185
+
186
+ **Key Patterns**:
187
+ - Versori scheduled triggers (cron expressions)
188
+ - S3 file operations (list, download, archive)
189
+ - UniversalMapper with SDK resolvers
190
+ - Batch API processing with chunking
191
+ - VersoriKV state management (duplicate prevention)
192
+ - File archival after processing
193
+
194
+ **Use When**: Scheduled inventory sync (daily, hourly), reading CSV from S3, need duplicate prevention
195
+
196
+ ---
197
+
198
+ #### SFTP CSV Ingestion
199
+ **File**: [`versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md`](versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md)
200
+
201
+ **Description**: Scheduled/manual ingestion from SFTP CSV with `CSVParserService` and `UniversalMapper`, duplicate prevention with `VersoriFileTracker`, and robust retry/backoff for downloads and batch sends.
202
+
203
+ **Complexity**: Medium | **Lines**: ~700
204
+
205
+ **SDK Methods**:
206
+ - `createClient(ctx)`
207
+ - `SftpDataSource.listFiles`, `downloadFile`, `moveFile`
208
+ - `CSVParserService.parse`
209
+ - `UniversalMapper.map`
210
+ - `VersoriFileTracker`, `VersoriKVAdapter`, `StateService`
211
+ - `client.createJob`, `client.sendBatch`
212
+
213
+ **Key Patterns**:
214
+ - SFTP connection and file operations
215
+ - CSV parsing with validation
216
+ - File tracking and duplicate prevention
217
+ - Retry logic with exponential backoff
218
+ - File archival (processed/error folders)
219
+
220
+ **Use When**: Scheduled SFTP polling for CSV files
221
+
222
+ ---
223
+
224
+ #### Cycle Count Reconciliation
225
+ **File**: [`versori/workflows/ingestion/batch-api/template-ingestion-cycle-count-reconciliation.md`](versori/workflows/ingestion/batch-api/template-ingestion-cycle-count-reconciliation.md)
226
+
227
+ **Description**: Scheduled cycle count import with variance detection, adjustment workflows, and reporting.
228
+
229
+ **Complexity**: Medium | **Lines**: ~650
230
+
231
+ **Use When**: Scheduled cycle count imports with variance handling
232
+
233
+ ---
234
+
235
+ #### Multi-Channel Inventory Sync
236
+ **File**: [`versori/workflows/ingestion/batch-api/template-ingestion-multi-channel-inventory-sync.md`](versori/workflows/ingestion/batch-api/template-ingestion-multi-channel-inventory-sync.md)
237
+
238
+ **Description**: ATP computation, channel-specific allocation rules, delta sync optimization, and rate-limit handling for multi-channel inventory distribution.
239
+
240
+ **Complexity**: High | **Lines**: ~750
241
+
242
+ **SDK Methods**:
243
+ - `createClient(ctx)`
244
+ - `client.graphql` - Query inventory
245
+ - `UniversalMapper` - Transform for channels
246
+ - Channel-specific custom resolvers
247
+ - Rate limiting logic
248
+
249
+ **Key Patterns**:
250
+ - ATP (Available-To-Promise) calculation
251
+ - Channel allocation rules
252
+ - Delta sync (only changed inventory)
253
+ - Rate limiting per channel
254
+ - Multi-channel distribution
255
+
256
+ **Use When**: Distributing inventory across multiple sales channels
257
+
258
+ ---
259
+
260
+ #### Event API Templates
261
+ **File**: [`versori/workflows/ingestion/event-api/`](versori/workflows/ingestion/event-api/)
262
+
263
+ **Description**: Product, location, and control entity ingestion via Event API with GraphQL mutations. Supports CSV, JSON, XML, and Parquet formats from S3 and SFTP sources.
264
+
265
+ **Available Templates**:
266
+ - S3 CSV Product Event → [`template-ingestion-s3-csv-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-s3-csv-product-event.md)
267
+ - SFTP CSV Product Event → [`template-ingestion-sftp-csv-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-sftp-csv-product-event.md)
268
+ - S3 JSON Product Event → [`template-ingestion-s3-json-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-s3-json-product-event.md)
269
+ - SFTP JSON Product Event → [`template-ingestion-sftp-json-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-sftp-json-product-event.md)
270
+ - S3 XML Product Event → [`template-ingestion-s3-xml-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-s3-xml-product-event.md)
271
+ - SFTP XML Product Event → [`template-ingestion-sftp-xml-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-sftp-xml-product-event.md)
272
+ - S3 Parquet Product Event → [`template-ingestion-s3-parquet-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-s3-parquet-product-event.md)
273
+ - SFTP Parquet Product Event → [`template-ingestion-sftp-parquet-product-event.md`](versori/workflows/ingestion/event-api/template-ingestion-sftp-parquet-product-event.md)
274
+
275
+ **Complexity**: Medium | **Lines**: ~550-700
276
+
277
+ **Use When**: Ingesting products, locations, or control entities via Event API
278
+
279
+ ---
280
+
281
+ #### GraphQL Mutation Templates
282
+ **File**: [`versori/workflows/ingestion/graphql-mutations/`](versori/workflows/ingestion/graphql-mutations/)
283
+
284
+ **Description**: Direct GraphQL mutation templates for creating/updating locations, prices, and control entities.
285
+
286
+ **Available Templates**:
287
+ - S3 CSV Location GraphQL → [`template-ingestion-s3-csv-location-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-location-graphql.md)
288
+ - SFTP CSV Location GraphQL → [`template-ingestion-sftp-csv-location-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-location-graphql.md)
289
+ - S3 JSON Location GraphQL → [`template-ingestion-s3-json-location-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-json-location-graphql.md)
290
+ - SFTP JSON Location GraphQL → [`template-ingestion-sftp-json-location-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-json-location-graphql.md)
291
+ - S3 XML Location GraphQL → [`template-ingestion-s3-xml-location-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-xml-location-graphql.md)
292
+ - S3 CSV Price GraphQL → [`template-ingestion-s3-csv-price-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-price-graphql.md)
293
+ - S3 CSV Control GraphQL → [`template-ingestion-s3-csv-control-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-control-graphql.md)
294
+ - SFTP CSV Control GraphQL → [`template-ingestion-sftp-csv-control-graphql.md`](versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-control-graphql.md)
295
+
296
+ **Complexity**: Medium | **Lines**: ~600-800
297
+
298
+ **Use When**: Direct GraphQL mutations for entities not supported by Event API
299
+
300
+ ---
301
+
302
+ ### Versori Patterns (3)
303
+
304
+ #### KV State Management
305
+ **File**: [`versori/patterns/kv-state-management.md`](versori/patterns/kv-state-management.md)
306
+
307
+ **Description**: Comprehensive guide on using Versori KV storage for state management, duplicate prevention, checkpoints, and file tracking. Includes 6 complete patterns from simple file tracking to advanced indexed tracking.
308
+
309
+ **Complexity**: Low-Medium | **Lines**: ~400
310
+
311
+ **SDK Methods**:
312
+ - `VersoriKVAdapter(openKv())` - Wrap Versori KV
313
+ - `VersoriFileTracker(kvAdapter)` - Track files
314
+ - `StateService(kvAdapter)` - High-level state operations
315
+ - `stateService.isFileProcessed(key)` - Check if processed
316
+ - `stateService.markFileProcessed(key, metadata)` - Mark complete
317
+ - `stateService.saveCheckpoint(key, data)` - Save checkpoint
318
+ - `stateService.getCheckpoint(key)` - Restore checkpoint
319
+
320
+ **Key Patterns**:
321
+ - Simple file duplicate prevention
322
+ - Distributed locking (prevent concurrent workflows)
323
+ - Checkpoint & resume (long-running workflows)
324
+ - Daily job management (reuse jobs)
325
+ - Error state management (retry logic)
326
+ - Advanced indexed tracking (list files)
327
+
328
+ **Use When**: Preventing duplicate file processing, need checkpoint/resume capabilities, distributed workflow coordination
329
+
330
+ ---
331
+
332
+ #### XML Response Patterns
333
+ **File**: [`versori/patterns/xml-response-patterns.md`](versori/patterns/xml-response-patterns.md)
334
+
335
+ **Description**: CRITICAL guide on returning non-JSON content (XML, HTML, CSV) from Versori webhooks using custom Response objects.
336
+
337
+ **Complexity**: Low-Medium | **Lines**: ~300
338
+
339
+ **SDK Methods**:
340
+ - `webhook('name', { response: { mode, onSuccess, onError } })` - Custom handlers
341
+ - `XMLBuilder(options)` - Build XML responses
342
+ - `builder.build(data)` - Generate XML string
343
+ - `new Response(body, { status, headers })` - Custom response objects
344
+
345
+ **Key Patterns**:
346
+ - Why custom Response objects are needed (JSON encoding problem)
347
+ - onSuccess handler pattern (return Response)
348
+ - onError handler pattern (error responses)
349
+ - Content-Type headers (application/xml, text/html, text/csv)
350
+
351
+ **Use When**: Returning XML responses (SOAP, RSS, custom), HTML status pages, CSV downloads, CRITICAL for SFCC order detail responses
352
+
353
+ ---
354
+
355
+ #### Dual Workflow Connector
356
+ **File**: [`versori/patterns/dual-workflow-connector.md`](versori/patterns/dual-workflow-connector.md)
357
+
358
+ **Description**: Build a complete Versori connector with multiple workflows (ingestion + extraction), shared resolvers, proper index.ts structure, and package.json configuration.
359
+
360
+ **Complexity**: Medium | **Lines**: ~500
361
+
362
+ **Key Patterns**:
363
+ - Multi-workflow index structure (clean exports)
364
+ - Shared resolvers library (domain-organized)
365
+ - Bidirectional data flow (ingestion vs extraction)
366
+ - Package.json configuration (Versori-specific)
367
+ - Testing multi-workflow connectors
368
+
369
+ **Use When**: Building complete bidirectional integration, multiple workflows sharing code, production Versori connector
370
+
371
+ ---
372
+
373
+ ### Business Use Case Examples (4)
374
+
375
+ #### GraphQL → Parquet Extraction
376
+ **File**: [`versori/business-examples/graphql-parquet-extraction.md`](versori/business-examples/graphql-parquet-extraction.md)
377
+
378
+ **Description**: Scheduled/manual Versori workflow that extracts via GraphQL with auto-pagination, transforms with `UniversalMapper`, partitions by date/entity/size, and uploads Parquet parts to S3 with incremental KV state.
379
+
380
+ **Complexity**: Medium | **Lines**: ~600
381
+
382
+ **SDK Methods**:
383
+ - `createClient(ctx)` with Versori connection
384
+ - `client.graphql({ pagination })`
385
+ - `UniversalMapper`
386
+ - `VersoriKVAdapter`, `StateService`
387
+ - `S3DataSource.writeParquetContent`, `S3DataSource.uploadFile`
388
+
389
+ **Key Patterns**:
390
+ - Auto-pagination extraction
391
+ - Data transformation with UniversalMapper
392
+ - Parquet file generation
393
+ - Partitioning strategies (date, entity, size)
394
+ - Incremental state tracking
395
+
396
+ **Use When**: Extracting data from Fluent to data warehouse
397
+
398
+ ---
399
+
400
+ #### Dropship Order Routing
401
+ **File**: [`versori/business-examples/dropship-order-routing.md`](versori/business-examples/dropship-order-routing.md)
402
+
403
+ **Description**: Intelligent supplier selection with fallback logic and complete order orchestration workflow.
404
+
405
+ **Complexity**: High | **Lines**: ~700
406
+
407
+ **Use When**: Complex dropship routing with fallback logic
408
+
409
+ ---
410
+
411
+ #### Inter-Location Transfers
412
+ **File**: [`versori/business-examples/inter-location-transfers.md`](versori/business-examples/inter-location-transfers.md)
413
+
414
+ **Description**: Transfer order creation, fulfillment workflow, and receiving processes for inter-location inventory movement.
415
+
416
+ **Complexity**: Medium-High | **Lines**: ~650
417
+
418
+ **Use When**: Moving inventory between locations
419
+
420
+ ---
421
+
422
+ #### Pre-Order Allocation
423
+ **File**: [`versori/business-examples/pre-order-allocation.md`](versori/business-examples/pre-order-allocation.md)
424
+
425
+ **Description**: Pre-order reservation system, allocation rules engine, and fulfillment on inventory availability.
426
+
427
+ **Complexity**: High | **Lines**: ~750
428
+
429
+ **SDK Methods**:
430
+ - `createClient(ctx)`
431
+ - `VersoriKVAdapter` - Reservation tracking
432
+ - Allocation rules engine
433
+ - Fulfillment triggers
434
+
435
+ **Use When**: Managing pre-orders with allocation logic
436
+
437
+ ---
438
+
439
+ ## 🅱️ Standalone Node.js / Deno Templates
440
+
441
+ ### Ingestion (External → Fluent)
442
+
443
+ #### S3 CSV → Batch API
444
+ **File**: [`standalone/s3-csv-batch-api.md`](standalone/s3-csv-batch-api.md)
445
+
446
+ **Description**: Read CSV inventory files from S3, transform with `UniversalMapper`, and update Fluent via Batch API with chunking and archival.
447
+
448
+ **Complexity**: Medium | **Lines**: ~450-500
449
+
450
+ **SDK Methods**:
451
+ - `createClient({ config: { baseUrl, clientId, clientSecret, retailerId } })`
452
+ - `S3DataSource`, `CSVParserService`, `UniversalMapper`
453
+ - `client.createJob`, `client.sendBatch`
454
+
455
+ **Use When**: Simple S3 CSV ingestion with field mapping
456
+
457
+ ---
458
+
459
+ #### SFTP XML → GraphQL Mutation
460
+ **File**: [`standalone/sftp-xml-graphql.md`](standalone/sftp-xml-graphql.md)
461
+
462
+ **Description**: Standalone Node.js script that reads XML order files from SFTP and creates orders in Fluent Commerce using GraphQL mutations. Includes SFTP connection, XML parsing, and file archival.
463
+
464
+ **Complexity**: Medium | **Lines**: ~600
465
+
466
+ **SDK Methods**:
467
+ - `createClient({ config: { baseUrl, clientId, clientSecret, retailerId } })` - OAuth2
468
+ - `SftpDataSource(config, logger)` - SFTP operations
469
+ - `XMLParserService` - XML parsing
470
+ - `GraphQLMutationMapper(config, logger, { fluentClient, customResolvers })` - XML → GraphQL
471
+ - `mapper.mapWithNodes(xmlData)` - Transform with custom resolvers (from constructor)
472
+ - `mapper.map(xmlData)` - Transform without custom resolvers (built-in SDK resolvers only)
473
+ - `client.graphql({ query, variables })` - Execute mutation
474
+
475
+ **Key Patterns**:
476
+ - SFTP connection & file operations
477
+ - XML parsing & validation
478
+ - GraphQL mutation mapping
479
+ - Custom resolvers for complex logic
480
+ - File management (archive/error folders)
481
+
482
+ **Deployment**: Local, Docker, Cron/Systemd
483
+
484
+ **Use When**: Polling SFTP for XML orders
485
+
486
+ ---
487
+
488
+ #### Webhook Payload Processing
489
+ **File**: [`standalone/webhook-payload-processing.md`](standalone/webhook-payload-processing.md)
490
+
491
+ **Description**: Process stored webhook payloads offline with signature validation, payload parsing, and file-based queue.
492
+
493
+ **Complexity**: Low-Medium | **Lines**: ~250
494
+
495
+ **Use When**: Processing stored webhook payloads offline
496
+
497
+ ---
498
+
499
+ #### ASN Inbound Processing
500
+ **File**: [`standalone/asn-inbound-processing.md`](standalone/asn-inbound-processing.md)
501
+
502
+ **Description**: Process Advanced Shipping Notice (ASN) files with PO matching and inventory updates.
503
+
504
+ **Complexity**: Medium | **Lines**: ~500
505
+
506
+ **Use When**: Processing inbound shipment notices
507
+
508
+ ---
509
+
510
+ ### Extraction (Fluent → External)
511
+
512
+ #### GraphQL Query → Parquet Export
513
+ **File**: [`standalone/graphql-query-export.md`](standalone/graphql-query-export.md)
514
+
515
+ **Description**: Standalone Node.js script that extracts inventory/orders from Fluent Commerce via GraphQL queries and exports to S3 as Parquet files. Includes auto-pagination and incremental extraction.
516
+
517
+ **Complexity**: Medium | **Lines**: ~500
518
+
519
+ **SDK Methods**:
520
+ - `createClient({ config: { baseUrl, clientId, clientSecret, retailerId } })` - OAuth2
521
+ - `client.graphql({ query, variables })` - Execute GraphQL query
522
+ - `detectPaginationVariables(query)` - Auto-detect pagination
523
+ - `hasMorePages(response)` - Check for next page
524
+ - `UniversalMapper(extractionConfig)` - Transform for export
525
+ - `ParquetParserService.write(data, outputPath)` - Generate Parquet
526
+ - `S3DataSource.uploadFile(path, buffer)` - Upload to S3
527
+
528
+ **Deployment**: Local, Scheduled (cron), AWS Lambda
529
+
530
+ **Use When**: Extracting inventory/orders to S3 as Parquet
531
+
532
+ ---
533
+
534
+ #### GraphQL → Partitioned Parquet on S3
535
+ **File**: [`standalone/graphql-to-parquet-partitioned-s3.md`](standalone/graphql-to-parquet-partitioned-s3.md)
536
+
537
+ **Description**: Extract entities via GraphQL with auto-pagination, transform with `UniversalMapper`, and write multiple Parquet files to S3 with date/entity/size partitioning and incremental state.
538
+
539
+ **Complexity**: Medium | **Lines**: ~550
540
+
541
+ **SDK Methods**:
542
+ - `createClient`, `client.graphql({ pagination })`
543
+ - `UniversalMapper`
544
+ - `S3DataSource.writeParquetContent`, `S3DataSource.uploadFile`
545
+
546
+ **Key Patterns**:
547
+ - Auto-pagination extraction
548
+ - Data transformation with UniversalMapper
549
+ - Parquet file generation
550
+ - Partitioning strategies (date, entity, size)
551
+ - Incremental state tracking
552
+
553
+ **Use When**: Large-scale extraction with date/entity partitioning
554
+
555
+ ---
556
+
557
+ ### Complex Workflows
558
+
559
+ #### Multi-Source Aggregation
560
+ **File**: [`standalone/multi-source-aggregation.md`](standalone/multi-source-aggregation.md)
561
+
562
+ **Description**: Standalone Node.js script that aggregates inventory from multiple sources (SFTP CSV + S3 JSON), reconciles with Fluent Commerce current state, and updates differences. Includes comprehensive reporting.
563
+
564
+ **Complexity**: High | **Lines**: ~800
565
+
566
+ **SDK Methods**:
567
+ - `createClient({ config: { baseUrl, clientId, clientSecret, retailerId } })` - OAuth2
568
+ - `SftpDataSource(...)` - SFTP operations
569
+ - `S3DataSource(...)` - S3 operations
570
+ - `CSVParserService` - Parse SFTP CSV
571
+ - `client.graphql({ query, variables })` - Query current inventory
572
+ - `UniversalMapper(...)` - Transform aggregated data
573
+
574
+ **Deployment**: Scheduled (hourly), Manual, Containerized
575
+
576
+ **Use When**: Combining inventory from multiple sources
577
+
578
+ ---
579
+
580
+ #### Multi-Channel Inventory Sync
581
+ **File**: [`standalone/multi-channel-inventory-sync.md`](standalone/multi-channel-inventory-sync.md)
582
+
583
+ **Description**: Node.js script that aggregates Available-to-Promise (ATP) inventory from Fluent Commerce and pushes real-time updates to multiple marketplaces (Amazon, eBay, Walmart).
584
+
585
+ **Complexity**: High | **Lines**: ~950
586
+
587
+ **SDK Methods**:
588
+ - `createClient({ config: { baseUrl, clientId, clientSecret, retailerId } })` - OAuth2 client
589
+ - `client.graphql({ query, variables, pagination })` - Query with auto-pagination
590
+ - `UniversalMapper(mappingConfig)` - Transform Fluent data to marketplace formats
591
+ - `createConsoleLogger()` - Simple console logger
592
+ - `toStructuredLogger(logger, context)` - Add context to logs
593
+ - `generateCorrelationId()` - Generate unique correlation IDs
594
+ - State tracking for incremental updates
595
+
596
+ **Key Patterns**:
597
+ - GraphQL pagination → external marketplace APIs
598
+ - ATP (Available-to-Promise) aggregation across multiple locations
599
+ - Marketplace-specific buffer stock calculations
600
+ - Parallel marketplace updates with rate limiting
601
+ - Per-marketplace error handling and retry logic
602
+ - SLA tracking (15-minute sync requirement)
603
+
604
+ **Use When**: Standalone multi-channel distribution (different from Versori template - this pushes TO marketplaces)
605
+
606
+ ---
607
+
608
+ ## 🅲️ Pattern Guides (Reusable Concepts)
609
+
610
+ ### Universal Field Mapping
611
+ **File**: [`patterns/field-mapping-universal.md`](patterns/field-mapping-universal.md)
612
+
613
+ **Description**: Focused guide on UniversalMapper for field transformations. Covers basic mapping, SDK resolvers, custom resolvers, nested fields, arrays, and error handling.
614
+
615
+ **Lines**: ~150-200
616
+
617
+ **SDK Methods**:
618
+ - `UniversalMapper(config)` - Create mapper
619
+ - `mapper.map(sourceData)` - Transform record
620
+ - SDK Resolvers: `sdk.*` prefix (15+ built-in)
621
+ - Custom resolvers: User-defined functions
622
+
623
+ **Patterns Covered**:
624
+ - Basic field mapping
625
+ - SDK resolver usage (string, number, date, type, utility)
626
+ - Custom resolver patterns (simple, helper-based, context-aware)
627
+ - Nested field mapping (dot notation)
628
+ - Array transformations
629
+ - Error handling in mapping
630
+
631
+ ---
632
+
633
+ ### Custom Resolvers
634
+ **File**: [`patterns/custom-resolvers.md`](patterns/custom-resolvers.md)
635
+
636
+ **Description**: Focused guide on writing custom resolvers. Covers 4-parameter signature, async resolvers, helper functions, and best practices.
637
+
638
+ **Lines**: ~100-150
639
+
640
+ **Resolver Signature**:
641
+ ```typescript
642
+ (value, sourceData, helpers, config) => any | Promise<any>
643
+ ```
644
+
645
+ **Helper Functions**:
646
+ - Path access (get, set)
647
+ - Type coercion (parseFloatSafe, parseIntSafe, parseBool)
648
+ - Date operations (formatDate, parseDate, addDays)
649
+ - Array operations (ensureArray, coalesce, groupBy)
650
+ - String operations (toCamelCase, toSnakeCase, template)
651
+
652
+ ---
653
+
654
+ ### Error Handling & Retry Strategies
655
+ **File**: [`patterns/error-handling-retry.md`](patterns/error-handling-retry.md)
656
+
657
+ **Description**: Focused guide on error handling and retry strategies. Covers try/catch, exponential backoff, circuit breaker, batch error isolation, and graceful degradation.
658
+
659
+ **Lines**: ~100-150
660
+
661
+ **SDK Error Classes**:
662
+ - `ConfigurationError` - Config validation
663
+ - `AggregateIngestionError` - Multiple failures
664
+ - `IngestionErrorFactory` - Create structured errors
665
+
666
+ **Patterns Covered**:
667
+ - Basic try/catch with logging
668
+ - Exponential backoff retry
669
+ - Circuit breaker pattern
670
+ - Batch error isolation
671
+ - Graceful degradation
672
+
673
+ ---
674
+
675
+ ### State Management & Duplicate Prevention
676
+ **File**: [`patterns/state-duplicate-prevention.md`](patterns/state-duplicate-prevention.md)
677
+
678
+ **Description**: Focused guide on state management and duplicate prevention. Covers file tracking, checkpoints, distributed locking, and idempotency.
679
+
680
+ **Lines**: ~100-150
681
+
682
+ **SDK Methods**:
683
+ - `StateService(kvAdapter)` - State management
684
+ - `VersoriKVAdapter(openKv())` - Versori KV wrapper
685
+ - `VersoriFileTracker` - File tracking
686
+
687
+ ---
688
+
689
+ ### Pagination & Streaming
690
+ **File**: [`patterns/pagination-streaming.md`](patterns/pagination-streaming.md)
691
+
692
+ **Description**: Focused guide on handling large datasets with pagination and streaming. Covers GraphQL auto-pagination, CSV/Parquet streaming, and memory optimization.
693
+
694
+ **Lines**: ~150-200
695
+
696
+ **SDK Methods**:
697
+ - `detectPaginationVariables(query)` - Auto-detect
698
+ - `hasMorePages(response)` - Check for next page
699
+ - `extractCursor(response)` - Get cursor
700
+ - `buildPaginationVariables(variables, cursor)` - Build next query
701
+ - CSV/Parquet streaming APIs
702
+
703
+ ---
704
+
705
+ ### CSV Schema Validation + Rejection Report
706
+ **File**: [`patterns/csv-schema-validation-and-rejection-report.md`](patterns/csv-schema-validation-and-rejection-report.md)
707
+
708
+ **Description**: Validate CSV headers and rows; generate a rejection report CSV and upload to S3. Fits into both S3 and SFTP ingestion flows before mapping.
709
+
710
+ **Complexity**: Low-Medium | **Lines**: ~220
711
+
712
+ ---
713
+
714
+ ### Large File Splitting
715
+ **File**: [`patterns/large-file-splitting.md`](patterns/large-file-splitting.md)
716
+
717
+ **Description**: Chunk large files for memory-efficient processing.
718
+
719
+ **Use When**: Handling files too large for memory
720
+
721
+ ---
722
+
723
+ ### Master Data ETL
724
+ **File**: [`patterns/master-data-etl.md`](patterns/master-data-etl.md)
725
+
726
+ **Description**: Generic patterns for products, locations, networks ingestion.
727
+
728
+ **Use When**: Master data ingestion best practices
729
+
730
+ ---
731
+
732
+ ## 🔍 Find Templates By Use Case
733
+
734
+ ### I want to...
735
+
736
+ #### Import Inventory
737
+ - **From S3 CSV** → [S3 CSV Inventory Batch](versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md) (Versori) or [S3 CSV Batch API](standalone/s3-csv-batch-api.md) (Standalone)
738
+ - **From SFTP CSV** → [SFTP CSV Ingestion](versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md)
739
+ - **From Multiple Sources** → [Multi-Source Aggregation](standalone/multi-source-aggregation.md)
740
+
741
+ #### Import Orders
742
+ - **From XML Webhooks** → [XML Order Ingestion](versori/webhooks/template-webhook-xml-order-ingestion.md)
743
+ - **From SFTP XML** → [SFTP XML GraphQL](standalone/sftp-xml-graphql.md)
744
+ - **Generic XML** → [Generic XML Order](versori/webhooks/template-webhook-generic-xml-order.md)
745
+
746
+ #### Import Products/Locations
747
+ - **Event API** → [Event API Templates](versori/workflows/ingestion/event-api/)
748
+ - **GraphQL Mutations** → [GraphQL Mutation Templates](versori/workflows/ingestion/graphql-mutations/)
749
+
750
+ #### Export Data
751
+ - **To Parquet** → [GraphQL Query Export](standalone/graphql-query-export.md)
752
+ - **To Partitioned Parquet** → [GraphQL to Parquet Partitioned S3](standalone/graphql-to-parquet-partitioned-s3.md)
753
+ - **With Versori** → [GraphQL Parquet Extraction](versori/business-examples/graphql-parquet-extraction.md)
754
+
755
+ #### Process Returns
756
+ - **Complete RMA Flow** → [RMA Returns Comprehensive](versori/webhooks/template-webhook-rma-returns-comprehensive.md)
757
+
758
+ #### Manage Pricing
759
+ - **Bulk Updates** → [S3 CSV Price GraphQL](versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-price-graphql.md)
760
+
761
+ #### Advanced Workflows
762
+ - **Dropship Routing** → [Dropship Routing](versori/webhooks/template-webhook-dropship-routing.md) or [Business Example](versori/business-examples/dropship-order-routing.md)
763
+ - **Flash Sales** → [Flash Sale Reserve](versori/webhooks/template-webhook-flash-sale-reserve.md)
764
+ - **Multi-Channel Sync** → [Multi-Channel Sync](versori/workflows/ingestion/batch-api/template-ingestion-multi-channel-inventory-sync.md) (Versori) or [Standalone](standalone/multi-channel-inventory-sync.md)
765
+ - **Inter-Location Transfers** → [Inter-Location Transfers](versori/business-examples/inter-location-transfers.md)
766
+ - **Pre-Orders** → [Pre-Order Allocation](versori/business-examples/pre-order-allocation.md)
767
+
768
+ ---
769
+
770
+ ## 💡 Quick Recommendations
771
+
772
+ ### For Beginners
773
+ Start with these guides (easiest to hardest):
774
+
775
+ 1. **[Field Mapping Universal](patterns/field-mapping-universal.md)** - Learn core mapping concepts
776
+ 2. **[S3 CSV Batch API](standalone/s3-csv-batch-api.md)** - Simple standalone ingestion
777
+ 3. **[CSV Inventory Sync](versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md)** - Versori scheduled workflow
778
+ 4. **[XML Order Ingestion](versori/webhooks/template-webhook-xml-order-ingestion.md)** - Webhook with advanced features
779
+
780
+ ### For Production Deployments
781
+ These guides are production-tested:
782
+
783
+ - **Inventory Ingestion**: [SFTP CSV Ingestion](versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md)
784
+ - **Order Processing**: [XML Order Ingestion](versori/webhooks/template-webhook-xml-order-ingestion.md)
785
+ - **Data Extraction**: [GraphQL to Parquet Partitioned S3](standalone/graphql-to-parquet-partitioned-s3.md)
786
+ - **State Management**: [KV State Management](versori/patterns/kv-state-management.md)
787
+
788
+ ### For Complex Integrations
789
+ These guides show advanced patterns:
790
+
791
+ - [Multi-Source Aggregation](standalone/multi-source-aggregation.md)
792
+ - [Dropship Order Routing](versori/business-examples/dropship-order-routing.md)
793
+ - [Flash Sale Reserve](versori/webhooks/template-webhook-flash-sale-reserve.md)
794
+ - [Pre-Order Allocation](versori/business-examples/pre-order-allocation.md)
795
+
796
+ ---
797
+
798
+ ## 📖 How to Use These Templates
799
+
800
+ ### For Developers
801
+
802
+ 1. **Pick a template** - Use the decision tree above or browse by use case
803
+ 2. **Copy the code** - All examples are production-ready
804
+ 3. **Customize** environment variables and configurations
805
+ 4. **Test locally** with provided sample data
806
+ 5. **Deploy** using deployment options in each guide
807
+
808
+ **Need Help?** Check our comprehensive [**FAQ**](faq.md) for troubleshooting.
809
+
810
+ ### For AI / LLM Prompts
811
+
812
+ These templates are optimized for AI consumption:
813
+
814
+ ```
815
+ Build a Versori connector that receives SFCC XML orders via HTTP webhook
816
+ and creates orders in Fluent Commerce.
817
+
818
+ Context: Use patterns from docs/01-TEMPLATES/versori/webhooks/template-webhook-xml-order-ingestion.md
819
+ ```
820
+
821
+ AI gets **focused context** without API reference overload.
822
+
823
+ ---
824
+
825
+ ## ✅ What's Included in Each Template
826
+
827
+ Every template provides:
828
+
829
+ - ✅ **Complete working code** (400-800 lines)
830
+ - ✅ **Real SDK methods** with proper usage
831
+ - ✅ **Production patterns** from actual connectors
832
+ - ✅ **Environment setup** and configuration
833
+ - ✅ **Testing instructions** with sample data
834
+ - ✅ **Deployment options** (Docker, Lambda, cron, etc.)
835
+ - ✅ **Common issues** with solutions
836
+ - ✅ **Related guides** for deeper dives
837
+
838
+ ---
839
+
840
+ ## 🚀 Quick Start Examples
841
+
842
+ ### Versori HTTP Webhook
843
+
844
+ ```typescript
845
+ import { createClient, GraphQLMutationMapper } from '@fluentcommerce/fc-connect-sdk';
846
+
847
+ export default async function processOrder(ctx) {
848
+ const client = await createClient(ctx); // Auto-detects Versori context
849
+ const mapper = new GraphQLMutationMapper(mappingConfig, ctx.log, { fluentClient: client });
850
+ const result = await mapper.mapWithNodes(ctx.body, customResolvers);
851
+
852
+ // Check success (errors are returned, not thrown)
853
+ if (!result.success) {
854
+ throw new Error(`Mapping failed: ${result.errors?.join(', ')}`);
855
+ }
856
+
857
+ // Execute mutation (query is auto-generated in result)
858
+ return await client.graphql({
859
+ query: result.query,
860
+ variables: result.variables // ✅ Use variables (wrapped if fields pattern)
861
+ });
862
+ }
863
+ ```
864
+
865
+ ### Standalone Node.js Script
866
+
867
+ ```typescript
868
+ import { createClient, S3DataSource, UniversalMapper } from '@fluentcommerce/fc-connect-sdk';
869
+
870
+ const client = await createClient({
871
+ config: {
872
+ baseUrl: process.env.FLUENT_BASE_URL!,
873
+ clientId: process.env.FLUENT_CLIENT_ID!,
874
+ clientSecret: process.env.FLUENT_CLIENT_SECRET!,
875
+ retailerId: process.env.FLUENT_RETAILER_ID!,
876
+ },
877
+ });
878
+
879
+ const s3Source = new S3DataSource(config, logger);
880
+ const mapper = new UniversalMapper(mappingConfig);
881
+ const files = await s3Source.listFiles();
882
+ // ... process files
883
+ ```
884
+
885
+ ---
886
+
887
+ ## 📚 Additional Resources
888
+
889
+ - **[FAQ - Troubleshooting](faq.md)** - Consolidated solutions to common issues
890
+ - **[API Reference](../02-CORE-GUIDES/api-reference/api-reference-readme.md)** - Complete SDK method reference
891
+ - **[SDK Philosophy](../00-START-HERE/sdk-philosophy.md)** - Design principles
892
+ - **[Complete Documentation](../readme.md)** - All guides and references
893
+
894
+ ---
895
+
896
+ ## 🎓 Learning Path
897
+
898
+ **New to SDK?**
899
+
900
+ 1. Start with [SDK Philosophy](../00-START-HERE/sdk-philosophy.md)
901
+ 2. Read [Getting Started](../00-START-HERE/getting-started.md)
902
+ 3. Pick a **Standalone** template (simpler, no Versori)
903
+ 4. Try a **Versori** template if deploying to Versori
904
+ 5. Use **Pattern** guides for specific concepts
905
+
906
+ **Building Connectors?**
907
+
908
+ 1. Pick matching use case template
909
+ 2. Review **Pattern** guides for concepts
910
+ 3. Check [API Reference](../02-CORE-GUIDES/api-reference/api-reference-readme.md) for details
911
+ 4. Deploy and monitor
912
+
913
+ ---
914
+
915
+ ## 📊 Template Statistics
916
+
917
+ - **38+ Total Templates**
918
+ - 20 Versori Platform templates
919
+ - 7 Webhook-triggered workflows
920
+ - 6 Scheduled workflows (Batch API)
921
+ - 8 Event API templates
922
+ - 9 GraphQL mutation templates
923
+ - 3 Versori patterns
924
+ - 4 Business use case examples
925
+ - 9 Standalone Node.js/Deno templates
926
+ - 9 Reusable Pattern guides
927
+ - **~15,000+ lines** of production-ready code
928
+ - **100% tested** patterns from real connectors
929
+ - **Organized by trigger type** for easy navigation
930
+
931
+ ---
932
+
933
+ ## 🆘 Still Can't Decide?
934
+
935
+ ### Answer These Questions:
936
+
937
+ 1. **Runtime**: Versori or Standalone?
938
+ 2. **Direction**: Ingestion (IN) or Extraction (OUT)?
939
+ 3. **Trigger**: Webhook, Schedule, or Manual?
940
+ 4. **Format**: CSV, XML, JSON, or Parquet?
941
+ 5. **Complexity**: Simple, Medium, or High?
942
+
943
+ **Then use the decision tree above to find your template!**
944
+
945
+ ---
946
+
947
+ ## 🆘 Need Help?
948
+
949
+ - **Issues**: [GitHub Issues](https://github.com/fluentcommerce/fc-connect-sdk/issues)
950
+ - **Documentation**: [Complete Docs](../readme.md)
951
+ - **API Reference**: [API Reference](../02-CORE-GUIDES/api-reference/api-reference-readme.md)
952
+ - **Troubleshooting**: [FAQ](faq.md)
953
+ - **Examples**: Check individual template files
954
+
955
+ ---
956
+
957
+ *Last Updated: 2025-01-27*