@fluentcommerce/fc-connect-sdk 0.1.54 → 0.1.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/clients/fluent-client.js +13 -6
  3. package/dist/cjs/utils/pagination-helpers.js +38 -2
  4. package/dist/cjs/versori/fluent-versori-client.js +11 -5
  5. package/dist/esm/clients/fluent-client.js +13 -6
  6. package/dist/esm/utils/pagination-helpers.js +38 -2
  7. package/dist/esm/versori/fluent-versori-client.js +11 -5
  8. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  9. package/dist/tsconfig.tsbuildinfo +1 -1
  10. package/dist/tsconfig.types.tsbuildinfo +1 -1
  11. package/docs/00-START-HERE/EXPORT-VALIDATION.md +158 -158
  12. package/docs/00-START-HERE/cli-analyze-source-structure-guide.md +655 -655
  13. package/docs/00-START-HERE/cli-documentation-index.md +202 -202
  14. package/docs/00-START-HERE/cli-quick-reference.md +252 -252
  15. package/docs/00-START-HERE/decision-tree.md +552 -552
  16. package/docs/00-START-HERE/getting-started.md +1070 -1070
  17. package/docs/00-START-HERE/mapper-quick-decision-guide.md +235 -235
  18. package/docs/00-START-HERE/readme.md +237 -237
  19. package/docs/00-START-HERE/retailerid-configuration.md +404 -404
  20. package/docs/00-START-HERE/sdk-philosophy.md +794 -794
  21. package/docs/00-START-HERE/troubleshooting-quick-reference.md +1086 -1086
  22. package/docs/01-TEMPLATES/faq.md +686 -686
  23. package/docs/01-TEMPLATES/patterns/pattern-templates-guide.md +68 -68
  24. package/docs/01-TEMPLATES/patterns/patterns-csv-schema-validation-and-rejection-report.md +233 -233
  25. package/docs/01-TEMPLATES/patterns/patterns-custom-resolvers.md +407 -407
  26. package/docs/01-TEMPLATES/patterns/patterns-error-handling-retry.md +511 -511
  27. package/docs/01-TEMPLATES/patterns/patterns-field-mapping-universal.md +701 -701
  28. package/docs/01-TEMPLATES/patterns/patterns-large-file-splitting.md +1430 -1430
  29. package/docs/01-TEMPLATES/patterns/patterns-master-data-etl.md +2399 -2399
  30. package/docs/01-TEMPLATES/patterns/patterns-pagination-streaming.md +447 -447
  31. package/docs/01-TEMPLATES/patterns/patterns-state-duplicate-prevention.md +385 -385
  32. package/docs/01-TEMPLATES/readme.md +957 -957
  33. package/docs/01-TEMPLATES/standalone/standalone-asn-inbound-processing.md +1209 -1209
  34. package/docs/01-TEMPLATES/standalone/standalone-graphql-query-export.md +1140 -1140
  35. package/docs/01-TEMPLATES/standalone/standalone-graphql-to-parquet-partitioned-s3.md +432 -432
  36. package/docs/01-TEMPLATES/standalone/standalone-multi-channel-inventory-sync.md +1185 -1185
  37. package/docs/01-TEMPLATES/standalone/standalone-multi-source-aggregation.md +1462 -1462
  38. package/docs/01-TEMPLATES/standalone/standalone-s3-csv-batch-api.md +1390 -1390
  39. package/docs/01-TEMPLATES/standalone/standalone-s3-csv-inventory-to-batch.md +330 -330
  40. package/docs/01-TEMPLATES/standalone/standalone-scripts-guide.md +87 -87
  41. package/docs/01-TEMPLATES/standalone/standalone-sftp-xml-graphql.md +1444 -1444
  42. package/docs/01-TEMPLATES/standalone/standalone-webhook-payload-processing.md +688 -688
  43. package/docs/01-TEMPLATES/versori/business-examples/business-examples-dropship-order-routing.md +193 -193
  44. package/docs/01-TEMPLATES/versori/business-examples/business-examples-graphql-parquet-extraction.md +518 -518
  45. package/docs/01-TEMPLATES/versori/business-examples/business-examples-inter-location-transfers.md +2162 -2162
  46. package/docs/01-TEMPLATES/versori/business-examples/business-examples-pre-order-allocation.md +2226 -2226
  47. package/docs/01-TEMPLATES/versori/business-examples/business-scenarios-guide.md +87 -87
  48. package/docs/01-TEMPLATES/versori/patterns/versori-patterns-connection-validation-pattern.md +656 -656
  49. package/docs/01-TEMPLATES/versori/patterns/versori-patterns-dual-workflow-connector.md +835 -835
  50. package/docs/01-TEMPLATES/versori/patterns/versori-patterns-guide.md +108 -108
  51. package/docs/01-TEMPLATES/versori/patterns/versori-patterns-kv-state-management.md +1533 -1533
  52. package/docs/01-TEMPLATES/versori/patterns/versori-patterns-xml-response-patterns.md +1160 -1160
  53. package/docs/01-TEMPLATES/versori/versori-platform-guide.md +201 -201
  54. package/docs/01-TEMPLATES/versori/webhooks/template-webhook-asn-purchase-order.md +1906 -1906
  55. package/docs/01-TEMPLATES/versori/webhooks/template-webhook-dropship-routing.md +1074 -1074
  56. package/docs/01-TEMPLATES/versori/webhooks/template-webhook-flash-sale-reserve.md +1395 -1395
  57. package/docs/01-TEMPLATES/versori/webhooks/template-webhook-generic-xml-order.md +888 -888
  58. package/docs/01-TEMPLATES/versori/webhooks/template-webhook-payment-gateway-integration.md +2478 -2478
  59. package/docs/01-TEMPLATES/versori/webhooks/template-webhook-rma-returns-comprehensive.md +2240 -2240
  60. package/docs/01-TEMPLATES/versori/webhooks/template-webhook-xml-order-ingestion.md +2029 -2029
  61. package/docs/01-TEMPLATES/versori/webhooks/webhook-templates-guide.md +140 -140
  62. package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/inventory-mapping.json +20 -20
  63. package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/products_2025-01-22.csv +11 -11
  64. package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/sample-data-guide.md +34 -34
  65. package/docs/01-TEMPLATES/versori/workflows/_examples/workflow-examples-guide.md +36 -36
  66. package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-modes-guide.md +1038 -1038
  67. package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-workflows-guide.md +138 -138
  68. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/graphql-extraction-guide.md +63 -63
  69. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-csv.md +2062 -2062
  70. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-xml.md +2294 -2294
  71. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-s3-csv.md +2461 -2461
  72. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-sftp-xml.md +2529 -2529
  73. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-csv.md +2464 -2464
  74. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-json.md +1959 -1959
  75. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-s3-csv.md +1953 -1953
  76. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-sftp-xml.md +2541 -2541
  77. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-s3-json.md +2384 -2384
  78. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-sftp-xml.md +2445 -2445
  79. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-csv.md +2355 -2355
  80. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-json.md +2042 -2042
  81. package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-sftp-xml.md +2726 -2726
  82. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/batch-api-guide.md +206 -206
  83. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-cycle-count-reconciliation.md +2030 -2030
  84. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-multi-channel-inventory-sync.md +1882 -1882
  85. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md +2827 -2827
  86. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-json-inventory-batch.md +1952 -1952
  87. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-xml-inventory-batch.md +3289 -3289
  88. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md +3064 -3064
  89. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-json-inventory-batch.md +3238 -3238
  90. package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-xml-inventory-batch.md +2977 -2977
  91. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/event-api-guide.md +321 -321
  92. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-json-order-cancel-event.md +959 -959
  93. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-xml-order-cancel-event.md +1170 -1170
  94. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-csv-product-event.md +2312 -2312
  95. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-json-product-event.md +2999 -2999
  96. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-parquet-product-event.md +2836 -2836
  97. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-xml-product-event.md +2395 -2395
  98. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-csv-product-event.md +2295 -2295
  99. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-json-product-event.md +2602 -2602
  100. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-parquet-product-event.md +2589 -2589
  101. package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-xml-product-event.md +3578 -3578
  102. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/graphql-mutations-guide.md +93 -93
  103. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-json-order-update-graphql.md +1260 -1260
  104. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-xml-order-update-graphql.md +1472 -1472
  105. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-control-graphql.md +2417 -2417
  106. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-location-graphql.md +2811 -2811
  107. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-price-graphql.md +2619 -2619
  108. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-json-location-graphql.md +2807 -2807
  109. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-xml-location-graphql.md +2373 -2373
  110. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-control-graphql.md +2740 -2740
  111. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-location-graphql.md +2760 -2760
  112. package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-json-location-graphql.md +1710 -1710
  113. package/docs/01-TEMPLATES/versori/workflows/ingestion/ingestion-workflows-guide.md +136 -136
  114. package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/rubix-webhooks-guide.md +520 -520
  115. package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-inline.md +1418 -1418
  116. package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-universal-mapper.md +1785 -1785
  117. package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-order-attribute-update.md +824 -824
  118. package/docs/01-TEMPLATES/versori/workflows/workflows-overview-guide.md +646 -646
  119. package/docs/02-CORE-GUIDES/advanced-services/advanced-services-batch-archival.md +724 -724
  120. package/docs/02-CORE-GUIDES/advanced-services/advanced-services-job-tracker.md +627 -627
  121. package/docs/02-CORE-GUIDES/advanced-services/advanced-services-partial-batch-recovery.md +561 -561
  122. package/docs/02-CORE-GUIDES/advanced-services/advanced-services-quick-reference.md +367 -367
  123. package/docs/02-CORE-GUIDES/advanced-services/advanced-services-readme.md +407 -407
  124. package/docs/02-CORE-GUIDES/advanced-services/readme.md +49 -49
  125. package/docs/02-CORE-GUIDES/api-reference/api-reference-quick-reference.md +548 -548
  126. package/docs/02-CORE-GUIDES/api-reference/event-api-input-output-reference.md +702 -1171
  127. package/docs/02-CORE-GUIDES/api-reference/examples/client-initialization.ts +286 -286
  128. package/docs/02-CORE-GUIDES/api-reference/graphql-error-classification.md +337 -337
  129. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-01-client-api.md +399 -520
  130. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-03-authentication.md +199 -199
  131. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-04-graphql-mapping.md +925 -925
  132. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-05-services.md +1198 -1198
  133. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-06-data-sources.md +1083 -1083
  134. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-07-parsers.md +1097 -1097
  135. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-pagination.md +513 -513
  136. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-types.md +545 -597
  137. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-error-handling.md +527 -527
  138. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-webhook-validation.md +514 -514
  139. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-extraction.md +557 -557
  140. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-utilities.md +412 -412
  141. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-cli-tools.md +423 -423
  142. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-error-handling.md +716 -716
  143. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-analyze-source-structure.md +518 -518
  144. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-partial-responses.md +212 -212
  145. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-testing.md +300 -300
  146. package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-13-resolver-builder.md +322 -322
  147. package/docs/02-CORE-GUIDES/api-reference/readme.md +279 -279
  148. package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-quick-reference.md +351 -351
  149. package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-readme.md +277 -277
  150. package/docs/02-CORE-GUIDES/auto-pagination/examples/auto-pagination-readme.md +178 -178
  151. package/docs/02-CORE-GUIDES/auto-pagination/examples/common-patterns.ts +351 -351
  152. package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-products.ts +384 -384
  153. package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-virtual-positions.ts +308 -308
  154. package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-01-foundations.md +470 -470
  155. package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-02-quick-start.md +713 -713
  156. package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-03-configuration.md +754 -754
  157. package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-04-advanced-patterns.md +732 -732
  158. package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-05-sdk-integration.md +847 -847
  159. package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-06-troubleshooting.md +359 -359
  160. package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-07-api-reference.md +462 -462
  161. package/docs/02-CORE-GUIDES/auto-pagination/readme.md +54 -54
  162. package/docs/02-CORE-GUIDES/data-sources/data-sources-file-operations-error-handling.md +1487 -1487
  163. package/docs/02-CORE-GUIDES/data-sources/data-sources-quick-reference.md +836 -836
  164. package/docs/02-CORE-GUIDES/data-sources/data-sources-readme.md +276 -276
  165. package/docs/02-CORE-GUIDES/data-sources/data-sources-sftp-credential-access-security.md +553 -553
  166. package/docs/02-CORE-GUIDES/data-sources/examples/common-patterns.ts +409 -409
  167. package/docs/02-CORE-GUIDES/data-sources/examples/data-sources-readme.md +178 -178
  168. package/docs/02-CORE-GUIDES/data-sources/examples/s3-operations.ts +308 -308
  169. package/docs/02-CORE-GUIDES/data-sources/examples/sftp-operations.ts +371 -371
  170. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-01-foundations.md +735 -735
  171. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-02-s3-operations.md +1302 -1302
  172. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-03-sftp-operations.md +1379 -1379
  173. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-04-file-patterns.md +941 -941
  174. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-05-advanced-topics.md +813 -813
  175. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-06-integration-patterns.md +486 -486
  176. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-07-troubleshooting.md +387 -387
  177. package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-08-api-reference.md +417 -417
  178. package/docs/02-CORE-GUIDES/data-sources/readme.md +77 -77
  179. package/docs/02-CORE-GUIDES/error-handling-guide.md +936 -936
  180. package/docs/02-CORE-GUIDES/extraction/examples/02-core-guides-extraction-readme.md +116 -116
  181. package/docs/02-CORE-GUIDES/extraction/examples/common-patterns.ts +428 -428
  182. package/docs/02-CORE-GUIDES/extraction/examples/extract-inventory-basic.ts +187 -187
  183. package/docs/02-CORE-GUIDES/extraction/extraction-quick-reference.md +596 -596
  184. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-01-foundations.md +514 -514
  185. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-02-basic-extraction.md +823 -823
  186. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-03-parquet-processing.md +507 -507
  187. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-04-data-enrichment.md +546 -546
  188. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-05-transformation.md +494 -494
  189. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-export-formats.md +458 -458
  190. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-performance.md +138 -138
  191. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-api-reference.md +148 -148
  192. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-optimization.md +692 -692
  193. package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-08-extraction-orchestrator.md +1008 -1008
  194. package/docs/02-CORE-GUIDES/extraction/readme.md +151 -151
  195. package/docs/02-CORE-GUIDES/ingestion/examples/_simple-kv-store.ts +40 -40
  196. package/docs/02-CORE-GUIDES/ingestion/examples/error-recovery.ts +728 -728
  197. package/docs/02-CORE-GUIDES/ingestion/examples/event-driven.ts +501 -501
  198. package/docs/02-CORE-GUIDES/ingestion/examples/local-file-ingestion.ts +88 -88
  199. package/docs/02-CORE-GUIDES/ingestion/examples/parquet-ingestion.ts +117 -117
  200. package/docs/02-CORE-GUIDES/ingestion/examples/performance-optimized.ts +647 -647
  201. package/docs/02-CORE-GUIDES/ingestion/examples/s3-csv-ingestion.ts +169 -169
  202. package/docs/02-CORE-GUIDES/ingestion/examples/sftp-csv-ingestion.ts +134 -134
  203. package/docs/02-CORE-GUIDES/ingestion/ingestion-quick-reference.md +546 -546
  204. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-01-introduction.md +626 -626
  205. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-02-quick-start.md +658 -658
  206. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-03-data-sources.md +1052 -1052
  207. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-04-field-mapping.md +763 -763
  208. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-05-advanced-parsers.md +676 -676
  209. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-06-batch-api.md +1295 -1295
  210. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-api-reference.md +138 -138
  211. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-state-management.md +1037 -1037
  212. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-08-performance-optimization.md +1349 -1349
  213. package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-09-best-practices.md +1893 -1893
  214. package/docs/02-CORE-GUIDES/ingestion/readme.md +160 -160
  215. package/docs/02-CORE-GUIDES/logging-guide.md +585 -585
  216. package/docs/02-CORE-GUIDES/mapping/error-handling-patterns.md +401 -401
  217. package/docs/02-CORE-GUIDES/mapping/examples/02-core-guides-mapping-readme.md +128 -128
  218. package/docs/02-CORE-GUIDES/mapping/examples/common-patterns.ts +273 -273
  219. package/docs/02-CORE-GUIDES/mapping/examples/csv-location-ingestion.json +36 -36
  220. package/docs/02-CORE-GUIDES/mapping/examples/csv-mapping.ts +242 -242
  221. package/docs/02-CORE-GUIDES/mapping/examples/graphql-to-parquet-extraction.json +36 -36
  222. package/docs/02-CORE-GUIDES/mapping/examples/json-mapping.ts +213 -213
  223. package/docs/02-CORE-GUIDES/mapping/examples/json-product-to-mutation.json +48 -48
  224. package/docs/02-CORE-GUIDES/mapping/examples/xml-mapping.ts +291 -291
  225. package/docs/02-CORE-GUIDES/mapping/examples/xml-order-to-mutation.json +45 -45
  226. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-quick-reference.md +463 -463
  227. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-readme.md +227 -227
  228. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-01-introduction.md +222 -222
  229. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-02-quick-start.md +351 -351
  230. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-03-schema-validation.md +569 -569
  231. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-04-mapping-patterns.md +471 -471
  232. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-05-configuration-reference.md +611 -611
  233. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-advanced-xpath.md +148 -148
  234. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-path-syntax.md +464 -464
  235. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-api-reference.md +94 -94
  236. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-array-handling.md +307 -307
  237. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-08-custom-resolvers.md +544 -544
  238. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-09-advanced-patterns.md +427 -427
  239. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-10-hooks-and-variables.md +336 -336
  240. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-11-error-handling.md +488 -488
  241. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-12-arguments-vs-nodes.md +383 -383
  242. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-13-best-practices.md +477 -477
  243. package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/readme.md +62 -62
  244. package/docs/02-CORE-GUIDES/mapping/mapping-format-decision-tree.md +480 -480
  245. package/docs/02-CORE-GUIDES/mapping/mapping-graphql-alias-batching-guide.md +820 -820
  246. package/docs/02-CORE-GUIDES/mapping/mapping-javascript-objects.md +2369 -2369
  247. package/docs/02-CORE-GUIDES/mapping/mapping-mapper-comparison-guide.md +682 -682
  248. package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-07-api-reference.md +1327 -1327
  249. package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-08-error-handling.md +1142 -1142
  250. package/docs/02-CORE-GUIDES/mapping/modules/mapping-04-use-cases.md +891 -891
  251. package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-helpers-resolvers.md +1126 -1126
  252. package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-sdk-resolvers.md +199 -199
  253. package/docs/02-CORE-GUIDES/mapping/modules/mapping-07-api-reference.md +1319 -1319
  254. package/docs/02-CORE-GUIDES/mapping/readme.md +178 -178
  255. package/docs/02-CORE-GUIDES/mapping/resolver-registration.md +410 -410
  256. package/docs/02-CORE-GUIDES/mapping/resolvers/examples/common-patterns.ts +226 -226
  257. package/docs/02-CORE-GUIDES/mapping/resolvers/examples/custom-resolvers.ts +227 -227
  258. package/docs/02-CORE-GUIDES/mapping/resolvers/examples/sdk-resolvers-usage.ts +203 -203
  259. package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-readme.md +274 -274
  260. package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-api-reference.md +679 -679
  261. package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-cookbook.md +826 -826
  262. package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-guide.md +1330 -1330
  263. package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-helpers-reference.md +1437 -1437
  264. package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-parameters-reference.md +553 -553
  265. package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-troubleshooting.md +854 -854
  266. package/docs/02-CORE-GUIDES/mapping/resolvers/readme.md +75 -75
  267. package/docs/02-CORE-GUIDES/parsers/examples/02-core-guides-parsers-readme.md +161 -161
  268. package/docs/02-CORE-GUIDES/parsers/examples/csv-parser-examples.ts +110 -110
  269. package/docs/02-CORE-GUIDES/parsers/examples/json-parser-examples.ts +33 -33
  270. package/docs/02-CORE-GUIDES/parsers/examples/parquet-parser-examples.ts +47 -47
  271. package/docs/02-CORE-GUIDES/parsers/examples/xml-parser-examples.ts +38 -38
  272. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-01-foundations.md +355 -355
  273. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-02-csv-parser.md +772 -772
  274. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-03-json-parser.md +789 -789
  275. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-04-xml-parser.md +857 -857
  276. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-05-parquet-parser.md +603 -603
  277. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-integration-patterns.md +702 -702
  278. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-streaming.md +121 -121
  279. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-api-reference.md +89 -89
  280. package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-troubleshooting.md +727 -727
  281. package/docs/02-CORE-GUIDES/parsers/parsers-quick-reference.md +482 -482
  282. package/docs/02-CORE-GUIDES/parsers/parsers-readme.md +258 -258
  283. package/docs/02-CORE-GUIDES/parsers/readme.md +65 -65
  284. package/docs/02-CORE-GUIDES/readme.md +194 -194
  285. package/docs/02-CORE-GUIDES/webhook-validation/examples/basic-validation.ts +108 -108
  286. package/docs/02-CORE-GUIDES/webhook-validation/examples/common-patterns.ts +316 -316
  287. package/docs/02-CORE-GUIDES/webhook-validation/examples/webhook-validation-readme.md +61 -61
  288. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-01-foundations.md +440 -440
  289. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-02-quick-start.md +525 -525
  290. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-03-versori-integration.md +741 -741
  291. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-04-platform-integration.md +629 -629
  292. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-05-configuration.md +535 -535
  293. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-error-handling.md +611 -611
  294. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-troubleshooting.md +124 -124
  295. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-07-api-reference.md +511 -511
  296. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-08-rubix-webhooks.md +590 -590
  297. package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-09-rubix-event-vs-http-call.md +432 -432
  298. package/docs/02-CORE-GUIDES/webhook-validation/readme.md +239 -239
  299. package/docs/02-CORE-GUIDES/webhook-validation/webhook-validation-quick-reference.md +392 -392
  300. package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-quick-reference.md +498 -498
  301. package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-readme.md +313 -313
  302. package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/common-patterns.ts +612 -612
  303. package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/connector-scenarios-readme.md +253 -253
  304. package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-01-foundations.md +452 -452
  305. package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-02-simple-scenarios.md +681 -681
  306. package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-03-intermediate-scenarios.md +637 -637
  307. package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-04-advanced-scenarios.md +650 -650
  308. package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-05-bidirectional-sync.md +233 -233
  309. package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-06-production-patterns.md +442 -442
  310. package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-07-reference.md +445 -445
  311. package/docs/03-PATTERN-GUIDES/connector-scenarios/readme.md +31 -31
  312. package/docs/03-PATTERN-GUIDES/enterprise-integration-patterns.md +1528 -1528
  313. package/docs/03-PATTERN-GUIDES/error-handling/comprehensive-error-handling-guide.md +1437 -1437
  314. package/docs/03-PATTERN-GUIDES/error-handling/error-handling-quick-reference.md +390 -390
  315. package/docs/03-PATTERN-GUIDES/error-handling/examples/common-patterns.ts +438 -438
  316. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-01-foundations.md +362 -362
  317. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-02-error-types.md +850 -850
  318. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-03-utf8-handling.md +456 -456
  319. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-04-error-scenarios.md +658 -658
  320. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-05-calling-patterns.md +671 -671
  321. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-06-retry-strategies.md +1034 -1034
  322. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-07-monitoring.md +653 -653
  323. package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-08-api-reference.md +847 -847
  324. package/docs/03-PATTERN-GUIDES/error-handling/readme.md +36 -36
  325. package/docs/03-PATTERN-GUIDES/examples/__tests__/readme.md +40 -40
  326. package/docs/03-PATTERN-GUIDES/examples/__tests__/resolver-examples.test.js +282 -282
  327. package/docs/03-PATTERN-GUIDES/examples/test-data/03-pattern-guides-readme.md +110 -110
  328. package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-inventory.json +123 -123
  329. package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-order.json +171 -171
  330. package/docs/03-PATTERN-GUIDES/examples/test-data/readme.md +28 -28
  331. package/docs/03-PATTERN-GUIDES/extraction/extraction-readme.md +15 -15
  332. package/docs/03-PATTERN-GUIDES/extraction/readme.md +25 -25
  333. package/docs/03-PATTERN-GUIDES/file-operations/examples/common-patterns.ts +407 -407
  334. package/docs/03-PATTERN-GUIDES/file-operations/examples/file-operations-readme.md +142 -142
  335. package/docs/03-PATTERN-GUIDES/file-operations/file-operations-quick-reference.md +462 -462
  336. package/docs/03-PATTERN-GUIDES/file-operations/file-operations-readme.md +379 -379
  337. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-01-foundations.md +430 -430
  338. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-02-quick-start.md +484 -484
  339. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-03-s3-operations.md +507 -507
  340. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-04-sftp-operations.md +963 -963
  341. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-05-streaming-performance.md +503 -503
  342. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-archive-patterns.md +386 -386
  343. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-error-handling.md +117 -117
  344. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-api-reference.md +78 -78
  345. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-testing-troubleshooting.md +567 -567
  346. package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-08-api-reference.md +1055 -1055
  347. package/docs/03-PATTERN-GUIDES/file-operations/readme.md +32 -32
  348. package/docs/03-PATTERN-GUIDES/ingestion/ingestion-readme.md +15 -15
  349. package/docs/03-PATTERN-GUIDES/ingestion/readme.md +25 -25
  350. package/docs/03-PATTERN-GUIDES/integration-patterns/examples/batch-processing.ts +130 -130
  351. package/docs/03-PATTERN-GUIDES/integration-patterns/examples/common-patterns.ts +360 -360
  352. package/docs/03-PATTERN-GUIDES/integration-patterns/examples/delta-sync.ts +130 -130
  353. package/docs/03-PATTERN-GUIDES/integration-patterns/examples/integration-patterns-readme.md +100 -100
  354. package/docs/03-PATTERN-GUIDES/integration-patterns/examples/real-time-webhook.ts +398 -398
  355. package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-quick-reference.md +962 -962
  356. package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-readme.md +134 -134
  357. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-01-real-time-processing.md +991 -991
  358. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-02-batch-processing.md +1547 -1547
  359. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-03-delta-sync.md +1108 -1108
  360. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-04-webhook-patterns.md +1181 -1181
  361. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-05-error-handling.md +1061 -1061
  362. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-advanced-integration-services.md +1547 -1547
  363. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-performance.md +109 -109
  364. package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-07-api-reference.md +34 -34
  365. package/docs/03-PATTERN-GUIDES/integration-patterns/readme.md +30 -30
  366. package/docs/03-PATTERN-GUIDES/logging-minimal-mode.md +128 -128
  367. package/docs/03-PATTERN-GUIDES/multiple-connections/examples/common-patterns.ts +380 -380
  368. package/docs/03-PATTERN-GUIDES/multiple-connections/examples/multiple-connections-readme.md +139 -139
  369. package/docs/03-PATTERN-GUIDES/multiple-connections/examples/parallel-root-connections.ts +149 -149
  370. package/docs/03-PATTERN-GUIDES/multiple-connections/examples/real-world-scenarios.ts +405 -405
  371. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-01-foundations.md +378 -378
  372. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-02-quick-start.md +566 -566
  373. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-03-targeting-connections.md +659 -659
  374. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-04-parallel-queries.md +656 -656
  375. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-05-best-practices.md +624 -624
  376. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-api-reference.md +824 -824
  377. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-versori.md +119 -119
  378. package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-07-api-reference.md +87 -87
  379. package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-quick-reference.md +353 -353
  380. package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-readme.md +270 -270
  381. package/docs/03-PATTERN-GUIDES/multiple-connections/readme.md +30 -30
  382. package/docs/03-PATTERN-GUIDES/pagination/pagination-readme.md +14 -14
  383. package/docs/03-PATTERN-GUIDES/pagination/readme.md +24 -24
  384. package/docs/03-PATTERN-GUIDES/parquet/examples/common-patterns.ts +180 -180
  385. package/docs/03-PATTERN-GUIDES/parquet/examples/read-parquet.ts +48 -48
  386. package/docs/03-PATTERN-GUIDES/parquet/examples/write-parquet.ts +65 -65
  387. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-01-introduction.md +393 -393
  388. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-02-quick-start.md +572 -572
  389. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-03-reading-parquet.md +525 -525
  390. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-04-writing-parquet.md +554 -554
  391. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-05-graphql-extraction.md +405 -405
  392. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-performance.md +104 -104
  393. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-s3-integration.md +511 -511
  394. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-api-reference.md +90 -90
  395. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-performance-optimization.md +525 -525
  396. package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-08-best-practices.md +712 -712
  397. package/docs/03-PATTERN-GUIDES/parquet/parquet-quick-reference.md +683 -683
  398. package/docs/03-PATTERN-GUIDES/parquet/parquet-readme.md +248 -248
  399. package/docs/03-PATTERN-GUIDES/parquet/readme.md +32 -32
  400. package/docs/03-PATTERN-GUIDES/parsers/parsers-readme.md +12 -12
  401. package/docs/03-PATTERN-GUIDES/parsers/readme.md +24 -24
  402. package/docs/03-PATTERN-GUIDES/readme.md +159 -159
  403. package/docs/03-PATTERN-GUIDES/webhooks/readme.md +24 -24
  404. package/docs/03-PATTERN-GUIDES/webhooks/webhooks-readme.md +8 -8
  405. package/docs/04-REFERENCE/architecture/architecture-01-overview.md +427 -427
  406. package/docs/04-REFERENCE/architecture/architecture-02-client-architecture.md +424 -424
  407. package/docs/04-REFERENCE/architecture/architecture-03-data-flow.md +690 -690
  408. package/docs/04-REFERENCE/architecture/architecture-04-service-layer.md +834 -834
  409. package/docs/04-REFERENCE/architecture/architecture-05-integration-architecture.md +655 -655
  410. package/docs/04-REFERENCE/architecture/architecture-06-state-management.md +653 -653
  411. package/docs/04-REFERENCE/architecture/architecture-adding-new-data-sources.md +686 -686
  412. package/docs/04-REFERENCE/architecture/readme.md +279 -279
  413. package/docs/04-REFERENCE/platforms/deno/readme.md +117 -117
  414. package/docs/04-REFERENCE/platforms/nodejs/readme.md +146 -146
  415. package/docs/04-REFERENCE/platforms/readme.md +135 -135
  416. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-01-introduction.md +398 -398
  417. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-02-quick-start.md +560 -560
  418. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-03-authentication.md +757 -757
  419. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-04-workflows.md +2476 -2476
  420. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-05-connections.md +1167 -1167
  421. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-kv-storage.md +990 -990
  422. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-state-management.md +121 -121
  423. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-api-reference.md +68 -68
  424. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-deployment.md +731 -731
  425. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-08-best-practices.md +1111 -1111
  426. package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-09-signature-reference.md +766 -766
  427. package/docs/04-REFERENCE/platforms/versori/platforms-versori-readme.md +299 -299
  428. package/docs/04-REFERENCE/platforms/versori/platforms-versori-s3-sftp-configuration-guide.md +1425 -1425
  429. package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-api-key-security.md +816 -816
  430. package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-connection-security.md +681 -681
  431. package/docs/04-REFERENCE/platforms/versori/platforms-versori-workflow-task-types.md +708 -708
  432. package/docs/04-REFERENCE/platforms/versori/readme.md +108 -108
  433. package/docs/04-REFERENCE/readme.md +148 -148
  434. package/docs/04-REFERENCE/resolver-signature/examples/advanced-resolvers.ts +482 -482
  435. package/docs/04-REFERENCE/resolver-signature/examples/async-resolvers.ts +496 -496
  436. package/docs/04-REFERENCE/resolver-signature/examples/basic-resolvers.ts +343 -343
  437. package/docs/04-REFERENCE/resolver-signature/examples/resolver-signature-readme.md +188 -188
  438. package/docs/04-REFERENCE/resolver-signature/examples/testing-resolvers.ts +463 -463
  439. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-01-foundations.md +286 -286
  440. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-02-parameter-reference.md +643 -643
  441. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-03-basic-examples.md +521 -521
  442. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-04-advanced-patterns.md +739 -739
  443. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-05-sdk-resolvers.md +531 -531
  444. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-migration-guide.md +650 -650
  445. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-testing.md +125 -125
  446. package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-07-api-reference.md +794 -794
  447. package/docs/04-REFERENCE/resolver-signature/readme.md +64 -64
  448. package/docs/04-REFERENCE/resolver-signature/resolver-signature-quick-reference.md +270 -270
  449. package/docs/04-REFERENCE/resolver-signature/resolver-signature-readme.md +351 -351
  450. package/docs/04-REFERENCE/schema/fluent-commerce-schema.json +764 -764
  451. package/docs/04-REFERENCE/schema/readme.md +141 -141
  452. package/docs/04-REFERENCE/testing/examples/04-reference-testing-readme.md +158 -158
  453. package/docs/04-REFERENCE/testing/examples/fluent-testing.ts +62 -62
  454. package/docs/04-REFERENCE/testing/examples/health-check.ts +155 -155
  455. package/docs/04-REFERENCE/testing/examples/integration-test.ts +119 -119
  456. package/docs/04-REFERENCE/testing/examples/performance-test.ts +183 -183
  457. package/docs/04-REFERENCE/testing/examples/s3-testing.ts +127 -127
  458. package/docs/04-REFERENCE/testing/modules/04-reference-testing-01-foundations.md +267 -267
  459. package/docs/04-REFERENCE/testing/modules/04-reference-testing-02-s3-testing.md +599 -599
  460. package/docs/04-REFERENCE/testing/modules/04-reference-testing-03-fluent-testing.md +589 -589
  461. package/docs/04-REFERENCE/testing/modules/04-reference-testing-04-integration-testing.md +699 -699
  462. package/docs/04-REFERENCE/testing/modules/04-reference-testing-05-debugging.md +478 -478
  463. package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-cicd-integration.md +463 -463
  464. package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-preflight-validation.md +131 -131
  465. package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-best-practices.md +499 -499
  466. package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-coverage-ci.md +165 -165
  467. package/docs/04-REFERENCE/testing/modules/04-reference-testing-08-api-reference.md +634 -634
  468. package/docs/04-REFERENCE/testing/readme.md +86 -86
  469. package/docs/04-REFERENCE/testing/testing-quick-reference.md +667 -667
  470. package/docs/04-REFERENCE/testing/testing-readme.md +286 -286
  471. package/docs/04-REFERENCE/troubleshooting/readme.md +144 -144
  472. package/docs/04-REFERENCE/troubleshooting/troubleshooting-deno-sftp-compatibility.md +392 -392
  473. package/docs/template-loading-matrix.md +242 -242
  474. package/package.json +5 -3
  475. 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*