@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.
- package/CHANGELOG.md +12 -0
- package/dist/cjs/clients/fluent-client.js +13 -6
- package/dist/cjs/utils/pagination-helpers.js +38 -2
- package/dist/cjs/versori/fluent-versori-client.js +11 -5
- package/dist/esm/clients/fluent-client.js +13 -6
- package/dist/esm/utils/pagination-helpers.js +38 -2
- package/dist/esm/versori/fluent-versori-client.js +11 -5
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/tsconfig.types.tsbuildinfo +1 -1
- package/docs/00-START-HERE/EXPORT-VALIDATION.md +158 -158
- package/docs/00-START-HERE/cli-analyze-source-structure-guide.md +655 -655
- package/docs/00-START-HERE/cli-documentation-index.md +202 -202
- package/docs/00-START-HERE/cli-quick-reference.md +252 -252
- package/docs/00-START-HERE/decision-tree.md +552 -552
- package/docs/00-START-HERE/getting-started.md +1070 -1070
- package/docs/00-START-HERE/mapper-quick-decision-guide.md +235 -235
- package/docs/00-START-HERE/readme.md +237 -237
- package/docs/00-START-HERE/retailerid-configuration.md +404 -404
- package/docs/00-START-HERE/sdk-philosophy.md +794 -794
- package/docs/00-START-HERE/troubleshooting-quick-reference.md +1086 -1086
- package/docs/01-TEMPLATES/faq.md +686 -686
- package/docs/01-TEMPLATES/patterns/pattern-templates-guide.md +68 -68
- package/docs/01-TEMPLATES/patterns/patterns-csv-schema-validation-and-rejection-report.md +233 -233
- package/docs/01-TEMPLATES/patterns/patterns-custom-resolvers.md +407 -407
- package/docs/01-TEMPLATES/patterns/patterns-error-handling-retry.md +511 -511
- package/docs/01-TEMPLATES/patterns/patterns-field-mapping-universal.md +701 -701
- package/docs/01-TEMPLATES/patterns/patterns-large-file-splitting.md +1430 -1430
- package/docs/01-TEMPLATES/patterns/patterns-master-data-etl.md +2399 -2399
- package/docs/01-TEMPLATES/patterns/patterns-pagination-streaming.md +447 -447
- package/docs/01-TEMPLATES/patterns/patterns-state-duplicate-prevention.md +385 -385
- package/docs/01-TEMPLATES/readme.md +957 -957
- package/docs/01-TEMPLATES/standalone/standalone-asn-inbound-processing.md +1209 -1209
- package/docs/01-TEMPLATES/standalone/standalone-graphql-query-export.md +1140 -1140
- package/docs/01-TEMPLATES/standalone/standalone-graphql-to-parquet-partitioned-s3.md +432 -432
- package/docs/01-TEMPLATES/standalone/standalone-multi-channel-inventory-sync.md +1185 -1185
- package/docs/01-TEMPLATES/standalone/standalone-multi-source-aggregation.md +1462 -1462
- package/docs/01-TEMPLATES/standalone/standalone-s3-csv-batch-api.md +1390 -1390
- package/docs/01-TEMPLATES/standalone/standalone-s3-csv-inventory-to-batch.md +330 -330
- package/docs/01-TEMPLATES/standalone/standalone-scripts-guide.md +87 -87
- package/docs/01-TEMPLATES/standalone/standalone-sftp-xml-graphql.md +1444 -1444
- package/docs/01-TEMPLATES/standalone/standalone-webhook-payload-processing.md +688 -688
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-dropship-order-routing.md +193 -193
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-graphql-parquet-extraction.md +518 -518
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-inter-location-transfers.md +2162 -2162
- package/docs/01-TEMPLATES/versori/business-examples/business-examples-pre-order-allocation.md +2226 -2226
- package/docs/01-TEMPLATES/versori/business-examples/business-scenarios-guide.md +87 -87
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-connection-validation-pattern.md +656 -656
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-dual-workflow-connector.md +835 -835
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-guide.md +108 -108
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-kv-state-management.md +1533 -1533
- package/docs/01-TEMPLATES/versori/patterns/versori-patterns-xml-response-patterns.md +1160 -1160
- package/docs/01-TEMPLATES/versori/versori-platform-guide.md +201 -201
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-asn-purchase-order.md +1906 -1906
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-dropship-routing.md +1074 -1074
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-flash-sale-reserve.md +1395 -1395
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-generic-xml-order.md +888 -888
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-payment-gateway-integration.md +2478 -2478
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-rma-returns-comprehensive.md +2240 -2240
- package/docs/01-TEMPLATES/versori/webhooks/template-webhook-xml-order-ingestion.md +2029 -2029
- package/docs/01-TEMPLATES/versori/webhooks/webhook-templates-guide.md +140 -140
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/inventory-mapping.json +20 -20
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/products_2025-01-22.csv +11 -11
- package/docs/01-TEMPLATES/versori/workflows/_examples/sample-data/sample-data-guide.md +34 -34
- package/docs/01-TEMPLATES/versori/workflows/_examples/workflow-examples-guide.md +36 -36
- package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-modes-guide.md +1038 -1038
- package/docs/01-TEMPLATES/versori/workflows/extraction/extraction-workflows-guide.md +138 -138
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/graphql-extraction-guide.md +63 -63
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-csv.md +2062 -2062
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-fulfillments-to-sftp-xml.md +2294 -2294
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-s3-csv.md +2461 -2461
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-positions-to-sftp-xml.md +2529 -2529
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-csv.md +2464 -2464
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-inventory-quantities-to-s3-json.md +1959 -1959
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-s3-csv.md +1953 -1953
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-orders-to-sftp-xml.md +2541 -2541
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-s3-json.md +2384 -2384
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-products-to-sftp-xml.md +2445 -2445
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-csv.md +2355 -2355
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-s3-json.md +2042 -2042
- package/docs/01-TEMPLATES/versori/workflows/extraction/graphql-queries/template-extraction-virtual-positions-to-sftp-xml.md +2726 -2726
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/batch-api-guide.md +206 -206
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-cycle-count-reconciliation.md +2030 -2030
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-multi-channel-inventory-sync.md +1882 -1882
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-csv-inventory-batch.md +2827 -2827
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-json-inventory-batch.md +1952 -1952
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-s3-xml-inventory-batch.md +3289 -3289
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-csv-inventory-batch.md +3064 -3064
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-json-inventory-batch.md +3238 -3238
- package/docs/01-TEMPLATES/versori/workflows/ingestion/batch-api/template-ingestion-sftp-xml-inventory-batch.md +2977 -2977
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/event-api-guide.md +321 -321
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-json-order-cancel-event.md +959 -959
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-payload-xml-order-cancel-event.md +1170 -1170
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-csv-product-event.md +2312 -2312
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-json-product-event.md +2999 -2999
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-parquet-product-event.md +2836 -2836
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-s3-xml-product-event.md +2395 -2395
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-csv-product-event.md +2295 -2295
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-json-product-event.md +2602 -2602
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-parquet-product-event.md +2589 -2589
- package/docs/01-TEMPLATES/versori/workflows/ingestion/event-api/template-ingestion-sftp-xml-product-event.md +3578 -3578
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/graphql-mutations-guide.md +93 -93
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-json-order-update-graphql.md +1260 -1260
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-payload-xml-order-update-graphql.md +1472 -1472
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-control-graphql.md +2417 -2417
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-location-graphql.md +2811 -2811
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-csv-price-graphql.md +2619 -2619
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-json-location-graphql.md +2807 -2807
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-s3-xml-location-graphql.md +2373 -2373
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-control-graphql.md +2740 -2740
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-csv-location-graphql.md +2760 -2760
- package/docs/01-TEMPLATES/versori/workflows/ingestion/graphql-mutations/template-ingestion-sftp-json-location-graphql.md +1710 -1710
- package/docs/01-TEMPLATES/versori/workflows/ingestion/ingestion-workflows-guide.md +136 -136
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/rubix-webhooks-guide.md +520 -520
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-inline.md +1418 -1418
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-fulfilment-to-sftp-xml-universal-mapper.md +1785 -1785
- package/docs/01-TEMPLATES/versori/workflows/rubix-webhooks/template-webhook-rubix-order-attribute-update.md +824 -824
- package/docs/01-TEMPLATES/versori/workflows/workflows-overview-guide.md +646 -646
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-batch-archival.md +724 -724
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-job-tracker.md +627 -627
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-partial-batch-recovery.md +561 -561
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-quick-reference.md +367 -367
- package/docs/02-CORE-GUIDES/advanced-services/advanced-services-readme.md +407 -407
- package/docs/02-CORE-GUIDES/advanced-services/readme.md +49 -49
- package/docs/02-CORE-GUIDES/api-reference/api-reference-quick-reference.md +548 -548
- package/docs/02-CORE-GUIDES/api-reference/event-api-input-output-reference.md +702 -1171
- package/docs/02-CORE-GUIDES/api-reference/examples/client-initialization.ts +286 -286
- package/docs/02-CORE-GUIDES/api-reference/graphql-error-classification.md +337 -337
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-01-client-api.md +399 -520
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-03-authentication.md +199 -199
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-04-graphql-mapping.md +925 -925
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-05-services.md +1198 -1198
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-06-data-sources.md +1083 -1083
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-07-parsers.md +1097 -1097
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-pagination.md +513 -513
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-08-types.md +545 -597
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-error-handling.md +527 -527
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-09-webhook-validation.md +514 -514
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-extraction.md +557 -557
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-10-utilities.md +412 -412
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-cli-tools.md +423 -423
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-11-error-handling.md +716 -716
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-analyze-source-structure.md +518 -518
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-partial-responses.md +212 -212
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-12-testing.md +300 -300
- package/docs/02-CORE-GUIDES/api-reference/modules/api-reference-13-resolver-builder.md +322 -322
- package/docs/02-CORE-GUIDES/api-reference/readme.md +279 -279
- package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-quick-reference.md +351 -351
- package/docs/02-CORE-GUIDES/auto-pagination/auto-pagination-readme.md +277 -277
- package/docs/02-CORE-GUIDES/auto-pagination/examples/auto-pagination-readme.md +178 -178
- package/docs/02-CORE-GUIDES/auto-pagination/examples/common-patterns.ts +351 -351
- package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-products.ts +384 -384
- package/docs/02-CORE-GUIDES/auto-pagination/examples/paginate-virtual-positions.ts +308 -308
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-01-foundations.md +470 -470
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-02-quick-start.md +713 -713
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-03-configuration.md +754 -754
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-04-advanced-patterns.md +732 -732
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-05-sdk-integration.md +847 -847
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-06-troubleshooting.md +359 -359
- package/docs/02-CORE-GUIDES/auto-pagination/modules/auto-pagination-07-api-reference.md +462 -462
- package/docs/02-CORE-GUIDES/auto-pagination/readme.md +54 -54
- package/docs/02-CORE-GUIDES/data-sources/data-sources-file-operations-error-handling.md +1487 -1487
- package/docs/02-CORE-GUIDES/data-sources/data-sources-quick-reference.md +836 -836
- package/docs/02-CORE-GUIDES/data-sources/data-sources-readme.md +276 -276
- package/docs/02-CORE-GUIDES/data-sources/data-sources-sftp-credential-access-security.md +553 -553
- package/docs/02-CORE-GUIDES/data-sources/examples/common-patterns.ts +409 -409
- package/docs/02-CORE-GUIDES/data-sources/examples/data-sources-readme.md +178 -178
- package/docs/02-CORE-GUIDES/data-sources/examples/s3-operations.ts +308 -308
- package/docs/02-CORE-GUIDES/data-sources/examples/sftp-operations.ts +371 -371
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-01-foundations.md +735 -735
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-02-s3-operations.md +1302 -1302
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-03-sftp-operations.md +1379 -1379
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-04-file-patterns.md +941 -941
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-05-advanced-topics.md +813 -813
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-06-integration-patterns.md +486 -486
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-07-troubleshooting.md +387 -387
- package/docs/02-CORE-GUIDES/data-sources/modules/data-sources-08-api-reference.md +417 -417
- package/docs/02-CORE-GUIDES/data-sources/readme.md +77 -77
- package/docs/02-CORE-GUIDES/error-handling-guide.md +936 -936
- package/docs/02-CORE-GUIDES/extraction/examples/02-core-guides-extraction-readme.md +116 -116
- package/docs/02-CORE-GUIDES/extraction/examples/common-patterns.ts +428 -428
- package/docs/02-CORE-GUIDES/extraction/examples/extract-inventory-basic.ts +187 -187
- package/docs/02-CORE-GUIDES/extraction/extraction-quick-reference.md +596 -596
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-01-foundations.md +514 -514
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-02-basic-extraction.md +823 -823
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-03-parquet-processing.md +507 -507
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-04-data-enrichment.md +546 -546
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-05-transformation.md +494 -494
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-export-formats.md +458 -458
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-06-performance.md +138 -138
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-api-reference.md +148 -148
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-07-optimization.md +692 -692
- package/docs/02-CORE-GUIDES/extraction/modules/02-core-guides-extraction-08-extraction-orchestrator.md +1008 -1008
- package/docs/02-CORE-GUIDES/extraction/readme.md +151 -151
- package/docs/02-CORE-GUIDES/ingestion/examples/_simple-kv-store.ts +40 -40
- package/docs/02-CORE-GUIDES/ingestion/examples/error-recovery.ts +728 -728
- package/docs/02-CORE-GUIDES/ingestion/examples/event-driven.ts +501 -501
- package/docs/02-CORE-GUIDES/ingestion/examples/local-file-ingestion.ts +88 -88
- package/docs/02-CORE-GUIDES/ingestion/examples/parquet-ingestion.ts +117 -117
- package/docs/02-CORE-GUIDES/ingestion/examples/performance-optimized.ts +647 -647
- package/docs/02-CORE-GUIDES/ingestion/examples/s3-csv-ingestion.ts +169 -169
- package/docs/02-CORE-GUIDES/ingestion/examples/sftp-csv-ingestion.ts +134 -134
- package/docs/02-CORE-GUIDES/ingestion/ingestion-quick-reference.md +546 -546
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-01-introduction.md +626 -626
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-02-quick-start.md +658 -658
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-03-data-sources.md +1052 -1052
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-04-field-mapping.md +763 -763
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-05-advanced-parsers.md +676 -676
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-06-batch-api.md +1295 -1295
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-api-reference.md +138 -138
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-07-state-management.md +1037 -1037
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-08-performance-optimization.md +1349 -1349
- package/docs/02-CORE-GUIDES/ingestion/modules/02-core-guides-ingestion-09-best-practices.md +1893 -1893
- package/docs/02-CORE-GUIDES/ingestion/readme.md +160 -160
- package/docs/02-CORE-GUIDES/logging-guide.md +585 -585
- package/docs/02-CORE-GUIDES/mapping/error-handling-patterns.md +401 -401
- package/docs/02-CORE-GUIDES/mapping/examples/02-core-guides-mapping-readme.md +128 -128
- package/docs/02-CORE-GUIDES/mapping/examples/common-patterns.ts +273 -273
- package/docs/02-CORE-GUIDES/mapping/examples/csv-location-ingestion.json +36 -36
- package/docs/02-CORE-GUIDES/mapping/examples/csv-mapping.ts +242 -242
- package/docs/02-CORE-GUIDES/mapping/examples/graphql-to-parquet-extraction.json +36 -36
- package/docs/02-CORE-GUIDES/mapping/examples/json-mapping.ts +213 -213
- package/docs/02-CORE-GUIDES/mapping/examples/json-product-to-mutation.json +48 -48
- package/docs/02-CORE-GUIDES/mapping/examples/xml-mapping.ts +291 -291
- package/docs/02-CORE-GUIDES/mapping/examples/xml-order-to-mutation.json +45 -45
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-quick-reference.md +463 -463
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/graphql-mutation-mapping-readme.md +227 -227
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-01-introduction.md +222 -222
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-02-quick-start.md +351 -351
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-03-schema-validation.md +569 -569
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-04-mapping-patterns.md +471 -471
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-05-configuration-reference.md +611 -611
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-advanced-xpath.md +148 -148
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-06-path-syntax.md +464 -464
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-api-reference.md +94 -94
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-07-array-handling.md +307 -307
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-08-custom-resolvers.md +544 -544
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-09-advanced-patterns.md +427 -427
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-10-hooks-and-variables.md +336 -336
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-11-error-handling.md +488 -488
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-12-arguments-vs-nodes.md +383 -383
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/modules/graphql-mutation-mapping-13-best-practices.md +477 -477
- package/docs/02-CORE-GUIDES/mapping/graphql-mutation-mapping/readme.md +62 -62
- package/docs/02-CORE-GUIDES/mapping/mapping-format-decision-tree.md +480 -480
- package/docs/02-CORE-GUIDES/mapping/mapping-graphql-alias-batching-guide.md +820 -820
- package/docs/02-CORE-GUIDES/mapping/mapping-javascript-objects.md +2369 -2369
- package/docs/02-CORE-GUIDES/mapping/mapping-mapper-comparison-guide.md +682 -682
- package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-07-api-reference.md +1327 -1327
- package/docs/02-CORE-GUIDES/mapping/modules/02-core-guides-mapping-08-error-handling.md +1142 -1142
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-04-use-cases.md +891 -891
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-helpers-resolvers.md +1126 -1126
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-06-sdk-resolvers.md +199 -199
- package/docs/02-CORE-GUIDES/mapping/modules/mapping-07-api-reference.md +1319 -1319
- package/docs/02-CORE-GUIDES/mapping/readme.md +178 -178
- package/docs/02-CORE-GUIDES/mapping/resolver-registration.md +410 -410
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/common-patterns.ts +226 -226
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/custom-resolvers.ts +227 -227
- package/docs/02-CORE-GUIDES/mapping/resolvers/examples/sdk-resolvers-usage.ts +203 -203
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-readme.md +274 -274
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-api-reference.md +679 -679
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-cookbook.md +826 -826
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-guide.md +1330 -1330
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-helpers-reference.md +1437 -1437
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-parameters-reference.md +553 -553
- package/docs/02-CORE-GUIDES/mapping/resolvers/mapping-resolvers-resolver-troubleshooting.md +854 -854
- package/docs/02-CORE-GUIDES/mapping/resolvers/readme.md +75 -75
- package/docs/02-CORE-GUIDES/parsers/examples/02-core-guides-parsers-readme.md +161 -161
- package/docs/02-CORE-GUIDES/parsers/examples/csv-parser-examples.ts +110 -110
- package/docs/02-CORE-GUIDES/parsers/examples/json-parser-examples.ts +33 -33
- package/docs/02-CORE-GUIDES/parsers/examples/parquet-parser-examples.ts +47 -47
- package/docs/02-CORE-GUIDES/parsers/examples/xml-parser-examples.ts +38 -38
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-01-foundations.md +355 -355
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-02-csv-parser.md +772 -772
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-03-json-parser.md +789 -789
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-04-xml-parser.md +857 -857
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-05-parquet-parser.md +603 -603
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-integration-patterns.md +702 -702
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-06-streaming.md +121 -121
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-api-reference.md +89 -89
- package/docs/02-CORE-GUIDES/parsers/modules/02-core-guides-parsers-07-troubleshooting.md +727 -727
- package/docs/02-CORE-GUIDES/parsers/parsers-quick-reference.md +482 -482
- package/docs/02-CORE-GUIDES/parsers/parsers-readme.md +258 -258
- package/docs/02-CORE-GUIDES/parsers/readme.md +65 -65
- package/docs/02-CORE-GUIDES/readme.md +194 -194
- package/docs/02-CORE-GUIDES/webhook-validation/examples/basic-validation.ts +108 -108
- package/docs/02-CORE-GUIDES/webhook-validation/examples/common-patterns.ts +316 -316
- package/docs/02-CORE-GUIDES/webhook-validation/examples/webhook-validation-readme.md +61 -61
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-01-foundations.md +440 -440
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-02-quick-start.md +525 -525
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-03-versori-integration.md +741 -741
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-04-platform-integration.md +629 -629
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-05-configuration.md +535 -535
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-error-handling.md +611 -611
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-06-troubleshooting.md +124 -124
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-07-api-reference.md +511 -511
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-08-rubix-webhooks.md +590 -590
- package/docs/02-CORE-GUIDES/webhook-validation/modules/webhook-validation-09-rubix-event-vs-http-call.md +432 -432
- package/docs/02-CORE-GUIDES/webhook-validation/readme.md +239 -239
- package/docs/02-CORE-GUIDES/webhook-validation/webhook-validation-quick-reference.md +392 -392
- package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-quick-reference.md +498 -498
- package/docs/03-PATTERN-GUIDES/connector-scenarios/connector-scenarios-readme.md +313 -313
- package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/common-patterns.ts +612 -612
- package/docs/03-PATTERN-GUIDES/connector-scenarios/examples/connector-scenarios-readme.md +253 -253
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-01-foundations.md +452 -452
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-02-simple-scenarios.md +681 -681
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-03-intermediate-scenarios.md +637 -637
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-04-advanced-scenarios.md +650 -650
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-05-bidirectional-sync.md +233 -233
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-06-production-patterns.md +442 -442
- package/docs/03-PATTERN-GUIDES/connector-scenarios/modules/connector-scenarios-07-reference.md +445 -445
- package/docs/03-PATTERN-GUIDES/connector-scenarios/readme.md +31 -31
- package/docs/03-PATTERN-GUIDES/enterprise-integration-patterns.md +1528 -1528
- package/docs/03-PATTERN-GUIDES/error-handling/comprehensive-error-handling-guide.md +1437 -1437
- package/docs/03-PATTERN-GUIDES/error-handling/error-handling-quick-reference.md +390 -390
- package/docs/03-PATTERN-GUIDES/error-handling/examples/common-patterns.ts +438 -438
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-01-foundations.md +362 -362
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-02-error-types.md +850 -850
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-03-utf8-handling.md +456 -456
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-04-error-scenarios.md +658 -658
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-05-calling-patterns.md +671 -671
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-06-retry-strategies.md +1034 -1034
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-07-monitoring.md +653 -653
- package/docs/03-PATTERN-GUIDES/error-handling/modules/error-handling-08-api-reference.md +847 -847
- package/docs/03-PATTERN-GUIDES/error-handling/readme.md +36 -36
- package/docs/03-PATTERN-GUIDES/examples/__tests__/readme.md +40 -40
- package/docs/03-PATTERN-GUIDES/examples/__tests__/resolver-examples.test.js +282 -282
- package/docs/03-PATTERN-GUIDES/examples/test-data/03-pattern-guides-readme.md +110 -110
- package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-inventory.json +123 -123
- package/docs/03-PATTERN-GUIDES/examples/test-data/canonical-order.json +171 -171
- package/docs/03-PATTERN-GUIDES/examples/test-data/readme.md +28 -28
- package/docs/03-PATTERN-GUIDES/extraction/extraction-readme.md +15 -15
- package/docs/03-PATTERN-GUIDES/extraction/readme.md +25 -25
- package/docs/03-PATTERN-GUIDES/file-operations/examples/common-patterns.ts +407 -407
- package/docs/03-PATTERN-GUIDES/file-operations/examples/file-operations-readme.md +142 -142
- package/docs/03-PATTERN-GUIDES/file-operations/file-operations-quick-reference.md +462 -462
- package/docs/03-PATTERN-GUIDES/file-operations/file-operations-readme.md +379 -379
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-01-foundations.md +430 -430
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-02-quick-start.md +484 -484
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-03-s3-operations.md +507 -507
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-04-sftp-operations.md +963 -963
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-05-streaming-performance.md +503 -503
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-archive-patterns.md +386 -386
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-06-error-handling.md +117 -117
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-api-reference.md +78 -78
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-07-testing-troubleshooting.md +567 -567
- package/docs/03-PATTERN-GUIDES/file-operations/modules/file-operations-08-api-reference.md +1055 -1055
- package/docs/03-PATTERN-GUIDES/file-operations/readme.md +32 -32
- package/docs/03-PATTERN-GUIDES/ingestion/ingestion-readme.md +15 -15
- package/docs/03-PATTERN-GUIDES/ingestion/readme.md +25 -25
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/batch-processing.ts +130 -130
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/common-patterns.ts +360 -360
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/delta-sync.ts +130 -130
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/integration-patterns-readme.md +100 -100
- package/docs/03-PATTERN-GUIDES/integration-patterns/examples/real-time-webhook.ts +398 -398
- package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-quick-reference.md +962 -962
- package/docs/03-PATTERN-GUIDES/integration-patterns/integration-patterns-readme.md +134 -134
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-01-real-time-processing.md +991 -991
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-02-batch-processing.md +1547 -1547
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-03-delta-sync.md +1108 -1108
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-04-webhook-patterns.md +1181 -1181
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-05-error-handling.md +1061 -1061
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-advanced-integration-services.md +1547 -1547
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-06-performance.md +109 -109
- package/docs/03-PATTERN-GUIDES/integration-patterns/modules/integration-patterns-07-api-reference.md +34 -34
- package/docs/03-PATTERN-GUIDES/integration-patterns/readme.md +30 -30
- package/docs/03-PATTERN-GUIDES/logging-minimal-mode.md +128 -128
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/common-patterns.ts +380 -380
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/multiple-connections-readme.md +139 -139
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/parallel-root-connections.ts +149 -149
- package/docs/03-PATTERN-GUIDES/multiple-connections/examples/real-world-scenarios.ts +405 -405
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-01-foundations.md +378 -378
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-02-quick-start.md +566 -566
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-03-targeting-connections.md +659 -659
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-04-parallel-queries.md +656 -656
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-05-best-practices.md +624 -624
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-api-reference.md +824 -824
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-06-versori.md +119 -119
- package/docs/03-PATTERN-GUIDES/multiple-connections/modules/multiple-connections-07-api-reference.md +87 -87
- package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-quick-reference.md +353 -353
- package/docs/03-PATTERN-GUIDES/multiple-connections/multiple-connections-readme.md +270 -270
- package/docs/03-PATTERN-GUIDES/multiple-connections/readme.md +30 -30
- package/docs/03-PATTERN-GUIDES/pagination/pagination-readme.md +14 -14
- package/docs/03-PATTERN-GUIDES/pagination/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/parquet/examples/common-patterns.ts +180 -180
- package/docs/03-PATTERN-GUIDES/parquet/examples/read-parquet.ts +48 -48
- package/docs/03-PATTERN-GUIDES/parquet/examples/write-parquet.ts +65 -65
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-01-introduction.md +393 -393
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-02-quick-start.md +572 -572
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-03-reading-parquet.md +525 -525
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-04-writing-parquet.md +554 -554
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-05-graphql-extraction.md +405 -405
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-performance.md +104 -104
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-06-s3-integration.md +511 -511
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-api-reference.md +90 -90
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-07-performance-optimization.md +525 -525
- package/docs/03-PATTERN-GUIDES/parquet/modules/03-pattern-guides-parquet-08-best-practices.md +712 -712
- package/docs/03-PATTERN-GUIDES/parquet/parquet-quick-reference.md +683 -683
- package/docs/03-PATTERN-GUIDES/parquet/parquet-readme.md +248 -248
- package/docs/03-PATTERN-GUIDES/parquet/readme.md +32 -32
- package/docs/03-PATTERN-GUIDES/parsers/parsers-readme.md +12 -12
- package/docs/03-PATTERN-GUIDES/parsers/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/readme.md +159 -159
- package/docs/03-PATTERN-GUIDES/webhooks/readme.md +24 -24
- package/docs/03-PATTERN-GUIDES/webhooks/webhooks-readme.md +8 -8
- package/docs/04-REFERENCE/architecture/architecture-01-overview.md +427 -427
- package/docs/04-REFERENCE/architecture/architecture-02-client-architecture.md +424 -424
- package/docs/04-REFERENCE/architecture/architecture-03-data-flow.md +690 -690
- package/docs/04-REFERENCE/architecture/architecture-04-service-layer.md +834 -834
- package/docs/04-REFERENCE/architecture/architecture-05-integration-architecture.md +655 -655
- package/docs/04-REFERENCE/architecture/architecture-06-state-management.md +653 -653
- package/docs/04-REFERENCE/architecture/architecture-adding-new-data-sources.md +686 -686
- package/docs/04-REFERENCE/architecture/readme.md +279 -279
- package/docs/04-REFERENCE/platforms/deno/readme.md +117 -117
- package/docs/04-REFERENCE/platforms/nodejs/readme.md +146 -146
- package/docs/04-REFERENCE/platforms/readme.md +135 -135
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-01-introduction.md +398 -398
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-02-quick-start.md +560 -560
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-03-authentication.md +757 -757
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-04-workflows.md +2476 -2476
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-05-connections.md +1167 -1167
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-kv-storage.md +990 -990
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-06-state-management.md +121 -121
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-api-reference.md +68 -68
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-07-deployment.md +731 -731
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-08-best-practices.md +1111 -1111
- package/docs/04-REFERENCE/platforms/versori/modules/platforms-versori-09-signature-reference.md +766 -766
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-readme.md +299 -299
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-s3-sftp-configuration-guide.md +1425 -1425
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-api-key-security.md +816 -816
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-webhook-connection-security.md +681 -681
- package/docs/04-REFERENCE/platforms/versori/platforms-versori-workflow-task-types.md +708 -708
- package/docs/04-REFERENCE/platforms/versori/readme.md +108 -108
- package/docs/04-REFERENCE/readme.md +148 -148
- package/docs/04-REFERENCE/resolver-signature/examples/advanced-resolvers.ts +482 -482
- package/docs/04-REFERENCE/resolver-signature/examples/async-resolvers.ts +496 -496
- package/docs/04-REFERENCE/resolver-signature/examples/basic-resolvers.ts +343 -343
- package/docs/04-REFERENCE/resolver-signature/examples/resolver-signature-readme.md +188 -188
- package/docs/04-REFERENCE/resolver-signature/examples/testing-resolvers.ts +463 -463
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-01-foundations.md +286 -286
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-02-parameter-reference.md +643 -643
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-03-basic-examples.md +521 -521
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-04-advanced-patterns.md +739 -739
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-05-sdk-resolvers.md +531 -531
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-migration-guide.md +650 -650
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-06-testing.md +125 -125
- package/docs/04-REFERENCE/resolver-signature/modules/resolver-signature-07-api-reference.md +794 -794
- package/docs/04-REFERENCE/resolver-signature/readme.md +64 -64
- package/docs/04-REFERENCE/resolver-signature/resolver-signature-quick-reference.md +270 -270
- package/docs/04-REFERENCE/resolver-signature/resolver-signature-readme.md +351 -351
- package/docs/04-REFERENCE/schema/fluent-commerce-schema.json +764 -764
- package/docs/04-REFERENCE/schema/readme.md +141 -141
- package/docs/04-REFERENCE/testing/examples/04-reference-testing-readme.md +158 -158
- package/docs/04-REFERENCE/testing/examples/fluent-testing.ts +62 -62
- package/docs/04-REFERENCE/testing/examples/health-check.ts +155 -155
- package/docs/04-REFERENCE/testing/examples/integration-test.ts +119 -119
- package/docs/04-REFERENCE/testing/examples/performance-test.ts +183 -183
- package/docs/04-REFERENCE/testing/examples/s3-testing.ts +127 -127
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-01-foundations.md +267 -267
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-02-s3-testing.md +599 -599
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-03-fluent-testing.md +589 -589
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-04-integration-testing.md +699 -699
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-05-debugging.md +478 -478
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-cicd-integration.md +463 -463
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-06-preflight-validation.md +131 -131
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-best-practices.md +499 -499
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-07-coverage-ci.md +165 -165
- package/docs/04-REFERENCE/testing/modules/04-reference-testing-08-api-reference.md +634 -634
- package/docs/04-REFERENCE/testing/readme.md +86 -86
- package/docs/04-REFERENCE/testing/testing-quick-reference.md +667 -667
- package/docs/04-REFERENCE/testing/testing-readme.md +286 -286
- package/docs/04-REFERENCE/troubleshooting/readme.md +144 -144
- package/docs/04-REFERENCE/troubleshooting/troubleshooting-deno-sftp-compatibility.md +392 -392
- package/docs/template-loading-matrix.md +242 -242
- package/package.json +5 -3
- package/docs/02-CORE-GUIDES/api-reference/cli-profile-integration.md +0 -377
|
@@ -1,560 +1,560 @@
|
|
|
1
|
-
# Module 2: Quick Start - Your First Versori Connector
|
|
2
|
-
|
|
3
|
-
[← Back to Versori Platform Guide](../platforms-versori-readme.md)
|
|
4
|
-
|
|
5
|
-
**Module 2 of 8** | **Level**: Beginner | **Time**: 20 minutes
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Learning Objectives
|
|
10
|
-
|
|
11
|
-
By the end of this module, you will:
|
|
12
|
-
- ✅ Create a Versori connector project from scratch
|
|
13
|
-
- ✅ Configure Fluent Commerce connection in Versori UI
|
|
14
|
-
- ✅ Deploy your first HTTP workflow
|
|
15
|
-
- ✅ Test the deployed endpoint
|
|
16
|
-
- ✅ View logs and monitor execution
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Project Setup
|
|
21
|
-
|
|
22
|
-
### Step 1: Create Project Directory
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
mkdir my-fluent-connector
|
|
26
|
-
cd my-fluent-connector
|
|
27
|
-
npm init -y
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
### Step 2: Install Dependencies
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
npm install @fluentcommerce/fc-connect-sdk @versori/run
|
|
34
|
-
npm install --save-dev typescript @types/node
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### Step 3: TypeScript Configuration
|
|
38
|
-
|
|
39
|
-
Create `tsconfig.json`:
|
|
40
|
-
|
|
41
|
-
```json
|
|
42
|
-
{
|
|
43
|
-
"compilerOptions": {
|
|
44
|
-
"module": "ES2022",
|
|
45
|
-
"target": "ES2024",
|
|
46
|
-
"moduleResolution": "node"
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### Step 4: Package Configuration
|
|
52
|
-
|
|
53
|
-
Update `package.json`:
|
|
54
|
-
|
|
55
|
-
```json
|
|
56
|
-
{
|
|
57
|
-
"name": "my-fluent-connector",
|
|
58
|
-
"version": "1.0.0",
|
|
59
|
-
"main": "dist/index.js",
|
|
60
|
-
"scripts": {
|
|
61
|
-
"build": "tsc",
|
|
62
|
-
"deploy": "versori deploy",
|
|
63
|
-
"logs": "versori logs",
|
|
64
|
-
"validate": "tsc --noEmit"
|
|
65
|
-
},
|
|
66
|
-
"dependencies": {
|
|
67
|
-
"@fluentcommerce/fc-connect-sdk": "latest",
|
|
68
|
-
"@versori/run": "^0.4.4"
|
|
69
|
-
},
|
|
70
|
-
"devDependencies": {
|
|
71
|
-
"typescript": "^5.0.0",
|
|
72
|
-
"@types/node": "^20.0.0"
|
|
73
|
-
},
|
|
74
|
-
"versori": {
|
|
75
|
-
"workflows": "dist/index.js"
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
**Critical**: The `versori.workflows` field tells Versori where to find your exported workflows.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Your First Workflow: Query Fluent Inventory
|
|
85
|
-
|
|
86
|
-
### Create Workflow File
|
|
87
|
-
|
|
88
|
-
Create `src/index.ts`:
|
|
89
|
-
|
|
90
|
-
```typescript
|
|
91
|
-
import { http } from '@versori/run';
|
|
92
|
-
import { createClient } from '@fluentcommerce/fc-connect-sdk';
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* HTTP workflow: Query Fluent Commerce inventory
|
|
96
|
-
*
|
|
97
|
-
* Endpoint: https://{workspace}.versori.run/query-inventory
|
|
98
|
-
* Method: GET
|
|
99
|
-
*/
|
|
100
|
-
export const queryInventory = http('query-inventory', {
|
|
101
|
-
connection: 'fluent_commerce', // CRITICAL: Matches connection name in Versori UI
|
|
102
|
-
timeout: 30000, // 30 second timeout
|
|
103
|
-
retry: {
|
|
104
|
-
attempts: 3, // Retry up to 3 times on failure
|
|
105
|
-
delay: 1000 // 1 second between retries
|
|
106
|
-
}
|
|
107
|
-
}, async (ctx) => {
|
|
108
|
-
// Log workflow start
|
|
109
|
-
ctx.log('info', 'Starting inventory query');
|
|
110
|
-
|
|
111
|
-
try {
|
|
112
|
-
// Create SDK client (auto-configured from connection)
|
|
113
|
-
const client = await createClient(ctx);
|
|
114
|
-
|
|
115
|
-
// Query inventory positions
|
|
116
|
-
const result = await client.graphql({
|
|
117
|
-
query: `
|
|
118
|
-
query GetInventoryPositions($first: Int!) {
|
|
119
|
-
inventoryPositions(first: $first) {
|
|
120
|
-
edges {
|
|
121
|
-
node {
|
|
122
|
-
id
|
|
123
|
-
ref
|
|
124
|
-
productRef
|
|
125
|
-
locationRef
|
|
126
|
-
onHand
|
|
127
|
-
status
|
|
128
|
-
}
|
|
129
|
-
cursor
|
|
130
|
-
}
|
|
131
|
-
pageInfo {
|
|
132
|
-
hasNextPage
|
|
133
|
-
endCursor
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
`,
|
|
138
|
-
variables: { first: 10 }
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
// Check for GraphQL errors
|
|
142
|
-
if (result.errors?.length) {
|
|
143
|
-
throw new Error(`GraphQL error: ${result.errors[0].message}`);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
const positions = result.data.inventoryPositions.edges;
|
|
147
|
-
|
|
148
|
-
ctx.log('info', `Retrieved ${positions.length} inventory positions`);
|
|
149
|
-
|
|
150
|
-
// Return results
|
|
151
|
-
return {
|
|
152
|
-
success: true,
|
|
153
|
-
count: positions.length,
|
|
154
|
-
data: positions.map(edge => edge.node),
|
|
155
|
-
pageInfo: result.data.inventoryPositions.pageInfo
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
} catch (error) {
|
|
159
|
-
ctx.log('error', 'Inventory query failed', {
|
|
160
|
-
error: error instanceof Error ? error.message : String(error)
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
// Return error response
|
|
164
|
-
return {
|
|
165
|
-
success: false,
|
|
166
|
-
error: error instanceof Error ? error.message : 'Unknown error'
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
### Understanding the Code
|
|
173
|
-
|
|
174
|
-
**Workflow Type**: `http()` - External API calls
|
|
175
|
-
- Requires `connection` parameter for OAuth2
|
|
176
|
-
- Provides `ctx.fetch` (pre-authenticated)
|
|
177
|
-
- Supports retry and timeout configuration
|
|
178
|
-
|
|
179
|
-
**createClient(ctx)**: Universal factory
|
|
180
|
-
- Detects Versori context automatically
|
|
181
|
-
- Creates `FluentVersoriClient` with connection credentials
|
|
182
|
-
- Handles OAuth2 token management
|
|
183
|
-
|
|
184
|
-
**ctx.log()**: Platform logging
|
|
185
|
-
- Levels: `'debug'`, `'info'`, `'warn'`, `'error'`
|
|
186
|
-
- Logs visible in Versori dashboard
|
|
187
|
-
- Structured logging with metadata
|
|
188
|
-
|
|
189
|
-
**GraphQL Query**:
|
|
190
|
-
- Uses Fluent Commerce schema
|
|
191
|
-
- `inventoryPositions` query with pagination
|
|
192
|
-
- Returns edges/nodes structure
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
## Configure Versori Connection
|
|
197
|
-
|
|
198
|
-
### Step 1: Access Versori Dashboard
|
|
199
|
-
|
|
200
|
-
1. Log in to [Versori Platform](https://app.versori.com)
|
|
201
|
-
2. Navigate to your workspace
|
|
202
|
-
3. Go to **Connections** section
|
|
203
|
-
|
|
204
|
-
### Step 2: Create Fluent Commerce Connection
|
|
205
|
-
|
|
206
|
-
Click **"Add Connection"** and configure:
|
|
207
|
-
|
|
208
|
-
**Connection Details**:
|
|
209
|
-
```
|
|
210
|
-
Name: fluent_commerce
|
|
211
|
-
Type: Custom OAuth2
|
|
212
|
-
Auth URL: https://api.fluentcommerce.com/oauth/token
|
|
213
|
-
Token URL: https://api.fluentcommerce.com/oauth/token
|
|
214
|
-
Grant Type: client_credentials
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
**Credentials**:
|
|
218
|
-
```
|
|
219
|
-
Client ID: [Your Fluent OAuth2 Client ID]
|
|
220
|
-
Client Secret: [Your Fluent OAuth2 Client Secret]
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
**Custom Headers**:
|
|
224
|
-
```json
|
|
225
|
-
{
|
|
226
|
-
"Content-Type": "application/json"
|
|
227
|
-
}
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
**Custom Parameters** (optional):
|
|
231
|
-
```json
|
|
232
|
-
{
|
|
233
|
-
"retailerId": "1"
|
|
234
|
-
}
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
### Step 3: Test Connection
|
|
238
|
-
|
|
239
|
-
Click **"Test Connection"** to verify credentials. You should see:
|
|
240
|
-
```
|
|
241
|
-
✓ Connection successful
|
|
242
|
-
✓ Token retrieved
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
---
|
|
246
|
-
|
|
247
|
-
## Deploy Your Connector
|
|
248
|
-
|
|
249
|
-
### Build TypeScript
|
|
250
|
-
|
|
251
|
-
```bash
|
|
252
|
-
npm run build
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
This compiles `src/index.ts` → `dist/index.js`.
|
|
256
|
-
|
|
257
|
-
### Deploy to Versori
|
|
258
|
-
|
|
259
|
-
```bash
|
|
260
|
-
npm run deploy
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
**Expected output**:
|
|
264
|
-
```
|
|
265
|
-
✓ Building project...
|
|
266
|
-
✓ Uploading to Versori...
|
|
267
|
-
✓ Deployment successful
|
|
268
|
-
|
|
269
|
-
Workflows deployed:
|
|
270
|
-
- query-inventory (HTTP)
|
|
271
|
-
URL: https://{workspace}.versori.run/query-inventory
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
### Deployment Notes
|
|
275
|
-
|
|
276
|
-
- **Workspace**: Your unique Versori workspace ID
|
|
277
|
-
- **Endpoint**: Auto-generated based on workflow name
|
|
278
|
-
- **Environment**: Dev/staging/production (configured in Versori UI)
|
|
279
|
-
|
|
280
|
-
---
|
|
281
|
-
|
|
282
|
-
## Test Your Workflow
|
|
283
|
-
|
|
284
|
-
### Option 1: Browser
|
|
285
|
-
|
|
286
|
-
Open your browser and navigate to:
|
|
287
|
-
```
|
|
288
|
-
https://{workspace}.versori.run/query-inventory
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
**Expected Response**:
|
|
292
|
-
```json
|
|
293
|
-
{
|
|
294
|
-
"success": true,
|
|
295
|
-
"count": 10,
|
|
296
|
-
"data": [
|
|
297
|
-
{
|
|
298
|
-
"id": "123",
|
|
299
|
-
"ref": "INV-PROD123-LOC001",
|
|
300
|
-
"productRef": "PROD-123",
|
|
301
|
-
"locationRef": "LOC-001",
|
|
302
|
-
"onHand": 100,
|
|
303
|
-
"status": "AVAILABLE"
|
|
304
|
-
}
|
|
305
|
-
],
|
|
306
|
-
"pageInfo": {
|
|
307
|
-
"hasNextPage": true,
|
|
308
|
-
"endCursor": "cursor-value"
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
### Option 2: cURL
|
|
314
|
-
|
|
315
|
-
```bash
|
|
316
|
-
curl https://{workspace}.versori.run/query-inventory
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
### Option 3: Postman
|
|
320
|
-
|
|
321
|
-
```
|
|
322
|
-
Method: GET
|
|
323
|
-
URL: https://{workspace}.versori.run/query-inventory
|
|
324
|
-
Headers:
|
|
325
|
-
Accept: application/json
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
---
|
|
329
|
-
|
|
330
|
-
## View Logs
|
|
331
|
-
|
|
332
|
-
### Versori Dashboard
|
|
333
|
-
|
|
334
|
-
1. Go to **Workflows** section
|
|
335
|
-
2. Click **query-inventory**
|
|
336
|
-
3. View **Executions** tab
|
|
337
|
-
|
|
338
|
-
**You'll see**:
|
|
339
|
-
- Execution timestamp
|
|
340
|
-
- Duration (ms)
|
|
341
|
-
- Status (success/error)
|
|
342
|
-
- Logs (`ctx.log()` calls)
|
|
343
|
-
|
|
344
|
-
### CLI Logs
|
|
345
|
-
|
|
346
|
-
```bash
|
|
347
|
-
npm run logs
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
**Output**:
|
|
351
|
-
```
|
|
352
|
-
[2025-10-19 12:00:00] INFO: Starting inventory query
|
|
353
|
-
[2025-10-19 12:00:01] INFO: Retrieved 10 inventory positions
|
|
354
|
-
```
|
|
355
|
-
|
|
356
|
-
### Log Filtering
|
|
357
|
-
|
|
358
|
-
```bash
|
|
359
|
-
# Filter by workflow
|
|
360
|
-
versori logs --workflow query-inventory
|
|
361
|
-
|
|
362
|
-
# Filter by level
|
|
363
|
-
versori logs --level error
|
|
364
|
-
|
|
365
|
-
# Tail logs (live)
|
|
366
|
-
versori logs --follow
|
|
367
|
-
```
|
|
368
|
-
|
|
369
|
-
---
|
|
370
|
-
|
|
371
|
-
## Add Query Parameters
|
|
372
|
-
|
|
373
|
-
Let's enhance the workflow to accept query parameters:
|
|
374
|
-
|
|
375
|
-
Update `src/index.ts`:
|
|
376
|
-
|
|
377
|
-
```typescript
|
|
378
|
-
export const queryInventory = http('query-inventory', {
|
|
379
|
-
connection: 'fluent_commerce'
|
|
380
|
-
}, async (ctx) => {
|
|
381
|
-
// Extract query parameters
|
|
382
|
-
const limit = parseInt(ctx.query?.limit || '10');
|
|
383
|
-
const locationRef = ctx.query?.locationRef;
|
|
384
|
-
|
|
385
|
-
ctx.log('info', 'Query parameters', { limit, locationRef });
|
|
386
|
-
|
|
387
|
-
const client = await createClient(ctx);
|
|
388
|
-
|
|
389
|
-
// Build GraphQL query with filters
|
|
390
|
-
let query = `
|
|
391
|
-
query GetInventoryPositions($first: Int!) {
|
|
392
|
-
inventoryPositions(first: $first) {
|
|
393
|
-
edges {
|
|
394
|
-
node {
|
|
395
|
-
id
|
|
396
|
-
ref
|
|
397
|
-
productRef
|
|
398
|
-
locationRef
|
|
399
|
-
onHand
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
`;
|
|
405
|
-
|
|
406
|
-
// Add location filter if provided
|
|
407
|
-
if (locationRef) {
|
|
408
|
-
query = `
|
|
409
|
-
query GetInventoryPositions($first: Int!, $locationRef: String!) {
|
|
410
|
-
inventoryPositions(first: $first, locationRef: $locationRef) {
|
|
411
|
-
edges {
|
|
412
|
-
node {
|
|
413
|
-
id
|
|
414
|
-
ref
|
|
415
|
-
productRef
|
|
416
|
-
locationRef
|
|
417
|
-
onHand
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
`;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
const result = await client.graphql({
|
|
426
|
-
query,
|
|
427
|
-
variables: locationRef
|
|
428
|
-
? { first: limit, locationRef }
|
|
429
|
-
: { first: limit }
|
|
430
|
-
});
|
|
431
|
-
|
|
432
|
-
return {
|
|
433
|
-
success: true,
|
|
434
|
-
count: result.data.inventoryPositions.edges.length,
|
|
435
|
-
data: result.data.inventoryPositions.edges.map(e => e.node)
|
|
436
|
-
};
|
|
437
|
-
});
|
|
438
|
-
```
|
|
439
|
-
|
|
440
|
-
**Rebuild and deploy**:
|
|
441
|
-
```bash
|
|
442
|
-
npm run build && npm run deploy
|
|
443
|
-
```
|
|
444
|
-
|
|
445
|
-
**Test with parameters**:
|
|
446
|
-
```bash
|
|
447
|
-
# Limit results
|
|
448
|
-
curl "https://{workspace}.versori.run/query-inventory?limit=5"
|
|
449
|
-
|
|
450
|
-
# Filter by location
|
|
451
|
-
curl "https://{workspace}.versori.run/query-inventory?locationRef=LOC-001"
|
|
452
|
-
|
|
453
|
-
# Combined
|
|
454
|
-
curl "https://{workspace}.versori.run/query-inventory?limit=20&locationRef=WH-NYC"
|
|
455
|
-
```
|
|
456
|
-
|
|
457
|
-
---
|
|
458
|
-
|
|
459
|
-
## Common Issues & Fixes
|
|
460
|
-
|
|
461
|
-
### Issue 1: "No authentication credentials found"
|
|
462
|
-
|
|
463
|
-
**Cause**: Using `fn()` instead of `http()` for external API calls
|
|
464
|
-
|
|
465
|
-
**Fix**: Use `http()` with connection parameter
|
|
466
|
-
```typescript
|
|
467
|
-
// ❌ Wrong
|
|
468
|
-
export const bad = fn('bad', async (ctx) => {
|
|
469
|
-
const client = await createClient(ctx); // FAILS
|
|
470
|
-
});
|
|
471
|
-
|
|
472
|
-
// ✅ Correct
|
|
473
|
-
export const good = http('good', { connection: 'fluent_commerce' }, async (ctx) => {
|
|
474
|
-
const client = await createClient(ctx); // WORKS
|
|
475
|
-
});
|
|
476
|
-
```
|
|
477
|
-
|
|
478
|
-
### Issue 2: "Connection 'fluent_commerce' not found"
|
|
479
|
-
|
|
480
|
-
**Cause**: Connection name mismatch between code and Versori UI
|
|
481
|
-
|
|
482
|
-
**Fix**: Ensure exact name match (case-sensitive)
|
|
483
|
-
- Code: `connection: 'fluent_commerce'`
|
|
484
|
-
- Versori UI: Name = `fluent_commerce`
|
|
485
|
-
|
|
486
|
-
### Issue 3: "GraphQL validation failed"
|
|
487
|
-
|
|
488
|
-
**Cause**: Invalid GraphQL schema or missing fields
|
|
489
|
-
|
|
490
|
-
**Fix**: Verify query against Fluent schema
|
|
491
|
-
```bash
|
|
492
|
-
# Use SDK introspection tool
|
|
493
|
-
npx @fluentcommerce/fc-connect-sdk introspect-schema \
|
|
494
|
-
--url https://api.fluentcommerce.com/graphql
|
|
495
|
-
```
|
|
496
|
-
|
|
497
|
-
### Issue 4: Deployment fails
|
|
498
|
-
|
|
499
|
-
**Cause**: Missing `versori.workflows` in package.json
|
|
500
|
-
|
|
501
|
-
**Fix**: Add configuration
|
|
502
|
-
```json
|
|
503
|
-
{
|
|
504
|
-
"versori": {
|
|
505
|
-
"workflows": "dist/index.js"
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
```
|
|
509
|
-
|
|
510
|
-
---
|
|
511
|
-
|
|
512
|
-
## Key Takeaways
|
|
513
|
-
|
|
514
|
-
- 🎯 **http() workflows** require `connection` parameter for OAuth2
|
|
515
|
-
- 🎯 **createClient(ctx)** automatically configures SDK from connection
|
|
516
|
-
- 🎯 **Connection name** must match between code and Versori UI
|
|
517
|
-
- 🎯 **ctx.log()** provides platform logging visible in dashboard
|
|
518
|
-
- 🎯 **versori.workflows** in package.json tells platform where to find workflows
|
|
519
|
-
- 🎯 **Deploy workflow**: Build → Deploy → Test → Monitor logs
|
|
520
|
-
|
|
521
|
-
---
|
|
522
|
-
|
|
523
|
-
## Practice Exercise
|
|
524
|
-
|
|
525
|
-
Create a second workflow that creates an inventory position:
|
|
526
|
-
|
|
527
|
-
**Requirements**:
|
|
528
|
-
1. Use `http()` with `fluent_commerce` connection
|
|
529
|
-
2. Accept POST request with body: `{ productRef, locationRef, qty }`
|
|
530
|
-
3. Use GraphQL mutation to create inventory position
|
|
531
|
-
4. Return created position ID
|
|
532
|
-
5. Log operation start and completion
|
|
533
|
-
|
|
534
|
-
**Hints**:
|
|
535
|
-
- Use `ctx.data` to access POST body
|
|
536
|
-
- Use `createInventoryPosition` mutation
|
|
537
|
-
- Handle validation errors
|
|
538
|
-
|
|
539
|
-
**Solution** available in [Module 8: Best Practices](./platforms-versori-08-best-practices.md#practice-solutions)
|
|
540
|
-
|
|
541
|
-
---
|
|
542
|
-
|
|
543
|
-
## Next Steps
|
|
544
|
-
|
|
545
|
-
Now that you have a working connector, let's dive deeper into authentication and connections.
|
|
546
|
-
|
|
547
|
-
Continue to [Module 3: Authentication →](./platforms-versori-03-authentication.md) to learn about OAuth2, connection management, and FluentVersoriClient.
|
|
548
|
-
|
|
549
|
-
---
|
|
550
|
-
|
|
551
|
-
## Related Documentation
|
|
552
|
-
|
|
553
|
-
- [Module 1: Introduction](./platforms-versori-01-introduction.md) - Platform overview
|
|
554
|
-
- [Module 3: Authentication](./platforms-versori-03-authentication.md) - OAuth2 and connections
|
|
555
|
-
- [Module 4: Workflows](./platforms-versori-04-workflows.md) - All workflow types
|
|
556
|
-
- [Module 7: Deployment](./platforms-versori-07-deployment.md) - Production deployment patterns
|
|
557
|
-
|
|
558
|
-
---
|
|
559
|
-
|
|
560
|
-
[← Previous: Module 1](./platforms-versori-01-introduction.md) | [Back to Guide](../platforms-versori-readme.md) | [Next: Module 3: Authentication →](./platforms-versori-03-authentication.md)
|
|
1
|
+
# Module 2: Quick Start - Your First Versori Connector
|
|
2
|
+
|
|
3
|
+
[← Back to Versori Platform Guide](../platforms-versori-readme.md)
|
|
4
|
+
|
|
5
|
+
**Module 2 of 8** | **Level**: Beginner | **Time**: 20 minutes
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Learning Objectives
|
|
10
|
+
|
|
11
|
+
By the end of this module, you will:
|
|
12
|
+
- ✅ Create a Versori connector project from scratch
|
|
13
|
+
- ✅ Configure Fluent Commerce connection in Versori UI
|
|
14
|
+
- ✅ Deploy your first HTTP workflow
|
|
15
|
+
- ✅ Test the deployed endpoint
|
|
16
|
+
- ✅ View logs and monitor execution
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Project Setup
|
|
21
|
+
|
|
22
|
+
### Step 1: Create Project Directory
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
mkdir my-fluent-connector
|
|
26
|
+
cd my-fluent-connector
|
|
27
|
+
npm init -y
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Step 2: Install Dependencies
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npm install @fluentcommerce/fc-connect-sdk @versori/run
|
|
34
|
+
npm install --save-dev typescript @types/node
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Step 3: TypeScript Configuration
|
|
38
|
+
|
|
39
|
+
Create `tsconfig.json`:
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"compilerOptions": {
|
|
44
|
+
"module": "ES2022",
|
|
45
|
+
"target": "ES2024",
|
|
46
|
+
"moduleResolution": "node"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Step 4: Package Configuration
|
|
52
|
+
|
|
53
|
+
Update `package.json`:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"name": "my-fluent-connector",
|
|
58
|
+
"version": "1.0.0",
|
|
59
|
+
"main": "dist/index.js",
|
|
60
|
+
"scripts": {
|
|
61
|
+
"build": "tsc",
|
|
62
|
+
"deploy": "versori deploy",
|
|
63
|
+
"logs": "versori logs",
|
|
64
|
+
"validate": "tsc --noEmit"
|
|
65
|
+
},
|
|
66
|
+
"dependencies": {
|
|
67
|
+
"@fluentcommerce/fc-connect-sdk": "latest",
|
|
68
|
+
"@versori/run": "^0.4.4"
|
|
69
|
+
},
|
|
70
|
+
"devDependencies": {
|
|
71
|
+
"typescript": "^5.0.0",
|
|
72
|
+
"@types/node": "^20.0.0"
|
|
73
|
+
},
|
|
74
|
+
"versori": {
|
|
75
|
+
"workflows": "dist/index.js"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Critical**: The `versori.workflows` field tells Versori where to find your exported workflows.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Your First Workflow: Query Fluent Inventory
|
|
85
|
+
|
|
86
|
+
### Create Workflow File
|
|
87
|
+
|
|
88
|
+
Create `src/index.ts`:
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
import { http } from '@versori/run';
|
|
92
|
+
import { createClient } from '@fluentcommerce/fc-connect-sdk';
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* HTTP workflow: Query Fluent Commerce inventory
|
|
96
|
+
*
|
|
97
|
+
* Endpoint: https://{workspace}.versori.run/query-inventory
|
|
98
|
+
* Method: GET
|
|
99
|
+
*/
|
|
100
|
+
export const queryInventory = http('query-inventory', {
|
|
101
|
+
connection: 'fluent_commerce', // CRITICAL: Matches connection name in Versori UI
|
|
102
|
+
timeout: 30000, // 30 second timeout
|
|
103
|
+
retry: {
|
|
104
|
+
attempts: 3, // Retry up to 3 times on failure
|
|
105
|
+
delay: 1000 // 1 second between retries
|
|
106
|
+
}
|
|
107
|
+
}, async (ctx) => {
|
|
108
|
+
// Log workflow start
|
|
109
|
+
ctx.log('info', 'Starting inventory query');
|
|
110
|
+
|
|
111
|
+
try {
|
|
112
|
+
// Create SDK client (auto-configured from connection)
|
|
113
|
+
const client = await createClient(ctx);
|
|
114
|
+
|
|
115
|
+
// Query inventory positions
|
|
116
|
+
const result = await client.graphql({
|
|
117
|
+
query: `
|
|
118
|
+
query GetInventoryPositions($first: Int!) {
|
|
119
|
+
inventoryPositions(first: $first) {
|
|
120
|
+
edges {
|
|
121
|
+
node {
|
|
122
|
+
id
|
|
123
|
+
ref
|
|
124
|
+
productRef
|
|
125
|
+
locationRef
|
|
126
|
+
onHand
|
|
127
|
+
status
|
|
128
|
+
}
|
|
129
|
+
cursor
|
|
130
|
+
}
|
|
131
|
+
pageInfo {
|
|
132
|
+
hasNextPage
|
|
133
|
+
endCursor
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
`,
|
|
138
|
+
variables: { first: 10 }
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
// Check for GraphQL errors
|
|
142
|
+
if (result.errors?.length) {
|
|
143
|
+
throw new Error(`GraphQL error: ${result.errors[0].message}`);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const positions = result.data.inventoryPositions.edges;
|
|
147
|
+
|
|
148
|
+
ctx.log('info', `Retrieved ${positions.length} inventory positions`);
|
|
149
|
+
|
|
150
|
+
// Return results
|
|
151
|
+
return {
|
|
152
|
+
success: true,
|
|
153
|
+
count: positions.length,
|
|
154
|
+
data: positions.map(edge => edge.node),
|
|
155
|
+
pageInfo: result.data.inventoryPositions.pageInfo
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
} catch (error) {
|
|
159
|
+
ctx.log('error', 'Inventory query failed', {
|
|
160
|
+
error: error instanceof Error ? error.message : String(error)
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
// Return error response
|
|
164
|
+
return {
|
|
165
|
+
success: false,
|
|
166
|
+
error: error instanceof Error ? error.message : 'Unknown error'
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Understanding the Code
|
|
173
|
+
|
|
174
|
+
**Workflow Type**: `http()` - External API calls
|
|
175
|
+
- Requires `connection` parameter for OAuth2
|
|
176
|
+
- Provides `ctx.fetch` (pre-authenticated)
|
|
177
|
+
- Supports retry and timeout configuration
|
|
178
|
+
|
|
179
|
+
**createClient(ctx)**: Universal factory
|
|
180
|
+
- Detects Versori context automatically
|
|
181
|
+
- Creates `FluentVersoriClient` with connection credentials
|
|
182
|
+
- Handles OAuth2 token management
|
|
183
|
+
|
|
184
|
+
**ctx.log()**: Platform logging
|
|
185
|
+
- Levels: `'debug'`, `'info'`, `'warn'`, `'error'`
|
|
186
|
+
- Logs visible in Versori dashboard
|
|
187
|
+
- Structured logging with metadata
|
|
188
|
+
|
|
189
|
+
**GraphQL Query**:
|
|
190
|
+
- Uses Fluent Commerce schema
|
|
191
|
+
- `inventoryPositions` query with pagination
|
|
192
|
+
- Returns edges/nodes structure
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Configure Versori Connection
|
|
197
|
+
|
|
198
|
+
### Step 1: Access Versori Dashboard
|
|
199
|
+
|
|
200
|
+
1. Log in to [Versori Platform](https://app.versori.com)
|
|
201
|
+
2. Navigate to your workspace
|
|
202
|
+
3. Go to **Connections** section
|
|
203
|
+
|
|
204
|
+
### Step 2: Create Fluent Commerce Connection
|
|
205
|
+
|
|
206
|
+
Click **"Add Connection"** and configure:
|
|
207
|
+
|
|
208
|
+
**Connection Details**:
|
|
209
|
+
```
|
|
210
|
+
Name: fluent_commerce
|
|
211
|
+
Type: Custom OAuth2
|
|
212
|
+
Auth URL: https://api.fluentcommerce.com/oauth/token
|
|
213
|
+
Token URL: https://api.fluentcommerce.com/oauth/token
|
|
214
|
+
Grant Type: client_credentials
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Credentials**:
|
|
218
|
+
```
|
|
219
|
+
Client ID: [Your Fluent OAuth2 Client ID]
|
|
220
|
+
Client Secret: [Your Fluent OAuth2 Client Secret]
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
**Custom Headers**:
|
|
224
|
+
```json
|
|
225
|
+
{
|
|
226
|
+
"Content-Type": "application/json"
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Custom Parameters** (optional):
|
|
231
|
+
```json
|
|
232
|
+
{
|
|
233
|
+
"retailerId": "1"
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Step 3: Test Connection
|
|
238
|
+
|
|
239
|
+
Click **"Test Connection"** to verify credentials. You should see:
|
|
240
|
+
```
|
|
241
|
+
✓ Connection successful
|
|
242
|
+
✓ Token retrieved
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Deploy Your Connector
|
|
248
|
+
|
|
249
|
+
### Build TypeScript
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
npm run build
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
This compiles `src/index.ts` → `dist/index.js`.
|
|
256
|
+
|
|
257
|
+
### Deploy to Versori
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
npm run deploy
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**Expected output**:
|
|
264
|
+
```
|
|
265
|
+
✓ Building project...
|
|
266
|
+
✓ Uploading to Versori...
|
|
267
|
+
✓ Deployment successful
|
|
268
|
+
|
|
269
|
+
Workflows deployed:
|
|
270
|
+
- query-inventory (HTTP)
|
|
271
|
+
URL: https://{workspace}.versori.run/query-inventory
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Deployment Notes
|
|
275
|
+
|
|
276
|
+
- **Workspace**: Your unique Versori workspace ID
|
|
277
|
+
- **Endpoint**: Auto-generated based on workflow name
|
|
278
|
+
- **Environment**: Dev/staging/production (configured in Versori UI)
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Test Your Workflow
|
|
283
|
+
|
|
284
|
+
### Option 1: Browser
|
|
285
|
+
|
|
286
|
+
Open your browser and navigate to:
|
|
287
|
+
```
|
|
288
|
+
https://{workspace}.versori.run/query-inventory
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
**Expected Response**:
|
|
292
|
+
```json
|
|
293
|
+
{
|
|
294
|
+
"success": true,
|
|
295
|
+
"count": 10,
|
|
296
|
+
"data": [
|
|
297
|
+
{
|
|
298
|
+
"id": "123",
|
|
299
|
+
"ref": "INV-PROD123-LOC001",
|
|
300
|
+
"productRef": "PROD-123",
|
|
301
|
+
"locationRef": "LOC-001",
|
|
302
|
+
"onHand": 100,
|
|
303
|
+
"status": "AVAILABLE"
|
|
304
|
+
}
|
|
305
|
+
],
|
|
306
|
+
"pageInfo": {
|
|
307
|
+
"hasNextPage": true,
|
|
308
|
+
"endCursor": "cursor-value"
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### Option 2: cURL
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
curl https://{workspace}.versori.run/query-inventory
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Option 3: Postman
|
|
320
|
+
|
|
321
|
+
```
|
|
322
|
+
Method: GET
|
|
323
|
+
URL: https://{workspace}.versori.run/query-inventory
|
|
324
|
+
Headers:
|
|
325
|
+
Accept: application/json
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
## View Logs
|
|
331
|
+
|
|
332
|
+
### Versori Dashboard
|
|
333
|
+
|
|
334
|
+
1. Go to **Workflows** section
|
|
335
|
+
2. Click **query-inventory**
|
|
336
|
+
3. View **Executions** tab
|
|
337
|
+
|
|
338
|
+
**You'll see**:
|
|
339
|
+
- Execution timestamp
|
|
340
|
+
- Duration (ms)
|
|
341
|
+
- Status (success/error)
|
|
342
|
+
- Logs (`ctx.log()` calls)
|
|
343
|
+
|
|
344
|
+
### CLI Logs
|
|
345
|
+
|
|
346
|
+
```bash
|
|
347
|
+
npm run logs
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
**Output**:
|
|
351
|
+
```
|
|
352
|
+
[2025-10-19 12:00:00] INFO: Starting inventory query
|
|
353
|
+
[2025-10-19 12:00:01] INFO: Retrieved 10 inventory positions
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
### Log Filtering
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
# Filter by workflow
|
|
360
|
+
versori logs --workflow query-inventory
|
|
361
|
+
|
|
362
|
+
# Filter by level
|
|
363
|
+
versori logs --level error
|
|
364
|
+
|
|
365
|
+
# Tail logs (live)
|
|
366
|
+
versori logs --follow
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
## Add Query Parameters
|
|
372
|
+
|
|
373
|
+
Let's enhance the workflow to accept query parameters:
|
|
374
|
+
|
|
375
|
+
Update `src/index.ts`:
|
|
376
|
+
|
|
377
|
+
```typescript
|
|
378
|
+
export const queryInventory = http('query-inventory', {
|
|
379
|
+
connection: 'fluent_commerce'
|
|
380
|
+
}, async (ctx) => {
|
|
381
|
+
// Extract query parameters
|
|
382
|
+
const limit = parseInt(ctx.query?.limit || '10');
|
|
383
|
+
const locationRef = ctx.query?.locationRef;
|
|
384
|
+
|
|
385
|
+
ctx.log('info', 'Query parameters', { limit, locationRef });
|
|
386
|
+
|
|
387
|
+
const client = await createClient(ctx);
|
|
388
|
+
|
|
389
|
+
// Build GraphQL query with filters
|
|
390
|
+
let query = `
|
|
391
|
+
query GetInventoryPositions($first: Int!) {
|
|
392
|
+
inventoryPositions(first: $first) {
|
|
393
|
+
edges {
|
|
394
|
+
node {
|
|
395
|
+
id
|
|
396
|
+
ref
|
|
397
|
+
productRef
|
|
398
|
+
locationRef
|
|
399
|
+
onHand
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
`;
|
|
405
|
+
|
|
406
|
+
// Add location filter if provided
|
|
407
|
+
if (locationRef) {
|
|
408
|
+
query = `
|
|
409
|
+
query GetInventoryPositions($first: Int!, $locationRef: String!) {
|
|
410
|
+
inventoryPositions(first: $first, locationRef: $locationRef) {
|
|
411
|
+
edges {
|
|
412
|
+
node {
|
|
413
|
+
id
|
|
414
|
+
ref
|
|
415
|
+
productRef
|
|
416
|
+
locationRef
|
|
417
|
+
onHand
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
`;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
const result = await client.graphql({
|
|
426
|
+
query,
|
|
427
|
+
variables: locationRef
|
|
428
|
+
? { first: limit, locationRef }
|
|
429
|
+
: { first: limit }
|
|
430
|
+
});
|
|
431
|
+
|
|
432
|
+
return {
|
|
433
|
+
success: true,
|
|
434
|
+
count: result.data.inventoryPositions.edges.length,
|
|
435
|
+
data: result.data.inventoryPositions.edges.map(e => e.node)
|
|
436
|
+
};
|
|
437
|
+
});
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
**Rebuild and deploy**:
|
|
441
|
+
```bash
|
|
442
|
+
npm run build && npm run deploy
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
**Test with parameters**:
|
|
446
|
+
```bash
|
|
447
|
+
# Limit results
|
|
448
|
+
curl "https://{workspace}.versori.run/query-inventory?limit=5"
|
|
449
|
+
|
|
450
|
+
# Filter by location
|
|
451
|
+
curl "https://{workspace}.versori.run/query-inventory?locationRef=LOC-001"
|
|
452
|
+
|
|
453
|
+
# Combined
|
|
454
|
+
curl "https://{workspace}.versori.run/query-inventory?limit=20&locationRef=WH-NYC"
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
---
|
|
458
|
+
|
|
459
|
+
## Common Issues & Fixes
|
|
460
|
+
|
|
461
|
+
### Issue 1: "No authentication credentials found"
|
|
462
|
+
|
|
463
|
+
**Cause**: Using `fn()` instead of `http()` for external API calls
|
|
464
|
+
|
|
465
|
+
**Fix**: Use `http()` with connection parameter
|
|
466
|
+
```typescript
|
|
467
|
+
// ❌ Wrong
|
|
468
|
+
export const bad = fn('bad', async (ctx) => {
|
|
469
|
+
const client = await createClient(ctx); // FAILS
|
|
470
|
+
});
|
|
471
|
+
|
|
472
|
+
// ✅ Correct
|
|
473
|
+
export const good = http('good', { connection: 'fluent_commerce' }, async (ctx) => {
|
|
474
|
+
const client = await createClient(ctx); // WORKS
|
|
475
|
+
});
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
### Issue 2: "Connection 'fluent_commerce' not found"
|
|
479
|
+
|
|
480
|
+
**Cause**: Connection name mismatch between code and Versori UI
|
|
481
|
+
|
|
482
|
+
**Fix**: Ensure exact name match (case-sensitive)
|
|
483
|
+
- Code: `connection: 'fluent_commerce'`
|
|
484
|
+
- Versori UI: Name = `fluent_commerce`
|
|
485
|
+
|
|
486
|
+
### Issue 3: "GraphQL validation failed"
|
|
487
|
+
|
|
488
|
+
**Cause**: Invalid GraphQL schema or missing fields
|
|
489
|
+
|
|
490
|
+
**Fix**: Verify query against Fluent schema
|
|
491
|
+
```bash
|
|
492
|
+
# Use SDK introspection tool
|
|
493
|
+
npx @fluentcommerce/fc-connect-sdk introspect-schema \
|
|
494
|
+
--url https://api.fluentcommerce.com/graphql
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
### Issue 4: Deployment fails
|
|
498
|
+
|
|
499
|
+
**Cause**: Missing `versori.workflows` in package.json
|
|
500
|
+
|
|
501
|
+
**Fix**: Add configuration
|
|
502
|
+
```json
|
|
503
|
+
{
|
|
504
|
+
"versori": {
|
|
505
|
+
"workflows": "dist/index.js"
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
---
|
|
511
|
+
|
|
512
|
+
## Key Takeaways
|
|
513
|
+
|
|
514
|
+
- 🎯 **http() workflows** require `connection` parameter for OAuth2
|
|
515
|
+
- 🎯 **createClient(ctx)** automatically configures SDK from connection
|
|
516
|
+
- 🎯 **Connection name** must match between code and Versori UI
|
|
517
|
+
- 🎯 **ctx.log()** provides platform logging visible in dashboard
|
|
518
|
+
- 🎯 **versori.workflows** in package.json tells platform where to find workflows
|
|
519
|
+
- 🎯 **Deploy workflow**: Build → Deploy → Test → Monitor logs
|
|
520
|
+
|
|
521
|
+
---
|
|
522
|
+
|
|
523
|
+
## Practice Exercise
|
|
524
|
+
|
|
525
|
+
Create a second workflow that creates an inventory position:
|
|
526
|
+
|
|
527
|
+
**Requirements**:
|
|
528
|
+
1. Use `http()` with `fluent_commerce` connection
|
|
529
|
+
2. Accept POST request with body: `{ productRef, locationRef, qty }`
|
|
530
|
+
3. Use GraphQL mutation to create inventory position
|
|
531
|
+
4. Return created position ID
|
|
532
|
+
5. Log operation start and completion
|
|
533
|
+
|
|
534
|
+
**Hints**:
|
|
535
|
+
- Use `ctx.data` to access POST body
|
|
536
|
+
- Use `createInventoryPosition` mutation
|
|
537
|
+
- Handle validation errors
|
|
538
|
+
|
|
539
|
+
**Solution** available in [Module 8: Best Practices](./platforms-versori-08-best-practices.md#practice-solutions)
|
|
540
|
+
|
|
541
|
+
---
|
|
542
|
+
|
|
543
|
+
## Next Steps
|
|
544
|
+
|
|
545
|
+
Now that you have a working connector, let's dive deeper into authentication and connections.
|
|
546
|
+
|
|
547
|
+
Continue to [Module 3: Authentication →](./platforms-versori-03-authentication.md) to learn about OAuth2, connection management, and FluentVersoriClient.
|
|
548
|
+
|
|
549
|
+
---
|
|
550
|
+
|
|
551
|
+
## Related Documentation
|
|
552
|
+
|
|
553
|
+
- [Module 1: Introduction](./platforms-versori-01-introduction.md) - Platform overview
|
|
554
|
+
- [Module 3: Authentication](./platforms-versori-03-authentication.md) - OAuth2 and connections
|
|
555
|
+
- [Module 4: Workflows](./platforms-versori-04-workflows.md) - All workflow types
|
|
556
|
+
- [Module 7: Deployment](./platforms-versori-07-deployment.md) - Production deployment patterns
|
|
557
|
+
|
|
558
|
+
---
|
|
559
|
+
|
|
560
|
+
[← Previous: Module 1](./platforms-versori-01-introduction.md) | [Back to Guide](../platforms-versori-readme.md) | [Next: Module 3: Authentication →](./platforms-versori-03-authentication.md)
|