From a96a3362bd2b609e3cd2af5a253e1f63ca3cac5e Mon Sep 17 00:00:00 2001 From: gh-actions Date: Fri, 27 Oct 2023 14:48:32 +0000 Subject: [PATCH] Deploy website - based on e31d4c902615d85da875ab52e5b8003739f2b811 --- 404.html | 4 ++-- adaptors.html | 6 +++--- adaptors/cht.html | 4 ++-- adaptors/ckan.html | 4 ++-- adaptors/commcare.html | 4 ++-- adaptors/dhis2.html | 4 ++-- adaptors/godata.html | 4 ++-- adaptors/googlesheets.html | 4 ++-- adaptors/kobotoolbox.html | 4 ++-- adaptors/library.html | 4 ++-- .../library/jobs/auto/0-Get-TEI-data-2021-06-02.html | 4 ++-- .../jobs/auto/01-send-mailgun-email-2018-12-04.html | 4 ++-- .../jobs/auto/01a-Create-Registrants-2019-11-19.html | 4 ++-- .../auto/01b-Query-new-person-record-2019-12-13.html | 4 ++-- .../01c-Create-person_position-record-2019-12-13.html | 4 ++-- .../02a-Query-DB-for-people-to-pay-2019-12-11.html | 4 ++-- .../jobs/auto/02b-Initiate-Payments-2019-11-19.html | 4 ++-- .../jobs/auto/03-Update-Payment-Status-2019-11-19.html | 4 ++-- .../auto/04a-Query-for-job-changes-2019-12-12.html | 4 ++-- .../jobs/auto/04b-Update-ODK-form-2019-12-03.html | 4 ++-- .../auto/05-Submit-employee-evaluation-2019-12-03.html | 4 ++-- .../auto/05a-Query-for-new-employees-2019-12-19.html | 4 ++-- .../jobs/auto/05b-Update-ODK-eval-form-2019-12-19.html | 4 ++-- .../jobs/auto/1-Create-Payment-in-SF-2018-09-03.html | 4 ++-- .../1-Get-CommCare-Forms-Bulk-Extract-2021-04-08.html | 4 ++-- .../jobs/auto/1-Get-data-from-SLUHIS-2023-03-08.html | 4 ++-- .../2-SMS-Balance-Update-to-Customer-2018-12-14.html | 4 ++-- .../auto/Add-DHIS2-Data-Value-Sets-2016-03-28.html | 4 ++-- .../jobs/auto/Attendance-Non-Skillz-2021-06-14.html | 4 ++-- .../jobs/auto/CHW-case-to-DHIS2-2023-04-27.html | 4 ++-- .../auto/Catch-Error-in-HTTP-Request-2016-08-26.html | 4 ++-- .../jobs/auto/Coach-Session-Register-2021-05-03.html | 4 ++-- adaptors/library/jobs/auto/CommCare-FHIR.html | 4 ++-- .../jobs/auto/CommCare-to-Azure-Sql-2020-01-27.html | 4 ++-- .../jobs/auto/Create-Intervention-2021-04-08.html | 4 ++-- .../auto/Create-Patient-in-OpenMRS-2019-10-24.html | 4 ++-- .../jobs/auto/Create-Person-in-OpenMRS-2016-02-12.html | 4 ++-- .../jobs/auto/Create-Person-in-SF-2019-02-25.html | 4 ++-- .../jobs/auto/Create-SMS-Linked-to-Contact-in-SF.html | 4 ++-- .../library/jobs/auto/Create-TEI-dhis2-2021-03-22.html | 4 ++-- .../library/jobs/auto/Create-contact-2021-03-01.html | 4 ++-- adaptors/library/jobs/auto/DHIS2-DataValues-API.html | 4 ++-- .../library/jobs/auto/DHIS2-Events-2016-01-27.html | 4 ++-- adaptors/library/jobs/auto/DHIS2-Events-API.html | 4 ++-- .../jobs/auto/Extract-Vitas-Data-2021-05-11.html | 4 ++-- .../auto/Failed-Payment-Notification-2021-04-23.html | 4 ++-- .../library/jobs/auto/Fetch-Claims-2023-07-17.html | 4 ++-- .../auto/GET-Data-From-KoboToolbox-2022-03-22.html | 4 ++-- .../Get-CommCare-Forms-Bulk-Extract-2022-05-16.html | 4 ++-- .../jobs/auto/Get-cases-from-Primero-2021-09-23.html | 4 ++-- .../auto/HIV-Testing-Event-Snapshot-2021-05-03.html | 4 ++-- .../auto/HIV-Testing-Event-Statistics-2021-05-03.html | 4 ++-- .../library/jobs/auto/Kobo-to-sheets-2023-10-13.html | 4 ++-- .../Load-Upsert-Data-into-PostgreSQL-2022-03-22.html | 4 ++-- adaptors/library/jobs/auto/Load-to-DB-2022-05-16.html | 4 ++-- .../library/jobs/auto/Load-to-DHIS2-2023-07-17.html | 4 ++-- .../Malaria-Testing-Event-Snapshot-2021-05-03.html | 4 ++-- .../Malaria-Testing-Event-Statistics-2021-05-03.html | 4 ++-- ...any-Records-Moving-In-And-Out-Of-Repeat-Blocks.html | 4 ++-- adaptors/library/jobs/auto/PHQ9-2021-05-03.html | 4 ++-- adaptors/library/jobs/auto/Pay-CHW-2021-04-23.html | 4 ++-- ...-Create-Distribution-Referral-in-SF-2020-06-19.html | 4 ++-- .../Q3-2022-Update-HH-Name-in-CommCare-2021-09-27.html | 4 ++-- ...ert-Household-Household-Visit-in-SF-2022-06-28.html | 4 ++-- .../jobs/auto/Q3-2022-Upsert-Person-2022-04-21.html | 4 ++-- .../auto/Q3-2022-Upsert-Person-Visit-2022-06-28.html | 4 ++-- ...22-Upsert-Supervision-Accompaniment-2022-08-22.html | 4 ++-- ...Q4-2022-Upsert-Supervision-Feedback-2022-08-19.html | 4 ++-- ...rt-Supervision-Household-Spot-Check-2022-08-24.html | 4 ++-- .../Register-Participant-V2-Skillz-2021-06-02.html | 4 ++-- .../library/jobs/auto/Register-Patient-2021-03-02.html | 4 ++-- .../auto/Registration-forms-new-case-2023-06-22.html | 4 ++-- .../jobs/auto/Request-Vitas-Sync-2021-05-11.html | 4 ++-- .../Risk-and-Vulnerability-Assessment-2021-05-27.html | 4 ++-- ...t-ART-Adherence-Self-Reporting-Tool-2021-04-30.html | 4 ++-- .../Upsert-Aggregate-Service-Referrals-2021-04-30.html | 4 ++-- .../Upsert-Attendance-Skillz-Plus-Club-2021-05-24.html | 4 ++-- .../Upsert-Coach-Support-Visit-CSV-2021-04-28.html | 4 ++-- .../Upsert-Confirm-Services-Received-2021-06-14.html | 4 ++-- .../auto/Upsert-Home-Visit-Log-Form-2021-05-03.html | 4 ++-- .../auto/Upsert-Intervention-Notes-2021-04-28.html | 4 ++-- .../jobs/auto/Upsert-Post-Challenges-2021-04-30.html | 4 ++-- .../jobs/auto/Upsert-Pre-Challenges-2021-04-30.html | 4 ++-- .../jobs/auto/Upsert-Register-Event-2021-04-30.html | 4 ++-- .../auto/Upsert-Register-Participant-2021-04-28.html | 4 ++-- .../Upsert-Register-Participant-Skillz-2021-08-30.html | 4 ++-- .../Upsert-Register-Skills-plus-Club-2021-04-30.html | 4 ++-- ...ability-Assessment-Service-Referral-2021-05-25.html | 4 ++-- .../auto/Upsert-Service-Referral-2-2021-06-14.html | 4 ++-- .../jobs/auto/Upsert-Service-Referral-2021-04-30.html | 4 ++-- .../Upsert-Service-Referral-Followup-2021-04-30.html | 4 ++-- .../jobs/auto/Upsert-Team-Group-Name-2021-04-28.html | 4 ++-- .../auto/Upsert-User-in-Salesforce-2021-04-16.html | 4 ++-- .../library/jobs/auto/Upsert-to-mBrana-2021-05-11.html | 4 ++-- .../jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19.html | 4 ++-- ...WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19.html | 4 ++-- .../auto/WF2-1-Bulk-get-Person-cases-2023-05-19.html | 4 ++-- .../auto/WF2-2-Bulk-upsert-Persons-2023-05-19.html | 4 ++-- .../WF3-1-Bulk-get-Person-Visit-cases-2023-05-19.html | 4 ++-- .../WF3-2-Bulk-upsert-Person-Visits-2023-05-19.html | 4 ++-- .../WF3-2a-Repeat-Failed-Person-Visits-2023-05-31.html | 4 ++-- .../auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19.html | 4 ++-- .../auto/WF4-2-Bulk-upsert-Services-2023-05-19.html | 4 ++-- adaptors/library/jobs/auto/aleksa-cron-2022-04-29.html | 4 ++-- .../jobs/auto/alter-state-before-operations.html | 4 ++-- .../library/jobs/auto/async-and-array-dot-map.html | 4 ++-- adaptors/library/jobs/auto/async-findValue.html | 4 ++-- ...-then-create-parent-and-children-in-salesforce.html | 4 ++-- .../jobs/auto/commcare-reports-api-2016-08-29.html | 4 ++-- .../library/jobs/auto/complex-http-request-chains.html | 4 ++-- adaptors/library/jobs/auto/complex-state-control.html | 4 ++-- .../jobs/auto/concatenate-many-fields-with-nulls.html | 4 ++-- adaptors/library/jobs/auto/create-if-proposal.html | 4 ++-- adaptors/library/jobs/auto/getKoboData.html | 4 ++-- adaptors/library/jobs/auto/nawiri-2023-05-03.html | 4 ++-- adaptors/library/jobs/auto/no-return-2023-01-06.html | 4 ++-- .../library/jobs/auto/promise-all-nested-requests.html | 4 ++-- adaptors/library/jobs/auto/send-mail-in-mailgun.html | 4 ++-- .../jobs/auto/send-sms-from-salesforce-workflow.html | 4 ++-- .../library/jobs/auto/synchronous-http-request.html | 4 ++-- adaptors/library/jobs/auto/timeout.html | 4 ++-- ...t-many-items-in-array-with-value-outside-array.html | 4 ++-- adaptors/library/triggers/xmlns.html | 4 ++-- adaptors/magpi.html | 4 ++-- adaptors/moodle.html | 4 ++-- adaptors/odk.html | 4 ++-- adaptors/ona.html | 4 ++-- adaptors/packages/asana-changelog.html | 4 ++-- adaptors/packages/asana-configuration-schema.html | 4 ++-- adaptors/packages/asana-docs.html | 4 ++-- adaptors/packages/asana-readme.html | 4 ++-- adaptors/packages/beyonic-changelog.html | 4 ++-- adaptors/packages/beyonic-configuration-schema.html | 4 ++-- adaptors/packages/beyonic-docs.html | 4 ++-- adaptors/packages/beyonic-readme.html | 4 ++-- adaptors/packages/bigquery-changelog.html | 4 ++-- adaptors/packages/bigquery-configuration-schema.html | 4 ++-- adaptors/packages/bigquery-docs.html | 4 ++-- adaptors/packages/bigquery-readme.html | 4 ++-- adaptors/packages/commcare-changelog.html | 4 ++-- adaptors/packages/commcare-configuration-schema.html | 4 ++-- adaptors/packages/commcare-docs.html | 4 ++-- adaptors/packages/commcare-readme.html | 4 ++-- adaptors/packages/common-changelog.html | 4 ++-- adaptors/packages/common-configuration-schema.html | 4 ++-- adaptors/packages/common-docs.html | 4 ++-- adaptors/packages/common-readme.html | 4 ++-- adaptors/packages/dhis2-changelog.html | 4 ++-- adaptors/packages/dhis2-configuration-schema.html | 4 ++-- adaptors/packages/dhis2-docs.html | 4 ++-- adaptors/packages/dhis2-readme.html | 4 ++-- adaptors/packages/dynamics-changelog.html | 4 ++-- adaptors/packages/dynamics-configuration-schema.html | 4 ++-- adaptors/packages/dynamics-docs.html | 4 ++-- adaptors/packages/dynamics-readme.html | 4 ++-- adaptors/packages/facebook-changelog.html | 4 ++-- adaptors/packages/facebook-configuration-schema.html | 4 ++-- adaptors/packages/facebook-docs.html | 4 ++-- adaptors/packages/facebook-readme.html | 4 ++-- adaptors/packages/fhir-changelog.html | 4 ++-- adaptors/packages/fhir-configuration-schema.html | 4 ++-- adaptors/packages/fhir-docs.html | 4 ++-- adaptors/packages/fhir-readme.html | 4 ++-- adaptors/packages/godata-changelog.html | 4 ++-- adaptors/packages/godata-configuration-schema.html | 4 ++-- adaptors/packages/godata-docs.html | 4 ++-- adaptors/packages/godata-readme.html | 4 ++-- adaptors/packages/googlehealthcare-changelog.html | 4 ++-- .../googlehealthcare-configuration-schema.html | 4 ++-- adaptors/packages/googlehealthcare-docs.html | 4 ++-- adaptors/packages/googlehealthcare-readme.html | 4 ++-- adaptors/packages/googlesheets-changelog.html | 4 ++-- .../packages/googlesheets-configuration-schema.html | 4 ++-- adaptors/packages/googlesheets-docs.html | 4 ++-- adaptors/packages/googlesheets-readme.html | 4 ++-- adaptors/packages/hive-changelog.html | 4 ++-- adaptors/packages/hive-configuration-schema.html | 4 ++-- adaptors/packages/hive-docs.html | 4 ++-- adaptors/packages/hive-readme.html | 4 ++-- adaptors/packages/http-changelog.html | 4 ++-- adaptors/packages/http-configuration-schema.html | 4 ++-- adaptors/packages/http-docs.html | 4 ++-- adaptors/packages/http-readme.html | 4 ++-- adaptors/packages/khanacademy-changelog.html | 4 ++-- .../packages/khanacademy-configuration-schema.html | 4 ++-- adaptors/packages/khanacademy-docs.html | 4 ++-- adaptors/packages/khanacademy-readme.html | 4 ++-- adaptors/packages/kobotoolbox-changelog.html | 4 ++-- .../packages/kobotoolbox-configuration-schema.html | 4 ++-- adaptors/packages/kobotoolbox-docs.html | 4 ++-- adaptors/packages/kobotoolbox-readme.html | 4 ++-- adaptors/packages/magpi-changelog.html | 4 ++-- adaptors/packages/magpi-configuration-schema.html | 4 ++-- adaptors/packages/magpi-docs.html | 4 ++-- adaptors/packages/magpi-readme.html | 4 ++-- adaptors/packages/mailchimp-changelog.html | 4 ++-- adaptors/packages/mailchimp-configuration-schema.html | 4 ++-- adaptors/packages/mailchimp-docs.html | 4 ++-- adaptors/packages/mailchimp-readme.html | 4 ++-- adaptors/packages/mailgun-changelog.html | 4 ++-- adaptors/packages/mailgun-configuration-schema.html | 4 ++-- adaptors/packages/mailgun-docs.html | 4 ++-- adaptors/packages/mailgun-readme.html | 4 ++-- adaptors/packages/maximo-changelog.html | 4 ++-- adaptors/packages/maximo-configuration-schema.html | 4 ++-- adaptors/packages/maximo-docs.html | 4 ++-- adaptors/packages/maximo-readme.html | 4 ++-- adaptors/packages/medicmobile-changelog.html | 4 ++-- .../packages/medicmobile-configuration-schema.html | 4 ++-- adaptors/packages/medicmobile-docs.html | 4 ++-- adaptors/packages/medicmobile-readme.html | 4 ++-- adaptors/packages/mogli-changelog.html | 4 ++-- adaptors/packages/mogli-configuration-schema.html | 4 ++-- adaptors/packages/mogli-docs.html | 4 ++-- adaptors/packages/mogli-readme.html | 4 ++-- adaptors/packages/mongodb-changelog.html | 4 ++-- adaptors/packages/mongodb-configuration-schema.html | 4 ++-- adaptors/packages/mongodb-docs.html | 4 ++-- adaptors/packages/mongodb-readme.html | 4 ++-- adaptors/packages/msgraph-changelog.html | 4 ++-- adaptors/packages/msgraph-configuration-schema.html | 4 ++-- adaptors/packages/msgraph-docs.html | 4 ++-- adaptors/packages/msgraph-readme.html | 4 ++-- adaptors/packages/mssql-changelog.html | 4 ++-- adaptors/packages/mssql-configuration-schema.html | 4 ++-- adaptors/packages/mssql-docs.html | 4 ++-- adaptors/packages/mssql-readme.html | 4 ++-- adaptors/packages/mysql-changelog.html | 4 ++-- adaptors/packages/mysql-configuration-schema.html | 4 ++-- adaptors/packages/mysql-docs.html | 4 ++-- adaptors/packages/mysql-readme.html | 4 ++-- adaptors/packages/nexmo-changelog.html | 4 ++-- adaptors/packages/nexmo-configuration-schema.html | 4 ++-- adaptors/packages/nexmo-docs.html | 4 ++-- adaptors/packages/nexmo-readme.html | 4 ++-- adaptors/packages/ocl-changelog.html | 4 ++-- adaptors/packages/ocl-configuration-schema.html | 4 ++-- adaptors/packages/ocl-docs.html | 4 ++-- adaptors/packages/ocl-readme.html | 4 ++-- adaptors/packages/openfn-changelog.html | 4 ++-- adaptors/packages/openfn-configuration-schema.html | 4 ++-- adaptors/packages/openfn-docs.html | 4 ++-- adaptors/packages/openfn-readme.html | 4 ++-- adaptors/packages/openhim-changelog.html | 4 ++-- adaptors/packages/openhim-configuration-schema.html | 4 ++-- adaptors/packages/openhim-docs.html | 4 ++-- adaptors/packages/openhim-readme.html | 4 ++-- adaptors/packages/openmrs-changelog.html | 4 ++-- adaptors/packages/openmrs-configuration-schema.html | 4 ++-- adaptors/packages/openmrs-docs.html | 4 ++-- adaptors/packages/openmrs-readme.html | 4 ++-- adaptors/packages/postgresql-changelog.html | 4 ++-- adaptors/packages/postgresql-configuration-schema.html | 4 ++-- adaptors/packages/postgresql-docs.html | 4 ++-- adaptors/packages/postgresql-readme.html | 4 ++-- adaptors/packages/primero-changelog.html | 4 ++-- adaptors/packages/primero-configuration-schema.html | 4 ++-- adaptors/packages/primero-docs.html | 4 ++-- adaptors/packages/primero-readme.html | 4 ++-- adaptors/packages/progres-changelog.html | 4 ++-- adaptors/packages/progres-configuration-schema.html | 4 ++-- adaptors/packages/progres-docs.html | 4 ++-- adaptors/packages/progres-readme.html | 4 ++-- adaptors/packages/rapidpro-changelog.html | 4 ++-- adaptors/packages/rapidpro-configuration-schema.html | 4 ++-- adaptors/packages/rapidpro-docs.html | 4 ++-- adaptors/packages/rapidpro-readme.html | 4 ++-- adaptors/packages/resourcemap-changelog.html | 4 ++-- .../packages/resourcemap-configuration-schema.html | 4 ++-- adaptors/packages/resourcemap-docs.html | 4 ++-- adaptors/packages/resourcemap-readme.html | 4 ++-- adaptors/packages/salesforce-changelog.html | 4 ++-- adaptors/packages/salesforce-configuration-schema.html | 4 ++-- adaptors/packages/salesforce-docs.html | 4 ++-- adaptors/packages/salesforce-readme.html | 6 +++--- adaptors/packages/sftp-changelog.html | 10 +++++----- adaptors/packages/sftp-configuration-schema.html | 6 +++--- adaptors/packages/sftp-docs.html | 8 ++++---- adaptors/packages/sftp-readme.html | 4 ++-- adaptors/packages/smpp-changelog.html | 4 ++-- adaptors/packages/smpp-configuration-schema.html | 4 ++-- adaptors/packages/smpp-docs.html | 4 ++-- adaptors/packages/smpp-readme.html | 4 ++-- adaptors/packages/surveycto-changelog.html | 4 ++-- adaptors/packages/surveycto-configuration-schema.html | 4 ++-- adaptors/packages/surveycto-docs.html | 4 ++-- adaptors/packages/surveycto-readme.html | 4 ++-- adaptors/packages/telerivet-changelog.html | 4 ++-- adaptors/packages/telerivet-configuration-schema.html | 4 ++-- adaptors/packages/telerivet-docs.html | 4 ++-- adaptors/packages/telerivet-readme.html | 4 ++-- adaptors/packages/template-changelog.html | 4 ++-- adaptors/packages/template-configuration-schema.html | 4 ++-- adaptors/packages/template-docs.html | 4 ++-- adaptors/packages/template-readme.html | 4 ++-- adaptors/packages/twilio-changelog.html | 4 ++-- adaptors/packages/twilio-configuration-schema.html | 4 ++-- adaptors/packages/twilio-docs.html | 4 ++-- adaptors/packages/twilio-readme.html | 4 ++-- adaptors/packages/vtiger-changelog.html | 4 ++-- adaptors/packages/vtiger-configuration-schema.html | 4 ++-- adaptors/packages/vtiger-docs.html | 4 ++-- adaptors/packages/vtiger-readme.html | 4 ++-- adaptors/packages/zoho-changelog.html | 4 ++-- adaptors/packages/zoho-configuration-schema.html | 4 ++-- adaptors/packages/zoho-docs.html | 4 ++-- adaptors/packages/zoho-readme.html | 4 ++-- adaptors/postgresql.html | 4 ++-- adaptors/powerbi.html | 4 ++-- adaptors/primero.html | 4 ++-- adaptors/salesforce.html | 4 ++-- adaptors/surveycto.html | 4 ++-- adaptors/tableau.html | 4 ++-- articles.html | 4 ++-- articles/2020/06/16/how-information-is-organized.html | 4 ++-- articles/2020/06/24/three-questions-to-ask.html | 4 ++-- articles/2020/07/02/allow-yourself-to-fail.html | 4 ++-- articles/2020/07/14/cron-is-better-than-a-timer.html | 4 ++-- articles/2020/12/09/upsert-in-dhis2.html | 4 ++-- articles/2021/02/03/hosted-or-local-deployment.html | 4 ++-- articles/2021/02/17/syncing-options.html | 4 ++-- articles/2021/05/24/commcare-events.html | 4 ++-- articles/2021/07/05/wrapping-my-head-around-jobs.html | 4 ++-- ...mproving-multistage-docker-builds-using-buildx.html | 4 ++-- articles/2021/10/15/webpack-to-esbuild-part1.html | 4 ++-- .../2021/10/22/testing-react-app-with-jest-hound.html | 4 ++-- ...ng-javascript-helped-me-better-understand-jobs.html | 4 ++-- articles/2022/06/07/workflow-automation.html | 4 ++-- articles/2022/09/19/auth-security.html | 4 ++-- articles/archive.html | 4 ++-- articles/page/2.html | 4 ++-- articles/tags.html | 4 ++-- articles/tags/annoucement.html | 4 ++-- articles/tags/authentication.html | 4 ++-- articles/tags/authorization.html | 4 ++-- articles/tags/automation.html | 4 ++-- articles/tags/browser-testing.html | 4 ++-- articles/tags/build.html | 4 ++-- articles/tags/ci-cd.html | 4 ++-- articles/tags/docker.html | 4 ++-- articles/tags/elixir.html | 4 ++-- articles/tags/how-to.html | 4 ++-- articles/tags/javascript.html | 4 ++-- articles/tags/jobs.html | 4 ++-- articles/tags/js.html | 4 ++-- articles/tags/learning.html | 4 ++-- articles/tags/phoenix.html | 4 ++-- articles/tags/react.html | 4 ++-- articles/tags/security.html | 4 ++-- articles/tags/solution.html | 4 ++-- articles/tags/testing.html | 4 ++-- articles/tags/tips.html | 4 ++-- articles/tags/tips/page/2.html | 4 ++-- articles/tags/webpack.html | 4 ++-- .../js/{09b23959.055f6fdc.js => 09b23959.82732e22.js} | 2 +- .../js/{450c527f.f08f4566.js => 450c527f.fbe9c3a0.js} | 2 +- assets/js/6cb21577.313786a6.js | 1 + assets/js/6cb21577.dd5d259c.js | 1 - assets/js/771488fd.3daf1871.js | 1 - assets/js/771488fd.8a860019.js | 1 + .../js/{cc826739.10eb5ed6.js => cc826739.bbc10bb5.js} | 2 +- .../js/{d9a6c9f9.20516ca7.js => d9a6c9f9.bf670a25.js} | 2 +- ...ntime~main.13254845.js => runtime~main.7a1c3ca5.js} | 2 +- blog.html | 4 ++-- blog/2020/05/31/the-new-openfn-blog.html | 4 ++-- .../04/Building-Integrated-Systems-That-Just-Work.html | 4 ++-- blog/2020/06/04/Technology-Isnt-The-Answer.html | 4 ++-- blog/2020/06/09/enabling-scale-at-myagro.html | 4 ++-- blog/2020/06/10/iKapaData-Case-Study.html | 4 ++-- blog/2020/06/25/SwissTPH-case-study.html | 4 ++-- blog/2020/07/01/KGVK-case-study.html | 4 ++-- .../07/01/african-school-of-excellence-case-study.html | 4 ++-- blog/2020/07/01/airport-case-study.html | 4 ++-- blog/2020/07/08/caris-foundation-case-study.html | 4 ++-- blog/2020/07/13/x-runner-case-study.html | 4 ++-- blog/2020/07/26/sinapis-case-study.html | 4 ++-- blog/2020/07/27/nalibali-case-study.html | 4 ++-- .../02/09/interoperability_for_case_referrals.html | 4 ++-- blog/2021/03/30/digital-global-good.html | 4 ++-- .../07/30/processes-and-open-source-as-choice.html | 4 ++-- .../20/the-case-for-health-information-exchange.html | 4 ++-- ...ter-safeguard-the-world\342\200\231s-wildlife.html" | 4 ++-- blog/2023/03/01/open-human.html | 4 ++-- blog/2023/04/13/lightning-beta.html | 4 ++-- blog/2023/06/01/open-function-group.html | 4 ++-- blog/2023/08/14/OS4H-case-study.html | 4 ++-- blog/archive.html | 4 ++-- blog/page/2.html | 4 ++-- blog/page/3.html | 4 ++-- blog/tags.html | 4 ++-- blog/tags/african-school-of-excellence.html | 4 ++-- blog/tags/agriculture.html | 4 ++-- blog/tags/airport.html | 4 ++-- blog/tags/announcement.html | 4 ++-- blog/tags/automated-reporting.html | 4 ++-- blog/tags/cambodia.html | 4 ++-- blog/tags/caris-foundation.html | 4 ++-- blog/tags/carto.html | 4 ++-- blog/tags/case-management.html | 4 ++-- blog/tags/case-study.html | 4 ++-- blog/tags/case-study/page/2.html | 4 ++-- blog/tags/comm-care.html | 4 ++-- blog/tags/data-monitoring.html | 4 ++-- blog/tags/data-warehouse.html | 4 ++-- blog/tags/deployment.html | 4 ++-- blog/tags/development.html | 4 ++-- blog/tags/dhis-2.html | 4 ++-- blog/tags/education.html | 4 ++-- blog/tags/global-goods.html | 4 ++-- blog/tags/health.html | 4 ++-- blog/tags/healthcare.html | 4 ++-- blog/tags/i-kapa-data.html | 4 ++-- blog/tags/ibm-maximo.html | 4 ++-- blog/tags/kgvk.html | 4 ++-- blog/tags/kobo-toolbox.html | 4 ++-- blog/tags/kopo-kopo.html | 4 ++-- blog/tags/learning-management-system.html | 4 ++-- blog/tags/m-pesa.html | 4 ++-- blog/tags/moh.html | 4 ++-- blog/tags/mssql.html | 4 ++-- blog/tags/my-agro.html | 4 ++-- blog/tags/my-sql.html | 4 ++-- blog/tags/odk.html | 4 ++-- blog/tags/open-solutions-for-health.html | 4 ++-- blog/tags/os-4-h.html | 4 ++-- blog/tags/os-ca-r.html | 4 ++-- blog/tags/payments.html | 4 ++-- blog/tags/postgre-sql.html | 4 ++-- blog/tags/primero.html | 4 ++-- blog/tags/redash.html | 4 ++-- blog/tags/salesforce.html | 4 ++-- blog/tags/sms.html | 4 ++-- blog/tags/st-lucia.html | 4 ++-- blog/tags/supply-chain-system.html | 4 ++-- blog/tags/survey-cto.html | 4 ++-- blog/tags/swiss-tph.html | 4 ++-- blog/tags/telerivet.html | 4 ++-- blog/tags/tips.html | 4 ++-- blog/tags/unicef.html | 4 ++-- blog/tags/wash.html | 4 ++-- blog/tags/wcs.html | 4 ++-- blog/tags/wildlife.html | 4 ++-- blog/tags/x-runner.html | 4 ++-- blog/tags/zoho.html | 4 ++-- documentation.html | 4 ++-- documentation/about-lightning.html | 4 ++-- documentation/about.html | 4 ++-- documentation/build/credentials.html | 4 ++-- documentation/build/example-build.html | 4 ++-- documentation/build/inbox.html | 4 ++-- documentation/build/jobs.html | 4 ++-- documentation/build/lightning-quick-start.html | 4 ++-- documentation/build/triggers.html | 4 ++-- documentation/build/troubleshooting.html | 4 ++-- documentation/cli.html | 4 ++-- documentation/core.html | 4 ++-- documentation/deploy/options.html | 4 ++-- documentation/deploy/requirements.html | 4 ++-- documentation/design/design-quickstart.html | 4 ++-- documentation/design/when-to-integrate.html | 4 ++-- documentation/devtools/home.html | 4 ++-- documentation/faqs.html | 4 ++-- documentation/for-devs.html | 4 ++-- .../getting-started/commcare-project-walkthrough.html | 4 ++-- documentation/getting-started/glossary.html | 4 ++-- .../getting-started/implementation-checklist.html | 4 ++-- .../getting-started/integrating-using-openfn.html | 4 ++-- documentation/getting-started/integration-toolkit.html | 4 ++-- documentation/getting-started/security.html | 4 ++-- .../getting-started/so-you-want-to-integrate.html | 8 ++++---- documentation/getting-started/terminology.html | 4 ++-- documentation/gsoc.html | 4 ++-- documentation/instant-openhie.html | 4 ++-- documentation/jobs/each.html | 4 ++-- documentation/jobs/editing_locally.html | 4 ++-- documentation/jobs/errors.html | 4 ++-- documentation/jobs/job-design-intro.html | 4 ++-- documentation/jobs/job-studio.html | 4 ++-- documentation/jobs/limits.html | 4 ++-- documentation/jobs/multiple-operations.html | 4 ++-- documentation/jobs/operations.html | 4 ++-- documentation/jobs/state.html | 4 ++-- documentation/jobs/understanding.html | 4 ++-- documentation/jobs/working_with_branches.html | 4 ++-- documentation/manage/platform-mgmt.html | 4 ++-- .../manage/troubleshooting-tips-on-platform.html | 4 ++-- documentation/microservice/home.html | 4 ++-- documentation/openfn-roadmap.html | 4 ++-- documentation/portability-versions.html | 4 ++-- documentation/portability.html | 4 ++-- documentation/release-notes.html | 4 ++-- documentation/roadmap.html | 4 ++-- documentation/source-apps.html | 4 ++-- documentation/standards/digital-public-goods.html | 4 ++-- documentation/standards/global-goods.html | 4 ++-- documentation/standards/openhie.html | 4 ++-- documentation/style-guide.html | 4 ++-- documentation/writing-code.html | 4 ++-- documentation/writing-docs.html | 4 ++-- fr/404.html | 4 ++-- fr/adaptors.html | 6 +++--- fr/adaptors/cht.html | 4 ++-- fr/adaptors/ckan.html | 4 ++-- fr/adaptors/commcare.html | 4 ++-- fr/adaptors/dhis2.html | 4 ++-- fr/adaptors/godata.html | 4 ++-- fr/adaptors/googlesheets.html | 4 ++-- fr/adaptors/kobotoolbox.html | 4 ++-- fr/adaptors/library.html | 4 ++-- .../library/jobs/auto/0-Get-TEI-data-2021-06-02.html | 4 ++-- .../jobs/auto/01-send-mailgun-email-2018-12-04.html | 4 ++-- .../jobs/auto/01a-Create-Registrants-2019-11-19.html | 4 ++-- .../auto/01b-Query-new-person-record-2019-12-13.html | 4 ++-- .../01c-Create-person_position-record-2019-12-13.html | 4 ++-- .../02a-Query-DB-for-people-to-pay-2019-12-11.html | 4 ++-- .../jobs/auto/02b-Initiate-Payments-2019-11-19.html | 4 ++-- .../jobs/auto/03-Update-Payment-Status-2019-11-19.html | 4 ++-- .../auto/04a-Query-for-job-changes-2019-12-12.html | 4 ++-- .../jobs/auto/04b-Update-ODK-form-2019-12-03.html | 4 ++-- .../auto/05-Submit-employee-evaluation-2019-12-03.html | 4 ++-- .../auto/05a-Query-for-new-employees-2019-12-19.html | 4 ++-- .../jobs/auto/05b-Update-ODK-eval-form-2019-12-19.html | 4 ++-- .../jobs/auto/1-Create-Payment-in-SF-2018-09-03.html | 4 ++-- .../1-Get-CommCare-Forms-Bulk-Extract-2021-04-08.html | 4 ++-- .../jobs/auto/1-Get-data-from-SLUHIS-2023-03-08.html | 4 ++-- .../2-SMS-Balance-Update-to-Customer-2018-12-14.html | 4 ++-- .../auto/Add-DHIS2-Data-Value-Sets-2016-03-28.html | 4 ++-- .../jobs/auto/Attendance-Non-Skillz-2021-06-14.html | 4 ++-- .../jobs/auto/CHW-case-to-DHIS2-2023-04-27.html | 4 ++-- .../auto/Catch-Error-in-HTTP-Request-2016-08-26.html | 4 ++-- .../jobs/auto/Coach-Session-Register-2021-05-03.html | 4 ++-- fr/adaptors/library/jobs/auto/CommCare-FHIR.html | 4 ++-- .../jobs/auto/CommCare-to-Azure-Sql-2020-01-27.html | 4 ++-- .../jobs/auto/Create-Intervention-2021-04-08.html | 4 ++-- .../auto/Create-Patient-in-OpenMRS-2019-10-24.html | 4 ++-- .../jobs/auto/Create-Person-in-OpenMRS-2016-02-12.html | 4 ++-- .../jobs/auto/Create-Person-in-SF-2019-02-25.html | 4 ++-- .../jobs/auto/Create-SMS-Linked-to-Contact-in-SF.html | 4 ++-- .../library/jobs/auto/Create-TEI-dhis2-2021-03-22.html | 4 ++-- .../library/jobs/auto/Create-contact-2021-03-01.html | 4 ++-- .../library/jobs/auto/DHIS2-DataValues-API.html | 4 ++-- .../library/jobs/auto/DHIS2-Events-2016-01-27.html | 4 ++-- fr/adaptors/library/jobs/auto/DHIS2-Events-API.html | 4 ++-- .../jobs/auto/Extract-Vitas-Data-2021-05-11.html | 4 ++-- .../auto/Failed-Payment-Notification-2021-04-23.html | 4 ++-- .../library/jobs/auto/Fetch-Claims-2023-07-17.html | 4 ++-- .../auto/GET-Data-From-KoboToolbox-2022-03-22.html | 4 ++-- .../Get-CommCare-Forms-Bulk-Extract-2022-05-16.html | 4 ++-- .../jobs/auto/Get-cases-from-Primero-2021-09-23.html | 4 ++-- .../auto/HIV-Testing-Event-Snapshot-2021-05-03.html | 4 ++-- .../auto/HIV-Testing-Event-Statistics-2021-05-03.html | 4 ++-- .../library/jobs/auto/Kobo-to-sheets-2023-10-13.html | 4 ++-- .../Load-Upsert-Data-into-PostgreSQL-2022-03-22.html | 4 ++-- .../library/jobs/auto/Load-to-DB-2022-05-16.html | 4 ++-- .../library/jobs/auto/Load-to-DHIS2-2023-07-17.html | 4 ++-- .../Malaria-Testing-Event-Snapshot-2021-05-03.html | 4 ++-- .../Malaria-Testing-Event-Statistics-2021-05-03.html | 4 ++-- ...any-Records-Moving-In-And-Out-Of-Repeat-Blocks.html | 4 ++-- fr/adaptors/library/jobs/auto/PHQ9-2021-05-03.html | 4 ++-- fr/adaptors/library/jobs/auto/Pay-CHW-2021-04-23.html | 4 ++-- ...-Create-Distribution-Referral-in-SF-2020-06-19.html | 4 ++-- .../Q3-2022-Update-HH-Name-in-CommCare-2021-09-27.html | 4 ++-- ...ert-Household-Household-Visit-in-SF-2022-06-28.html | 4 ++-- .../jobs/auto/Q3-2022-Upsert-Person-2022-04-21.html | 4 ++-- .../auto/Q3-2022-Upsert-Person-Visit-2022-06-28.html | 4 ++-- ...22-Upsert-Supervision-Accompaniment-2022-08-22.html | 4 ++-- ...Q4-2022-Upsert-Supervision-Feedback-2022-08-19.html | 4 ++-- ...rt-Supervision-Household-Spot-Check-2022-08-24.html | 4 ++-- .../Register-Participant-V2-Skillz-2021-06-02.html | 4 ++-- .../library/jobs/auto/Register-Patient-2021-03-02.html | 4 ++-- .../auto/Registration-forms-new-case-2023-06-22.html | 4 ++-- .../jobs/auto/Request-Vitas-Sync-2021-05-11.html | 4 ++-- .../Risk-and-Vulnerability-Assessment-2021-05-27.html | 4 ++-- ...t-ART-Adherence-Self-Reporting-Tool-2021-04-30.html | 4 ++-- .../Upsert-Aggregate-Service-Referrals-2021-04-30.html | 4 ++-- .../Upsert-Attendance-Skillz-Plus-Club-2021-05-24.html | 4 ++-- .../Upsert-Coach-Support-Visit-CSV-2021-04-28.html | 4 ++-- .../Upsert-Confirm-Services-Received-2021-06-14.html | 4 ++-- .../auto/Upsert-Home-Visit-Log-Form-2021-05-03.html | 4 ++-- .../auto/Upsert-Intervention-Notes-2021-04-28.html | 4 ++-- .../jobs/auto/Upsert-Post-Challenges-2021-04-30.html | 4 ++-- .../jobs/auto/Upsert-Pre-Challenges-2021-04-30.html | 4 ++-- .../jobs/auto/Upsert-Register-Event-2021-04-30.html | 4 ++-- .../auto/Upsert-Register-Participant-2021-04-28.html | 4 ++-- .../Upsert-Register-Participant-Skillz-2021-08-30.html | 4 ++-- .../Upsert-Register-Skills-plus-Club-2021-04-30.html | 4 ++-- ...ability-Assessment-Service-Referral-2021-05-25.html | 4 ++-- .../auto/Upsert-Service-Referral-2-2021-06-14.html | 4 ++-- .../jobs/auto/Upsert-Service-Referral-2021-04-30.html | 4 ++-- .../Upsert-Service-Referral-Followup-2021-04-30.html | 4 ++-- .../jobs/auto/Upsert-Team-Group-Name-2021-04-28.html | 4 ++-- .../auto/Upsert-User-in-Salesforce-2021-04-16.html | 4 ++-- .../library/jobs/auto/Upsert-to-mBrana-2021-05-11.html | 4 ++-- .../jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19.html | 4 ++-- ...WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19.html | 4 ++-- .../auto/WF2-1-Bulk-get-Person-cases-2023-05-19.html | 4 ++-- .../auto/WF2-2-Bulk-upsert-Persons-2023-05-19.html | 4 ++-- .../WF3-1-Bulk-get-Person-Visit-cases-2023-05-19.html | 4 ++-- .../WF3-2-Bulk-upsert-Person-Visits-2023-05-19.html | 4 ++-- .../WF3-2a-Repeat-Failed-Person-Visits-2023-05-31.html | 4 ++-- .../auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19.html | 4 ++-- .../auto/WF4-2-Bulk-upsert-Services-2023-05-19.html | 4 ++-- .../library/jobs/auto/aleksa-cron-2022-04-29.html | 4 ++-- .../jobs/auto/alter-state-before-operations.html | 4 ++-- .../library/jobs/auto/async-and-array-dot-map.html | 4 ++-- fr/adaptors/library/jobs/auto/async-findValue.html | 4 ++-- ...-then-create-parent-and-children-in-salesforce.html | 4 ++-- .../jobs/auto/commcare-reports-api-2016-08-29.html | 4 ++-- .../library/jobs/auto/complex-http-request-chains.html | 4 ++-- .../library/jobs/auto/complex-state-control.html | 4 ++-- .../jobs/auto/concatenate-many-fields-with-nulls.html | 4 ++-- fr/adaptors/library/jobs/auto/create-if-proposal.html | 4 ++-- fr/adaptors/library/jobs/auto/getKoboData.html | 4 ++-- fr/adaptors/library/jobs/auto/nawiri-2023-05-03.html | 4 ++-- .../library/jobs/auto/no-return-2023-01-06.html | 4 ++-- .../library/jobs/auto/promise-all-nested-requests.html | 4 ++-- .../library/jobs/auto/send-mail-in-mailgun.html | 4 ++-- .../jobs/auto/send-sms-from-salesforce-workflow.html | 4 ++-- .../library/jobs/auto/synchronous-http-request.html | 4 ++-- fr/adaptors/library/jobs/auto/timeout.html | 4 ++-- ...t-many-items-in-array-with-value-outside-array.html | 4 ++-- fr/adaptors/library/triggers/xmlns.html | 4 ++-- fr/adaptors/magpi.html | 4 ++-- fr/adaptors/moodle.html | 4 ++-- fr/adaptors/odk.html | 4 ++-- fr/adaptors/ona.html | 4 ++-- fr/adaptors/packages/asana-changelog.html | 4 ++-- fr/adaptors/packages/asana-configuration-schema.html | 4 ++-- fr/adaptors/packages/asana-docs.html | 4 ++-- fr/adaptors/packages/asana-readme.html | 4 ++-- fr/adaptors/packages/beyonic-changelog.html | 4 ++-- fr/adaptors/packages/beyonic-configuration-schema.html | 4 ++-- fr/adaptors/packages/beyonic-docs.html | 4 ++-- fr/adaptors/packages/beyonic-readme.html | 4 ++-- fr/adaptors/packages/bigquery-changelog.html | 4 ++-- .../packages/bigquery-configuration-schema.html | 4 ++-- fr/adaptors/packages/bigquery-docs.html | 4 ++-- fr/adaptors/packages/bigquery-readme.html | 4 ++-- fr/adaptors/packages/commcare-changelog.html | 4 ++-- .../packages/commcare-configuration-schema.html | 4 ++-- fr/adaptors/packages/commcare-docs.html | 4 ++-- fr/adaptors/packages/commcare-readme.html | 4 ++-- fr/adaptors/packages/common-changelog.html | 4 ++-- fr/adaptors/packages/common-configuration-schema.html | 4 ++-- fr/adaptors/packages/common-docs.html | 4 ++-- fr/adaptors/packages/common-readme.html | 4 ++-- fr/adaptors/packages/dhis2-changelog.html | 4 ++-- fr/adaptors/packages/dhis2-configuration-schema.html | 4 ++-- fr/adaptors/packages/dhis2-docs.html | 4 ++-- fr/adaptors/packages/dhis2-readme.html | 4 ++-- fr/adaptors/packages/dynamics-changelog.html | 4 ++-- .../packages/dynamics-configuration-schema.html | 4 ++-- fr/adaptors/packages/dynamics-docs.html | 4 ++-- fr/adaptors/packages/dynamics-readme.html | 4 ++-- fr/adaptors/packages/facebook-changelog.html | 4 ++-- .../packages/facebook-configuration-schema.html | 4 ++-- fr/adaptors/packages/facebook-docs.html | 4 ++-- fr/adaptors/packages/facebook-readme.html | 4 ++-- fr/adaptors/packages/fhir-changelog.html | 4 ++-- fr/adaptors/packages/fhir-configuration-schema.html | 4 ++-- fr/adaptors/packages/fhir-docs.html | 4 ++-- fr/adaptors/packages/fhir-readme.html | 4 ++-- fr/adaptors/packages/godata-changelog.html | 4 ++-- fr/adaptors/packages/godata-configuration-schema.html | 4 ++-- fr/adaptors/packages/godata-docs.html | 4 ++-- fr/adaptors/packages/godata-readme.html | 4 ++-- fr/adaptors/packages/googlehealthcare-changelog.html | 4 ++-- .../googlehealthcare-configuration-schema.html | 4 ++-- fr/adaptors/packages/googlehealthcare-docs.html | 4 ++-- fr/adaptors/packages/googlehealthcare-readme.html | 4 ++-- fr/adaptors/packages/googlesheets-changelog.html | 4 ++-- .../packages/googlesheets-configuration-schema.html | 4 ++-- fr/adaptors/packages/googlesheets-docs.html | 4 ++-- fr/adaptors/packages/googlesheets-readme.html | 4 ++-- fr/adaptors/packages/hive-changelog.html | 4 ++-- fr/adaptors/packages/hive-configuration-schema.html | 4 ++-- fr/adaptors/packages/hive-docs.html | 4 ++-- fr/adaptors/packages/hive-readme.html | 4 ++-- fr/adaptors/packages/http-changelog.html | 4 ++-- fr/adaptors/packages/http-configuration-schema.html | 4 ++-- fr/adaptors/packages/http-docs.html | 4 ++-- fr/adaptors/packages/http-readme.html | 4 ++-- fr/adaptors/packages/khanacademy-changelog.html | 4 ++-- .../packages/khanacademy-configuration-schema.html | 4 ++-- fr/adaptors/packages/khanacademy-docs.html | 4 ++-- fr/adaptors/packages/khanacademy-readme.html | 4 ++-- fr/adaptors/packages/kobotoolbox-changelog.html | 4 ++-- .../packages/kobotoolbox-configuration-schema.html | 4 ++-- fr/adaptors/packages/kobotoolbox-docs.html | 4 ++-- fr/adaptors/packages/kobotoolbox-readme.html | 4 ++-- fr/adaptors/packages/magpi-changelog.html | 4 ++-- fr/adaptors/packages/magpi-configuration-schema.html | 4 ++-- fr/adaptors/packages/magpi-docs.html | 4 ++-- fr/adaptors/packages/magpi-readme.html | 4 ++-- fr/adaptors/packages/mailchimp-changelog.html | 4 ++-- .../packages/mailchimp-configuration-schema.html | 4 ++-- fr/adaptors/packages/mailchimp-docs.html | 4 ++-- fr/adaptors/packages/mailchimp-readme.html | 4 ++-- fr/adaptors/packages/mailgun-changelog.html | 4 ++-- fr/adaptors/packages/mailgun-configuration-schema.html | 4 ++-- fr/adaptors/packages/mailgun-docs.html | 4 ++-- fr/adaptors/packages/mailgun-readme.html | 4 ++-- fr/adaptors/packages/maximo-changelog.html | 4 ++-- fr/adaptors/packages/maximo-configuration-schema.html | 4 ++-- fr/adaptors/packages/maximo-docs.html | 4 ++-- fr/adaptors/packages/maximo-readme.html | 4 ++-- fr/adaptors/packages/medicmobile-changelog.html | 4 ++-- .../packages/medicmobile-configuration-schema.html | 4 ++-- fr/adaptors/packages/medicmobile-docs.html | 4 ++-- fr/adaptors/packages/medicmobile-readme.html | 4 ++-- fr/adaptors/packages/mogli-changelog.html | 4 ++-- fr/adaptors/packages/mogli-configuration-schema.html | 4 ++-- fr/adaptors/packages/mogli-docs.html | 4 ++-- fr/adaptors/packages/mogli-readme.html | 4 ++-- fr/adaptors/packages/mongodb-changelog.html | 4 ++-- fr/adaptors/packages/mongodb-configuration-schema.html | 4 ++-- fr/adaptors/packages/mongodb-docs.html | 4 ++-- fr/adaptors/packages/mongodb-readme.html | 4 ++-- fr/adaptors/packages/msgraph-changelog.html | 4 ++-- fr/adaptors/packages/msgraph-configuration-schema.html | 4 ++-- fr/adaptors/packages/msgraph-docs.html | 4 ++-- fr/adaptors/packages/msgraph-readme.html | 4 ++-- fr/adaptors/packages/mssql-changelog.html | 4 ++-- fr/adaptors/packages/mssql-configuration-schema.html | 4 ++-- fr/adaptors/packages/mssql-docs.html | 4 ++-- fr/adaptors/packages/mssql-readme.html | 4 ++-- fr/adaptors/packages/mysql-changelog.html | 4 ++-- fr/adaptors/packages/mysql-configuration-schema.html | 4 ++-- fr/adaptors/packages/mysql-docs.html | 4 ++-- fr/adaptors/packages/mysql-readme.html | 4 ++-- fr/adaptors/packages/nexmo-changelog.html | 4 ++-- fr/adaptors/packages/nexmo-configuration-schema.html | 4 ++-- fr/adaptors/packages/nexmo-docs.html | 4 ++-- fr/adaptors/packages/nexmo-readme.html | 4 ++-- fr/adaptors/packages/ocl-changelog.html | 4 ++-- fr/adaptors/packages/ocl-configuration-schema.html | 4 ++-- fr/adaptors/packages/ocl-docs.html | 4 ++-- fr/adaptors/packages/ocl-readme.html | 4 ++-- fr/adaptors/packages/openfn-changelog.html | 4 ++-- fr/adaptors/packages/openfn-configuration-schema.html | 4 ++-- fr/adaptors/packages/openfn-docs.html | 4 ++-- fr/adaptors/packages/openfn-readme.html | 4 ++-- fr/adaptors/packages/openhim-changelog.html | 4 ++-- fr/adaptors/packages/openhim-configuration-schema.html | 4 ++-- fr/adaptors/packages/openhim-docs.html | 4 ++-- fr/adaptors/packages/openhim-readme.html | 4 ++-- fr/adaptors/packages/openmrs-changelog.html | 4 ++-- fr/adaptors/packages/openmrs-configuration-schema.html | 4 ++-- fr/adaptors/packages/openmrs-docs.html | 4 ++-- fr/adaptors/packages/openmrs-readme.html | 4 ++-- fr/adaptors/packages/postgresql-changelog.html | 4 ++-- .../packages/postgresql-configuration-schema.html | 4 ++-- fr/adaptors/packages/postgresql-docs.html | 4 ++-- fr/adaptors/packages/postgresql-readme.html | 4 ++-- fr/adaptors/packages/primero-changelog.html | 4 ++-- fr/adaptors/packages/primero-configuration-schema.html | 4 ++-- fr/adaptors/packages/primero-docs.html | 4 ++-- fr/adaptors/packages/primero-readme.html | 4 ++-- fr/adaptors/packages/progres-changelog.html | 4 ++-- fr/adaptors/packages/progres-configuration-schema.html | 4 ++-- fr/adaptors/packages/progres-docs.html | 4 ++-- fr/adaptors/packages/progres-readme.html | 4 ++-- fr/adaptors/packages/rapidpro-changelog.html | 4 ++-- .../packages/rapidpro-configuration-schema.html | 4 ++-- fr/adaptors/packages/rapidpro-docs.html | 4 ++-- fr/adaptors/packages/rapidpro-readme.html | 4 ++-- fr/adaptors/packages/resourcemap-changelog.html | 4 ++-- .../packages/resourcemap-configuration-schema.html | 4 ++-- fr/adaptors/packages/resourcemap-docs.html | 4 ++-- fr/adaptors/packages/resourcemap-readme.html | 4 ++-- fr/adaptors/packages/salesforce-changelog.html | 4 ++-- .../packages/salesforce-configuration-schema.html | 4 ++-- fr/adaptors/packages/salesforce-docs.html | 4 ++-- fr/adaptors/packages/salesforce-readme.html | 6 +++--- fr/adaptors/packages/sftp-changelog.html | 10 +++++----- fr/adaptors/packages/sftp-configuration-schema.html | 6 +++--- fr/adaptors/packages/sftp-docs.html | 8 ++++---- fr/adaptors/packages/sftp-readme.html | 4 ++-- fr/adaptors/packages/smpp-changelog.html | 4 ++-- fr/adaptors/packages/smpp-configuration-schema.html | 4 ++-- fr/adaptors/packages/smpp-docs.html | 4 ++-- fr/adaptors/packages/smpp-readme.html | 4 ++-- fr/adaptors/packages/surveycto-changelog.html | 4 ++-- .../packages/surveycto-configuration-schema.html | 4 ++-- fr/adaptors/packages/surveycto-docs.html | 4 ++-- fr/adaptors/packages/surveycto-readme.html | 4 ++-- fr/adaptors/packages/telerivet-changelog.html | 4 ++-- .../packages/telerivet-configuration-schema.html | 4 ++-- fr/adaptors/packages/telerivet-docs.html | 4 ++-- fr/adaptors/packages/telerivet-readme.html | 4 ++-- fr/adaptors/packages/template-changelog.html | 4 ++-- .../packages/template-configuration-schema.html | 4 ++-- fr/adaptors/packages/template-docs.html | 4 ++-- fr/adaptors/packages/template-readme.html | 4 ++-- fr/adaptors/packages/twilio-changelog.html | 4 ++-- fr/adaptors/packages/twilio-configuration-schema.html | 4 ++-- fr/adaptors/packages/twilio-docs.html | 4 ++-- fr/adaptors/packages/twilio-readme.html | 4 ++-- fr/adaptors/packages/vtiger-changelog.html | 4 ++-- fr/adaptors/packages/vtiger-configuration-schema.html | 4 ++-- fr/adaptors/packages/vtiger-docs.html | 4 ++-- fr/adaptors/packages/vtiger-readme.html | 4 ++-- fr/adaptors/packages/zoho-changelog.html | 4 ++-- fr/adaptors/packages/zoho-configuration-schema.html | 4 ++-- fr/adaptors/packages/zoho-docs.html | 4 ++-- fr/adaptors/packages/zoho-readme.html | 4 ++-- fr/adaptors/postgresql.html | 4 ++-- fr/adaptors/powerbi.html | 4 ++-- fr/adaptors/primero.html | 4 ++-- fr/adaptors/salesforce.html | 4 ++-- fr/adaptors/surveycto.html | 4 ++-- fr/adaptors/tableau.html | 4 ++-- fr/articles.html | 4 ++-- .../2020/06/16/how-information-is-organized.html | 4 ++-- fr/articles/2020/06/24/three-questions-to-ask.html | 4 ++-- fr/articles/2020/07/02/allow-yourself-to-fail.html | 4 ++-- .../2020/07/14/cron-is-better-than-a-timer.html | 4 ++-- fr/articles/2020/12/09/upsert-in-dhis2.html | 4 ++-- fr/articles/2021/02/03/hosted-or-local-deployment.html | 4 ++-- fr/articles/2021/02/17/syncing-options.html | 4 ++-- fr/articles/2021/05/24/commcare-events.html | 4 ++-- .../2021/07/05/wrapping-my-head-around-jobs.html | 4 ++-- ...mproving-multistage-docker-builds-using-buildx.html | 4 ++-- fr/articles/2021/10/15/webpack-to-esbuild-part1.html | 4 ++-- .../2021/10/22/testing-react-app-with-jest-hound.html | 4 ++-- ...ng-javascript-helped-me-better-understand-jobs.html | 4 ++-- fr/articles/2022/06/07/workflow-automation.html | 4 ++-- fr/articles/2022/09/19/auth-security.html | 4 ++-- fr/articles/archive.html | 4 ++-- fr/articles/page/2.html | 4 ++-- fr/articles/tags.html | 4 ++-- fr/articles/tags/annoucement.html | 4 ++-- fr/articles/tags/authentication.html | 4 ++-- fr/articles/tags/authorization.html | 4 ++-- fr/articles/tags/automation.html | 4 ++-- fr/articles/tags/browser-testing.html | 4 ++-- fr/articles/tags/build.html | 4 ++-- fr/articles/tags/ci-cd.html | 4 ++-- fr/articles/tags/docker.html | 4 ++-- fr/articles/tags/elixir.html | 4 ++-- fr/articles/tags/how-to.html | 4 ++-- fr/articles/tags/javascript.html | 4 ++-- fr/articles/tags/jobs.html | 4 ++-- fr/articles/tags/js.html | 4 ++-- fr/articles/tags/learning.html | 4 ++-- fr/articles/tags/phoenix.html | 4 ++-- fr/articles/tags/react.html | 4 ++-- fr/articles/tags/security.html | 4 ++-- fr/articles/tags/solution.html | 4 ++-- fr/articles/tags/testing.html | 4 ++-- fr/articles/tags/tips.html | 4 ++-- fr/articles/tags/tips/page/2.html | 4 ++-- fr/articles/tags/webpack.html | 4 ++-- .../js/{09b23959.120657f5.js => 09b23959.d4a4d0a1.js} | 2 +- .../js/{450c527f.08673ad2.js => 450c527f.768ba2ea.js} | 2 +- fr/assets/js/6cb21577.373bd554.js | 1 + fr/assets/js/6cb21577.44910d30.js | 1 - fr/assets/js/771488fd.e44accd8.js | 1 + fr/assets/js/771488fd.fb43034d.js | 1 - .../js/{cc826739.4dfa6309.js => cc826739.2058ed5b.js} | 2 +- .../js/{d9a6c9f9.86b88ed6.js => d9a6c9f9.b30ce16b.js} | 2 +- ...ntime~main.565f603e.js => runtime~main.78450e1e.js} | 2 +- fr/blog.html | 4 ++-- fr/blog/2020/05/31/the-new-openfn-blog.html | 4 ++-- .../04/Building-Integrated-Systems-That-Just-Work.html | 4 ++-- fr/blog/2020/06/04/Technology-Isnt-The-Answer.html | 4 ++-- fr/blog/2020/06/09/enabling-scale-at-myagro.html | 4 ++-- fr/blog/2020/06/10/iKapaData-Case-Study.html | 4 ++-- fr/blog/2020/06/25/SwissTPH-case-study.html | 4 ++-- fr/blog/2020/07/01/KGVK-case-study.html | 4 ++-- .../07/01/african-school-of-excellence-case-study.html | 4 ++-- fr/blog/2020/07/01/airport-case-study.html | 4 ++-- fr/blog/2020/07/08/caris-foundation-case-study.html | 4 ++-- fr/blog/2020/07/13/x-runner-case-study.html | 4 ++-- fr/blog/2020/07/26/sinapis-case-study.html | 4 ++-- fr/blog/2020/07/27/nalibali-case-study.html | 4 ++-- .../02/09/interoperability_for_case_referrals.html | 4 ++-- fr/blog/2021/03/30/digital-global-good.html | 4 ++-- .../07/30/processes-and-open-source-as-choice.html | 4 ++-- .../20/the-case-for-health-information-exchange.html | 4 ++-- ...ter-safeguard-the-world\342\200\231s-wildlife.html" | 4 ++-- fr/blog/2023/03/01/open-human.html | 4 ++-- fr/blog/2023/04/13/lightning-beta.html | 4 ++-- fr/blog/2023/06/01/open-function-group.html | 4 ++-- fr/blog/2023/08/14/OS4H-case-study.html | 4 ++-- fr/blog/archive.html | 4 ++-- fr/blog/page/2.html | 4 ++-- fr/blog/page/3.html | 4 ++-- fr/blog/tags.html | 4 ++-- fr/blog/tags/african-school-of-excellence.html | 4 ++-- fr/blog/tags/agriculture.html | 4 ++-- fr/blog/tags/airport.html | 4 ++-- fr/blog/tags/announcement.html | 4 ++-- fr/blog/tags/automated-reporting.html | 4 ++-- fr/blog/tags/cambodia.html | 4 ++-- fr/blog/tags/caris-foundation.html | 4 ++-- fr/blog/tags/carto.html | 4 ++-- fr/blog/tags/case-management.html | 4 ++-- fr/blog/tags/case-study.html | 4 ++-- fr/blog/tags/case-study/page/2.html | 4 ++-- fr/blog/tags/comm-care.html | 4 ++-- fr/blog/tags/data-monitoring.html | 4 ++-- fr/blog/tags/data-warehouse.html | 4 ++-- fr/blog/tags/deployment.html | 4 ++-- fr/blog/tags/development.html | 4 ++-- fr/blog/tags/dhis-2.html | 4 ++-- fr/blog/tags/education.html | 4 ++-- fr/blog/tags/global-goods.html | 4 ++-- fr/blog/tags/health.html | 4 ++-- fr/blog/tags/healthcare.html | 4 ++-- fr/blog/tags/i-kapa-data.html | 4 ++-- fr/blog/tags/ibm-maximo.html | 4 ++-- fr/blog/tags/kgvk.html | 4 ++-- fr/blog/tags/kobo-toolbox.html | 4 ++-- fr/blog/tags/kopo-kopo.html | 4 ++-- fr/blog/tags/learning-management-system.html | 4 ++-- fr/blog/tags/m-pesa.html | 4 ++-- fr/blog/tags/moh.html | 4 ++-- fr/blog/tags/mssql.html | 4 ++-- fr/blog/tags/my-agro.html | 4 ++-- fr/blog/tags/my-sql.html | 4 ++-- fr/blog/tags/odk.html | 4 ++-- fr/blog/tags/open-solutions-for-health.html | 4 ++-- fr/blog/tags/os-4-h.html | 4 ++-- fr/blog/tags/os-ca-r.html | 4 ++-- fr/blog/tags/payments.html | 4 ++-- fr/blog/tags/postgre-sql.html | 4 ++-- fr/blog/tags/primero.html | 4 ++-- fr/blog/tags/redash.html | 4 ++-- fr/blog/tags/salesforce.html | 4 ++-- fr/blog/tags/sms.html | 4 ++-- fr/blog/tags/st-lucia.html | 4 ++-- fr/blog/tags/supply-chain-system.html | 4 ++-- fr/blog/tags/survey-cto.html | 4 ++-- fr/blog/tags/swiss-tph.html | 4 ++-- fr/blog/tags/telerivet.html | 4 ++-- fr/blog/tags/tips.html | 4 ++-- fr/blog/tags/unicef.html | 4 ++-- fr/blog/tags/wash.html | 4 ++-- fr/blog/tags/wcs.html | 4 ++-- fr/blog/tags/wildlife.html | 4 ++-- fr/blog/tags/x-runner.html | 4 ++-- fr/blog/tags/zoho.html | 4 ++-- fr/documentation.html | 4 ++-- fr/documentation/about-lightning.html | 4 ++-- fr/documentation/about.html | 4 ++-- fr/documentation/build/credentials.html | 4 ++-- fr/documentation/build/example-build.html | 4 ++-- fr/documentation/build/inbox.html | 4 ++-- fr/documentation/build/jobs.html | 4 ++-- fr/documentation/build/lightning-quick-start.html | 4 ++-- fr/documentation/build/triggers.html | 4 ++-- fr/documentation/build/troubleshooting.html | 4 ++-- fr/documentation/cli.html | 4 ++-- fr/documentation/core.html | 4 ++-- fr/documentation/deploy/options.html | 4 ++-- fr/documentation/deploy/requirements.html | 4 ++-- fr/documentation/design/design-quickstart.html | 4 ++-- fr/documentation/design/when-to-integrate.html | 4 ++-- fr/documentation/devtools/home.html | 4 ++-- fr/documentation/faqs.html | 4 ++-- fr/documentation/for-devs.html | 4 ++-- .../getting-started/commcare-project-walkthrough.html | 4 ++-- fr/documentation/getting-started/glossary.html | 4 ++-- .../getting-started/implementation-checklist.html | 4 ++-- .../getting-started/integrating-using-openfn.html | 4 ++-- .../getting-started/integration-toolkit.html | 4 ++-- fr/documentation/getting-started/security.html | 4 ++-- .../getting-started/so-you-want-to-integrate.html | 6 +++--- fr/documentation/getting-started/terminology.html | 4 ++-- fr/documentation/gsoc.html | 4 ++-- fr/documentation/instant-openhie.html | 4 ++-- fr/documentation/jobs/each.html | 4 ++-- fr/documentation/jobs/editing_locally.html | 4 ++-- fr/documentation/jobs/errors.html | 4 ++-- fr/documentation/jobs/job-design-intro.html | 4 ++-- fr/documentation/jobs/job-studio.html | 4 ++-- fr/documentation/jobs/limits.html | 4 ++-- fr/documentation/jobs/multiple-operations.html | 4 ++-- fr/documentation/jobs/operations.html | 4 ++-- fr/documentation/jobs/state.html | 4 ++-- fr/documentation/jobs/understanding.html | 4 ++-- fr/documentation/jobs/working_with_branches.html | 4 ++-- fr/documentation/manage/platform-mgmt.html | 4 ++-- .../manage/troubleshooting-tips-on-platform.html | 4 ++-- fr/documentation/microservice/home.html | 4 ++-- fr/documentation/openfn-roadmap.html | 4 ++-- fr/documentation/portability-versions.html | 4 ++-- fr/documentation/portability.html | 4 ++-- fr/documentation/release-notes.html | 4 ++-- fr/documentation/roadmap.html | 4 ++-- fr/documentation/source-apps.html | 4 ++-- fr/documentation/standards/digital-public-goods.html | 4 ++-- fr/documentation/standards/global-goods.html | 4 ++-- fr/documentation/standards/openhie.html | 4 ++-- fr/documentation/style-guide.html | 4 ++-- fr/documentation/writing-code.html | 4 ++-- fr/documentation/writing-docs.html | 4 ++-- fr/index.html | 4 ++-- fr/search.html | 4 ++-- index.html | 4 ++-- search.html | 4 ++-- 1002 files changed, 2001 insertions(+), 2001 deletions(-) rename assets/js/{09b23959.055f6fdc.js => 09b23959.82732e22.js} (99%) rename assets/js/{450c527f.f08f4566.js => 450c527f.fbe9c3a0.js} (98%) create mode 100644 assets/js/6cb21577.313786a6.js delete mode 100644 assets/js/6cb21577.dd5d259c.js delete mode 100644 assets/js/771488fd.3daf1871.js create mode 100644 assets/js/771488fd.8a860019.js rename assets/js/{cc826739.10eb5ed6.js => cc826739.bbc10bb5.js} (99%) rename assets/js/{d9a6c9f9.20516ca7.js => d9a6c9f9.bf670a25.js} (98%) rename assets/js/{runtime~main.13254845.js => runtime~main.7a1c3ca5.js} (98%) rename fr/assets/js/{09b23959.120657f5.js => 09b23959.d4a4d0a1.js} (99%) rename fr/assets/js/{450c527f.08673ad2.js => 450c527f.768ba2ea.js} (98%) create mode 100644 fr/assets/js/6cb21577.373bd554.js delete mode 100644 fr/assets/js/6cb21577.44910d30.js create mode 100644 fr/assets/js/771488fd.e44accd8.js delete mode 100644 fr/assets/js/771488fd.fb43034d.js rename fr/assets/js/{cc826739.4dfa6309.js => cc826739.2058ed5b.js} (99%) rename fr/assets/js/{d9a6c9f9.86b88ed6.js => d9a6c9f9.b30ce16b.js} (98%) rename fr/assets/js/{runtime~main.565f603e.js => runtime~main.78450e1e.js} (98%) diff --git a/404.html b/404.html index d624a6393c1..9da47c06f30 100644 --- a/404.html +++ b/404.html @@ -22,13 +22,13 @@ - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- + \ No newline at end of file diff --git a/adaptors.html b/adaptors.html index e1c4b361e4d..df237f0d8ee 100644 --- a/adaptors.html +++ b/adaptors.html @@ -22,7 +22,7 @@ - + @@ -39,7 +39,7 @@ packages" and the two terms are sometimes used interchangeably, but the preferred way of communicating about adaptors is as follows:

In short, most adaptors follow the naming convention @openfn/language-xyz.

Where to find them

Here's a list of the 46 publicly supported OpenFn adaptors. Note that only some have been migrated to our new and have their docs sites served here. For the rest, you can view the docs and source by clicking into the adaptor and choosing your version.

asana (docs)
The current API docs, changelog, and developer readme for asana are available here. You can view the source & documentation via these links:
beyonic (docs)
The current API docs, changelog, and developer readme for beyonic are available here. You can view the source & documentation via these links:
bigquery (docs)
The current API docs, changelog, and developer readme for bigquery are available here. You can view the source & documentation via these links:
cartodb
This adaptor hasn't been migrated yet, but it still works just fine and you can view the source & documentation via these links:
commcare (docs)
The current API docs, changelog, and developer readme for commcare are available here. You can view the source & documentation via these links:
common (docs)
The current API docs, changelog, and developer readme for common are available here. You can view the source & documentation via these links:
dhis2 (docs)
The current API docs, changelog, and developer readme for dhis2 are available here. You can view the source & documentation via these links:
dynamics (docs)
The current API docs, changelog, and developer readme for dynamics are available here. You can view the source & documentation via these links:
facebook (docs)
The current API docs, changelog, and developer readme for facebook are available here. You can view the source & documentation via these links:
fhir (docs)
The current API docs, changelog, and developer readme for fhir are available here. You can view the source & documentation via these links:
godata (docs)
The current API docs, changelog, and developer readme for godata are available here. You can view the source & documentation via these links:
googlehealthcare (docs)
The current API docs, changelog, and developer readme for googlehealthcare are available here. You can view the source & documentation via these links:
googlesheets (docs)
The current API docs, changelog, and developer readme for googlesheets are available here. You can view the source & documentation via these links:
hive (docs)
The current API docs, changelog, and developer readme for hive are available here. You can view the source & documentation via these links:
http (docs)
The current API docs, changelog, and developer readme for http are available here. You can view the source & documentation via these links:
khanacademy (docs)
The current API docs, changelog, and developer readme for khanacademy are available here. You can view the source & documentation via these links:
kobotoolbox (docs)
The current API docs, changelog, and developer readme for kobotoolbox are available here. You can view the source & documentation via these links:
magpi (docs)
The current API docs, changelog, and developer readme for magpi are available here. You can view the source & documentation via these links:
mailchimp (docs)
The current API docs, changelog, and developer readme for mailchimp are available here. You can view the source & documentation via these links:
mailgun (docs)
The current API docs, changelog, and developer readme for mailgun are available here. You can view the source & documentation via these links:
maximo (docs)
The current API docs, changelog, and developer readme for maximo are available here. You can view the source & documentation via these links:
medicmobile (docs)
The current API docs, changelog, and developer readme for medicmobile are available here. You can view the source & documentation via these links:
mogli (docs)
The current API docs, changelog, and developer readme for mogli are available here. You can view the source & documentation via these links:
mongodb (docs)
The current API docs, changelog, and developer readme for mongodb are available here. You can view the source & documentation via these links:
msgraph (docs)
The current API docs, changelog, and developer readme for msgraph are available here. You can view the source & documentation via these links:
mssql (docs)
The current API docs, changelog, and developer readme for mssql are available here. You can view the source & documentation via these links:
mysql (docs)
The current API docs, changelog, and developer readme for mysql are available here. You can view the source & documentation via these links:
nexmo (docs)
The current API docs, changelog, and developer readme for nexmo are available here. You can view the source & documentation via these links:
ocl (docs)
The current API docs, changelog, and developer readme for ocl are available here. You can view the source & documentation via these links:
openfn (docs)
The current API docs, changelog, and developer readme for openfn are available here. You can view the source & documentation via these links:
openhim (docs)
The current API docs, changelog, and developer readme for openhim are available here. You can view the source & documentation via these links:
openmrs (docs)
The current API docs, changelog, and developer readme for openmrs are available here. You can view the source & documentation via these links:
postgresql (docs)
The current API docs, changelog, and developer readme for postgresql are available here. You can view the source & documentation via these links:
primero (docs)
progres (docs)
The current API docs, changelog, and developer readme for progres are available here. You can view the source & documentation via these links:
rapidpro (docs)
The current API docs, changelog, and developer readme for rapidpro are available here. You can view the source & documentation via these links:
resourcemap (docs)
The current API docs, changelog, and developer readme for resourcemap are available here. You can view the source & documentation via these links:
salesforce (docs)
sftp (docs)
The current API docs, changelog, and developer readme for sftp are available here. You can view the source & documentation via these links:
smpp (docs)
The current API docs, changelog, and developer readme for smpp are available here. You can view the source & documentation via these links:
surveycto (docs)
The current API docs, changelog, and developer readme for surveycto are available here. You can view the source & documentation via these links:
telerivet (docs)
The current API docs, changelog, and developer readme for telerivet are available here. You can view the source & documentation via these links:
template (docs)
The current API docs, changelog, and developer readme for template are available here. You can view the source & documentation via these links:
twilio (docs)
The current API docs, changelog, and developer readme for twilio are available here. You can view the source & documentation via these links:
vtiger (docs)
The current API docs, changelog, and developer readme for vtiger are available here. You can view the source & documentation via these links:
zoho (docs)
The current API docs, changelog, and developer readme for zoho are available here. You can view the source & documentation via these links:

On the OpenFn platform

When creating or editing a job on platform, you can choose the adaptor to run +running npm install @openfn/language-dhis2.

In short, most adaptors follow the naming convention @openfn/language-xyz.

Where to find them

Here's a list of the 46 publicly supported OpenFn adaptors. Note that only some have been migrated to our new and have their docs sites served here. For the rest, you can view the docs and source by clicking into the adaptor and choosing your version.

asana (docs)
The current API docs, changelog, and developer readme for asana are available here. You can view the source & documentation via these links:
beyonic (docs)
The current API docs, changelog, and developer readme for beyonic are available here. You can view the source & documentation via these links:
bigquery (docs)
The current API docs, changelog, and developer readme for bigquery are available here. You can view the source & documentation via these links:
cartodb
This adaptor hasn't been migrated yet, but it still works just fine and you can view the source & documentation via these links:
commcare (docs)
The current API docs, changelog, and developer readme for commcare are available here. You can view the source & documentation via these links:
common (docs)
The current API docs, changelog, and developer readme for common are available here. You can view the source & documentation via these links:
dhis2 (docs)
The current API docs, changelog, and developer readme for dhis2 are available here. You can view the source & documentation via these links:
dynamics (docs)
The current API docs, changelog, and developer readme for dynamics are available here. You can view the source & documentation via these links:
facebook (docs)
The current API docs, changelog, and developer readme for facebook are available here. You can view the source & documentation via these links:
fhir (docs)
The current API docs, changelog, and developer readme for fhir are available here. You can view the source & documentation via these links:
godata (docs)
The current API docs, changelog, and developer readme for godata are available here. You can view the source & documentation via these links:
googlehealthcare (docs)
The current API docs, changelog, and developer readme for googlehealthcare are available here. You can view the source & documentation via these links:
googlesheets (docs)
The current API docs, changelog, and developer readme for googlesheets are available here. You can view the source & documentation via these links:
hive (docs)
The current API docs, changelog, and developer readme for hive are available here. You can view the source & documentation via these links:
http (docs)
The current API docs, changelog, and developer readme for http are available here. You can view the source & documentation via these links:
khanacademy (docs)
The current API docs, changelog, and developer readme for khanacademy are available here. You can view the source & documentation via these links:
kobotoolbox (docs)
The current API docs, changelog, and developer readme for kobotoolbox are available here. You can view the source & documentation via these links:
magpi (docs)
The current API docs, changelog, and developer readme for magpi are available here. You can view the source & documentation via these links:
mailchimp (docs)
The current API docs, changelog, and developer readme for mailchimp are available here. You can view the source & documentation via these links:
mailgun (docs)
The current API docs, changelog, and developer readme for mailgun are available here. You can view the source & documentation via these links:
maximo (docs)
The current API docs, changelog, and developer readme for maximo are available here. You can view the source & documentation via these links:
medicmobile (docs)
The current API docs, changelog, and developer readme for medicmobile are available here. You can view the source & documentation via these links:
mogli (docs)
The current API docs, changelog, and developer readme for mogli are available here. You can view the source & documentation via these links:
mongodb (docs)
The current API docs, changelog, and developer readme for mongodb are available here. You can view the source & documentation via these links:
msgraph (docs)
The current API docs, changelog, and developer readme for msgraph are available here. You can view the source & documentation via these links:
mssql (docs)
The current API docs, changelog, and developer readme for mssql are available here. You can view the source & documentation via these links:
mysql (docs)
The current API docs, changelog, and developer readme for mysql are available here. You can view the source & documentation via these links:
nexmo (docs)
The current API docs, changelog, and developer readme for nexmo are available here. You can view the source & documentation via these links:
ocl (docs)
The current API docs, changelog, and developer readme for ocl are available here. You can view the source & documentation via these links:
openfn (docs)
The current API docs, changelog, and developer readme for openfn are available here. You can view the source & documentation via these links:
openhim (docs)
The current API docs, changelog, and developer readme for openhim are available here. You can view the source & documentation via these links:
openmrs (docs)
The current API docs, changelog, and developer readme for openmrs are available here. You can view the source & documentation via these links:
postgresql (docs)
The current API docs, changelog, and developer readme for postgresql are available here. You can view the source & documentation via these links:
primero (docs)
progres (docs)
The current API docs, changelog, and developer readme for progres are available here. You can view the source & documentation via these links:
rapidpro (docs)
The current API docs, changelog, and developer readme for rapidpro are available here. You can view the source & documentation via these links:
resourcemap (docs)
The current API docs, changelog, and developer readme for resourcemap are available here. You can view the source & documentation via these links:
salesforce (docs)
sftp (docs)
The current API docs, changelog, and developer readme for sftp are available here. You can view the source & documentation via these links:
smpp (docs)
The current API docs, changelog, and developer readme for smpp are available here. You can view the source & documentation via these links:
surveycto (docs)
The current API docs, changelog, and developer readme for surveycto are available here. You can view the source & documentation via these links:
telerivet (docs)
The current API docs, changelog, and developer readme for telerivet are available here. You can view the source & documentation via these links:
template (docs)
The current API docs, changelog, and developer readme for template are available here. You can view the source & documentation via these links:
twilio (docs)
The current API docs, changelog, and developer readme for twilio are available here. You can view the source & documentation via these links:
vtiger (docs)
The current API docs, changelog, and developer readme for vtiger are available here. You can view the source & documentation via these links:
zoho (docs)
The current API docs, changelog, and developer readme for zoho are available here. You can view the source & documentation via these links:

On the OpenFn platform

When creating or editing a job on platform, you can choose the adaptor to run the job. This way you "import" the needed operations. Simply open the dropdown list of adaptors, and click on one.

On npm

Most of our adaptors are also available on npmjs.

Adaptors list in npm

Install on platform via npm

When using platform, you can install adaptors that are not part of the @@ -57,7 +57,7 @@ via the Select Unreleased Adaptor dialog.

Building and extending adaptors

The source code and technical documentation for developing or extending existing adaptors can be found here.

- + \ No newline at end of file diff --git a/adaptors/cht.html b/adaptors/cht.html index 4ac1efb5c53..f82880b6937 100644 --- a/adaptors/cht.html +++ b/adaptors/cht.html @@ -22,7 +22,7 @@ - + @@ -37,7 +37,7 @@ property. This will structure the payload that is sent to your OpenFn Inbox as a "Message".

To send data to CHT applications, check out the CHT API.

- + \ No newline at end of file diff --git a/adaptors/ckan.html b/adaptors/ckan.html index f8cec743553..56cd0a20a90 100644 --- a/adaptors/ckan.html +++ b/adaptors/ckan.html @@ -22,7 +22,7 @@ - + @@ -91,7 +91,7 @@ to access the web API.

Implementation Examples

CKAN has been implemented in catalog.data.gov, open.canada.ca/data, and data.humdata.org.

- + \ No newline at end of file diff --git a/adaptors/commcare.html b/adaptors/commcare.html index 4e31dbe5682..468c3eb4a87 100644 --- a/adaptors/commcare.html +++ b/adaptors/commcare.html @@ -22,7 +22,7 @@ - + @@ -83,7 +83,7 @@ with the CommCare API.

Implementation Examples

- + \ No newline at end of file diff --git a/adaptors/dhis2.html b/adaptors/dhis2.html index 417d41a8413..65d58427a3a 100644 --- a/adaptors/dhis2.html +++ b/adaptors/dhis2.html @@ -22,7 +22,7 @@ - + @@ -64,7 +64,7 @@ DHIS2 Integration Scenarios

4 Interoperable DHIS2-LMIS in Senegal, Tanzania and Ghana

5 CRVS Fellowship report SmartVA and DHIS2 integration in Sri Lanka

Integration Options

  1. Data integration via DHIS2 Web API: https://docs.dhis2.org/en/develop/using-the-api/dhis-core-version-235/web-api.html

  2. Metadata integration via DHIS2 Web API. OpenFn implementations can leverage the DHIS2 adaptor.

Integration Examples

  1. DHIS2 Demo Implementations: https://github.com/OpenFn/dhis2-demo
  2. Lesotho Integration connecting two DHIS2 instances: https://github.com/OpenFn/lesotho-dhis2
- + \ No newline at end of file diff --git a/adaptors/godata.html b/adaptors/godata.html index c176982843e..fa85ddfd19a 100644 --- a/adaptors/godata.html +++ b/adaptors/godata.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ language-http can be used to make HTTP requests to the Go.Data API and can perform any operations not supported by language-godata.

Implementation Examples

See Go.Data docs site: https://worldhealthorganization.github.io/godata/integration-scripts/

- + \ No newline at end of file diff --git a/adaptors/googlesheets.html b/adaptors/googlesheets.html index 6bc0a127a3e..76136ab212f 100644 --- a/adaptors/googlesheets.html +++ b/adaptors/googlesheets.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ example when a new submission is made to a Google Form. Below is some sample code you may add to your Google Sheet to make it push data to OpenFn whenever new rows are added.

function sendToOpenFn(e) {
var payload = JSON.stringify(e);
var url = 'https://www.openfn.org/inbox/your-id-here';
var options = {
method: 'post',
contentType: 'application/json',
payload: payload,
};
var response = UrlFetchApp.fetch(url, options);
}

function isDate(v) {
if (Object.prototype.toString.call(v) === '[object Date]') {
if (isNaN(v.getTime())) {
return false;
} else {
return true;
}
} else {
return false;
}
}

function isNumber(v) {
if (Object.prototype.toString.call(v) === '[object Number]') {
return true;
} else {
return false;
}
}

function getReportData() {
var bookReportData = { formId: 'bookReport', data: [] };
var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();

var pageCount = 0;
var bookRating = 0;

for (i in data) {
if (isDate(data[i][0])) {
// ignore header line
if (isNumber(data[i][3])) {
pageCount = data[i][3];
}

if (isNumber(data[i][6])) {
bookRating = data[i][6];
}

bookReportData.data.push({
Timestamp: data[i][0],
Title: data[i][1],
Author: data[i][2],
NumberOfPages: pageCount,
Summary: data[i][4],
Protagonist: data[i][5],
Rating: bookRating,
EmailTeacher: data[i][7],
EmailStudent: data[i][8],
SendStatus: data[i][9],
});
}
}

// Logger.log(bookReportData);

sendToOpenFn(bookReportData);
}
- + \ No newline at end of file diff --git a/adaptors/kobotoolbox.html b/adaptors/kobotoolbox.html index 1e64ed1e184..1f72ffe39ca 100644 --- a/adaptors/kobotoolbox.html +++ b/adaptors/kobotoolbox.html @@ -22,7 +22,7 @@ - + @@ -89,7 +89,7 @@ requirements, language-http may also be implemented to send GET/POST/PUT requests to the Kobo APIs.

Integration Examples

See the ConSoSci Github repo for several example Kobo-to-database jobs: https://github.com/OpenFn/consosci

- + \ No newline at end of file diff --git a/adaptors/library.html b/adaptors/library.html index 2f096461c7b..51aa2cd7bde 100644 --- a/adaptors/library.html +++ b/adaptors/library.html @@ -22,7 +22,7 @@ - + @@ -61,7 +61,7 @@ experience in the future. We'd like to provide a way for users to "upvote" or "downvote" certain jobs (think: StackOverflow) which they found useful. Get in touch if you're interested in helping out!

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/0-Get-TEI-data-2021-06-02.html b/adaptors/library/jobs/auto/0-Get-TEI-data-2021-06-02.html index f1222bb343f..4033726e90e 100644 --- a/adaptors/library/jobs/auto/0-Get-TEI-data-2021-06-02.html +++ b/adaptors/library/jobs/auto/0-Get-TEI-data-2021-06-02.html @@ -22,13 +22,13 @@ - +
Skip to main content

0 - Get TEI data

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

alterState, dataValue, getData

Expression

// TODO: get all TEIs with vaccination state 'NOT YET REQUESTED' via save filter from Austin.


// NOTE: if we can get a webhook with the desired info, let's drop this job!

getData('trackedEntityInstances', {
fields: '*',
ou: 'V5XvX1wr1kF', // traningland?
program: 'EZkN8vYZwjR', //
trackedEntityInstance: dataValue('id'), // the value from the post
});

alterState(state => {
console.log('The response from DHIS2', state.data);
console.log('Only pass necessary data to the DIVOC job.');
const necessary = state.data.trackedEntityInstances[0];
console.log(necessary);
return { ...state, data: necessary };
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/01-send-mailgun-email-2018-12-04.html b/adaptors/library/jobs/auto/01-send-mailgun-email-2018-12-04.html index 4a961a49a00..0a7973f6c8f 100644 --- a/adaptors/library/jobs/auto/01-send-mailgun-email-2018-12-04.html +++ b/adaptors/library/jobs/auto/01-send-mailgun-email-2018-12-04.html @@ -22,13 +22,13 @@ - +
Skip to main content

01 send mailgun email

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, send

Expression

send(
fields(
field('from', 'aleksa@openfn.org'),
field('to', 'aleksa@openfn.org, aleksa@verasolutions.org'),
field('subject', 'Kobo: New Form Submitted'),
//You can write your own custom, anonymous functions to do whatever you desire - see function(state)
field('text', function(state) {
const msgText = "A form was submitted by "+ dataValue("_submitted_by")(state) + ". Please login to review!"
return msgText
//result will be an email with body text "A form was submitted by [Kobo Submitted By User]. Please login to review!"

})
)
)
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/01a-Create-Registrants-2019-11-19.html b/adaptors/library/jobs/auto/01a-Create-Registrants-2019-11-19.html index 181b9d0fd3b..da60f1f29e3 100644 --- a/adaptors/library/jobs/auto/01a-Create-Registrants-2019-11-19.html +++ b/adaptors/library/jobs/auto/01a-Create-Registrants-2019-11-19.html @@ -22,13 +22,13 @@ - +
Skip to main content

01a/ Create Registrants

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: 01a/ Create Registrants
  • Adaptor: @openfn/language-http
  • Adaptor Version: latest
  • Created almost 4 years ago
  • Updated over 3 years ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

alterState, post, JSON

Expression

// @trigger 'odk submission' either via Aggregate JSON Forwarding or via direct
// submission to OpenFn.org/inbox
// @credential 'ihris'
// @adaptor 'http'
// -----------------------------------------------------------------------------

// =============================================================================
// Pluck out parts of the ODK submission and prepare our 'person' object that we
// will use in multiple requests to iHRIS. =====================================
console.log(JSON.stringify(state.data))
alterState(state => {
state.person = {
'form[person][0][0][fields][id]': 'person|0',
'form[person][0][0][fields][surname]': state.data.RegistrationForm.last_name,
'form[person][0][0][fields][firstname]': state.data.RegistrationForm.first_name,
'form[person][0][0][fields][nationality]': `country|${state.data.RegistrationForm.country}`,
'form[person][0][0][fields][residence]': 'district|3',
};
return state;
});

// =============================================================================
// Create records via iHRIS api, with the hostUrl, port, and authentication
// handled by the credential ===================================================
post(
'/manage/person',
{
formData: state => {
state.person.submit_type = 'confirm';
return state.person;
},
},
post('/manage/person', {
formData: state => {
state.person.submit_type = 'save';
return state.person;
},
options: {
successCodes: [302],
},
})
);


- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/01b-Query-new-person-record-2019-12-13.html b/adaptors/library/jobs/auto/01b-Query-new-person-record-2019-12-13.html index 50ef808e4e3..d7ec739020e 100644 --- a/adaptors/library/jobs/auto/01b-Query-new-person-record-2019-12-13.html +++ b/adaptors/library/jobs/auto/01b-Query-new-person-record-2019-12-13.html @@ -22,13 +22,13 @@ - +
Skip to main content

01b/ Query new person record

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: 01b/ Query new person record
  • Adaptor: @openfn/language-mysql
  • Adaptor Version: latest
  • Created almost 4 years ago
  • Updated over 3 years ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

alterState

Expression

sqlString(state => {
// The person information is in state from the previous operation
console.log(state.references[0].RegistrationForm)
return (
`SELECT id FROM hippo_person WHERE firstname='` +
state.references[0].RegistrationForm.first_name +
`' AND surname='` +
state.references[0].RegistrationForm.last_name +
`'`
);
});

alterState(state => {
// Note: we pluck out on the 'RowDataResponses' from the SQL server.
const personData = state.response.body;
console.log(personData);
// Get the first record
state.data.person_id = personData[0] && personData[0].id
return state;
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/01c-Create-person_position-record-2019-12-13.html b/adaptors/library/jobs/auto/01c-Create-person_position-record-2019-12-13.html index a9b5928a452..545c6b1aa83 100644 --- a/adaptors/library/jobs/auto/01c-Create-person_position-record-2019-12-13.html +++ b/adaptors/library/jobs/auto/01c-Create-person_position-record-2019-12-13.html @@ -22,13 +22,13 @@ - +
Skip to main content

01c/ Create person_position record

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: 01c/ Create person_position record
  • Adaptor: @openfn/language-http
  • Adaptor Version: latest
  • Created almost 4 years ago
  • Updated over 3 years ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

alterState, post

Expression

// Pluck out parts of the ODK submission and prepare our 'person_postion' object that we
// will use in multiple requests to iHRIS. =====================================
alterState(state => {
console.log(state);
// The position field in the form holds the position ID and the salary
const positionData = state.references[0].RegistrationForm.position.split('_');
const startDateComponents = state.references[0].RegistrationForm.start_date.split('-')
state.person_position = {
'form[person_position][0][0][fields][id]': 'person_position|0',
'form[person_position][0][0][fields][parent]': state.data.person_id,
'form[person_position][0][0][fields][position]': 'position|'+positionData[0],
'form[person_position][0][0][fields][start_date][day]': startDateComponents[2],
'form[person_position][0][0][fields][start_date][month]': startDateComponents[1],
'form[person_position][0][0][fields][start_date][year]': startDateComponents[0],
'form[salary][0][0][fields][salary]': 'currency|3='+positionData[1],
'can_edit_position': '1'
};
state.person_contact = {
'form[person_contact_personal][0][0][fields][id]': 'person_contact_personal|0',
'form[person_contact_personal][0][0][fields][parent]': state.data.person_id,
'form[person_contact_personal][0][0][fields][mobile_phone]': state.references[0].RegistrationForm.phone_number,
'contact_type': 'personal',
};
return state;
});

// =============================================================================
// Create records via iHRIS api, with the hostUrl, port, and authentication
// handled by the credential ===================================================
post(
'/manage/make_offer',
{
formData: state => {
state.person_position.submit_type = 'confirm';
return state.person_position;
},
},
post('/manage/make_offer', {
formData: state => {
state.person_position.submit_type = 'save';
return state.person_position;
},
options: {
successCodes: [302],
},
})
);

post(
'/manage/contact?contact_type=personal',
{
formData: state => {
state.person_contact.submit_type = 'confirm';
return state.person_contact;
},
},
post('/manage/contact?contact_type=personal', {
formData: state => {
state.person_contact.submit_type = 'save';
return state.person_contact;
},
options: {
successCodes: [302],
},
})
);


- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11.html b/adaptors/library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11.html index 8e4b9ec86e7..bcb85d4db09 100644 --- a/adaptors/library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11.html +++ b/adaptors/library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11.html @@ -22,13 +22,13 @@ - +
Skip to main content

02a/ Query DB for people to pay

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: 02a/ Query DB for people to pay
  • Adaptor: @openfn/language-mysql
  • Adaptor Version: latest
  • Created almost 4 years ago
  • Updated over 3 years ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

alterState

Expression


sqlString(state => {
// stored procedure will return a list of names, phone numbers (MSISDN), and salary info for employees that should be paid today
return 'CALL get_employees_to_pay();';
});

//alterState(state => {
// Note: we pluck out on the 'RowDataResponses' from the SQL server.
// state.data.records = state.response.body[0];
// return state;
//});
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/02b-Initiate-Payments-2019-11-19.html b/adaptors/library/jobs/auto/02b-Initiate-Payments-2019-11-19.html index 8da84d7193b..d0b8f2c2b6f 100644 --- a/adaptors/library/jobs/auto/02b-Initiate-Payments-2019-11-19.html +++ b/adaptors/library/jobs/auto/02b-Initiate-Payments-2019-11-19.html @@ -22,13 +22,13 @@ - +
Skip to main content

02b/ Initiate Payments

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: 02b/ Initiate Payments
  • Adaptor: @openfn/language-http
  • Adaptor Version: latest
  • Created almost 4 years ago
  • Updated over 3 years ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

alterState, dataPath, each, map, post

Expression

// @trigger 'when 2a succeeds'
// @credential 'ihris-mifos-combined'
// @adaptor 'http'
// -----------------------------------------------------------------------------

// Hang 'payees' on state so that operations which replace "response" don't
// overwrite these data. QUESTION: Why pluck body[0] instead of body[*]? What
// happens if there are multiple payees? Is that first item in the body array an
// array itself?
alterState(state => {
state.data = { payees: state.response.body[0] };
state.saved_config = state.configuration;
return state;
});

// ===========================================================================
// Make payment requests in Mifos with the reponse, either in bulk or by
// iterating through the array of registrants and making a separate request
// for each one ==============================================================
each(
dataPath('payees[*]'),
post(
`${state.configuration.mifosUrl}/channel/transactions`,
{
authentication: state.configuration.mifosAuth,
headers: {
'content-type': 'application/json',
'X-Tenant-Identifier': 'tn07',
},
// Can we send an array of payments to make in a single request?
// body: state.data.registrants.map(r => {
// console.log(`Initiating payment for ${r.name}.`);
// return {
// payer: { msisdn: state.configuration.mifosAcct },
// payee: { msisdn: r.phone },
// amount: r.amount,
// };
// }),
body: state => {
return {
payer: {
partyIdInfo: {
partyIdType: 'MSISDN',
partyIdentifier: '27710203999',
},
},
payee: {
partyIdInfo: {
partyIdType: 'MSISDN',
partyIdentifier: state.data.msisdn,
},
},
amountType: 'SEND',
transactionType: {
scenario: 'PAYMENT',
initiator: 'PAYER',
initiatorType: 'CONSUMER',
},
amount: {
currency: 'USD',
amount: state.data.salary / 52,
},
};
},
},
state => {
const today = new Date();
const currPayee = state.references[0];
state.data.person_payment = {
'form[person_payments][0][0][fields][id]': 'person_payments|0',
'form[person_payments][0][0][fields][parent]':
'person|' + currPayee.person_id,
'form[person_payments][0][0][fields][date][day]': today.getDate(),
'form[person_payments][0][0][fields][date][month]':
today.getMonth() + 1,
'form[person_payments][0][0][fields][date][year]': today.getFullYear(),
'form[person_payments][0][0][fields][amount]': currPayee.salary / 52,
'form[person_payments][0][0][fields][transactionId]':
state.data.body.transactionId,
'form[person_payments][0][0][fields][status]':
state.data.body.transactionId ? 'initiated' : 'failed',
};
// =====================================================================
// Create "initiated" payments in iHRIS with their mifos external IDs ==
post(
`${state.saved_config.ihrisUrl}/manage/person_payments`,
{
authentication: state.configuration.ihrisAuth,
formData: state => {
state.data.person_payment.submit_type = 'confirm';
console.log('PaymentData: ' + state.data.person_payment);
return state.data.person_payment;
},
},
post(`${state.saved_config.ihrisUrl}/manage/person_payments`, {
authentication: state.configuration.ihrisAuth,
formData: state => {
state.references[1].person_payment.submit_type = 'save';
return state.references[1].person_payment;
},
options: {
successCodes: [302],
},
})
)(state);
}
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/03-Update-Payment-Status-2019-11-19.html b/adaptors/library/jobs/auto/03-Update-Payment-Status-2019-11-19.html index c6c9496e6e1..34920025e28 100644 --- a/adaptors/library/jobs/auto/03-Update-Payment-Status-2019-11-19.html +++ b/adaptors/library/jobs/auto/03-Update-Payment-Status-2019-11-19.html @@ -22,13 +22,13 @@ - +
Skip to main content

03/ Update Payment Status

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: 03/ Update Payment Status
  • Adaptor: @openfn/language-mysql
  • Adaptor Version: latest
  • Created almost 4 years ago
  • Updated over 3 years ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

alterState

Expression

sqlString(state => {
console.log(state.data.transactionCode);
return `SELECT record FROM entry WHERE string_value='${state.data.transactionCode}'`;
});

alterState(state => {
// Note: we pluck out on the 'RowDataResponses' from the SQL server.
const recordData = state.response.body.filter(x => x.record !== undefined);
// Get the first record
state.data.record = recordData[0] && recordData[0].record;
return state;
});

sqlString(state => {
return `UPDATE entry SET string_value='completed' where record=${state.data.record} and string_value='initiated'`;
});

sqlString(state => {
return `UPDATE last_entry SET string_value='completed' where record=${state.data.record} and string_value='initiated'`;
});

sqlString(state => {
return `UPDATE hippo_person_payments SET status='completed' where id='person_payments|${state.data.record}'`;
});
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/04a-Query-for-job-changes-2019-12-12.html b/adaptors/library/jobs/auto/04a-Query-for-job-changes-2019-12-12.html index 6f8893e0375..f078a9978cb 100644 --- a/adaptors/library/jobs/auto/04a-Query-for-job-changes-2019-12-12.html +++ b/adaptors/library/jobs/auto/04a-Query-for-job-changes-2019-12-12.html @@ -22,13 +22,13 @@ - +
Skip to main content

04a/Query for job changes

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: 04a/Query for job changes
  • Adaptor: @openfn/language-mysql
  • Adaptor Version: latest
  • Created almost 4 years ago
  • Updated over 3 years ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

alterState

Expression

sqlString(state => {
return "SELECT position_id, position_name, salary, facility_id, facility_name, status \
FROM position_updates WHERE status in ('NEW', 'CLOSED');";
});

alterState(state => {
state.new_jobs = state.response.body;
console.log(state.new_jobs);
return state;
})

sqlString(state => {
return `UPDATE position_updates SET status='PROCESSED' WHERE status in ('NEW','CLOSED')`;
});
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/04b-Update-ODK-form-2019-12-03.html b/adaptors/library/jobs/auto/04b-Update-ODK-form-2019-12-03.html index e95d63ddbc8..586ccd0b27f 100644 --- a/adaptors/library/jobs/auto/04b-Update-ODK-form-2019-12-03.html +++ b/adaptors/library/jobs/auto/04b-Update-ODK-form-2019-12-03.html @@ -22,13 +22,13 @@ - +
Skip to main content

04b/ Update ODK form

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: 04b/ Update ODK form
  • Adaptor: @openfn/language-http
  • Adaptor Version: latest
  • Created almost 4 years ago
  • Updated over 3 years ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

get, post, Number

Expression

// Your job goes here.
get(
'http://165.227.185.106/formXml',
{
query: {
formId: 'registration_form',
},
},
state => {
console.log('Start processing state and form template!');

let template = state.data.body;
let templateUpdated = false;

const itemEx = /<item>\s?<label>[^<>]*<\/label>\s?<value>[^<>]*<\/value>\s?<\/item>/gi;
const itemMatches = template.match(itemEx);

const selectFacilityEx = /<select1\s+ref="\/RegistrationForm\/position_facility">/gi;
//const selectFacilityEx = /<select1\s+ref="\/data\/position_facility">/gi;
const selectPositionEx = /<select1\s+ref="\/RegistrationForm\/position">/gi;
//const selectPositionEx = /<select1\s+ref="\/data\/position">/gi;

console.log(`Received ${state.new_jobs.length} new data!`);

for(let j = 0; j < state.new_jobs.length; j ++) {
let facilityExists = false;
let positionExists = false;

let facilityId = state.new_jobs[j].facility_id;
console.log(`Processing facility: ${facilityId}.`);

const positions = state.new_jobs[j].position_id.split('|');
const salaries = state.new_jobs[j].salary.split('=');

let positionId = `${positions[1]}_${salaries[1]}`;
console.log(`Processing position: ${positionId}.`);
for(let i = 0; i < itemMatches.length; i ++) {
if (itemMatches[i].indexOf(facilityId) >= 0) {
facilityExists = true;
}
if (itemMatches[i].indexOf(positionId) >= 0) {
if (state.new_jobs[j].status === 'CLOSED') {
console.log(`Removing closed position: ${positionId}.`);
template = template.replace(itemMatches[i], '');
templateUpdated = true;
}
positionExists = true;
}
}

if (!facilityExists) {
const selectFacilityMatches = template.match(selectFacilityEx);
console.log("Facility matches: "+selectFacilityMatches)
const facilityItem =
`<item><label>${state.new_jobs[j].facility_name}</label><value>${facilityId}</value></item>`;
console.log(`Adding facility: ${facilityItem}.`);
template = template.replace(
selectFacilityEx,
selectFacilityMatches[0] + facilityItem
);
templateUpdated = true;
} else {
console.log('Not seeing any facility to add. Moving along!');
}

if (!positionExists && state.new_jobs[j].status === 'NEW') {
const selectPositionMatches = template.match(selectPositionEx);
const positionItem =
`<item><label>${state.new_jobs[j].position_name}</label><value>${positionId}</value></item>`;
console.log(`Adding position: ${positionItem}.`);
template = template.replace(
selectPositionEx,
selectPositionMatches[0] + positionItem
);
templateUpdated = true;
} else {
console.log('Not seeing any position to add. Moving along!');
}
}

if (templateUpdated) {
const versionEx = /id="\S+"\s+version="(\S+)"/;
const versionMatches = template.match(versionEx);
const currentVersion = Number.parseInt(versionMatches[1]);
console.log(`Updating form version from: ${currentVersion}`);
template = template.replace(currentVersion, currentVersion + 1);
}

state.template = template;
return state;
}
);

post('http://165.227.185.106/formUpload', {
formData: state => {
return {
form_def_file: {
value: state.template,
options: {
filename: 'registration_form.xml'
}
}
};
},
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/05-Submit-employee-evaluation-2019-12-03.html b/adaptors/library/jobs/auto/05-Submit-employee-evaluation-2019-12-03.html index 361c5bbb743..6040c7030e7 100644 --- a/adaptors/library/jobs/auto/05-Submit-employee-evaluation-2019-12-03.html +++ b/adaptors/library/jobs/auto/05-Submit-employee-evaluation-2019-12-03.html @@ -22,13 +22,13 @@ - +
Skip to main content

05/ Submit employee evaluation

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: 05/ Submit employee evaluation
  • Adaptor: @openfn/language-http
  • Adaptor Version: latest
  • Created almost 4 years ago
  • Updated over 3 years ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

alterState, post

Expression

// @trigger 'when employee evaluation form arrives'
// @credential 'ihris-mifos-combined'
// @adaptor 'http'
// -----------------------------------------------------------------------------

alterState(state => {
state.payee = state.data.EvaluationForm;
state.saved_config = state.configuration;
return state;
});

post(
`${state.configuration.mifosUrl}/channel/transactions`,
{
authentication: state.configuration.mifosAuth,
headers: {
'content-type': 'application/json',
'X-Tenant-Identifier': 'tn07',
},
body: state => {
return {
payer: {
partyIdInfo: {
partyIdType: 'MSISDN',
partyIdentifier: '27710407990',
},
},
payee: {
partyIdInfo: {
partyIdType: 'MSISDN',
partyIdentifier: state.payee.social_worker_id.split('_')[1],
},
},
amountType: 'SEND',
transactionType: {
scenario: 'PAYMENT',
initiator: 'PAYER',
initiatorType: 'CONSUMER',
},
amount: {
currency: 'USD',
// Calculate the bonus amount - for now just use number of clients seen * 100
amount: state.payee.client_counts*100,
},
};
},
},
state => {
const today = new Date();
state.data.person_payment = {
'form[person_payments][0][0][fields][id]': 'person_payments|0',
'form[person_payments][0][0][fields][parent]':
'person|' + state.payee.social_worker_id.split('_')[0],
'form[person_payments][0][0][fields][date][day]': today.getDate(),
'form[person_payments][0][0][fields][date][month]':
today.getMonth() + 1,
'form[person_payments][0][0][fields][date][year]': today.getFullYear(),
'form[person_payments][0][0][fields][amount]': state.payee.client_counts*100,
'form[person_payments][0][0][fields][transactionId]':
state.data.body.transactionId,
'form[person_payments][0][0][fields][status]':
state.data.body.transactionId ? 'initiated' : 'failed',
};
// =====================================================================
// Create "initiated" payments in iHRIS with their mifos external IDs ==
post(
`${state.saved_config.ihrisUrl}/manage/person_payments`,
{
authentication: state.configuration.ihrisAuth,
formData: state => {
state.data.person_payment.submit_type = 'confirm';
console.log('PaymentData: ' + state.data.person_payment);
return state.data.person_payment;
},
},
post(`${state.saved_config.ihrisUrl}/manage/person_payments`, {
authentication: state.configuration.ihrisAuth,
formData: state => {
state.references[1].person_payment.submit_type = 'save';
return state.references[1].person_payment;
},
options: {
successCodes: [302],
},
})
)(state);
}
);


- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/05a-Query-for-new-employees-2019-12-19.html b/adaptors/library/jobs/auto/05a-Query-for-new-employees-2019-12-19.html index f2ad5c71216..32af2e650cc 100644 --- a/adaptors/library/jobs/auto/05a-Query-for-new-employees-2019-12-19.html +++ b/adaptors/library/jobs/auto/05a-Query-for-new-employees-2019-12-19.html @@ -22,13 +22,13 @@ - +
Skip to main content

05a/Query for new employees

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: 05a/Query for new employees
  • Adaptor: @openfn/language-mysql
  • Adaptor Version: latest
  • Created almost 4 years ago
  • Updated over 3 years ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

alterState

Expression

sqlString(state => {
return "SELECT person_id, person_name, msisdn, status FROM employee_updates WHERE status='NEW';";
});

alterState(state => {
state.new_employees = state.response.body;
console.log(state.new_employees);
return state;
})

sqlString(state => {
return `UPDATE employee_updates SET status='PROCESSED' WHERE status='NEW'`;
});
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19.html b/adaptors/library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19.html index e55c8cf90ed..ba149ec1c42 100644 --- a/adaptors/library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19.html +++ b/adaptors/library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19.html @@ -22,13 +22,13 @@ - +
Skip to main content

05b/Update ODK eval form

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: 05b/Update ODK eval form
  • Adaptor: @openfn/language-http
  • Adaptor Version: latest
  • Created almost 4 years ago
  • Updated over 3 years ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

get, post, Number

Expression

// Your job goes here.
get(
'http://165.227.185.106/formXml',
{
query: {
formId: 'evaluation_form',
},
},
state => {
let template = state.data.body;
let templateUpdated = false;

const itemEx = /<item>\s?<label>[^<>]*<\/label>\s?<value>[^<>]*<\/value>\s?<\/item>/gi;
const itemMatches = template.match(itemEx);

const selectUserEx = /<select1\s+ref="\/EvaluationForm\/social_worker_id">/gi;

console.log(`Receiving ${state.new_employees.length} new data!`);

for (let j = 0; j < state.new_employees.length; j++) {
let userExists = false;

let userId = state.new_employees[j].person_id.split('|')[1];
console.log(`Processing user: ${userId}.`);

for (let i = 0; i < itemMatches.length; i++) {
if (itemMatches[i].indexOf(userId) >= 0) {
userExists = true;
}
}

if (!userExists) {
const selectUserMatches = template.match(selectUserEx);
const msisdn = state.new_employees[j].msisdn;
const userItem =
`<item><label>${state.new_employees[j].person_name}</label><value>${userId}_${msisdn}</value></item>`;
console.log(`Adding user: ${userItem}.`);
template = template.replace(
selectUserEx,
selectUserMatches[0] + userItem
);
templateUpdated = true;
} else {
console.log('Not seeing any user to add. Moving along!');
}
}

if (templateUpdated) {
const versionEx = /id="\S+"\s+version="(\S+)"/;
const versionMatches = template.match(versionEx);
const currentVersion = Number.parseInt(versionMatches[1]);
console.log(`Updating form version from: ${currentVersion}`);
template = template.replace(currentVersion, currentVersion + 1);
}

state.template = template;
return state;
}
);

post('http://165.227.185.106/formUpload', {
formData: state => {
return {
form_def_file: {
value: state.template,
options: {
filename: 'evaluation_form.xml'
}
}
};
},
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/1-Create-Payment-in-SF-2018-09-03.html b/adaptors/library/jobs/auto/1-Create-Payment-in-SF-2018-09-03.html index de96c73c1bd..769369773e5 100644 --- a/adaptors/library/jobs/auto/1-Create-Payment-in-SF-2018-09-03.html +++ b/adaptors/library/jobs/auto/1-Create-Payment-in-SF-2018-09-03.html @@ -22,13 +22,13 @@ - +
Skip to main content

1. Create Payment in SF

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

create, dataValue, field, fields, relationship

Expression

create('Payment__c', fields(
field('Name', dataValue('reference_number')),
field('Amount__c', dataValue('amount')),
field('Phone_Number__c', dataValue('sender_number')),
relationship('Contract__r', 'ContractNumber', dataValue('contract_number'))
));
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08.html b/adaptors/library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08.html index 20a7dfaa47a..7553538ae79 100644 --- a/adaptors/library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08.html +++ b/adaptors/library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08.html @@ -22,13 +22,13 @@ - +
Skip to main content

1. Get CommCare Forms (Bulk Extract)

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: 1. Get CommCare Forms (Bulk Extract)
  • Adaptor: @openfn/language-http
  • Adaptor Version: v3.1.7
  • Created over 2 years ago
  • Updated over 1 year ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

each, get, post

Expression

get(
'https://www.commcarehq.org/a/grassrootsoccertrial/api/v0.5/form/',
{
query: {
limit: 1000, //max limit: 1000
offset: state.meta && state.meta.next ? state.meta.limit + state.meta.offset : 0,
received_on_start: '2022-02-16',
received_on_end: '2022-02-18',
xmlns: 'http://openrosa.org/formdesigner/D771417E-354E-4906-A686-DF0BA230F16A',
},
},
state => {
const { meta, objects } = state.data;
const { openfnInboxUrl } = state.configuration;
const xmlnsList = [
// 'http://openrosa.org/formdesigner/40BBC9E3-C650-4F72-A027-235BF33D87AB', //Create Intervention form
// 'http://openrosa.org/formdesigner/D50A9A33-B1B4-41B2-9ACA-15DBBDFBCF8C', // My Team/Group Name form
//'http://openrosa.org/formdesigner/D771417E-354E-4906-A686-DF0BA230F16A', // Register Participant form
// 'http://openrosa.org/formdesigner/2B9F69A2-7E51-49F6-9FF9-F72F3EC14A9E', // Register Participant skillz
// 'http://openrosa.org/formdesigner/304CABA9-C8A8-4360-83C6-5E2EC1D2C2AC', // Intervention notes
//'http://openrosa.org/formdesigner/56DB98AC-67EC-4BBA-91FC-9443E84E43CE', //PHQ9
// 'http://openrosa.org/formdesigner/5E2E3990-2C3C-42F5-BE0B-922ED29939C4', // ART Adherence Self-Reporting Tool
// 'http://openrosa.org/formdesigner/4CFAC371-88F7-4349-BEB2-3DA2BDE445EA', //Malaria Testing Event Snapshot
// 'http://openrosa.org/formdesigner/FAF8F169-0FF1-4DE4-98B7-E4450BECBC84', //Malaria Testing Event Statistics
// 'http://openrosa.org/formdesigner/E31B9126-1DCA-4603-AD57-271A843448B3', //Register Skillz Plus Club
//'http://openrosa.org/formdesigner/5D8455CE-6044-471D-83BB-131A3D52794B', // Service Referral Followup -> confirm services received
// 'http://openrosa.org/formdesigner/0B3DD3B4-A767-4671-A63C-8A352DAA8E2D', // service referral followup
//'http://openrosa.org/formdesigner/59E1207B-969F-402D-9EEE-675504036F78', //Home Visit log form
// 'http://openrosa.org/formdesigner/3B4B1C64-092A-4922-B033-94D80A11D960', // Coach Session Register form
// 'http://openrosa.org/formdesigner/41DF97A0-0E4B-460D-B983-13D404565009', //HIV Testing Event Snapshot
// 'http://openrosa.org/formdesigner/EAA0ABBB-C517-4E7F-82A9-5799E944FE52', //HIV Testing Event Statistics
// 'http://openrosa.org/formdesigner/EA6C0348-91F7-44FC-8786-B34F50B0CB62', //Register Event
// 'http://openrosa.org/formdesigner/34DD6DFD-13E7-4E19-8A27-F18B6D39E12E', //Attendance
//'http://openrosa.org/formdesigner/F55C4DF9-0CCD-4AED-A5C4-1E39ED2E45C4', //Attendance skillz plus club
// 'http://openrosa.org/formdesigner/A3AF9DA6-1D57-46E4-8431-A5C262DC2DBA', // Pre Challenges
// 'http://openrosa.org/formdesigner/D2F0F23F-9C0E-41E7-9C46-7553F8B5DCC8', // Post Challenges
//'http://openrosa.org/formdesigner/0DAB6FD9-A7C1-4F56-A1C8-794B7C123F95', // Service Referral
// 'http://openrosa.org/formdesigner/98041DA3-B37D-4E8E-A9B9-29EDC036A46A', // Aggregate Service Referrals
// 'http://openrosa.org/formdesigner/50A337EB-FBD8-4607-A664-21AAE51DFCD1', // Coach Support Visit form
// 'http://openrosa.org/formdesigner/AA396157-EBF9-4B51-B25A-D5BDA4F3DF73', // Coach Support Visit form Zambia
// 'http://openrosa.org/formdesigner/3FFDCE4F-35A9-4FA9-971F-EFFDC94E597F', //Risk & vulnerability assessment
//'http://openrosa.org/formdesigner/3DAF13EC-FA77-4480-8946-667D841B439A', //risk & vulnerability assessment | new Referrals
];

// const forms = objects.filter(obj => xmlnsList.includes(obj.form['@xmlns']));
const forms = objects;

state.configuration = { baseUrl: 'https://www.openfn.org' };
console.log('Posting form submissions to OpenFn Inbox...');

return each(forms, state => {
return post(`/inbox/${openfnInboxUrl}`, { body: state.data }, state => ({
...state,
data: {},
references: [],
}))(state);
})(state);
}
);
//ALL form xmlns codes
//xmlns: 'http://openrosa.org/formdesigner/D50A9A33-B1B4-41B2-9ACA-15DBBDFBCF8C', // My Team/Group Name form
//xmlns: 'http://openrosa.org/formdesigner/D771417E-354E-4906-A686-DF0BA230F16A', // Register Participant form
//xmlns: 'http://openrosa.org/formdesigner/2B9F69A2-7E51-49F6-9FF9-F72F3EC14A9E', // Register Participant skillz
//xmlns: 'http://openrosa.org/formdesigner/304CABA9-C8A8-4360-83C6-5E2EC1D2C2AC', // Intervention notes
//xmlns: 'http://openrosa.org/formdesigner/304CABA9-C8A8-4360-83C6-5E2EC1D2C2AC', // Intervention Notes form
//xmlns: 'http://openrosa.org/formdesigner/AA396157-EBF9-4B51-B25A-D5BDA4F3DF73', // Coach Support Visit form Zambia
//xmlns: 'http://openrosa.org/formdesigner/50A337EB-FBD8-4607-A664-21AAE51DFCD1', // Coach Support Visit form
//xmlns: 'http://openrosa.org/formdesigner/3B4B1C64-092A-4922-B033-94D80A11D960', // Coach Session Register form
//xmlns: 'http://openrosa.org/formdesigner/34DD6DFD-13E7-4E19-8A27-F18B6D39E12E', //Attendance
//xmlns: 'http://openrosa.org/formdesigner/4CFAC371-88F7-4349-BEB2-3DA2BDE445EA', //Malaria Testing Event Snapshot
//xmlns: 'http://openrosa.org/formdesigner/59E1207B-969F-402D-9EEE-675504036F78', //Home Visit log form
//xmlns: 'http://openrosa.org/formdesigner/41DF97A0-0E4B-460D-B983-13D404565009', //HIV Testing Event Snapshot
//xmlns: 'http://openrosa.org/formdesigner/551BCED9-077B-40EE-849D-0416756B9A75', // PHQ9
//xmlns: 'http://openrosa.org/formdesigner/0DAB6FD9-A7C1-4F56-A1C8-794B7C123F95', // Service Referral
//xmlns: 'http://openrosa.org/formdesigner/0B3DD3B4-A767-4671-A63C-8A352DAA8E2D', // Service Referral Followup
//xmlns: 'http://openrosa.org/formdesigner/98041DA3-B37D-4E8E-A9B9-29EDC036A46A', // Aggregate Service Referrals
//xmlns: 'http://openrosa.org/formdesigner/5E2E3990-2C3C-42F5-BE0B-922ED29939C4', // ART Adherence Self-Reporting Tool
//xmlns: 'http://openrosa.org/formdesigner/A3AF9DA6-1D57-46E4-8431-A5C262DC2DBA', // Pre Challenges
//xmlns: 'http://openrosa.org/formdesigner/D2F0F23F-9C0E-41E7-9C46-7553F8B5DCC8', // Post Challenges
//xmlns: 'http://openrosa.org/formdesigner/FAF8F169-0FF1-4DE4-98B7-E4450BECBC84', // Malaria Testing Event Statistics
//xmlns: 'http://openrosa.org/formdesigner/EA6C0348-91F7-44FC-8786-B34F50B0CB62', //Register Event
//xmlns: 'http://openrosa.org/formdesigner/EAA0ABBB-C517-4E7F-82A9-5799E944FE52', //HIV Testing Event Statistics

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08.html b/adaptors/library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08.html index b0541112ae6..27581faa182 100644 --- a/adaptors/library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08.html +++ b/adaptors/library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08.html @@ -22,13 +22,13 @@ - +
Skip to main content
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14.html b/adaptors/library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14.html index 4e1eba30200..42f20b0e5b1 100644 --- a/adaptors/library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14.html +++ b/adaptors/library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14.html @@ -22,13 +22,13 @@ - +
Skip to main content

2. SMS Balance Update to Customer

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, send

Expression

send(
fields(
field('to_number',
dataValue('Envelope.Body.notification.Phone_Number__c')
),
field('message_type', 'sms'),
field('route_id', 'PN5d224d8136086997'),
field('content',
'Payment successful! Your updated contract balance is '
+ state.data.Envelope.Body.notification.AmountDue__c
)
)
);
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28.html b/adaptors/library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28.html index daa23842a21..025add561ed 100644 --- a/adaptors/library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28.html +++ b/adaptors/library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28.html @@ -22,13 +22,13 @@ - +
Skip to main content

Add DHIS2 Data Value Sets

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: Add DHIS2 Data Value Sets
  • Adaptor: @openfn/language-dhis2
  • Adaptor Version: v0.1.0
  • Created over 7 years ago
  • Updated about 6 years ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

dataPath, dataValue, each, field, fields

Expression

each(
dataPath("data[*]"),
// Use our system specific helper functions...
dataValueSet(
fields(
field("dataSet", "pBOMPrpg1QX"),
field("orgUnit", "DiszpKrYNg8"),
field("period", "201401"),
field("completeData", dataValue("today")),
field("dataValues", function(state) {
// Or write your own JS...
console.log("Do anything you want in here.");
return [
dataElement("qrur9Dvnyt5", state.data.site_school_number),
dataElement("oZg33kd9taw", state.data.light_source),
dataElement("msodh3rEMJa", state.data.number_of_children)
];
})
)
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Attendance-Non-Skillz-2021-06-14.html b/adaptors/library/jobs/auto/Attendance-Non-Skillz-2021-06-14.html index c8408f2c255..931f0b66373 100644 --- a/adaptors/library/jobs/auto/Attendance-Non-Skillz-2021-06-14.html +++ b/adaptors/library/jobs/auto/Attendance-Non-Skillz-2021-06-14.html @@ -22,13 +22,13 @@ - +
Skip to main content

Attendance Non Skillz

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataPath, dataValue, each, field, fields, lastReferenceValue, map, merge, query, relationship, upsert, Array

Expression

fn(state => {
if (!state.data.form.attendance_list.update_participant_cases.item) {
console.log('No participant attendance data was provided, not upserting to Salesforce.');
return state;
} else {
// query(
// `SELECT Id, Name, CommCare_Ext_ID__c FROM Event__c WHERE CommCare_Case_ID__c = '${state.data.form.attendance_list.update_participant_cases.item[0]['@id']}'`
// );

// fn(state => {
const records = lastReferenceValue('records')(state);
const eventName = lastReferenceValue('records[0].CommCare_Ext_ID__c')(state);

function replaceAccents(input) {
return input
.replace(/á|â|ã|à/, 'a')
.replace(/Á|Â|Ã|À/, 'A')
.replace(/ç/, 'c')
.replace(/é|ê/, 'e')
.replace(/É|Ê/, 'E')
.replace(/í/, 'i')
.replace(/Í/, 'I')
.replace(/ó|ô|õ/, 'o')
.replace(/Ó|Ô|Õ/, 'O')
.replace(/ú/, 'u')
.replace(/Ú/, 'u');
}
// if (!eventName) {
// console.log(
// `Participant not found with CommCare_Case_ID__c: ${state.data.form.attendance_list.update_participant_cases.item[0]['@id']}`
// );
// return state;
// }

return execute(
fn(state => {
// Note: lastReferenceValue selects the first item in the references array.
state.data.eventName = eventName ? eventName.replace(/\//gi, '') : null;

function getSessionValue(present) {
switch (present.toString().toLowerCase()) {
case 'yes':
return 'X';
case 'no':
return 'A';
case '':
return 'N';
default:
return 'U';
}
}

function getSessionId(session_text) {
return session_text.toString().trim().slice(0, session_text.indexOf(' ')).slice(1);
}

function objectToArray(object) {
if (!object) return [];
return !Array.isArray(object) ? [object] : object;
}

state.data.form.attendance_list.update_participant_cases.item = objectToArray(
state.data.form.attendance_list.update_participant_cases.item
);

const sessionText = dataValue('form.attendance_list.session')(state);
const sessionId = getSessionId(sessionText);

// @aleksa-krolls confirm the path for the session date
const sessionDate = dataValue("form.case['@date_modified']")(state);

state.data.form.attendance_list.update_participant_cases.item =
state.data.form.attendance_list.update_participant_cases.item.map(item => {
const sessionValue = getSessionValue(item.attendance_session);
return {
...item,
dynamicFields: {
[`Session_${sessionId}__c`]: sessionValue,
[`Session_${sessionId}_Date__c`]: sessionDate,
},
};
});

return state;
}),

each(
merge(
dataPath('form.attendance_list.update_participant_cases.item[*]'),
fields(
field('intervention_name', dataValue('form.intervention_name')),
field('eventName', dataValue('eventName')),
field('caseid', dataValue('form.case.@case_id'))
)
),
upsert('Attendance__c', 'CommCare_Ext_ID__c', state => ({
...fields(
relationship('Event__r', 'CommCare_Case_ID__c', dataValue('caseid')),
field(
'CommCare_Ext_ID__c',
state => `${state.data['@id']}-${replaceAccents(state.data.intervention_name)}`
),
relationship('Person_Attendance__r', 'Participant_Identification_Number_PID__c', dataValue('@id'))
),
...state.data.dynamicFields,
}))
)
)(state);
}
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/CHW-case-to-DHIS2-2023-04-27.html b/adaptors/library/jobs/auto/CHW-case-to-DHIS2-2023-04-27.html index 8c7f60d1676..4b4860bc9a2 100644 --- a/adaptors/library/jobs/auto/CHW-case-to-DHIS2-2023-04-27.html +++ b/adaptors/library/jobs/auto/CHW-case-to-DHIS2-2023-04-27.html @@ -22,13 +22,13 @@ - +
Skip to main content

CHW case to DHIS2

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

create, dataValue

Expression

create('trackedEntityInstances', {
trackedEntityType: 'nEenWmSyUEp', // a person
orgUnit: 'DiszpKrYNg8',
attributes: [
{
attribute: 'w75KJ2mc4zz', // attribute id for first name
value: dataValue('case.firstName')(state) // data from submission
},
{
attribute: 'zDhUuAYrxNC', // attribute id for last name
value: dataValue('case.lastName')(state) // data from another submission field
}
]
});
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26.html b/adaptors/library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26.html index baed5252fd6..d72918efbe3 100644 --- a/adaptors/library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26.html +++ b/adaptors/library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26.html @@ -22,13 +22,13 @@ - +
Skip to main content

Catch Error in HTTP Request

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: Catch Error in HTTP Request
  • Adaptor: @openfn/language-http
  • Adaptor Version: latest
  • Created about 7 years ago
  • Updated about 1 year ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

get, JSON

Expression

get(
'https://jsonplaceholder.typicode.com/wrongUrl', // the url
{
transformResponse: [
data => {
console.log("The data from the response, BEFORE the error is thrown");
console.log(JSON.stringify(data, null, 2))
return data;
}
],
}, // no additional options
state => { // the callback
console.log('the data', state.data)
return state;
}
);
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Coach-Session-Register-2021-05-03.html b/adaptors/library/jobs/auto/Coach-Session-Register-2021-05-03.html index 81b4c277fb4..4e73616c97b 100644 --- a/adaptors/library/jobs/auto/Coach-Session-Register-2021-05-03.html +++ b/adaptors/library/jobs/auto/Coach-Session-Register-2021-05-03.html @@ -22,13 +22,13 @@ - +
Skip to main content

Coach Session Register

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, each, field, fields, query, relationship, upsert

Expression

// push to production
query(
`SELECT Coach_A__c, Coach_A__r.Name from Event__c where CommCare_Case_ID__c = '${state.data.form.case['@case_id']}'`
);

fn(state => {
const present = dataValue('form.present')(state).toLowerCase();

function getSessionValue() {
let value;
switch (present) {
case 'yes':
value = 'X';
break;
case 'no':
value = 'A';
break;
case '':
value = 'N';
break;
default:
value = 'U';
break;
}
return value;
}

const session_text = dataValue('form.session')(state);

const session_id = session_text.trim().slice(0, session_text.indexOf(' ')).slice(1);

const coachname = dataValue('form.coach_name')(state)
? dataValue('form.coach_name')(state)
: state.references[0].records[0].Coach_A__r.Name;

let external_id = `${dataValue('form.case.@case_id')(state)}
${coachname}`; //case_id + coach_name for external Id

state.data.commcare_external_id = external_id.toLowerCase().replace(/\s/g, '').trim();

state.data.dynamicFields = [
field(`Session_${session_id}__c`, getSessionValue()),
field(`Session_${session_id}_Date__c`, dataValue('form.date')(state)),
//field(`Session_${session_id}_Duration__c`, dataValue('form.duration')(state)), //NOTE: Duration fields don't exist in SF?
];

state.data.durationFields = [field(`Session_${session_id}_Duration__c`, dataValue('form.duration')(state))];

return state;
});

upsert('Event__c', 'CommCare_Case_ID__c', state => ({
...fields(field('CommCare_Case_ID__c', dataValue('form.case.@case_id'))),
...fields(...state.data.durationFields),
}));

query(
`SELECT Coach_A__c, Coach_A__r.CommCare_Ext_ID__c from Event__c where CommCare_Case_ID__c = '${state.data.form.case['@case_id']}'`
);

fn(state => {
const coaches = dataValue('form.coach_name')(state).split(' ');
const dynamicFields = state.data.dynamicFields;
const commcare_external_id = state.data.commcare_external_id;
const caseid = state.data.form.case['@case_id'];
return each(
coaches,
upsert('Attendance__c', 'CommCare_Ext_ID__c', state => ({
...fields(
//relationship('RecordType', 'Name', 'Coach Development'),
field('RecordTypeId', '012500000009jqaAAA'),
relationship('Event__r', 'CommCare_Case_ID__c', caseid),
relationship('Person_Attendance__r', 'CommCare_Ext_ID__c', state => {
const coach_name = state.data;
return coach_name;
}),
field('CommCare_Ext_ID__c', commcare_external_id)
),
...fields(...dynamicFields),
}))
)(state);
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/CommCare-FHIR.html b/adaptors/library/jobs/auto/CommCare-FHIR.html index b7f2b020a21..4fc354e3d40 100644 --- a/adaptors/library/jobs/auto/CommCare-FHIR.html +++ b/adaptors/library/jobs/auto/CommCare-FHIR.html @@ -22,13 +22,13 @@ - +
Skip to main content

Create encounter in OpenHIM

📜 This job is an official example from OpenFn.

Metadata

Key Functions

dataValue, field, fields

Expression

// CommCare form submission mapped to the FHIR patient encounter standard,
// submitted by Simon Kelly @ Dimagi.
encounter(
fields(
field('resourceType', 'Encounter'),
field('status', 'finished'),
field('type', function (state) {
return [
{
coding: [
{
system: 'momconnect:type',
code: '8',
},
],
},
];
}),
field('contained', function (state) {
return [
{
resourceType: 'Patient',
id: 'patient',
identifier: [
{
use: 'official',
system: 'momconnect:sanid',
value: dataValue('properties.id_number')(state),
},
],
name: [
{
use: 'official',
family: [dataValue('properties.family_name')(state)],
given: [dataValue('properties.given_name')(state)],
text: dataValue('properties.given_name')(state).concat(
' ',
dataValue('properties.family_name')(state)
),
},
],
gender: 'female',
birthDate: dataValue('properties.dob')(state),
telecom: [
{
system: 'phone',
value: dataValue('properties.msisdn')(state),
},
],
communication: [
{
language: {
coding: [
{
system: 'urn:ietf:bcp:47',
code: dataValue('properties.language_code')(state),
},
],
},
preferred: true,
},
],
},
{
resourceType: 'Observation',
id: 'edd',
code: {
coding: [
{
system: 'http://loinc.org',
code: '11778-8',
display: 'Delivery date Estimated',
},
],
},
valueDateTime: dataValue('properties.edd')(state),
status: 'preliminary',
},
];
}),
field('patient', function (state) {
return {
reference: '#patient',
};
}),
field('period', function (state) {
return {
start: dataValue('properties.visit_date')(state),
};
}),
field('extension', function (state) {
return [
{
url: 'momconnect:mha',
valueInteger: 2,
},
{
url: 'momconnect:swt',
valueInteger: 3,
},
{
url: 'momconnect:dmsisdn',
valueString: '+27831111111',
},
];
})
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27.html b/adaptors/library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27.html index 80f615c75bc..ad9be39f49e 100644 --- a/adaptors/library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27.html +++ b/adaptors/library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27.html @@ -22,13 +22,13 @@ - +
Skip to main content

CommCare to Azure Sql

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

alterState, join, map, sql

Expression

// Insert household, fail on duplicate (consider upsert strategy, if you want!)
sql({
query:
'INSERT INTO Household (' +
[
'commcare_id',
'is_head',
'total_members',
'head_name',
'date_registered',
'village',
'new_thing',
].join(', ') +
`) VALUES ('` +
[
state.data.metadata.instanceID,
state.data.form.head_of_household === 'yes' ? 1 : 0,
state.data.form.hh_members,
state.data.form.individual_name,
state.data.form.registration_date,
state.data.form.village_name,
state.data.form.new_q,
].join(`', '`) +
`');`,
});

// Prepare a string to be used for VALUES (...) in our member insert.
alterState(state => {
const data = state.references[0];
const form = data.form;
const parentId = data.metadata.instanceID;
const memArr = form.register_hh_members.map((m, i) => {
return `('${parentId}-${i}', '${parentId}', '${m.hh_member_name}', '${m.age}')`;
});

state.members = memArr.join(', ');
return state;
});

// Insert members, fail on duplicate
sql({
query: state =>
`INSERT INTO HouseholdMember (commcare_id, parent, name, age) VALUES ${state.members}`,
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Create-Intervention-2021-04-08.html b/adaptors/library/jobs/auto/Create-Intervention-2021-04-08.html index 8ac4ebfcb94..04d238f3f0b 100644 --- a/adaptors/library/jobs/auto/Create-Intervention-2021-04-08.html +++ b/adaptors/library/jobs/auto/Create-Intervention-2021-04-08.html @@ -22,13 +22,13 @@ - +
Skip to main content

Create Intervention

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

alterState, dataValue, field, fields, join, map, relationship, upsert

Expression

alterState((state) => {

function clean(str) {
if (!!str)
return str
.split('_')
.map(word => {
let new_word = word.toString().toLowerCase();
return new_word.slice(0, 1).toUpperCase() + new_word.slice(1);
})
.join(' ');
}

state.data.form.delivery_method = clean(state.data.form.delivery_method);

const coachFieldNames = ['Coach_A__r','Coach_B__r','Coach_C__r','Coach_D__r']

state.data.destinationCoachFields = state.data.form.coaches
.split(' ')
.reduce(
(accumulator, currentValue, currentIndex) => [
...accumulator,
(currentIndex < coachFieldNames.length && !!currentValue
? relationship(coachFieldNames[currentIndex], 'CommCare_Ext_ID__c', currentValue)
: []),
],
[]
);

return state;
});

upsert(
'Event__c',
'CommCare_Case_ID__c',
state=>({
...fields(
field('Name', dataValue('form.name_of_intervention')),
field('CommCare_Ext_ID__c', state => {
return dataValue('form.name_of_intervention')(state).replace(/\//gi, '');
}),
field('CommCare_Case_ID__c', dataValue('form.case.@case_id')),
relationship('RecordType', 'Name', 'Intervention'),
field('Business_Unit__c', state => {
const bu = dataValue('form.business_unit')(state);
return bu==='65680f0c4c144b03ad0f86bdc46c1ebc' ? 'GRS Zambia' :
bu==='04d98397e28046118fade28ced6b65cb' ? 'GRS Zimbabwe' :
bu==='ed125ab19ec34aacab79585e59eb76f4' ? 'GRS Partnerships': undefined ;
}),
relationship(
'Site__r',
'CommCare_Ext_ID__c',
dataValue('form.site')
),
relationship(
'Venue__r',
'CommCare_Ext_ID__c',
dataValue('form.Venue')

),
relationship(
'Curriculum__r',
'CommCare_Ext_ID__c',
dataValue('form.curriculum_selection.curriculum')
),
field('Delivery_Method__c', dataValue('form.delivery_method')),
field('Class_Group_Team__c', dataValue('form.class_grade')),
field('Pre_Post_Administered__c', dataValue('form.prepost_administered')),
field('Start_Date__c', dataValue('form.intervention_dates.start_date')),
field('End_Date__c', dataValue('form.intervention_dates.end_date'))
),
...fields(...state.data.destinationCoachFields)
})
);
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24.html b/adaptors/library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24.html index 2492486ba44..14ec5d1abfb 100644 --- a/adaptors/library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24.html +++ b/adaptors/library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24.html @@ -22,13 +22,13 @@ - +
Skip to main content

Create Patient in OpenMRS

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields

Expression

//Job to create patient in OpenMRS 
patient(
fields(
field("gender", dataValue("form.gender")), //map values from CommCare forms
field("names", function(state) {
return [{
"patient_id": dataValue("form.case.@case_id")(state),
"creator": dataValue("form.user")(state)
}]
})
)
)





- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12.html b/adaptors/library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12.html index 153202c33d5..71f8baf20e8 100644 --- a/adaptors/library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12.html +++ b/adaptors/library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12.html @@ -22,13 +22,13 @@ - +
Skip to main content

Create Person in OpenMRS

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields

Expression

person(
fields(
field("gender", "M"),
field("names", function(state) {
return [{
"givenName": dataValue("form.first_name")(state),
"familyName": "Sports_Music_Field_Day"
}]
})
)
)
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Create-Person-in-SF-2019-02-25.html b/adaptors/library/jobs/auto/Create-Person-in-SF-2019-02-25.html index 612f11d1b69..9903b819371 100644 --- a/adaptors/library/jobs/auto/Create-Person-in-SF-2019-02-25.html +++ b/adaptors/library/jobs/auto/Create-Person-in-SF-2019-02-25.html @@ -22,13 +22,13 @@ - +
Skip to main content

Create Person in SF

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, humanProper, relationship, upsert

Expression

upsert("Patient__c", "CommCare_Case_ID__c", fields(
field('CommCare_Case_ID__c', dataValue("form.case.@case_id")),
relationship('Clinic__r', 'Location_ID__c', dataValue('form.case.create.owner_id')),
field('First_Name__c', humanProper(state.data.form.case.update.patient_first_name)),
field('Last_Name__c', humanProper(state.data.form.case.update.patient_last_name)),
field('Patient_ID__c', dataValue('form.case.update.patient_id')),
field('Age_Months_Started_Treatment__c', dataValue('form.case.update.age_months_start_treatment_rounded')),
field('Registration_Date__c', (state) => {
const validDate = state.data.form.case.update.registration_date
return ( validDate ? new Date(validDate).toISOString() : null )
})
))
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF.html b/adaptors/library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF.html index eeb7896f502..5c98a25a42c 100644 --- a/adaptors/library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF.html +++ b/adaptors/library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF.html @@ -22,13 +22,13 @@ - +
Skip to main content

Create SMS linked to contact

📜 This job is an official example from OpenFn.

Metadata

Key Functions

create, dataValue, field, fields, relationship

Expression

create(
'SMS__c',
fields(
field('text__c', dataValue('message_text')),
relationship(
'Contact__r',
'Contact_Phone_Number__c',
dataValue('from_number')
),
field('date__c', dataValue('date'))
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Create-TEI-dhis2-2021-03-22.html b/adaptors/library/jobs/auto/Create-TEI-dhis2-2021-03-22.html index 7dc33f3bf94..0570861a11f 100644 --- a/adaptors/library/jobs/auto/Create-TEI-dhis2-2021-03-22.html +++ b/adaptors/library/jobs/auto/Create-TEI-dhis2-2021-03-22.html @@ -22,13 +22,13 @@ - +
Skip to main content

Create TEI (dhis2)

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

create, dataValue

Expression

create('trackedEntityInstances', {
orgUnit: 'g8upMTyEZGZ',
trackedEntityType: 'nEenWmSyUEp',
program: 'IpHINAT79UW',
attributes: [
{ attribute: 'zDhUuAYrxNC', value: dataValue('body.Patient_name') },
{ attribute: 'w75KJ2mc4zz', value: dataValue('body.Last_Name_of_Patient') },
],
enrollments: [
{
orgUnit: 'g8upMTyEZGZ',
program: 'IpHINAT79UW',
programState: 'oRySG82BKE6', // active
enrollmentDate: dataValue('body.Date'),
incidentDate: dataValue('body.Date'),
},
],
});
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Create-contact-2021-03-01.html b/adaptors/library/jobs/auto/Create-contact-2021-03-01.html index 9cca5b5b5af..002e729e941 100644 --- a/adaptors/library/jobs/auto/Create-contact-2021-03-01.html +++ b/adaptors/library/jobs/auto/Create-contact-2021-03-01.html @@ -22,13 +22,13 @@ - +
Skip to main content

Create contact

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

create, dataValue

Expression

create('Contact', {
FirstName: dataValue("body.Patient_name"),
LastName: dataValue('body.Last_Name_of_Patient'),
Age__c: dataValue("body.Age"),
Sex__c: dataValue('body.Sex'),
Case_ID__c: dataValue("body.National_ID"),
Comments__c: dataValue("body.Comments")
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/DHIS2-DataValues-API.html b/adaptors/library/jobs/auto/DHIS2-DataValues-API.html index 051bb0e952f..efe3d4f98e1 100644 --- a/adaptors/library/jobs/auto/DHIS2-DataValues-API.html +++ b/adaptors/library/jobs/auto/DHIS2-DataValues-API.html @@ -22,13 +22,13 @@ - +
Skip to main content

Add data values

📜 This job is an official example from OpenFn.

Metadata

Key Functions

dataValue, field, fields

Expression

// ----
// Add data to data value sets in DHIS2 using a generic JSON message, submitted
// by Taylor Downs @ OpenFn.
// ---

dataValueSet(
fields(
field('dataSet', 'pBOMPrpg1QX'),
field('orgUnit', 'DiszpKrYNg8'),
field('period', '201401'),
field('completeData', dataValue('form.date')),
field('dataValues', function (state) {
return [
dataElement('qrur9Dvnyt5', dataValue('form.prop_a')(state)),
dataElement('oZg33kd9taw', dataValue('form.prop_b')(state)),
dataElement('msodh3rEMJa', dataValue('form.prop_c')(state)),
];
})
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/DHIS2-Events-2016-01-27.html b/adaptors/library/jobs/auto/DHIS2-Events-2016-01-27.html index 177a9354b20..5aaba4726d8 100644 --- a/adaptors/library/jobs/auto/DHIS2-Events-2016-01-27.html +++ b/adaptors/library/jobs/auto/DHIS2-Events-2016-01-27.html @@ -22,13 +22,13 @@ - +
Skip to main content

DHIS2 Events

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

create, dataValue, Math

Expression

create('trackedEntityInstances', {
orgUnit: 'DiszpKrYNg8',
trackedEntityType: 'Zy2SEgA61ys',
attributes: [
{
attribute: 'flGbXLXCrEo', // system case ID
value: Math.random(),
},
],
});

// create('trackedEntityInstances', {
// trackedEntityType: 'nEenWmSyUEp', // a person
// orgUnit: 'g8upMTyEZGZ', // Njandama MCHP
// attributes: [
// {
// attribute: 'w75KJ2mc4zz', // attribute id for first name
// value: dataValue('case.firstName')(state), // data from submission
// },
// {
// attribute: 'zDhUuAYrxNC', // attribute id for last name
// value: dataValue('case.lastName')(state), // data from another submission field
// },
// ],
// enrollments: [
// {
// orgUnit: 'g8upMTyEZGZ', // Njandama MCHP
// program: 'IpHINAT79UW', // enroll in Child Program
// enrollmentDate: new Date().toISOString().slice(0, 10), // some custom javascript
// incidentDate: state.data.metadata.timeStart.slice(0, 10), // more custom javascript
// },
// ],
// });
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/DHIS2-Events-API.html b/adaptors/library/jobs/auto/DHIS2-Events-API.html index 32f02fc12d8..1ebed7fb303 100644 --- a/adaptors/library/jobs/auto/DHIS2-Events-API.html +++ b/adaptors/library/jobs/auto/DHIS2-Events-API.html @@ -22,13 +22,13 @@ - +
Skip to main content

Add events

📜 This job is an official example from OpenFn.

Metadata

Key Functions

dataValue, field, fields

Expression

// ----
// Create new events in DHIS2 using a generic JSON message, submitted by
// Taylor Downs @ OpenFn for demonstration porpoises.
// ---

event(
fields(
field('program', 'eBAyeGv0exc'),
field('orgUnit', 'DiszpKrYNg8'),
field('eventDate', dataValue('meta.date')),
field('status', 'COMPLETED'),
field('storedBy', 'admin'),
field('coordinate', {
latitude: '59.8',
longitude: '10.9',
}),
field('dataValues', function (state) {
return [
dataElement('qrur9Dvnyt5', dataValue('form.prop_a')(state)),
dataElement('oZg33kd9taw', dataValue('form.prop_b')(state)),
dataElement('msodh3rEMJa', dataValue('form.prop_c')(state)),
];
})
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Extract-Vitas-Data-2021-05-11.html b/adaptors/library/jobs/auto/Extract-Vitas-Data-2021-05-11.html index b2d38660c36..8ecc0f3beea 100644 --- a/adaptors/library/jobs/auto/Extract-Vitas-Data-2021-05-11.html +++ b/adaptors/library/jobs/auto/Extract-Vitas-Data-2021-05-11.html @@ -22,13 +22,13 @@ - +
Skip to main content
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Failed-Payment-Notification-2021-04-23.html b/adaptors/library/jobs/auto/Failed-Payment-Notification-2021-04-23.html index 6065a044116..b31a3867769 100644 --- a/adaptors/library/jobs/auto/Failed-Payment-Notification-2021-04-23.html +++ b/adaptors/library/jobs/auto/Failed-Payment-Notification-2021-04-23.html @@ -22,13 +22,13 @@ - +
Skip to main content

Failed Payment Notification

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: Failed Payment Notification
  • Adaptor: @openfn/language-http
  • Adaptor Version: v3.1.7
  • Created over 2 years ago
  • Updated over 2 years ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

alterState

Expression

alterState(state => {
console.log("We have notified the administrator to manually initiate payment.");
console.log("We have notified the CHW that payment is pending.");
return state;
})
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Fetch-Claims-2023-07-17.html b/adaptors/library/jobs/auto/Fetch-Claims-2023-07-17.html index 3215b6e9fca..ad158331b36 100644 --- a/adaptors/library/jobs/auto/Fetch-Claims-2023-07-17.html +++ b/adaptors/library/jobs/auto/Fetch-Claims-2023-07-17.html @@ -22,13 +22,13 @@ - +
Skip to main content

Fetch Claims

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

create, get, map, JSON

Expression

// establish a baseline for the cursor
fn(state => {
const today = new Date().toISOString().split('T')[0];
console.log(
`Fetching all claims updated on or after ${state.cursor || '2023-07-19'}`
);
return { ...state, today };
});

// Get claims and related patients from HAPI, updated since cursor date
get(
'Claim',
{
query: {
_lastUpdated: `ge${state.cursor || '2023-07-19'}`,
_include: 'Claim:patient',
_sort: '-_lastUpdated',
_count: 200,
},
},
next => {
if (next.data.total == 0)
return { ...next, data: { claims: [], patients: [] } };

const byType = next.data.entry.reduce((r, a) => {
r[a.resource.resourceType] = r[a.resource.resourceType] || [];
r[a.resource.resourceType].push(a);
return r;
}, Object.create(null));

return {
...next,
data: {
claims: byType.Claim,
patients: byType.Patient,
},
};
}
);

// clean and merge data
fn(state => {
const { claims, patients } = state.data;

// Noisy logs to help debug data quality issues
claims.forEach(c => {
const { resource } = c;
if (!resource.id) console.log('claim', resource.id, 'has no id');
if (!resource.item) {
console.log('claim', resource.id, 'has no item');
} else if (!resource.item[0].productOrService.coding) {
console.log('claim', resource.id, 'has no coding');
}

if (!resource.patient.reference.split('/')[1])
console.log('claim', resource.id, 'has no patient');
});

const patientsWithClaims = patients
// drop all patients without identifiers
.filter(p => p.resource.identifier)
.map(p => ({
...p,
claims: claims.filter(c => {
return (
// has item
c.resource.item &&
// has coding
c.resource.item[0].productOrService.coding &&
// for this patient
p.resource.id == c.resource.patient.reference.split('/')[1]
);
}),
}));

return { ...state, data: { patientsWithClaims } };
});

// print some logs and update the cursor for next time
fn(state => {
const { data, today } = state;

console.log('Found the following patients and claims in FHIR:');
console.log(
JSON.stringify(
data.patientsWithClaims.map(p => ({
patient: p.resource.id,
claims: p.claims.map(c => c.resource.id),
})),
null,
2
)
);

return { data: state.data, cursor: today };
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22.html b/adaptors/library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22.html index 296523be885..00bbadc3b5a 100644 --- a/adaptors/library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22.html +++ b/adaptors/library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22.html @@ -22,13 +22,13 @@ - +
Skip to main content
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16.html b/adaptors/library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16.html index 440805542e7..73686e3ece7 100644 --- a/adaptors/library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16.html +++ b/adaptors/library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16.html @@ -22,13 +22,13 @@ - +
Skip to main content

Get CommCare Forms (Bulk Extract)

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: Get CommCare Forms (Bulk Extract)
  • Adaptor: @openfn/language-http
  • Adaptor Version: v3.1.7
  • Created over 1 year ago
  • Updated over 1 year ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

each, get, post

Expression

// Your job goes here.
get(
'https://www.commcarehq.org/a/commcare-demo-2035/api/v0.5/form/',
{
query: {
limit: 1000, //max limit: 1000
offset: state.meta && state.meta.next ? state.meta.limit + state.meta.offset : 0,
received_on_start: '2022-05-16',
received_on_end: '2022-05-18',
xmlns: 'http://openrosa.org/formdesigner/C87A7E2A-D98D-4E2C-9F0B-997E0AE635C6',
},
},
state => {
const { meta, objects } = state.data;
const { openfnInboxUrl } = state.configuration;
const xmlnsList = [
'http://openrosa.org/formdesigner/C87A7E2A-D98D-4E2C-9F0B-997E0AE635C6'

];

// const forms = objects.filter(obj => xmlnsList.includes(obj.form['@xmlns']));
const forms = objects;

state.configuration = { baseUrl: 'https://www.openfn.org' };
console.log('Posting form submissions to OpenFn Inbox...');

return each(forms, state => {
return post(`/inbox/${openfnInboxUrl}`, { body: state.data }, state => ({
...state,
data: {},
references: [],
}))(state);
})(state);
}
);
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Get-cases-from-Primero-2021-09-23.html b/adaptors/library/jobs/auto/Get-cases-from-Primero-2021-09-23.html index 561c6340b83..d8f42b06790 100644 --- a/adaptors/library/jobs/auto/Get-cases-from-Primero-2021-09-23.html +++ b/adaptors/library/jobs/auto/Get-cases-from-Primero-2021-09-23.html @@ -22,13 +22,13 @@ - +
Skip to main content

Get cases from Primero

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

getCases, JSON

Expression

getCases({
remote: true,
case_id: "234bbac3-7278-430a-98b5-1abc460671ec" //extract 1 case using case id
//query: //...or use 'query' to filter by other criteria to get many cases
}, state => {
console.log(`Primero cases extracted: ${JSON.stringify(state.data)}`); //logging Primero response
return { ...state, data: {}, references: [] }
})
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03.html b/adaptors/library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03.html index 7fe0529dd6d..87e6ec02e5e 100644 --- a/adaptors/library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03.html +++ b/adaptors/library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03.html @@ -22,13 +22,13 @@ - +
Skip to main content

HIV Testing Event Snapshot

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, upsert

Expression

// push to production
upsert(
'Event__c',
'CommCare_Ext_ID__c',
fields(
field('Name', dataValue('form.basic_information.intervention')),
field('Venue__c', dataValue('form.basic_information.venue')),
field('Coach_A__c', dataValue('form.hidden_properties.coach_name')),
field('Date__c', dataValue('form.basic_information.event_date')),
field('Testing_Partner_Contact_Persion__c', dataValue('form.basic_information.testing_partner__contact_people')),
field('of_People_in_Attendance_Testing_Events__c', dataValue('form.basic_information.number_in_attendance')),
field('Event_Type__c', dataValue('form.basic_information.testing_event_type')),
field('Coordinator__c', dataValue('form.basic_information.event_coordinator')),
field(
'What_organization_discussed_VMMC__c',
dataValue('form.basic_information.question2.what_organisation_discussed_mmc')
),
field(
'What_organization_s_What_topic_s__c',
dataValue(
'form.basic_information.information_sessions_other.what_organisations_delivered_a_session_and_what_was_the_topic_of_the_sessio'
)
),
field(
'How_was_the_information_presented__c',
dataValue('form.basic_information.question2.how_was_this_information_presented_eg_lecture_individua_sessions_etc')
),
field('how_many_people_attended_the_sessions__c', dataValue('form.basic_information.number_in_attendance')),
field(
'How_many_people_attended_the_sessions_oh__c',
dataValue('form.basic_information.question2.approximately_how_many_people_attended_the_sessions_in_total')
),
field(
'Did_other_organizations_conduct__c',
dataValue(
'form.basic_information.information_sessions_other.did_other_organisations_eg_youth-friendly_clinic_ministry_of_health_etc_con'
)
),
field(
'Testing_Key_Lesson_s_Learned__c',
dataValue('form.basic_information.event_overview.highlights_key_challenges')
),
field(
'X2_Main_challenges__c',
dataValue(
'form.basic_information.event_overview.please_describe_highlights_key_challenges_and_main_lessons_learned_from_thi'
)
)
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03.html b/adaptors/library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03.html index e9abaa1a32a..f59e6b679b1 100644 --- a/adaptors/library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03.html +++ b/adaptors/library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03.html @@ -22,13 +22,13 @@ - +
Skip to main content

HIV Testing Event Statistics

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, upsert

Expression

// push to production
upsert(
'Event__c',
'CommCare_Case_ID__c',
fields(
field('Name', dataValue('form.event_name')),
field('CommCare_Case_ID__c', dataValue('form.case.@case_id')),
field('Tested_Negative_Males_0_9__c', dataValue('form.table_1_testing_results.male_hiv_negative.question2')),
field('Tested_Negative_Males_10_14__c', dataValue('form.table_1_testing_results.male_hiv_negative.question7')),
field('Tested_Negative_Males_15_19__c', dataValue('form.table_1_testing_results.male_hiv_negative.question13')),
field('Tested_Negative_Males_20_24__c', dataValue('form.table_1_testing_results.male_hiv_negative.question18')),
field('Tested_Negative_Males_25_49__c', dataValue('form.table_1_testing_results.male_hiv_negative.question28')),
field('Tested_Negative_Males_50__c', dataValue('form.table_1_testing_results.male_hiv_negative.question32')),
field('Tested_Positive_Males_0_9__c', dataValue('form.table_1_testing_results.question33.question36')),
field('Tested_Positive_Males_10_14__c', dataValue('form.table_1_testing_results.question33.question41')),
field('Tested_Positive_Males_15_19__c', dataValue('form.table_1_testing_results.question33.question45')),
field('Tested_Positive_Males_20_24__c', dataValue('form.table_1_testing_results.question33.question50')),
field('Tested_Positive_Males_25_49__c', dataValue('form.table_1_testing_results.question33.question56')),
field('Tested_Positive_Males_50__c', dataValue('form.table_1_testing_results.question33.question60')),
field('Tested_Negative_Females_0_9__c', dataValue('form.table_1_testing_results.question61.question65')),
field('Tested_Negative_Females_10_14__c', dataValue('form.table_1_testing_results.question61.question69')),
field('Tested_Negative_Females_15_19__c', dataValue('form.table_1_testing_results.question61.question73')),
field('Tested_Negative_Females_20_24__c', dataValue('form.table_1_testing_results.question61.question78')),
field('Tested_Negative_Females_25_49__c', dataValue('form.table_1_testing_results.question61.question84')),
field('Tested_Negative_Females_50__c', dataValue('form.table_1_testing_results.question61.question88')),
field('Tested_Positive_Females_0_9__c', dataValue('form.table_1_testing_results.question89.question92')),
field('Tested_Positive_Females_10_14__c', dataValue('form.table_1_testing_results.question89.question97')),
field('Tested_Positive_Females_15_19__c', dataValue('form.table_1_testing_results.question89.question101')),
field('Tested_Positive_Females_20_24__c', dataValue('form.table_1_testing_results.question89.question106')),
field('Tested_Positive_Females_25_49__c', dataValue('form.table_1_testing_results.question89.question112')),
field('Tested_Positive_Females_50__c', dataValue('form.table_1_testing_results.question89.question116')),
field(
'Pregnant_Women_Tested_0_9__c',
dataValue(
'form.table_3_pregnant_women_tested.enter_the_number_of_pregnant_women_tested_for_each_following_age_group.question120'
)
),
field(
'Pregnant_Women_Tested_10_14__c',
dataValue(
'form.table_3_pregnant_women_tested.enter_the_number_of_pregnant_women_tested_for_each_following_age_group.question124'
)
),
field(
'Pregnant_Women_Tested_15_19__c',
dataValue(
'form.table_3_pregnant_women_tested.enter_the_number_of_pregnant_women_tested_for_each_following_age_group.question129'
)
),
field(
'Pregnant_Women_Tested_20_24__c',
dataValue(
'form.table_3_pregnant_women_tested.enter_the_number_of_pregnant_women_tested_for_each_following_age_group.question134'
)
),
field(
'Pregnant_Women_Tested_25_49__c',
dataValue(
'form.table_3_pregnant_women_tested.enter_the_number_of_pregnant_women_tested_for_each_following_age_group.question140'
)
),
field(
'Pregnant_Women_Tested_50__c',
dataValue(
'form.table_3_pregnant_women_tested.enter_the_number_of_pregnant_women_tested_for_each_following_age_group.question144'
)
),
//field(
// 'Total_Pregnant_Women_Tested__c',
// dataValue(
// 'form.table_3_pregnant_women_tested.enter_the_number_of_pregnant_women_tested_for_each_following_age_group.total_tested_pregnant'
// )
//),
field(
'First_Time_Females_0_9__c',
state =>
dataValue('form.table_4_first_time_testers.question61.question65')(state) +
dataValue('form.table_4_first_time_testers.question89.question92')(state)
),
field(
'First_Time_Females_10_14__c',
state =>
dataValue('form.table_4_first_time_testers.question61.question69')(state) +
dataValue('form.table_4_first_time_testers.question89.question97')(state)
),
field(
'First_Time_Females_15_19__c',
state =>
dataValue('form.table_4_first_time_testers.question61.question73')(state) +
dataValue('form.table_4_first_time_testers.question89.question101')(state)
),
field(
'First_Time_Females_20_24__c',
state =>
dataValue('form.table_4_first_time_testers.question61.question78')(state) +
dataValue('form.table_4_first_time_testers.question89.question106')(state)
),
field(
'First_Time_Females_25_49__c',
state =>
dataValue('form.table_4_first_time_testers.question61.question84')(state) +
dataValue('form.table_4_first_time_testers.question89.question112')(state)
),
field(
'First_Time_Females_50__c',
state =>
dataValue('form.table_4_first_time_testers.question61.question88')(state) +
dataValue('form.table_4_first_time_testers.question89.question116')(state)
),
field(
'First_Time_Males_0_9__c',
state =>
dataValue('form.table_4_first_time_testers.male_hiv_negative.question2')(state) +
dataValue('form.table_4_first_time_testers.question33.question36')(state)
),
field(
'First_Time_Males_10_14__c',
state =>
dataValue('form.table_4_first_time_testers.male_hiv_negative.question7')(state) +
dataValue('form.table_4_first_time_testers.question33.question41')(state)
),
field(
'First_Time_Males_15_19__c',
state =>
dataValue('form.table_4_first_time_testers.male_hiv_negative.question13')(state) +
dataValue('form.table_4_first_time_testers.question33.question45')(state)
),
field(
'First_Time_Males_20_24__c',
state =>
dataValue('form.table_4_first_time_testers.male_hiv_negative.question18')(state) +
dataValue('form.table_4_first_time_testers.question33.question50')(state)
),
field(
'First_Time_Males_25_49__c',
state =>
dataValue('form.table_4_first_time_testers.male_hiv_negative.question28')(state) +
dataValue('form.table_4_first_time_testers.question33.question56')(state)
),
field(
'First_Time_Males_50__c',
state =>
dataValue('form.table_4_first_time_testers.male_hiv_negative.question32')(state) +
dataValue('form.table_4_first_time_testers.question33.question60')(state)
),
field(
'of_Males_Referred_to_Sexual_Abuse__c',
dataValue(
'form.table5_referrals.enter_the_number_of_men_and_women_referred_for_each_referral_tye_and_the_or.abuseviolence_referral'
)
),
field(
'of_Males_Referred_to_Family_Referral__c',
dataValue(
'form.table5_referrals.enter_the_number_of_men_and_women_referred_for_each_referral_tye_and_the_or.family_planning_referral'
)
),
field(
'of_Males_Referred_for_HIV_Positive__c',
dataValue(
'form.table5_referrals.enter_the_number_of_men_and_women_referred_for_each_referral_tye_and_the_or.hiv_positive_referral'
)
),
field(
'of_Males_Referred_to_MMC_Referral__c',
dataValue(
'form.table5_referrals.enter_the_number_of_men_and_women_referred_for_each_referral_tye_and_the_or.medical_male_circumcision_referral'
)
),
field(
'of_Males_Referred_to_STI__c',
dataValue(
'form.table5_referrals.enter_the_number_of_men_and_women_referred_for_each_referral_tye_and_the_or.sexually_transmitted_infection_sti_referral'
)
),
field(
'of_Males_Referred_to_Tuberculosis__c',
dataValue(
'form.table5_referrals.enter_the_number_of_men_and_women_referred_for_each_referral_tye_and_the_or.tuberculosis_tb_referral'
)
),
field(
'of_Females_Referred_to_Sexual_Abuse__c',
dataValue('form.table5_referrals.women_referred_number.abuseviolence_referral_women')
),
field(
'of_Females_Referred_to_Antenatal_Care__c',
dataValue('form.table5_referrals.women_referred_number.antenatal_care_anc_referral_women')
),
field(
'of_Females_Referred_to_Family_Referral__c',
dataValue('form.table5_referrals.women_referred_number.family_planning_referral_women')
),
field(
'of_Females_Referred_for_HIV_Positive__c',
dataValue('form.table5_referrals.women_referred_number.hiv_positive_referral_women')
),
field(
'of_Females_Referred_to_PMTCT__c',
dataValue('form.table5_referrals.women_referred_number.prevention_of_mother-to-child_transmission_women')
),
field(
'of_Females_Referred_to_STI__c',
dataValue('form.table5_referrals.women_referred_number.sexually_transmitted_infection_sti_referral_women')
),
field(
'of_Females_Referred_to_Tuberculosis__c',
dataValue('form.table5_referrals.women_referred_number.tuberculosis_tb_referral_women')
),

field('Community_Members__c', dataValue('form.table_2_tested_profile.enter_the_number_tested_for_each_following_profile.community_members')),
field('GRS_Coaches__c', dataValue('form.table_2_tested_profile.enter_the_number_tested_for_each_following_profile.skillz_coaches')),
field('GRS_Participants__c', dataValue('form.table_2_tested_profile.enter_the_number_tested_for_each_following_profile.skillz_participants')),
field('GRS_Staff__c', dataValue('form.table_2_tested_profile.enter_the_number_tested_for_each_following_profile.staff')),
//field('Total_Tested__c', dataValue('form.table_2_tested_profile.enter_the_number_tested_for_each_following_profile.total_tested')),
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Kobo-to-sheets-2023-10-13.html b/adaptors/library/jobs/auto/Kobo-to-sheets-2023-10-13.html index f65aa9512fd..66b50139fd7 100644 --- a/adaptors/library/jobs/auto/Kobo-to-sheets-2023-10-13.html +++ b/adaptors/library/jobs/auto/Kobo-to-sheets-2023-10-13.html @@ -22,13 +22,13 @@ - +
Skip to main content

Kobo to sheets

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

appendValues, dataValue

Expression

appendValues({
spreadsheetId: '13JNoH_nzG4x_mwvW83BMrpTWdKt4asBiZiLfQduB7B0',
range: 'Sheet1!A1:E1',
values: [
[
dataValue('National_ID'),
dataValue('First_Name_of_Patient'),
dataValue('Last_Name_of_Patient'),
],
],
});
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22.html b/adaptors/library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22.html index c4c79bf97de..ee0735a5566 100644 --- a/adaptors/library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22.html +++ b/adaptors/library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22.html @@ -22,13 +22,13 @@ - +
Skip to main content
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Load-to-DB-2022-05-16.html b/adaptors/library/jobs/auto/Load-to-DB-2022-05-16.html index 086e07ede24..66f17519a5f 100644 --- a/adaptors/library/jobs/auto/Load-to-DB-2022-05-16.html +++ b/adaptors/library/jobs/auto/Load-to-DB-2022-05-16.html @@ -22,13 +22,13 @@ - +
Skip to main content

Load to DB

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, upsert

Expression

// Your job goes here.
upsert('patient', 'ON CONSTRAINT patient_pk', {
patient_id: dataValue('data.patient_name'),
patient_name: dataValue('data.patient_name'),
village_name: dataValue('data.village_name'),
last_menstrual_period: dataValue('data.last_menstrual_period'),
expected_delivery_date: dataValue('data.expected_delivery_date'),
children_alive: dataValue('data.children_alive'),
living_children: dataValue('data.living_children'),
feeling_sick: dataValue('data.feeling_sick'),
total_children: dataValue('data.Total_children'),
risk_level: dataValue('data.Risk_level')

});
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Load-to-DHIS2-2023-07-17.html b/adaptors/library/jobs/auto/Load-to-DHIS2-2023-07-17.html index c85a27ffeac..fa9b5432418 100644 --- a/adaptors/library/jobs/auto/Load-to-DHIS2-2023-07-17.html +++ b/adaptors/library/jobs/auto/Load-to-DHIS2-2023-07-17.html @@ -22,13 +22,13 @@ - +
Skip to main content

Load to DHIS2

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

create, get, join, map, async

Expression

// build and log nested dhis2 records
fn(state => {
const { patientsWithClaims } = state.data;
const today = new Date().toISOString().split('T')[0];

const teis = patientsWithClaims.map(p => {
const patient = p.resource;
const claims = p.claims;
const treatments = claims
.map(c => c.resource.item[0])
.map(t => t.productOrService.coding[0].display)
.join('; ');

const enrollments = claims.map(c => {
const claim = c.resource;
const display = claim.insurance && claim.insurance[0].coverage.display;

const oclMapping = {
PARN: 'GMfuAqBFS1g',
'Programme Vaccination': 'GMfuAqBFS1g',
'Santé Maternelle': 'wBUDpZSS4Bh',
};

console.log(
`We could use OCL to map "${display}" to "${
oclMapping[display] || 'q5Qyv66pIAI (mTOMADY Other)'
}"`
);

return {
orgUnit: 'KUVJPjmUmWc',
program: oclMapping[display] || 'q5Qyv66pIAI',
status: 'ACTIVE', // active
enrolledAt: today,
occurredAt: today,
};
});

return {
orgUnit: 'KUVJPjmUmWc', // Madagascar
trackedEntityType: 'x5fZpgCyv50', // Patient
attributes: [
{ attribute: 'rDeWj9yYtzv', value: patient.identifier[0].value },
{ attribute: 'E4f4wBsDVgR', value: patient.name[0].family },
{ attribute: 'Fz33peSkK1I', value: patient.name[0].given[0] },
{
attribute: 'POCXiJxpYX1',
value: `${treatments}`,
},
{ attribute: 'dA6ShmrHmhk', value: patient.birthDate },
{ attribute: 'mWOlfweGigO', value: patient.gender },
],
enrollments: enrollments,
};
});

return { ...state, teis };
});

// get current TEIs
get('tracker/trackedEntities', {
orgUnit: 'KUVJPjmUmWc',
trackedEntityType: 'x5fZpgCyv50',
});

// create upsertable array
fn(state => {
const { configuration, teis } = state;
const existing = state.data.instances;

const createable = [];
const updateable = [];

teis.forEach(t => {
const match = existing.find(e => {
const idAttr = e.attributes.find(a => a.displayName == 'Unique ID');
return idAttr && idAttr.value == t.attributes[0].value;
});

if (match) {
const enrollments =
(match.enrollments && match.enrollments.concat(t.enrollments)) ||
t.enrollments;

updateable.push({ ...match, ...t, enrollments });
} else {
createable.push(t);
}
});

console.log(`${updateable.length} to update; ${createable.length} to create`);
const trackedEntities = [...createable, ...updateable];

return { configuration, trackedEntities, references: [] };
});

// send data to DHIS2
create('tracker', state => ({ trackedEntities: state.trackedEntities }), {
params: {
importStrategy: 'CREATE_AND_UPDATE',
atomicMode: 'OBJECT',
async: 'false',
},
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03.html b/adaptors/library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03.html index c5a51e1800f..4929c44bcdd 100644 --- a/adaptors/library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03.html +++ b/adaptors/library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03.html @@ -22,13 +22,13 @@ - +
Skip to main content

Malaria Testing Event Snapshot

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, upsert

Expression

// push to production
upsert(
'Event__c',
'CommCare_Case_ID__c',
fields(
field('Name', dataValue('form.hidden_properties.event_name')),
field('Date__c', dataValue('form.basic_information.event_details.event_date')),
field('Testing_Partner_Contact_Persion__c', dataValue('form.event_information.testing_partner__contact_people')),
field('of_People_in_Attendance_Testing_Events__c', dataValue('form.event_information.number_in_attendance')),
field('Coordinator__c', dataValue('form.event_information.event_coordinator')),
field(
'Did_an_organization_discuss_Malaria__c',
dataValue('form.malaria_treatment_prevention.info_malaria_treatment')
),
field('What_organization_s_What_topic_s__c', dataValue('form.malaria_treatment_prevention.which_organizations')),
field(
'How_was_the_information_presented__c',
dataValue('form.malaria_treatment_prevention.how_was_info_presented')
),
//field('of_Participants__c', dataValue('form.malaria_treatment_prevention.how_many_total_participants')),
field(
'Did_other_organizations_conduct__c',
dataValue("form.skills_activities['did_other_organisations_eg_youth-friendly_clinic_ministry_of_health_etc_con']")
),
field(
'What_organization_s_What_topic_s__c',
dataValue('form.skills_activities.what_organisations_delivered_a_session_and_what_was_the_topic_of_the_sessio')
),
field('Facilitator_1__c', dataValue('form.skills_activities.facilitators')),
field(
'How_many_people_attended_the_sessions__c',
dataValue('form.skills_activities.how_many_people_attended_the_sessions_in_total')
),
field(
'How_many_people_attended_the_sessions_oh__c',
dataValue('form.skills_activities.how_many_people_attended_the_sessions_in_total')
),
field(
'X2_Main_challenges__c',
dataValue('form.bed_net_distribution.please_describe_highlights_key_challenges_and_main_lessons_learned_from_thi')
),
field(
'X1_Main_successes__c',
dataValue('form.bed_net_distribution.please_describe_highlights_key_challenges_and_main_lessons_learned_from_thi')
),
field(
'Number_of_Bed_Nets_Distributed__c',
dataValue('form.bed_net_distribution.total_number_of_bed_nets_distributed')
),
//field('Site__c', dataValue('form.event_information.site')),
//field('Venue__c', dataValue('form.event_information.venue')),
//field('Curriculum__c', dataValue('form.event_information.curriculum')),
field('X1_0_Intervention_Name__c', dataValue('form.event_information.intervention')),
//field('Coach_1__c', dataValue('form.hidden_properties.coach_name')),
field('CommCare_Case_ID__c', dataValue('form.case.@case_id')),
field('Date__c', dataValue('form.event_information.event_date')),
field('Testing_Partner_Contact_Persion__c', dataValue('form.event_information.testing_partner__contact_people')),
field('of_People_in_Attendance_Testing_Events__c', dataValue('form.event_information.number_in_attendance')),
field('Coordinator__c', dataValue('form.event_information.event_coordinator'))
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03.html b/adaptors/library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03.html index 057fc69aae1..7ac838ee2ad 100644 --- a/adaptors/library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03.html +++ b/adaptors/library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03.html @@ -22,13 +22,13 @@ - +
Skip to main content

Malaria Testing Event Statistics

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, upsert

Expression

// push to production
upsert(
'Event__c',
'CommCare_Case_ID__c',
fields(
field('Name', dataValue('form.event_information.event_name')),
field('CommCare_Case_ID__c', dataValue('form.case.@case_id')),
field(
'Tested_Negative_Males_0_9__c',
dataValue('form.table_1_testing_results_malaria.male_malaria_negative.question2')
),
field(
'Tested_Negative_Males_10_14__c',
dataValue('form.table_1_testing_results_malaria.male_malaria_negative.question7')
),
field(
'Tested_Negative_Males_15_19__c',
dataValue('form.table_1_testing_results_malaria.male_malaria_negative.question13')
),
field(
'Tested_Negative_Males_20_24__c',
dataValue('form.table_1_testing_results_malaria.male_malaria_negative.question18')
),
field(
'Tested_Negative_Males_25_49__c',
dataValue('form.table_1_testing_results_malaria.male_malaria_negative.question28')
),
field(
'Tested_Negative_Males_50__c',
dataValue('form.table_1_testing_results_malaria.male_malaria_negative.question32')
),
field('Tested_Positive_Males_0_9__c', dataValue('form.table_1_testing_results_malaria.question33.question36')),
field('Tested_Positive_Males_10_14__c', dataValue('form.table_1_testing_results_malaria.question33.question41')),
field('Tested_Positive_Males_15_19__c', dataValue('form.table_1_testing_results_malaria.question33.question45')),
field('Tested_Positive_Males_20_24__c', dataValue('form.table_1_testing_results_malaria.question33.question50')),
field('Tested_Positive_Males_25_49__c', dataValue('form.table_1_testing_results_malaria.question33.question56')),
field('Tested_Positive_Males_50__c', dataValue('form.table_1_testing_results_malaria.question33.question60')),
field('Tested_Negative_Females_0_9__c', dataValue('form.table_1_testing_results_malaria.question61.question65')),
field('Tested_Negative_Females_10_14__c', dataValue('form.table_1_testing_results_malaria.question61.question69')),
field('Tested_Negative_Females_15_19__c', dataValue('form.table_1_testing_results_malaria.question61.question73')),
field('Tested_Negative_Females_20_24__c', dataValue('form.table_1_testing_results_malaria.question61.question78')),
field('Tested_Negative_Females_25_49__c', dataValue('form.table_1_testing_results_malaria.question61.question84')),
field('Tested_Negative_Females_50__c', dataValue('form.table_1_testing_results_malaria.question61.question88')),
field('Tested_Positive_Females_0_9__c', dataValue('form.table_1_testing_results_malaria.question89.question92')),
field('Tested_Positive_Females_10_14__c', dataValue('form.table_1_testing_results_malaria.question89.question97')),
field('Tested_Positive_Females_15_19__c', dataValue('form.table_1_testing_results_malaria.question89.question101')),
field('Tested_Positive_Females_20_24__c', dataValue('form.table_1_testing_results_malaria.question89.question106')),
field('Tested_Positive_Females_25_49__c', dataValue('form.table_1_testing_results_malaria.question89.question112')),
field('Tested_Positive_Females_50__c', dataValue('form.table_1_testing_results_malaria.question89.question116'))
));

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks.html b/adaptors/library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks.html index 0c9fca98b64..5e32241f646 100644 --- a/adaptors/library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks.html +++ b/adaptors/library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks.html @@ -22,13 +22,13 @@ - +
Skip to main content

Handling multiple ODK repeat groups

📜 This job is an official example from OpenFn.

Metadata

Key Functions

create, dataPath, dataValue, each, field, fields, lastReferenceValue, merge

Expression

/*
Create many records from an ODK submission, moving in and out of repeat
blocks, submitted by Taylor Downs @ OpenFn.
*/

beta.each(
'$.data.data[*]',
create(
'ODK__c',
fields(
field('Event_Type__c', dataValue('event_type')),
field('Training_Type__c', dataValue('training_type')),
field('Event_Leader_ID__c', dataValue('leader')),
field('Event_Date__c', dataValue('date')),
field('metainstanceid__c', dataValue('*meta-instance-id*'))
)
)
);

beta.each(
merge(
dataPath('data[*].attendee_new[*]'),
fields(field('parentId', lastReferenceValue('id')))
),
create(
'ODK_Child_2__c',
fields(
field('ODK__c', dataValue('parentId')),
field('Barcode__c', dataValue('new_attendee_id')),
field('First_Name__c', dataValue('new_attendee_first_name')),
field('Last_Name__c', dataValue('new_attendee_last_name')),
field('Phone_Number__c', dataValue('new_attendee_phone'))
)
)
);

beta.each(
merge(
dataPath('data[*].attendee[*]'),
fields(
field('parentId', function (state) {
return state.references[state.references.length - 1].id;
})
// ^^ This will get the sfID of the 1st item created.
)
),
create(
'ODK_Child_1__c',
fields(
field('ODK__c', dataValue('parentId')),
field('Barcode__c', dataValue('attendee_id')),
field('Late__c', dataValue('late'))
)
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/PHQ9-2021-05-03.html b/adaptors/library/jobs/auto/PHQ9-2021-05-03.html index 1f735daecdd..f7fba915c29 100644 --- a/adaptors/library/jobs/auto/PHQ9-2021-05-03.html +++ b/adaptors/library/jobs/auto/PHQ9-2021-05-03.html @@ -22,13 +22,13 @@ - +
Skip to main content

PHQ9

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

alterState, dataValue, field, fields, relationship, upsert

Expression

alterState(state => {
function capitalizeFirstLetter(str) {
if (!str) return;
let new_str = str.toString().toLowerCase();
return new_str.slice(0, 1).toUpperCase() + new_str.slice(1);
}

function transform(value) {
if (!value) return;
switch (value.toString().trim()) {
case 'Daughterson':
return 'Daughter/Son';
case 'Other_specify':
return 'Other';
case 'Single_never_married':
return 'Single/Never Married';
case 'Divorced__separated':
return 'Divorced/separated';
default:
return value;
}
}

function getAge(dateString) {
if (!dateString) return;

const today = new Date();
const birthDate = new Date(dateString);
var age = today.getFullYear() - birthDate.getFullYear();
var m = today.getMonth() - birthDate.getMonth();
if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
age--;
}
return age;
}

state.data.form.begin_interview.what_is_your_marital_status = state.data.form.begin_interview && state.data.form.begin_interview.what_is_your_marital_status ? transform(
capitalizeFirstLetter(state.data.form.begin_interview.what_is_your_marital_status)
): undefined;

state.data.form.begin_interview.position_of_respondent_in_the_household = state.data.form.begin_interview && state.data.form.begin_interview.position_of_respondent_in_the_household ? transform(
capitalizeFirstLetter(state.data.form.begin_interview.position_of_respondent_in_the_household)
): undefined;

state.helperFunctions = { getAge };
return state;
});

upsert(
'PHQ_9_Strong_Minds__c',
'CommCare_Ext_ID__c',
fields(
field('CommCare_Ext_ID__c', dataValue('id')),

// relationship('Intervention_Name__r', 'CommCare_Case_ID__c', state => {
// if (state.data.form.hidden_properties.intervention_id) return state.data.form.hidden_properties.intervention_id;
// else return "990221ac-3c05-475d-87c7-24d8a5fcb63e";
// }),
relationship('Intervention_Name__r', 'CommCare_Case_ID__c', dataValue('form.hidden_properties.intervention_id')),


//relationship('Participant__r','CommCare_Ext_ID__c', dataValue('form.hidden_properties.participant_fullname')),
field('Mobile_Contact_Information__c', dataValue('form.hidden_properties.mobile_number')),
field('Curriculum__c', dataValue('form.hidden_properties.curriculum')),
//field('Intervention__c', dataValue('form.hidden_properties.intervention')),
field('Gender__c', dataValue('form.hidden_properties.gender')),
field('Participant_Name__c', state => {
const firstname = state.data.form.hidden_properties.participant_first_name;
const lastname = state.data.form.hidden_properties.participant_surname;
return firstname + ' ' + lastname;
}),

field('Coach_Name__c', dataValue('form.hidden_properties.coach_name')),
relationship(
'Venue2__r',
'CommCare_Ext_ID__c',
dataValue('form.hidden_properties.venue')
),
//field('Venue__c', dataValue('form.hidden_properties.venue')), replacing with the lookup
relationship(
'Site2__r',
'CommCare_Ext_ID__c',
dataValue('form.hidden_properties.site')
),
//field('Site__c', dataValue('form.hidden_properties.site')), replacing with the lookup
field('Interview_Date__c', dataValue('form.interview_date')),
field('Resident_not_shifting_in_3_months_time__c', dataValue('form.full_time_resident')),
field('Participant_DOB__c', state => {
const dob = dataValue('form.hidden_properties.date_of_birth')(state);
return dob ? dob : null;
}),
//field('Area_Center__c', dataValue('form.hidden_properties.venue')), //Can get from Intervention
field('Age_of_Participant__c', state => {
const dob = dataValue('form.hidden_properties.date_of_birth')(state);

return dob ? state.helperFunctions.getAge(dob) : null;
}),


field('Marital_Status__c', dataValue('form.begin_interview.what_is_your_marital_status')),
field(
'Position_of_Respondent_in_Household__c',
dataValue('form.begin_interview.position_of_respondent_in_the_household')
),
field('Q1_Little_interest_pleasure__c', dataValue('form.begin_interview.questions.little_interest')),
field('Q2_Sad_Down_Depressed_Hopeless__c', dataValue('form.begin_interview.questions.depressed_sad_hopeless')),
field('Q3_Trouble_sleeping__c', dataValue('form.begin_interview.questions.trouble_sleeping')),
field('Q4_Feeling_tired__c', dataValue('form.begin_interview.questions.heavy_burden')),
field('Q5_Appetite_problems__c', dataValue('form.begin_interview.questions.appetite_problems')),
field('Q6_Failure_Worthless_Guilt__c', dataValue('form.begin_interview.questions.feeling_bad')),
field('Q7_Trouble_concentrating__c', dataValue('form.begin_interview.questions.trouble_concentrating')),
field('Q8_Trouble_in_speech__c', dataValue('form.begin_interview.questions.moving_slowly')),
field('Q9_Suicidal_thoughts__c', dataValue('form.begin_interview.questions.thoughts_suicide'))
//field('PHQ9_Total_Score__c', dataValue('form.begin_interview.questions.phq9_result.PHQ9_score'))
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Pay-CHW-2021-04-23.html b/adaptors/library/jobs/auto/Pay-CHW-2021-04-23.html index acad723e193..a9281a53da2 100644 --- a/adaptors/library/jobs/auto/Pay-CHW-2021-04-23.html +++ b/adaptors/library/jobs/auto/Pay-CHW-2021-04-23.html @@ -22,13 +22,13 @@ - +
Skip to main content
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19.html b/adaptors/library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19.html index 78b3a5b4990..8c4e1e23988 100644 --- a/adaptors/library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19.html +++ b/adaptors/library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19.html @@ -22,13 +22,13 @@ - +
Skip to main content

Q3 2022] Create Distribution & Referral in SF

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, join, map, relationship, upsert

Expression

//Job to integrate CommCare 'Distribution & Referrals' form
upsert(
'Family_Planning_community_Distribution__c',
'Commcare_Case_ID__c',
fields(
field('Commcare_Case_ID__c', dataValue('id')),
relationship('RecordType', 'Name', 'FP Community Distribution & Referrals'),
field('Distribute_Date__c', dataValue('form.date')),
field('Client_Name__c', dataValue('form.name')),
field('Client_Gender__c', dataValue('form.gender')),
field('Client_Age__c', dataValue('form.age')),
field('Client_currently_on_FP__c', dataValue('form.current_use')),
field('Referral_Date__c', dataValue('form.Referral_Date')),
field('Referral_Method__c', state => {
var method = dataValue('form.referral_method')(state);
var newMethod = method
? method
.split(/_/g)
.map(
word =>
`${word.substring(0, 1).toUpperCase()}${word.substring(1)}`
)
.join(' ')
: '';
return newMethod;
}),
field('Implant_Type__c', state => {
var type = dataValue('form.implant_type')(state);
var newType = '';
if (type) {
if (type === 'implanon') {
newType = '3-year Implanon';
} else {
newType = type === 'jadelle' ? '5-year Jadelle' : null;
}
}
return newType;
}),
field('Male_Condoms__c', dataValue('form.male_condoms_count')),
field('Female_Condoms__c', dataValue('form.female_condoms_count')),
field('POP__c', dataValue('form.POP_count')),
field('COC__c', dataValue('form.COC_count')),
field('Emergency_Pills__c', dataValue('form.emergency_pills_count')),
field(
'Pregnancy_test_positive__c',
dataValue('form.positive_pregnancy_tests')
),
field('Pregnancy_referrals__c', dataValue('form.pregnancy_referrals')),
field(
'Contraception_referrals__c',
dataValue('form.family_planning_referrals')
)
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27.html b/adaptors/library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27.html index ee7305a3f19..52475864cd6 100644 --- a/adaptors/library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27.html +++ b/adaptors/library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27.html @@ -22,13 +22,13 @@ - +
Skip to main content

Q3 2022] Update HH Name in CommCare

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

map, submitXls, Array

Expression

// Update CommCare case
fn(state => {
const { Notification } = state.data.Envelope.Body.notifications;

const Notifications = Array.isArray(Notification)
? Notification
: [Notification];

const notifications = Notifications.map(notification => {
console.log(
`Mapping HH code to CommCare: `,
notification.sObject.Household_Code_Autonumber__c
);
return {
case_id: notification.sObject.Commcare_Code__c,
name: notification.sObject.Household_Code_Autonumber__c,
};
});

return { ...state, notifications };
});

submitXls(state => state.notifications, {
case_type: 'Household',
search_field: 'case_id',
search_column: 'case_id',
name_column: 'name',
create_new_cases: 'off',
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28.html b/adaptors/library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28.html index dd3db5e04a7..f0e468a1762 100644 --- a/adaptors/library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28.html +++ b/adaptors/library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28.html @@ -22,13 +22,13 @@ - +
Skip to main content

Q3 2022] Upsert Household & Household Visit in SF

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: Q3 2022] Upsert Household & Household Visit in SF
  • Adaptor: @openfn/language-salesforce
  • Adaptor Version: latest
  • Created over 1 year ago
  • Updated 5 months ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

dataValue, field, fields, join, map, query, relationship, upsertIf, Array

Expression

query(
`SELECT Id, Parent_Geographic_Area__c, Parent_Geographic_Area__r.Name, Parent_Geographic_Area__r.Parent_Geographic_Area__c FROM Location__c WHERE CommCare_User_ID__c = '${dataValue(
'properties.owner_id'
)(state)}'`
);

fn(state => { console.log("query1 done"); return state; });
fn(state => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('4 second cooldown finished.');
resolve(state);
}, 4000);
});
});

fn(state => ({
...state,
data: {
...state.data,
villageNewId:
state.references[0].records && state.references[0].records.length !== 0
? state.references[0].records[0].Id
: undefined,
areaNewId:
state.references[0].records && state.references[0].records.length !== 0
? state.references[0].records[0].Parent_Geographic_Area__c
: undefined,
catchmentNewId:
state.references[0].records && state.references[0].records.length !== 0
? (state.references[0].records[0].Parent_Geographic_Area__r
? state.references[0].records[0].Parent_Geographic_Area__r.Parent_Geographic_Area__c
: undefined)
: undefined,
},
}));

upsertIf(
state.data.properties.commcare_username !== 'openfn.test' &&
state.data.properties.commcare_username !== 'test.2021' &&
state.data.properties.test_user !== 'Yes' ,
'Household__c',
'CommCare_Code__c',
fields(
field('CommCare_Username__c', dataValue('properties.commcare_username')),
field('MOH_household_code__c', dataValue('properties.moh_code')),
field('CommCare_Code__c', dataValue('case_id')),
field('Source__c', true),
//field('Household_CHW__c', 'a030Q00000A0jeYQAR'), //sandbox hardcoded mapping
field('Household_CHW__c', state => {
var chw = dataValue('properties.CHW_ID')(state);
return chw === 'a030800001zQrk'
? 'a030800001zQrk5'
: chw
? chw
: undefined;
}),
//TODO: Prod mapping to add back before go-live
field('Catchment__c', dataValue('catchmentNewId')),
field('Area__c', dataValue('areaNewId')),
field('Village__c', dataValue('villageNewId')),
field('Household_Village__c', dataValue('properties.village')),
// relationship('Catchment__r', 'Name', state => {
// var catchment =
// state.data.properties.catchement ||
// state.data.properties.catchment_name;
// return catchment === '' || catchment === undefined
// ? 'Unknown Location'
// : catchment;
// }), // check
// field('Area__c', state => {
// // var area = dataValue('properties.Area_Name')(state);
// return area === '' || area === undefined ? 'a000Q00000Egmu4' : area;
// }), // Commented out because it was causing a job error
// field('Household_village__c', dataValue('properties.village')),//case property, but not in message

// field('Village__c',dataValue('properties.village_name')), //lookup
field('Deaths_in_the_last_6_months__c', state => {
var death = dataValue(
'properties.deaths_in_past_6_months'
)(state);
return death > 0 ? 'Yes' : 'No';
}),
field('Access_to_safe_water__c',dataValue('properties.Safe_Water')),//not coming through
field('Treats_Drinking_Water__c',dataValue('properties.Treats_Drinking_Water')),//not coming through
field('Tippy_Tap__c',dataValue('properties.Active_Handwashing_Station')),//not coming through
field('Pit_Latrine__c',dataValue('properties.Functional_Latrine')),//not coming through
field('Rubbish_Pit__c',dataValue('properties.Rubbish_Pit')),//not coming through
field('Drying_Rack__c',dataValue('properties.Drying_Rack')),//not coming through
field('Kitchen_Garden__c',dataValue('properties.Kitchen_Garden')),//not coming through
field('Cookstove__c',dataValue('properties.Improved_Cooking_Method')),//not coming through
field('Clothe__c',dataValue('properties.Clothesline')),//not coming through
field('WASH_Trained__c',dataValue('properties.WASH_Trained')),//not coming through
field('Uses_ITNs__c',dataValue('properties.ITNs')),
field(
'Has_muac_tape__c',
dataValue('properties.family_muac_tape_available')
),
//field('Total_household_people__c',dataValue('properties.Total_Number_of_Members')), //not coming through
field('Health_insurance__c', dataValue('properties.health_insurace_cover')),
field('Health_insurance_active_status__c',dataValue('properties.healthinsurance_active')),
field('Health_insurance_type__c', state => {
var status = dataValue('properties.health_insurance')(state);
return status && status === 'other_please_specify_if_active'
? 'Other'
: status === 'nhif'
? 'NHIF'
: status === 'Linda_mama' || 'linda_mama'
? 'Linda mama'
: status;
}),
field('Other_Health_Insurance__c',dataValue('properties.if_other_please_specify')),
field('Work_with_TBA__c', dataValue('properties.tba')),
field('TBA_name__c', dataValue('properties.which_tba')),
field('Last_Modified_Date_CommCare__c', dataValue('server_date_modified')),//Need a case property),
field('Active_Household__c', state => {
var status = dataValue('properties.Household_Status')(state);
return status && status === 'No'
? false
: status === 'Yes'
? true
: status;
}),
// relationship('Head_of_Household__r', 'CommCare_ID__c', dataValue('properties.head_of_household_case_id')),
field('Inactive_Reason__c', state => {
var reason = dataValue('properties.Reason_for_Inactive')(state);
return reason ? reason.toString().replace(/_/g, ' ') : null;
}),
field(
'Active_in_Nutrition_Program__c',
dataValue(
'properties.enrolled_in_a_lwala_nutrition_program'
)
),
field(
'lwala_nutrition_program_enrollment_date__c',
dataValue(
'properties.lwala_nutrition_program_enrollment_date'
)
),
field(
'Trained_in_gardening__c',
dataValue('properties.household_trained_on_gardening')
),
field(
'household_trained_on_gardening_date__c',
dataValue(
'properties.when_was_the_household_trained_on_gardening'
)
),
field(
'Seed_Input_Support__c',
dataValue('properties.household_provided_with_seed_input_support'
)
),
field(
'household_provided_with_seed_input_suppo__c',
dataValue(
'properties.when_was_the_household_provided_with_seed_input_support'
)
),
field(
'MIYCN_Trained__c',
dataValue('properties.household_trained_on_MIYCN')
),
// not in message:
// field(
// 'Kitchen_Garden__c',
// dataValue('properties.nutrition_enrollment.household_has_kitchen_garden')
// ),

//field('Case_Closed_Date__c', state => {
// var closed = dataValue('date_closed')(state);
// var date = dataValue('server_date_modified')(state);
// return closed && closed == true ? date : undefined;
// })
)
);

fn(state => { console.log("upsertIf1 done"); return state; });
fn(state => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('4 second cooldown finished.');
resolve(state);
}, 4000);
});
});

//Household Visit
query(
`SELECT Id, Parent_Geographic_Area__c, Parent_Geographic_Area__r.Name, Parent_Geographic_Area__r.Parent_Geographic_Area__c FROM Location__c WHERE CommCare_User_ID__c = '${dataValue(
'properties.owner_id'
)(state)}'`
);

fn(state => { console.log("query2 done"); return state; });
fn(state => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('4 second cooldown finished.');
resolve(state);
}, 4000);
});
});

fn(state => ({
...state,
data: {
...state.data,
catchmentNewId:
state.references[0].records && state.references[0].records.length !== 0
? (state.references[0].records[0].Parent_Geographic_Area__r
? state.references[0].records[0].Parent_Geographic_Area__r.Parent_Geographic_Area__c
: undefined)
: undefined,
},
}));

fn(state => {
/* const deaths = state.data.form.household_deaths
? state.data.form.household_deaths.deaths
: '';
if (deaths !== '' && !Array.isArray(deaths)) {
state.data.form.household_deaths.deaths = [deaths];
}*/

const supervisorMap = {
community_health_nurse: 'Community Health Nurse',
chw_supervisor: 'CHW Supervisor',
chewschas: 'CHEWs/CHAs',
other: 'Other',
none: 'None',
};

const insuranceMap = {
nhif: 'NHIF',
Linda_mama: 'Linda mama',
other_please_specify_if_active: 'Other',
none: 'None',
};

return { ...state, supervisorMap, insuranceMap };
});

upsertIf(
// state.data.properties.username !== 'openfn.test' &&
state.data.properties.username !== 'test.2021' &&
state.data.properties.test_user !== 'Yes' ,
'Visit__c',
'CommCare_Visit_ID__c',
fields(
field('CommCare_Username__c', dataValue('properties.commcare_username')),//
// field('CommCare_Visit_ID__c', dataValue('id')),
field('CommCare_Visit_ID__c', state => {
var case_id = dataValue('case_id')(state);
var submitted = dataValue('properties.last_form_opened_date_and_time')(state);
return case_id + '_' + submitted;
}),
// field('Household_CHW__c', 'a030Q00000A0jeY'),
// field('Catchment__c', dataValue('a000Q00000Egmtk')),
field('Catchment__c', dataValue('catchmentNewId')),
// field('Household__c','a010Q00000BL6lT'),
// field('Household__c', dataValue('form.case.@case_id')),
relationship(
'Household__r',
'CommCare_Code__c',
dataValue('case_id')),
field('Date__c',dataValue('properties.Date')),
field('Form_Submitted__c', dataValue('properties.last_form_opened_name')),

//field('MOH_household_code__c', state => {
// var moh = dataValue('form.Household_Information.moh_code')(state);
// var mohLinked = dataValue('form.MOH_household_code_linked')(state);
// return moh ? moh : mohLinked && mohLinked !== '' ? mohLinked : undefined;
// }),
field('Active_Household__c', state => {
var status = dataValue('properties.Household_Status')(state);
return status && status === 'No'
? false
: status === 'Yes'
? true
: status;
}),
//field('Inactive_Reason__c', state => {
// var reason = dataValue('form.Reason_for_Inactive')(state);
// return reason ? reason.toString().replace(/_/g, ' ') : null;
//}),
//field('Source__c', 1),//
//relationship(
// 'Household_CHW__r',
// 'CommCare_ID__c',
// dataValue('form.sfid')),TO UPDATE IN PRODUCTION
// field('Household_village__c', dataValue('form.village')),//
//New Nutrition Field (MOTG)
field(
'Active_in_Nutrition_Program__c',
dataValue(
'properties.enrolled_in_a_lwala_nutrition_program'
)
),
field(
'lwala_nutrition_program_enrollment_date__c',
dataValue(
'properties.lwala_nutrition_program_enrollment_date'
)
),
field(
'Trained_in_gardening__c',
dataValue('properties.household_trained_on_gardening')
),
field(
'household_trained_on_gardening_date__c',
dataValue(
'properties.when_was_the_household_trained_on_gardening'
)
),
field(
'Seed_Input_Support__c',
dataValue(
'properties.household_provided_with_seed_input_support'
)
),
field(
'household_provided_with_seed_input_suppo__c',
dataValue(
'properties.when_was_the_household_provided_with_seed_input_support'
)
),
field(
'MIYCN_Trained__c',
dataValue('properties.household_trained_on_MIYCN')
),
field(
'Kitchen_Garden__c',
dataValue('properties.Kitchen_Garden')
),

field(
'Access_to_safe_water__c',
dataValue('properties.Safe_Water')
),
field(
'Treats_Drinking_Water__c',
dataValue('properties.Treats_Drinking_Water')
),
field(
'Tippy_Tap__c',
dataValue('properties.Active_Handwashing_Station')
),
field(
'Pit_Latrine__c',
dataValue('properties.Functional_Latrine')
),
field(
'Rubbish_Pit__c',
dataValue('properties.Rubbish_Pit')
),
field(
'Drying_Rack__c',
dataValue('properties.Drying_Rack')
),
field(
'Kitchen_Garden__c',
dataValue('properties.Kitchen_Garden')
),
field(
'Cookstove__c',
dataValue('properties.Improved_Cooking_Method')
),
field('Clothe__c', dataValue('properties.Clothesline')),
field(
'WASH_Trained__c',
dataValue('properties.WASH_Trained')
),
field(
'Has_muac_tape__c',
dataValue('properties.family_muac_tape_available')
),
field('Uses_ITNs__c', dataValue('properties.ITNs')),
field('Supervisor_Visit__c', state =>
state.data.properties.supervisor_visit
? state.supervisorMap[state.data.properties.supervisor_visit]
: null
),
field('Health_insurance__c', dataValue('properties.health_insurace_cover')),
field(
'Health_insurance_active_status__c',
dataValue('properties.healthinsurance_active')
),
field('Health_insurance_type__c', state => {
var status = dataValue('properties.health_insurance')(state);
var value =
status && status !== ''
? status
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.insuranceMap[value] || value;
})
: undefined;
return value ? value.join(';') : undefined;
}),
field(
'Other_Health_Insurance__c',
dataValue('properties.if_other_please_specify')
),
//field('Last_Modified_Date_CommCare__c', dataValue('server_modified_on')),
field('CommCare_Form_Opened__c', state=> {
var form_opened = dataValue('properties.last_form_opened_date_and_time')(state);
var value1 = form_opened.split('-').slice(0, 2).join('-');
var value2 = form_opened.split('-').slice(2).join('-');
var formattedValue = [value1, value2].join(' ');
return new Date(formattedValue).toISOString();
}),
field('Case_Closed_Date__c', state => {
var closed = dataValue('date_closed')(state);
var date = dataValue('server_modified_on')(state);
return closed && closed == true ? date : undefined;
})
)
);

fn(state => { console.log("upsertIf2 done"); return state; });
fn(state => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('Final 4 second cooldown finished.');
resolve(state);
}, 4000);
});
});


- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21.html b/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21.html index a9e5086c72f..54925fa3395 100644 --- a/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21.html +++ b/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21.html @@ -22,13 +22,13 @@ - +
Skip to main content

Q3 2022] Upsert Person

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, join, map, query, relationship, upsertIf

Expression

// create constants and functions
fn(state => {
state.cleanChoice = function (state, choice) {
if (choice) {
return choice.charAt(0).toUpperCase() + choice.slice(1).replace('_', ' ');
} else {
return '';
}
};

state.handleMultiSelect = function (state, multiField) {
return multiField
? multiField
.replace(/ /gi, ';')
.toLowerCase()
.split(';')
.map(value => {
return (
value.charAt(0).toUpperCase() + value.slice(1).replace('_', ' ')
);
})
.join(';')
: '';
};

const pregDangerMap = {
Vaginal_Bleeding: 'Vaginal Bleeding',
Water_Breaks: 'Water Breaks before Time of Delivery',
Prolonged_Labour: 'Prolonged Labour over 12 Hours',
Convulsions: 'Convulsions or Fits',
Abdominal_Pain: 'Severe Abdominal Pain before Delivery',
High_Fever: 'High Fever',
Low_Baby_Movement: 'Feeling the Baby move less or not at all',
Swelling: 'Swelling of Face and Hands',
Severe_Headache: 'Severe or Continuous Headache for more than 12 hours',
Severe_Vomiting: 'Severe or Continuous Vomiting',
none: 'None',
};

const counselMap = {
anc_visits: 'ANC Visits',
early_initiation_of_anc_less_than_3_months:
'Early initiation of ANC (less than 3 months)',
completing_recomended_anc_visits: 'Completing recomended ANC visits',
danger_signs: 'Danger signs',
skilled_birth: 'Skilled birth',
immunization: 'Immunization',
individual_birth_plan: 'Individual Birth Plan',
emergency_preparedness: 'Emergency preparedness',
childcare_and_affection: 'Childcare and affection',
nutrition_counseling: 'Nutrition counseling',
growth_monitoring: 'Growth monitoring',
exclusive_breastfeeding: 'Exclusive breastfeeding',
complementary_feeding: 'Complementary feeding',
sleeping_under_llitn: 'Sleeping under LLITN',
knowing_hiv_status: 'Knowing HIV status',
indoor_pollution: 'Indoor pollution',
personal_hygiene: 'Personal Hygiene',
safe_drinking_water: 'Safe drinking water',
safe_disposal_of_human_waste: 'Safe disposal of human waste',
};

const serviceMap = {
Scheduled_PSC_Apt: 'Scheduled PSC Apt',
Adverse_Drug_Reaction_Side_Effect: 'Adverse Drug Reaction/Side Effect',
Malnutrition: 'Malnutrition',
Malaria: 'Malaria',
TB: 'TB',
Treatment_for_Other_OIs: 'Treatment for other Ols',
ARI: 'ARI',
Anemia: 'Anemia',
Diarrhea: 'Diarrhea',
Pregnancy_Care: 'Pregnancy Care (ANC)',
Family_Planning: 'Family Planning (FP)',
Preconception_Counseling: 'Preconception Counseling',
Injury: 'Injury',
Other: 'Other',
};

const reasonMapping = {
lack_of_access_to_fp_information: 'Lack of access to FP information',
no_access_to_fp_services_hospitals:
'Lack of hospitals or places where FP services can be accessed',
not_willing_to_use_fp_due_to_negative_effects_myths_and_misconceptions:
'Myths and misconceptions',
barriers_at_service_delivery_points: 'Barriers at service delivery points',
pregnant: 'The client is pregnant',
intentions_of_getting_pregnant: 'Intentions of getting pregnant',
not_sexually_active: 'The client is not sexually active',
other_barriers_culture_male_partners_parents_etc:
'Other barriers (culture, male partners, parents, etc)',
};

const milestoneTypeMap = {
cognitive_delays_learning_difficulties:
'Cognitive Delays Learning Difficulties',
motor_delays: 'Motor Delays',
speech_and_language_delay: 'Delay Speech and Language Delay',
social_and_emotional: 'Social and emotional',
};

const milestoneMap = {
movement: 'Movement',
hearing: 'Hearing',
communication: 'Communication',
seeing: 'Seeing',
cognitive_delays: 'Cognitive Delays',
play: 'Play',
};
const nutritionMap = {
severe: 'Severely Malnourished',
moderate: 'Moderately Malnourished',
normal: 'Normal',
};

const fpMethodMap = {
male_condoms: 'Male condoms',
female_condoms: 'Female condoms',
pop: 'POP',
coc: 'COC',
emergency_pills: 'Emergency pills',
none: 'None',
};

return {
...state,
counselMap,
serviceMap,
reasonMapping,
milestoneTypeMap,
milestoneMap,
nutritionMap,
pregDangerMap,
fpMethodMap,
};
});

// get data from SF
query(
`SELECT Id, Parent_Geographic_Area__c, Parent_Geographic_Area__r.Name, Parent_Geographic_Area__r.Parent_Geographic_Area__c FROM Location__c WHERE CommCare_User_ID__c = '${dataValue(
'properties.owner_id'
)(state)}'`
);

// build IDs from queried SF data
fn(state => ({
...state,
data: {
...state.data,
villageNewId:
state.references[0].records && state.references[0].records.length !== 0
? state.references[0].records[0].Id
: undefined,
areaNewId:
state.references[0].records && state.references[0].records.length !== 0
? state.references[0].records[0].Parent_Geographic_Area__c
: undefined,
catchmentNewId:
state.references[0].records && state.references[0].records.length !== 0
? state.references[0].records[0].Parent_Geographic_Area__r
? state.references[0].records[0].Parent_Geographic_Area__r
.Parent_Geographic_Area__c
: undefined
: undefined,
},
}));

upsertIf(
state.data.properties.commcare_username !== 'test.2021' &&
state.data.properties.test_user !== 'Yes',
'Household__c',
'CommCare_Code__c',
fields(
field('CommCare_Code__c', state => {
return (
dataValue('indices.parent.case_id')(state) ||
dataValue('properties.parent_id')(state)
);
})
)
),

// build sfRecord before upserting
fn(state => {
// This mapping was initially constructed with fields(field(), ...) syntax. We
// preserve it here and use "expandReferences" but could also refactor this to
// use standard object syntax, as Salesforce looks for { k: v, ... }.
const originalMapping = fields(
/* field(
'deworming_medication__c',
dataValue('form.TT5.Child_Information.Deworming')
),depracated field*/
field('Source__c', 1),
field('CommCare_ID__c', dataValue('case_id')),
relationship(
'Household__r',
'CommCare_Code__c', state => {
// (dataValue('properties.parent_id') || dataValue('indices.parent.case_id'))
return (
dataValue('properties.parent_id')(state) ||
dataValue('indices.parent.case_id')(state)
);
}),
field('commcare_location_id__c',dataValue('properties.commcare_location_id')),
field('CommCare_Username__c',dataValue('properties.commcare_username')),
field('Telephone__c', dataValue('properties.contact_phone_number')),
field(
'Consent_for_data_use__c',
dataValue('properties.data_sharing_consent')
),
field('CommCare_HH_Code__c', dataValue('indices.parent.case_id')),
field('Client_Status__c', dataValue('properties.Client_Status')),
field('Catchment__c', dataValue('catchmentNewId')),
field('Area__c', dataValue('areaNewId')),
field('Household_Village__c', dataValue('villageNewId')),
field('Name', state => {
var name1 = dataValue('properties.Person_Name')(state); //check
var unborn = dataValue('properties.name')(state); //check
var name2 =
name1 === undefined || name1 === '' || name1 === null
? unborn
: name1.replace(/\w\S*/g, function (txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
return name1 !== null ? name2 : 'Unborn Child';
}),
field('Chronic_illness__c', state => {
var choice = dataValue(
'properties.please_specify_which_chronic_illness_the_person_has'
)(state);
var choice2 = state.handleMultiSelect(state, choice);
return choice2 ? choice2.replace(/_/g, ' ') : '';
}),
field(
'Currently_enrolled_in_school__c',
dataValue('properties.enrolled_in_school')
),
field('Education_Level__c', state => {
var level = dataValue('properties.Education_Level')(state);
return level ? level.toString().replace(/_/g, ' ') : null;
}),
field('Relation_to_the_head_of_the_household__c', state => {
var relation = dataValue('properties.relation_to_hh')(state);
if (relation) {
relation = relation.toString().replace(/_/g, ' ');
var toTitleCase = relation.charAt(0).toUpperCase() + relation.slice(1);
return toTitleCase;
}

return null;
}),
field('Gender__c',dataValue('properties.Gender')),
field('Disability__c', state => {
var disability = dataValue('properties.disability')(state);
var toTitleCase =
disability !== undefined
? disability
.toLowerCase()
.split(' ')
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join(';')
: null;
return toTitleCase;
}), //need case property
field('Other_disability__c', state => {
var disability = dataValue('properties.other_disability')(state);
var toTitleCase =
disability !== undefined
? disability
.toLowerCase()
.split(' ')
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join(';')
: null;
return toTitleCase;
}), //need case property

field('Use_mosquito_net__c', dataValue('properties.sleep_under_net')), //need case property
// field('Birth_Certificate__c',dataValue('properties.birth_certificate')),
field('Birth_Certificate__c', dataValue('properties.birth_certificate')),
field('Child_Status__c', state => {
var status = dataValue('properties.Child_Status')(state);
var rt = dataValue('properties.Record_Type')(state); //check that this is the right one
if (status && rt === 'Unborn') {
status = 'Unborn';
} else if (status && rt === 'Born') {
status = 'Born';
}
return status;
}),
//===================================================//
relationship('RecordType', 'Name', state => {
var rt = dataValue('properties.Record_Type')(state);
return rt === 'Unborn' || rt === ''
? 'Child'
: rt.toString().replace(/_/g, ' '); //convert Unborn children to Child RT
}),

//TT5 Mother Information

field('MCH_booklet__c', dataValue('properties.mch_booklet')), //need to create a case property
field('Reason_for_not_taking_a_pregnancy_test__c', state => {
var reason = dataValue('properties.No_Preg_Test')(state);
return reason ? reason.toString().replace(/_/g, ' ') : undefined;
}),
field('Pregnancy_danger_signs__c', state => {
var signs = dataValue('properties.pregnancy_danger_signs')(state);
return signs ? state.pregDangerMap[signs] : undefined;
}),
field(
'Individual_birth_plan_counselling__c',
dataValue('properties.individual_birth_plan')
),
field('Child_Danger_Signs__c', state => {
var signs = dataValue('properties.Other_Danger_Signs')(state);
return signs
? signs
.toLowerCase()
.split(' ')
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join(';')
.toString()
.replace(/_/g, ' ')
: signs;
}),

//HAWI
field(
'Unique_Patient_Code__c',
dataValue('properties.Unique_Patient_Code')
),
field(
'Active_in_Support_Group__c',
dataValue('properties.Active_in_Support_Group')
),
field(
'Preferred_Care_Facility__c',
dataValue('properties.Preferred_Care_Facility')
),
field('Currently_on_ART_s__c', dataValue('properties.ART')),
field('ART_Regimen__c', dataValue('properties.ARVs')),
field('HAWI_Defaulter__c', state => {
var hawi = dataValue('properties.default')(state);
return hawi === 'Yes' ? true : false;
}),
field('Date_of_Default__c', dataValue('properties.date_of_default')),
field('Know_HIV_status__c', dataValue('properties.known_hiv_status')),
field('HIV_Status__c', dataValue('properties.hiv_status')),
/*field('HIV_Status__c', state => {
var status = dataValue('properties.hiv_status')(state);
return status === 'yes'
? 'Known'
: status === 'no'
? 'Unknown'
: undefined;
}),//CHECK MAPPING ON THIS ONE*/

//Illness
field('Persons_temperature__c', dataValue('properties.temperature')),
field(
'Days_since_illness_start__c',
dataValue('properties.duration_of_sickness')
),
field(
'Current_Malaria_Status__c',
dataValue('properties.malaria_test_results')
),
field('Malaria_test__c', dataValue('properties.malaria_test')),
field(
'Last_Malaria_Home_Test__c',
dataValue('properties.malaria_test_date')
),
field('Last_Malaria_Home_Treatment__c', state => {
var choice = dataValue(
'properties.malaria_test_date'
)(state);
return state.cleanChoice(state, choice);
}),
/*field('Current_Malaria_Status__c', dataValue('form.Malaria_Status')),//check
field('Malaria_Facility__c',dataValue('form.treatment_and_tracking.malaria_referral_facility')),
field('Fever_over_7days__c',dataValue('form.treatment_and_tracking.symptoms_check_fever')),//check*/
field('Cough_over_14days__c', dataValue('properties.symptoms_check_cough')),
/*field('Diarrhoea_over_14days__c',dataValue('form.treatment_and_tracking.symptoms_check_diarrhea')),//check
field('Diarrhoea_less_than_14_days__c',dataValue('form.treatment_and_tracking.mild_symptoms_check_diarrhea')),//check*/
field(
'TB_patients_therapy_observed__c',
dataValue('properties.observed_tb_therapy')
),
field('Injuries_or_wounds__c', dataValue('properties.wounds_or_injuries')),
field(
'Pulse_Oximeter__c',
dataValue('properties.pulse_oximeter_available')
),
field(
'Heart_Rate_Pulse_Oximeter__c',
dataValue('properties.heart_rate_pulse_oximeter')
),
field(
'Oxygen_Concentration_Pulse_Oximeter__c',
dataValue('properties.oxygen_concentration')
),
field('Can_child_drink__c', dataValue('properties.can_child_drink')),
// field('Antibiotic_provided_for_fast_breathing__c',dataValue('properties.antibiotic_fast_breathing')),
field('Antibiotic_provided_for_fast_breathing__c', state => {
var choice = dataValue('properties.antibiotic_fast_breathing')(state);
return state.cleanChoice(state, choice);
}),
// field('Antibiotic_provided_for_chest_indrawing__c',dataValue('properties.antibiotic_chest_indrawing')),
field('Antibiotic_provided_for_chest_indrawing__c', state => {
var choice = dataValue('properties.antibiotic_chest_indrawing')(state);
return state.cleanChoice(state, choice);
}),
/*field('Child_zinc__c',dataValue('form.TT5.Child_Information.Clinical_Services.diarrhea_clinic_treatment_zinc')),//check
field('Child_ORS__c',dataValue('form.TT5.Child_Information.Clinical_Services.diarrhea_clinic_treatment_ORS')),//check
field('Childs_breath_per_minute__c',dataValue('form.psbi.breaths_per_minuite')),//check
field('Child_chest_in_drawing__c',dataValue('form.psbi.Child_chest_in_drawing_c')),//check*/
field('Default_on_TB_treatment__c', state => {
var choice = dataValue('properties.default_tb_treatment')(state); //check
return state.cleanChoice(state, choice);
}),
field('Treatment_Distribution__c', state => {
var choice = dataValue('properties.distributed_treatments')(state);
return state.cleanChoice(state, choice);
}), //check

//Delivery
field(
'Immediate_Breastfeeding__c',
dataValue('properties.Breastfeeding_Delivery')
),
field('Place_of_Delivery__c', state => {
var facility = dataValue('properties.Delivery_Type')(state);
return facility === 'Skilled'
? 'Facility'
: facility === 'Unskilled'
? 'Home'
: undefined;
}),
field('Delivery_Facility__c', state => {
var facility = dataValue('properties.Delivery_Facility')(state);
return facility ? facility.toString().replace(/_/g, ' ') : null;
}),
/* field('Delivery_Facility__c', state => {
//HMN 21//11/2022
var birthFacility =dataValue('properties.Birth_Facility')(state);
var deliveryFacility = dataValue('properties.Delivery_Facility')(state);
var facilityOfBirth = dataValue ('properties.Facility_of_Birth')(state);
var faciliy_val =
facilityOfBirth //!== undefined || facilityOfBirth !== '' || facilityOfBirth !== null
? facilityOfBirth
:birthFacility //!== undefined || birthFacility !== '' || birthFacility !== null
? birthFacility
:deliveryFacility //!== undefined || deliveryFacility !== '' || deliveryFacility !== null
? deliveryFacility
:"";
return faciliy_val.toString().replace(/_/g, ' ');
//HMN
}), */
//field('Delivery_Facility__c', state => {
// var facility = dataValue('properties.Birth_Facility')(state);
// return facility ? facility.toString().replace(/_/g, ' ') : null;
//}),
field(
'Delivery_Facility_Other__c',
dataValue('properties.Delivery_Facility_Other')
),

//Family Planning

field('LMP__c', dataValue('properties.LMP')),
field('Family_Planning__c', dataValue('properties.family_planning')),
field(
'Family_Planning_Method__c',
dataValue('properties.family_planning_method')
),
field('FP_Method_Distributed__c', state => {
var status = dataValue('properties.FP_commodity')(state);
var value =
status && status !== ''
? status
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.fpMethodMap[value] || value;
})
: undefined;
return value ? value.join(';') : undefined;
}),
field('Reasons_for_not_taking_FP_method__c', state => {
var status = dataValue('properties.No_FPmethod_reason')(state);
var value =
status && status !== ''
? status
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.reasonMapping[value] || value;
})
: undefined;
return value ? value.join(';') : undefined;
}),
field('Pregnant__c', state => {
var preg = dataValue('properties.Pregnant')(state);
return preg === 'Yes' ? true : false;
}),
field('Date_of_Delivery__c', dataValue('properties.delivery_date')),
field(
'Counselled_on_FP_Methods__c',
dataValue('properties.CounselledFP_methods')
),
field('Client_counselled_on__c', state => {
var choices =
dataValue('properties.counsel_topic')(state) ||
dataValue('properties.counsel_topic')(state); //need to create a case property
var choiceGroups = choices ? choices.split(' ') : null;
var choicesMulti = choiceGroups
? choiceGroups
.map(cg => {
return state.counselMap[cg];
})
.join(';')
: choiceGroups;
return choicesMulti;
}), //OpenFn Question - can this be simplified now that this is a case property
field('Client_provided_with_FP__c', state => {
var choice = dataValue(
'properties.was_the_woman_15-49yrs_provided_with_family_planning_commodities_by_chv'
)(state);
return state.cleanChoice(state, choice);
}),
field(
'Received_pregnancy_test__c',
dataValue('properties.did_you_adminsiter_a_pregnancy_test')
),
field(
'Pregnancy_test_result__c',
dataValue('properties.pregnancy_test_result')
),
field('Gravida__c', dataValue('properties.Gravida')),
field('Parity__c', dataValue('properties.Parity')),

//TT5 Child Information

field(
'Exclusive_Breastfeeding__c',
dataValue('properties.Exclusive_Breastfeeding')
),
field(
'Counselled_on_Exclusive_Breastfeeding__c',
dataValue('properties.counseling')
),
field(
'Newborn_visited_48_hours_of_delivery__c',
dataValue('properties.newborn_visited_48_hours_of_delivery')
),
field('Newborn_visit_counselling__c', state => {
var choice = dataValue('properties.did_you_consel_the_mother_on1')(state);
return state.cleanChoice(state, choice);
}),
field(
'mother_visited_48_hours_of_the_delivery__c',
dataValue('properties.visit_mother_48')
),
/*
//HMN -06012023- The object Visit_after_unskilled__c seems to be missing in sfRecord
//Investigation issue https://lwala.atlassian.net/browse/LWAL-716 raised
//Meanwhile this is being removed to allow re-processing
field(
'Visit_after_unskilled__c',
dataValue('properties.visit_24hours_after_unskilled_delivery')
),
*/
field('Mother_visit_counselling__c', state => {
var choice = dataValue('properties.did_you_consel_the_mother_on2')(state);
return state.cleanChoice(state, choice);
}),
/*field('Newborn_visited_48_hours_of_delivery__c',dataValue('properties.newborn_visited_48_hours_of_delivery')), Duplicate Mapping*/
field(
'Newborn_visited_by_a_CHW_within_6_days__c',
dataValue('properties.visit_6_days_from_delivery')
),

//Nutrition

field(
'Caretaker_action_after_muac_screening__c',
dataValue('properties.mother_screened_muac_action')
),
field(
'Caretaker_muac_findings__c',
dataValue('properties.mother_screened_child_muac_result')
),
field('Food_groups_3_times_a_day__c',dataValue('properties.food_groups')),
// field('Caretaker_screened_for_muac_this__c', dataValue('properties.mother_screened_child_muac')),
field('Caretaker_screened_for_muac_this__c', state => {
var choice = dataValue('properties.mother_screened_child_muac')(state); //check
return state.cleanChoice(state, choice);
}),
// field('Caretaker_trained_in_muac__c', dataValue('properties.mother_trained_muac')),
field('Caretaker_trained_in_muac__c', state => {
var choice = dataValue('properties.mother_trained_muac')(state); //check
return state.cleanChoice(state, choice);
}),
field(
'of_Caretaker_MUAC_screenings__c',
dataValue('properties.mother_nb_screening')
),
field('Current_Weight__c', dataValue('properties.Current_Weight')), //Only on task update
field('Current_Height__c', dataValue('properties.current_height')),
field('Current_MUAC__c', dataValue('properties.MUAC')),
field('Current_Nutrition_Status__c', state => {
var status = dataValue('properties.Nutrition_Status')(state);
return status ? state.nutritionMap[status] : undefined;
}),

//TT5 & HAWI
field('TT5_Mother_Registrant__c', state => {
var preg = dataValue('properties.Pregnant')(state);
return preg == 'Yes' ? 'Yes' : null;
}),
field('Enrollment_Date__c', state => {
var age = dataValue('properties.age')(state);
var date = dataValue('server_date_modified')(state);
var preg = dataValue('properties.Pregnant')(state);
return age < 5 || preg == 'Yes' ? date : null;
}),
field('HAWI_Enrollment_Date__c', state => {
var date = dataValue('server_date_modified')(state);
var status = dataValue('properties.hiv_status')(state);
return status == 'positive' ? date : null;
}),
field('Thrive_Thru_5_Registrant__c', state => {
var age = dataValue('properties.age')(state);
var preg = dataValue('properties.Pregnant')(state);
return age < 5 || preg == 'Yes' ? 'Yes' : 'No';
}), //check mapping
field('HAWI_Registrant__c', state => {
var status = dataValue('properties.hiv_status')(state);
return status == 'positive' ? 'Yes' : 'No';
}),

//ANC
field('ANC_1__c', state => {
var date = dataValue('properties.ANC_1')(state);
return date && date !== '' ? date : undefined;
}),
field('ANC_2__c', state => {
var date = dataValue('properties.ANC_2')(state);
return date && date !== '' ? date : undefined;
}),
field('ANC_3__c', state => {
var date = dataValue('properties.ANC_3')(state);
return date && date !== '' ? date : undefined;
}),
field('ANC_4__c', state => {
var date = dataValue('properties.ANC_4')(state);
return date && date !== '' ? date : undefined;
}),
field('ANC_5__c', state => {
var date = dataValue('properties.ANC_5')(state);
return date && date !== '' ? date : undefined;
}),
field('Date_of_Birth__c', state => {
var date = dataValue('properties.DOB')(state);
return date && date !== '' ? date : undefined;
}),

//Immunization

field(
'Child_missed_immunization_type__c',
dataValue('form.TT5.Child_Information.Immunizations.immunization_type')
), //check
field('BCG__c', dataValue('properties.BCG')),
field('OPV_0__c', dataValue('properties.OPV_0')),
field('Measles_6__c', dataValue('properties.Measles_6')),
field('Measles_9__c', dataValue('properties.Measles_9')),
field('Measles_18__c', dataValue('properties.Measles_18')),
field('OPV_1__c', dataValue('properties.OPV_PCV_Penta_1')),
field('OPV_2__c', dataValue('properties.OPV_PCV_Penta_2')),
field('OPV_3__c', dataValue('properties.OPV_PCV_Penta_3')),
field('Rotavirus_1__c', dataValue('properties.rotavirus_1')),
field('Rotavirus_2__c', dataValue('properties.rotavirus_2')),
field('IPV__c', dataValue('properties.IPV')),
field('Vitamin_A_12__c', dataValue('properties.Vitamine_A')),
field('Vitamin_A_18__c', dataValue('properties.Vitamine_A_2')),
field('Vitamin_A_24__c', dataValue('properties.Vitamine_A_3')),
field('Deworming_12__c', dataValue('properties.Deworming_1')),
field('Deworming_18__c', dataValue('properties.Deworming_2')),
field('Deworming_24__c', dataValue('properties.Deworming_3')),

//ECD
// field('Did_you_counsel_caregiver_on__c',dataValue('properties.did_you_counsel_the_caregiver_on_delayed_milestones')),
field('Did_you_counsel_caregiver_on__c', state => {
var choice = dataValue(
'properties.did_you_counsel_the_caregiver_on_delayed_milestones'
)(state);
return state.cleanChoice(state, choice);
}),
// field('Delayed_Milestone__c',dataValue('properties.does_the_child_has_a_delayed_milestone')),
field('Delayed_Milestone__c', state => {
var choice = dataValue(
'properties.does_the_child_has_a_delayed_milestone'
)(state);
return state.cleanChoice(state, choice);
}),
// field('Child_has_2_or_more_play_items__c',dataValue('properties.does_the_child_has_2_or_more_play_items_at_home')),
field('Child_has_2_or_more_play_items__c', state => {
var choice = dataValue(
'properties.does_the_child_has_2_or_more_play_items_at_home'
)(state);
return state.cleanChoice(state, choice);
}),
// field('Child_has_3_or_more_picture_books__c',dataValue('properties.does_the_child_has_3_or_more_picture_books')),
field('Child_has_3_or_more_picture_books__c', state => {
var choice = dataValue(
'properties.does_the_child_has_3_or_more_picture_books'
)(state);
return state.cleanChoice(state, choice);
}),
field('Delayed_Milestones_Counselled_On__c', state => {
var ms = dataValue(
'properties.which_delayed_milestone_area_did_you_counsel_the_caregiver_on'
)(state);
return ms ? state.milestoneMap[ms] : undefined;
}),
field('Delayed_Milestone_Type__c', state => {
var ms = dataValue('properties.which_delayed_milestone')(state);
return ms ? state.milestoneTypeMap[ms] : undefined;
}),

//Death
field('Date_of_Death__c', dataValue('properties.Date_of_Death')),
field('Cause_of_Death__c', state => {
var death = dataValue('properties.cause_of_death_dead')(state);
return death ? death.toString().replace(/_/g, ' ') : death;
}), //check which case property to use - there are 2
field('Verbal_autopsy__c', dataValue('properties.verbal_autopsy')),

//Closing
field('Last_Modified_Date_CommCare__c', dataValue('date_modified')),
field('Case_Closed_Date__c',dataValue('date_closed')),
//field('Case_Closed_Date__c', state => {
// var closed = dataValue('date_closed')(state);
// var date = dataValue('date_modified')(state);
// return closed && closed == true ? date : undefined;
//}) //need case property
);

let sfRecord = expandReferences(originalMapping)(state);

Object.entries(sfRecord).forEach(([key, value]) => {
if (value === '') sfRecord[key] = undefined;
});

return { ...state, sfRecord };
});

// upsert data to SF
upsertIf(
state.data.properties.commcare_username !== 'test.2021' &&
state.data.properties.test_user !== 'Yes' ,
'Person__c', 'CommCare_ID__c', state => state.sfRecord);

upsertIf(
state.data.properties.commcare_username !== 'test.2021' &&
state.data.properties.test_user !== 'Yes' &&
state.data.properties.caretaker_case_id !== undefined && state.data.properties.caretaker_case_id !== '',
'Person__c', 'CommCare_ID__c',
fields(
relationship('Primary_Caregiver_Lookup__r', 'CommCare_ID__c', state => {
return caregiver = dataValue('properties.caretaker_case_id')(state);
}),
field('CommCare_ID__c', dataValue('case_id')),
)
);

upsertIf(
state.data.properties.commcare_username !== 'test.2021' &&
state.data.properties.test_user !== 'Yes' &&
state.data.properties.mother_case_id !== undefined && state.data.properties.mother_case_id !== '',
'Person__c', 'CommCare_ID__c',
fields(
relationship('Mother__r', 'CommCare_ID__c', state => {
return caregiver = dataValue('properties.mother_case_id')(state);
}),
field('CommCare_ID__c', dataValue('case_id')),
)
);

upsertIf(
state.data.properties.commcare_username !== 'test.2021' &&
state.data.properties.test_user !== 'Yes' &&
state.data.properties.head_of_household_case_id !== undefined && state.data.properties.head_of_household_case_id !== '',
'Household__c', 'CommCare_Code__c',
fields(
field('CommCare_Code__c', state => {
return (
dataValue('indices.parent.case_id')(state) ||
dataValue('properties.parent_id')(state)
)
}),
relationship('Head_of_Household__r', 'CommCare_ID__c', dataValue('properties.head_of_household_case_id')),
)
)

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28.html b/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28.html index 5596d38ec7a..be784a7fbb8 100644 --- a/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28.html +++ b/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28.html @@ -22,13 +22,13 @@ - +
Skip to main content

Q3 2022] Upsert Person Visit

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, join, map, query, relationship, upsertIf

Expression

//UPSERT PERSON VISIT
query(
`SELECT Id, Parent_Geographic_Area__c, Parent_Geographic_Area__r.Name, Parent_Geographic_Area__r.Parent_Geographic_Area__c FROM Location__c WHERE CommCare_User_ID__c = '${dataValue(
'properties.owner_id'
)(state)}'`
);

fn(state => {
state.cleanChoice = function (state, choice) {
if (choice) {
return choice.charAt(0).toUpperCase() + choice.slice(1).replace('_', ' ');
} else {
return '';
}
};

fn(state => ({
...state,
data: {
...state.data,
catchmentNewId:
state.references[0].records && state.references[0].records.length !== 0
? (state.references[0].records[0].Parent_Geographic_Area__r
? state.references[0].records[0].Parent_Geographic_Area__r.Parent_Geographic_Area__c
: undefined)
: undefined,
},
}));

state.handleMultiSelect = function (state, multiField) {
return multiField
? multiField
.replace(/ /gi, ';')
.toLowerCase()
.split(';')
.map(value => {
return (
value.charAt(0).toUpperCase() + value.slice(1).replace('_', ' ')
);
})
.join(';')
: '';
};

state.handleMultiSelectOriginal = function (state, multiField) {
return multiField
? multiField
.replace(/ /gi, ';')
.toLowerCase()
.split(';')
.map(value => {
return (
value
);
})
.join(';')
: '';
};

const pregDangerMap = {
Vaginal_Bleeding: 'Vaginal Bleeding',
Water_Breaks: 'Water Breaks before Time of Delivery',
Prolonged_Labour: 'Prolonged Labour over 12 Hours',
Convulsions: 'Convulsions or Fits',
Abdominal_Pain: 'Severe Abdominal Pain before Delivery',
High_Fever: 'High Fever',
Low_Baby_Movement: 'Feeling the Baby move less or not at all',
Swelling: 'Swelling of Face and Hands',
Severe_Headache: 'Severe or Continuous Headache for more than 12 hours',
Severe_Vomiting: 'Severe or Continuous Vomiting',
none: 'None',
};

const counselMap = {
anc_visits: 'ANC Visits',
early_initiation_of_anc_less_than_3_months:
'Early initiation of ANC (less than 3 months)',
completing_recomended_anc_visits: 'Completing recomended ANC visits',
danger_signs: 'Danger signs',
skilled_birth: 'Skilled birth',
immunization: 'Immunization',
individual_birth_plan: 'Individual Birth Plan',
emergency_preparedness: 'Emergency preparedness',
childcare_and_affection: 'Childcare and affection',
nutrition_counseling: 'Nutrition counseling',
growth_monitoring: 'Growth monitoring',
exclusive_breastfeeding: 'Exclusive breastfeeding',
complementary_feeding: 'Complementary feeding',
sleeping_under_llitn: 'Sleeping under LLITN',
knowing_hiv_status: 'Knowing HIV status',
indoor_pollution: 'Indoor pollution',
personal_hygiene: 'Personal Hygiene',
safe_drinking_water: 'Safe drinking water',
safe_disposal_of_human_waste: 'Safe disposal of human waste',
};

const serviceMap = {
Scheduled_PSC_Apt: 'Scheduled PSC Apt',
Adverse_Drug_Reaction_Side_Effect: 'Adverse Drug Reaction/Side Effect',
Malnutrition: 'Malnutrition',
Malaria: 'Malaria',
TB: 'TB',
Treatment_for_Other_OIs: 'Treatment for other Ols',
ARI: 'ARI',
Anemia: 'Anemia',
Diarrhea: 'Diarrhea',
Pregnancy_Care: 'Pregnancy Care (ANC)',
Family_Planning: 'Family Planning (FP)',
Preconception_Counseling: 'Preconception Counseling',
Injury: 'Injury',
Other: 'Other',
};

const reasonMap = {
lack_of_access_to_fp_information: 'Lack of access to FP information',
no_access_to_fp_services_hospitals:
'Lack of hospitals or places where FP services can be accessed',
not_willing_to_use_fp_due_to_negative_effects_myths_and_misconceptions:
'Myths and misconceptions',
barriers_at_service_delivery_points: 'Barriers at service delivery points',
pregnant: 'The client is pregnant',
intentions_of_getting_pregnant: 'Intentions of getting pregnant',
not_sexually_active: 'The client is not sexually active',
other_barriers_culture_male_partners_parents_etc:
'Other barriers (culture, male partners, parents, etc)',
};

const milestoneTypeMap = {
cognitive_delays_learning_difficulties:
'Cognitive Delays Learning Difficulties',
motor_delays: 'Motor Delays',
speech_and_language_delay: 'Delay Speech and Language Delay',
social_and_emotional: 'Social and emotional',
};

const milestoneMap = {
movement: 'Movement',
hearing: 'Hearing',
communication: 'Communication',
seeing: 'Seeing',
cognitive_delays: 'Cognitive Delays',
play: 'Play',
};
const nutritionMap = {
severe: 'Severely Malnourished',
moderate: 'Moderately Malnourished',
normal: 'Normal',
};

const fpMethodMap = {
male_condoms: "Male condoms",
female_condoms: "Female condoms",
pop: "POP",
coc: "COC",
emergency_pills: "Emergency pills",
none: "None",
//HMN -12/01/2023-
//adding normalization for the family_planning_method to Family_Planning_Method__c
iucd: "IUCD",
condoms: "Condoms",
depo:"Depo",
implant: "Implant",
injection: "Injection",
pills: "Pills",
traditional: "Traditional"
};

const symptomsMap = {
convulsions: 'Convulsions',
not_able_to_eatdrink: 'Not able to drink or feed at all',
vomits_everything: 'Vomits everything',
'chest_in-drawing': 'Chest in - drawing',
unusually_sleepyunconscious: 'Unusually sleepy or unconscious',
swelling_of_both_feet: 'Swelling of both feet',
none: "None",
};

const supervisorMap ={
community_health_nurse: "Community_health_nurse",
chw_supervisor: "CHW_supervisor",
chewschas: "Chewschas",
other: "Other",
none: "None"
};

const treatmentDistributionMap = {
ors_205gltr_sachets: 'ORS (20.5h/ltr): Sachets',
acts_6s: 'ACTs (6s)',
acts_12s: 'ACTs (12s)',
acts_18s: 'ACTs (18s)',
acts_24s: 'ACTs (24s)',
albendazole_abz_tabs: 'Albendazole (ABZ): Tabs',
paracetamol_tabs: 'Tetracycline Eye Ointment (TEO): 1%:tube',
tetracycline_eye_ointment_teo_1_tube: 'Tetracycline Eye Ointment (TEO): 1%:tube',
amoxycillin: 'Amoxycillin (125mg/5mls: Bottle',
none: 'None'
};

const childDangerSignsMap = {
none: 'None',
Poor_Breastfeeding: 'Poor Breastfeeding',
not_able_to_feed_since_birth_or_stopped_feeding_well: 'Not able to feed since birth, or stopped feeding well',
not_able_to_breastfeed: 'Not able to breastfeed',
Fever: 'Fever',
very_low_temperature: 'Very low temperature (35.4 C or less)',
shivering: 'Shivering',
Fast_Breathing: 'Fast Breathing',
Very_Sleepy: 'Very Sleepy',
Convulsions_and_Fits: 'Convulsions and Fits',
only_moves_when_stimulated_or_does_not_move_even_on_stimulation: 'Only moves when stimulated, or does not move even on stimulation',
yellow_solebaby_body_turning_yellow_especially_eyes_palms_soles: 'Yellow sole(Baby body turning yellow especially eyes, palms,soles)',
bleeding_from_the_umbilical_stump: 'Bleeding from the umbilical stump',
signs_of_local_infection_umbilicus_is_red_or_draining_pus_skin_boils_or_eye: 'Signs of local infection: umbilicus is red or draining pus, skin boils, or eyes draining pus',
weight_chart_using_color_coded_scales_if_red_or_yellowweight_below_25kg_or_: 'Weight chart using color coded scales if RED or YELLOW(Weight below 2.5kg or born less than 36 weeks of age)',
unable_to_cry: 'Unable to cry',
cyanosis: 'Cyanosis',
bulging_fontanelle: 'Bulging fontanelle'
}

return {
...state,
counselMap,
serviceMap,
reasonMap,
milestoneTypeMap,
milestoneMap,
nutritionMap,
pregDangerMap,
fpMethodMap,
symptomsMap,
supervisorMap,
treatmentDistributionMap,
childDangerSignsMap
};
});

upsertIf(
// state.data.properties.username !== 'openfn.test' &&
state.data.properties.username !== 'test.2021' &&
state.data.properties.test_user !== 'Yes' ,
'Person_visit__c',
'CommCare_ID__c',
fields(
//field('CommCare_ID__c', dataValue('form.case.@case_id')),
// field('CommCare_ID__c', dataValue('id')),
//field('CommCare_ID__c', state => {
// var case_id = dataValue('case_id')(state);
// var submitted = dataValue('properties.last_form_opened_date_and_time')(state);
// return case_id + '_' + submitted;
//}),
field('CommCare_ID__c',dataValue('case_id')),

relationship(
'Person__r',
'CommCare_ID__c',
dataValue('indices.parent.case_id')
),
/*relationship(
'Household_CHW__r',
'CommCare_ID__c',
dataValue('properties.sfid')),*/
// field('CommCare_Visit_ID__c',dataValue('metadata.instanceID')),
field('CommCare_Visit_ID__c', state => {
var case_id = dataValue('case_id')(state);
var submitted = dataValue('properties.last_form_opened_date_and_time')(state);
return case_id + '_' + submitted;
}),
field('Date__c',dataValue('properties.Date')),
field('Form_Submitted__c', dataValue('properties.last_form_opened_name')),
field('Birth_Status__c',dataValue('properties.child_status')),
field('Catchment__c', dataValue('catchmentNewId')),
/*
//HMN 05/01/2022 Caused alot of failures, removed this RecordType Field
relationship('RecordType', 'Name', state => {
var rt = dataValue('properties.RecordType')(state);
if (rt === 'Unborn' || rt === 'Child') {
return 'Child Visit';
};
if (rt === 'Youth') {
return 'Youth Visit';
};
if (rt === 'Male Adult') {
return 'Adult Male Visit';
};
if (rt === 'Female Adult') {
return 'Adult Female Visit';
};
}),*/
field('Use_mosquito_net__c', state => {
var choice = dataValue(
'properties.sleep_under_net'
)(state);
return state.cleanChoice(state, choice);
}),
field(
'Individual_birth_plan_counselling__c',
dataValue('properties.individual_birth_plan')
),
field('Reason_for_not_taking_a_pregnancy_test__c', state => {
var reason = dataValue('properties.No_Preg_Test')(state);
return reason ? reason.toString().replace(/_/g, ' ') : undefined;
}),
field('Pregnancy_danger_signs__c', state => {
var signs = dataValue(
'properties.No_Preg_Test'
)(state);
return signs ? state.pregDangerMap[signs] : undefined;
}),
field('Child_Danger_Signs__c', state => {
var signs = dataValue(
'properties.Other_Danger_Signs'
)(state);
return signs ? state.childDangerSignsMap[signs] : undefined
}),
field('Current_Malaria_Status__c', state => {
var choice = dataValue(
'properties.malaria_test_results'
)(state);
return state.cleanChoice(state, choice);
}),
field('Malaria_Home_Test__c', dataValue('properties.malaria_test_date')),
/*field('Current_Malaria_Status__c', state => {
var choice = dataValue(
'properties.Malaria_Status'
)(state);
return state.cleanChoice(state, choice);
}),*/
// field('Malaria_Home_Treatment__c',dataValue('form.treatment_and_tracking.home_treatment')),
field('Malaria_Home_Treatment__c', dataValue('properties.malaria_test_date')),
field('Persons_symptoms__c', state => {
var check = dataValue('properties.symptoms_check_other')(state);
var value =
check && check !== ''
? check
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.symptomsMap[value] || value;
})
: undefined;
return value ? value.join(';') : undefined;
}),
field('Active_in_Support_Group__c', dataValue('properties.Active_in_Support_Group')),
field('HAWI_Defaulter__c', state => {
var hawi = dataValue('properties.default')(state);
return hawi === 'Yes' ? true : false;
}),
field(
'Date_of_Default__c',
dataValue('properties.date_of_default')
),
field(
'Persons_temperature__c',
dataValue('properties.temperature')
),
field(
'Days_since_illness_start__c',
dataValue('properties.duration_of_sickness')
),
field(
'Newborn_visited_48_hours_of_delivery__c',
dataValue(
'properties.newborn_visited_48_hours_of_delivery'
)
),
field(
'Newborn_visited_by_a_CHW_within_6_days__c',
dataValue('properties.visit_6_days_from_delivery')
),
field(
'Current_Malaria_Status__c',
dataValue('properties.malaria_test_results')
),
field('Malaria_test__c', state => {
var choice = dataValue(
'properties.malaria_test'
)(state);
return state.cleanChoice(state, choice);
}),
field('Fever__c', state => {
var choice = dataValue(
'properties.symptoms_check_fever'
)(state);
return state.cleanChoice(state, choice);
}),
field('Cough__c', state => {
var choice = dataValue(
'properties.symptoms_check_cough'
)(state);
return state.cleanChoice(state, choice);
}),
field('Diarrhoea__c', state => {
var choice = dataValue(
'properties.symptoms_check_diarrhea'
)(state);
return state.cleanChoice(state, choice);
}),
field(
'TB_patients_therapy_observed__c',
dataValue('properties.observed_tb_therapy')
),
field(
'Injuries_or_wounds__c',
dataValue('properties.wounds_or_injuries')
),
field('Currently_on_ART_s__c', dataValue('properties.ART')),
/*field('ART_Regimen__c', state => {
var choice = dataValue(
'properties.ARVs'
)(state);
return state.cleanChoice(state, choice);
}),*/
field(
'Immediate_Breastfeeding__c',
dataValue(
'properties.Breastfeeding_Delivery'
)
),
field(
'Exclusive_Breastfeeding__c',
dataValue(
'properties.Exclusive_Breastfeeding'
)
),
field(
'Counselled_on_Exclusive_Breastfeeding__c',
dataValue('properties.counseling')
),
field('LMP__c',dataValue('properties.when_was_your_lmp')),
field('Family_Planning__c', state => {
var choice = dataValue(
'properties.family_planning'
)(state);
return state.cleanChoice(state, choice);
}),
//HMN 12/01/2023 Failures on picklist within Salesforce
/*
field(
'Family_Planning_Method__c',
dataValue('properties.family_planning_method')
),*/
field('Family_Planning_Method__c', state => {
//var status = dataValue('form.treatment_and_tracking.distribution.distributed_treatments')(state);
var status = dataValue('properties.family_planning_method')(state);
var value =
status && status !== ''
? status
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.fpMethodMap[value] || value;
})
: undefined;
return value ? value.join(';') : undefined;
}),
field('FP_Method_Distributed__c', state => {
//var status = dataValue('form.treatment_and_tracking.distribution.distributed_treatments')(state);
var status = dataValue('properties.FP_commodity')(state);
var value =
status && status !== ''
? status
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.fpMethodMap[value] || value;
})
: undefined;
return value ? value.join(';') : undefined;
}),
field('Reasons_for_not_taking_FP_method__c', state => {
// var reason = dataValue('form.TT5.Mother_Information.No_FPmethod_reason')(state);
// return reason ? state.reasonMap[reason] : undefined;
var status = dataValue('properties.No_FPmethod_reason')(state);
var value =
status && status !== ''
? status
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.reasonMap[value] || value;
})
: undefined;
return value ? value.join(';') : undefined;
}),
field('Pregnant__c', state => {
var preg = dataValue('properties.Pregnant')(state);
return preg === 'Yes' ? true : false;
}),
field('Counselled_on_FP_Methods__c', state => {
var choice = dataValue(
'properties.CounselledFP_methods'
)(state);
return state.cleanChoice(state, choice);
}),
field('Client_counselled_on__c', state => {
var choices =
dataValue('properties.counsel_topic')(
state
) || dataValue('properties.counsel_topic')(state);
var choiceGroups = choices ? choices.split(' ') : null;
var choicesMulti = choiceGroups
? choiceGroups
.map(cg => {
return state.counselMap[cg];
})
.join(';')
: choiceGroups;
return choicesMulti;
}),
field('Client_provided_with_FP__c', state => {
var choice = dataValue(
'properties.was_the_woman_15-49yrs_provided_with_family_planning_commodities_by_chv'
)(state);
return state.cleanChoice(state, choice);
}),
field(
'Newborn_visited_48_hours_of_delivery__c',
dataValue(
'properties.newborn_visited_48_hours_of_delivery'
)
),
field('Mother_visit_counselling__c', state => {
var choice = dataValue(
'properties.did_you_consel_the_mother_on1'
)(state);
return state.handleMultiSelectOriginal(state, choice);
}),
field(
'mother_visited_48_hours_of_the_delivery__c',
dataValue('properties.visit_mother_48')
),
field('Newborn_visit_counselling__c', state => {
var choice = dataValue(
'properties.did_you_consel_the_mother_on2'
)(state);
return state.handleMultiSelectOriginal(state, choice);
}),
field('Know_HIV_status__c', state => {
var choice = dataValue(
'properties.known_hiv_status'
)(state);
return state.cleanChoice(state, choice);
}),
field('HIV_Status__c', dataValue('properties.hiv_status')),
field('Treatment_Distribution__c', state => {
//var status = dataValue('form.treatment_and_tracking.distribution.distributed_treatments')(state);
var status = dataValue('properties.distributed_treatments')(state);
var value =
status && status !== ''
? status
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.treatmentDistributionMap[value] || value;
})
: undefined;
return value ? value.join(';') : undefined;
}),
field(
'Current_Weight__c',
dataValue('properties.Current_Weight')
),
field(
'Current_Height__c',
dataValue('properties.current_height')
),
field(
'Current_MUAC__c',
dataValue('properties.MUAC')
),
field('Food_groups_3_times_a_day__c',dataValue('properties.food_groups')),
field('Nutrition_Case_Managed__c',dataValue('properties.nutrition_case_managed')),
field('Nutrition_Danger_Signs__c',state => {
var choice = dataValue(
'properties.nutrition_danger_signs'
)(state);
return state.handleMultiSelectOriginal(state, choice);

}),
field('Why_was_nutrition_case_not_managed__c',dataValue('properties.nutrition_case_not_managed_why')),
field('Community_Nutrition_Treatment__c',dataValue('properties.nutrition_treatment_severe')),
field('Community_Nutrition_Treatment__c',dataValue('properties.nutrition_treatment_moderate')),
field('Why_was_nutrition_treatment_not_given__c',dataValue('properties.nutrition_treatment_not_given')),
field('Current_Nutrition_Status__c', state => {
var status = dataValue(
'properties.Nutrition_Status'
)(state);
return status ? state.nutritionMap[status] : undefined;
}),
field('Default_on_TB_treatment__c', state => {
var choice = dataValue(
'properties.default_tb_treatment'
)(state);
return state.cleanChoice(state, choice);
}),
field('Received_pregnancy_test__c', state => {
var choice = dataValue(
'properties.did_you_adminsiter_a_pregnancy_test'
)(state);
return state.cleanChoice(state, choice);
}),
field('Pregnancy_test_result__c', state => {
var choice = dataValue(
'properties.pregnancy_test_result'
)(state);
return state.cleanChoice(state, choice);
}),
field('Chronic_illness__c', state => {
var choice = dataValue(
'properties.please_specify_which_chronic_illness_the_person_has'
)(state);
var choice2 = state.handleMultiSelect(state, choice);
return choice2 ? choice2.replace(/_/g, ' ') : '';
}),
/*field(
'Birth_Certificate__c',
dataValue('form.Status.birth_certificate')
),
field(
'Child_zinc__c',
dataValue(
'form.TT5.Child_Information.Clinical_Services.diarrhea_clinic_treatment_zinc'
)
),
field(
'Child_ORS__c',
dataValue(
'form.TT5.Child_Information.Clinical_Services.diarrhea_clinic_treatment_ORS'
)
),*/
field(
'Childs_breath_per_minute__c',
dataValue('properties.breaths_per_minuite')
),
field(
'Child_chest_in_drawing__c',
dataValue('properties.Child_chest_in_drawing_c')
),
field(
'Caregiver_counseled_on_delayed_milestone__c',
dataValue(
'properties.did_you_counsel_the_caregiver_on_delayed_milestones'
)
),
field(
'Delayed_Milestone__c',
dataValue(
'properties.does_the_child_has_a_delayed_milestone'
)
),
field(
'Child_has_2_or_more_play_items__c',
dataValue(
'properties.does_the_child_has_2_or_more_play_items_at_home'
)
),
field(
'Child_has_3_more_picture_books__c',
dataValue(
'properties.does_the_child_has_3_or_more_picture_books'
)
),
field('Delayed_Milestones_Counselled_On__c', state => {
var ms = dataValue(
'properties.which_delayed_milestone_area_did_you_counsel_the_caregiver_on'
)(state);
return ms ? state.milestoneMap[ms] : undefined;
}),
field('Delayed_Milestone_Type__c', state => {
var ms = dataValue('properties.which_delayed_milestone')(
state
);
return ms ? state.milestoneTypeMap[ms] : undefined;
}),
field(
'Caretaker_trained_in_muac__c',
dataValue('properties.mother_trained_muac')
),
field(
'Caretaker_screened_for_muac_this__c',
dataValue(
'properties.mother_screened_child_muac'
)
),
field(
'Caretaker_muac_findings__c',
dataValue(
'properties.mother_screened_child_muac_result'
)
),
field(
'Caretaker_action_after_muac_screening__c',
dataValue(
'properties.mother_screened_muac_action'
)
),
field(
'of_Caretaker_MUAC_screenings__c',
dataValue('properties.mother_nb_screening')
),
field('Pulse_Oximeter__c', dataValue('properties.pulse_oximeter_available')),
field(
'Heart_Rate_Pulse_Oximeter__c',
dataValue('properties.heart_rate_pulse_oximeter')
),
field(
'Oxygen_Concentration_Pulse_Oximeter__c',
dataValue('properties.oxygen_concentration')
),
field('Can_child_drink__c', dataValue('properties.can_child_drink')),
field(
'Antibiotic_provided_for_fast_breathing__c',
dataValue('properties.antibiotic_fast_breathing')
),
field(
'Antibiotic_provided_for_chest_indrawing__c',
dataValue('properties.antibiotic_chest_indrawing')
),
field('Supervisor_Visit__c', state => {
var check = dataValue('properties.supervisor_visit')(state);
var value =
check && check !== ''
? check
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.supervisorMap[value] || value;
})
: undefined;
return value ? value.join(';') : undefined;
}),
/*
//HMN- 05012023 - Removed field('Visit_Closed_Date__c', dataValue('date_closed')),
//Because I could not find it in Salesforce. It was causing errors on staging
field('Visit_Closed_Date__c', dataValue('date_closed')),
*/
//field('Case_Closed_Date__c', state => {
// var closed = dataValue('date_closed')(state);
// var date = dataValue('date_modified')(state);
// return closed && closed == true ? date : undefined;
// })
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22.html b/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22.html index b1d4322f873..8cb74194801 100644 --- a/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22.html +++ b/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22.html @@ -22,13 +22,13 @@ - +
Skip to main content

Q4 2022] Upsert Supervision - Accompaniment

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, relationship, upsert, upsertIf

Expression

//Job to integrate CommCare 'Accompaniement' form from the Supervision App
fn(state => {
state.handleMultiSelect = function (state, multiField) {
return multiField
? multiField
.replace(/ /g, ';')
: '';
};

state.cleanChoice = function (state, choice) {
if (choice) {
return choice.charAt(0).toUpperCase() + choice.slice(1).replace('_', ' ');
} else {
return '';
}
}

return {
...state
};

});


upsert(
'Supervision_Forms__c',
'CommCare_Form_ID__c',
fields(
field('CommCare_Form_ID__c', dataValue('id')),
relationship('RecordType', 'Name', 'Accompanient Form'),
field('Supervisor_Name__c', dataValue('form.prologue.supervisor_sfid')),
field('CHW_Name__c', dataValue('form.prologue.chw_sfid')),
relationship(
'Village__r',
'CommCare_User_ID__c',
dataValue('form.prologue.chw_village')
),
field('Form_Date__c',dataValue('form.Date')),
field('Fertile_Women_in_Household__c',dataValue('form.WRA_check')),
field('CHW_Asked_About_Family_Planning__c',dataValue('form.women_of_reproductive_age.fp_check')),
field('Contraception_Distributed__c', state => {
var choice = dataValue(
'form.women_of_reproductive_age.fp_resources_check'
)(state);
return state.handleMultiSelect(state, choice);
}),


field('Household_members_aware_of_CHW_SRH__c',dataValue('form.women_of_reproductive_age.srh_awareness_check')),
field('Pregnant_Women_in_HH__c',dataValue('form.pregnancy_check')),
field('CHW_Asked_About_ANC_Visits__c',dataValue('form.pregnant_women.anc_check')),
field('CHW_Counseled_On_Value_of_ANC_Visits__c',dataValue('form.pregnant_women.anc_counsel_check')),
field('CHW_Read_Each_Pregnancy_Danger_Sign__c',dataValue('form.pregnant_women.danger_sign_check')),
field('Household_aware_of_CHW_MCH_Services__c',dataValue('form.pregnant_women.pregnancy_support_awareness_check')),
field('Pregnant_Woman_Delivered__c',dataValue('form.pregnant_women.delivery_check')),
field('Used_MCH_Booklet__c',dataValue('form.delivery.vaccination_check')),
field('Counsel_on_vaccination_schedule__c',dataValue('form.delivery.vaccination_counsel_check')),
field('Counselled_on_Exclusive_Breastfeeding__c',dataValue('form.delivery.ebf_check')),
field('Children_Under_5_in_Household__c',dataValue('form.cu5_check')),
field('All_children_under_5_registered__c',dataValue('form.children_under_5.cu5_enrollment_check')),
field('MUAC_taken_for_all_children__c',dataValue('form.children_under_5.muac_check')),
field('Measured_MUAC_circumference_properly__c',dataValue('form.children_under_5.muac_method_check')),
// field('Measured_MUAC_circumference_properly__c', state => {
// var choice = dataValue(
// 'form.children_under_5.muac_method_check'
// )(state);
// return state.cleanChoice(state, choice);
// }),
field('HIV_Members_in_the_Household__c',dataValue('form.hiv_check')),
field('Recorded_HIV_Status_Information__c',dataValue('form.hiv_clients.hiv_info_check')),
field('Counselled_on_ART_Adherence_HIV_Services__c',dataValue('form.hiv_clients.hiv_counsel_check')),
field('Sick_Household_Members_at_Visit__c',dataValue('form.illness_check')),
field('Household_member_reported_fever__c',dataValue('form.illness_referrals.fever_check')),
field('Conducted_malaria_home_test__c', dataValue('form.illness_referrals.malaria_test_check')),
field('Malaria_test_protocol_followed__c',dataValue('form.illness_referrals.malaria_test_method_check')),
field('Sick_person_referred__c',dataValue('form.illness_referrals.referral_accompaniment_check')),
field('Referral_discussed_with_family__c',dataValue('form.illness_referrals.referral_followup_check')),
field('Distributed_treatments_medications__c',dataValue('form.distribution_check')),
field('Stock_is_full__c',dataValue('form.stocks_check')),
field('Missing_Stock__c', state => {
var choice = dataValue(
'form.missing_stocks_details'
)(state);
return state.handleMultiSelect(state, choice);
}),
field('Other_Missing_Stock__c',dataValue('form.missing_stocks_details_other')),
field('Demonstrated_active_listening__c',dataValue('form.chw_behavior.active_listening_check')),
field('Acted_with_respect_courtesy__c',dataValue('form.chw_behavior.respect_check')),
field('CHW_Rating__c',dataValue('form.chw_behavior.interview_technique_check')),
field('Tablet_used__c',dataValue('form.chw_behavior.tablet_use_check')),
field('Tablet_used_effectively__c',dataValue('form.chw_behavior.tablet_competency_check')),
field('Tablet_problem_observed__c', state => {
var choice = dataValue(
'form.chw_behavior.tablet_issues'
)(state);
return state.handleMultiSelect(state, choice);
}),
field('Visit_Length_Mins__c',dataValue('form.visit_length')),
field('Accompanient_components_covered__c', state => {
var choice = dataValue(
'form.feedback_type'
)(state);
return state.handleMultiSelect(state, choice);
}),
field('Other_comments__c',dataValue('form.supervisor_comments')),
field('Contraception_Distributed__c', state => {
var choice = dataValue(
'form.women_of_reproductive_age.fp_resources_check'
)(state);
return state.handleMultiSelect(state, choice);
}),
)
);

upsertIf(
state.data.form.prologue.hh_code !== '' &&
state.data.form.prologue.hh_code !== null,
'Supervision_Forms__c',
'CommCare_Form_ID__c',
relationship('Household_Code__r',
'Name',
dataValue('form.prologue.hh_code')
)
);
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19.html b/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19.html index 08249affd4f..32865d50d41 100644 --- a/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19.html +++ b/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19.html @@ -22,13 +22,13 @@ - +
Skip to main content

Q4 2022] Upsert Supervision - Feedback

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, relationship, upsert

Expression

//Job to integrate CommCare 'Feedback' form from the Supervision App

upsert(
'Supervision_Forms__c',
'CommCare_Form_ID__c',
fields(
field('CommCare_Form_ID__c', dataValue('id')),
relationship('RecordType', 'Name', 'Feedback Form'),
field('Supervisor_Name__c', dataValue('form.prologue.supervisor_sfid')),
field('CHW_Name__c', dataValue('form.prologue.chw_sfid')),
relationship(
'Village__r',
'CommCare_User_ID__c',
dataValue('form.prologue.chw_village')
),
relationship('Catchment__r',
'Name',
dataValue('form.prologue.catchment')
),
field('Form_Date__c',dataValue('form.Date')),
field('Strengths__c', dataValue('form.chw_perspectives_and_reflections.chw_strengths')),
field('Weaknesses__c', dataValue('form.chw_perspectives_and_reflections.chw_improvement_areas')),
field('Challenges__c', dataValue('form.chw_perspectives_and_reflections.chw_challenges')),
field('Solutions__c', dataValue('form.chw_perspectives_and_reflections.chw_improvement_areas')),
field('of_Household_Visit_As_Expected__c', dataValue('form.supervision_dashboard_feedback.hh_visits_check')),
field('of_Household_Visit_Explanation__c',dataValue('form.supervision_dashboard_feedback.hh_visits_explanation')),
field('of_Priority_Clients_as_Expected__c', dataValue('form.supervision_dashboard_feedback.priority_hh_visits_check')),
field('of_Priority_Clients_Explanation__c',dataValue('form.supervision_dashboard_feedback.priority_hh_visits_explanation')),
field('Feedback_on_Indicators__c',dataValue('form.supervision_dashboard_feedback.chw_sd_feedback')),
field('CHW_Strengths__c',dataValue('form.supervisor_perspectives_and_reflections.chw_strengths_supervisor')),
field('CHW_Areas_for_Improvement__c',dataValue('form.supervisor_perspectives_and_reflections.chw_improvement_areas_supervisor')),
field('CHW_Immediate_Solutions__c',dataValue('form.supervisor_perspectives_and_reflections.chw_solutions_supervisor')),
field('Other_Recommendations__c',dataValue('form.supervisor_perspectives_and_reflections.chw_recommendation_other_supervisor')),
)
);
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24.html b/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24.html index f060d404f3a..1e6f6dd7b25 100644 --- a/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24.html +++ b/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24.html @@ -22,13 +22,13 @@ - +
Skip to main content

Q4 2022] Upsert Supervision - Household Spot Check

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: Q4 2022] Upsert Supervision - Household Spot Check
  • Adaptor: @openfn/language-salesforce
  • Adaptor Version: latest
  • Created about 1 year ago
  • Updated 4 months ago
  • Score: 18 (an indicator of how useful this job may be)

Key Functions

dataValue, field, fields, relationship, upsert, upsertIf

Expression

//Job to integrate CommCare 'Household Spotcheck' form from the Supervision App
fn(state => {
state.handleMultiSelect = function (state, multiField) {
return multiField
? multiField
.replace(/ /g, ';')
: '';
};
return {
...state
};
});


upsert(
'Supervision_Forms__c',
'CommCare_Form_ID__c',
fields(
field('CommCare_Form_ID__c', dataValue('id')),
relationship('RecordType', 'Name', 'Household Spotcheck Form'),
// relationship('Household_Code__r',
//'Name',
//dataValue('form.prologue.hh_code')
// ),
field('Supervisor_Name__c', dataValue('form.prologue.spot_checker_sfid')),
field('CHW_Name__c', dataValue('form.prologue.chw_sfid')),
relationship(
'Village__r',
'CommCare_User_ID__c',
dataValue('form.prologue.village')
),
relationship('Catchment__r',
'Name',
dataValue('form.prologue.catchment')
),
field('Form_Date__c',dataValue('form.Date')),
field('CHW_Name_Identified__c',dataValue('form.chw_awareness.chw_name_reported')),
field('Knows_where_CHW_lives__c',dataValue('form.chw_awareness.chw_location_confirmation')),
field('Knows_CHW_contact_number__c',dataValue('form.chw_awareness.chw_contact_number')),
field('CHW_paid_for_services__c',dataValue('form.chw_awareness.service_fee')),
field('CHW_Visit_Frequency__c',dataValue('form.chw_awareness.chw_visit_frequency')),
field('Household_member_reported_fever__c',dataValue('form.iccm.fever_management')),
field('details_on_chw_conduct__c',dataValue('form.chw_behavior.chw_conduct_detail')),
field('Tablet_used__c',dataValue('form.chw_behavior.tablet_use_check')),
field('Other_Recommendations__c',dataValue('form.community_comments.community_recommendations_detail')),
field('Other_comments__c',dataValue('form.community_comments.do_you_have_any_other_comments_at_this_time')),
field('CHW_tested_treated_child_for_malaria__c',dataValue('form.iccm.malaria_management')),
field('If_so_when_Within_the__c',dataValue('form.iccm.malaria_management_timeline')),
field('CHW_ever_managed_your_child_for_diarrhea__c',dataValue('form.iccm.diarrhea_management')),
field('CHW_measured_child_s_arm_past_90_days__c',dataValue('form.iccm.muac_check')),
field('CHW_ever_managed_child_for__c',dataValue('form.iccm.pneumonia_management')),
field('rate_the_quality_of_services__c',dataValue('form.iccm.chw_service_quality')),
field('CHW_revisit__c',dataValue('form.referrals_and_follow-up_visits.follow_up_check_1')),
field('follow_up_within_3_days_of_initial_visit__c',dataValue('form.referrals_and_follow-up_visits.follow_up_check_2')),
field('does_CHW_revisit_child_for_follow_up__c',dataValue('form.referrals_and_follow-up_visits.follow_up_check_3')),
field('when_child_is_sick__c',dataValue('form.referrals_and_follow-up_visits.follow_up_check_4')),
field('CHW_conduct__c',dataValue('form.chw_behavior.chw_conduct_check')),
field('comfortable_sharing_sensitive_info__c',dataValue('form.chw_behavior.sensitive_info_check')),
field('Please_explain__c',dataValue('form.chw_behavior.sensitive_info_detail')),
field('Does_your_CHW_listen_to_your_perspective__c',dataValue('form.chw_behavior.listening_check')),
field('ever_experienced_a_problem_with_CHW__c', dataValue('form.chw_behavior.problem_check')),
field('describe_problem_experienced_with_CHW__c',dataValue('form.chw_behavior.problem_detail')),
field('any_recommendations_for_impr__c',dataValue('form.community_comments.community_recommendations')),
field('How_was_the_fever_managed__c', state => {
var choice = dataValue(
'form.iccm.fever_management_detail'
)(state);
return state.handleMultiSelect(state, choice);
}),
field('How_was_the_malaria_managed__c', state => {
var choice = dataValue(
'form.iccm.malaria_management_detail'
)(state);
return state.handleMultiSelect(state, choice);
}),
field('How_did_she_he_manage_the_diarrhea__c', state => {
var choice = dataValue(
'form.iccm.malaria_management_detail'
)(state);
return state.handleMultiSelect(state, choice);
}),
field('How_did_she_he_manage_the_pneumonia__c', state => {
var choice = dataValue(
'form.iccm.pneumonia_managemnt_detail'
)(state);
return state.handleMultiSelect(state, choice);
}),
field('COHORT_ONE_Maternal_and_Child_Health__c', state => {
var choice = dataValue(
'form.chw_service_provision.cohort_one'
)(state);
return state.handleMultiSelect(state, choice);
}),
field('COHORT_TWO_Childcare__c', state => {
var choice = dataValue(
'form.chw_service_provision.cohort_two'
)(state);
return state.handleMultiSelect(state, choice);
}),
field('COHORT_THREE_WASH_and_Nutrition__c', state => {
var choice = dataValue(
'form.chw_service_provision.cohort_three'
)(state);
return state.handleMultiSelect(state, choice);
}),
field('COHORT_FOUR_FIVE_Sexual_Reproductive__c', state => {
var choice = dataValue(
'form.chw_service_provision.cohort_four_-_five'
)(state);
return state.handleMultiSelect(state, choice);
}),
)
);

upsertIf(
state.data.form.prologue.hh_code !== '' &&
state.data.form.prologue.hh_code !== null,
'Supervision_Forms__c',
'CommCare_Form_ID__c',
relationship('Household_Code__r',
'Name',
dataValue('form.prologue.hh_code')
)
);
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02.html b/adaptors/library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02.html index fdfe44da577..e272945b004 100644 --- a/adaptors/library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02.html +++ b/adaptors/library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02.html @@ -22,13 +22,13 @@ - +
Skip to main content

Register Participant - V2 Skillz

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

alterState, dataPath, dataValue, each, field, fields, lastReferenceValue, map, merge, query, relationship, upsert, Array

Expression

query(`SELECT Id, Name, CommCare_Ext_ID__c FROM Event__c WHERE CommCare_Case_ID__c = '${state.data.form.case['@case_id']}'`);

alterState(state => {
// Note: lastReferenceValue selects the first item in the references array.
state.data.eventName = lastReferenceValue('records[0].CommCare_Ext_ID__c')(state);

function objectToArray(object) {
return !Array.isArray(object) ? [object] : object;
}

// if (state.data.form.question1) {
// console.log('Ensuring that "question1" is an array.');
// state.data.form.question1 = objectToArray(state.data.form.question1);
// } else {
// console.log('Shifting "new_participants" to "question1" array.');
// state.data.form.question1 = objectToArray(state.data.form.new_participants);
// console.log('Creating a "case" object inside each item in that array.');
// state.data.form.question1 = state.data.form.question1.map(item => ({
// ...item,
// case: item.create_skillz_plus_participant.case,
// }));
// }

console.log('Done with initial data manipulation.');

return state;
});

// beta.each(
// merge(
// dataPath('form.question1[*]'),
// fields(
// field('intervention_notes_to_save', dataValue('form.intervention_notes_to_save')))
// ),

upsert(
'Person__c',
'Participant_Identification_Number_PID__c',
fields(
field('Notes__c', dataValue('form.intervention_notes_to_save')),
field('First_Name__c', dataValue('form.new_participants.participant_first_name')),
field('Surname__c', dataValue('form.new_participants.participant_surname')),
relationship('RecordType', 'Name', 'Participant'),
field('Participant_Identification_Number_PID__c', state => state.data.form.new_participants.create_skillz_plus_participant.case['@case_id']),
field('Sex__c', dataValue('gender')),
field('Mobile_Number_1__c', dataValue('form.new_participants.mobile_number')), //QUESTION: In CommCare, phone doesn't look like it's saving?
field('School_name_person__c', dataValue('form.new_participants.school_name')),
field('Date_of_Birth__c', dataValue('date_of_birth')),
field('School_name_person__c', dataValue('form.new_participants.school_name')),
field('Physical_Address__c', dataValue('form.new_participants.participants_home_address'))
//field('Age__c', dataValue('form.question1.age_in_years')), //This is a SF formula field, cannot map
)
)
//);

// each(
// merge(dataPath('form.question1[*]'), fields(
// field('intervention_name', dataValue('form.intervention_name')),
// field('eventName', dataValue('eventName')))),
upsert(
'Attendance__c',
'CommCare_Ext_ID__c',
fields(
field('CommCare_Ext_ID__c', state => {
var eventid = `${state.data.eventName}` || dataValue('form.intervention_name')(state);
var personid = state.data.form.new_participants.create_skillz_plus_participant.case['case_id'];//state.data.case['@case_id'];
return personid + '-' + eventid;
}),
relationship(
//Attendance looks up to Persn via the case_id
'Person_Attendance__r',
'Participant_Identification_Number_PID__c',
state => state.data.case['@case_id']
),
relationship(
//Attendance looks up to Event via the intervention_name
'Event__r',
'CommCare_Case_ID__c',
state.data.form.new_participants.create_skillz_plus_participant.case.index.parent['#text']
),
field('Date_of_Birth__c', dataValue('form.new_participants.date_of_birth'))
)
)
//);
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Register-Patient-2021-03-02.html b/adaptors/library/jobs/auto/Register-Patient-2021-03-02.html index f224334d930..049695c232a 100644 --- a/adaptors/library/jobs/auto/Register-Patient-2021-03-02.html +++ b/adaptors/library/jobs/auto/Register-Patient-2021-03-02.html @@ -22,13 +22,13 @@ - +
Skip to main content

Register Patient

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

appendValues, JSON

Expression

appendValues({
spreadsheetId: '1EFkY4zD4qqxnJdH-QaeasKd1zXC-1sNKpEg08W-3sT0',
range: 'COVID-19 Cases!A2',
values: state => {
const kobo = state.data.body;

console.log('Submission data: ' + JSON.stringify(kobo, null, 2));

return [
[
kobo['National_ID'],
kobo['Patient_name'],
kobo['Last_Name_of_Patient'],
kobo['Sex'],
kobo['Age'],
kobo['Comments'],
Date(),
],
];
},
});
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Registration-forms-new-case-2023-06-22.html b/adaptors/library/jobs/auto/Registration-forms-new-case-2023-06-22.html index b6503f0e604..ddc5da599dd 100644 --- a/adaptors/library/jobs/auto/Registration-forms-new-case-2023-06-22.html +++ b/adaptors/library/jobs/auto/Registration-forms-new-case-2023-06-22.html @@ -22,13 +22,13 @@ - +
Skip to main content
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Request-Vitas-Sync-2021-05-11.html b/adaptors/library/jobs/auto/Request-Vitas-Sync-2021-05-11.html index ae1b0618fc8..24b43371a43 100644 --- a/adaptors/library/jobs/auto/Request-Vitas-Sync-2021-05-11.html +++ b/adaptors/library/jobs/auto/Request-Vitas-Sync-2021-05-11.html @@ -22,13 +22,13 @@ - +
Skip to main content

Request Vitas Sync

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

alterState, dataPath, dataValue, each, post

Expression

alterState(state => {
const vitasSystemsToCheck = [
'vitas-1',
'thatMinistry-vitas-7',
'3',
'4',
'5',
]
return { ...state, data: { vitasSystemsToCheck } };
});

each(
dataPath('vitasSystemsToCheck[*]'),
post(state.configuration.inboxUrl, {
body: { "db": dataValue('database-id') },
})
);
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27.html b/adaptors/library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27.html index 4d8767b5d56..35b2e9f04a6 100644 --- a/adaptors/library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27.html +++ b/adaptors/library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27.html @@ -22,13 +22,13 @@ - +
Skip to main content

Risk and Vulnerability Assessment

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

alterState, dataValue, field, fields, join, map, upsert

Expression

// Your job goes here. Testing github
alterState(state => {
function checked(key, str) {
if (!str) return false;
return str.toString().split(' ').indexOf(key) >= 0;
}

function capitalizeFirstLetter(str) {
if (!str) return;
let new_str = str.toString().toLowerCase();
return new_str.slice(0, 1).toUpperCase() + new_str.slice(1);
}

function transformDont(str) {
if (!str) return str;
return str
.toString()
.split('_')
.map(word => word.replace(/dont/i, "don't"))
.join('_')
.toString()
.trim();
}

function transformCant(str) {
if (!str) return str;
return str
.toString()
.split('_')
.map(word => word.replace(/cant/i, "can't"))
.join('_')
.toString()
.trim();
}

function splitAndJoin(str, splitDelimiter, joinDelimiter) {
if (!str) return;

return str.toString().split(splitDelimiter).join(joinDelimiter).toString().trim();
}

function transformHowOften(str) {
if (!str) return;
if (str === 'special_occasions') return 'Special Occasions';
return transformGenericText(str).toString().trim();
}

function transformHIVStatus(status) {
switch (status) {
case 'yes_negative':
return 'Yes,Negative';
case 'yes_positive':
return 'Yes,Positive';
case 'no_i_dont':
return "No,I don't know";
case 'yes_dont_want_to_disclose':
return "Yes, don't want to disclose";
default:
return;
}
}

function transformLastTested(str) {
if (!str) return;
switch (str.toString()) {
case 'yes_negative':
return 'Yes,Negative';
case 'yes_positive':
return 'Yes,Positive';
case 'no_i_dont':
return "No,I don't know";
case 'yes_dont_want_to_disclose':
return "Yes, don't want to disclose";
default:
return;
}
}

function transformMonthAgo(str) {
if (!str) return;
switch (str) {
case 'month_ago':
return '1 month ago';
case 'months_ago':
return '3 months ago';
case 'month_ago':
return 'copy-1-of-months_ago ';
case 'month_ago':
return '6 months ago';
case 'a_year_or_more_ago':
return 'A year or more';
default:
return;
}
}

function transformGenericText(str) {
if (!str) return;
return capitalizeFirstLetter(splitAndJoin(transformDont(str), '_', ' '))
.toString()
.trim();
}

function transformRange(range) {
if (!range) return;
return range
.toString()
.replace(/\d_\d/i, match => match.replace('_', '-'))
.toString()
.trim();
}

function transformAgeRange(range) {
if (!range) return;
if (range === '10_years') return '< 10 years';
if (range === 'greater_than_19') return '> 19 years';
return capitalizeFirstLetter(transformDont(transformCant(splitAndJoin(transformRange(range), '_', ' '))))
.toString()
.trim();
}

function transformAbuseExperienced(str) {
if (!str) return;
return str
.split(' ')
.map(word => capitalizeFirstLetter(word))
.join(' ')
.toString()
.trim();
}

function getAge(dateString) {
if (!dateString) return;

const today = new Date();
const birthDate = new Date(dateString);
var age = today.getFullYear() - birthDate.getFullYear();
var m = today.getMonth() - birthDate.getMonth();
if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
age--;
}
return age;
}

state.data.perform_a_risk_assessment = state.data.form.do_you_want_to_perform_a_risk_assessment === 'yes';

state.data.complete_service_referrals = state.data.form.referral_services ? true : false;

state.data.form.hidden_properties.gender =
capitalizeFirstLetter(state.data.form.hidden_properties.gender);

state.helperFunctions = {
checked,
transformAgeRange,
transformHIVStatus,
transformLastTested,
transformMonthAgo,
transformGenericText,
transformDont,
splitAndJoin,
transformHowOften,
transformAbuseExperienced,
getAge,
};
return state;
});

upsert(
'Risk_Assessment__c',
'CommCare_Ext_ID__c',
fields(
field('CommCare_Ext_ID__c', dataValue('id')),
field('Date__c', dataValue('form.date')),
field('Participant_Name__c', state => {
var firstname = state.data.form.hidden_properties.praticipant_first_name;
var lastname = state.data.form.hidden_properties.participant_surname;
return firstname + ' ' + lastname;
}),
field('Participant_Age__c', state => {
const dob = dataValue('form.hidden_properties.date_of_birth')(state);

return state.helperFunctions.getAge(dob);
}),
field('Participant_Sex__c', dataValue('form.hidden_properties.gender')),
field('X1_0_Sexually_Active_past_12_month__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.sexual_risk_and_pregnancy.sexually_active_12_months')(state)
)
),
field('X1_1_Age_at_first_sex__c', state =>
state.helperFunctions.transformAgeRange(
dataValue('form.sexual_risk_and_pregnancy.age_at_first_sex')(state)
)
),
field('X1_2_Have_you_ever_had_unprotected_sex__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.sexual_risk_and_pregnancy.have_you_ever_had_unprotected_sex')(state)
)
),
field('X1_3_Sex_for_monetary_or_material_benefi__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.sexual_risk_and_pregnancy.sex_monetary_material')(state)
)
),
field('Do_you_know_your_HIV_status__c', state =>
state.helperFunctions.transformHIVStatus(
dataValue('form.sexual_risk_and_pregnancy.hiv_status.do_you_know_your_hiv_status')(state)
)
),
field('X2_1_When_last_did_you_test_for_HIV__c', state =>
state.helperFunctions.transformMonthAgo(
dataValue('form.sexual_risk_and_pregnancy.hiv_status.when_last_did_you_test_for_hiv')(state)
)
),
field('X2_2_Are_you_on_treatment_ART__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.sexual_risk_and_pregnancy.hiv_status.are_you_on_treatment_art')(state)
)
),
field('X3_0_Had_an_STI_in_the_last_12months_yea__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.hiv_last_12_months')(state)
)
),
field('X3_1_Past_12_months_sex_HIV_status_part__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.knowing_partners_hiv_status')(state)
)
),
//PENDING Donny change data type in SF
// field('X4_0_Forms_of_abuse_experienced_before__c', state =>
// state.helperFunctions.transformAbuseExperienced(
// dataValue('form.risk_assessment.gender_based_violence.abuse_experienced')(state)
// )
// ),
field('X4_1_Feel_unsafe_any1_interact_with_ofte__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.gender_based_violence.unsafe_with_others')(state)
)
),
field('X4_2_Of_what_relationship_person_to_you__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.gender_based_violence.relationship_of_abuser')(state)
)
),
field('X5_0_Do_you_take_alcohol_or_drugs__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.gender_based_violence.drugs_and_alcohol_use.do_you_take_alcohol_andor_drugs')(state)
)
),
field('X5_1_On_average_how_often_drink_alcohol__c', state =>
state.helperFunctions.transformHowOften(
dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.gender_based_violence.drugs_and_alcohol_use.how_often_alcohol')(state)
)
),
field('X5_2_On_average_how_often_take_drugs__c', state =>
state.helperFunctions.transformHowOften(
dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.gender_based_violence.drugs_and_alcohol_use.how_often_drugs')(state)
)
),
field('X5_3_Easy_for_teens_to_obtain_alcohol__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.gender_based_violence.drugs_and_alcohol_use.alcohol_19')(state)
)
),
field('X5_4__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.gender_based_violence.drugs_and_alcohol_use.illegal_drugs_19')(state)
)
)
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30.html b/adaptors/library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30.html index 061861e2c81..f3c3d89133d 100644 --- a/adaptors/library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30.html +++ b/adaptors/library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert ART Adherence Self-Reporting Tool

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

alterState, dataValue, field, fields, upsert

Expression

// Push to production
alterState(state => {

function getAge(dateString) {
if (!dateString) return;

const today = new Date();
const birthDate = new Date(dateString);
var age = today.getFullYear() - birthDate.getFullYear();
var m = today.getMonth() - birthDate.getMonth();
if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
age--;
}
return age;
}

function transform(value) {
if (!value) return;
switch (value.toString().trim()) {
case 'i_dont_know__i_dont_recall':
return "I don't know/I don't recall";
case 'i_dont_recall':
return "I don't know/I don't recall";
case 'no':
return 'No';
case 'yes':
return 'Yes';
case 'na':
return 'NA';
case 'disagree':
return '2 (Disagree)';
case 'agree':
return '4 (Agree)';
case 'neither_agree_or_disagree':
return '3 (Neither Agree or Disagree)';
case 'strongly_agree':
return '5 (Strongly Agree)';
case 'strongly_disagree':
return '1 (Strongly Disagree)';
case 'sure':
return '4 (Agree)';
case 'very_sure':
return '5 (Strongly Agree)';
case 'i_dont_know':
return 'I dont know';
case 'suppressed':
return 'Suppressed';
case 'unsuppressed':
return 'Unsuppressed';
default:
return value;
}
}

state.helperFunctions = { getAge };

state.data.form.behavioural.are_you_taking_any_other_religious_treatment_ie_holy_water_anointing_oilwat =
transform(state.data.form.behavioural.are_you_taking_any_other_religious_treatment_ie_holy_water_anointing_oilwat)

state.data.form.behavioural.are_you_taking_any_traditional_medicine_as_a_supplement_to_the_arvs =
transform(state.data.form.behavioural.are_you_taking_any_traditional_medicine_as_a_supplement_to_the_arvs)

state.data.form.behavioural.if_yes_to_any_of_the_above_did_it_affect_your_taking_of_medication_treatmen =
transform(state.data.form.behavioural.if_yes_to_any_of_the_above_did_it_affect_your_taking_of_medication_treatmen)

state.data.form.behavioural.in_the_past_month_did_you_go_for_a_party_or_other_leisure_activities =
transform(state.data.form.behavioural.in_the_past_month_did_you_go_for_a_party_or_other_leisure_activities)

state.data.form.behavioural.in_the_past_month_did_you_sleep_away_from_home =
transform(state.data.form.behavioural.in_the_past_month_did_you_sleep_away_from_home)

state.data.form.clinical_knowledge.do_you_know_your_cd4_count =
transform(state.data.form.clinical_knowledge.do_you_know_your_cd4_count)

state.data.form.clinical_knowledge.question16 =
transform(state.data.form.clinical_knowledge.question16)

state.data.form.clinical_knowledge.do_you_know_your_viral_load =
transform(state.data.form.clinical_knowledge.do_you_know_your_viral_load)

state.data.form.clinical_knowledge.when_did_you_last_go_for_these_two_clinical_tests =
transform(state.data.form.clinical_knowledge.when_did_you_last_go_for_these_two_clinical_tests)

state.data.form.treatment_adherence.did_you_encounter_any_challenges_in_taking_your_medication_as_prescribed_in =
transform(state.data.form.treatment_adherence.did_you_encounter_any_challenges_in_taking_your_medication_as_prescribed_in)

state.data.form.treatment_adherence.in_the_past_month_have_you_failed_to_take_any_of_your_art_treatment =
transform(state.data.form.treatment_adherence.in_the_past_month_have_you_failed_to_take_any_of_your_art_treatment)

state.data.form.treatment_adherence.in_the_past_month_have_you_taken_any_of_your_art_treatment_at_times_other_t =
transform(state.data.form.treatment_adherence.in_the_past_month_have_you_taken_any_of_your_art_treatment_at_times_other_t)

state.data.form.treatment_adherence.in_the_past_month_have_you_taken_less_or_more_pills_of_any_of_your_art_trea =
transform(state.data.form.treatment_adherence.in_the_past_month_have_you_taken_less_or_more_pills_of_any_of_your_art_trea)

state.data.form['treatment_self-efficacy'].how_sure_are_you_that_you_will_be_taking_your_medication_as_are_directed = how_sure_are_you_that_you_will_be_taking_your_medication_as_are_directed =
transform(state.data.form['treatment_self-efficacy'].how_sure_are_you_that_you_will_be_taking_your_medication_as_are_directed)

state.data.form['treatment_self-efficacy'].how_sure_are_you_that_your_medication_will_have_a_positive_effect_on_your_h =
transform(state.data.form['treatment_self-efficacy'].how_sure_are_you_that_your_medication_will_have_a_positive_effect_on_your_h)

state.data.form['treatment_self-efficacy'].how_sure_are_you_that_your_medication_will_help_you_live_a_longer_and_healt =
transform(state.data.form['treatment_self-efficacy'].how_sure_are_you_that_your_medication_will_help_you_live_a_longer_and_healt)

state.data.form.clinical_knowledge.question16 =
transform(state.data.form.clinical_knowledge.question16)

state.data.form.clinical_knowledge.when_did_you_last_have_your_clinical_test =
state.data.form.clinical_knowledge.when_did_you_last_have_your_clinical_test ? transform(state.data.form.clinical_knowledge.when_did_you_last_have_your_clinical_test)
: transform(state.data.form.clinical_knowledge.when_did_you_last_go_for_these_two_clinical_tests);

return state;
});



upsert(
'ART_ADHERENCE_SELF_SELF_REPORTING_TOOL__c',
'CommCare_Ext_ID__c',
fields(
field('CommCare_Ext_ID__c', dataValue('id')),
field('Date__c', dataValue('form.demographic_information.date')),
field('Sex__c', dataValue('form.gender')),
field('Facility_Name__c', dataValue('form.school')),
field('Patient_ID_or_Facility_File_Number__c', dataValue('form.skillz_lplus_number')),
//field('Business_Unit__c', 'GRS Zambia'),
field('Captured_By__c', dataValue('form.coach_name')),
field('Verified_By__c', dataValue('form.coach_name')),
field('Captured_Date__c', dataValue('form.demographic_information.date')),
field('Verified_Date__c', dataValue('form.demographic_information.date')),
field('Age__c', state => {
const dob = dataValue('form.date_of_birth')(state);
return state.helperFunctions.getAge(dob);
}),
field(
'Treatment_Adherence_3__c',
dataValue('form.treatment_adherence.in_the_past_month_have_you_taken_any_of_your_art_treatment_at_times_other_t')
),
field(
'Treatment_Adherence_2__c',
dataValue('form.treatment_adherence.in_the_past_month_have_you_failed_to_take_any_of_your_art_treatment')
),
field(
'Treatment_Adherence_4__c',
dataValue('form.treatment_adherence.in_the_past_month_have_you_taken_less_or_more_pills_of_any_of_your_art_trea')
),
field(
'Treatment_Adherence_5_a__c',
dataValue('form.treatment_adherence.did_you_encounter_any_challenges_in_taking_your_medication_as_prescribed_in')
),


field('Clinical_Knowledge_2__c', dataValue('form.clinical_knowledge.question16')),
field(
'Clinical_Knowledge_1__c',
dataValue('form.clinical_knowledge.when_did_you_last_have_your_clinical_test')
),
field(
'Treatment_Self_Efficacy__c',
dataValue('form.treatment_self-efficacy.how_sure_are_you_that_you_will_be_taking_your_medication_as_are_directed')
),
field(
'Treatment_Self_Efficacy_10__c',
dataValue(
'form.treatment_self-efficacy.how_sure_are_you_that_your_medication_will_have_a_positive_effect_on_your_h'
)
),
field(
'Treatment_Self_Efficacy_11__c',
dataValue(
'form.treatment_self-efficacy.how_sure_are_you_that_your_medication_will_help_you_live_a_longer_and_healt'
)
),
field(
'Behavioural_Factors_12__c',
dataValue('form.behavioural.in_the_past_month_did_you_go_for_a_party_or_other_leisure_activities')
),
field('Behavioural_Factors_13__c', dataValue('form.behavioural.in_the_past_month_did_you_sleep_away_from_home')),
field(
'Behavioural_Factors_14__c',
dataValue('form.behavioural.are_you_taking_any_traditional_medicine_as_a_supplement_to_the_arvs')
),
field(
'Behavioural_Factors_14__c',
dataValue('form.behavioural.are_you_taking_any_other_religious_treatment_ie_holy_water_anointing_oilwat')
),
field(
'Behavioural_Factors_15__c',
dataValue('form.behavioural.if_yes_to_any_of_the_above_did_it_affect_your_taking_of_medication_treatmen')
)
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30.html b/adaptors/library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30.html index a2baf39b767..464925acd4c 100644 --- a/adaptors/library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30.html +++ b/adaptors/library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Aggregate Service Referrals

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, relationship, upsert

Expression

// Push to production
upsert(
'GRS_Referral_Agg__c',
'CommCare_Ext_ID__c',
fields(
relationship(
'SiteName__r',
'CommCare_Ext_ID__c',
dataValue('form.general_referral_information.event_information.site')
),
field('CommCare_Ext_ID__c', dataValue('form.general_referral_information.event_information.site')),
//TO DO
//field('Business_Unit__c', dataValue('form.general_referral_information.event_information.business_unit')),
field('Business_Unit__c', state => {
const bu = dataValue('form.general_referral_information.event_information.business_unit')(state);
return bu==='65680f0c4c144b03ad0f86bdc46c1ebc' ? 'GRS Zambia' :
bu==='04d98397e28046118fade28ced6b65cb' ? 'GRS Zimbabwe' :
bu==='ed125ab19ec34aacab79585e59eb76f4' ? 'GRS Partnerships': undefined ;
}),
relationship(
//Attendance looks up to Event via the intervention_name
'Events__r',
'CommCare_Ext_ID__c',
dataValue('form.general_referral_information.event_information.event_name')
),
field('Type_of_Referral__c', dataValue('form.general_referral_information.type_of_referral')),
field(
'Enter_Partner_s_Name__c',
dataValue('form.general_referral_information.partner_or_organization_referred_to')
),
field('Males_Referred_HIV_Testing__c', dataValue('form.hivsti_services.males_referred_for_hiv_testing')),
field('Males_referred_for_STI_Screening__c', dataValue('form.hivsti_services.males_referred_for_sti_screening')),
field('Males_Referred_for_PEP__c', dataValue('form.hivsti_services.males_referred_for_pep')),
field('Males_Referred_for_PrEP__c', dataValue('form.hivsti_services.males_referred_for_prep')),
field('Males_Referred_for_VMMC__c', dataValue('form.hivsti_services.males_referred_for_vmmc')),
field('Females_Referred_for_HIV_Testing__c', dataValue('form.hivsti_services.females_referred_for_hiv_testing')),
field(
'Females_Referred_for_STI_Screening__c',
dataValue('form.hivsti_services.females_referred_for_sti_screening')
),
field('Date_Referred__c', dataValue('form.general_referral_information.date_referred')),
field('Females_Referred_for_PEP__c', dataValue('form.hivsti_services.females_referred_for_pep')),
field('Females_Referred_for_PrEP__c', dataValue('form.hivsti_services.females_referred_for_prep')),
field('Males_Referred_for_ART__c', dataValue('form.art_services.males_referred_for_art')),
field('Males_Referred_for_SKILLZ_Club__c', dataValue('form.art_services.males_referred_for_skillz__club')),
field('Females_Referred_for_ART__c', dataValue('form.art_services.females_referred_for_art')),
field('Females_Referred_SKILLZ_Club__c', dataValue('form.art_services.females_referred_for_skillz__club')),
field('Females_Referred_for_PMTCT__c', dataValue('form.art_services.females_referred_for_pmtct')),

field(
'Males_Referred_for_Psycho_Social_Support__c',
dataValue('form.psycho_-_social_services.males_referred_for_psycho-social_support')
),
field(
'Females_Referred_Psycho_Social_Support__c',
dataValue('form.psycho_-_social_services.females_referred_for_psycho-social_support')
),
field('Males_Referred_for_TB_Screening__c', dataValue('form.tb_services.males_referred_for_tb_screening')),
field('Females_Referred_for_TB_Screening__c', dataValue('form.tb_services.females_referred_for_rb_screening')),
field(
'Number_of_Male_Condoms_distributed__c',
dataValue('form.condom_distributions.number_of_male_condoms_distributed')
),
field('Number_of_Male_Condoms_Accessed__c', dataValue('form.condom_distributions.number_of_male_condoms_accessed')),
field(
'Number_of_Female_Condoms_distributed__c',
dataValue('form.condom_distributions.number_of_female_condoms_distributed')
),
field(
'Number_of_Female_Condoms_Accessedx__c',
dataValue('form.condom_distributions.number_of_female_condoms_accessed')
),
field(
'Females_Referred_for_Family_Planning__c',
dataValue('form.other_srhr_services.females_referred_for_family_planning')
),
field(
'Females_Referred_for_Cervical_Cancer__c',
dataValue('form.other_srhr_services.females_referred_for_cervical_cancer')
),
field('Females_Referred_for_Antenatal__c', dataValue('form.other_srhr_services.females_referred_for_antenatal')),
field(
'Males_Referred_for_Malaria_Testing__c',
dataValue('form.other_referral_services.males_referred_for_malaria_testing')
),
field('Males_Referred_for_GBV__c', dataValue('form.other_referral_services.males_referred_for_gbv')),
field(
'Females_Referred_for_Malaria_Testing__c',
dataValue('form.other_referral_services.females_referred_for_malaria_testing')
),
field('Females_Referred_for_GBV__c', dataValue('form.other_referral_services.females_referred_for_gbv')),
field(
'Females_Referred_for_HPV_Vaccine__c',
dataValue('form.other_referral_services.females_referred_for_hpv_vaccine')
)
)
);
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24.html b/adaptors/library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24.html index 86e0c55ec9a..9cec01668e6 100644 --- a/adaptors/library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24.html +++ b/adaptors/library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Attendance Skillz Plus Club

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, each, field, fields, lastReferenceValue, map, query, relationship, upsert, Array

Expression

query(
`SELECT Participant_Identification_Number_PID__c from Person__c where Participant_Identification_Number_PID__c = '${state.data.form.attendance_list.update_participant_cases.item[0]['@id']}'`
);

fn(state => {
const PID = lastReferenceValue('records[0].Participant_Identification_Number_PID__c')(state);

if (!PID) {
console.log(
`Participant not found with Participant_Identification_Number_PID__c: ${state.data.form.attendance_list.update_participant_cases.item[0]['@id']}`
);
return state;
}
return execute(
// Set state.references to event record
query(
`SELECT Id, Name, CommCare_Ext_ID__c FROM Event__c WHERE CommCare_Case_ID__c = '${state.data.form.case['@case_id']}'`
),
// Organise data and keep it safe
fn(state => {
function objectToArray(object) {
if (!object) return [];
return !Array.isArray(object) ? [object] : object;
}

const eventName = lastReferenceValue('records[0].CommCare_Ext_ID__c')(state);
state.data.eventName = eventName;

state.data.form.attendance_list.update_participant_cases.item = objectToArray(
state.data.form.attendance_list.update_participant_cases.item
);

state.data.form.attendance_list.update_participant_cases.item =
state.data.form.attendance_list.update_participant_cases.item.map(item => ({
...item,
CommCare_Ext_ID__c: `${item['@id']}-${eventName}`,
event_case_id: state.data.form.case['@case_id'],
}));

// Keep our data safe
state.items = state.data.form.attendance_list.update_participant_cases.item;

// Reset references
state.references = [];

return state;
}),
// Set state.references to an array of attendance records for each participant
beta.each(
'$.items[*]',
query(
state => `SELECT CommCare_Ext_ID__c, Session_1__c, Session_2__c, Session_3__c, Session_4__c, Session_5__c, Session_6__c, Session_7__c, Session_8__c, Session_9__c, Session_10__c, Session_11__c, Session_12__c, Session_13__c, Session_14__c, Session_15__c, Session_16__c, Session_17__c, Session_18__c, Session_19__c, Session_20__c, Session_21__c, Session_22__c, Session_23__c,Session_24__c, Session_25__c, Session_26__c, Session_27__c, Session_28__c
FROM Attendance__c
WHERE CommCare_Ext_ID__c = '${state.data.CommCare_Ext_ID__c}'
`
)
),
// Calculate dynamic fields
fn(state => {
state.items = state.items.map(item => {
const record = state.references.find(rec =>
rec.records[0] ? rec.records[0].CommCare_Ext_ID__c === item.CommCare_Ext_ID__c : true
).records[0];

function getSessionValue(present) {
if (!present) return 'U';
switch (present.toString().toLowerCase()) {
case 'yes':
return 'X';
case 'no':
return 'A';
case '':
return 'N';
default:
return 'U';
}
}

function getSessionFieldName(record) {
if (!record || Object.keys(record).length === 0) {
return 'Session_1__c';
}

const fieldName = Object.entries(record)
.filter(rec => rec[1] === null && rec[0] !== 'CommCare_Ext_ID__c')
.sort(function (a, b) {
return a[0].split('_')[1] - b[0].split('_')[1];
})[0][0];

return fieldName;
}

const sessionValue = getSessionValue(item.attendance_session);
const sessionDate = item.date;
const sessionFieldName = getSessionFieldName(record);
const sessionDateFieldName = `Session_${sessionFieldName.split('_')[1]}_Date__c`;

return {
...item,
dynamicFields: {
[sessionFieldName]: sessionValue,
[sessionDateFieldName]: sessionDate,
},
};
});

// Reset state.references
state.references = [];

return state;
}),

// Upsert
beta.each(
'$.items[*]',
upsert('Attendance__c', 'CommCare_Ext_ID__c', state => ({
...fields(
field('CommCare_Ext_ID__c', dataValue('CommCare_Ext_ID__c')),
relationship('Person_Attendance__r', 'Participant_Identification_Number_PID__c', dataValue('@id')),
relationship('Event__r', 'CommCare_Case_ID__c', dataValue('event_case_id'))
),
...state.data.dynamicFields,
}))
)
)(state);
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28.html b/adaptors/library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28.html index 650994e599b..c6424686df8 100644 --- a/adaptors/library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28.html +++ b/adaptors/library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Coach Support Visit (CSV)

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

alterState, dataValue, field, fields, join, map, relationship, upsert

Expression

//openfn.org source
alterState(state => {
function clean(str) {
console.log('str', str);

if (!str) return '';

return str
.split('_')
.map(word => {
let new_word = word.toString().toLowerCase();
return new_word.slice(0, 1).toUpperCase() + new_word.slice(1);
})
.join(' ');
}

if (state.data.form['step_3_-_the_big_5'] !== undefined ){
state.data.form['step_3_-_the_big_5'].faciliation = clean(state.data.form['step_3_-_the_big_5'].faciliation);
}
else{
state.data.form.step_4_comments.for_each_practice_component_describe_what_the_coach_did_well_and_how_the_co.faciliation =
clean(state.data.form.step_4_comments.for_each_practice_component_describe_what_the_coach_did_well_and_how_the_co.faciliation);
}

function transform(value) {
if (!value) return;
switch (value.toString().trim()) {
case 'copy-1-of-excellent':
return 'Excellent';
case 'needs_improvement':
return 'Needs Improvement';
case 'meets_expectations':
return 'Meets Expectations';
case 'excellent':
return 'Excellent';
case 'unsatisfactory':
return 'Unsatisfactory';
case 'exceeds_expectations':
return 'Exceeds Expectations';
default:
return value;
}
}

state.data.form['step_3_-_the_big_5'].builds_personal_connections =
transform(state.data.form['step_3_-_the_big_5'].builds_personal_connections)

state.data.form['step_3_-_the_big_5'].cool_down =
transform(state.data.form['step_3_-_the_big_5'].cool_down)

state.data.form['step_3_-_the_big_5'].creates_safe_space =
transform(state.data.form['step_3_-_the_big_5'].creates_safe_space)

state.data.form['step_3_-_the_big_5'].faciliation =
transform(state.data.form['step_3_-_the_big_5'].faciliation)

state.data.form['step_3_-_the_big_5'].gives_praise =
transform(state.data.form['step_3_-_the_big_5'].gives_praise)

state.data.form['step_3_-_the_big_5'].praise =
transform(state.data.form['step_3_-_the_big_5'].praise)

state.data.form['step_3_-_the_big_5'].preparation =
transform(state.data.form['step_3_-_the_big_5'].preparation)

state.data.form['step_3_-_the_big_5'].shares_accurate_information_about_hivaids_sexual_reproductive_health_and_ri =
transform(state.data.form['step_3_-_the_big_5'].shares_accurate_information_about_hivaids_sexual_reproductive_health_and_ri)

state.data.form['step_3_-_the_big_5'].sparks_vital_conversations =
transform(state.data.form['step_3_-_the_big_5'].sparks_vital_conversations)

state.data.form['step_3_-_the_big_5'].time_management =
transform(state.data.form['step_3_-_the_big_5'].time_management)

state.data.form['step_3_-_the_big_5'].warm_up =
transform(state.data.form['step_3_-_the_big_5'].warm_up)


return state;
});

upsert(
'Coach_Support_Visit__c',
'CommCare_Ext_ID__c',
fields(
field('CommCare_Ext_ID__c', dataValue('id')),
relationship('Coach_Person__r', 'CommCare_Ext_ID__c', state => {
return dataValue('form.step_1_basic_information.select_coach')(state) ||
dataValue('form.step_1_csv_information.select_coach')(state);
}),
relationship('Venue__r', 'CommCare_Ext_ID__c', state => {
return dataValue('form.hidden_properties.venue')(state) ||
dataValue('form.step_1_csv_information.venue')(state);
}),
relationship('Event__r', 'CommCare_Ext_ID__c', state => {
return dataValue('form.hidden_properties.intervention')(state) ||
dataValue('form.step_1_csv_information.intervention')(state);
}),
relationship('Curriculum_Aggregate__r', 'CommCare_Ext_ID__c', state => {
return dataValue('form.hidden_properties.curriculum')(state) ||
dataValue('form.step_1_csv_information.curriculum')(state);
}),
relationship('Site_Lookup__r', 'CommCare_Ext_ID__c', state => {
return dataValue('form.hidden_properties.site')(state) ||
dataValue('form.step_1_csv_information.site')(state);
}),
field('Date__c', dataValue('form.step_2_practice_information.date_of_csv')),
//== TODO: FIx repeated mappings to only reference destination field 1 time ===//
field(
'Accurate_Information__c', state => {
return dataValue('form.step_3_-_the_big_5.shares_accurate_information_about_hivaids_sexual_reproductive_health_and_ri')(state) ||
dataValue(
'form.step_3_the_big_five.question1.shares_accurate_information_about_hivaids_sexual_reproductive_health_and_ri'
)(state);
}),
field('Creates_safe_space__c', state => {
return dataValue('form.step_3_-_the_big_5.creates_safe_space')(state) ||
dataValue('form.step_3_the_big_five.question1.creates_safe_space')(state);

}),
field('Builds_personal_connections__c', state => {
return dataValue('form.step_3_-_the_big_5.builds_personal_connections')(state) ||
dataValue('form.step_3_the_big_five.question1.builds_personal_connections')(state);
}),
field('Gives_praise__c', state => {
return dataValue('form.step_3_-_the_big_5.gives_praise')(state) ||
dataValue('form.step_3_the_big_five.question1.gives_powerful_praise')(state);
}),
field('Sparks_vital_conversations__c', state => {
return dataValue('form.step_3_-_the_big_5.sparks_vital_conversations')(state) ||
dataValue('form.step_3_the_big_five.question1.sparks_vital_conversations')(state);
}),
field('X2_Warm_Up__c', state => {
return dataValue('form.step_3_-_the_big_5.warm_up')(state) ||
dataValue(
'form.step_4_comments.for_each_practice_component_describe_what_the_coach_did_well_and_how_the_co.warm_up'
)(state);
}),
field('X3_Activity__c', state => {
return dataValue('form.step_3_-_the_big_5.activity')(state) || dataValue(
'form.step_4_comments.for_each_practice_component_describe_what_the_coach_did_well_and_how_the_co.activity'
)(state);
}),
field('X4_Cool_Down__c', state => {
return dataValue('form.step_3_-_the_big_5.cool_down')(state) || dataValue(
'form.step_4_comments.for_each_practice_component_describe_what_the_coach_did_well_and_how_the_co.cool_down'
)(state);
}),
field('X5_Facilitation__c', state => {
return dataValue('form.step_3_-_the_big_5.faciliation')(state) ||
dataValue(
'form.step_4_comments.for_each_practice_component_describe_what_the_coach_did_well_and_how_the_co.faciliation'
)(state);
}),
field(
'X6_Time_Management__c',
dataValue('form.step_3_-_the_big_5.time_management')
),
field(
'X1_Preparation__c',
dataValue('form.step_3_-_the_big_5.preparation')
),
field('Introduces_micromove__c', state => {
return //dataValue('form.step_3_-_the_big_5.faciliation')(state) ||
dataValue(
'form.step_4_comments.for_each_practice_component_describe_what_the_coach_did_well_and_how_the_co.micromove'
)(state);
}),
field(
'Notes__c',
dataValue(
'form.step_3_-_the_big_5.additional_notes.include_your_obsevations_related_to_preparation_punctuality_process'
)
)
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14.html b/adaptors/library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14.html index aae2880dd4f..bf5e051d757 100644 --- a/adaptors/library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14.html +++ b/adaptors/library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Confirm Services Received

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

alterState, dataValue, field, fields, upsert

Expression

// Your job goes here.
alterState(state => {
state.data.external_commcare_id = (
dataValue('form.hidden_properties.intervention_name')(state) +
dataValue('form.hidden_properties.participant_first_name')(state) +
dataValue('form.hidden_properties.participant_surname')(state)
)
.toString()
.toLowerCase()
.replace(/\s/g, '')
.trim();

return state;
});

upsert(
'NewReferral__c',
'CommCare_Ext_ID__c',
fields(
field('Business_Unit_Site__c', state => {
const bu = dataValue('form.business_unit')(state);
return bu === 'X' ? 'GRS Zambia' : bu;
}),
field('CommCare_Ext_ID__c', dataValue('form.case.@case_id')),
field('HIV_Testing_Services_Service_Provider__c', state =>
Boolean(
dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option1')(state)
)
),
field('TB_Screening_Service_Provider__c', state =>
Boolean(
dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option2')(state)
)
),
field('VMMC_Service_Provider__c', state =>
Boolean(
dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option3')(state)
)
),
field('Post_Exposure_Prophylaxis_Service_Provid__c', state =>
Boolean(
dataValue(
'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option4'
)(state)
)
),
field('PrEP_Service_Provider__c', state =>
Boolean(
dataValue(
'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option5'
)(state)
)
),
field('HIV_STI_PREVENTION_Other_Service_Provid__c', state =>
Boolean(
dataValue(
'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option6'
)(state)
)
),
field('ART_Initiation_Service_Provider__c', state =>
Boolean(
dataValue('form.referral_services.art_support_services.art_services_group.art_services_option1')(
state
)
)
),
field('SKILLZ_Plus_Club_Support_Service_Provid__c', state =>
Boolean(
dataValue('form.referral_services.art_support_services.art_services_group.art_services_option2')(
state
)
)
),

field(
'PMTCT_Service_Provider__c',
state =>
Boolean(
dataValue('form.referral_services.art_support_services.art_services_group.art_services_option3')(
state
)
)
),
field('IPTG_Health_Facility__c', state =>
Boolean(
dataValue('form.referral_services.mental_health_services.confirmation_of_services_provided_label.mental_health_select_services_option1')(
state
)
)
),
field('IPTG_Specialized_to_SMZ__c', state =>
Boolean(
dataValue('form.referral_services.mental_health_services.confirmation_of_services_provided_label.mental_health_select_services_option2')(
state
)
)
),

field('ART_Services_Other_Service_Provider__c', state =>
Boolean(
dataValue('form.referral_services.art_support_services.referred_art_support_services')(state)
)
),
field(
'Victim_Friendly_Services_Service_Provide__c',
state =>
Boolean(
dataValue(
'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option1'
)(state)
) ||
Boolean(
dataValue(
'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option2'
)(state)
) ||
Boolean(
dataValue(
'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option3'
)(state)
)
),
field('Legal_Services_Other_Service_Provider__c', state =>
Boolean(
dataValue(
'form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option3'
)(state)
)
),

field('STI_Screen_Testing_Service_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option1')(state))
),

field('Contraception_Family_Plan_Servi_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option2')(state))
),
field('Cervical_Cancer_Screen_Servi_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option3')(state))
),
field('HPV_vaccine_Service_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option4')(state))
),
field('Antenatal_Care_ANC_Service_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option5')(state))
),
field('Sexual_and_GBV_Abuse_Servi_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option6')(state))
),
field(
'Psycho_Social_Support_Service_Provider__c',
state =>
Boolean(
dataValue(
'form.referral_services.other_srhr_services.service_label.srhr_option9'
)(state)
) ||
Boolean(
dataValue(
'form.referral_services.other_srhr_services.service_label.srhr_option8'
)(state)
) ||
Boolean(
dataValue(
'form.referral_services.other_srhr_services.service_label.srhr_option7'
)(state)
)
),
field('Psycho_Social_Services_Other_Service_Pro__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option10')(state))
),
field(
'Legal_Services_Other_Service_Provider__c',
state =>
Boolean(
dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_referral_services')(state)
) ||
Boolean(
dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option1')(state)
) ||
Boolean(
dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option2')(state)
)
),

)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03.html b/adaptors/library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03.html index d73202f2581..2ac60e0ff98 100644 --- a/adaptors/library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03.html +++ b/adaptors/library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Home Visit Log Form

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, lastReferenceValue, query, relationship, upsert

Expression

// push to production

query(
`SELECT Participant_Identification_Number_PID__c from Person__c where Participant_Identification_Number_PID__c = '${state.data.form.case['@case_id']}'`
);

fn(state => {
const PID = lastReferenceValue('records[0].Participant_Identification_Number_PID__c')(state);
if (!PID) {
console.log(
`Participant not found with Participant_Identification_Number_PID__c: ${state.data.form.case['@case_id']}`
);
return state;
}

return execute(
fn(state => {
const { form } = state.data;
const { basic_information } = form;
if (basic_information.intervention_hidden) {
return query(
`SELECT Id, Event__c, CreatedDate, Person_Attendance__c
FROM Attendance__c
WHERE Person_Attendance__r.Participant_Identification_Number_PID__c = '${form.case['@case_id']}'
ORDER BY CreatedDate DESC LIMIT 1`
)(state).then(state => {
const { records } = state.references[0];
const eventId = records[0].Event__c;
state.data.eventField = [field('Event__c', eventId)];
return state;
});
// state.data.eventField = [
// relationship('Event__r', 'CommCare_Ext_ID__c', dataValue('form.basic_information.intervention_hidden')(state)),
// ];
// return state;
} else {
return query(
`SELECT Id, Event__c, CreatedDate, Person_Attendance__c
FROM Attendance__c
WHERE Person_Attendance__r.Participant_Identification_Number_PID__c = '${form.case['@case_id']}'
ORDER BY CreatedDate DESC LIMIT 1`
)(state).then(state => {
const { records } = state.references[0];
const eventId = records[0].Event__c;
state.data.eventField = [field('Event__c', eventId)];
return state;
});
}
}),

upsert('Home_Visit__c', 'CommCare_Ext_ID__c', state => ({
...fields(
field('CommCare_Ext_ID__c', dataValue('id')),
// relationship('Event__r', 'CommCare_Ext_ID__c', dataValue('form.basic_information.intervention_hidden')),
relationship('Person_visiting__r', 'Participant_Identification_Number_PID__c', dataValue('form.case.@case_id')),
//=== NOTE: We do not need to map People information because Home Visit is related to Person. ======//
//This info already lives on the Person-level.
// field('First_Name__c', dataValue('form.basic_information.participant_first_name')),
// field('Surname__c', dataValue('form.basic_information.participant_surname')),
// field('Sex__c', dataValue('form.basic_information.gender')),
// field('Date_of_Birth__c', dataValue('form.basic_information.date_of_birth')),
// field('Physical Address Community City', dataValue('form.basic_information.participant_address')),
//================
field('Consent_Given__c', dataValue('form.basic_information.consent_received')),
//field('Consent_Given__c', dataValue('form.participant_infomation.visit_information.consent_given')) //Repeated mapping
//field('From_Venue__c', dataValue('form.basic_information.venue_hidden')),
field('Reason_for_Home_Visit__c', dataValue('form.participant_infomation.reason_for_home_visit')),
field('Visit_Date__c', dataValue('form.participant_infomation.visit_information.visit_date')),
field('Additional_Comments__c', dataValue('form.administrative.visit_notes'))
),
...fields(...state.data.eventField),
}))
)(state);
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Intervention-Notes-2021-04-28.html b/adaptors/library/jobs/auto/Upsert-Intervention-Notes-2021-04-28.html index 380527acaed..99317cd9315 100644 --- a/adaptors/library/jobs/auto/Upsert-Intervention-Notes-2021-04-28.html +++ b/adaptors/library/jobs/auto/Upsert-Intervention-Notes-2021-04-28.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Intervention Notes

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, relationship, upsert

Expression

//openfn.org source 
upsert(
'Event__c',
'CommCare_Case_ID__c',
fields(
field('CommCare_Case_ID__c', dataValue('form.case.@case_id')),
//field('Name', dataValue('form.intervention_name')),
field('Notes__c', dataValue('form.intervention_notes_to_save')),
relationship('RecordType', 'Name', 'Intervention')
)
);
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Post-Challenges-2021-04-30.html b/adaptors/library/jobs/auto/Upsert-Post-Challenges-2021-04-30.html index 7053e8c344a..699d6c7dc6d 100644 --- a/adaptors/library/jobs/auto/Upsert-Post-Challenges-2021-04-30.html +++ b/adaptors/library/jobs/auto/Upsert-Post-Challenges-2021-04-30.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Post Challenges

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, lastReferenceValue, query, relationship, upsert

Expression

fn(state => {
function transform(value) {
if (!value) return;
switch (value.toString().trim().toLowerCase()) {
case 'true':
case 'yes':
case 'agree':
case 'concordo':
case 'verdade':
case 'copy-1-of-yes':
return 1;
case 'false':
case 'no':
case 'disagree':
case 'discordo':
case 'falso':
case 'copy-1-of-no':
return 2;
case 'i_dont_know':
return 3;
case 'unanswered':
case `not_sexually_active`:
return 4;
case 'not_applicable':
return 5;
default:
return value;
}
}

state.helperFunctions = { transform };

return query(
`SELECT Participant_Identification_Number_PID__c from Person__c where Participant_Identification_Number_PID__c = '${state.data.form.case['@case_id']}'`
)(state);
});

fn(state => {
const { form } = state.data;

const formVersion = Object.keys(form).find(key => key.includes('challenge'));
if (formVersion == 'post_challenge_ecap_-_post_-_season_survey_for_athletes') {
console.log('Skipping upsert for ECAP data');
return { ...state, formVersion };
}
console.log('form version', formVersion);

const sfFieldMapping = {
'portuguese_pre_challenge_gcr_-_skillz_malaria': {
Post_1__c:
'form.portuguese_pre_challenge_gcr_-_skillz_malaria.dormir_dentro_da_rede_mosquiteira_tratada_todas_as_noites_pode_proteger_me_',
Post_2__c:
'form.portuguese_pre_challenge_gcr_-_skillz_malaria.posso_esperar_uns_dias_antes_de_fazer_o_teste_de_malria_se_tiver_febres',
Post_3__c:
'form.portuguese_pre_challenge_gcr_-_skillz_malaria.um_mdico_tradicionalcurandeiro_pode_me_dar_um_tratamento_para_curar_a_malri',
Post_4__c:
'form.portuguese_pre_challenge_gcr_-_skillz_malaria.se_tiver_malria_e_no_for_tratado_posso_transmitir_a_malria_a_algum',
Post_5__c:
'form.portuguese_pre_challenge_gcr_-_skillz_malaria.somente_as_mulheres_grvidas_e_as_crianas_menores_de_5_anos__que_precisam_de',
Post_6__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.a_malria_pode_matar_se_no_fr_tratada',
Post_7__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.a_febre__um_sintoma_da_malria',
Post_8__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.eu_me_sinto_bem_conmigo_mesmo',
Post_9__c:
'form.portuguese_pre_challenge_gcr_-_skillz_malaria.tenho_algum_na_minha_vida_que_pode_me_dar_bons_conselhos_quando_preciso_de_',
Post_10__c:
'form.portuguese_pre_challenge_gcr_-_skillz_malaria.eu_sei_onde_posso_ter_tratamento_para_malria_na_minha_comunidade',
Post_11__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.posso_proteger-me_da_malria',
},

'post_challenge_south_africa_-_skillz_girl': {
Post_1__c:
'form.post_challenge_south_africa_-_skillz_girl.i_have_an_older_person_in_my_life_i_can_go_to_for_advice_i_have_an_older_pe',
Post_2__c:
'form.post_challenge_south_africa_-_skillz_girl.i_know_how_to_make_a_plan_to_deal_with_the_challenges_i_may_face_in_reachin',
Post_3__c:
'form.post_challenge_south_africa_-_skillz_girl.i_can_identify_my_strengths_or_things_that_i_am_good_at_in_life',
Post_4__c: 'form.post_challenge_south_africa_-_skillz_girl.every_day_i_can_find_something_to_be_grateful_for',
Post_5__c:
'form.post_challenge_south_africa_-_skillz_girl.having_more_than_one_sexual_partner_increases_my_risk_of_getting_hiv',
Post_6__c:
'form.post_challenge_south_africa_-_skillz_girl.i_can_say_no_to_sex_even_if_my_partner_or_friends_pressure_me_to_have_sex',
Post_7__c:
'form.post_challenge_south_africa_-_skillz_girl.girls_have_a_greater_risk_of_contracting_hiv_than_boys',
Post_8__c:
'form.post_challenge_south_africa_-_skillz_girl.if_i_am_sexually_active_i_go_to_a_clinic_to_get_protection_from_hivstis_and',
Post_9__c: 'form.post_challenge_south_africa_-_skillz_girl.like_physical_health_we_all_have_mental_health',
Post_10__c:
'form.post_challenge_south_africa_-_skillz_girl.i_know_where_to_go_for_support_if_i_or_someone_i_know_drinks_too_much_alcoh',
Post_11__c:
'form.post_challenge_south_africa_-_skillz_girl.it_is_the_males_responsibility_to_make_decisions_in_a_relationship',
Post_12__c:
'form.post_challenge_south_africa_-_skillz_girl.if_a_girl_is_sexually_abused_she_can_reduce_her_risk_of_getting_hiv_by_goin',
Post_13__c:
'form.post_challenge_south_africa_-_skillz_girl.sometimes_a_man_may_have_a_good_reason_to_hit_his_partner',
Post_14__c:
'form.post_challenge_south_africa_-_skillz_girl.i_know_where_to_get_contraception_to_prevent_unwanted_pregnancy',
Post_15__c:
'form.post_challenge_south_africa_-_skillz_girl.drinking_too_much_alcohol_can_have_serious_negative_consequences_for_mental',
Post_16__c:
'form.post_challenge_south_africa_-_skillz_girl.if_sexually_active_i_or_my_partner_is_using_a_prevention_method_to_protect_',
Post_17__c:
'form.post_challenge_south_africa_-_skillz_girl.i_know_where_to_go_to_receive_counselling_for_mental_health_challenges',
Post_18__c:
'form.post_challenge_south_africa_-_skillz_girl.loss_of_interest_in_funenjoyable_activities_is_a_common_sign_of_depression',
Post_19__c:
'form.post_challenge_south_africa_-_skillz_girl.i_know_at_least_three_methods_to_prevent_an_unwanted_pregnancy',
},
'portuguese_post_challenge_gcr_-_skillz_girl': {
Post_1__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.falei_sobre_o_hiv_com_uma_pessoa_adulta_nos_ltimos_2_meses_fora_do_skillz',
Post_2__c: 'form.portuguese_post_challenge_gcr_-_skillz_girl.sei_como_expressar_a_minha_raiva_sem_ser_violento',
Post_3__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.sei_como_superar_os_desafios_que_possa_enfrentar_na_minha_vida',
Post_4__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.sei_quais_as_decises_a_tomar_para_alcanar_os_meus_objectivos',
Post_5__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.os_rapazes_correm_um_risco_mais_elevado_de_serem_vtimas_de_violncia_do_que_',
Post_6__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.conheco_que_mudanas_ocorrem_no_meu_corpo_durante_a_puberdade',
Post_7__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.conheo_pelo_menos_trs_mtodos_para_evitar_uma_gravidez_indesejada',
Post_8__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.os_preservativos_so_o_nico_mtodo_contraceptivo_que_protege_contra_a_gravide',
Post_9__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.conheco_onde_obter_servios_de_apoio_para_mim_ou_outra_pessoa_para_casos_de_',
Post_10__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.se_uma_rapariga_inicia_seu_perodo_menstrual_significa_que_est_pronta_para_c',
Post_11__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.caso_eu_seja_abusada_sexualmente_prefiro_guard-lo_para_mim_para_evitar_que_',
Post_12__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.um_homem_tem_o_direito_de_ter_sexo_com_a_sua_namorada_mesmo_que_ela_no_o_qu',
Post_13__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.pessoas_com_problemas_de_sade_mental_so_apenas_confusas_ou_loucas',
Post_14__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.pessoas_com_problemas_de_sade_mental_so_apenas_confusas_ou_loucas',
Post_15__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.informaria_a_algum_caso_fosse_tocada_por_alguem_de_uma_forma_que_me_deixass',
Post_16__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.uma_filha_deve_sempre_respeitar_a_deciso_dos_seus_pais_para_se_casar',
Post_17__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.um_casamento_bem_sucedido__mais_importante_para_as_raparigas_do_que_termina',
Post_18__c: 'form.portuguese_post_challenge_gcr_-_skillz_girl.eu_no_praticaria_desporto_com_algum_que_tem_hiv',
Post_19__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.um_namorado_pode_ter_boas_razes_para_bater_na_sua_namorada',
Post_20__c:
'form.portuguese_post_challenge_gcr_-_skillz_girl.no_faz_mal_que_um_rapaz_ameace_bater_na_sua_namorada_se_nunca_a_bater_fisic',
},
'post_challenge_zambia_-_plus_mh_enhanced_zambia': {
Post_1__c: 'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.in_general_i_feel_good_about_myself',
Post_2__c:
'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.i_have_the_skills_and_knowledge_to_avoid_getting_infected_with_another_kind',
Post_3__c:
'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.it_is_important_to_know_why_and_how_i_want_to_tell_someone_my_hiv_status',
Post_4__c: 'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.i_accept_myself_and_my_hiv_status',
Post_5__c:
'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.i_can_make_my_own_informed_decisions_about_my_sexual_healthcare',
Post_6__c:
'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.are_you_or_have_you_been_past_12_months_in_a_sexual_relationship_na_if_not_',
Post_7__c:
'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.are_you_or_your_boyfriendgirlfriend_currently_using_any_contraceptive_or_pr',
Post_8__c:
'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.i_have_an_older_person_in_my_life_i_can_go_to_for_advice',
Post_9__c:
'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.there_are_people_i_trust_with_whom_i_can_talk_about_my_status',
Post_10__c:
'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.it_is_okay_for_two_people_with_hiv_to_have_unprotected_sex_with_each_other',
Post_11__c:
'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.it_is_okay_for_someone_with_hiv_to_stop_taking_their_arv_as_soon_as_they_st',
Post_12__c:
'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.when_i_have_a_choice_it_is_important_to_eat_a_variety_of_foods_including_gr',
Post_13__c:
'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.mental_health_problems_have_nothing_to_do_with_being_lazy_or_weak_and_many_',
Post_14__c:
'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.art_adherence_is_an_important_part_of_my_overall_health_and_well-being',
Post_15__c:
'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.the_most_common_illnesses_of_mental_health_are_depression_and_anxiety',
Post_16__c:
'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.biological_and_social_factors_contribute_to_females_and_males_experiencing_',
},
'post_challenge_nigeria_-_advanced_skills': {
Post_1__c:
'form.post_challenge_nigeria_-_advanced_skills.i_have_talked_about_hiv_with_an_adult_in_the_past_two_months_outside_skillz',
Post_2__c:
'form.post_challenge_nigeria_-_advanced_skills.i_have_talked_about_malaria_with_an_adult_in_the_past_two_months_outside_sk',
Post_3__c:
'form.post_challenge_nigeria_-_advanced_skills.unequal_power_in_relationships_can_contribute_to_the_spread_of_hiv',
Post_4__c:
'form.post_challenge_nigeria_-_advanced_skills.the_most_effective_way_to_avoid_getting_hiv_is_to_abstain_from_sex',
Post_5__c: 'form.post_challenge_nigeria_-_advanced_skills.malaria_is_spread_by_standing_under_the_hot_sun',
Post_6__c: 'form.post_challenge_nigeria_-_advanced_skills.drinking_alcohol_can_increase_my_risk_of_getting_hiv',
Post_7__c:
'form.post_challenge_nigeria_-_advanced_skills.sleeping_under_a_mosquito_net_every_night_can_help_protect_me_from_malaria',
Post_8__c:
'form.post_challenge_nigeria_-_advanced_skills.having_more_than_one_sexual_partner_over_the_same_time_period_increases_my_',
Post_9__c:
'form.post_challenge_nigeria_-_advanced_skills.it_is_okay_for_someone_with_malaria_to_stop_taking_their_medication_as_soon',
Post_10__c:
'form.post_challenge_nigeria_-_advanced_skills.i_can_abstain_from_sex_until_i_am_older_even_if_it_is_difficult',
Post_11__c:
'form.post_challenge_nigeria_-_advanced_skills.i_would_say_no_to_playing_sport_with_someone_who_has_hiv',
Post_12__c:
'form.post_challenge_nigeria_-_advanced_skills.men_should_share_the_work_around_the_house_such_as_cleaning',
Post_13__c:
'form.post_challenge_nigeria_-_advanced_skills.it_is_the_males_responsibilty_to_make_decisions_in_a_relationship',
Post_14__c:
'form.post_challenge_nigeria_-_advanced_skills.i_can_use_drugs_and_still_easily_reach_my_goals_in_life',
Post_15__c:
'form.post_challenge_nigeria_-_advanced_skills.when_sick_it_is_better_to_visit_the_herb_seller_than_to_visit_a_doctor_or_a',
Post_16__c:
'form.post_challenge_nigeria_-_advanced_skills.it_is_okay_to_use_violence_with_my_partner_if_he_or_she_makes_me_angry',
Post_17__c:
'form.post_challenge_nigeria_-_advanced_skills.i_have_the_power_to_change_gender_expectations_that_i_do_not_agree_with',
},
'post_challenge_zimbabwe_-_skillz_core_zimbabwe': {
Post_1__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_know_what_decisions_to_make_to_achieve_my_goals',
Post_2__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_dont_always_have_to_do_what_people_expect_just_because_i_am_a_girlboy',
Post_3__c: 'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_what_i_am_good_at',
Post_4__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_can_make_my_own_decisions_no_matter_how_much_pressure_i_get_from_others',
Post_5__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_have_the_right_to_say_no_to_sex_no_matter_who_asks_me',
Post_6__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_can_make_my_own_informed_decisions_about_my_sexual_healthcare',
Post_7__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_have_the_right_to_access_sexual_health_services_such_as_sti_and_hiv_testi',
Post_8__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.it_is_the_mans_responsibility_to_make_decisions_in_a_relationship',
Post_9__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.a_man_has_the_right_to_have_sex_with_his_girlfriend_even_if_she_doesnt_want',
Post_10__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.girls_should_be_obedient_and_should_not_disagree_with_boys',
Post_11__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.if_a_girl_gets_pregnant_she_should_drop_out_of_school',
Post_12__c: 'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.my_skillz_coach_helps_me_to_be_a_better_person',
Post_13__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_have_someone_in_my_life_i_can_turn_to_when_i_need_advice_or_when_i_have_a',
Post_14__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.if_i_test_positive_for_hiv_there_will_be_someone_who_will_help_and_support_',
Post_15__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_who_to_go_to_if_i_amsomeone_i_know_is_abused_sexually_physically_and',
Post_16__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_who_to_go_to_if_someone_touches_me_in_a_way_that_makes_me_uncomforta',
Post_17__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_where_to_get_support_services_for_me_or_someone_else_for_hiv-related',
Post_18__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_would_say_no_to_playing_sport_with_someone_who_has_hiv',
Post_19__c:
'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_can_tell_whether_someone_has_hiv_by_looking_at_him_or_her',
},
'copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe': {
Post_1__c:
'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.copy-1-of-i_know_what_decisions_to_make_to_achieve_my_goals',
Post_2__c:
'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.i_dont_always_have_to_do_what_people_expect_just_because_i_am_girlboy',
Post_3__c:
'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.copy-1-of-i_have_the_right_to_say_no_to_sex_no_matter_who_asks_me',
Post_4__c:
'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.i_can_make_my_own_informed_decisions_about_my_sexual_health',
Post_5__c:
'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.it_is_the_mans_responsibility_to_make_decisions_in_a_relationship',
Post_6__c:
'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.a_man_has_the_right_to_have_sex_with_his_girlfriend_even_if_she_doesnt_want',
Post_7__c:
'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.my_skillz_coach_helps_me_to_be_a_better_person',
Post_8__c:
'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.i_have_someone_in_my_life_i_can_turn_to_when_i_need_advise_or_when_i_have_a',
Post_9__c:
'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.copy-1-of-i_know_where_to_get_support_services_for_me_or_someone_else_for_hiv-related',
},
};

const pluckSfValue = val => {
// if sfFieldMapping[formVersion][val] == undefined
return sfFieldMapping[formVersion][val];
};

return { ...state, formVersion, pluckSfValue };
});

fn(state => {
if (state.formVersion == 'post_challenge_ecap_-_post_-_season_survey_for_athletes') {
return state;
}
const PID = lastReferenceValue('records[0].Participant_Identification_Number_PID__c')(state);

if (!PID) {
console.log(
`Participant not found with Participant_Identification_Number_PID__c: ${state.data.form.case['@case_id']}`
);
return state;
}

function replaceAccents(input) {
return input
.replace(/á|â|ã|à/, 'a')
.replace(/Á|Â|Ã|À/, 'A')
.replace(/ç/, 'c')
.replace(/é|ê/, 'e')
.replace(/É|Ê/, 'E')
.replace(/í/, 'i')
.replace(/Í/, 'I')
.replace(/ó|ô|õ/, 'o')
.replace(/Ó|Ô|Õ/, 'O')
.replace(/ú/, 'u')
.replace(/Ú/, 'u');
}

return upsert(
'Attendance__c',
'CommCare_Ext_ID__c',
fields(
//field('Event__c', dataValue('form.hidden_properties.intervention_name')),

field('CommCare_Ext_ID__c', state => {
const value =
dataValue('form.case.@case_id')(state) +
'-' +
replaceAccents(dataValue('form.hidden_properties.intervention_name')(state)).replace(/\//gi, '');
return scrubEmojis(value, '');
}),

//relationship('Event__r', 'CommCare_Ext_ID__c', dataValue('form.hidden_properties.intervention_name')),
relationship('Person_Attendance__r', 'Participant_Identification_Number_PID__c', dataValue('form.case.@case_id')),
field('Pre_Post_Completed__c', state => {
var done = dataValue('form.hidden_properties.post_questionnaire_complete')(state);
return done === 'Yes' ? true : done === 'No' ? false : undefined;
}),
field('Date_Post_Administered__c', dataValue('form.hidden_properties.date')),
field('Post_1__c', state => {
const value = dataValue(state.pluckSfValue('Post_1__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_2__c', state => {
if (state.pluckSfValue('Post_2__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Post_2__c'))(state);
return state.helperFunctions.transform(value);
}),

field('Post_3__c', state => {
const value = dataValue(state.pluckSfValue('Post_3__c'))(state);
return state.helperFunctions.transform(value);
}),

field('Post_4__c', state => {
const value = dataValue(state.pluckSfValue('Post_4__c'))(state);
return state.helperFunctions.transform(value);
}),

field('Post_5__c', state => {
const value = dataValue(state.pluckSfValue('Post_5__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_6__c', state => {
const value = dataValue(state.pluckSfValue('Post_6__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_7__c', state => {
const value = dataValue(state.pluckSfValue('Post_7__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_8__c', state => {
const value = dataValue(state.pluckSfValue('Post_8__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_9__c', state => {
const value = dataValue(state.pluckSfValue('Post_9__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_10__c', state => {
if (state.pluckSfValue('Post_10__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Post_10__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_11__c', state => {
if (state.pluckSfValue('Post_11__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Post_10__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_12__c', state => {
if (state.pluckSfValue('Post_12__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Post_12__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_13__c', state => {
if (state.pluckSfValue('Post_13__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Post_13__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_14__c', state => {
if (state.pluckSfValue('Post_14__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Post_14__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_15__c', state => {
if (state.pluckSfValue('Post_15__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Post_15__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_16__c', state => {
if (state.pluckSfValue('Post_16__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Post_16__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_17__c', state => {
if (state.pluckSfValue('Post_17__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Post_17__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_18__c', state => {
if (state.pluckSfValue('Post_18__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Post_18__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_19__c', state => {
if (state.pluckSfValue('Post_19__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Post_19__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Post_20__c', state => {
if (state.pluckSfValue('Post_20__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Post_20__c'))(state);
return state.helperFunctions.transform(value);
})
)
)(state);
});

//Removing mapping... need case_id to upsert Events. Date_of_Post__c update should be handled on the SF side.
/*upsert(
'Event__c',
'CommCare_Ext_ID__c',
fields(
field('CommCare_Ext_ID__c', dataValue('form.hidden_properties.intervention_name')),
field('Date_of_Post__c', dataValue('form.date')),
)
);*/

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Pre-Challenges-2021-04-30.html b/adaptors/library/jobs/auto/Upsert-Pre-Challenges-2021-04-30.html index 83841b02231..d8f1288b2e4 100644 --- a/adaptors/library/jobs/auto/Upsert-Pre-Challenges-2021-04-30.html +++ b/adaptors/library/jobs/auto/Upsert-Pre-Challenges-2021-04-30.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Pre Challenges

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, lastReferenceValue, query, relationship, upsert

Expression

fn(state => {
function transform(value) {
if (!value) return;
//console.log("value in switch", value.toString().trim().toLowerCase());
switch (value.toString().trim().toLowerCase()) {
case 'true':
case 'yes':
case 'agree':
case 'verdade':
case 'concorda':
case 'concordo':
return 1;
case 'false':
case 'no':
case 'disagree':
case 'discorda':
case 'discordo':
case 'falso':
return 2;
case 'i_dont_know':
case `not_sexually_active`:
return 3;
case 'unanswered':
return 4;
case 'not_applicable':
return 5;
default:
return value;
}
}

state.helperFunctions = { transform };

return query(
`SELECT Participant_Identification_Number_PID__c from Person__c where Participant_Identification_Number_PID__c = '${state.data.form.case['@case_id']}'`
)(state);
});

fn(state => {
const { form } = state.data;

const formVersion = Object.keys(form).find(key => key.includes('pre_challenge'));

if (formVersion == 'pre_challenge_ecap_-_pre_-_season_survey_for_athletes') {
console.log('Skipping upsert for ECAP data');
return { ...state, formVersion };
}

console.log('form version', formVersion);

const sfFieldMapping = {
'pre_challenge_south_africa_-_skillz_girl': {
Pre_1__c:
'form.pre_challenge_south_africa_-_skillz_girl.i_have_an_older_person_in_my_life_i_can_go_to_for_advice_i_have_an_older_pe',
Pre_2__c:
'form.pre_challenge_south_africa_-_skillz_girl.i_know_how_to_make_a_plan_to_deal_with_the_challenges_i_may_face_in_reachin',
Pre_3__c:
'form.pre_challenge_south_africa_-_skillz_girl.i_can_identify_my_strengths_or_things_that_i_am_good_at_in_life',
Pre_4__c: 'form.pre_challenge_south_africa_-_skillz_girl.every_day_i_can_find_something_to_be_grateful_for',
Pre_5__c:
'form.pre_challenge_south_africa_-_skillz_girl.having_more_than_one_sexual_partner_increases_my_risk_of_getting_hiv',
Pre_6__c:
'form.pre_challenge_south_africa_-_skillz_girl.i_can_say_no_to_sex_even_if_my_partner_or_friends_pressure_me_to_have_sex',
Pre_7__c: 'form.pre_challenge_south_africa_-_skillz_girl.girls_have_a_greater_risk_of_contracting_hiv_than_boys',
Pre_8__c:
'form.pre_challenge_south_africa_-_skillz_girl.if_i_am_sexually_active_i_go_to_a_clinic_to_get_protection_from_hivstis_and',
Pre_9__c: 'form.pre_challenge_south_africa_-_skillz_girl.like_physical_health_we_all_have_mental_health',
Pre_10__c:
'form.pre_challenge_south_africa_-_skillz_girl.i_know_where_to_go_for_support_if_i_or_someone_i_know_drinks_too_much_alcoh',
Pre_11__c:
'form.pre_challenge_south_africa_-_skillz_girl.it_is_the_males_responsibility_to_make_decisions_in_a_relationship',
Pre_12__c:
'form.pre_challenge_south_africa_-_skillz_girl.if_a_girl_is_sexually_abused_she_can_reduce_her_risk_of_getting_hiv_by_goin',
Pre_13__c:
'form.pre_challenge_south_africa_-_skillz_girl.sometimes_a_man_may_have_a_good_reason_to_hit_his_partner',
Pre_14__c:
'form.pre_challenge_south_africa_-_skillz_girl.i_know_where_to_get_contraception_to_prevent_unwanted_pregnancy',
Pre_15__c:
'form.pre_challenge_south_africa_-_skillz_girl.drinking_too_much_alcohol_can_have_serious_negative_consequences_for_mental',
Pre_16__c:
'form.pre_challenge_south_africa_-_skillz_girl.if_sexually_active_i_or_my_partner_is_using_a_prevention_method_to_protect_',
Pre_17__c:
'form.pre_challenge_south_africa_-_skillz_girl.i_know_where_to_go_to_receive_counselling_for_mental_health_challenges',
Pre_18__c:
'form.pre_challenge_south_africa_-_skillz_girl.loss_of_interest_in_funenjoyable_activities_is_a_common_sign_of_depression',
Pre_19__c:
'form.pre_challenge_south_africa_-_skillz_girl.i_know_at_least_three_methods_to_prevent_an_unwanted_pregnancy',
},
'portuguese_pre_challenge_gcr_-_skillz_malaria': {
Pre_1__c:
'form.portuguese_pre_challenge_gcr_-_skillz_malaria.dormir_dentro_da_rede_mosquiteira_tratada_todas_as_noites_pode_proteger_me_',
Pre_2__c:
'form.portuguese_pre_challenge_gcr_-_skillz_malaria.posso_esperar_uns_dias_antes_de_fazer_o_teste_de_malria_se_tiver_febres',
Pre_3__c:
'form.portuguese_pre_challenge_gcr_-_skillz_malaria.um_mdico_tradicionalcurandeiro_pode_me_dar_um_tratamento_para_curar_a_malri',
Pre_4__c:
'form.portuguese_pre_challenge_gcr_-_skillz_malaria.se_tiver_malria_e_no_for_tratado_posso_transmitir_a_malria_a_algum',
Pre_5__c:
'form.portuguese_pre_challenge_gcr_-_skillz_malaria.somente_as_mulheres_grvidas_e_as_crianas_menores_de_5_anos__que_precisam_de',
Pre_6__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.a_malria_pode_matar_se_no_fr_tratada',
Pre_7__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.a_febre__um_sintoma_da_malria',
Pre_8__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.eu_me_sinto_bem_conmigo_mesmo',
Pre_9__c:
'form.portuguese_pre_challenge_gcr_-_skillz_malaria.tenho_algum_na_minha_vida_que_pode_me_dar_bons_conselhos_quando_preciso_de_',
Pre_10__c:
'form.portuguese_pre_challenge_gcr_-_skillz_malaria.eu_sei_onde_posso_ter_tratamento_para_malria_na_minha_comunidade',
Pre_11__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.posso_proteger-me_da_malria',
},

'portuguese_pre_challenge_gcr_-_skillz_girl': {
Pre_1__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.falei_sobre_o_hiv_com_uma_pessoa_adulta_nos_ltimos_2_meses_fora_do_skillz',
Pre_2__c: 'form.portuguese_pre_challenge_gcr_-_skillz_girl.sei_como_expressar_a_minha_raiva_sem_ser_violento',
Pre_3__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.sei_como_superar_os_desafios_que_possa_enfrentar_na_minha_vida',
Pre_4__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.sei_quais_as_decises_a_tomar_para_alcanar_os_meus_objectivos',
Pre_5__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.os_rapazes_correm_um_risco_mais_elevado_de_serem_vtimas_de_violncia_do_que_',
Pre_6__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.conheco_que_mudanas_ocorrem_no_meu_corpo_durante_a_puberdade',
Pre_7__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.conheo_pelo_menos_trs_mtodos_para_evitar_uma_gravidez_indesejada',
Pre_8__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.os_preservativos_so_o_nico_mtodo_contraceptivo_que_protege_contra_a_gravide',
Pre_9__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.conheco_onde_obter_servios_de_apoio_para_mim_ou_outra_pessoa_para_casos_de_',
Pre_10__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.se_uma_rapariga_inicia_seu_perodo_menstrual_significa_que_est_pronta_para_c',
Pre_11__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.caso_eu_seja_abusada_sexualmente_prefiro_guard-lo_para_mim_para_evitar_que_',
Pre_12__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.um_homem_tem_o_direito_de_ter_sexo_com_a_sua_namorada_mesmo_que_ela_no_o_qu',
Pre_13__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.pessoas_com_problemas_de_sade_mental_so_apenas_confusas_ou_loucas',
Pre_14__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.pessoas_com_problemas_de_sade_mental_so_apenas_confusas_ou_loucas',
Pre_15__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.informaria_a_algum_caso_fosse_tocada_por_alguem_de_uma_forma_que_me_deixass',
Pre_16__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.uma_filha_deve_sempre_respeitar_a_deciso_dos_seus_pais_para_se_casar',
Pre_17__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.um_casamento_bem_sucedido__mais_importante_para_as_raparigas_do_que_termina',
Pre_18__c: 'form.portuguese_pre_challenge_gcr_-_skillz_girl.eu_no_praticaria_desporto_com_algum_que_tem_hiv',
Pre_19__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.um_namorado_pode_ter_boas_razes_para_bater_na_sua_namorada',
Pre_20__c:
'form.portuguese_pre_challenge_gcr_-_skillz_girl.no_faz_mal_que_um_rapaz_ameace_bater_na_sua_namorada_se_nunca_a_bater_fisic',
},
'pre_challenge_zambia_-_plus_mh_enhanced_zambia': {
Pre_1__c: 'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.in_general_i_feel_good_about_myself',
Pre_2__c:
'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.i_have_the_skills_and_knowledge_to_avoid_getting_infected_with_another_kind',
Pre_3__c:
'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.it_is_important_to_know_why_and_how_i_want_to_tell_someone_my_hiv_status',
Pre_4__c: 'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.i_accept_myself_and_my_hiv_status',
Pre_5__c:
'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.i_can_make_my_own_informed_decisions_about_my_sexual_healthcare',
Pre_6__c:
'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.are_you_or_have_you_been_past_12_months_in_a_sexual_relationship_na_if_not_',
Pre_7__c:
'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.are_you_or_your_boyfriendgirlfriend_currently_using_any_contraceptive_or_pr',
Pre_8__c:
'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.i_have_an_older_person_in_my_life_i_can_go_to_for_advice',
Pre_9__c:
'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.there_are_people_i_trust_with_whom_i_can_talk_about_my_status',
Pre_10__c:
'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.it_is_okay_for_two_people_with_hiv_to_have_unprotected_sex_with_each_other',
Pre_11__c:
'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.it_is_okay_for_someone_with_hiv_to_stop_taking_their_arv_as_soon_as_they_st',
Pre_12__c:
'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.when_i_have_a_choice_it_is_important_to_eat_a_variety_of_foods_including_gr',
Pre_13__c:
'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.mental_health_problems_have_nothing_to_do_with_being_lazy_or_weak_and_many_',
Pre_14__c:
'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.art_adherence_is_an_important_part_of_my_overall_health_and_well-being',
Pre_15__c:
'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.the_most_common_illnesses_of_mental_health_are_depression_and_anxiety',
Pre_16__c:
'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.biological_and_social_factors_contribute_to_females_and_males_experiencing_',
},
'pre_challenge_nigeria_-_advanced_skills': {
Pre_1__c:
'form.pre_challenge_nigeria_-_advanced_skills.i_have_talked_about_hiv_with_an_adult_in_the_past_two_months_outside_skillz',
Pre_2__c:
'form.pre_challenge_nigeria_-_advanced_skills.i_have_talked_about_malaria_with_an_adult_in_the_past_two_months_outside_sk',
Pre_3__c:
'form.pre_challenge_nigeria_-_advanced_skills.unequal_power_in_relationships_can_contribute_to_the_spread_of_hiv',
Pre_4__c:
'form.pre_challenge_nigeria_-_advanced_skills.the_most_effective_way_to_avoid_getting_hiv_is_to_abstain_from_sex',
Pre_5__c: 'form.pre_challenge_nigeria_-_advanced_skills.malaria_is_spread_by_standing_under_the_hot_sun',
Pre_6__c: 'form.pre_challenge_nigeria_-_advanced_skills.drinking_alcohol_can_increase_my_risk_of_getting_hiv',
Pre_7__c:
'form.pre_challenge_nigeria_-_advanced_skills.sleeping_under_a_mosquito_net_every_night_can_help_protect_me_from_malaria',
Pre_8__c:
'form.pre_challenge_nigeria_-_advanced_skills.having_more_than_one_sexual_partner_over_the_same_time_period_increases_my_',
Pre_9__c:
'form.pre_challenge_nigeria_-_advanced_skills.it_is_okay_for_someone_with_malaria_to_stop_taking_their_medication_as_soon',
Pre_10__c:
'form.pre_challenge_nigeria_-_advanced_skills.i_can_abstain_from_sex_until_i_am_older_even_if_it_is_difficult',
Pre_11__c:
'form.pre_challenge_nigeria_-_advanced_skills.i_would_say_no_to_playing_sport_with_someone_who_has_hiv',
Pre_12__c:
'form.pre_challenge_nigeria_-_advanced_skills.men_should_share_the_work_around_the_house_such_as_cleaning',
Pre_13__c:
'form.pre_challenge_nigeria_-_advanced_skills.it_is_the_males_responsibilty_to_make_decisions_in_a_relationship',
Pre_14__c: 'form.pre_challenge_nigeria_-_advanced_skills.i_can_use_drugs_and_still_easily_reach_my_goals_in_life',
Pre_15__c:
'form.pre_challenge_nigeria_-_advanced_skills.when_sick_it_is_better_to_visit_the_herb_seller_than_to_visit_a_doctor_or_a',
Pre_16__c:
'form.pre_challenge_nigeria_-_advanced_skills.it_is_okay_to_use_violence_with_my_partner_if_he_or_she_makes_me_angry',
Pre_17__c:
'form.pre_challenge_nigeria_-_advanced_skills.i_have_the_power_to_change_gender_expectations_that_i_do_not_agree_with',
},
'pre_challenge_zimbabwe_-_skillz_core_zimbabwe': {
Pre_1__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_know_what_decisions_to_make_to_achieve_my_goals',
Pre_2__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_dont_always_have_to_do_what_people_expect_just_because_i_am_a_girlboy',
Pre_3__c: 'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_what_i_am_good_at',
Pre_4__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_can_make_my_own_decisions_no_matter_how_much_pressure_i_get_from_others',
Pre_5__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_have_the_right_to_say_no_to_sex_no_matter_who_asks_me',
Pre_6__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_can_make_my_own_informed_decisions_about_my_sexual_healthcare',
Pre_7__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_have_the_right_to_access_sexual_health_services_such_as_sti_and_hiv_testi',
Pre_8__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.it_is_the_mans_responsibility_to_make_decisions_in_a_relationship',
Pre_9__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.a_man_has_the_right_to_have_sex_with_his_girlfriend_even_if_she_doesnt_want',
Pre_10__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.girls_should_be_obedient_and_should_not_disagree_with_boys',
Pre_11__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.if_a_girl_gets_pregnant_she_should_drop_out_of_school',
Pre_12__c: 'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.my_skillz_coach_helps_me_to_be_a_better_person',
Pre_13__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_have_someone_in_my_life_i_can_turn_to_when_i_need_advice_or_when_i_have_a',
Pre_14__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.if_i_test_positive_for_hiv_there_will_be_someone_who_will_help_and_support_',
Pre_15__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_who_to_go_to_if_i_amsomeone_i_know_is_abused_sexually_physically_and',
Pre_16__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_who_to_go_to_if_someone_touches_me_in_a_way_that_makes_me_uncomforta',
Pre_17__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_where_to_get_support_services_for_me_or_someone_else_for_hiv-related',
Pre_18__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_would_say_no_to_playing_sport_with_someone_who_has_hiv',
Pre_19__c:
'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_can_tell_whether_someone_has_hiv_by_looking_at_him_or_her',
},
'pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe': {
Pre_1__c:
'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.copy-1-of-i_know_what_decisions_to_make_to_achieve_my_goals',
Pre_2__c:
'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.i_dont_always_have_to_do_what_people_expect_just_because_i_am_girlboy',
Pre_3__c:
'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.copy-1-of-i_have_the_right_to_say_no_to_sex_no_matter_who_asks_me',
Pre_4__c:
'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.i_can_make_my_own_informed_decisions_about_my_sexual_health',
Pre_5__c:
'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.it_is_the_mans_responsibility_to_make_decisions_in_a_relationship',
Pre_6__c:
'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.a_man_has_the_right_to_have_sex_with_his_girlfriend_even_if_she_doesnt_want',
Pre_7__c:
'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.my_skillz_coach_helps_me_to_be_a_better_person',
Pre_8__c:
'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.i_have_someone_in_my_life_i_can_turn_to_when_i_need_advise_or_when_i_have_a',
Pre_9__c:
'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.copy-1-of-i_know_where_to_get_support_services_for_me_or_someone_else_for_hiv-related',
},
};

const pluckSfValue = val => {
return sfFieldMapping[formVersion][val];
};

return { ...state, formVersion, pluckSfValue };
});

fn(state => {
console.log('here', state.formVersion);
if (state.formVersion == 'pre_challenge_ecap_-_pre_-_season_survey_for_athletes') {
console.log('Skipping upsert for ECAP data');
return state;
}
const PID = lastReferenceValue('records[0].Participant_Identification_Number_PID__c')(state);

if (!PID) {
console.log(
`Participant not found with Participant_Identification_Number_PID__c: ${state.data.form.case['@case_id']}`
);
return state;
}

function replaceAccents(input) {
return input
.replace(/á|â|ã|à/, 'a')
.replace(/Á|Â|Ã|À/, 'A')
.replace(/ç/, 'c')
.replace(/é|ê/, 'e')
.replace(/É|Ê/, 'E')
.replace(/í/, 'i')
.replace(/Í/, 'I')
.replace(/ó|ô|õ/, 'o')
.replace(/Ó|Ô|Õ/, 'O')
.replace(/ú/, 'u')
.replace(/Ú/, 'u');
}

return upsert(
'Attendance__c',
'CommCare_Ext_ID__c',
fields(
//field('Event__c', replaceAccents(dataValue('form.hidden_properties.intervention_name')(state))),
relationship('Event__r', 'CommCare_Ext_ID__c', dataValue('form.hidden_properties.intervention_name')),
relationship('Person_Attendance__r', 'Participant_Identification_Number_PID__c', dataValue('form.case.@case_id')),
// relationship('Person_Attendance__r','CommCare_Ext_ID__c', state => {
// return (
// dataValue('form.hidden_properties.participant_first_name')(state) +
// dataValue('form.hidden_properties.participant_surname')(state)
// )
// }),

field('CommCare_Ext_ID__c', state => {
return `${dataValue('form.case.@case_id')(state)}-${scrubEmojis(
replaceAccents(dataValue('form.hidden_properties.intervention_name')(state)),
''
).replace(/\//gi, '')}`;
}),

//field(
//'Person_Attendance__c',
// state =>
// dataValue('form.hidden_properties.participant_first_name')(state) +
// ' ' +
// dataValue('form.hidden_properties.participant_surname')(state)
//),
field('Gender__c', dataValue('form.hidden_properties.gender')),
field('Grade__c', state => {
const grade = dataValue('form.hidden_properties.grade')(state);
return grade ? grade.replace(/\D/g, '') : undefined;
}),
field('Class__c', dataValue('form.hidden_properties.class')),
field('Pre_Post_Completed__c', state => {
var done = dataValue('form.hidden_properties.pre_questionnaire_complete')(state);
return done === 'Yes' ? true : done === 'No' ? false : undefined;
}),
field('Date_Pre_Administered__c', dataValue('form.date')),
field('Pre_1__c', state => {
const value = dataValue(state.pluckSfValue('Pre_1__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_2__c', state => {
if (state.pluckSfValue('Pre_2__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Pre_2__c'))(state);
return state.helperFunctions.transform(value);
}),

field('Pre_3__c', state => {
const value = dataValue(state.pluckSfValue('Pre_3__c'))(state);
return state.helperFunctions.transform(value);
}),

field('Pre_4__c', state => {
const value = dataValue(state.pluckSfValue('Pre_4__c'))(state);
return state.helperFunctions.transform(value);
}),

field('Pre_5__c', state => {
const value = dataValue(state.pluckSfValue('Pre_5__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_6__c', state => {
const value = dataValue(state.pluckSfValue('Pre_6__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_7__c', state => {
const value = dataValue(state.pluckSfValue('Pre_7__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_8__c', state => {
const value = dataValue(state.pluckSfValue('Pre_8__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_9__c', state => {
const value = dataValue(state.pluckSfValue('Pre_9__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_10__c', state => {
if (state.pluckSfValue('Pre_10__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Pre_10__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_11__c', state => {
if (state.pluckSfValue('Pre_11__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Pre_10__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_12__c', state => {
if (state.pluckSfValue('Pre_12__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Pre_12__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_13__c', state => {
if (state.pluckSfValue('Pre_13__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Pre_13__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_14__c', state => {
if (state.pluckSfValue('Pre_14__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Pre_14__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_15__c', state => {
if (state.pluckSfValue('Pre_15__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Pre_15__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_16__c', state => {
if (state.pluckSfValue('Pre_16__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Pre_16__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_17__c', state => {
if (state.pluckSfValue('Pre_17__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Pre_17__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_18__c', state => {
if (state.pluckSfValue('Pre_18__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Pre_18__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_19__c', state => {
if (state.pluckSfValue('Pre_19__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Pre_19__c'))(state);
return state.helperFunctions.transform(value);
}),
field('Pre_20__c', state => {
if (state.pluckSfValue('Pre_20__c') == null) return undefined;
const value = dataValue(state.pluckSfValue('Pre_20__c'))(state);
return state.helperFunctions.transform(value);
})
)
)(state);
});

//Removing mapping... need case_id to upsert Events. Date_of_Pre__c update should be handled on the SF side.
// upsert(
// 'Event__c',
// 'CommCare_Ext_ID__c',
// fields(
// field('CommCare_Ext_ID__c', dataValue('form.hidden_properties.intervention_name')),
// field('Date_of_Pre__c', dataValue('form.date')),

// )
// );

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Register-Event-2021-04-30.html b/adaptors/library/jobs/auto/Upsert-Register-Event-2021-04-30.html index 646d5705059..9d59e40ea18 100644 --- a/adaptors/library/jobs/auto/Upsert-Register-Event-2021-04-30.html +++ b/adaptors/library/jobs/auto/Upsert-Register-Event-2021-04-30.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Register Event

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

alterState, dataValue, field, fields, join, map, relationship, upsert

Expression

alterState((state) => {

function clean(str) {
if (!!str)
return str
.split('_')
.map(word => {
let new_word = word.toString().toLowerCase();
return new_word.slice(0, 1).toUpperCase() + new_word.slice(1);
})
.join(' ');
}

const coachFieldNames = ['Coach_A__r','Coach_B__r','Coach_C__r','Coach_D__r']

state.data.destinationCoachFields = state.data.form.event_information.coaches
.split(' ')
.reduce(
(accumulator, currentValue, currentIndex) => [
...accumulator,
(currentIndex < coachFieldNames.length && !!currentValue
? relationship(coachFieldNames[currentIndex], 'CommCare_Ext_ID__c', currentValue)
: []),
],
[]
);

const eventtype = state.data.form.event_information.event_type;

const recordtype = eventtype==='community_health_event' || eventtype==='soccer_tournament' ? 'Testing Event' : 'Malaria Testing Event';
console.log(recordtype)

state.data.recordtype = recordtype;

return state;
});

upsert(
'Event__c',
'CommCare_Case_ID__c',
state=>({
...fields(
field('Name', dataValue('form.event_information.Event_Name')),
relationship('RecordType', 'Name', dataValue('recordtype')),
field('CommCare_Ext_ID__c', state => {
var event = dataValue('form.event_information.Event_Name')(state);
return event ? event.replace(/\//gi, '') : event;
}),
field('CommCare_Case_ID__c', dataValue('form.case.@case_id')),
field('Business_Unit__c', state => {
const bu = dataValue('form.event_information.business_unit')(state);
return bu==='65680f0c4c144b03ad0f86bdc46c1ebc' ? 'GRS Zambia' :
bu==='04d98397e28046118fade28ced6b65cb' ? 'GRS Zimbabwe' :
bu==='ed125ab19ec34aacab79585e59eb76f4' ? 'GRS Partnerships': undefined ;
}),
relationship('Site__r','CommCare_Ext_ID__c', dataValue('form.event_information.site')),
relationship('Venue__r', 'CommCare_Ext_ID__c',dataValue('form.event_information.Venue')),
field('Date__c', dataValue('form.event_information.event_date')),
field('Event_Type__c', dataValue('recordtype')),
field('Testing_Event_Type__c', state => {
const type = dataValue('form.event_information.event_type')(state);
return type.includes('malaria') ? 'Malaria Testing Event (General Event)' : 'Other';
}),
field('Coordinator__c', dataValue('form.event_information.event_coordinator')),
),
...fields(...state.data.destinationCoachFields)
})
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Register-Participant-2021-04-28.html b/adaptors/library/jobs/auto/Upsert-Register-Participant-2021-04-28.html index fdf434d6e3d..7bf4f7d6932 100644 --- a/adaptors/library/jobs/auto/Upsert-Register-Participant-2021-04-28.html +++ b/adaptors/library/jobs/auto/Upsert-Register-Participant-2021-04-28.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Register Participant

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataPath, dataValue, each, field, fields, lastReferenceValue, map, merge, query, relationship, upsert, Array

Expression

query(
`SELECT Id, Name, CommCare_Ext_ID__c FROM Event__c WHERE CommCare_Case_ID__c = '${state.data.form.case['@case_id']}'`
);

fn(state => {
// Note: lastReferenceValue selects the first item in the references array.
state.data.eventName = lastReferenceValue('records[0].CommCare_Ext_ID__c')(state);
state.data.eventCase = dataValue('form.case.@case_id')(state);

function replaceAccents(input) {
return input
.replace(/á|â|ã|à/, 'a')
.replace(/Á|Â|Ã|À/, 'A')
.replace(/ç/, 'c')
.replace(/é|ê/, 'e')
.replace(/É|Ê/, 'E')
.replace(/í/, 'i')
.replace(/Í/, 'I')
.replace(/ó|ô|õ/, 'o')
.replace(/Ó|Ô|Õ/, 'O')
.replace(/ú/, 'u')
.replace(/Ú/, 'u');
}

function objectToArray(object) {
return !Array.isArray(object) ? [object] : object;
}

const { form } = state.data;
if (form.question1) {
console.log('Ensuring that "question1" is an array.');
form.question1 = objectToArray(form.question1);
} else if (!form.new_participants) {
console.log('Nothing to upsert. No participants were registered');
} else {
console.log('Shifting "new_participants" to "question1" array.');
form.question1 = objectToArray(form.new_participants);
console.log('Creating a "case" object inside each item in that array.');
form.question1 = form.question1.map(item => ({
...item,
case: item.create_skillz_plus_participant.case,
}));
}

console.log('Done with initial data manipulation.');
const persons = merge(
dataPath('form.question1[*]'),
fields(field('intervention_notes_to_save', dataValue('form.intervention_notes_to_save')))
)(state);

const attendances = merge(
dataPath('form.question1[*]'),
fields(
field('intervention_name', dataValue('form.intervention_name')),
field('eventCase', dataValue('eventCase')),
field('eventName', dataValue('eventName'))
)
)(state);

return { ...state, persons, attendances, replaceAccents };
});

each(
'persons[*]',
upsert(
'Person__c',
'Participant_Identification_Number_PID__c',
fields(
field('Notes__c', dataValue('intervention_notes_to_save')),
field('First_Name__c', dataValue('participant_first_name')),
field('Surname__c', dataValue('participant_surname')),
relationship('RecordType', 'Name', 'Participant'),
relationship('Site__r', 'CommCare_Ext_ID__c', dataValue('grp_location.site_id')),
field('Participant_Identification_Number_PID__c', state => state.data.case['@case_id']),
field('Sex__c', dataValue('gender')),
field('Mobile_Number_1__c', dataValue('mobile_number')), //QUESTION: In CommCare, phone doesn't look like it's saving?
field('School_name_person__c', dataValue('school_name')),
field('Date_of_Birth__c', dataValue('date_of_birth')),
field('School_name_person__c', dataValue('school_name')),
field('Physical_Address__c', dataValue('participants_home_address'))
//field('Age__c', dataValue('form.question1.age_in_years')), //This is a SF formula field, cannot map
)
)
);

each(
'attendances[*]',
upsert(
'Attendance__c',
'CommCare_Ext_ID__c',
fields(
field('CommCare_Ext_ID__c', state => {
const eventid = state.replaceAccents(`${state.data.intervention_name}` || `${state.data.eventName}`); //dataValue('intervention_name')(state) || `${state.data.eventName}`;
const personid = state.data.case['@case_id'];
const value = personid + '-' + eventid.replace(/\//gi, '');
return scrubEmojis(value, '');
}),
relationship(
//Attendance looks up to Persn via the case_id
'Person_Attendance__r',
'Participant_Identification_Number_PID__c',
state => state.data.case['@case_id']
),
relationship(
//Attendance looks up to Event via the Event case_id
'Event__r',
'CommCare_Case_ID__c',
state => `${state.data.eventCase}`
),
// relationship(
// //Attendance looks up to Event via the intervention_name
// 'Event__r',
// 'CommCare_Ext_ID__c',
// state => `${state.data.intervention_name}` || `${state.data.eventName}`
// ),
field('Date_of_Birth__c', dataValue('date_of_birth'))
)
)
);

//First we insert Person record
// fn(state => {
// return upsert(
// 'Person__c',
// 'Participant_Identification_Number_PID__c',
// fields(
// field('Notes__c', dataValue('form.intervention_notes_to_save')),
// field('First_Name__c', dataValue('form.question1.participant_first_name')),
// field('Surname__c', dataValue('form.question1.participant_surname')),
// relationship('RecordType', 'Name', 'Participant'),
// field('Participant_Identification_Number_PID__c', state => state.data.case['@case_id']),
// field('Sex__c', dataValue('form.question1.gender')),
// //field('Age__c', dataValue('form.question1.age_in_years')), //This is a SF formula field, cannot map
// field('Mobile_Number_1__c', dataValue('form.question1.mobile_number')),
// field('School_name_person__c', dataValue('form.question1.school_name'))
// )
// )(state);
// });

// fn(state => {
// //Then we upsert related Attendance records
// return upsert(
// 'Attendance__c',
// 'CommCare_Ext_ID__c',
// fields(
// field('CommCare_Ext_ID__c', state => {
// var eventid = dataValue('form.intervention_name')(state);
// var personid = dataValue('form.case.@case_id')(state);
// return personid + '-' + eventid;
// }),
// relationship(
// //Attendance looks up to Persn via the case_id
// 'Person_Attendance__r',
// 'Participant_Identification_Number_PID__c',
// dataValue('form.case.@case_id')
// ),
// relationship(
// //Attendance looks up to Event via the intervention_name
// 'Event__r',
// 'Name',
// dataValue('form.intervention_name')
// ),
// field('Date_of_Birth__c', dataValue('form.question1.date_of_birth'))
// )
// )(state);
// });

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30.html b/adaptors/library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30.html index 62eb8b23e88..50f7b753b03 100644 --- a/adaptors/library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30.html +++ b/adaptors/library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Register Participant (Skillz)

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataPath, dataValue, each, field, fields, lastReferenceValue, map, merge, query, relationship, upsert, Array

Expression

query(
`SELECT Id, Name, CommCare_Ext_ID__c FROM Event__c WHERE CommCare_Case_ID__c = '${state.data.form.case['@case_id']}'`
);

fn(state => {
// Note: lastReferenceValue selects the first item in the references array.
state.data.eventName = lastReferenceValue('records[0].CommCare_Ext_ID__c')(state);
state.data.eventCase = dataValue('form.case.@case_id')(state);

function replaceAccents(input) {
return input
.replace(/á|â|ã|à/, 'a')
.replace(/Á|Â|Ã|À/, 'A')
.replace(/ç/, 'c')
.replace(/é|ê/, 'e')
.replace(/É|Ê/, 'E')
.replace(/í/, 'i')
.replace(/Í/, 'I')
.replace(/ó|ô|õ/, 'o')
.replace(/Ó|Ô|Õ/, 'O')
.replace(/ú/, 'u')
.replace(/Ú/, 'u');
}

function objectToArray(object) {
return !Array.isArray(object) ? [object] : object;
}

const { form } = state.data;
if (form.question1) {
console.log('Ensuring that "question1" is an array.');
form.question1 = objectToArray(form.question1);
} else if (!form.new_participants) {
console.log('Nothing to upsert. No participants were registered');
} else {
console.log('Shifting "new_participants" to "question1" array.');
form.question1 = objectToArray(form.new_participants);
console.log('Creating a "case" object inside each item in that array.');
form.question1 = form.question1.map(item => ({
...item,
case: item.create_skillz_plus_participant.case,
}));
}

console.log('Done with initial data manipulation.');
const persons = merge(
dataPath('form.question1[*]'),
fields(field('intervention_notes_to_save', dataValue('form.intervention_notes_to_save')))
)(state);

const attendances = merge(
dataPath('form.question1[*]'),
fields(
field('intervention_name', dataValue('form.intervention_name')),
field('eventCase', dataValue('eventCase')),
field('eventName', dataValue('eventName'))
)
)(state);

return { ...state, persons, attendances, replaceAccents };
});

each(
'persons[*]',
upsert(
'Person__c',
'Participant_Identification_Number_PID__c',
fields(
field('Notes__c', dataValue('intervention_notes_to_save')),
field('First_Name__c', dataValue('participant_first_name')),
field('Surname__c', dataValue('participant_surname')),
relationship('RecordType', 'Name', 'Participant'),
relationship('Site__r', 'CommCare_Ext_ID__c', dataValue('grp_location.site_id')),
field('Participant_Identification_Number_PID__c', state => state.data.case['@case_id']),
field('Sex__c', dataValue('gender')),
field('Mobile_Number_1__c', dataValue('mobile_number')), //QUESTION: In CommCare, phone doesn't look like it's saving?
field('School_name_person__c', dataValue('school_name')),
field('Date_of_Birth__c', dataValue('date_of_birth')),
field('School_name_person__c', dataValue('school_name')),
field('Physical_Address__c', dataValue('participants_home_address'))
//field('Age__c', dataValue('form.question1.age_in_years')), //This is a SF formula field, cannot map
)
)
);

each(
'attendances[*]',
upsert(
'Attendance__c',
'CommCare_Ext_ID__c',
fields(
field('CommCare_Ext_ID__c', state => {
const eventid = state.replaceAccents(`${state.data.intervention_name}` || `${state.data.eventName}`); //dataValue('intervention_name')(state) || `${state.data.eventName}`;
const personid = state.data.case['@case_id'];
const value = personid + '-' + eventid.replace(/\//gi, '');
return scrubEmojis(value, '');
}),
relationship(
//Attendance looks up to Persn via the case_id
'Person_Attendance__r',
'Participant_Identification_Number_PID__c',
state => state.data.case['@case_id']
),
relationship(
//Attendance looks up to Event via the Event case_id
'Event__r',
'CommCare_Case_ID__c',
state => `${state.data.eventCase}`
),
// relationship(
// //Attendance looks up to Event via the intervention_name
// 'Event__r',
// 'CommCare_Ext_ID__c',
// state => `${state.data.intervention_name}` || `${state.data.eventName}`
// ),
field('Date_of_Birth__c', dataValue('date_of_birth'))
)
)
);

//First we insert Person record
// fn(state => {
// return upsert(
// 'Person__c',
// 'Participant_Identification_Number_PID__c',
// fields(
// field('Notes__c', dataValue('form.intervention_notes_to_save')),
// field('First_Name__c', dataValue('form.question1.participant_first_name')),
// field('Surname__c', dataValue('form.question1.participant_surname')),
// relationship('RecordType', 'Name', 'Participant'),
// field('Participant_Identification_Number_PID__c', state => state.data.case['@case_id']),
// field('Sex__c', dataValue('form.question1.gender')),
// //field('Age__c', dataValue('form.question1.age_in_years')), //This is a SF formula field, cannot map
// field('Mobile_Number_1__c', dataValue('form.question1.mobile_number')),
// field('School_name_person__c', dataValue('form.question1.school_name'))
// )
// )(state);
// });

// fn(state => {
// //Then we upsert related Attendance records
// return upsert(
// 'Attendance__c',
// 'CommCare_Ext_ID__c',
// fields(
// field('CommCare_Ext_ID__c', state => {
// var eventid = dataValue('form.intervention_name')(state);
// var personid = dataValue('form.case.@case_id')(state);
// return personid + '-' + eventid;
// }),
// relationship(
// //Attendance looks up to Persn via the case_id
// 'Person_Attendance__r',
// 'Participant_Identification_Number_PID__c',
// dataValue('form.case.@case_id')
// ),
// relationship(
// //Attendance looks up to Event via the intervention_name
// 'Event__r',
// 'Name',
// dataValue('form.intervention_name')
// ),
// field('Date_of_Birth__c', dataValue('form.question1.date_of_birth'))
// )
// )(state);
// });

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30.html b/adaptors/library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30.html index 81f5b81e5a0..b87f0a5fee4 100644 --- a/adaptors/library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30.html +++ b/adaptors/library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Register Skills plus Club

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

alterState, dataValue, field, fields, join, map, relationship, upsert

Expression

// push to production
alterState((state) => {

function clean(str) {
if (!!str)
return str
.split('_')
.map(word => {
let new_word = word.toString().toLowerCase();
return new_word.slice(0, 1).toUpperCase() + new_word.slice(1);
})
.join(' ');
}

const coachFieldNames = ['Coach_A__r','Coach_B__r','Coach_C__r','Coach_D__r']

state.data.destinationCoachFields = state.data.form.coaches
.split(' ')
.reduce(
(accumulator, currentValue, currentIndex) => [
...accumulator,
(currentIndex < coachFieldNames.length && !!currentValue
? relationship(coachFieldNames[currentIndex], 'CommCare_Ext_ID__c', currentValue)
: []),
],
[]
);

return state;
});



upsert(
'Event__c',
'CommCare_Case_ID__c',
state=>({
...fields(
field('Name', dataValue('form.name_of_skillz_plus_club')),
field('CommCare_Ext_ID__c', dataValue('form.name_of_skillz_plus_club')),
field('CommCare_Case_ID__c', dataValue('form.case.@case_id')),
relationship('RecordType', 'Name', 'Intervention'),
relationship('Site__r', 'CommCare_Ext_ID__c', dataValue('form.skillz_plus_site')),
relationship('Venue__r', 'CommCare_Ext_ID__c', dataValue('form.skillz_plus_venue')),
),
...fields(...state.data.destinationCoachFields)
})
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25.html b/adaptors/library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25.html index b81083c9e9e..67962fbdd7b 100644 --- a/adaptors/library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25.html +++ b/adaptors/library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Risk & Vulnerability Assessment | Service Referral

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: Upsert Risk & Vulnerability Assessment | Service Referral
  • Adaptor: @openfn/language-salesforce
  • Adaptor Version: v2.7.4
  • Created over 2 years ago
  • Updated over 1 year ago
  • Score: 78 (an indicator of how useful this job may be)

Key Functions

alterState, dataValue, field, fields, join, map, relationship, upsertIf, Array

Expression

// Your job goes here.
alterState(state => {
function split(str, separator) {
if (!str) {
return [];
} else {
return str.toString().split(separator);
}
}
function checked(key, str) {
if (!str) return false;
return split(str.toString(), ' ').indexOf(key) >= 0;
}

function capitalizeFirstLetter(str) {
if (!str) return;
let new_str = str.toString().toLowerCase();
return new_str.slice(0, 1).toUpperCase() + new_str.slice(1);
}

function transformDont(str) {
if (!str) return str;
return split(str.toString(), '_')
.map(word => word.replace(/dont/i, "don't"))
.join('_')
.toString()
.trim();
}

function transformCant(str) {
if (!str) return str;
return split(str.toString(), '_')
.map(word => word.replace(/cant/i, "can't"))
.join('_')
.toString()
.trim();
}

function splitAndJoin(str, splitDelimiter, joinDelimiter) {
if (!str) return;

return split(str.toString(), splitDelimiter).join(joinDelimiter).toString().trim();
}

function transformHowOften(str) {
if (!str) return;
if (str === 'special_occasions') return 'Special Occasions';
if (str === 'no_dont_want_to_disclose') return "Don't want to disclose";
if (str === 'dont_want_to_disclose') return "Don't want to disclose";
return transformGenericText(str).toString().trim();
}

function transformHIVStatus(status) {
switch (status) {
case 'yes_negative':
return 'Yes,Negative';
case 'yes_positive':
return 'Yes,Positive';
case 'no_i_dont':
return "No,I don't know";
case 'yes_dont_want_to_disclose':
return "Yes, don't want to disclose";
default:
return;
}
}

function transformLastTested(str) {
if (!str) return;
switch (str.toString()) {
case 'yes_negative':
return 'Yes,Negative';
case 'yes_positive':
return 'Yes,Positive';
case 'no_i_dont':
return "No,I don't know";
case 'yes_dont_want_to_disclose':
return "Yes, don't want to disclose";
default:
return;
}
}

function transformMonthAgo(str) {
if (!str) return;
switch (str) {
case 'month_ago':
return '1 month ago';
case 'months_ago':
return '3 months ago';
case 'month_ago':
return 'copy-1-of-months_ago ';
case 'month_ago':
return '6 months ago';
case 'a_year_or_more_ago':
return 'A year or more';
default:
return;
}
}

function transformGenericText(str) {
if (!str) return;
return capitalizeFirstLetter(splitAndJoin(transformDont(str), '_', ' '))
.toString()
.trim();
}

function transformRange(range) {
if (!range) return;
return range
.toString()
.replace(/\d_\d/i, match => match.replace('_', '-'))
.toString()
.trim();
}

function transformAgeRange(range) {
if (!range) return;
if (range === '10_years') return '< 10 years';
if (range === 'greater_than_19') return '> 19 years';
return capitalizeFirstLetter(transformDont(transformCant(splitAndJoin(transformRange(range), '_', ' '))))
.toString()
.trim();
}

function transformAbuseExperienced(str) {
if (!str) return;
return split(str, ' ')
.map(word => capitalizeFirstLetter(word))
.join(';')
.toString()
.trim();
}

function getAge(dateString) {
if (!dateString) return;

const today = new Date();
const birthDate = new Date(dateString);
var age = today.getFullYear() - birthDate.getFullYear();
var m = today.getMonth() - birthDate.getMonth();
if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
age--;
}
return age;
}

state.data.perform_a_risk_assessment = state.data.form.do_you_want_to_perform_a_risk_assessment === 'yes';

state.data.complete_service_referrals = state.data.form.referral_services ? true : false;

state.data.form.client_information.gender = capitalizeFirstLetter(state.data.form.client_information.gender);

state.helperFunctions = {
split,
checked,
transformAgeRange,
transformHIVStatus,
transformLastTested,
transformMonthAgo,
transformGenericText,
transformDont,
splitAndJoin,
transformHowOften,
transformAbuseExperienced,
getAge,
};
return state;
});

upsertIf(
dataValue('perform_a_risk_assessment'),
'Risk_Assessment__c',
'CommCare_Ext_ID__c',
fields(
field('CommCare_Ext_ID__c', dataValue('id')),
field('Date__c', dataValue('form.risk_assessment.date')),
field('Participant_Name__c', dataValue('form.client_information.participant_full_name')),
field('Participant_Age__c', state => {
const dob = dataValue('form.client_information.date_of_birth')(state);

return state.helperFunctions.getAge(dob);
}),
relationship('Site2__r', 'CommCare_Ext_ID__c', dataValue('form.client_information.site')),

relationship('Venue__r', 'CommCare_Ext_ID__c', dataValue('form.client_information.venue')),

field('Participant_Sex__c', dataValue('form.client_information.gender')),
field('X1_0_Sexually_Active_past_12_month__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.risk_assessment.sexual_risk_and_pregnancy.sexually_active_12_months')(state)
)
),
field('X1_1_Age_at_first_sex__c', state =>
state.helperFunctions.transformAgeRange(
dataValue('form.risk_assessment.sexual_risk_and_pregnancy.age_at_first_sex')(state)
)
),
field('X1_2_Have_you_ever_had_unprotected_sex__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.risk_assessment.sexual_risk_and_pregnancy.have_you_ever_had_unprotected_sex')(state)
)
),
field('X1_3_Sex_for_monetary_or_material_benefi__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.risk_assessment.sexual_risk_and_pregnancy.sex_monetary_material')(state)
)
),
field('Do_you_know_your_HIV_status__c', state =>
state.helperFunctions.transformHIVStatus(
dataValue('form.risk_assessment.hiv_status.do_you_know_your_hiv_status')(state)
)
),
field('X2_1_When_last_did_you_test_for_HIV__c', state =>
state.helperFunctions.transformMonthAgo(
dataValue('form.risk_assessment.hiv_status.when_last_did_you_test_for_hiv')(state)
)
),
field('X2_2_Are_you_on_treatment_ART__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.risk_assessment.hiv_status.are_you_on_treatment_art')(state)
)
),
field('X3_0_Had_an_STI_in_the_last_12months_yea__c', state =>
state.helperFunctions.transformHowOften(dataValue('form.risk_assessment.sti_and_pep.hiv_last_12_months')(state))
),
field('X3_1_Past_12_months_sex_HIV_status_part__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.risk_assessment.sti_and_pep.knowing_partners_hiv_status')(state)
)
),
field('X4_0_Forms_of_abuse_experienced_before__c', state => {
const abusesArray = state.helperFunctions.split(
dataValue('form.risk_assessment.gender_based_violence.abuse_experienced')(state),
' '
);
const abuses = [];
abusesArray.forEach(ab => {
abuses.push(state.helperFunctions.transformGenericText(ab));
});
return abuses.join(';');
}),
field('X4_1_Feel_unsafe_any1_interact_with_ofte__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.risk_assessment.gender_based_violence.unsafe_with_others')(state)
)
),
field('X4_2_Of_what_relationship_person_to_you__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.risk_assessment.gender_based_violence.relationship_of_abuser')(state)
)
),
field('X5_0_Do_you_take_alcohol_or_drugs__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.risk_assessment.drugs_and_alcohol_use.do_you_take_alcohol_andor_drugs')(state)
)
),
field('X5_1_On_average_how_often_drink_alcohol__c', state =>
state.helperFunctions.transformHowOften(
dataValue('form.risk_assessment.drugs_and_alcohol_use.how_often_alcohol')(state)
)
),
field('X5_2_On_average_how_often_take_drugs__c', state =>
state.helperFunctions.transformHowOften(
dataValue('form.risk_assessment.drugs_and_alcohol_use.how_often_drugs')(state)
)
),
field('X5_3_Easy_for_teens_to_obtain_alcohol__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.risk_assessment.drugs_and_alcohol_use.alcohol_19')(state)
)
),
field('X5_4__c', state =>
state.helperFunctions.transformGenericText(
dataValue('form.risk_assessment.drugs_and_alcohol_use.illegal_drugs_19')(state)
)
)
)
);

fn(state => {
state.data.intervention_name = state.data.form.client_information.intervention_name
? [relationship('Event__r', 'CommCare_Ext_ID__c', dataValue('form.client_information.intervention_name'))]
: [];

return state;
});

upsertIf(dataValue('complete_service_referrals'), 'NewReferral__c', 'CommCare_Ext_ID__c', state => ({
...fields(
field('CommCare_Ext_ID__c', state => {
if (state.data.form.subcase_0.case) return state.data.form.subcase_0.case['@case_id'];
else if (state.data.form.referral_services) {
if (state.data.form.referral_services.art_support_services.skillz_plus_club_details)
return state.data.form.referral_services.art_support_services.skillz_plus_club_details
.create_skillz_plus_club_participant_case.case['@case_id'];
}
return undefined;
}),
field('Participants_Full_Name__c', dataValue('form.client_information.participant_full_name')),
field('Service_Provider_Name__c', dataValue('form.client_information.coach_name')),
field('Parent_Guardian_Full_Name__c', dataValue('form.parent__guardian_information.parent__guardian_full_name')),
field('Relationship__c', dataValue('form.parent__guardian_information.relationship_to_client')),
//field('', dataValue('form.parent__guardian_information.please_specify')),
field('Parent_Guardian_Contact_Number__c', dataValue('form.parent__guardian_information.contact_number')),
//field('', dataValue('form.parent__guardian_information.guardian_consent')),
field('Institution_Referred_To_1__c', dataValue('form.referral_information.institution_referred_to')),
field('Institution_Referred_To_2__c', dataValue('form.referral_information.copy-1-of-institution_referred_to')),
field('Institution_Referred_To_3__c', dataValue('form.referral_information.copy-2-of-institution_referred_to')),
field('HIV_Testing_Services_GRS_Staff__c', state =>
state.helperFunctions.checked(
'hiv_testing_services',
dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
)
),
field('HIV_Other__c', dataValue('form.referral_services.hiv_support__care.please_specify')),
field('ART_Initiation_GRS_Staff__c', state =>
state.helperFunctions.checked(
'art_initiationenrollment',
dataValue('form.referral_services.art_support_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('SKILLZ_Plus_Club_Support_GRS_Staff__c', state =>
state.helperFunctions.checked(
'grs_skillz_plus_club',
dataValue('form.referral_services.art_support_services.skillz_plus_club_option')(state)
)
),
field('PMTCT_GRS_Staff__c', state =>
state.helperFunctions.checked(
'pmtct',
dataValue('form.referral_services.art_support_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('VMMC_GRS_Staff__c', state =>
state.helperFunctions.checked(
'vmmc',
dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
)
),
field('TB_Screening_GRS_Staff__c', state =>
state.helperFunctions.checked(
'tb_screening_treatment_adherence',
dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
)
),
field('Legal_Other__c', dataValue('form.referral_services.legal_services.please_specify_other_legal')),
field('Post_Exposure_Prophylaxis_GRS_Staff__c', state =>
state.helperFunctions.checked(
'post_exposure_prophylaxis',
dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
)
),
field('PrEP_GRS_Staff__c', state =>
state.helperFunctions.checked(
'prep',
dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
)
),
field('HIV_STI_PREVENTION_Other_GRS_Staff__c', state =>
state.helperFunctions.checked(
'other',
dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
)
),
field('HIV_Other__c', dataValue('form.referral_services.hiv_support__care.please_specify')),
field(
'Victim_Friendly_Services_GRS_Staff__c',
state =>
state.helperFunctions.checked(
'suspected_abuse_reported_police_court_other_authority',
dataValue(
'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
)(state)
) ||
state.helperFunctions.checked(
'post_violence_care_medical_legal_counseling',
dataValue(
'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
)(state)
) ||
state.helperFunctions.checked(
'child_support_grant_social_foster_general_support',
dataValue(
'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
)(state)
) ||
state.helperFunctions.checked(
'other',
dataValue(
'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
)(state)
)
),

field('Sexual_and_GBV_Abuse_GRS_Staff__c', state =>
state.helperFunctions.checked(
'sexual__gender-based_violenceabus',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
)
),

// field('missing in SF', dataValue('form.referral_services.child_protection_support_services.type_of_post_violence_care')),
// field('missing in SF', dataValue('form.referral_services.child_protection_support_services.child_support_grant_for')),
field(
'Legal_Services_Other_GRS_Staff__c',
state =>
state.helperFunctions.checked(
'other',
dataValue('form.referral_services.legal_services.legal_services')(state)
) ||
state.helperFunctions.checked('id', dataValue('form.referral_services.legal_services.legal_services')(state)) ||
state.helperFunctions.checked(
'birth_bertificate',
dataValue('form.referral_services.legal_services.legal_services')(state)
)
),
field('Legal_Other__c', dataValue('form.referral_services.legal_services.please_specify_other_legal')),
field('IPTG_Health_Facility__c', state =>
state.helperFunctions.checked(
'iptg_to_health_facility',
dataValue('form.referral_services.mental_health_services.mental_health_select_services')
)
),
field('IPTG_Specialized_to_SMZ__c', state =>
state.helperFunctions.checked(
'iptg_specialised_to_smz',
dataValue('form.referral_services.mental_health_services.mental_health_select_services')
)
),
field('STI_Screen_Testing_GRS_Staff__c', state =>
state.helperFunctions.checked(
'sti_screening_diagnosis_treatment',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('Contraception_Family_Plan_GRS_Staff__c', state =>
state.helperFunctions.checked(
'contraceptivesfamily_planning',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('Cervical_Cancer_Screening_GRS_Staff__c', state =>
state.helperFunctions.checked(
'cervical_cancer_screening',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('HPV_vaccine_GRS_Staff__c', state =>
state.helperFunctions.checked(
'hpv',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('Antenatal_Care_ANC_GRS_Staff__c', state =>
state.helperFunctions.checked(
'antenatal_care_anc',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
)
),

field(
'Psycho_Social_Support_GRS_Staff__c',
state =>
state.helperFunctions.checked(
'drug_or_alcohol_abuse',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
) ||
state.helperFunctions.checked(
'psychiatric_careintensive_counseling',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
) ||
state.helperFunctions.checked(
'psychosocial_support',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('Psycho_Social_Services_Other_GRS_Staff__c', state =>
state.helperFunctions.checked(
'other',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('Psycho_Other__c', dataValue('form.referral_services.other_srhr_services.please_specify_srhr_referred')),

field('Date_Referred__c', dataValue('form.follow-up.date_referred')),
field('Expected_Visit_Date__c', dataValue('form.follow-up.expected_visit_date')),
field('Client_Follow_up_Consent_given__c', state =>
state.helperFunctions.checked('client_follow-up_consent_given', dataValue('form.follow-up.select')(state))
),
field('Client_Linked_to_care__c', state =>
state.helperFunctions.checked('client_linked_to_care', dataValue('form.follow-up.select')(state))
),

field('Business_Unit_Site__c', state => {
const bu = dataValue('form.client_information.business_unit')(state);
return bu === '65680f0c4c144b03ad0f86bdc46c1ebc'
? 'GRS Zambia'
: bu === '04d98397e28046118fade28ced6b65cb'
? 'GRS Zimbabwe'
: bu === 'ed125ab19ec34aacab79585e59eb76f4'
? 'GRS Partnerships'
: undefined;
})
),
...fields(...state.data.intervention_name),
}));

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Service-Referral-2-2021-06-14.html b/adaptors/library/jobs/auto/Upsert-Service-Referral-2-2021-06-14.html index dc63b46d6b3..8f711b819e1 100644 --- a/adaptors/library/jobs/auto/Upsert-Service-Referral-2-2021-06-14.html +++ b/adaptors/library/jobs/auto/Upsert-Service-Referral-2-2021-06-14.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Service Referral 2

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

alterState, dataValue, field, fields, upsert

Expression

// push to production
alterState(state => {
state.data.external_commcare_id = (
dataValue('form.hidden_properties.intervention_name')(state) +
dataValue('form.hidden_properties.participant_first_name')(state) +
dataValue('form.hidden_properties.participant_surname')(state)
)
.toString()
.toLowerCase()
.replace(/\s/g, '')
.trim();

return state;
});

upsert(
'NewReferral__c',
'CommCare_Ext_ID__c',
fields(
field('Business_Unit_Site__c', state => {
const bu = dataValue('form.business_unit')(state);
return bu === 'X' ? 'GRS Zambia' : bu;
}),
field('CommCare_Ext_ID__c', dataValue('form.case.@case_id')),
field('HIV_Testing_Services_Service_Provider__c', state =>
Boolean(
dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option1')(state)
)
),
field('TB_Screening_Service_Provider__c', state =>
Boolean(
dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option2')(state)
)
),
field('VMMC_Service_Provider__c', state =>
Boolean(
dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option3')(state)
)
),
field('Post_Exposure_Prophylaxis_Service_Provid__c', state =>
Boolean(
dataValue(
'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option4'
)(state)
)
),
field('PrEP_Service_Provider__c', state =>
Boolean(
dataValue(
'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option5'
)(state)
)
),
field('HIV_STI_PREVENTION_Other_Service_Provid__c', state =>
Boolean(
dataValue(
'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option6'
)(state)
)
),
field('ART_Initiation_Service_Provider__c', state =>
Boolean(
dataValue('form.referral_services.art_support_services.art_services_group.art_services_option1')(
state
)
)
),
field('SKILLZ_Plus_Club_Support_Service_Provid__c', state =>
Boolean(
dataValue('form.referral_services.art_support_services.art_services_group.art_services_option2')(
state
)
)
),

field(
'PMTCT_Service_Provider__c',
state =>
Boolean(
dataValue('form.referral_services.art_support_services.art_services_group.art_services_option3')(
state
)
)
),
field('IPTG_Health_Facility__c', state =>
Boolean(
dataValue('form.referral_services.mental_health_services.confirmation_of_services_provided_label.mental_health_select_services_option1')(
state
)
)
),
field('IPTG_Specialized_to_SMZ__c', state =>
Boolean(
dataValue('form.referral_services.mental_health_services.confirmation_of_services_provided_label.mental_health_select_services_option2')(
state
)
)
),

field('ART_Services_Other_Service_Provider__c', state =>
Boolean(
dataValue('form.referral_services.art_support_services.referred_art_support_services')(state)
)
),
field(
'Victim_Friendly_Services_Service_Provide__c',
state =>
Boolean(
dataValue(
'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option1'
)(state)
) ||
Boolean(
dataValue(
'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option2'
)(state)
) ||
Boolean(
dataValue(
'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option3'
)(state)
)
),
field('Legal_Services_Other_Service_Provider__c', state =>
Boolean(
dataValue(
'form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option3'
)(state)
)
),

field('STI_Screen_Testing_Service_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option1')(state))
),

field('Contraception_Family_Plan_Servi_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option2')(state))
),
field('Cervical_Cancer_Screen_Servi_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option3')(state))
),
field('HPV_vaccine_Service_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option4')(state))
),
field('Antenatal_Care_ANC_Service_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option5')(state))
),
field('Sexual_and_GBV_Abuse_Servi_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option6')(state))
),
field(
'Psycho_Social_Support_Service_Provider__c',
state =>
Boolean(
dataValue(
'form.referral_services.other_srhr_services.service_label.srhr_option9'
)(state)
) ||
Boolean(
dataValue(
'form.referral_services.other_srhr_services.service_label.srhr_option8'
)(state)
) ||
Boolean(
dataValue(
'form.referral_services.other_srhr_services.service_label.srhr_option7'
)(state)
)
),
field('Psycho_Social_Services_Other_Service_Pro__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option10')(state))
),
field(
'Legal_Services_Other_Service_Provider__c',
state =>
Boolean(
dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_referral_services')(state)
) ||
Boolean(
dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option1')(state)
) ||
Boolean(
dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option2')(state)
)
),

)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Service-Referral-2021-04-30.html b/adaptors/library/jobs/auto/Upsert-Service-Referral-2021-04-30.html index a8dca195368..23954977ea4 100644 --- a/adaptors/library/jobs/auto/Upsert-Service-Referral-2021-04-30.html +++ b/adaptors/library/jobs/auto/Upsert-Service-Referral-2021-04-30.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Service Referral

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

alterState, dataValue, field, fields, relationship, upsert

Expression

alterState(state => {
function checked(key, str) {
if (!str) return false;
return str.split(' ').indexOf(key) >= 0;
}

state.helperFunctions = { checked };

function capitalizeFirstLetter(str) {
if (!str) return;
let new_str = str.toString().toLowerCase();
return new_str.slice(0, 1).toUpperCase() + new_str.slice(1);
}

function transform(value) {
if (!value) return;
switch (value.toString().trim()) {
case 'Daughterson':
return 'Daughter/Son';
case 'Other_specify':
return 'Other';
case 'Single_never_married':
return 'Single/Never Married';
case 'Divorced__separated':
return 'Divorced/separated';
default:
return value;
}
}

state.data.form.parent__guardian_information.relationship_to_client = transform(
capitalizeFirstLetter(state.data.form.parent__guardian_information.relationship_to_client)
);

return state;
});

alterState(state => {
if (!state.data.form.subcase_0) {
console.log('No referral services to upsert');
return state;
}
return upsert(
'NewReferral__c',
'CommCare_Ext_ID__c',
fields(
// field('Enter_Partner_s_Name__c', dataValue('form.referral_information.institution_referred_to')),
// field('Type_of_Referral__c', dataValue('form.referral_information.type_of_referral')),
field('Participants_Full_Name__c', dataValue('form.client_registration.participant_full_name')),
//field('Parent_Guardian_Contact_Number__c', dataValue('form.client_registration.mobile_number')),
relationship('Event__r', 'CommCare_Case_ID__c', dataValue('form.event_name')),
field('CommCare_Ext_ID__c', state => {
var subid = state.data.form.subcase_0;
return subid && subid !== '' ? state.data.form.subcase_0.case['@case_id'] : dataValue('id')(state); //Set external id to 'service' subcase if available, otherwise use formid
}),
//field('Venue__c', dataValue('form.client_registration.school_name')),
//field('Grade__c', dataValue('form.client_registration.grade')),
//field('Class__c', dataValue('form.client_registration.class')),
field('Parent_Guardian_Full_Name__c', dataValue('form.parent__guardian_information.parent__guardian_full_name')),
field('Relationship_To_Client__c', dataValue('form.parent__guardian_information.relationship_to_client')),
field('Parent_Guardian_Contact_Number__c', dataValue('form.parent__guardian_information.contact_number')),
field('Institution_Referred_To_1__c', dataValue('form.referral_information.institution_referred_to')),
field('Institution_Referred_To_2__c', dataValue('form.referral_information.copy-1-of-institution_referred_to')),
field('Institution_Referred_To_3__c', dataValue('form.referral_information.copy-2-of-institution_referred_to')),
field('Service_Provider_Name__c', dataValue('form.hidden_props.coach_name')),
field('HIV_Testing_Services_GRS_Staff__c', state =>
state.helperFunctions.checked(
'hiv_testing_services',
dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
)
),
field('VMMC_GRS_Staff__c', state =>
state.helperFunctions.checked(
'vmmc',
dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
)
),
field('TB_Screening_GRS_Staff__c', state =>
state.helperFunctions.checked(
'tb_screening_treatment_adherence',
dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
)
),
field('Post_Exposure_Prophylaxis_GRS_Staff__c', state =>
state.helperFunctions.checked(
'post_exposure_prophylaxis',
dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
)
),
field('PrEP_GRS_Staff__c', state =>
state.helperFunctions.checked(
'prep',
dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
)
),
field('HIV_STI_PREVENTION_Other_GRS_Staff__c', state =>
state.helperFunctions.checked(
'other',
dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
)
),
field('HIV_Other__c', dataValue('form.referral_services.hiv_support__care.please_specify')),
field('ART_Initiation_GRS_Staff__c', state =>
state.helperFunctions.checked(
'art_initiationenrollment',
dataValue('form.referral_services.art_support_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('PMTCT_GRS_Staff__c', state =>
state.helperFunctions.checked(
'pmtct',
dataValue('form.referral_services.art_support_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('SKILLZ_Plus_Club_Support_GRS_Staff__c', state =>
state.helperFunctions.checked(
'grs_skillz_plus_club',
dataValue('form.referral_services.art_support_services.skillz_plus_club_option')(state)
)
),
field(
'Victim_Friendly_Services_GRS_Staff__c',
state =>
state.helperFunctions.checked(
'suspected_abuse_reported_police_court_other_authority',
dataValue(
'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
)(state)
) ||
state.helperFunctions.checked(
'post_violence_care_medical_legal_counseling',
dataValue(
'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
)(state)
) ||
state.helperFunctions.checked(
'child_support_grant_social_foster_general_support',
dataValue(
'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
)(state)
) ||
state.helperFunctions.checked(
'other',
dataValue(
'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
)(state)
)
),
field('Business_Unit_Site__c', state => {
const bu = dataValue('form.business_unit')(state);
return bu === '65680f0c4c144b03ad0f86bdc46c1ebc'
? 'GRS Zambia'
: bu === '04d98397e28046118fade28ced6b65cb'
? 'GRS Zimbabwe'
: bu === 'ed125ab19ec34aacab79585e59eb76f4'
? 'GRS Partnerships'
: undefined;
}),
field(
'Sexual_and_GBV_Abuse_GRS_Staff__c',
dataValue('form.referral_services.child_protection_support_services.abuse_reported_to')
),

field('Legal_Other__c', dataValue('form.referral_services.legal_services.please_specify_other_legal')),
field(
'Legal_Services_Other_GRS_Staff__c',
state =>
state.helperFunctions.checked(
'other',
dataValue('form.referral_services.legal_services.legal_services')(state)
) ||
state.helperFunctions.checked(
'id',
dataValue('form.referral_services.legal_services.legal_services')(state)
) ||
state.helperFunctions.checked(
'birth_bertificate',
dataValue('form.referral_services.legal_services.legal_services')(state)
)
),
field('STI_Screen_Testing_GRS_Staff__c', state =>
state.helperFunctions.checked(
'sti_screening_diagnosis_treatment',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('Contraception_Family_Plan_GRS_Staff__c', state =>
state.helperFunctions.checked(
'contraceptivesfamily_planning',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('Cervical_Cancer_Screening_GRS_Staff__c', state =>
state.helperFunctions.checked(
'cervical_cancer_screening',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('HPV_vaccine_GRS_Staff__c', state =>
state.helperFunctions.checked(
'hpv',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('Antenatal_Care_ANC_GRS_Staff__c', state =>
state.helperFunctions.checked(
'antenatal_care_anc',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('Sexual_and_GBV_Abuse_GRS_Staff__c', state =>
state.helperFunctions.checked(
'based_violenceabus',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
)
),
field(
'Psycho_Social_Support_GRS_Staff__c',
state =>
state.helperFunctions.checked(
'drug_or_alcohol_abuse',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(
state
)
) ||
state.helperFunctions.checked(
'psychiatric_careintensive_counseling',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(
state
)
) ||
state.helperFunctions.checked(
'psychosocial_support',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(
state
)
)
),
field('Psycho_Social_Services_Other_GRS_Staff__c', state =>
state.helperFunctions.checked(
'other',
dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
)
),
field('Psycho_Other__c', dataValue('form.referral_services.other_srhr_services.please_specify_srhr_referred')),
field('Date_Referred__c', dataValue('form.follow-up.date_referred')),
field('Expected_Visit_Date__c', dataValue('form.follow-up.expected_visit_date')),
field('Client_Follow_up_Consent_given__c', state =>
state.helperFunctions.checked('client_follow-up_consent_given', dataValue('form.follow-up.select')(state))
),
field('Client_Linked_to_care__c', state =>
state.helperFunctions.checked('client_linked_to_care', dataValue('form.follow-up.select')(state))
)
)
)(state);
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30.html b/adaptors/library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30.html index 1d86eb9b4d4..6820ef4aca1 100644 --- a/adaptors/library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30.html +++ b/adaptors/library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Service Referral Followup

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

alterState, dataValue, field, fields, upsert

Expression

// push to production
alterState(state => {
state.data.external_commcare_id = (
dataValue('form.hidden_properties.intervention_name')(state) +
dataValue('form.hidden_properties.participant_first_name')(state) +
dataValue('form.hidden_properties.participant_surname')(state)
)
.toString()
.toLowerCase()
.replace(/\s/g, '')
.trim();

return state;
});

upsert(
'NewReferral__c',
'CommCare_Ext_ID__c',
fields(
field('Business_Unit_Site__c', state => {
const bu = dataValue('form.business_unit')(state);
return bu === 'X' ? 'GRS Zambia' : bu;
}),
field('CommCare_Ext_ID__c', dataValue('form.case.@case_id')),
field('HIV_Testing_Services_Service_Provider__c', state =>
Boolean(
dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option1')(state)
)
),
field('TB_Screening_Service_Provider__c', state =>
Boolean(
dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option2')(state)
)
),
field('VMMC_Service_Provider__c', state =>
Boolean(
dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option3')(state)
)
),
field('Post_Exposure_Prophylaxis_Service_Provid__c', state =>
Boolean(
dataValue(
'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option4'
)(state)
)
),
field('PrEP_Service_Provider__c', state =>
Boolean(
dataValue(
'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option5'
)(state)
)
),
field('HIV_STI_PREVENTION_Other_Service_Provid__c', state =>
Boolean(
dataValue(
'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option6'
)(state)
)
),
field('ART_Initiation_Service_Provider__c', state =>
Boolean(
dataValue('form.referral_services.art_support_services.art_services_group.art_services_option1')(
state
)
)
),
field('SKILLZ_Plus_Club_Support_Service_Provid__c', state =>
Boolean(
dataValue('form.referral_services.art_support_services.art_services_group.art_services_option2')(
state
)
)
),

field(
'PMTCT_Service_Provider__c',
state =>
Boolean(
dataValue('form.referral_services.art_support_services.art_services_group.art_services_option3')(
state
)
)
),
field('IPTG_Health_Facility__c', state =>
Boolean(
dataValue('form.referral_services.mental_health_services.confirmation_of_services_provided_label.mental_health_select_services_option1')(
state
)
)
),
field('IPTG_Specialized_to_SMZ__c', state =>
Boolean(
dataValue('form.referral_services.mental_health_services.confirmation_of_services_provided_label.mental_health_select_services_option2')(
state
)
)
),

field('ART_Services_Other_Service_Provider__c', state =>
Boolean(
dataValue('form.referral_services.art_support_services.referred_art_support_services')(state)
)
),
field(
'Victim_Friendly_Services_Service_Provide__c',
state =>
Boolean(
dataValue(
'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option1'
)(state)
) ||
Boolean(
dataValue(
'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option2'
)(state)
) ||
Boolean(
dataValue(
'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option3'
)(state)
)
),
field('Legal_Services_Other_Service_Provider__c', state =>
Boolean(
dataValue(
'form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option3'
)(state)
)
),

field('STI_Screen_Testing_Service_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option1')(state))
),

field('Contraception_Family_Plan_Servi_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option2')(state))
),
field('Cervical_Cancer_Screen_Servi_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option3')(state))
),
field('HPV_vaccine_Service_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option4')(state))
),
field('Antenatal_Care_ANC_Service_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option5')(state))
),
field('Sexual_and_GBV_Abuse_Servi_Provider__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option6')(state))
),
field(
'Psycho_Social_Support_Service_Provider__c',
state =>
Boolean(
dataValue(
'form.referral_services.other_srhr_services.service_label.srhr_option9'
)(state)
) ||
Boolean(
dataValue(
'form.referral_services.other_srhr_services.service_label.srhr_option8'
)(state)
) ||
Boolean(
dataValue(
'form.referral_services.other_srhr_services.service_label.srhr_option7'
)(state)
)
),
field('Psycho_Social_Services_Other_Service_Pro__c', state =>
Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option10')(state))
),
field(
'Legal_Services_Other_Service_Provider__c',
state =>
Boolean(
dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_referral_services')(state)
) ||
Boolean(
dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option1')(state)
) ||
Boolean(
dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option2')(state)
)
),

)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-Team-Group-Name-2021-04-28.html b/adaptors/library/jobs/auto/Upsert-Team-Group-Name-2021-04-28.html index d64e61eb018..6c06641fdd2 100644 --- a/adaptors/library/jobs/auto/Upsert-Team-Group-Name-2021-04-28.html +++ b/adaptors/library/jobs/auto/Upsert-Team-Group-Name-2021-04-28.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert Team/Group Name

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataValue, field, fields, relationship, upsert

Expression

// Upsert event by unique 'Name'
upsert(
'Event__c',
'CommCare_Case_ID__c',
fields(
field(
'Class_Group_Team__c',
dataValue('form.question_group.group__team_name')
),
relationship('RecordType', 'Name', 'Intervention'),
field(
'CommCare_Case_ID__c',
dataValue('form.case.@case_id')
),
)
);
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16.html b/adaptors/library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16.html index 5a3a33b139b..68b5dda0add 100644 --- a/adaptors/library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16.html +++ b/adaptors/library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert User in Salesforce

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

dataPath, dataValue, each, field, fields, upsert

Expression

//Example job to upsert Users in Salesforce
each('$.users[*]',
dataPath('state.data.users'),
upsert('User', 'Email', fields(
field('Email', dataValue('email')),
field('FirstName', dataValue('firstName')),
field('LastName', dataValue('surname')),
field('Active', 'true')
))
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/Upsert-to-mBrana-2021-05-11.html b/adaptors/library/jobs/auto/Upsert-to-mBrana-2021-05-11.html index 837dfb80fde..d1e16d90eb9 100644 --- a/adaptors/library/jobs/auto/Upsert-to-mBrana-2021-05-11.html +++ b/adaptors/library/jobs/auto/Upsert-to-mBrana-2021-05-11.html @@ -22,13 +22,13 @@ - +
Skip to main content

Upsert to mBrana

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

upsert

Expression

// Your job goes here.
upsert(
'users', // the DB table
'ON CONSTRAINT users_pkey', // a DB column with a unique constraint OR a CONSTRAINT NAME
{ name: 'Elodie', id: 7 },
{ writeSql:true, execute: true }
);
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19.html b/adaptors/library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19.html index c441729a2c8..ec160d9a912 100644 --- a/adaptors/library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19.html +++ b/adaptors/library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19.html @@ -22,13 +22,13 @@ - +
Skip to main content

WF1-1. Bulk get HH cases

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

each, get, map

Expression

fn(state => {
const { baseUrl } = state.configuration;

const caseTypes = ['Household'];

//NOTE: You can use 'limit' to modify this batch size as desired
const limit = 1000;

//NOTE: indexedOnStart is the default sync start data the FIRST time the job runs
const indexedOnStart = '2023-10-22T11:00:00';

//NOTE: After first job run, OpenFn will check the job sync data ("lastRunAt") to set as the indexedOnStart
const lastRunAt =
typeof state.lastRunAt !== 'undefined' ? state.lastRunAt : indexedOnStart;
console.log('Filtering cases with indexed_on_start > than ::', lastRunAt);
//May 31st, 2023 at 3:00:13 PM.
const queries = caseTypes.map(
t => `?type=${t}&indexed_on_start=${lastRunAt}&limit=${limit}`
//NOTE: If for testing, you want to fetch data for a specific historical range (e.g., between April 23 and 24)...
//...then use the query string below instead of the one above on L16, and custom adjust the index_on start/end dates
//t => `?type=${t}&indexed_on_start=2023-03-03T00:00:00&limit=${limit}&indexed_on_end=2023-03-06T00:00:00` //returns 14 records
//t => `?type=${t}&indexed_on_start=2023-07-06T16:00:00&limit=${limit}&indexed_on_end=2023-07-06T16:30:00`
);

return { ...state, queries, baseUrl, payloads: [] };
});

// create a "recursiveGet" which will call itself if CommCare tells us there's
// more data to fetch for the same form
fn(state => {
const recursiveGet = url =>
get(
url,
{
headers: { 'content-type': 'application/json' },
},
nextState => {
const now = new Date();
const { baseUrl, data, payloads } = nextState;

const { meta, objects } = data;
console.log('Metadata in CommCare response:', meta);

const finalState = {
...nextState,
payloads: [...payloads, ...objects],
};

if (meta.next) {
console.log('Next query detected, recursing...');
return recursiveGet(`${baseUrl}${meta.next}`)(finalState);
}
finalState.lastRunAt = now.toISOString().slice(0, 19);
return finalState;
}
);

return { ...state, recursiveGet };
});

// for each initial query, fetch data recursively
each(
'$.queries[*]',
fn(state => {
return state.recursiveGet(`${state.baseUrl}${state.data}`)(state);
})
);
// log the total number of payloads returned
fn(state => {
console.log('Count of payloads', state.payloads.length);

return { ...state, references: [], data: {} };
});
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19.html b/adaptors/library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19.html index 1e0db60fe8a..094fd8fc4ec 100644 --- a/adaptors/library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19.html +++ b/adaptors/library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19.html @@ -22,13 +22,13 @@ - +
Skip to main content

WF1-2. Bulk upsert HHs and HH Visits

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

bulk, join, map, query, JSON

Expression

fn(state => {
if (state.payloads.length == 0)
return { ...state, housevisits: [], households: [] };

const owner_ids = state.payloads.map(data => data.properties.owner_id);
const uniq_owner_ids = [...new Set(owner_ids)];

return { ...state, uniq_owner_ids };
});

fn(state => {
if (state.payloads.length == 0) return state;

return query(
`SELECT CommCare_User_ID__c, Id village, Parent_Geographic_Area__c area, Parent_Geographic_Area__r.Name name, Parent_Geographic_Area__r.Parent_Geographic_Area__c catchment FROM Location__c catchment WHERE CommCare_User_ID__c IN ('${state.uniq_owner_ids.join(
"','"
)}') GROUP BY Id, CommCare_User_ID__c, Parent_Geographic_Area__c, Parent_Geographic_Area__r.Name, Parent_Geographic_Area__r.Parent_Geographic_Area__c`
)(state);
});

fn(state => {
if (state.payloads.length == 0) return state;

console.log('Done querying ✅');

return state;
});

fn(state => {
if (state.payloads.length == 0) return state;

console.log(
'Filtering out unwanted users and applying mapping for households and housevisits'
);

const [reference] = state.references;

// console.log(JSON.stringify(reference.records, null, 2));

const records = reference.records;
const fetchReference = (owner_id, arg) => {
const result =
records && records.length > 0
? records.filter(record => record.CommCare_User_ID__c === owner_id)
: 0;

//TODO: Update default value for 'unknown location' before go-live
return result.length > 0
? result[0][arg]
: 'a000800001tMobaAAC' /*unknown location*/;
};

const supervisorMap = {
community_health_nurse: 'Community Health Nurse',
chw_supervisor: 'CHW Supervisor',
chewschas: 'CHEWs/CHAs',
other: 'Other',
none: 'None',
};

const insuranceMap = {
nhif: 'NHIF',
Linda_mama: 'Linda mama',
other_please_specify_if_active: 'Other',
none: 'None',
};

const households = state.payloads
/* HMN 050723
.filter(
h =>
h.properties.commcare_username !== 'openfn.test' &&
h.properties.commcare_username !== 'test.2021' &&
h.properties.test_user !== 'Yes'
)
*/
.map(h => {
// Special calculations ==================================================
const insuranceStatus = h.properties.health_insurance;
const Health_insurance_type__c =
insuranceStatus && insuranceStatus === 'other_please_specify_if_active'
? 'Other'
: insuranceStatus === 'nhif'
? 'NHIF'
: insuranceStatus === 'Linda_mama' || 'linda_mama'
? 'Linda mama'
: insuranceStatus;

const hhStatus = h.properties.Household_Status;
const Active_Household__c =
hhStatus && hhStatus === 'No'
? false
: hhStatus === 'Yes'
? true
: hhStatus;

const reason = h.properties.Reason_for_Inactive;
const Inactive_Reason__c = reason
? reason.toString().replace(/_/g, ' ')
: null;

/*HMN remove this dependancy 07/07/2023
const chw = h.properties.CHW_ID;
const Household_CHW__c =
chw === 'a030800001zQrk' ? 'a030800001zQrk5' : chw ? chw : undefined;
// =======================================================================
*/
return {
CommCare_Username__c: h.properties.commcare_username,
MOH_household_code__c: h.properties.moh_code,
CommCare_Code__c: h.case_id,
Source__c: true,
// TODO: Prod mapping to add back before go-live =======================
Household_CHW__c: h.properties.CHW_ID, // Uncomment me to go live!
//Household_CHW__c: 'a032400000GHpdsAAD', // Comment me OUT to go live!
// Household_CHW__c: 'a03AW00000643nLYAQ',
// =====================================================================
Catchment__c: fetchReference(h.properties.owner_id, 'catchment'),
Area__c: fetchReference(h.properties.owner_id, 'area'),
Village__c: fetchReference(h.properties.owner_id, 'village'),
Household_Village__c: h.properties.village,
Deaths_in_the_last_6_months__c:
h.properties.deaths_in_past_6_months > 0 ? 'Yes' : 'No',
Access_to_safe_water__c: h.properties.Safe_Water,
Treats_Drinking_Water__c: h.properties.Treats_Drinking_Water,
Tippy_Tap__c: h.properties.Active_Handwashing_Station,
Pit_Latrine__c: h.properties.Functional_Latrine,
Rubbish_Pit__c: h.properties.Rubbish_Pit,
Drying_Rack__c: h.properties.Drying_Rack,
Kitchen_Garden__c: h.properties.Kitchen_Garden,
Cookstove__c: h.properties.Improved_Cooking_Method,
Clothe__c: h.properties.Clothesline,
WASH_Trained__c: h.properties.WASH_Trained,
Uses_ITNs__c: h.properties.ITNs,
Has_muac_tape__c: h.properties.family_muac_tape_available,
Health_insurance__c: h.properties.health_insurace_cover,
Health_insurance_active_status__c: h.properties.healthinsurance_active,
Health_insurance_type__c,
Other_Health_Insurance__c: h.properties.if_other_please_specify,
Work_with_TBA__c: h.properties.tba,
TBA_name__c: h.properties.which_tba,
Last_Modified_Date_CommCare__c: h.server_date_modified, //Need a case property,
Active_Household__c,
Inactive_Reason__c,
Active_in_Nutrition_Program__c:
h.properties.enrolled_in_a_lwala_nutrition_program,
lwala_nutrition_program_enrollment_date__c:
h.properties.lwala_nutrition_program_enrollment_date,
Trained_in_gardening__c: h.properties.household_trained_on_gardening,
household_trained_on_gardening_date__c:
h.properties.when_was_the_household_trained_on_gardening,
Seed_Input_Support__c:
h.properties.household_provided_with_seed_input_support,
household_provided_with_seed_input_suppo__c:
h.properties.when_was_the_household_provided_with_seed_input_support,
MIYCN_Trained__c: h.properties.household_trained_on_MIYC,
// TODO: @Aleksa to find out if Case_Closed_Date__c still exist
Case_Closed_Date__c: h.date_closed && h.date_closed == true
? h.server_modified_on
: undefined
};
});

const housevisits = state.payloads
//HMN remove test user filters
/*
.filter(
h =>
h.properties.commcare_username !== 'openfn.test' &&
h.properties.commcare_username !== 'test.2021' &&
h.properties.test_user !== 'Yes'
)*/
.map(h => {
// Special calculations ==================================================
const visitIdC =
h.case_id + '_' + h.properties.last_form_opened_date_and_time;

const hVstatus = h.properties.Household_Status;
const Active_Household__c =
hVstatus === 'No' ? false : hVstatus === 'Yes' ? true : hVstatus;

const insuranceTypeC = () => {
let status = h.properties.health_insurance;

let value =
status && status !== ''
? status
.replace(/ /gi, ';')
.split(';')
.map(value => {
return insuranceMap[value] || value;
})
: undefined;
return value ? value.join(';') : undefined;
};

const openedC = () => {
const form_opened = h.properties.last_form_opened_date_and_time;

if (form_opened) {
const value1 = form_opened.split('-').slice(0, 2).join('-');
const value2 = form_opened.split('-').slice(2).join('-');
const formattedValue = [value1, value2].join(' ');
return new Date(formattedValue).toISOString();
}
return undefined;
};

return {
CommCare_Username__c: h.properties.commcare_username,
CommCare_Visit_ID__c: visitIdC,
Catchment__c: fetchReference(h.properties.owner_id, 'catchment'),
'Household__r.CommCare_Code__c': h.case_id,
Date__c: h.properties.Date,
Form_Submitted__c: h.properties.last_form_opened_name,
Active_Household__c: Active_Household__c,
Active_in_Nutrition_Program__c:
h.properties.enrolled_in_a_lwala_nutrition_program,
lwala_nutrition_program_enrollment_date__c:
h.properties.lwala_nutrition_program_enrollment_date,
Trained_in_gardening__c: h.properties.household_trained_on_gardening,
household_trained_on_gardening_date__c:
h.properties.when_was_the_household_trained_on_gardening,
Seed_Input_Support__c:
h.properties.household_provided_with_seed_input_support,
household_provided_with_seed_input_suppo__c:
h.properties.when_was_the_household_provided_with_seed_input_support,
MIYCN_Trained__c: h.properties.household_trained_on_MIYCN,
Kitchen_Garden__c: h.properties.Kitchen_Garden,
Access_to_safe_water__c: h.properties.Safe_Water,
Treats_Drinking_Water__c: h.properties.Treats_Drinking_Water,
Tippy_Tap__c: h.properties.Active_Handwashing_Station,
Pit_Latrine__c: h.properties.Functional_Latrine,
Rubbish_Pit__c: h.properties.Rubbish_Pit,
Drying_Rack__c: h.properties.Drying_Rack,
Cookstove__c: h.properties.Improved_Cooking_Method,
Clothe__c: h.properties.Clothesline,
WASH_Trained__c: h.properties.WASH_Trained,
Has_muac_tape__c: h.properties.family_muac_tape_available,
Uses_ITNs__c: h.properties.ITNs,
Supervisor_Visit__c: h.properties.supervisor_visit
? supervisorMap[h.properties.supervisor_visit]
: null,
Health_insurance__c: h.properties.health_insurace_cover,
Health_insurance_active_status__c: h.properties.healthinsurance_active,
Health_insurance_type__c: insuranceTypeC(),

Other_Health_Insurance__c: h.properties.if_other_please_specify,
CommCare_Form_Opened__c: openedC(),

};
});

return { ...state, households, housevisits, fetchReference };
});

/* JSON logging of records
fn(state => {
console.log('HHs to upsert ::', JSON.stringify(state.households));
return state;
});
*/

bulk(
'Household__c',
'upsert',
{
extIdField: 'CommCare_Code__c',
failOnError: true,
allowNoOp: true,
},
state => {
console.log('Bulk upserting households...');
return state.households;
}
);

fn(state => {
if (state.payloads.length == 0) return state;

console.log('house holds bulk upsert done');
return state;
});

// TODO clean up in QA used for troubleshooting
// Uncomment this block to add cooldown
// fn(state => {
// return new Promise((resolve, reject) => {
// setTimeout(() => {
// console.log('4 second cooldown finished.');
// resolve(state);
// }, 4000);
// });
// });

bulk(
'Visit__c',
'upsert',
{
extIdField: 'CommCare_Visit_ID__c',
failOnError: true,
allowNoOp: true,
},
state => {
console.log('Bulk upserting housevisits...');
return state.housevisits;
}
);

fn(state => {
if (state.payloads.length == 0) return state;
console.log('house visits bulk upsert done');
return state;
});

// TODO clean up in QA for troubleshooting
// Uncomment this block to add cooldown
// fn(state => {
// return new Promise((resolve, reject) => {
// setTimeout(() => {
// console.log('Final 4 second cooldown finished.');
// resolve(state);
// }, 4000);
// });
// });
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19.html b/adaptors/library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19.html index 2d76a7db247..caa2eb053df 100644 --- a/adaptors/library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19.html +++ b/adaptors/library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19.html @@ -22,13 +22,13 @@ - +
Skip to main content

WF2-1. Bulk get Person cases

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

each, get, map, JSON

Expression

fn(state => {
const { baseUrl } = state.configuration;

const caseTypes = ['Person'];

//NOTE: You can use 'limit' to modify this batch size as desired
const limit = 1000; //E.g., change to 10 to process records in smaller batch sizes

//NOTE: indexedOnStart is the default sync start data the FIRST time the job runs
const indexedOnStart = '2023-10-22T17:00:00';


//NOTE: After first job run, OpenFn will check the job sync data ("lastRunAt") to set as the indexedOnStart
const lastRunAt =
typeof state.lastRunAt !== 'undefined' ? state.lastRunAt : indexedOnStart;
console.log('Filtering cases with indexed_on_start > than ::', lastRunAt);

const queries = caseTypes.map(
t => `?type=${t}&indexed_on_start=${lastRunAt}&limit=${limit}`
//NOTE: If for testing, you want to fetch data for a specific historical range (e.g., between April 23 and 24)...
//...then use the query string below instead of the one above on L16, and custom adjust the index_on start/end dates
// t => `?type=${t}&indexed_on_start=2023-08-07T00:00:00&limit=${limit}&indexed_on_end=2023-08-07T10:00:00`
);

return { ...state, queries, baseUrl, payloads: [] };
});

// create a "recursiveGet" which will call itself if CommCare tells us there's
// more data to fetch for the same form
fn(state => {
const recursiveGet = url =>
get(
url,
{
headers: { 'content-type': 'application/json' },
},
nextState => {
const now = new Date();
const { baseUrl, data, payloads } = nextState;

const { meta, objects } = data;
console.log('Metadata in CommCare response:', meta);

const finalState = {
...nextState,
payloads: [...payloads, ...objects],
};

if (meta.next) {
console.log('Next query detected, recursing...');
return recursiveGet(`${baseUrl}${meta.next}`)(finalState);
}
finalState.lastRunAt = now.toISOString().slice(0, 19);
return finalState;
}
);

return { ...state, recursiveGet };
});

// for each initial query, fetch data recursively
each(
'$.queries[*]',
fn(state => {
return state.recursiveGet(`${state.baseUrl}${state.data}`)(state);
})
);
// log the total number of payloads returned
fn(state => {
console.log('Count of payloads', state.payloads.length);
//HMN 11072023
// console.log(JSON.stringify(state.payloads, null, 2));

return { ...state, references: [], data: {} };
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19.html b/adaptors/library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19.html index 7db56ee5d70..8756d343b72 100644 --- a/adaptors/library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19.html +++ b/adaptors/library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19.html @@ -22,13 +22,13 @@ - +
Skip to main content

WF2-2. Bulk upsert Persons

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

bulk, dataValue, field, fields, join, map, query, relationship, upsertIf, JSON

Expression

fn(state => {
if (state.payloads.length == 0)
return {
...state,
householdMapping: [],
headOfHouseholdMapping: [],
motherMapping: [],
caregiverMapping: [],
sfRecordMapping: [],
};
// JSON logging of records
//HMN debug
//console.log('cases before query :: ', JSON.stringify(state.payloads, null, 2));
const owner_ids = state.payloads.map(data => data.properties.owner_id);
const uniq_owner_ids = [...new Set(owner_ids)];

return { ...state, uniq_owner_ids };
});

// get data from SF
fn(state => {
if (state.payloads.length == 0) return state;

return query(
`SELECT CommCare_User_ID__c, Id village, Parent_Geographic_Area__c area, Parent_Geographic_Area__r.Name name, Parent_Geographic_Area__r.Parent_Geographic_Area__c catchment FROM Location__c WHERE CommCare_User_ID__c IN ('${state.uniq_owner_ids.join(
"','"
)}') GROUP BY Id, CommCare_User_ID__c, Parent_Geographic_Area__c, Parent_Geographic_Area__r.Name, Parent_Geographic_Area__r.Parent_Geographic_Area__c`
)(state);
});

fn(state => {
if (state.payloads.length == 0) return state;

const [reference] = state.references;

// console.log(JSON.stringify(reference.records, null, 2));

const records = reference.records;
const fetchReference = (owner_id, arg) => {
const result =
records && records.length > 0
? records.filter(record => record.CommCare_User_ID__c === owner_id)
: 0;

//TODO: Update default value for 'unknown location' before go-live
return result.length > 0 ? result[0][arg]
: 'a000800001tMobaAAC' /*unknown location*/;

};

const cleanChoice = choice => {
if (choice) {
return choice.charAt(0).toUpperCase() + choice.slice(1).replace('_', ' ');
} else {
return '';
}
};

const handleMultiSelect = multiField => {
return multiField
? multiField
.replace(/ /gi, ';')
.toLowerCase()
.split(';')
.map(value => {
return (
value.charAt(0).toUpperCase() + value.slice(1).replace('_', ' ')
);
})
.join(';')
: '';
};

const pregDangerMap = {
Vaginal_Bleeding: 'Vaginal Bleeding',
Water_Breaks: 'Water Breaks before Time of Delivery',
Prolonged_Labour: 'Prolonged Labour over 12 Hours',
Convulsions: 'Convulsions or Fits',
Abdominal_Pain: 'Severe Abdominal Pain before Delivery',
High_Fever: 'High Fever',
Low_Baby_Movement: 'Feeling the Baby move less or not at all',
Swelling: 'Swelling of Face and Hands',
Severe_Headache: 'Severe or Continuous Headache for more than 12 hours',
Severe_Vomiting: 'Severe or Continuous Vomiting',
none: 'None',
};

const counselMap = {
anc_visits: 'ANC Visits',
early_initiation_of_anc_less_than_3_months:
'Early initiation of ANC (less than 3 months)',
completing_recomended_anc_visits: 'Completing recomended ANC visits',
danger_signs: 'Danger signs',
skilled_birth: 'Skilled birth',
immunization: 'Immunization',
individual_birth_plan: 'Individual Birth Plan',
emergency_preparedness: 'Emergency preparedness',
childcare_and_affection: 'Childcare and affection',
nutrition_counseling: 'Nutrition counseling',
growth_monitoring: 'Growth monitoring',
exclusive_breastfeeding: 'Exclusive breastfeeding',
complementary_feeding: 'Complementary feeding',
sleeping_under_llitn: 'Sleeping under LLITN',
knowing_hiv_status: 'Knowing HIV status',
indoor_pollution: 'Indoor pollution',
personal_hygiene: 'Personal Hygiene',
safe_drinking_water: 'Safe drinking water',
safe_disposal_of_human_waste: 'Safe disposal of human waste',
};

const serviceMap = {
Scheduled_PSC_Apt: 'Scheduled PSC Apt',
Adverse_Drug_Reaction_Side_Effect: 'Adverse Drug Reaction/Side Effect',
Malnutrition: 'Malnutrition',
Malaria: 'Malaria',
TB: 'TB',
Treatment_for_Other_OIs: 'Treatment for other Ols',
ARI: 'ARI',
Anemia: 'Anemia',
Diarrhea: 'Diarrhea',
Pregnancy_Care: 'Pregnancy Care (ANC)',
Family_Planning: 'Family Planning (FP)',
Preconception_Counseling: 'Preconception Counseling',
Injury: 'Injury',
Other: 'Other',
};

const reasonMapping = {
lack_of_access_to_fp_information: 'Lack of access to FP information',
no_access_to_fp_services_hospitals:
'Lack of hospitals or places where FP services can be accessed',
not_willing_to_use_fp_due_to_negative_effects_myths_and_misconceptions:
'Myths and misconceptions',
barriers_at_service_delivery_points: 'Barriers at service delivery points',
pregnant: 'The client is pregnant',
intentions_of_getting_pregnant: 'Intentions of getting pregnant',
not_sexually_active: 'The client is not sexually active',
other_barriers_culture_male_partners_parents_etc:
'Other barriers (culture, male partners, parents, etc)',
};

const milestoneTypeMap = {
cognitive_delays_learning_difficulties:
'Cognitive Delays Learning Difficulties',
motor_delays: 'Motor Delays',
speech_and_language_delay: 'Delay Speech and Language Delay',
social_and_emotional: 'Social and emotional',
};

const milestoneMap = {
movement: 'Movement',
hearing: 'Hearing',
communication: 'Communication',
seeing: 'Seeing',
cognitive_delays: 'Cognitive Delays',
play: 'Play',
};
const nutritionMap = {
severe: 'Severely Malnourished',
moderate: 'Moderately Malnourished',
normal: 'Normal',
};

const fpMethodMap = {
male_condoms: 'Male condoms',
female_condoms: 'Female condoms',
pop: 'POP',
coc: 'COC',
emergency_pills: 'Emergency pills',
none: 'None',
};

return {
...state,
counselMap,
serviceMap,
reasonMapping,
milestoneTypeMap,
milestoneMap,
nutritionMap,
pregDangerMap,
fpMethodMap,
cleanChoice,
handleMultiSelect,
fetchReference,
};
});

// build sfRecord before upserting
fn(state => {
if (state.payloads.length == 0) return state;

const {
counselMap,
reasonMapping,
milestoneTypeMap,
milestoneMap,
nutritionMap,
pregDangerMap,
fpMethodMap,
cleanChoice,
handleMultiSelect,
fetchReference,
} = state;

const householdMapping = [
...new Map(
state.payloads
.filter(
p =>
p.indices.parent.case_id !== undefined &&
p.indices.parent.case_id !== ''
)
.map(p => {
return {
CommCare_Code__c:
p.indices.parent.case_id || p.properties.parent_id,
};
})
.map(h => [h.CommCare_Code__c, h])
).values(),
];

const headOfHouseholdMapping = state.payloads
.filter(
p =>
p.properties.head_of_household_case_id !== undefined &&
p.properties.head_of_household_case_id !== ''
)
.map(p => {
return {
CommCare_Code__c: p.indices.parent.case_id || p.properties.parent_id,
'Head_of_Household__r.CommCare_ID__c':
p.properties.head_of_household_case_id,
};
});

const motherMapping = state.payloads
.filter(
p =>
/*HMN 050723 p.properties.commcare_username !== 'test.2021' &&
p.properties.test_user !== 'Yes' &&
*/
p.properties.mother_case_id !== undefined &&
p.properties.mother_case_id !== '' &&
p.case_id!== undefined
)
.map(p => {
return {
'Mother__r.CommCare_ID__c': p.properties.mother_case_id,
CommCare_ID__c: p.case_id,
};
});

const caregiverMapping = state.payloads
.filter(
p =>
/*HMN 070523 p.properties.commcare_username !== 'test.2021' &&
p.properties.test_user !== 'Yes' &&
*/
p.properties.caretaker_case_id !== undefined &&
p.properties.caretaker_case_id !== '' &&
p.case_id!== undefined
)
.map(p => {
return {
'Primary_Caregiver_Lookup__r.CommCare_ID__c':
p.properties.caretaker_case_id,
CommCare_ID__c: p.case_id,
};
});

const sfRecordMapping = state.payloads
.filter(
p =>
/*HMN 050723
p.properties.commcare_username !== 'test.2021' &&
p.properties.test_user !== 'Yes'
*/
p.case_id !== undefined &&
p.case_id !== ''
)
.map(p => {
// For unbornOrName
const name1 = p.properties.Person_Name || p.properties.case_name;
const unborn = p.properties.name;

const name2 =
name1 === undefined || name1 === '' || name1 === null
? unborn
: name1.replace(/\w\S*/g, function (txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
const unbornOrName = name1 !== null ? name2 : 'Unborn Child';
// console.log('Person Name ::', unbornOrName);

// For chronicIllness
const chronicChoice =p.properties.please_specify_which_chronic_illness_the_person_has;
const choice2 = handleMultiSelect(chronicChoice);
const chronicIllness = choice2 ? choice2.replace(/_/g, ' ') : '';

const disabilityC =
p.properties.disability !== undefined && p.properties.disability !=='---' && p.properties.disability !== null
? p.properties.disability
.toLowerCase()
.split(' ')
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join(';')
: null;
//HMN remove
console.log(p.case_id)
//console.log(disabilityC)
//
const otherDisability =
p.properties.other_disability !== undefined && p.properties.other_disability !=='---' && p.properties.other_disability !== null
? p.properties.other_disability
.toLowerCase()
.split(' ')
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join(';')
: null;
//HMN remove
//console.log(otherDisability)
//HMN
const hh_relation = p.properties.relation_to_hh;

const relationToTheHead = hh_relation !== undefined && hh_relation !== null
? hh_relation.toString().replace(/_/g, ' ').charAt(0).toUpperCase() +
hh_relation.toString().replace(/_/g, ' ').slice(1)
: null;

const childStatus =
p.properties.Child_Status && p.properties.Record_Type === 'Unborn'
? (p.properties.Child_Status = 'Unborn')
: p.properties.Child_Status && p.properties.Record_Type === 'Born'
? (p.properties.Child_Status = 'Born')
: p.properties.Child_Status;

const childDangerSigns = p.properties.Other_Danger_Signs !== undefined && p.properties.Other_Danger_Signs !== null
? p.properties.Other_Danger_Signs.toLowerCase()
.split(' ')
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join(';')
.toString()
.replace(/_/g, ' ')
: p.properties.Other_Danger_Signs;

//clientCounselled
const clientChoices = p.properties.counsel_topic;
const choiceGroups = clientChoices ? clientChoices.split(' ') : null;
const clientCounselled = choiceGroups
? choiceGroups
.map(cg => {
return counselMap[cg];
})
.join(';')
: choiceGroups;

// fpMethodDistributed
const fpStatus = p.properties.FP_commodity;
const fpValue =
fpStatus && fpStatus !== ''
? fpStatus
.replace(/ /gi, ';')
.split(';')
.map(value => {
return fpMethodMap[value] || value;
})
: undefined;
const fpMethodDistributed = fpValue ? fpValue.join(';') : undefined;

// placeOfDelivery
const pFacility = p.properties.Delivery_Type;
const placeOfDelivery =
pFacility === 'Skilled'
? 'Facility'
: pFacility === 'Unskilled'
? 'Home'
: undefined;

// reasonForNotTakingFP
const rStatus = p.properties.No_FPmethod_reason;
const rValue =
rStatus && rStatus !== ''
? rStatus
.replace(/ /gi, ';')
.split(';')
.map(value => {
return reasonMapping[value] || value;
})
: undefined;
const reasonForNotTakingFP = rValue ? rValue.join(';') : undefined;

const recordType = p.properties.Record_Type;


return {
// TODO @aleksa, Source__c is causing an error
Source__c: true,
CommCare_ID__c: p.case_id,

//HMN 05072023 'Primary_Caregiver_Lookup__r.CommCare_ID__c':p.properties.caretaker_case_id,
//HMN 05072023 'Mother__r.CommCare_ID__c': p.properties.mother_case_id,
'Household__r.CommCare_Code__c':
p.properties.parent_id || p.indices.parent.case_id,
commcare_location_id__c: p.properties.commcare_location_id,
CommCare_Username__c: p.properties.commcare_username,
Telephone__c: p.properties.contact_phone_number,

Consent_for_data_use__c: p.properties.data_sharing_consent,
CommCare_HH_Code__c: p.indices.parent.case_id,
Client_Status__c: p.properties.Client_Status,
Catchment__c: fetchReference(p.properties.owner_id, 'catchment'),
Area__c: fetchReference(p.properties.owner_id, 'area'),
Household_Village__c: fetchReference(p.properties.owner_id, 'village'),
Name: unbornOrName,
Chronic_illness__c: chronicIllness,
Currently_enrolled_in_school__c: p.properties.enrolled_in_school,
Education_Level__c: p.properties.Education_Level !== null && p.properties.Education_Level !== undefined
? p.properties.Education_Level.toString().replace(/_/g, ' ')
: null,
Relation_to_the_head_of_the_household__c: relationToTheHead,
Gender__c: p.properties.Gender !== undefined ? p.properties.Gender : null,
Disability__c: disabilityC,
Other_disability__c: otherDisability,
Use_mosquito_net__c: p.properties.sleep_under_net,
Birth_Certificate__c: p.properties.birth_certificate,
Child_Status__c: childStatus,
'RecordType.Name': recordType === 'Unborn' || recordType === ''
? 'Child'
: recordType.toString().replace(/_/g, ' '), //convert Unborn children to Child RT
//TT5 Mother Information =====================//
MCH_booklet__c: p.properties.mch_booklet,
Reason_for_not_taking_a_pregnancy_test__c: p.properties.No_Preg_Test
? p.properties.No_Preg_Test.toString().replace(/_/g, ' ')
: undefined,
Pregnancy_danger_signs__c: p.properties.pregnancy_danger_signs
? pregDangerMap[p.properties.pregnancy_danger_signs]
: undefined,
Individual_birth_plan_counselling__c:
p.properties.individual_birth_plan,
Child_Danger_Signs__c: childDangerSigns,
//HAWI =====================//

Unique_Patient_Code__c: p.properties.Unique_Patient_Code,
Active_in_Support_Group__c: p.properties.Active_in_Support_Group,
Preferred_Care_Facility__c: p.properties.Preferred_Care_Facility,
Currently_on_ART_s__c: p.properties.ART,
ART_Regimen__c: p.properties.ARVs,
HAWI_Defaulter__c: p.properties.default === 'Yes' ? true : false,
Date_of_Default__c: p.properties.date_of_default,
Know_HIV_status__c: p.properties.known_hiv_status,
HIV_Status__c: p.properties.hiv_status,
//Illness ========================//
Persons_temperature__c: p.properties.temperature,
Days_since_illness_start__c: p.properties.duration_of_sickness,
Current_Malaria_Status__c: p.properties.malaria_test_results,
Malaria_test__c: p.properties.malaria_test,
Last_Malaria_Home_Test__c: p.properties.malaria_test_date,
Last_Malaria_Home_Treatment__c: cleanChoice(
p.properties.malaria_test_date
),
Cough_over_14days__c: p.properties.symptoms_check_cough,
TB_patients_therapy_observed__c: p.properties.observed_tb_therapy,
Injuries_or_wounds__c: p.properties.wounds_or_injuries,
Pulse_Oximeter__c: p.properties.pulse_oximeter_available,
Heart_Rate_Pulse_Oximeter__c: p.properties.heart_rate_pulse_oximeter,
Oxygen_Concentration_Pulse_Oximeter__c:
p.properties.oxygen_concentration,
Can_child_drink__c: p.properties.can_child_drink,
Antibiotic_provided_for_fast_breathing__c: cleanChoice(
p.properties.antibiotic_fast_breathing
),
Antibiotic_provided_for_chest_indrawing__c: cleanChoice(
p.properties.antibiotic_chest_indrawing
),
Default_on_TB_treatment__c: cleanChoice(
p.properties.default_tb_treatment
),
Treatment_Distribution__c: cleanChoice(
p.properties.distributed_treatments
),
//Delivery =====================//
Immediate_Breastfeeding__c: p.properties.Breastfeeding_Delivery,
Place_of_Delivery__c: placeOfDelivery,
Delivery_Facility__c: p.properties.Delivery_Facility
? p.properties.Delivery_Facility.toString().replace(/_/g, ' ')
: null,
Delivery_Facility_Other__c: p.properties.Delivery_Facility_Other,
//Family Planning =====================//
LMP__c: p.properties.LMP,
Family_Planning__c: p.properties.family_planning,
Family_Planning_Method__c: p.properties.family_planning_method,
FP_Method_Distributed__c: fpMethodDistributed,
Reasons_for_not_taking_FP_method__c: reasonForNotTakingFP,
Pregnant__c: p.properties.Pregnant === 'Yes' ? true : false,
Date_of_Delivery__c: p.properties.delivery_date,
Counselled_on_FP_Methods__c: p.properties.CounselledFP_methods,
Client_counselled_on__c: clientCounselled,
Client_provided_with_FP__c: cleanChoice(
p.properties[
'was_the_woman_15-49yrs_provided_with_family_planning_commodities_by_chv'
]
),
Received_pregnancy_test__c:
p.properties.did_you_adminsiter_a_pregnancy_test,
Pregnancy_test_result__c: p.properties.pregnancy_test_result,
Gravida__c: p.properties.Gravida,
Parity__c: p.properties.Parity,
//TT5 Child Information =====================//
Exclusive_Breastfeeding__c: p.properties.Exclusive_Breastfeeding,
Counselled_on_Exclusive_Breastfeeding__c: p.properties.counseling,
Newborn_visited_48_hours_of_delivery__c:
p.properties.newborn_visited_48_hours_of_delivery,
Newborn_visit_counselling__c: cleanChoice(
p.properties.did_you_consel_the_mother_on1
),
mother_visited_48_hours_of_the_delivery__c:
p.properties.visit_mother_48,
Mother_visit_counselling__c: cleanChoice(
p.properties.did_you_consel_the_mother_on2
),
Newborn_visited_by_a_CHW_within_6_days__c:
p.properties.visit_6_days_from_delivery,
//Nutrition =====================//
Caretaker_action_after_muac_screening__c:
p.properties.mother_screened_muac_action,
Caretaker_muac_findings__c:
p.properties.mother_screened_child_muac_result,
Food_groups_3_times_a_day__c: p.properties.food_groups,
Caretaker_screened_for_muac_this__c: cleanChoice(
p.properties.mother_screened_child_muac
),
Caretaker_trained_in_muac__c: cleanChoice(
p.properties.mother_trained_muac
),
of_Caretaker_MUAC_screenings__c: p.properties.mother_nb_screening,
Current_Height__c: p.properties.current_height,
Current_MUAC__c: p.properties.MUAC,
Current_Nutrition_Status__c: p.properties.Nutrition_Status
? nutritionMap[p.properties.Nutrition_Status]
: undefined,
//TT5 & HAWI =====================//
TT5_Mother_Registrant__c: p.properties.Pregnant == 'Yes' ? 'Yes' : null,
Enrollment_Date__c:
p.properties.age < 5 || p.properties.Pregnant == 'Yes'
? p.server_date_modified
: null,
HAWI_Enrollment_Date__c:
p.properties.hiv_status == 'positive' ? p.server_date_modified : null,
Thrive_Thru_5_Registrant__c:
p.properties.age < 5 || p.properties.Pregnant == 'Yes' ? 'Yes' : 'No',
HAWI_Registrant__c:
p.properties.hiv_status == 'positive' ? 'Yes' : 'No',
//ANC =====================//
ANC_1__c:
p.properties.ANC_1 && p.properties.ANC_1 !== ''
? p.properties.ANC_1
: undefined,
ANC_2__c:
p.properties.ANC_2 && p.properties.ANC_2 !== ''
? p.properties.ANC_2
: undefined,
ANC_3__c:
p.properties.ANC_3 && p.properties.ANC_3 !== ''
? p.properties.ANC_3
: undefined,
ANC_4__c:
p.properties.ANC_4 && p.properties.ANC_4 !== ''
? p.properties.ANC_4
: undefined,
ANC_5__c:
p.properties.ANC_5 && p.properties.ANC_5 !== ''
? p.properties.ANC_5
: undefined,
Date_of_Birth__c:
p.properties.DOB && p.properties.DOB !== ''
? p.properties.DOB.replace(/\\/g, '-')
: undefined,
//Immunization =====================//
// Child_missed_immunization_type__c:
// p.form.TT5.Child_Information.Immunizations.immunization_type,
BCG__c: p.properties.BCG,
OPV_0__c: p.properties.OPV_0,
Measles_6__c: p.properties.Measles_6,
Measles_9__c: p.properties.Measles_9,
Measles_18__c: p.properties.Measles_18,
OPV_1__c: p.properties.OPV_PCV_Penta_1,
OPV_2__c: p.properties.OPV_PCV_Penta_2,
OPV_3__c: p.properties.OPV_PCV_Penta_3,
Rotavirus_1__c: p.properties.rotavirus_1,
Rotavirus_2__c: p.properties.rotavirus_2,
IPV__c: p.properties.IPV,
Vitamin_A_12__c: p.properties.Vitamine_A,
Vitamin_A_18__c: p.properties.Vitamine_A_2,
Vitamin_A_24__c: p.properties.Vitamine_A_3,
Deworming_12__c: p.properties.Deworming_1,
Deworming_18__c: p.properties.Deworming_2,
Deworming_24__c: p.properties.Deworming_3,
//ECD =====================//
Did_you_counsel_caregiver_on__c: cleanChoice(
p.properties.did_you_counsel_the_caregiver_on_delayed_milestones
),
Delayed_Milestone__c: cleanChoice(
p.properties.does_the_child_has_a_delayed_milestone
),
Child_has_2_or_more_play_items__c: cleanChoice(
p.properties.does_the_child_has_2_or_more_play_items_at_home
),
Child_has_3_or_more_picture_books__c: cleanChoice(
p.properties.does_the_child_has_3_or_more_picture_books
),
Delayed_Milestones_Counselled_On__c: p.properties
.which_delayed_milestone_area_did_you_counsel_the_caregiver_on
? milestoneMap[
p.properties
.which_delayed_milestone_area_did_you_counsel_the_caregiver_on
]
: undefined,
Delayed_Milestone_Type__c: p.properties.which_delayed_milestone
? milestoneTypeMap[p.properties.which_delayed_milestone]
: undefined,
//Death =====================//
Date_of_Death__c: p.properties.Date_of_Death,
Cause_of_Death__c: p.properties.cause_of_death_dead
? p.properties.cause_of_death_dead.toString().replace(/_/g, ' ')
: p.properties.cause_of_death_dead,
Verbal_autopsy__c: p.properties.verbal_autopsy,
//Closing =====================//
Last_Modified_Date_CommCare__c: p.date_modified,
Case_Closed_Date__c: p.date_closed,
};
});

sfRecordMapping.forEach(rec => {
Object.entries(rec).forEach(([key, value]) => {
if (value === '' || value === null) rec[key] = undefined;
});
});

// TODO clean up after QA
// console.log(JSON.stringify(caregiverMapping, null, 2), 'careGiver');
// console.log(JSON.stringify(motherMapping, null, 2), 'Mother');
//console.log(JSON.stringify(sfRecordMapping, null, 2), 'sfRecordMapping');
// console.log(JSON.stringify(householdMapping, null, 2), 'householdMapping');
// console.log(
// JSON.stringify(headOfHouseholdMapping, null, 2),
// 'headOfHouseholdMapping'
// );

return {
...state,
motherMapping,
sfRecordMapping,
caregiverMapping,
householdMapping,
headOfHouseholdMapping,
};
});


// TODO, Clean up when pass QA
/*fn(state => {
state.sfRecordMapping.forEach(rec => {
Object.entries(rec).forEach(([key, value]) => {
if (typeof key !== 'string') throw `${key} is not a string`;
});
});
return state;
});
*/
// bulk(
// 'Household__c',
// 'upsert',
// {
// extIdField: 'CommCare_Code__c',
// failOnError: true,
// allowNoOp: true,
// },
// state => {
// console.log('Bulk upserting...');
// return state.householdMapping;
// }
// );

// TODO, Clean up when pass QA
// upsert data to SF
// upsertIf(
// state.data.properties.commcare_username !== 'test.2021' &&
// state.data.properties.test_user !== 'Yes',
// 'Person__c',
// 'CommCare_ID__c',
// state => state.sfRecord
// );

bulk(
'Person__c',
'upsert',
{
extIdField: 'CommCare_ID__c',
failOnError: true,
allowNoOp: true,
},
state => {
console.log('Bulk upserting persons ::');
//HMN commented this
//console.log(JSON.stringify(state.sfRecordMapping, null, 2));
return state.sfRecordMapping;
}
);
// TODO, Clean up when pass QA
// upsertIf(
// state.data.properties.commcare_username !== 'test.2021' &&
// state.data.properties.test_user !== 'Yes' &&
// state.data.properties.caretaker_case_id !== undefined &&
// state.data.properties.caretaker_case_id !== '',
// 'Person__c',
// 'CommCare_ID__c',
// fields(
// relationship('Primary_Caregiver_Lookup__r', 'CommCare_ID__c', state => {
// return (caregiver = dataValue('properties.caretaker_case_id')(state));
// }),
// field('CommCare_ID__c', dataValue('case_id'))
// )
// );

bulk(
'Person__c',
'upsert',
{
extIdField: 'CommCare_ID__c',
failOnError: true,
allowNoOp: true,
},
state => {
console.log('Bulk upserting primary caregiver Persons ::');
//console.log(JSON.stringify(state.caregiverMapping, null, 2));
return state.caregiverMapping;
}
);

// TODO, Clean up when pass QA
// upsertIf(
// state.data.properties.commcare_username !== 'test.2021' &&
// state.data.properties.test_user !== 'Yes' &&
// state.data.properties.mother_case_id !== undefined &&
// state.data.properties.mother_case_id !== '',
// 'Person__c',
// 'CommCare_ID__c',
// fields(
// relationship('Mother__r', 'CommCare_ID__c', state => {
// return (caregiver = dataValue('properties.mother_case_id')(state));
// }),
// field('CommCare_ID__c', dataValue('case_id'))
// )
// );
bulk(
'Person__c',
'upsert',
{
extIdField: 'CommCare_ID__c',
failOnError: true,
allowNoOp: true,
},
state => {
console.log('Bulk upserting mother Person::');
// console.log(JSON.stringify(state.motherMapping, null, 2));
return state.motherMapping;
}
);

// TODO, Clean up when pass QA
// upsertIf(
// state.data.properties.commcare_username !== 'test.2021' &&
// state.data.properties.test_user !== 'Yes' &&
// state.data.properties.head_of_household_case_id !== undefined &&
// state.data.properties.head_of_household_case_id !== '',
// 'Household__c',
// 'CommCare_Code__c',
// fields(
// field('CommCare_Code__c', dataValue('indices.parent.case_id')),
// relationship(
// 'Head_of_Household__r',
// 'CommCare_ID__c',
// dataValue('properties.head_of_household_case_id')
// )
// )
// );

bulk(
'Household__c',
'upsert',
{
extIdField: 'CommCare_Code__c',
failOnError: true,
allowNoOp: true,
},
state => {
console.log('Bulk upserting head of household field on HH ::');
// console.log(JSON.stringify(state.headOfHouseholdMapping, null, 2));
return state.headOfHouseholdMapping;
}
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19.html b/adaptors/library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19.html index 3ce2446b0bf..8d4612fb375 100644 --- a/adaptors/library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19.html +++ b/adaptors/library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19.html @@ -22,13 +22,13 @@ - +
Skip to main content

WF3-1. Bulk get Person Visit cases

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: WF3-1. Bulk get Person Visit cases
  • Adaptor: @openfn/language-http
  • Adaptor Version: v4.2.8
  • Created 5 months ago
  • Updated 8 days ago
  • Score: 92 (an indicator of how useful this job may be)

Key Functions

each, get, map

Expression

fn(state => {
const { baseUrl } = state.configuration;

const caseTypes = ['visite'];

//NOTE: You can use 'limit' to modify this batch size as desired
const limit = 1000; //E.g., change to 10 to process records in smaller batch sizes

//NOTE: indexedOnStart is the default sync start data the FIRST time the job runs
const indexedOnStart = '2023-10-19T06:00:00';

//NOTE: After first job run, OpenFn will check the job sync data ("lastRunAt") to set as the indexedOnStart
const lastRunAt =
typeof state.lastRunAt !== 'undefined' ? state.lastRunAt : indexedOnStart;
console.log('Filtering cases with indexed_on_start > than ::', lastRunAt);

const aMinuteAgo = new Date( Date.now() - 1000 * 60 );
console.log(aMinuteAgo);

const queries = caseTypes.map(
t => `?type=${t}&indexed_on_start=${lastRunAt}&limit=${limit}`
//NOTE: If for testing, you want to fetch data for a specific historical range (e.g., between April 23 and 24)...
//...then use the query string below instead of the one above on L16, and custom adjust the index_on start/end dates
// t => `?type=${t}&indexed_on_start=2023-10-19T07:00:00&limit=${limit}&indexed_on_end=2023-10-19T09:59:59`
);

return { ...state, queries, baseUrl, payloads: [] };
});

// create a "recursiveGet" which will call itself if CommCare tells us there's
// more data to fetch for the same form

fn(state => {
const recursiveGet = url =>
get(
url,
{
headers: { 'content-type': 'application/json' },
},
nextState => {
const now = new Date();
const { baseUrl, data, payloads } = nextState;

const { meta, objects } = data;
console.log('Metadata in CommCare response:', meta);

const finalState = {
...nextState,
payloads: [...payloads, ...objects],
};

if (meta.next) {
console.log('Next query detected, recursing...');
return recursiveGet(`${baseUrl}${meta.next}`)(finalState);
}
finalState.lastRunAt = now.toISOString().slice(0, 19);
return finalState;
}
);

return { ...state, recursiveGet };
});

// for each initial query, fetch data recursively
each(
'$.queries[*]',
fn(state => {
return state.recursiveGet(`${state.baseUrl}${state.data}`)(state);
})
);
// log the total number of payloads returned
fn(state => {
console.log('Count of payloads', state.payloads.length);

return { ...state, references: [], data: {} };
});
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19.html b/adaptors/library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19.html index be6f8fe9e66..af57b26b471 100644 --- a/adaptors/library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19.html +++ b/adaptors/library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19.html @@ -22,13 +22,13 @@ - +
Skip to main content

WF3-2. Bulk upsert Person Visits

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

bulk, dataValue, join, map, query, JSON

Expression

fn(state => {
if (state.payloads.length == 0) return { ...state, personVisits: [] };

const owner_ids = state.payloads.map(data => data.properties.owner_id);
const uniq_owner_ids = [...new Set(owner_ids)];

return { ...state, uniq_owner_ids };
});

fn(state => {
if (state.payloads.length == 0) return state;
return query(
`SELECT CommCare_User_ID__c, Id village, Parent_Geographic_Area__c area, Parent_Geographic_Area__r.Name name, Parent_Geographic_Area__r.Parent_Geographic_Area__c catchment FROM Location__c WHERE CommCare_User_ID__c IN ('${state.uniq_owner_ids.join(
"','"
)}') GROUP BY Id, CommCare_User_ID__c, Parent_Geographic_Area__c, Parent_Geographic_Area__r.Name, Parent_Geographic_Area__r.Parent_Geographic_Area__c`
)(state);
});

fn(state => {
if (state.payloads.length == 0) return state;
const [reference] = state.references;


// console.log(JSON.stringify(reference, null, 2));
const records = reference.records;
const fetchReference = (owner_id, arg) => {
const result =
records && records.length > 0
? records.filter(record => record.CommCare_User_ID__c === owner_id)
: 0;

return result.length > 0 ? result[0][arg] : undefined;
};
const cleanChoice = choice => {
if (choice) {
return choice.charAt(0).toUpperCase() + choice.slice(1).replace('_', ' ');
} else {
return '';
}
};

const handleMultiSelect = multiField => {
return multiField
? multiField
.replace(/ /gi, ';')
.toLowerCase()
.split(';')
.map(value => {
return (
value.charAt(0).toUpperCase() + value.slice(1).replace('_', ' ')
);
})
.join(';')
: '';
};

const handleMultiSelectOriginal = multiField => {
return multiField
? multiField
.replace(/ /gi, ';')
.toLowerCase()
.split(';')
.map(value => {
return value;
})
.join(';')
: '';
};

const pregDangerMap = {
Vaginal_Bleeding: 'Vaginal Bleeding',
Water_Breaks: 'Water Breaks before Time of Delivery',
Prolonged_Labour: 'Prolonged Labour over 12 Hours',
Convulsions: 'Convulsions or Fits',
Abdominal_Pain: 'Severe Abdominal Pain before Delivery',
High_Fever: 'High Fever',
Low_Baby_Movement: 'Feeling the Baby move less or not at all',
Swelling: 'Swelling of Face and Hands',
Severe_Headache: 'Severe or Continuous Headache for more than 12 hours',
Severe_Vomiting: 'Severe or Continuous Vomiting',
none: 'None',
};

const counselMap = {
anc_visits: 'ANC Visits',
early_initiation_of_anc_less_than_3_months:
'Early initiation of ANC (less than 3 months)',
completing_recomended_anc_visits: 'Completing recomended ANC visits',
danger_signs: 'Danger signs',
skilled_birth: 'Skilled birth',
immunization: 'Immunization',
individual_birth_plan: 'Individual Birth Plan',
emergency_preparedness: 'Emergency preparedness',
childcare_and_affection: 'Childcare and affection',
nutrition_counseling: 'Nutrition counseling',
growth_monitoring: 'Growth monitoring',
exclusive_breastfeeding: 'Exclusive breastfeeding',
complementary_feeding: 'Complementary feeding',
sleeping_under_llitn: 'Sleeping under LLITN',
knowing_hiv_status: 'Knowing HIV status',
indoor_pollution: 'Indoor pollution',
personal_hygiene: 'Personal Hygiene',
safe_drinking_water: 'Safe drinking water',
safe_disposal_of_human_waste: 'Safe disposal of human waste',
};

const serviceMap = {
Scheduled_PSC_Apt: 'Scheduled PSC Apt',
Adverse_Drug_Reaction_Side_Effect: 'Adverse Drug Reaction/Side Effect',
Malnutrition: 'Malnutrition',
Malaria: 'Malaria',
TB: 'TB',
Treatment_for_Other_OIs: 'Treatment for other Ols',
ARI: 'ARI',
Anemia: 'Anemia',
Diarrhea: 'Diarrhea',
Pregnancy_Care: 'Pregnancy Care (ANC)',
Family_Planning: 'Family Planning (FP)',
Preconception_Counseling: 'Preconception Counseling',
Injury: 'Injury',
Other: 'Other',
};

const reasonMap = {
lack_of_access_to_fp_information: 'Lack of access to FP information',
no_access_to_fp_services_hospitals:
'Lack of hospitals or places where FP services can be accessed',
not_willing_to_use_fp_due_to_negative_effects_myths_and_misconceptions:
'Myths and misconceptions',
barriers_at_service_delivery_points: 'Barriers at service delivery points',
pregnant: 'The client is pregnant',
intentions_of_getting_pregnant: 'Intentions of getting pregnant',
not_sexually_active: 'The client is not sexually active',
other_barriers_culture_male_partners_parents_etc:
'Other barriers (culture, male partners, parents, etc)',
};

const milestoneTypeMap = {
cognitive_delays_learning_difficulties:
'Cognitive Delays Learning Difficulties',
motor_delays: 'Motor Delays',
speech_and_language_delay: 'Delay Speech and Language Delay',
social_and_emotional: 'Social and emotional',
};

const milestoneMap = {
movement: 'Movement',
hearing: 'Hearing',
communication: 'Communication',
seeing: 'Seeing',
cognitive_delays: 'Cognitive Delays',
play: 'Play',
};
const nutritionMap = {
severe: 'Severely Malnourished',
moderate: 'Moderately Malnourished',
normal: 'Normal',
};

const fpMethodMap = {
male_condoms: 'Male condoms',
female_condoms: 'Female condoms',
pop: 'POP',
coc: 'COC',
emergency_pills: 'Emergency pills',
none: 'None',
//HMN -12/01/2023-
//adding normalization for the family_planning_method to Family_Planning_Method__c
iucd: 'IUCD',
condoms: 'Condoms',
depo: 'Depo',
implant: 'Implant',
injection: 'Injection',
pills: 'Pills',
traditional: 'Traditional',
};

const symptomsMap = {
convulsions: 'Convulsions',
not_able_to_eatdrink: 'Not able to drink or feed at all',
vomits_everything: 'Vomits everything',
'chest_in-drawing': 'Chest in - drawing',
unusually_sleepyunconscious: 'Unusually sleepy or unconscious',
swelling_of_both_feet: 'Swelling of both feet',
none: 'None',
};

const supervisorMap = {
community_health_nurse: 'Community_health_nurse',
chw_supervisor: 'CHW_supervisor',
chewschas: 'Chewschas',
other: 'Other',
none: 'None',
};

const treatmentDistributionMap = {
ors_205gltr_sachets: 'ORS (20.5h/ltr): Sachets',
acts_6s: 'ACTs (6s)',
acts_12s: 'ACTs (12s)',
acts_18s: 'ACTs (18s)',
acts_24s: 'ACTs (24s)',
albendazole_abz_tabs: 'Albendazole (ABZ): Tabs',
paracetamol_tabs: 'Tetracycline Eye Ointment (TEO): 1%:tube',
tetracycline_eye_ointment_teo_1_tube:
'Tetracycline Eye Ointment (TEO): 1%:tube',
amoxycillin: 'Amoxycillin (125mg/5mls: Bottle',
none: 'None',
};

const childDangerSignsMap = {
none: 'None',
Poor_Breastfeeding: 'Poor Breastfeeding',
not_able_to_feed_since_birth_or_stopped_feeding_well:
'Not able to feed since birth, or stopped feeding well',
not_able_to_breastfeed: 'Not able to breastfeed',
Fever: 'Fever',
very_low_temperature: 'Very low temperature (35.4 C or less)',
shivering: 'Shivering',
Fast_Breathing: 'Fast Breathing',
Very_Sleepy: 'Very Sleepy',
Convulsions_and_Fits: 'Convulsions and Fits',
only_moves_when_stimulated_or_does_not_move_even_on_stimulation:
'Only moves when stimulated, or does not move even on stimulation',
yellow_solebaby_body_turning_yellow_especially_eyes_palms_soles:
'Yellow sole(Baby body turning yellow especially eyes, palms,soles)',
bleeding_from_the_umbilical_stump: 'Bleeding from the umbilical stump',
signs_of_local_infection_umbilicus_is_red_or_draining_pus_skin_boils_or_eye:
'Signs of local infection: umbilicus is red or draining pus, skin boils, or eyes draining pus',
weight_chart_using_color_coded_scales_if_red_or_yellowweight_below_25kg_or_:
'Weight chart using color coded scales if RED or YELLOW(Weight below 2.5kg or born less than 36 weeks of age)',
unable_to_cry: 'Unable to cry',
cyanosis: 'Cyanosis',
bulging_fontanelle: 'Bulging fontanelle',
};

return {
...state,
counselMap,
serviceMap,
reasonMap,
milestoneTypeMap,
milestoneMap,
nutritionMap,
pregDangerMap,
fpMethodMap,
symptomsMap,
supervisorMap,
treatmentDistributionMap,
childDangerSignsMap,
fetchReference,
cleanChoice,
handleMultiSelect,
handleMultiSelectOriginal,
};
});

fn(state => {
if (state.payloads.length == 0) return state;
const {
counselMap,
serviceMap,
reasonMap,
milestoneTypeMap,
milestoneMap,
nutritionMap,
pregDangerMap,
fpMethodMap,
symptomsMap,
supervisorMap,
treatmentDistributionMap,
childDangerSignsMap,
fetchReference,
cleanChoice,
handleMultiSelect,
handleMultiSelectOriginal,
} = state;

const personVisits = state.payloads
//HMN 30/06/2023 Allow test user to post
/*
.filter(
p =>
p.properties.username !== 'test.2021' &&
p.properties.test_user !== 'Yes'
)*/
.map(p => {
// commCareVisitID
const commCareCase_id = p.case_id;
const dateVisit = p.properties.date_opened;
const commCareVisitID = commCareCase_id + '_' + dateVisit;

// personsSymptoms
const psCheck = p.properties.symptoms_check_other;
const psValue =
psCheck && psCheck !== ''
? psCheck
.replace(/ /gi, ';')
.split(';')
.map(value => {
return symptomsMap[value] || value;
})
: undefined;
const personsSymptoms = psValue ? psValue.join(';') : undefined;

// familyPlanningMethod
const fpmStatus = p.properties.family_planning_method;
const fpmValue =
fpmStatus && fpmStatus !== ''
? fpmStatus
.replace(/ /gi, ';')
.split(';')
.map(value => {
return fpMethodMap[value] || value;
})
: undefined;
const familyPlanningMethod = fpmValue ? fpmValue.join(';') : undefined;

// fpMethodDistributed
const fpmdStatus = p.properties.FP_commodity;
const fpmdValue =
fpmdStatus && fpmdStatus !== ''
? fpmdStatus
.replace(/ /gi, ';')
.split(';')
.map(value => {
return fpMethodMap[value] || value;
})
: undefined;
const fpMethodDistributed = fpmdValue ? fpmdValue.join(';') : undefined;

// reasonForNotTakingFPMethod
const rfntStatus = p.properties.No_FPmethod_reason;
const rfntValue =
rfntStatus && rfntStatus !== ''
? rfntStatus
.replace(/ /gi, ';')
.split(';')
.map(value => {
return reasonMap[value] || value;
})
: undefined;
const reasonForNotTakingFPMethod = rfntValue
? rfntValue.join(';')
: undefined;

// clientCounselledOnC
const ccocChoices =
p.properties.counsel_topic || p.properties.counsel_topic;
const ccocVhoiceGroups = ccocChoices ? ccocChoices.split(' ') : null;
const clientCounselledOnC = ccocVhoiceGroups
? ccocVhoiceGroups
.map(cg => {
return counselMap[cg];
})
.join(';')
: ccocVhoiceGroups;

// treatmentDistributionC
//const tdcStatus = p.form.treatment_and_tracking.distribution.distributed_treatments;
const tdcStatus = p.properties.distributed_treatments;
const tdcValue =
tdcStatus && tdcStatus !== ''
? tdcStatus
.replace(/ /gi, ';')
.split(';')
.map(value => {
return treatmentDistributionMap[value] || value;
})
: undefined;
const treatmentDistributionC = tdcValue ? tdcValue.join(';') : undefined;

// chronicIllnesC
const ciChoice =
p.properties.please_specify_which_chronic_illness_the_person_has;
const ciChoice2 = handleMultiSelect(ciChoice);
const chronicIllnesC = ciChoice2 ? ciChoice2.replace(/_/g, ' ') : '';

// supervisorVisit
const svCheck = p.properties.supervisor_visit;
const svValue =
svCheck && svCheck !== ''
? svCheck
.replace(/ /gi, ';')
.split(';')
.map(value => {
return supervisorMap[value] || value;
})
: undefined;
const supervisorVisit = svValue ? svValue.join(';') : undefined;
const recordType = p.properties.RecordType;

return {
CommCare_ID__c: p.case_id, //'visit' case_id
'Person__r.CommCare_ID__c':
p.indices.parent.case_id || p.properties.parent_id,
CommCare_Visit_ID__c: commCareVisitID,
Date__c: p.properties.Date,
Birth_Status__c: p.properties.child_status,
Catchment__c: fetchReference(p.properties.owner_id, 'catchment'),
//HMN Accommodating Record Type in Visit
'RecordType.Name': recordType === 'Unborn' || recordType === 'Child'
? 'Child Visit'
:recordType === 'Youth'
? 'Youth Visit'
:recordType === 'Male Adult'
? 'Adult Male Visit'
: recordType === 'Female Adult'
? 'Adult Female Visit'
:undefined,
Use_mosquito_net__c: cleanChoice(p.properties.sleep_under_net),
Individual_birth_plan_counselling__c:
p.properties.individual_birth_plan,
Reason_for_not_taking_a_pregnancy_test__c: p.properties.No_Preg_Test
? p.properties.No_Preg_Test.toString().replace(/_/g, ' ')
: undefined,
Pregnancy_danger_signs__c: p.properties.No_Preg_Test
? pregDangerMap[p.properties.No_Preg_Test]
: undefined,
Child_Danger_Signs__c: p.properties.Other_Danger_Signs
? childDangerSignsMap[p.properties.Other_Danger_Signs]
: undefined,
Current_Malaria_Status__c: cleanChoice(
p.properties.malaria_test_results
),
Malaria_Home_Test__c: p.properties.malaria_test_date,
Malaria_Home_Treatment__c: p.properties.malaria_test_date,
Persons_symptoms__c: personsSymptoms,
Active_in_Support_Group__c: p.properties.Active_in_Support_Group,
HAWI_Defaulter__c: p.properties.default === 'Yes' ? true : false,
Date_of_Default__c: p.properties.date_of_default,
Persons_temperature__c: p.properties.temperature,
Days_since_illness_start__c: p.properties.duration_of_sickness,
Newborn_visited_48_hours_of_delivery__c:
p.properties.newborn_visited_48_hours_of_delivery,
Newborn_visited_by_a_CHW_within_6_days__c:
p.properties.visit_6_days_from_delivery,
Current_Malaria_Status__c: p.properties.malaria_test_results,
Malaria_test__c: cleanChoice(p.properties.malaria_test),
Fever__c: cleanChoice(p.properties.symptoms_check_fever),
Cough__c: cleanChoice(p.properties.symptoms_check_cough),
Diarrhoea__c: cleanChoice(p.properties.symptoms_check_diarrhea),
TB_patients_therapy_observed__c: p.properties.observed_tb_therapy,
Injuries_or_wounds__c: p.properties.wounds_or_injuries,
Currently_on_ART_s__c: p.properties.ART,
// ART_Regimen__c: () => {
// const choice = dataValue(
// 'properties.ARVs;
// return cleanChoice(choice);
// },
Immediate_Breastfeeding__c: p.properties.Breastfeeding_Delivery,
Exclusive_Breastfeeding__c: p.properties.Exclusive_Breastfeeding,
Counselled_on_Exclusive_Breastfeeding__c: p.properties.counseling,
LMP__c: p.properties.when_was_your_lmp,
Family_Planning__c: cleanChoice(p.properties.family_planning),
Family_Planning_Method__c: p.properties.family_planning_method,
Family_Planning_Method__c: familyPlanningMethod,
FP_Method_Distributed__c: fpMethodDistributed,
Reasons_for_not_taking_FP_method__c: reasonForNotTakingFPMethod,
Pregnant__c: p.properties.Pregnant === 'Yes' ? true : false,
Counselled_on_FP_Methods__c: cleanChoice(
p.properties.CounselledFP_methods
),
Client_counselled_on__c: clientCounselledOnC,
Client_provided_with_FP__c: cleanChoice(
p.properties[
'was_the_woman_15-49yrs_provided_with_family_planning_commodities_by_chv'
]
),
Newborn_visited_48_hours_of_delivery__c:
p.properties.newborn_visited_48_hours_of_delivery,
Mother_visit_counselling__c: cleanChoice(
p.properties.did_you_consel_the_mother_on1
),
mother_visited_48_hours_of_the_delivery__c:
p.properties.visit_mother_48,
Newborn_visit_counselling__c: cleanChoice(
p.properties.did_you_consel_the_mother_on2
),
Know_HIV_status__c: cleanChoice(p.properties.known_hiv_status),
HIV_Status__c: p.properties.hiv_status,
Treatment_Distribution__c: treatmentDistributionC,
// QUESTION: Field name not found : Current_Weight__c
// Current_Weight__c: p.properties.Current_Weight,
Current_Height__c: p.properties.current_height,
Current_MUAC__c: p.properties.MUAC,
Food_groups_3_times_a_day__c: p.properties.food_groups,
Nutrition_Case_Managed__c: p.properties.nutrition_case_managed,
Nutrition_Danger_Signs__c: handleMultiSelectOriginal(
p.properties.nutrition_danger_signs
),
Why_was_nutrition_case_not_managed__c:
p.properties.nutrition_case_not_managed_why,
Community_Nutrition_Treatment__c:
p.properties.nutrition_treatment_severe,
Community_Nutrition_Treatment__c:
p.properties.nutrition_treatment_moderate,
Why_was_nutrition_treatment_not_given__c:
p.properties.nutrition_treatment_not_given,
Current_Nutrition_Status__c: p.properties.Nutrition_Status
? nutritionMap[p.properties.Nutrition_Status]
: undefined,
Default_on_TB_treatment__c: cleanChoice(
p.properties.default_tb_treatment
),
Received_pregnancy_test__c: cleanChoice(
p.properties.did_you_adminsiter_a_pregnancy_test
),
Pregnancy_test_result__c: cleanChoice(
p.properties.pregnancy_test_result
),
Chronic_illness__c: chronicIllnesC,
Childs_breath_per_minute__c: p.properties.breaths_per_minuite,
Child_chest_in_drawing__c: p.properties.Child_chest_in_drawing_c,
Caregiver_counseled_on_delayed_milestone__c:
p.properties.did_you_counsel_the_caregiver_on_delayed_milestones,
Delayed_Milestone__c:
p.properties.does_the_child_has_a_delayed_milestone,
Child_has_2_or_more_play_items__c:
p.properties.does_the_child_has_2_or_more_play_items_at_home,
Child_has_3_more_picture_books__c:
p.properties.does_the_child_has_3_or_more_picture_books,
Delayed_Milestones_Counselled_On__c: p.properties
.which_delayed_milestone_area_did_you_counsel_the_caregiver_on
? milestoneMap[
p.properties
.which_delayed_milestone_area_did_you_counsel_the_caregiver_on
]
: undefined,
Delayed_Milestone_Type__c: p.properties.which_delayed_milestone
? milestoneMap[p.properties.which_delayed_milestone]
: undefined,
Caretaker_trained_in_muac__c: p.properties.mother_trained_muac,
Caretaker_screened_for_muac_this__c:
p.properties.mother_screened_child_muac,
Caretaker_muac_findings__c:
p.properties.mother_screened_child_muac_result,
Caretaker_action_after_muac_screening__c:
p.properties.mother_screened_muac_action,
of_Caretaker_MUAC_screenings__c: p.properties.mother_nb_screening,
Pulse_Oximeter__c: p.properties.pulse_oximeter_available,
Heart_Rate_Pulse_Oximeter__c: p.properties.heart_rate_pulse_oximeter,
Oxygen_Concentration_Pulse_Oximeter__c:
p.properties.oxygen_concentration,
Can_child_drink__c: p.properties.can_child_drink,
Antibiotic_provided_for_fast_breathing__c:
p.properties.antibiotic_fast_breathing,
Antibiotic_provided_for_chest_indrawing__c:
p.properties.antibiotic_chest_indrawing,
Supervisor_Visit__c: supervisorVisit,
//HMN commented this one due to error "Error: InvalidBatch : Field name not found : Visit_Closed_Date__c"
//Visit_Closed_Date__c: p.properties.date_closed,
//29/06/2023 Added Malaria Vaccine mapping
malaria_vaccine_received__c:
p.properties.malaria_vaccine_received,
rts_s_1_date__c:
p.properties.rts_s_1_date,
rts_s_2_date__c:
p.properties.rts_s_2_date,
rts_s_3_date__c:
p.properties.rts_s_3_date,
rts_s_4_date__c:
p.properties.rts_s_4_date,

//HMN 29/06/2023
};
});

personVisits.forEach(person => {
Object.entries(person).forEach(([key, value]) => {
if (value === '' || value === null) person[key] = undefined;
});
});

// JSON logging of records
//HMN debugger 19/10/2023
// console.log(JSON.stringify(personVisits, null, 2));

return { ...state, personVisits };
});

bulk(
'Person_visit__c',
'upsert',
{
extIdField: 'CommCare_ID__c',
failOnError: true,
allowNoOp: true,
},
state => {
console.log('Bulk upserting person visit...');
return state.personVisits;
}
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31.html b/adaptors/library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31.html index e3aedb74ae9..8978d0e2794 100644 --- a/adaptors/library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31.html +++ b/adaptors/library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31.html @@ -22,13 +22,13 @@ - +
Skip to main content

WF3-2a/ Repeat Failed Person Visits

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

each, get, map

Expression

fn(state => {
const { baseUrl } = state.configuration;

const caseTypes = ['visite'];

//NOTE: You can use 'limit' to modify this batch size as desired
const limit = 1000; //E.g., change to 10 to process records in smaller batch sizes

//NOTE: indexedOnStart is the default sync start data the FIRST time the job runs
const indexedOnStart = '2023-10-19T06:00:00';

//NOTE: After first job run, OpenFn will check the job sync data ("lastRunAt") to set as the indexedOnStart
const lastRunAt =
typeof state.lastRunAt !== 'undefined' ? state.lastRunAt : indexedOnStart;
console.log('Filtering cases with indexed_on_start > than ::', lastRunAt);

const aMinuteAgo = new Date( Date.now() - 1000 * 60 );
console.log(aMinuteAgo);

const queries = caseTypes.map(
t => `?type=${t}&indexed_on_start=${lastRunAt}&limit=${limit}`
//NOTE: If for testing, you want to fetch data for a specific historical range (e.g., between April 23 and 24)...
//...then use the query string below instead of the one above on L16, and custom adjust the index_on start/end dates
// t => `?type=${t}&indexed_on_start=2023-10-19T07:00:00&limit=${limit}&indexed_on_end=2023-10-19T09:59:59`
);

return { ...state, queries, baseUrl, payloads: [] };
});

// create a "recursiveGet" which will call itself if CommCare tells us there's
// more data to fetch for the same form

fn(state => {
const recursiveGet = url =>
get(
url,
{
headers: { 'content-type': 'application/json' },
},
nextState => {
const now = new Date();
const { baseUrl, data, payloads } = nextState;

const { meta, objects } = data;
console.log('Metadata in CommCare response:', meta);

const finalState = {
...nextState,
payloads: [...payloads, ...objects],
};

if (meta.next) {
console.log('Next query detected, recursing...');
return recursiveGet(`${baseUrl}${meta.next}`)(finalState);
}
finalState.lastRunAt = now.toISOString().slice(0, 19);
return finalState;
}
);

return { ...state, recursiveGet };
});

// for each initial query, fetch data recursively
each(
'$.queries[*]',
fn(state => {
return state.recursiveGet(`${state.baseUrl}${state.data}`)(state);
})
);
// log the total number of payloads returned
fn(state => {
console.log('Count of payloads', state.payloads.length);

return { ...state, references: [], data: {} };
});
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19.html b/adaptors/library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19.html index 3a3b0119ffb..f39326b6d95 100644 --- a/adaptors/library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19.html +++ b/adaptors/library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19.html @@ -22,13 +22,13 @@ - +
Skip to main content

WF4-1. Bulk get Referral Cases

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: WF4-1. Bulk get Referral Cases
  • Adaptor: @openfn/language-http
  • Adaptor Version: v4.2.8
  • Created 5 months ago
  • Updated 4 days ago
  • Score: 92 (an indicator of how useful this job may be)

Key Functions

each, get, map

Expression

fn(state => {
const { baseUrl } = state.configuration;

const caseTypes = ['Case'];

//NOTE: You can use 'limit' to modify this batch size as desired
const limit = 1000; //E.g., change to 10 to process records in smaller batch sizes

//NOTE: indexedOnStart is the default sync start data the FIRST time the job runs
const indexedOnStart = '2023-10-23T07:00:00';

//NOTE: After first job run, OpenFn will check the job sync data ("lastRunAt") to set as the indexedOnStart
const lastRunAt =
typeof state.lastRunAt !== 'undefined' ? state.lastRunAt : indexedOnStart;
console.log('Filtering cases with indexed_on_start > than ::', lastRunAt);

const queries = caseTypes.map(
t => `?type=${t}&indexed_on_start=${lastRunAt}&limit=${limit}`
//NOTE: If for testing, you want to fetch data for a specific historical range (e.g., between April 23 and 24)...
//...then use the query string below instead of the one above on L16, and custom adjust the index_on start/end dates
// t => `?type=${t}&indexed_on_start=2023-10-20T03:00:00&limit=${limit}&indexed_on_end=2023-10-20T19:59:59`
);

return { ...state, queries, baseUrl, payloads: [] };
});

// create a "recursiveGet" which will call itself if CommCare tells us there's
// more data to fetch for the same form
fn(state => {
const recursiveGet = url =>
get(
url,
{
headers: { 'content-type': 'application/json' },
},
nextState => {
const now = new Date();
const { baseUrl, data, payloads } = nextState;

const { meta, objects } = data;
console.log('Metadata in CommCare response:', meta);

const finalState = {
...nextState,
payloads: [...payloads, ...objects],
};

if (meta.next) {
console.log('Next query detected, recursing...');
return recursiveGet(`${baseUrl}${meta.next}`)(finalState);
}
finalState.lastRunAt = now.toISOString().slice(0, 19);
return finalState;
}
);

return { ...state, recursiveGet };
});

// for each initial query, fetch data recursively
each(
'$.queries[*]',
fn(state => {
return state.recursiveGet(`${state.baseUrl}${state.data}`)(state);
})
);
// log the total number of payloads returned
fn(state => {
console.log('Count of payloads', state.payloads.length);
return { ...state, references: [], data: {} };
});
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19.html b/adaptors/library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19.html index 055a6f905aa..1ebb7e5b6ec 100644 --- a/adaptors/library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19.html +++ b/adaptors/library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19.html @@ -22,13 +22,13 @@ - +
Skip to main content

WF4-2. Bulk upsert Services

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

bulk, join, map, query, JSON

Expression

// NOTE: We perform a query before anything else if this is a 'Case'
fn(state => {
// state.type = state.data.indices.parent.case_type;
if (state.payloads.length == 0) return { ...state, services: [] };

const caseType = state.payloads
.filter(c => c.indices.parent.case_type === 'Case')
.map(c => c.indices.parent.case_id);

console.log(JSON.stringify(caseType, null, 2));

if (caseType.length > 0)
return query(
`SELECT Person__r.CommCare_ID__c FROM Service__c WHERE Service_UID__c IN ('${caseType.join(
"','"
)}')`
)(state).then(state => {
const { records } = state.references[0];
const ccId =
records.length == 1 ? records[0].Person__r.CommCare_ID__c : null;
return { ...state, ccId };
});

return state;
});

// NOTE: We construct a facilityMap and populate some conditional relationships
fn(state => {
if (state.payloads.length == 0) return state;
const facilityMap = {
Lwala_Hospital: 'Lwala Hospital',
Minyenya_Dispensary: 'Minyenya Dispensary',
Ndege_Oriedo_Dispensary: 'Ndege Oriedo Dispensary',
'Rongo_Sub-District_Hospital': 'Rongo Sub-District Hospital',
Kangeso_Dispensary: 'Kangeso Dispensary',
Ngodhe_Dispensary: 'Ngodhe Dispensary',
Ngere_Dispensary: 'Ngere Dispensary',
Verna_Health_Center: 'Verna Health Center',
Kochola_Dispensary: 'Kochola Dispensary',
Ongo_Health_Center: 'Ongo Health Center',
Royal_Medical_Center: 'Royal Medical Center',
Rosewood_Facility: 'Rosewood Facility',
Other: 'Other',
};

const pregDangerMap = {
Vaginal_Bleeding: 'Vaginal Bleeding',
Water_Breaks: 'Water Breaks before Time of Delivery',
Prolonged_Labour: 'Prolonged Labour over 12 Hours',
Convulsions: 'Convulsions or Fits',
Abdominal_Pain: 'Severe Abdominal Pain before Delivery',
High_Fever: 'High Fever',
Low_Baby_Movement: 'Feeling the Baby move less or not at all',
Swelling: 'Swelling of Face and Hands',
Severe_Headache: 'Severe or Continuous Headache for more than 12 hours',
Severe_Vomiting: 'Severe or Continuous Vomiting',
none: 'None',
};

const serviceMap = {
Scheduled_PSC_Apt: 'Scheduled PSC Apt',
Adverse_Drug_Reaction_Side_Effect: 'Adverse Drug Reaction/Side Effect',
Malnutrition: 'Malnutrition',
Malaria: 'Malaria',
TB: 'TB',
Treatment_for_Other_OIs: 'Treatment for Other OIs',
ARI: 'ARI',
Anemia: 'Anemia',
Diarrhea: 'Diarrhea',
Pregnancy_Care: 'Pregnancy Care (ANC)',
Family_Planning: 'Family Planning (FP)',
Preconception_Counseling: 'Preconception Counseling',
Injury: 'Injury',
Other: 'Other',
};

const milestoneTypeMap = {
cognitive_delays_learning_difficulties:
'Cognitive Delays (Learning Difficulties)',
motor_delays: 'Motor Delays',
speech_and_language_delay: 'Speech and language Delay',
social_and_emotional: 'Social and emotional',
};

const symptomsMap = {
convulsions: 'Convulsions',
not_able_to_eatdrink: 'Not able to eat/drink',
vomits_everything: 'Vomits everything',
'chest_in-drawing': 'Chest in-drawing',
unusually_sleepyunconscious: 'Unusually sleepy/unconscious',
swelling_of_both_feet: 'Swelling of both feet',
};

const childSignMap = {
Poor_Breastfeeding: 'Poor Breastfeeding (under 6 months old child)',
not_able_to_feed_since_birth_or_stopped_feeding_well:
'Not able to feed since birth, or stopped feeding well',
not_able_to_breastfeed: 'Not able to breastfeed',
Fever: 'Fever (37.5 C or more)',
very_low_temperature: 'Very low temperature (35.4 C or less)',
shivering: 'Shivering',
Fast_Breathing: 'Fast Breathing',
Very_Sleepy: 'Very Sleepy',
Convulsions_and_Fits: 'Convulsions and Fits',
only_moves_when_stimulated_or_does_not_move_even_on_stimulation:
'Only moves when stimulated, or does not move even on stimulation',
yellow_solebaby_body_turning_yellow_especially_eyes_palms_soles:
'Yellow sole(Baby body turning yellow especially eyes, palms, soles)',
bleeding_from_the_umbilical_stump: 'Bleeding from the umbilical stump',
signs_of_local_infection_umbilicus_is_red_or_draining_pus_skin_boils_or_eye:
'Signs of local infection: umbilicus is red or draining pus, skin boils, or eyes draining pus',
weight_chart_using_color_coded_scales_if_red_or_yellowweight_below_25kg_or_:
'Weight chart using color coded scales if RED or YELLOW(Weight below 2.5kg or born less than 36 weeks of age)',
unable_to_cry: 'Unable to cry',
cyanosis: 'Cyanosis',
bulging_fontanelle: 'Bulging fontanelle',
};

const otherReferralMap = {
HIV_Testing_and_Counseling: 'HIV Testing and Counseling',
Visit_to_Clinician: 'Visit to Clinician',
Adverse_Drug_Reaction_Side_Effect: 'Adverse Drug Reaction Side Effect',
Malnutrition: 'Malnutrition',
Malaria: 'Malaria',
PMTCT: 'PMTCT',
TB: 'TB',
Treatment_for_other_OIs: 'Treatment for other OIs',
ARI: 'ARI',
Anemia: 'Anemia',
Diarrhea: 'Diarrhea',
Pregnancy_Care_ANCE: 'Pregnancy Care (ANC)',
Family_Planning_FP: 'Family Planning (FP)',
Preconception_Counseling: 'Preconception Counseling',
Injury: 'Injury',
blood_in_stool: 'Blood in Stool',
Blood_in_Stool: 'Blood in Stool',
Immunization: 'Immunization',
Routine_Health_Check_ups: 'Routine Health Check ups',
routine_health_check_ups: 'Routine Health Check ups',
Other: 'Other',
Poor_Breastfeeding: 'Poor Breastfeeding (under 6 months old child)',
not_able_to_feed_since_birth_or_stopped_feeding_well:
'Not able to feed since birth, or stopped feeding well',
not_able_to_breastfeed: 'Not able to breastfeed',
Fever: 'Fever (37.5 C or more)',
very_low_temperature: 'Very low temperature (35.4 C or less)',
shivering: 'Shivering',
Fast_Breathing: 'Fast Breathing',
Very_Sleepy: 'Very Sleepy',
Convulsions_and_Fits: 'Convulsions and Fits',
only_moves_when_stimulated_or_does_not_move_even_on_stimulation:
'Only moves when stimulated, or does not move even on stimulation',
yellow_solebaby_body_turning_yellow_especially_eyes_palms_soles:
'Yellow sole(Baby body turning yellow especially eyes, palms, soles)',
bleeding_from_the_umbilical_stump: 'Bleeding from the umbilical stump',
signs_of_local_infection_umbilicus_is_red_or_draining_pus_skin_boils_or_eye:
'Signs of local infection: umbilicus is red or draining pus, skin boils, or eyes draining pus',
weight_chart_using_color_coded_scales_if_red_or_yellowweight_below_25kg_or_:
'Weight chart using color coded scales if RED or YELLOW(Weight below 2.5kg or born less than 36 weeks of age)',
unable_to_cry: 'Unable to cry',
cyanosis: 'Cyanosis',
bulging_fontanelle: 'Bulging fontanelle',
};

const homeCareMap = {
Adherence_Counseling: 'Adherence Counseling',
Pill_Count_Monitoring: 'Pill Count Monitoring',
Nutrition_Assessment_and_Counseling: 'Nutrition Assessment and Counseling',
WASH_Counseling: 'WASH Counseling',
Prevention_Counseling: 'Prevention Counseling',
Psychosocial_Support: 'Psychosocial Support',
Provision_of_Supplies: 'Provision of Supplies',
OI_Management_Support: 'OI Management Support',
};

const ecdMap = {
physiotherapy: 'Physiotherapy',
speech_therapy: 'Speech Therapy',
nutrition_education: 'Nutrition Education',
play_therapy: 'Play Therapy',
assessment: 'Assessment',
counselling: 'Counselling',
other: 'Other',
};

const clinicalMap = {
diarrhea: 'Diarrhea',
malnutrition: 'Malnutrition',
malaria: 'Malaria',
acute_respiratory_infection: 'Acute Respiratoy Infection (ARI)',
accident_injury: 'Accident/Injury',
other: 'Other',
};

const caseType = state.payloads
.filter(c => c.indices.parent.case_type === 'Case')
.map(c => c.indices.parent.case_id);

const personType = state.payloads
.filter(c => c.indices.parent.case_type === 'Person')
.map(c => c.indices.parent.case_id);

let relationships = [];

// If it's a person, add the person relationship
if (personType.length > 0) {
personType.forEach(case_id => {
relationships.push({ 'Person__r.CommCare_ID__c': case_id });
});
}

// If it's a service, add the service rship AND a different person rship
if (caseType.length > 0) {
caseType.forEach(case_id => {
relationships.push({ 'Parent_Service__r.Service_UID__c': case_id });
});

relationships.push({ 'Person__r.CommCare_ID__c': state.ccId });
}

return {
...state,
facilityMap,
relationships,
serviceMap,
pregDangerMap,
milestoneTypeMap,
symptomsMap,
childSignMap,
otherReferralMap,
homeCareMap,
clinicalMap,
ecdMap,
};
});

// NOTE: We finally upsert to the Service__c object in Salesforce
fn(state => {
if (state.payloads.length == 0) return state;
const services = state.payloads
.filter(r => r.properties.owner_id !== '8e725928e3ce43d19b390dd604097069')
.map(r => {
// pregnancyDangerSigns
const pCheck = r.properties.pregnancy_danger_signs;
const pValue =
pCheck && pCheck !== ''
? pCheck
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.pregDangerMap[value] || value;
})
: undefined;
const pregnancyDangerSigns = pValue ? pValue.join(';') : undefined;

// childDangerSigns
const cCheck = r.properties.Other_Danger_Signs;
const cValue =
cCheck && cCheck !== ''
? cCheck
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.childSignMap[value] || value;
})
: undefined;
const childDangerSigns = cValue ? cValue.join(';') : undefined;

// delayedMilestone
const dCheck = r.properties.which_delayed_milestone;
const dValue =
dCheck && dCheck !== ''
? dCheck
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.milestoneTypeMap[value] || value;
})
: undefined;
const delayedMilestone = dValue ? dValue.join(';') : undefined;

// seriousSymptoms
const sCheck = r.properties.symptoms_check_other;
const sValue =
sCheck && sCheck !== ''
? sCheck
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.symptomsMap[value] || value;
})
: undefined;
const seriousSymptoms = sValue ? sValue.join(';') : undefined;

// otherReferralReason
const otCheck = r.properties.Other_Referral_Reasons;
const otValue =
otCheck && otCheck !== ''
? otCheck
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.otherReferralMap[value] || value;
})
: undefined;
const otherReferralReason = otValue ? otValue.join(';') : undefined;

// homeBasedCareRendered
const homeCheck = r.properties.Home_Based_Care_Provided;
const homeValue =
homeCheck && homeCheck !== ''
? homeCheck
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.homeCareMap[value] || value;
})
: undefined;
const homeBasedCareRendered = homeValue ? homeValue.join(';') : undefined;

// ecdClinicalService
const ecdCheck = r.properties.ECD_Clinical_Service;
const ecdValue =
ecdCheck && ecdCheck !== ''
? ecdCheck
.replace(/ /gi, ';')
.split(';')
.map(value => {
return state.ecdMap[value] || value;
})
: undefined;
const ecdClinicalService = ecdValue ? ecdValue.join(';') : undefined;

return {
'Person__r.CommCare_ID__c':
r.indices.parent.case_type === 'Person'
? r.indices.parent.case_id
: r.indices.parent.case_type === 'Case'
? state.ccId
: undefined,
Service_UID__c: r.case_id,
CommCare_Code__c: r.case_id,
RecordTypeID: '01224000000YAuK',
'Household_CHW__r.CommCare_ID__c': r.properties.CHW_ID,
Open_Case__c: r.closed === false ? true : false,
Case_Closed_Date__c: r.properties.date_closed,
Age_Time_of_Service__c: r.properties.age,
Source__c: r.properties.Source === '1',
Clinical_facility__c: r.properties.Facility_Visited
? state.facilityMap[r.properties.Facility_Visited]
: undefined,
Client_Received_Services_at_Facility2__c: r.properties.Facility_Visit,
Clinical_Visit_Date__c:
r.properties.Facility_Date === '' ||
r.properties.Facility_Date === undefined
? undefined
: r.properties.Facility_Date,
CHW_Followed_Up_with_the_Client__c: r['properties.Follow-Up']!== ''
? r['properties.Follow-Up']
: undefined,
Follow_Up_Date__c: r['properties.Follow-Up_Date'],

Person_Complied_w_Referral_in_24_hrs__c:r.properties.referral_compliance,
Skillled_Delivery__c: r.properties.skilled_delivery,
Child_received_immunizations__c: r.properties.immunization,
Received_a_diagnosis_for_PSBI__c: r.properties.psbi_diagnosis !== ''
? r.properties.psbi_diagnosis
: undefined, //Form: CHW.Follow-Up.PSBI.psbi_diagnosis
Received_antibiotics_per_protocol__c: r.properties.antibiotic_8days, //Form: CHW.Follow-Up.PSBI.antibiotic_8day

Distributed_Treatment_on_Last_Visit__c:
r.properties.distribute_treatment, //Form: CHW.Follow-Up.distribute_treatment
Person_had_an_adverse_drug_reaction__c:
r.properties.adverse_drug_reaction,
Defaulted__c:
r.properties.date_of_default && r.properties.date_of_default !== ''
? true
: false,
Date_of_Default__c: r.properties.date_of_default,
Client_s_Symptoms_Improved__c: r.properties.Client_Improved,
Case_Type__c: r.properties.Case_Type,
Follow_Up_By_Date__c:
r.properties['Follow-Up_By_Date'] &&
r.properties['Follow-Up_By_Date'] !== ''
? r.properties['Follow-Up_By_Date']
: undefined,
Date__c: new Date(r.properties.date_opened).toISOString(),
Reason_for_Service__c: r.properties.Reason_for_Service,
Type_of_Service__c: r.properties.Type_of_Service,
Malaria_Status__c: r.properties.Malaria_Status,
Home_Treatment_Date__c: r.properties.home_treatment_date,
Malaria_Home_Test_Date__c: r.properties.malaria_test_date,
Home_ORS__c: r.properties.clinic_ors,
Home_Zinc__c: r.properties.clinic_zinc,
Height__c: r.properties.height,
Weight__c: r.properties.weight,
MUAC__c: r.properties.muac,
Nutrition_Status__c: r.properties.Nutrition_Status,

//===== NEW MAPPINGS - JAN 14 ===========================//
Pregnancy_Danger_Signs__c: pregnancyDangerSigns,
Child_Danger_Signs__c: childDangerSigns,
Delayed_Milestone__c: delayedMilestone,
Serious_Symptoms__c: seriousSymptoms,
Other_Referral_Reasons__c: otherReferralReason,
Home_Based_Care_Rendered__c: homeBasedCareRendered,
PSBI_Visit__c:
r.properties.psbi_task && r.properties.psbi_task !== ''
? `Day ${r.properties.psbi_task}`
: undefined,
Clinical_Services__c: r.properties.TT5_Clinical_Service
? state.clinicalMap[r.properties.TT5_Clinical_Service]
: r.properties.TT5_Clinical_Service,
Referred_Facility__c: r.properties.referred_facility
? state.facilityMap[r.properties.referred_facility]
: r.properties.referred_facility,
HAWI_Clinical_Services__c: r.properties.HAWI_Clinical_Service
? state.serviceMap[r.properties.HAWI_Clinical_Service]
: r.properties.HAWI_Clinical_Service,
ECD_Clinical_Services__c: ecdClinicalService,

};
});

return { ...state, services };
});
/* JSON logging of records
fn(state => {
console.log('Services to upsert ::', JSON.stringify(state.services));
return state;
});
*/

bulk(
'Service__c',
'upsert',
{
extIdField: 'Service_UID__c',
failOnError: true,
allowNoOp: true,
},
state => {
console.log('Bulk upserting service...');
return state.services;
}
);
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/aleksa-cron-2022-04-29.html b/adaptors/library/jobs/auto/aleksa-cron-2022-04-29.html index da23b9db8ee..cce9b4017a9 100644 --- a/adaptors/library/jobs/auto/aleksa-cron-2022-04-29.html +++ b/adaptors/library/jobs/auto/aleksa-cron-2022-04-29.html @@ -22,13 +22,13 @@ - +
Skip to main content

aleksa cron

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

Expression

fn(state => {
console.log(state);
return state;
})
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/alter-state-before-operations.html b/adaptors/library/jobs/auto/alter-state-before-operations.html index a42122328b1..f3d7c105182 100644 --- a/adaptors/library/jobs/auto/alter-state-before-operations.html +++ b/adaptors/library/jobs/auto/alter-state-before-operations.html @@ -22,13 +22,13 @@ - +
Skip to main content

Pre-processing data

📜 This job is an official example from OpenFn.

Metadata

Key Functions

dataPath, dataValue, each, field, fields, merge, relationship, upsert, Array

Expression

// Here, we make sure CommCare gives us an array to use in each(merge(...), ...)
fn(state => {
const idCards = state.data.form.ID_cards_given_to_vendor;
if (!Array.isArray(idCards)) {
state.data.form.ID_cards_given_to_vendor = [idCards];
}
return state;
});

// Now state has been changed, and we carry on...
each(
merge(
dataPath('form.ID_cards_given_to_vendor[*]'),
fields(
field('Vendor_Id', dataValue('form.ID_vendor')),
field('form_finished_time', dataValue('form.meta.timeEnd'))
)
),
upsert(
'Small_Packet__c',
'sp_id__c',
fields(
field('sp_id__c', dataValue('ID_cards_given_to_vendor')),
relationship('Vendor__r', 'Badge_Code__c', dataValue('Vendor_Id')),
field(
'Small_Packet_Distribution_Date__c',
dataValue('form_finished_time')
)
)
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/async-and-array-dot-map.html b/adaptors/library/jobs/auto/async-and-array-dot-map.html index 70f8aad4793..45b11fc9c46 100644 --- a/adaptors/library/jobs/auto/async-and-array-dot-map.html +++ b/adaptors/library/jobs/auto/async-and-array-dot-map.html @@ -22,13 +22,13 @@ - +
Skip to main content

Using async and array.map

📜 This job is an official example from OpenFn.

Metadata

Key Functions

map, post, async, await, Promise

Expression

fn(state => {
console.log('Here we will await the result of a LOT of async operations.');

console.log('First we needed to break large arrays into smaller chunks.');
function chunk(arr, chunkSize) {
var R = [];
for (var i = 0, len = arr.length; i < len; i += chunkSize)
R.push(arr.slice(i, i + chunkSize));
return R;
}

const clinicSets = chunk(state.data.Clinic, 10);
const patientSets = chunk(state.data.Patient, 10);
const visitSets = chunk(state.data.Visit, 10);
const deletedVisitSets = chunk(state.data.VisitDeleted, 10);

console.log('Then we define a bunch of different async functions.');
const postClinics = async cs => {
return post(state.configuration.inboxUrl, {
body: { clinics: cs },
})(state);
};

const postPatients = async ps => {
return post(state.configuration.inboxUrl, {
body: { patients: ps },
})(state);
};

const postVisits = async vs => {
return post(state.configuration.inboxUrl, {
body: { visits: vs },
})(state);
};

const postDeletedVisits = async dvs => {
return post(state.configuration.inboxUrl, {
body: { deletedVisits: dvs },
})(state);
};

console.log(
'Then we define a single function that wraps them all up and waits for all the individual functions to resolve.'
);
async function makePosts() {
return Promise.all([
...clinicSets.map(item => postClinics(item)),
...patientSets.map(item => postPatients(item)),
...visitSets.map(item => postVisits(item)),
...deletedVisitSets.map(item => postDeletedVisits(item)),
]);
}

console.log(
'Then we return that function, forcing our next operation to await the result of this one.'
);
return makePosts();
});

fn(state => {
console.log('I show up AFTER those async functions are resolved.');
return state;
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/async-findValue.html b/adaptors/library/jobs/auto/async-findValue.html index 328038fe2bf..8da43801e19 100644 --- a/adaptors/library/jobs/auto/async-findValue.html +++ b/adaptors/library/jobs/auto/async-findValue.html @@ -22,13 +22,13 @@ - +
Skip to main content

Using findValue with an array of data

📜 This job is an official example from OpenFn.

Metadata

Key Functions

findValue, upsertMany, async, await

Expression

fn(async state => {
const dataArray =
state.data.body.st_grass_repeat ||
state.data.body["plot_forest_area/st_grass_repeat"] ||
[];
const dataGrass = [];
const path = state.data.body.st_grass_repeat
? "st_grass_repeat"
: "plot_forest_area/st_grass_repeat";

for (let data of uniqueGrass) {
dataGrass.push({
WCSPROGRAMS_TaxaID: await findValue({
uuid: "WCSPROGRAMS_TaxaID",
relation: "WCSPROGRAMS_Taxa",
where: {
ScientificName: `%${state.handleValue(
data["st_grass_repeat/grass_species"]
)}%`,
},
operator: { ScientificName: "like" },
})(state),
UnknownSpeciesImage: data[`${path}/noknown`],
GrassPercent: data[`${path}/grass_perc`],
GrassHeight: data[`${path}/grass_height`],
AnswerId: state.data.body._id,
});
}

return upsertMany(
"WCSPROGRAMS_VegetationGrass",
"WCSPROGRAMS_VegetationGrassCode",
() => dataGrass
)(state);
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce.html b/adaptors/library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce.html index 7ef0c22085f..feb50da4134 100644 --- a/adaptors/library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce.html +++ b/adaptors/library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce.html @@ -22,13 +22,13 @@ - +
Skip to main content

Using merge and each

📜 This job is an official example from OpenFn.

Metadata

Key Functions

create, dataPath, dataValue, each, field, fields, index, join, lastReferenceValue, merge, relationship

Expression

each(
join('$.data.data[*]', '$.data.formId', 'formId'),
create(
'ODK_Submission__c',
fields(
//bridgetest sandbox record type, comment out when not in use
field('RecordTypeId', '012J00000005hlb'),
//prduction record type, comment out when not in use
//field("RecordType", "XXXXXXXXXXXXXXXX"),
// or
//relationship("RecordType", "name", dataValue("recort_type_name")),
field('Record_Type_Name__c', dataValue('record_type_id')),
field('ODK_Form_Name__c', dataValue('formId')),
field('Site_School_ID_Number__c', dataValue('site')),
field('BT_Staff_ID__c', dataValue('recorded_by')),
field('Date__c', dataValue('today')),
field('Head_of_Household__c', dataValue('head_of_household')),
field(
'Head_of_Household_Gender__c',
dataValue('head_of_household_gender')
),
field('Head_of_Household_age__c', dataValue('head_of_household_age')),
field('Light_Source__c', dataValue('light_source')),
field('communication__c', dataValue('communication')),
field('transport__c', dataValue('transport')),
field(
'number_of_children_in_household__c',
dataValue('number_of_children')
),
field('school_visits__c', dataValue('school_visits')),
field('school_visit_reason__c', dataValue('school_visit_reason')),
field('Village__c', dataValue('village')),
field('ODK_Key__c', dataValue('*meta-instance-id*'))
)
)
),
each(
merge(
dataPath('individual_na[*]'),
fields(
field('metaId', dataValue('*meta-instance-id*')),
field('parentId', lastReferenceValue('id')),
field('village', dataValue('$data.village'))
)
),
create(
'ODK_Submission__c',
fields(
//bridgetest sandbox record type, comment out when not in use
field('RecordTypeId', '012J00000005hla'),
//prduction record type, comment out when not in use
//field("RecordType", "XXXXXXXXXXXXXXXX"),
// or
//relationship("RecordType", "name", dataValue("recort_type_name")),
field('Related_ODK_Submission__c', dataValue('parentId')),
field('family_name__c', dataValue('given_name')),
field('school_coded__c', dataValue('school_coded')),
field('school_type__c', dataValue('school_type')),
field('gender__c', dataValue('gender')),
field('Pays_School_Fees__c', dataValue('school_fees_yes_no')),
field('in_primary_school__c', dataValue('in_primary_school')),
field('School_Fee_Amount__c', dataValue('school_fees')),
field('Age__c', dataValue('age')),
field('surname__c', dataValue('surname')),
field('out_of_school_reason__c', dataValue('out_of_school_reason')),
field('class_level__c', dataValue('class_level')),
field(
'other_out_of_school_reason__c',
dataValue('other_out_of_school_reason')
),
field('Village__c', dataValue('village')),
// This is a concatenation, adding the unique child ID.
field('ODK_Key__c', function (state) {
return dataValue('metaId')(state).concat('(', index()(state), ')');
})
)
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/commcare-reports-api-2016-08-29.html b/adaptors/library/jobs/auto/commcare-reports-api-2016-08-29.html index 04602ce4128..d2e665d4442 100644 --- a/adaptors/library/jobs/auto/commcare-reports-api-2016-08-29.html +++ b/adaptors/library/jobs/auto/commcare-reports-api-2016-08-29.html @@ -22,13 +22,13 @@ - +
Skip to main content

commcare reports api

This job was provided by an OpenFn.org user via the job library API.

Metadata

  • Name: commcare reports api
  • Adaptor: @openfn/language-http
  • Adaptor Version: v0.0.9
  • Created about 7 years ago
  • Updated about 7 years ago
  • Score: 0 (an indicator of how useful this job may be)

Key Functions

get, post, Promise

Expression

get("api/v0.5/configurablereportdata/daily_form_stats", {
query: function(state) {
return { date: state.lastSubmissionDate || "Aug 29, 2016 4:44:26 PM" }
},
callback: function(state) {
// Pick submissions out in order to avoid `post` overwriting `response`.
var submissions = state.response.body;
// Use .slice to limit how much you send to the server for testing
// return submissions
return submissions.reduce(function(acc, item) {
return acc.then(
post(
"http://localhost:4000/inbox/8ad63a29-5c25-4d8d-ba2c-fe6274dcfbab",
{ body: item }
)
)
}, Promise.resolve(state))
.then(function(state) {
console.log(submissions.length)
if (submissions.length) {
state.lastSubmissionDate = submissions[submissions.length-1].SubmissionDate
}
return state;
})
.then(function(state) {
delete state.response
return state;
})
}
})
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/complex-http-request-chains.html b/adaptors/library/jobs/auto/complex-http-request-chains.html index 0ed6f89f4bb..7661c461109 100644 --- a/adaptors/library/jobs/auto/complex-http-request-chains.html +++ b/adaptors/library/jobs/auto/complex-http-request-chains.html @@ -22,13 +22,13 @@ - +
Skip to main content

Chaining HTTP Requests

📜 This job is an official example from OpenFn.

Metadata

Key Functions

dataPath, each, get, post, put

Expression

each(
dataPath('someArray[*]'),
post(
'https://en7a5l7u3izq6.x.pipedream.net/',
{
body: state => {
return { name: state.data.surname, age: state.data.age };
},
},
state => {
console.log('in the callback');
console.log(state.data);
get(
'https://en7a5l7u3izq6.x.pipedream.net/',
{},
// Note how we don't use: `put(args)(state)` because state is already
// provided by the parent operation, get(), to its callback...
put('https://en7a5l7u3izq6.x.pipedream.net/')
// ...but since we've called get() INSIDE an anonymous function, we'll
// need to pass state to it manually: get(args)(state)...
)(state);
return state;
}
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/complex-state-control.html b/adaptors/library/jobs/auto/complex-state-control.html index 8cfe21918a0..aefe861345e 100644 --- a/adaptors/library/jobs/auto/complex-state-control.html +++ b/adaptors/library/jobs/auto/complex-state-control.html @@ -22,13 +22,13 @@ - +
Skip to main content

Using promises

📜 This job is an official example from OpenFn.

Metadata

Key Functions

query

Expression

// Example with language-salesforce
fn(state => {
// return state => {
return new Promise((resolve, reject) => {
query('SELECT Name FROM Account')(state)
.then(state => {
console.log(state.references[0].records);
console.log('doing stuff here');
return state;
})
.then(state => {
console.log('and in here');
resolve(state);
});
});
// };
});

fn(state => {
console.log('and also in here!');
console.log(state.references);
return state;
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/concatenate-many-fields-with-nulls.html b/adaptors/library/jobs/auto/concatenate-many-fields-with-nulls.html index 278b5e98439..4d47e15cbbb 100644 --- a/adaptors/library/jobs/auto/concatenate-many-fields-with-nulls.html +++ b/adaptors/library/jobs/auto/concatenate-many-fields-with-nulls.html @@ -22,13 +22,13 @@ - +
Skip to main content

Concat fields with nulls

📜 This job is an official example from OpenFn.

Metadata

Key Functions

arrayToString, create, dataValue, each, field, fields, relationship

Expression

each(
'$.data.data[*]',
create(
'Verification__c',
fields(
field('RecordTypeId', '01236000000Q6PT'),
relationship(
'Supplier__r',
'Unique_Entity_ID__c',
dataValue('Unique_Entity_ID')
),
field('Currency_ISO_Code__c', dataValue('Currency_ISO_Code')),
field('Date_Conducted__c', dataValue('Date_Conducted')),
field('ODK_Key__c', dataValue('*meta-instance-id*')),
field('Unique_Entity_ID__c', dataValue('Unique_Entity_ID')),
field('Interviewee__c', dataValue('Interviewee')),
field('Interviewee_Role__c', dataValue('Interviewee_Role')),
field(
'Interviewee_Primary_Phone__c',
dataValue('Interviewee_Primary_Phone')
),
field('Interviewee_Phone_2__c', dataValue('Interviewee_Phone_2')),
field('Interviewee_Phone_3__c', dataValue('Interviewee_Phone_3')),
field(
'Interviewee_Primary_Email__c',
dataValue('Interviewee_Primary_Email')
),
field('Trade_Name__c', dataValue('Trade_Name')),
field('Registered_Name__c', dataValue('Registered_Name')),
field('Location_Description__c', dataValue('Location_Description')),
field('Main_Office_Country__c', dataValue('Main_Office_Country')),
field('Main_Office_Region_Province_or_County__c', function (state) {
return arrayToString(
[
dataValue('Main_Office_Region_Province_or_County_a')(state),
dataValue('Main_Office_Region_Province_or_County_b')(state),
dataValue('Main_Office_Region_Province_or_County_c')(state),
dataValue('Main_Office_Region_Province_or_County_d')(state),
].filter(Boolean),
','
);
}),
field('Main_Office_City__c', function (state) {
return arrayToString(
[
dataValue('Main_Office_City_a')(state),
dataValue('Main_Office_City_b')(state),
dataValue('Main_Office_City_c')(state),
dataValue('Main_Office_City_d')(state),
].filter(Boolean),
','
);
}),
field(
'Main_Office_Street_Address__c',
dataValue('Main_Office_Street_Address')
),
field('Geolocation__Latitude__s', dataValue('gps:Latitude')),
field('Geolocation__Longitude__s', dataValue('gps:Longitude')),
field('Main_Contact_First__c', dataValue('Main_Contact_First')),
field('Main_Contact_Last__c', dataValue('Main_Contact_Last')),
field('Main_Contact_Role__c', dataValue('Main_Contact_Role')),
field('Main_Contact_Role_Other__c', dataValue('Main_Contact_Role_Other')),
field(
'Main_Contact_Phone_Mobile__c',
dataValue('Main_Contact_Phone_Mobile')
),
field('Main_Contact_Phone_Work__c', dataValue('Main_Contact_Phone_Work')),
field(
'Main_Contact_Phone_Other__c',
dataValue('Main_Contact_Phone_Other')
),
field('Main_Contact_Email_Work__c', dataValue('Main_Contact_Email_Work')),
field('General_Phone__c', dataValue('General_Phone')),
field('General_Email__c', dataValue('General_Email')),
field('Website__c', dataValue('Website')),
field('Interest_in_Website__c', dataValue('Interest_in_Website')),
field(
'Hours_of_Operation_Start__c',
dataValue('Hours_of_Operation_Start')
),
field('Hours_of_Operation_End__c', dataValue('Hours_of_Operation_End')),
field(
'Hours_of_Operation_Other__c',
dataValue('Hours_of_Operation_Other')
),
field(
'Hours_of_Operation_Other_Start__c',
dataValue('Hours_of_Operation_Other_Start')
),
field(
'Hours_of_Operation_Other_End__c',
dataValue('Hours_of_Operation_Other_End')
),
field(
'Goods_and_Services_Description__c',
dataValue('Goods_and_Services_Description')
),
field('Primary_Sector__c', dataValue('Primary_Sector')),
field('Primary_Subsectors__c', function (state) {
return arrayToString(
[
dataValue('Primary_Subsectors_1')(state),
dataValue('Primary_Subsectors_2')(state),
dataValue('Primary_Subsectors_3')(state),
dataValue('Primary_Subsectors_4')(state),
dataValue('Primary_Subsectors_5')(state),
dataValue('Primary_Subsectors_6')(state),
dataValue('Primary_Subsectors_7')(state),
dataValue('Primary_Subsectors_8')(state),
dataValue('Primary_Subsectors_9')(state),
dataValue('Primary_Subsectors_10')(state),
dataValue('Primary_Subsectors_l1')(state),
dataValue('Primary_Subsectors_12')(state),
dataValue('Primary_Subsectors_13')(state),
dataValue('Primary_Subsectors_14')(state),
dataValue('Primary_Subsectors_15')(state),
dataValue('Primary_Subsectors_16')(state),
dataValue('Primary_Subsectors_17')(state),
dataValue('Primary_Subsectors_18')(state),
dataValue('Primary_Subsectors_19')(state),
dataValue('Primary_Subsectors_20')(state),
dataValue('Primary_Subsectors_21')(state),
].filter(Boolean),
','
);
}),
field('Other_Sectors__c', function (state) {
return arrayToString(dataValue('Other_Sectors')(state), ',');
}),
field('Other_Subsectors__c', function (state) {
return arrayToString(
[
dataValue('Other_Subsectors_1')(state),
dataValue('Other_Subsectors_2')(state),
dataValue('Other_Subsectors_3')(state),
dataValue('Other_Subsectors_4')(state),
dataValue('Other_Subsectors_5')(state),
dataValue('Other_Subsectors_6')(state),
dataValue('Other_Subsectors_7')(state),
dataValue('Other_Subsectors_8')(state),
dataValue('Other_Subsectors_9')(state),
dataValue('Other_Subsectors_10')(state),
dataValue('Other_Subsectors_l1')(state),
dataValue('Other_Subsectors_12')(state),
dataValue('Other_Subsectors_13')(state),
dataValue('Other_Subsectors_14')(state),
dataValue('Other_Subsectors_15')(state),
dataValue('Other_Subsectors_16')(state),
dataValue('Other_Subsectors_17')(state),
dataValue('Other_Subsectors_18')(state),
dataValue('Other_Subsectors_19')(state),
dataValue('Other_Subsectors_20')(state),
dataValue('Other_Subsectors_21')(state),
].filter(Boolean),
','
);
}),
field(
'Entity_and_Registration_1__c',
dataValue('Entity_and_Registration_1')
),
field(
'Entity_and_Registration_2__c',
dataValue('Entity_and_Registration_2')
),
field(
'Entity_and_Registration_3__c',
dataValue('Entity_and_Registration_3')
),
field('Registration_Date__c', dataValue('Registration_Date')),
field('Registration_Active__c', dataValue('Registration_Active')),
field(
'Business_Operation_Licenses__c',
dataValue('Business_Operation_Licenses')
),
field(
'Business_Operation_Certificates__c',
dataValue('Business_Operation_Certificates')
),
field('Association_Memberships__c', dataValue('Association_Memberships')),
field('Vendor_List_Memberships__c', dataValue('Vendor_List_Memberships')),
field('Has_Marketing_Plan__c', dataValue('Has_Marketing_Plan')),
field('Number_of_Competitors__c', dataValue('Number_of_Competitors')),
field('Start_of_Operations__c', dataValue('Start_of_Operations')),
field('Primary_Language__c', dataValue('Primary_Language')),
field('Primary_Language_Other__c', dataValue('Primary_Language_Other')),
field('English_Speakers__c', dataValue('English_Speakers')),
field('Other_Languages__c', dataValue('Other_Languages')),
field(
'Frequency_of_Internet_Access__c',
dataValue('Frequency_of_Internet_Access')
),
field(
'Method_of_Internet_Access__c',
dataValue('Method_of_Internet_Access')
),
field(
'Method_of_Internet_Access_Other__c',
dataValue('Method_of_Internet_Access_Other')
),
field('Frequency_of_Email_Use__c', dataValue('Frequency_of_Email_Use')),
field('Type_of_Email_Use__c', dataValue('Type_of_Email_Use')),
field('Counties_Regions_Serviced__c', function (state) {
return arrayToString(
[
dataValue('Counties_Regions_Serviced_a')(state),
dataValue('Counties_Regions_Serviced_b')(state),
dataValue('Counties_Regions_Serviced_c')(state),
dataValue('Counties_Regions_Serviced_d')(state),
].filter(Boolean),
','
);
}),
field('Additional_Branches__c', dataValue('Additional_Branches')),
field('Branch_Locations__c', function (state) {
return arrayToString(
[
dataValue('Branch_Locations_a')(state),
dataValue('Branch_Locations_b')(state),
dataValue('Branch_Locations_c')(state),
dataValue('Branch_Locations_d')(state),
].filter(Boolean),
','
);
}),
field(
'Majority_Local_or_Foreign__c',
dataValue('Majority_Local_or_Foreign')
),
field('Num_of_Owners__c', dataValue('Num_of_Owners')),
field('Num_of_Female_Owners__c', dataValue('Num_of_Female_Owners')),
field('Num_of_Male_Owners__c', dataValue('Num_of_Male_Owners')),
field(
'Primary_Owner_is_Same_as_Main_Contact__c',
dataValue('Primary_Owner_is_Same_as_Main_Contact')
),
field('Primary_Owner__c', dataValue('Primary_Owner')),
field('Primary_Owner_Gender__c', dataValue('Primary_Owner_Gender')),
field(
'Primary_Owner_Gender_Other__c',
dataValue('Primary_Owner_Gender_Other')
),
field(
'Primary_Owner_Nationality__c',
dataValue('Primary_Owner_Nationality')
),
field(
'Primary_Owner_Phone_Mobile__c',
dataValue('Primary_Owner_Phone_Mobile')
),
field(
'Primary_Owner_Phone_Work__c',
dataValue('Primary_Owner_Phone_Work')
),
field(
'Primary_Owner_Phone_Other__c',
dataValue('Primary_Owner_Phone_Other')
),
field('Primary_Owner_Email__c', dataValue('Primary_Owner_Email')),
field('Num_of_Businesses_Owned__c', dataValue('Num_of_Businesses_Owned')),
field(
'Names_of_Businesses_Owned__c',
dataValue('Names_of_Businesses_Owned')
),
field('Num_of_Managers__c', dataValue('Num_of_Managers')),
field('Num_of_Female_Managers__c', dataValue('Num_of_Female_Managers')),
field('Num_of_Male_Managers__c', dataValue('Num_of_Male_Managers')),
field('Finance_Management__c', dataValue('Finance_Management')),
field(
'Finance_Management_Other__c',
dataValue('Finance_Management_Other')
),
field('Dedicated_HR_Manager__c', dataValue('Dedicated_HR_Manager')),
field(
'Num_of_Permanent_Full_Time_Employees__c',
dataValue('Num_of_Permanent_Full_Time_Employees')
),
field(
'Num_of_Perm_Full_Time_Female_Employees__c',
dataValue('Num_of_Perm_Full_Time_Female_Employees')
),
field(
'Num_of_Perm_Full_Time_Male_Employees__c',
dataValue('Num_of_Perm_Full_Time_Male_Employees')
),
field(
'Num_of_Full_Time_Temporary_Employees__c',
dataValue('Num_of_Full_Time_Temporary_Employees')
),
field(
'Num_of_Full_Time_Temp_Female_Employees__c',
dataValue('Num_of_Full_Time_Temp_Female_Employees')
),
field(
'Num_of_Full_Time_Temp_Male_Employees__c',
dataValue('Num_of_Full_Time_Temp_Male_Employees')
),
field(
'Num_of_Local_Staff_Full_Part_Time__c',
dataValue('Num_of_Local_Staff_Full_Part_Time')
),
field(
'Num_of_Expatriate_Staff_Full_Part_Time__c',
dataValue('Num_of_Expatriate_Staff_Full_Part_Time')
),
field(
'International_Client_in_Past_Six_Months__c',
dataValue('International_Client_in_Past_Six_Months')
),
field('Principal_Client_Name__c', dataValue('Principal_Client_Name')),
field(
'Foreign_or_Domestic_Principal_Client__c',
dataValue('Foreign_or_Domestic_Principal_Client')
),
field('Principal_Client_Sector__c', dataValue('Principal_Client_Sector')),
field(
'Goods_Services_Provided_to_this_Client__c',
dataValue('Goods_Services_Provided_to_this_Client')
),
field(
'End_of_Last_Contract_with_this_Client__c',
dataValue('End_of_Last_Contract_with_this_Client')
),
field(
'Value_Goods_Services_Sold_Last_6_Months__c',
dataValue('Value_Goods_Services_Sold_Last_6_Months')
),
field(
'Value_Goods_Sold_Last_6_Months_USD__c',
dataValue('Value_Goods_Sold_Last_6_Months_USD')
),
field(
'Access_to_Finance_Constraint_Ranking__c',
dataValue('Access_to_Finance_Constraint_Ranking')
),
field('Bank_Account__c', dataValue('Bank_Account')),
field('Bank_Guarantee__c', dataValue('Bank_Guarantee')),
field(
'Satisfied_with_Current_Bank__c',
dataValue('Satisfied_with_Current_Bank')
),
field(
'Describe_Satisfaction_with_Current_Bank__c',
dataValue('Describe_Satisfaction_with_Current_Bank')
),
field(
'Has_Received_a_Formal_Loan__c',
dataValue('Has_Received_a_Formal_Loan')
),
field('Formal_Loan_Provider__c', dataValue('Formal_Loan_Provider')),
field(
'Formal_Loan_Amount_Received__c',
dataValue('Formal_Loan_Amount_Received')
),
field(
'Formal_Loan_Amount_Received_USD__c',
dataValue('Formal_Loan_Amount_Received_USD')
),
field(
'Date_Formal_Loan_Received__c',
dataValue('Date_Formal_Loan_Received')
),
field('Formal_Loan_Purpose__c', dataValue('Formal_Loan_Purpose')),
field(
'Formal_Loan_Purpose_Other__c',
dataValue('Formal_Loan_Purpose_Other')
),
field('Formal_Loan_Repaid__c', dataValue('Formal_Loan_Repaid')),
field('Interested_in_Loan__c', dataValue('Interested_in_Loan')),
field('Interested_Loan_Amount__c', dataValue('Interested_Loan_Amount')),
field(
'Interested_Loan_Amount_USD__c',
dataValue('Interested_Loan_Amount_USD')
),
field(
'Interested_Loan_Duration__c',
dataValue('Interested_Loan_Duration')
),
field('Interested_Loan_Purpose__c', dataValue('Interested_Loan_Purpose')),
field(
'Interested_Loan_Purpose_Other__c',
dataValue('Interested_Loan_Purpose_Other')
),
field(
'Formal_Loan_Confidence_Ranking__c',
dataValue('Formal_Loan_Confidence_Ranking')
),
field(
'Received_Loan_from_Family_Friends__c',
dataValue('Received_Loan_from_Family_Friends')
),
field(
'Family_Friend_Loan_Amount__c',
dataValue('Family_Friend_Loan_Amount')
),
field(
'Family_Friend_Loan_Amount_USD__c',
dataValue('Family_Friend_Loan_Amount_USD')
),
field(
'Received_Loan_from_Informal_Lenders__c',
dataValue('Received_Loan_from_Informal_Lenders')
),
field(
'Informal_Lender_Loan_Amount__c',
dataValue('Informal_Lender_Loan_Amount')
),
field(
'Informal_Lender_Loan_Amount_USD__c',
dataValue('Informal_Lender_Loan_Amount_USD')
),
field(
'Interested_in_Investor_Business_Partner__c',
dataValue('Interested_in_Investor_Business_Partner')
),
field(
'Total_Turnover_Previous_Month__c',
dataValue('Total_Turnover_Previous_Month')
),
field(
'Total_Turnover_Previous_Month_USD__c',
dataValue('Total_Turnover_Previous_Month_USD')
),
field(
'Total_Turnover_Previous_Fiscal_Year__c',
dataValue('Total_Turnover_Previous_Fiscal_Year')
),
field(
'Total_Turnover_Previous_Fiscal_Yr_USD__c',
dataValue('Total_Turnover_Previous_Fiscal_Yr_USD')
),
field(
'Total_Profit_Previous_Fiscal_Year__c',
dataValue('Total_Profit_Previous_Fiscal_Year')
),
field(
'Total_Profit_Previous_Fiscal_Year_USD__c',
dataValue('Total_Profit_Previous_Fiscal_Year_USD')
),
field(
'Accepted_Modes_of_Payment__c',
dataValue('Accepted_Modes_of_Payment')
),
field(
'Accepted_Modes_of_Payment_Other__c',
dataValue('Accepted_Modes_of_Payment_Other')
),
field(
'Avg_Expen_Spent_on_Imported_Goods_Year__c',
dataValue('Avg_Expen_Spent_on_Imported_Goods_Year')
),
field(
'Avg_Expen_Spent_on_Domestic_Goods_Year__c',
dataValue('Avg_Expen_Spent_on_Domestic_Goods_Year')
),
field(
'Avg_Expen_on_Domestic_Suppliers_Year__c',
dataValue('Avg_Expen_on_Domestic_Suppliers_Year')
),
field(
'Avg_Expen_on_Intl_Suppliers_Year__c',
dataValue('Avg_Expen_on_Intl_Suppliers_Year')
),
field(
'Avg_Expen_Spent_on_Salaries_Year__c',
dataValue('Avg_Expen_Spent_on_Salaries_Year')
),
field(
'Balance_Sheet_Statement_Available__c',
dataValue('Balance_Sheet_Statement_Available')
),
field('Profit_Loss_Statement__c', dataValue('Profit_Loss_Statement')),
field('Directly_Imports_Goods__c', dataValue('Directly_Imports_Goods')),
field(
'Avg_of_Total_Costs_from_Imports__c',
dataValue('Avg_of_Total_Costs_from_Imports')
),
field('Highest_Costing_Import__c', dataValue('Highest_Costing_Import')),
field(
'Origin_Country_of_Highest_Costing_Import__c',
dataValue('Origin_Country_of_Highest_Costing_Import')
),
field('Other_Import_Countries__c', dataValue('Other_Import_Countries')),
field('Exports_Products__c', dataValue('Exports_Products')),
field(
'Avg_of_Total_Revenue_from_Exports__c',
dataValue('Avg_of_Total_Revenue_from_Exports')
),
field('Primary_Export__c', dataValue('Primary_Export')),
field('Destination_of_Exports__c', dataValue('Destination_of_Exports')),
field(
'Profits_Expectation_Next_Six_Months__c',
dataValue('Profits_Expectation_Next_Six_Months')
),
field(
'Staff_Expectation_Next_Six_Months__c',
dataValue('Staff_Expectation_Next_Six_Months')
),
field(
'Int_l_Entities_Represent_Good_Opp__c',
dataValue('Int_l_Entities_Represent_Good_Opp')
),
field(
'Int_l_Concessionaires_Represent_Good_Opp__c',
dataValue('Int_l_Concessionaires_Represent_Good_Opp')
),
field(
'Sectors_Representing_Best_Local_Opps__c',
dataValue('Sectors_Presenting_Best_Local_Opps')
),
field(
'Obstacle_Working_with_Intl_Entities__c',
dataValue('Obstacle_Working_with_Intl_Entities')
),
field(
'Biggest_Challenge_Next_6_Months__c',
dataValue('Biggest_Challenge_Next_6_Months')
),
field(
'Second_Biggest_Challenge_Next_6_Months__c',
dataValue('Second_Biggest_Challenge_Next_6_Months')
),
field(
'Financial_Management_Ranking__c',
dataValue('Financial_Management_Ranking')
),
field(
'Access_to_Finance_Ranking__c',
dataValue('Access_to_Finance_Ranking')
),
field('Administration_Ranking__c', dataValue('Administration_Ranking')),
field('Human_Resources_Ranking__c', dataValue('Human_Resources_Ranking')),
field(
'Technical_Expertise_Ranking__c',
dataValue('Technical_Expertise_Ranking')
),
field(
'Training_Helps_Efficiency__c',
dataValue('Training_Helps_Efficiency')
),
field(
'Capacity_Building_Activities_Offered__c',
dataValue('Capacity_Building_Activities_Offered')
),
field(
'Capacity_Building_Offered_Other__c',
dataValue('Capacity_Building_Offered_Other')
),
field(
'Can_Provide_Quotations_WP_on_Request__c',
dataValue('Can_Provide_Quotations_WP_on_Request')
),
field('Knows_What_a_Tender_is__c', dataValue('Knows_What_a_Tender_is')),
field(
'Frequency_Checking_for_Tenders__c',
dataValue('Frequency_Checking_for_Tenders')
),
field(
'Has_Submitted_a_Tender_Bid__c',
dataValue('Has_Submitted_a_Tender_Bid')
),
field(
'Has_Won_Tenders_in_Past_Six_Months__c',
dataValue('Has_Won_Tenders_in_Past_Six_Months')
),
field(
'Details_of_Recently_Won_Tenders__c',
dataValue('Details_of_Recently_Won_Tenders')
),
field(
'Num_of_Gov_t_Bids_in_Last_Six_Months__c',
dataValue('Num_of_Govt_Bids_in_Last_Six_Months')
),
field(
'Num_of_Private_Bids_in_Last_Six_Months__c',
dataValue('Num_of_Private_Bids_in_Last_Six_Months')
),
field(
'Num_of_NGO_INGO_IO_Bids_Last_Six_Months__c',
dataValue('Num_of_NGO_INGO_IO_Bids_Last_Six_Months')
),
field(
'Main_Reason_for_Lost_Bids__c',
dataValue('Main_Reason_for_Lost_Bids')
),
field(
'Main_Reason_for_Lost_Bids_Other__c',
dataValue('Main_Reason_for_Lost_Bids_Other__c')
),
field(
'Main_Reason_for_Not_Bidding_on_Tenders__c',
dataValue('Main_Reason_for_Not_Bidding_on_Tenders')
),
field(
'Main_Reason_Not_Bidding_Tenders_Others__c',
dataValue('Main_Reason_Not_Bidding_Tenders_Others__c')
),
field(
'Planning_to_Bid_on_Future_Tenders__c',
dataValue('Planning_to_Bid_on_Tenders_in_the_Future')
),
field(
'Services_That_Would_Help_to_Win_Tenders__c',
dataValue('Services_That_Would_Help_to_Win_Tenders')
),
field(
'Interested_in_Future_BM_Communications__c',
dataValue('Interested_in_Future_BM_Communications')
),
field(
'Future_BM_Communications__c',
dataValue('Future_BM_Communications')
),
field(
'Interested_in_Attending_Future_Training__c',
dataValue('Interested_in_Attending_Future_Training')
),
field(
'Training_Most_Interested_in_Attending__c',
dataValue('Training_Most_Interested_in_Attending')
),
field(
'Training_Most_Interested_in_Other__c',
dataValue('Training_Most_Interested_in_Other')
),
field(
'Amount_Willing_to_Pay_for_Training__c',
dataValue('Amount_Willing_to_Pay_for_Training')
),
field(
'Amount_Willing_to_Pay_for_Training__c',
dataValue('Amount_Willing_to_Pay_for_Training')
),
field(
'Training_Interested_In_but_Not_Offered__c',
dataValue('Training_Interested_In_but_Not_Offered')
),
field(
'Advice_to_Entrepreneurs_in_your_Country__c',
dataValue('Advice_to_Entrepreneurs_in_your_Country')
),
field('Interviewer_Comments__c', dataValue('Interviewer_Comments'))
)
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/create-if-proposal.html b/adaptors/library/jobs/auto/create-if-proposal.html index d43eb8cb2a3..a5d2f8a704d 100644 --- a/adaptors/library/jobs/auto/create-if-proposal.html +++ b/adaptors/library/jobs/auto/create-if-proposal.html @@ -22,13 +22,13 @@ - +
Skip to main content

Create/update records if...

📜 This job is an official example from OpenFn.

Metadata

Key Functions

createIf, dataValue, field, fields, relationship, upsertIf

Expression

// Using upsertIf and createIf we can conditionally create or update records if
// some condition in the source data is met.

upsertIf(
// a path which resolves to true/false
dataValue('form.legal.allowedToSync'),
'Patient__c',
'Patient_ID__c',
fields(
field('Name__c', dataValue('form.name')),
field('Patient_ID__c', dataValue('form.identification.govId'))
)
);

createIf(
// or a function which returns true/false
state => state.data.form.completedVisit === 'yes',
'Visit__c',
fields(
field('Date__c', dataValue('form.visit.visit_date')),
field('Type__c', 'checkup'),
relationship(
'Patient__r',
'Patient_ID__c',
dataValue('form.identification.govId')
)
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/getKoboData.html b/adaptors/library/jobs/auto/getKoboData.html index 73abbde4f1e..d3ab131cc95 100644 --- a/adaptors/library/jobs/auto/getKoboData.html +++ b/adaptors/library/jobs/auto/getKoboData.html @@ -22,13 +22,13 @@ - +
Skip to main content

Extract Kobo data from API to send to OpenFn Inbox

📜 This job is an official example from OpenFn.

Metadata

  • Name: Extract Kobo data from API to send to OpenFn Inbox
  • Adaptor: @openfn/language-http
  • Adaptor Version: v3.1.7
  • Created date unknown
  • Updated date unknown
  • Score: 100 (an indicator of how useful this job may be)

Key Functions

dataPath, each, get, map, post

Expression

//Sample job to get Kobo data and post back to OpenFn Inbox
fn(state => {
console.log(`Started at: ${new Date().toISOString()}`);
state.submissions = [];
state.data = {
surveys: [
// =========================================================================
//== TODO: Specify new forms to fetch here, including the Kobo form id, tag, name, and owner ==//
{ id: 'aijj9FSpuCzMTRnMPGike8', tag: 'nrgt_historical', name: 'NRGT Makira 2017 - Test OpenFn', owner: 'bns' }, // example
//consider listing multiple forms
// =========================================================================

].map(survey => ({
formId: survey.id,
tag: survey.tag,
name: survey.name,
owner: survey.owner,
url: `https://kf.kobotoolbox.org/api/v2/assets/${survey.id}/data/?format=json`,
})),
};
console.log(`Fetching data for ${state.data.surveys.length} surveys.`);
return state;
});

each(dataPath('surveys[*]'), state => {
const { url, tag, formId, name, owner } = state.data;
return get(url, {}, state => {
state.data.submissions = state.data.results.map((submission, i) => {
return {
i,
// Here we append the tags defined above to the Kobo form submission data
form: tag,
formName: name,
formOwner: owner,
body: submission,
};
});
const count = state.data.submissions.length;
console.log(`Fetched ${count} submissions from ${formId} (${tag}).`);
//Once we fetch the data, we want to post each individual Kobo survey
//back to the OpenFn inbox to run through the jobs
return each(dataPath('submissions[*]'), state => {
console.log(`Posting ${state.data.i + 1} of ${count}...`);
// =========================================================================
//== TODO: replace openfnInboxUrl with your OpenFn Project Inbox URL ====//
return post(openfnInboxUrl, { body: state => state.data })(state);
})(state);
// =========================================================================
})(state);
});

fn(state => {
console.log(`Finished at: ${new Date().toISOString()}`);
return {
data: {
message: "No cursor required. Job fetches all submission for given forms."
},
references: []
};
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/nawiri-2023-05-03.html b/adaptors/library/jobs/auto/nawiri-2023-05-03.html index 454d8aa9c24..ba844e9f099 100644 --- a/adaptors/library/jobs/auto/nawiri-2023-05-03.html +++ b/adaptors/library/jobs/auto/nawiri-2023-05-03.html @@ -22,13 +22,13 @@ - +
Skip to main content
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/no-return-2023-01-06.html b/adaptors/library/jobs/auto/no-return-2023-01-06.html index db4bb9592dd..59a0c953e2e 100644 --- a/adaptors/library/jobs/auto/no-return-2023-01-06.html +++ b/adaptors/library/jobs/auto/no-return-2023-01-06.html @@ -22,13 +22,13 @@ - +
Skip to main content

no return

This job was provided by an OpenFn.org user via the job library API.

Metadata

Key Functions

Expression

fn(state => {
console.log("no return");
});
- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/promise-all-nested-requests.html b/adaptors/library/jobs/auto/promise-all-nested-requests.html index 1a44bb8f688..cdd237fca88 100644 --- a/adaptors/library/jobs/auto/promise-all-nested-requests.html +++ b/adaptors/library/jobs/auto/promise-all-nested-requests.html @@ -22,13 +22,13 @@ - +
Skip to main content

Promises and nested requests

📜 This job is an official example from OpenFn.

Metadata

  • Name: Promises and nested requests
  • Adaptor: @openfn/language-http
  • Adaptor Version: latest
  • Created date unknown
  • Updated date unknown
  • Score: 100 (an indicator of how useful this job may be)

Key Functions

each, get, Promise

Expression

each(
'$.enrolledUsers[10]',
fn(state => {
const { host } = state.configuration;
const { id } = state.data;
const usersfields = [];
return get(
host,
{
query: {
wstoken: state.token,
wsfunction: 'core_user_get_users_by_field',
field: 'id',
'values[]': id,
moodlewsrestformat: 'json',
},
},
state => {
const { id, phone1, address } = state.data[0];
const fields = [
{ id, 'Teléfono móvil': phone1, Dirección: address, grades: [] },
];
console.log(state.courseIds);
let promises = [];
state.courseIds.forEach(courseid => {
promises.push(
get(
host,
{
query: {
wstoken: state.token,
wsfunction: 'gradereport_user_get_grade_items',
userid: id,
courseid,
moodlewsrestformat: 'json',
},
},
state => {
console.log('fetched');
const { graderaw } = state.data.usergrades[0].gradeitems[0];
const grades = [{ courseid, graderaw }];
fields[0].grades.push(...grades);
}
)(state)
);
});

return Promise.all(promises).then(() => {
usersfields.push(...fields);
return {
...state,
usersfields,
enrolledUsers: [],
response: [],
};
});
}
)(state);
})
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/send-mail-in-mailgun.html b/adaptors/library/jobs/auto/send-mail-in-mailgun.html index 8c59dd8f24c..be97f577665 100644 --- a/adaptors/library/jobs/auto/send-mail-in-mailgun.html +++ b/adaptors/library/jobs/auto/send-mail-in-mailgun.html @@ -22,13 +22,13 @@ - +
Skip to main content

send email

📜 This job is an official example from OpenFn.

Metadata

Key Functions

dataValue, field, fields, send

Expression

send(
fields(
field('from', 'you@domain.com'),
field('to', dataValue('form.submission.respondantEmail')),
field('subject', 'Thanks for completing our survey.'),
field('text', 'Your message goes here.')
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/send-sms-from-salesforce-workflow.html b/adaptors/library/jobs/auto/send-sms-from-salesforce-workflow.html index bc4751edb4d..41836b6f3c3 100644 --- a/adaptors/library/jobs/auto/send-sms-from-salesforce-workflow.html +++ b/adaptors/library/jobs/auto/send-sms-from-salesforce-workflow.html @@ -22,13 +22,13 @@ - +
Skip to main content

Send sms from Salesforce workflow action

📜 This job is an official example from OpenFn.

Metadata

Key Functions

dataValue, field, fields, send

Expression

send(
fields(
field(
'to_number',
dataValue(
'Envelope.Body.notifications.Notification.sObject.phone_number__c'
)
),
field('message_type', 'sms'),
field('route_id', ''),
field('content', function (state) {
return 'Hey there. Your name is '.concat(
dataValue('Envelope.Body.notifications.Notification.sObject.name__c')(
state
),
'.'
);
})
)
);

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/synchronous-http-request.html b/adaptors/library/jobs/auto/synchronous-http-request.html index 0d25479f098..e25e65d9c7d 100644 --- a/adaptors/library/jobs/auto/synchronous-http-request.html +++ b/adaptors/library/jobs/auto/synchronous-http-request.html @@ -22,13 +22,13 @@ - +
Skip to main content

Chaining synchronous http requests

📜 This job is an official example from OpenFn.

Metadata

  • Name: Chaining synchronous http requests
  • Adaptor: @openfn/language-http
  • Adaptor Version: latest
  • Created date unknown
  • Updated date unknown
  • Score: 100 (an indicator of how useful this job may be)

Key Functions

post, async, await

Expression

fn(async state => {
const { Patient, Visit } = state.data;

console.log('Here we break large arrays into smaller chunks.');
const chunk = (arr, chunkSize) => {
var R = [];
for (var i = 0, len = arr.length; i < len; i += chunkSize) R.push(arr.slice(i, i + chunkSize));
return R;
};

const patientSets = chunk(Patient, 10);
const visitSets = chunk(Visit, 10);

console.log('Patient sets:', patientSets.length);
console.log('Visit sets:', visitSets.length);

const visitChunks = [];
const patientChunks = [];

patientSets.forEach(sets => {
const data = {
Visit: [],
Patient: sets,
};
patientChunks.push(data);
});

visitSets.forEach(sets => {
const data = {
Visit: sets,
Patient: [],
};
visitChunks.push(data);
});

let countInbox = 0;
console.log('Then we define our async function that make multiple posts requests,');
console.log('each after a fix period of time.');
const postToInbox = async data => {
countInbox++;
console.log(`${countInbox} request to inbox`);

await new Promise(resolve => setTimeout(resolve, 2000));
await post(state.configuration.inboxUrl, { body: data })(state);
};

console.log('For each one of our chunks, we send one by one awaiting response.');
for (const patient of patientChunks) {
await postToInbox(patient);
}
for (const visit of visitChunks) {
await postToInbox(visit);
}

return { ...state, patientChunks, visitChunks };
});

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/timeout.html b/adaptors/library/jobs/auto/timeout.html index 342b822018a..2d1a0b99e17 100644 --- a/adaptors/library/jobs/auto/timeout.html +++ b/adaptors/library/jobs/auto/timeout.html @@ -22,13 +22,13 @@ - +
Skip to main content

Timeout to create a delay

📜 This job is an official example from OpenFn.

Metadata

Key Functions

get

Expression

// To properly use a timeout, wrap it in a promise. This job has two operations
// and it executes the get(...) operation after the fn(...) operation
// waits for 4000ms.
fn(state => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('wait, and then resolve');
resolve(state);
}, 4000);
});
});

get('https://jsonplaceholder.typicode.com/todos/1');

- + \ No newline at end of file diff --git a/adaptors/library/jobs/auto/upsert-many-items-in-array-with-value-outside-array.html b/adaptors/library/jobs/auto/upsert-many-items-in-array-with-value-outside-array.html index 98b02f17696..d86137f0353 100644 --- a/adaptors/library/jobs/auto/upsert-many-items-in-array-with-value-outside-array.html +++ b/adaptors/library/jobs/auto/upsert-many-items-in-array-with-value-outside-array.html @@ -22,13 +22,13 @@ - +
Skip to main content

Merge data into child array then upsert

📜 This job is an official example from OpenFn.

Metadata

Key Functions

dataPath, dataValue, each, field, fields, merge, relationship, upsert

Expression

each(
merge(
dataPath('form.ID_cards_given_to_vendor[*]'),
fields(
field('Vendor_Id', dataValue('form.ID_vendor')),
field('form_finished_time', dataValue('form.meta.timeEnd'))
)
),
upsert(
'Small_Packet__c',
'sp_id__c',
fields(
field('sp_id__c', dataValue('ID_cards_given_to_vendor')),
relationship('Vendor__r', 'Badge_Code__c', dataValue('Vendor_Id')),
field(
'Small_Packet_Distribution_Date__c',
dataValue('form_finished_time')
)
)
)
);

- + \ No newline at end of file diff --git a/adaptors/library/triggers/xmlns.html b/adaptors/library/triggers/xmlns.html index 1e6612a4b2a..fdc0187b878 100644 --- a/adaptors/library/triggers/xmlns.html +++ b/adaptors/library/triggers/xmlns.html @@ -22,13 +22,13 @@ - +
Skip to main content

Match a message with a fragment inside another object called `form`

{
"form": {
"@xmlns": "http://openrosa.org/formdesigner/F732194-3278-nota-ReAL-one"
}
}
- + \ No newline at end of file diff --git a/adaptors/magpi.html b/adaptors/magpi.html index 695341786db..49c75d895e6 100644 --- a/adaptors/magpi.html +++ b/adaptors/magpi.html @@ -22,14 +22,14 @@ - +
Skip to main content

Magpi

Magpi is not able to push data to external URLs. In order to fetch data from Magpi, you must run a scheduled job with a cron trigger using language-magpi:

fetchSurveyData({
surveyId: 37479, // the survey id
afterDate: '2016-05-31', // the initial "after" date
// after the first run, OpenFn will only fetch new submissions
postUrl: 'https://www.openfn.org/inbox/secret-5c25-inbox-ba2c-url', // the inbox to post form data to.
});

Every time this job runs it will only fetch new data, by default.

- + \ No newline at end of file diff --git a/adaptors/moodle.html b/adaptors/moodle.html index 1931c1e1303..cd5b547941a 100644 --- a/adaptors/moodle.html +++ b/adaptors/moodle.html @@ -22,7 +22,7 @@ - + @@ -48,7 +48,7 @@ reflected in my mobile app so that I can follow-up with the relevant support to ensure they perform well.

Example job to get enrolled users via the Moodle API endpoint (aka web service function): core_enrol_get_enrolled_users

fn(state => {
const { loginUrl, username, password, host } = state.configuration;
return get(
`${loginUrl}&username=${username}&password=${password}`,
{},
state => {
const { token } = state.data;
const courseIds = [224, 225];
const enrolledUsers = [];
return each(
courseIds,
fn(state => {
let courseid = state.data;
return get(
`${host}`,
{
query: {
wstoken: token,
wsfunction: 'core_enrol_get_enrolled_users',
courseid,
moodlewsrestformat: 'json',
},
headers: { 'content-type': 'application/json' },
},
state => {
console.log(
`Getting users enrolled in the course with ${courseid}...`
);
enrolledUsers.push(state.data);
return { ...state, enrolledUsers };
}
)(state);
})
)(state);
}
)(state);
});
- + \ No newline at end of file diff --git a/adaptors/odk.html b/adaptors/odk.html index 1aa1c6fb53b..f29cc2f0d4c 100644 --- a/adaptors/odk.html +++ b/adaptors/odk.html @@ -22,7 +22,7 @@ - + @@ -44,7 +44,7 @@ https://www.openfn.org/inbox/8ad63a29-mUCh-sEcRET-cODes-wOW)
  • Leave "Authorization token:" blank.
  • Leave "Include Media as:" set to "Links(URLs) to Media".
  • Click "Publish" and enter your email address in the dialogue box.
  • Click the "Published Data" tab under "Form Management" and select your form to view the status of your publisher. You can also now check your OpenFn inbox to see ODK submissions arrive.
  • - + \ No newline at end of file diff --git a/adaptors/ona.html b/adaptors/ona.html index 472a36976c8..2d546b648f1 100644 --- a/adaptors/ona.html +++ b/adaptors/ona.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ and select Settings.
  • On the left-side menu, select Webhooks.
  • Paste your OpenFn inbox URL into the URL input field.
  • Click "Add webhook".
  • Ensure that the webhook is now listed with the JSON tag, indicating that it will forward data as JSON.
  • Check to see that, once a form is submitted, it is forwarded to your OpenFn inbox.
  • - + \ No newline at end of file diff --git a/adaptors/packages/asana-changelog.html b/adaptors/packages/asana-changelog.html index 387908e7857..82c962b940f 100644 --- a/adaptors/packages/asana-changelog.html +++ b/adaptors/packages/asana-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    2.1.6

    Patch Changes

    2.1.5

    Patch Changes

    2.1.4

    Patch Changes

    2.1.3

    Patch Changes

    2.1.2

    Patch Changes

    2.1.1

    Patch Changes

    2.1.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/asana-configuration-schema.html b/adaptors/packages/asana-configuration-schema.html index 9accfac9e8f..2dc092fffe4 100644 --- a/adaptors/packages/asana-configuration-schema.html +++ b/adaptors/packages/asana-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "apiVersion": "1.0",
    "token": "sample-tokenyWSJdXBACMLLWMNGgADFA"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "apiVersion": {
    "title": "API Version",
    "type": "string",
    "description": "The API version",
    "examples": [
    "1.0"
    ]
    },
    "token": {
    "title": "Token",
    "type": "string",
    "description": "The API token",
    "examples": [
    "sample-tokenyWSJdXBACMLLWMNGgADFA"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "apiVersion",
    "token"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/asana-docs.html b/adaptors/packages/asana-docs.html index 9c2dbd26d94..6b5e0de3de2 100644 --- a/adaptors/packages/asana-docs.html +++ b/adaptors/packages/asana-docs.html @@ -22,7 +22,7 @@ - + @@ -38,7 +38,7 @@ Access: public

    ParamTypeDescription
    taskGidstringGlobally unique identifier for the task
    paramsobjectBody parameters
    callbackfunction(Optional) callback function

    Example

    updateTask("taskGid",
    {
    name: 'test', "approval_status": "pending", "assignee": "12345"
    }
    )

    upsertTask

    upsertTask(projectGid, params, callback) ⇒ Operation Update or create a task.

    Kind: global function
    Access: public

    ParamTypeDescription
    projectGidstringGlobally unique identifier for the project
    paramsobjectan object with an externalId and some task data.
    callbackfunction(Optional) callback function

    Example

    upsertTask(
    "1201382240880",
    {
    "externalId": "name",
    "data": {
    name: 'test', "approval_status": "pending", "assignee": "12345"
    }

    }
    )

    - + \ No newline at end of file diff --git a/adaptors/packages/asana-readme.html b/adaptors/packages/asana-readme.html index 9d8c4507601..289c632585f 100644 --- a/adaptors/packages/asana-readme.html +++ b/adaptors/packages/asana-readme.html @@ -22,7 +22,7 @@ - + @@ -38,7 +38,7 @@ the task does not exist, a new one will be created. The first parameter in this function should be the project_id.

    upsertTask('12344', {
    externalId: 'name',
    data: {
    name: 'A new task',
    projects: ['12344'],
    notes: 'This is a new task',
    },
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/beyonic-changelog.html b/adaptors/packages/beyonic-changelog.html index 0172d45a858..18e7a17ffc3 100644 --- a/adaptors/packages/beyonic-changelog.html +++ b/adaptors/packages/beyonic-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.1.9

    Patch Changes

    0.1.8

    Patch Changes

    0.1.7

    Patch Changes

    0.1.6

    Patch Changes

    0.1.5

    Patch Changes

    0.1.4

    Patch Changes

    0.1.3

    Patch Changes

    0.1.2

    Patch Changes

    0.1.1

    Patch Changes

    0.1.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/beyonic-configuration-schema.html b/adaptors/packages/beyonic-configuration-schema.html index 7e887c96c9c..922e3df4673 100644 --- a/adaptors/packages/beyonic-configuration-schema.html +++ b/adaptors/packages/beyonic-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "apiUrl": "https://beyonic.com/api",
    "apiToken": "cdjhiooiSIUJHDYSYUIHASIOHKAANOAJJjsiujhaka"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "apiUrl": {
    "title": "API URL",
    "type": "string",
    "description": "API URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://beyonic.com/api"
    ]
    },
    "apiToken": {
    "title": "API Token",
    "type": "string",
    "description": "API token",
    "minLength": 1,
    "examples": [
    "cdjhiooiSIUJHDYSYUIHASIOHKAANOAJJjsiujhaka"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "apiUrl",
    "apiToken"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/beyonic-docs.html b/adaptors/packages/beyonic-docs.html index d21db8f0b1e..36997024447 100644 --- a/adaptors/packages/beyonic-docs.html +++ b/adaptors/packages/beyonic-docs.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ Create a collection request

    Kind: global function

    ParamTypeDescription
    dataobjectPayload data for the collection request

    Example

    execute(
    createCollectionRequest(data)
    )(state)

    createContact

    createContact(data) ⇒ Operation Create a contact

    Kind: global function

    ParamTypeDescription
    dataobjectPayload data for the contact

    Example

    execute(
    createContact(data)
    )(state)

    createPayment

    createPayment(data) ⇒ Operation Create a payment

    Kind: global function

    ParamTypeDescription
    dataobjectPayload data for the payment

    Example

    execute(
    createPayment(data)
    )(state)

    - + \ No newline at end of file diff --git a/adaptors/packages/beyonic-readme.html b/adaptors/packages/beyonic-readme.html index 6f131829008..c42e276e88b 100644 --- a/adaptors/packages/beyonic-readme.html +++ b/adaptors/packages/beyonic-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Payments API

    createPayment(...)

    createPayment(
    fields(
    field('phonenumber', '+256773712831'),
    field('first_name', 'Gideon'),
    field('last_name', 'Zelalem'),
    field('amount', 100.2),
    field('currency', 'USD'),
    field('account', 1),
    field('description', 'Long-term contract for Arseal'),
    field('payment_type', 'money'),
    field('callback_url', 'https://my.website/payments/callback')
    )
    );

    Collection Requests API

    createCollectionRequest(...)

    createCollectionRequest(
    fields(
    field('instructions', 'Send me some money, please!'),
    field('phonenumber', '+256773712831'),
    field('amount', 5.0),
    field('currency', 'USD')
    )
    );

    Contacts API

    createContact(...)

    createContact(
    fields(
    field('first_name', 'Granit'),
    field('last_name', 'Xhaka'),
    field('phone_number', '+256773712831'),
    field('email', 'granit@arsenal.com')
    )
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/bigquery-changelog.html b/adaptors/packages/bigquery-changelog.html index 7892f7510b6..8ff2974d5c2 100644 --- a/adaptors/packages/bigquery-changelog.html +++ b/adaptors/packages/bigquery-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.1.5

    Patch Changes

    1.1.4

    Patch Changes

    1.1.3

    Patch Changes

    1.1.2

    Patch Changes

    1.1.1

    Patch Changes

    1.1.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/bigquery-configuration-schema.html b/adaptors/packages/bigquery-configuration-schema.html index 14dbef2b795..dfd62726c7d 100644 --- a/adaptors/packages/bigquery-configuration-schema.html +++ b/adaptors/packages/bigquery-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "type": "service_acconut",
    "project_id": "some-project-id",
    "private_key_id": "670b9e3c8c366e83aa569dd57cbfc5c575b72e42",
    "private_key": "-----BEGIN PRIVATE KEY-----\nblah\nmoreblah=\n-----END PRIVATE KEY-----\n",
    "client_email": "bigquery@some-project.iam.gserviceaccount.com",
    "client_id": "someid",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/bigquery%40some-project.iam.gserviceaccount.com"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "additionalProperties": true,
    "properties": {
    "type": {
    "title": "Type",
    "type": "string",
    "description": "",
    "examples": [
    "service_acconut"
    ]
    },
    "project_id": {
    "title": "Prokect id",
    "type": "string",
    "description": "Project id",
    "examples": [
    "some-project-id"
    ]
    },
    "private_key_id": {
    "title": "Private Key Id",
    "type": "string",
    "description": "Private key id",
    "examples": [
    "670b9e3c8c366e83aa569dd57cbfc5c575b72e42"
    ]
    },
    "private_key": {
    "title": "Private Key",
    "type": "string",
    "description": "Private key",
    "examples": [
    "-----BEGIN PRIVATE KEY-----\nblah\nmoreblah=\n-----END PRIVATE KEY-----\n"
    ]
    },
    "client_email": {
    "title": "Client Email",
    "type": "string",
    "description": "Client email",
    "examples": [
    "bigquery@some-project.iam.gserviceaccount.com"
    ]
    },
    "client_id": {
    "title": "Client Id",
    "type": "string",
    "description": "Client id",
    "examples": [
    "someid"
    ]
    },
    "auth_uri": {
    "title": "Auth Uri",
    "type": "string",
    "description": "Auth Uri",
    "examples": [
    "https://accounts.google.com/o/oauth2/auth"
    ]
    },
    "token_uri": {
    "title": "Token Uri",
    "type": "string",
    "description": "Token Uri",
    "examples": [
    "https://oauth2.googleapis.com/token"
    ]
    },
    "auth_provider_x509_cert_url": {
    "title": "Auth Provider x509 Cert Url",
    "type": "string",
    "description": "",
    "examples": [
    "https://www.googleapis.com/oauth2/v1/certs"
    ]
    },
    "client_x509_cert_url": {
    "title": "Client x509 Cert Url",
    "type": "string",
    "description": "",
    "examples": [
    "https://www.googleapis.com/robot/v1/metadata/x509/bigquery%40some-project.iam.gserviceaccount.com"
    ]
    }
    },
    "required": [
    "type",
    "project_id",
    "private_key_id",
    "private_key",
    "client_email",
    "client_id",
    "auth_uri",
    "token_uri",
    "auth_provider_x509_cert_url",
    "client_x509_cert_url"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/bigquery-docs.html b/adaptors/packages/bigquery-docs.html index 5ebf7b2fd6c..c84ca22bd53 100644 --- a/adaptors/packages/bigquery-docs.html +++ b/adaptors/packages/bigquery-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@
    Skip to main content

    bigquery@2.0.4

    load

    load(dirPath, projectId, datasetId, tableId, loadOptions, callback) ⇒ Operation Load files to BigQuery

    Kind: global function
    Access: public

    ParamTypeDescription
    dirPathstringthe path to your local directory
    projectIdstringyour bigquery project id
    datasetIdstringyour bigquery dataset id
    tableIdstringthe name of the table you'd like to load
    loadOptionsobjectoptions to pass to the bigquery.load() API
    callbackfunctionand optional callback

    Example

    load(
    './tmp/files',
    'my-bg-project',
    'test01',
    'product-codes',
    {
    schema: 'FREQ:STRING,DATATYPE:STRING,PRODUCTCODE:STRING,PARTNER:STRING',
    writeDisposition: 'WRITE_APPEND',
    skipLeadingRows: 1,
    schemaUpdateOptions: ['ALLOW_FIELD_ADDITION'],
    createDisposition: 'CREATE_IF_NEEDED',
    }
    )

    - + \ No newline at end of file diff --git a/adaptors/packages/bigquery-readme.html b/adaptors/packages/bigquery-readme.html index 6e2c4e0a9f5..9c56351c631 100644 --- a/adaptors/packages/bigquery-readme.html +++ b/adaptors/packages/bigquery-readme.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@
    Skip to main content

    bigquery Adaptor developer README.md

    Source: https://github.com/OpenFn/adaptors/tree/main/packages/bigquery

    Language BigQuery

    Language Pack for building expressions and operations to make HTTP calls.

    Documentation

    state.json

    The configuration key must be a valid GCP credential as JSON.

    {
    "configuration": {
    "type": "service_account",
    "project_id": "some-project",
    "private_key_id": "670b9e3c8c366e83aa569dd57cbfc5c575b72e42",
    "private_key": "-----BEGIN PRIVATE KEY-----\nblah\nmoreblah=\n-----END PRIVATE KEY-----\n",
    "client_email": "bigquery@some-project.iam.gserviceaccount.com",
    "client_id": "someid",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/bigquery%40some-project.iam.gserviceaccount.com"
    },
    "data": { "a": 1 }
    }

    operations (expression.js)

    load(...)

    Load data to a table in bigquery from a CSV. See full options here.

    load(
    '/home/taylor/Desktop/type-C_r-ALL_ps-201012_freq-M_px-HS_pub-20200731_fmt-csv_ex-20200818.csv',
    'awesome-solutions-project', // project
    'test01', // dataset
    'mytable', // table
    {
    schema:
    'classification:STRING,year:STRING,period:STRING,period_desc:STRING,aggregate_level:STRING,is_leaf_code:STRING,trade_flow_code:STRING,trade_flow:STRING,reporter_code:STRING,reporter:STRING,reporter_iso:STRING,partner_code:STRING,partner:STRING,partner_iso:STRING,commodity_code:STRING,commodity:STRING,qty_unit_code:STRING,qty_unit:STRING,qty:INTEGER,netweight_kg:INTEGER,trade_value:INTEGER,flag:STRING',
    schemaUpdateOptions: ['ALLOW_FIELD_ADDITION'],
    // createDisposition: 'CREATE_IF_NEEDED',
    writeDisposition: 'WRITE_APPEND',
    skipLeadingRows: 1,
    } // loadOptions
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/commcare-changelog.html b/adaptors/packages/commcare-changelog.html index 88414825bdb..b395720b4d5 100644 --- a/adaptors/packages/commcare-changelog.html +++ b/adaptors/packages/commcare-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.5.6

    Patch Changes

    1.5.5

    Patch Changes

    1.5.4

    Patch Changes

    1.5.3

    Patch Changes

    1.5.2

    Patch Changes

    1.5.1

    Patch Changes

    1.5.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/commcare-configuration-schema.html b/adaptors/packages/commcare-configuration-schema.html index e3b56cf6051..7b0d4a8de65 100644 --- a/adaptors/packages/commcare-configuration-schema.html +++ b/adaptors/packages/commcare-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "hostUrl": "https://www.commcarehq.org",
    "applicationName": "some-proof-of-concept",
    "appId": "the-long-uuid-in-the-url-that-designates-a-unique-commcare-project",
    "username": "test@openfn.org",
    "password": "superscretepassword"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "hostUrl": {
    "title": "Host URL",
    "type": "string",
    "description": "The CommCare host url",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://www.commcarehq.org"
    ]
    },
    "applicationName": {
    "title": "Application Name",
    "type": "string",
    "description": "The CommCare application name",
    "minLength": 1,
    "examples": [
    "some-proof-of-concept"
    ]
    },
    "appId": {
    "title": "App ID",
    "type": "string",
    "description": "Your CommCare project UUID",
    "minLength": 1,
    "examples": [
    "the-long-uuid-in-the-url-that-designates-a-unique-commcare-project"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in to CommCare",
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in to CommCare",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "superscretepassword"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "hostUrl",
    "applicationName",
    "appId"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/commcare-docs.html b/adaptors/packages/commcare-docs.html index bd17acee563..1e9de7f128c 100644 --- a/adaptors/packages/commcare-docs.html +++ b/adaptors/packages/commcare-docs.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ Access: public

    ParamTypeDescription
    formDataObjectObject including form data.

    Example

    submit(
    fields(
    field("@", function(state) {
    return {
    "xmlns": "http://openrosa.org/formdesigner/form-id-here"
    };
    }),
    field("question1", dataValue("answer1")),
    field("question2", "Some answer here.")
    )
    )

    submitXls

    submitXls(formData, params) ⇒ Operation Convert form data to xls then submit.

    Kind: global function
    Access: public

    ParamTypeDescription
    formDataObjectObject including form data.
    paramsObjectRequest params including case type and external id.

    Example

    submitXls(
    [
    {name: 'Mamadou', phone: '000000'},
    ],
    {
    case_type: 'student',
    search_field: 'external_id',
    create_new_cases: 'on',
    }
    )

    - + \ No newline at end of file diff --git a/adaptors/packages/commcare-readme.html b/adaptors/packages/commcare-readme.html index 047db94cd3e..ca515f37ad3 100644 --- a/adaptors/packages/commcare-readme.html +++ b/adaptors/packages/commcare-readme.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ https://www.commcarehq.org/a/YOUR_PROJECT/apps/view/YOUR_APP_ID/

  • Note that the username is your full email address.

  • fetchReportData to pull aggregate data from CommCare

    It takes 3 arguments: reportId, params, and postUrl.

    fetchReportData(
    'reportId',
    { limit: 10, offset: 2, state: 'Vermont' },
    'http://www.openfn.org/inbox/secret-uuid'
    );

    simple body target:

    <data xmlns="http://openrosa.org/formdesigner/39A2CA97-2EB8-4A9C-A0D1-6AA666666A66">
    <firstname>Something</firstname>
    <lastname>Else</lastname>
    <age>29</age>
    </data>

    complex body target:

    <?xml version='1.0' ?>
    <data uiVersion="1" version="17" name="New Form" xmlns:jrm="http://dev.commcarehq.org/jr/xforms" xmlns="http://openrosa.org/formdesigner/1DFD8610-91E3-4409-BF8B-02D3B4FF3530">
    <foo>bar</foo>
    <n0:case case_id="ddb8e2b3-7ce0-43e4-ad45-d7a2eebe9169" user_id="user-xxx-eve" date_modified="2013-04-19T16:53:02.799-04" xmlns:n0="http://commcarehq.org/case/transaction/v2">
    <n0:create>
    <n0:case_name>bar</n0:case_name>
    <n0:owner_id>user-xxx-eve</n0:owner_id>
    <n0:case_type>member</n0:case_type>
    </n0:create>
    </n0:case>
    <n1:meta xmlns:n1="http://openrosa.org/jr/xforms">
    <n1:deviceID>A00000245706EE</n1:deviceID>
    <n1:timeStart>2013-04-19T16:52:41.000-04</n1:timeStart>
    <n1:timeEnd>2013-04-19T16:53:02.799-04</n1:timeEnd>
    <n1:username>eve</n1:username>
    <n1:userID>user-xxx-eve</n1:userID>
    <n1:instanceID>b58df19c-efd5-4ecf-9581-65dda8b8787c</n1:instanceID>
    <n2:appVersion xmlns:n2="http://commcarehq.org/xforms">CommCare ODK, version "2.4.1"(10083). App v19. CommCare Version 2.4. Build 10083, built on: March-12-2013</n2:appVersion>
    </n1:meta>
    </data>

    Submitting data to CommCare HQ

    Submit an XLS file

    This function bulk submit a JSON object as xls file to CommCare HQ

    submitXls([{ name: 'Mamadou', phone: '000000' }], {
    case_type: 'student',
    search_field: 'external_id',
    create_new_cases: 'on',
    });

    submit

    Here we're just building the most basic JSON object, that will be converted to an XML object and posted as the element.

    submit(
    fields(
    field('@', function (state) {
    return {
    xmlns:
    'http://openrosa.org/formdesigner/2BCC3E88-2D0D-4C07-8D4A-6B372F3799D9',
    };
    }),
    field('paitent_namentosh', dataValue('first_name')),
    field('question2', 'Some answer here.'),
    field('question3', 'HKS'),
    field('question4', 'item1'),
    field('question5', 69855),
    field('question6', 12)
    )
    );

    An open rosa form submission body should look like this:

    <?xml version="1.0" ?>
    <data name="Patient Registration" uiVersion="1" version="9" xmlns="http://openrosa.org/formdesigner/2BCC3E88-2D0D-4C07-8D4A-6B372F3799D9" xmlns:jrm="http://dev.commcarehq.org/jr/xforms">
    <paitent_namentosh>Taylor</paitent_namentosh>
    <question2>Moruki</question2>
    <question3>Hks</question3>
    <question4>item1</question4>
    <question5>69855</question5>
    <question6>12</question6>
    <n0:meta xmlns:n0="http://openrosa.org/jr/xforms">
    <n0:deviceID>358239055789384</n0:deviceID>
    <n0:timeStart>2015-08-21T16:21:59.807+02</n0:timeStart>
    <n0:timeEnd>2015-08-21T16:22:15.987+02</n0:timeEnd>
    <n0:username>openfn</n0:username>
    <n0:userID>5fe615b3af2834cb5dca59f7466d6174</n0:userID>
    <n0:instanceID>195e79eb-d823-46fe-9e4f-59b8327d5db2</n0:instanceID>
    <n1:appVersion xmlns:n1="http://commcarehq.org/xforms">CommCare ODK, version &quot;2.22.0&quot;(370023). App v9. CommCare Version 2.22. Build 370023, built on: July-22-2015</n1:appVersion>
    </n0:meta>
    </data>

    So the JSON emitted by your expression should look like this:

    {
    "data": {
    "name": "Patient Registration",
    "uiVersion": "1",
    "version": "9",
    "xmlns": "http://openrosa.org/formdesigner/2BCC3E88-2D0D-4C07-8D4A-6B372F3799D9",
    "xmlns:jrm": "http://dev.commcarehq.org/jr/xforms",
    "paitent_namentosh": "Taylor",
    "question2": " Moruki",
    "question3": "Hks",
    "question4": "item1",
    "question5": "69855",
    "question6": "12",
    "n0:meta": {
    "xmlns:n0": "http://openrosa.org/jr/xforms",
    "n0:deviceID": "358239055789384",
    "n0:timeStart": "2015-08-21T16:21:59.807+02",
    "n0:timeEnd": "2015-08-21T16:22:15.987+02",
    "n0:username": "openfn",
    "n0:userID": "5fe615b3af2834cb5dca59f7466d6174",
    "n0:instanceID": "195e79eb-d823-46fe-9e4f-59b8327d5db2",
    "n1:appVersion": {
    "xmlns:n1": "http://commcarehq.org/xforms",
    "$t": "CommCare ODK, version \"2.22.0\"(370023). App v9. CommCare Version 2.22. Build 370023, built on: July-22-2015"
    }
    }
    }
    }

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/common-changelog.html b/adaptors/packages/common-changelog.html index 4a16846afeb..2331fcbad7a 100644 --- a/adaptors/packages/common-changelog.html +++ b/adaptors/packages/common-changelog.html @@ -22,7 +22,7 @@ - + @@ -38,7 +38,7 @@ in the data may have an object as it's value (when there is only one item), and an array of objects when there is more than one. toArray can be used to reconcile this inconsistency.
    - + \ No newline at end of file diff --git a/adaptors/packages/common-configuration-schema.html b/adaptors/packages/common-configuration-schema.html index b904a3c55d9..6370f194081 100644 --- a/adaptors/packages/common-configuration-schema.html +++ b/adaptors/packages/common-configuration-schema.html @@ -22,13 +22,13 @@ - +
    Skip to main content
    - + \ No newline at end of file diff --git a/adaptors/packages/common-docs.html b/adaptors/packages/common-docs.html index 1afd49cda8c..ab041586a38 100644 --- a/adaptors/packages/common-docs.html +++ b/adaptors/packages/common-docs.html @@ -22,7 +22,7 @@ - + @@ -146,7 +146,7 @@ Data can be passed directly or loaded as a JSON path from state. By default, schema is loaded from state.schema and data from state.data.

    Kind: global function

    ParamTypeDescription
    schemastring | objectThe schema, path or URL to validate against
    datastring | objectThe data or path to validate

    Example (Validate `state.data` with `state.schema`)

    validate()

    Example (Validate form data at `state.form` with a schema from a URL)

    validate("https://www.example.com/schema/record", "form")

    Example (Validate the each item in `state.records` with a schema from a URL)

    each("records[*]", validate("https://www.example.com/schema/record"))

    withAgent

    withAgent(params) ⇒ Operation Creates an https agent for axios from the agentOptions key passed in params.

    Kind: global function

    ParamTypeDescription
    paramsobjectdata

    - + \ No newline at end of file diff --git a/adaptors/packages/common-readme.html b/adaptors/packages/common-readme.html index af282d4f9a5..bccb0ccb2ca 100644 --- a/adaptors/packages/common-readme.html +++ b/adaptors/packages/common-readme.html @@ -22,14 +22,14 @@ - +
    Skip to main content
    - + \ No newline at end of file diff --git a/adaptors/packages/dhis2-changelog.html b/adaptors/packages/dhis2-changelog.html index 65714db7765..bc20ff5c46c 100644 --- a/adaptors/packages/dhis2-changelog.html +++ b/adaptors/packages/dhis2-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    3.2.12

    Patch Changes

    3.2.11

    Patch Changes

    3.2.10

    Patch Changes

    3.2.9

    Patch Changes

    3.2.8

    Patch Changes

    3.2.7

    Patch Changes

    3.2.6

    Patch Changes

    3.2.5

    Patch Changes

    3.2.4

    Patch Changes

    3.2.3

    Patch Changes

    3.2.2

    Patch Changes

    3.2.1

    Patch Changes

    3.2.0

    Minor Changes

    3.1.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/dhis2-configuration-schema.html b/adaptors/packages/dhis2-configuration-schema.html index c9c279bd6f4..d0dc02133c7 100644 --- a/adaptors/packages/dhis2-configuration-schema.html +++ b/adaptors/packages/dhis2-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "hostUrl": "https://play.dhis2.org/2.36.6",
    "username": "admin",
    "password": "@some(!)Password",
    "apiVersion": "v2"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "hostUrl": {
    "title": "Host URL",
    "type": "string",
    "description": "The base DHIS2 instance URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://play.dhis2.org/2.36.6"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)Password"
    ]
    },
    "apiVersion": {
    "title": "API Version",
    "anyOf": [
    {
    "type": "string"
    },
    {
    "type": "null"
    }
    ],
    "placeholder": "38",
    "description": "DHIS2 api version",
    "minLength": 1,
    "examples": [
    "v2"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "hostUrl",
    "password",
    "username"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/dhis2-docs.html b/adaptors/packages/dhis2-docs.html index 7d61b89d2c5..7e0a0ee3c24 100644 --- a/adaptors/packages/dhis2-docs.html +++ b/adaptors/packages/dhis2-docs.html @@ -22,7 +22,7 @@ - + @@ -59,7 +59,7 @@ Access: public

    ParamTypeDescription
    resourceTypestringThe type of resource to be updated. E.g. dataElements, organisationUnits, etc.
    pathstringThe id or path to the object to be updated. E.g. FTRrcoaog83 or FTRrcoaog83/{collection-name}/{object-id}
    dataObjectData to update. It requires to send all required fields or the full body. If you want partial updates, use patch operation.
    [options]ObjectOptional options to define URL parameters via params (E.g. filter, dimension and other import parameters), request config (E.g. auth) and the DHIS2 apiVersion.
    [callback]functionOptional callback to handle the response

    Example (a program)

    update('programs', 'qAZJCrNJK8H', {
    name: '14e1aa02c3f0a31618e096f2c6d03bed',
    shortName: '14e1aa02',
    programType: 'WITHOUT_REGISTRATION',
    });

    Example (an event)

    update('events', 'PVqUD2hvU4E', {
    program: 'eBAyeGv0exc',
    orgUnit: 'Ngelehun CHC',
    status: 'COMPLETED',
    storedBy: 'admin',
    dataValues: [],
    });

    Example (a trackedEntityInstance)

    update('trackedEntityInstances', 'IeQfgUtGPq2', {
    created: '2015-08-06T21:12:37.256',
    orgUnit: 'TSyzvBiovKh',
    createdAtClient: '2015-08-06T21:12:37.256',
    trackedEntityInstance: 'IeQfgUtGPq2',
    lastUpdated: '2015-08-06T21:12:37.257',
    trackedEntityType: 'nEenWmSyUEp',
    inactive: false,
    deleted: false,
    featureType: 'NONE',
    programOwners: [
    {
    ownerOrgUnit: 'TSyzvBiovKh',
    program: 'IpHINAT79UW',
    trackedEntityInstance: 'IeQfgUtGPq2',
    },
    ],
    enrollments: [],
    relationships: [],
    attributes: [
    {
    lastUpdated: '2016-01-12T00:00:00.000',
    displayName: 'Last name',
    created: '2016-01-12T00:00:00.000',
    valueType: 'TEXT',
    attribute: 'zDhUuAYrxNC',
    value: 'Russell',
    },
    {
    lastUpdated: '2016-01-12T00:00:00.000',
    code: 'MMD_PER_NAM',
    displayName: 'First name',
    created: '2016-01-12T00:00:00.000',
    valueType: 'TEXT',
    attribute: 'w75KJ2mc4zz',
    value: 'Catherine',
    },
    ],
    });

    Example (a dataSet)

    update('dataSets', 'lyLU2wR22tC', { name: 'OpenFN Data Set', periodType: 'Weekly' });

    Example (a dataSetNotification)

    update('dataSetNotificationTemplates', 'VbQBwdm1wVP', {
    dataSetNotificationTrigger: 'DATA_SET_COMPLETION',
    notificationRecipient: 'ORGANISATION_UNIT_CONTACT',
    name: 'Notification',
    messageTemplate: 'Hello Updated,
    deliveryChannels: ['SMS'],
    dataSets: [],
    });

    Example (a dataElement)

    update('dataElements', 'FTRrcoaog83', {
    aggregationType: 'SUM',
    domainType: 'AGGREGATE',
    valueType: 'NUMBER',
    name: 'Paracetamol',
    shortName: 'Para',
    });

    Example (a dataElementGroup)

    update('dataElementGroups', 'QrprHT61XFk', {
    name: 'Data Element Group 1',
    dataElements: [],
    });

    Example (a dataElementGroupSet)

    update('dataElementGroupSets', 'VxWloRvAze8', {
    name: 'Data Element Group Set 4',
    dataDimension: true,
    shortName: 'DEGS4',
    dataElementGroups: [],
    });

    Example (a dataValueSet)

    update('dataValueSets', 'AsQj6cDsUq4', {
    dataElement: 'f7n9E0hX8qk',
    period: '201401',
    orgUnit: 'DiszpKrYNg8',
    value: '12',
    });

    Example (a dataValueSet with related dataValues)

    update('dataValueSets', 'Ix2HsbDMLea', {
    dataSet: 'pBOMPrpg1QX',
    completeDate: '2014-02-03',
    period: '201401',
    orgUnit: 'DiszpKrYNg8',
    dataValues: [
    {
    dataElement: 'f7n9E0hX8qk',
    value: '1',
    },
    {
    dataElement: 'Ix2HsbDMLea',
    value: '2',
    },
    {
    dataElement: 'eY5ehpbEsB7',
    value: '3',
    },
    ],
    });

    Example (a single enrollment)

    update('enrollments', 'CmsHzercTBa' {
    trackedEntityInstance: 'bmshzEacgxa',
    orgUnit: 'TSyzvBiovKh',
    program: 'gZBxv9Ujxg0',
    enrollmentDate: '2013-10-17',
    incidentDate: '2013-10-17',
    });

    upsert

    upsert(resourceType, query, data, [options], [callback]) ⇒ Operation Upsert a record. A generic helper function used to atomically either insert a row, or on the basis of the row already existing, UPDATE that existing row instead.

    Kind: global function
    Throws:

    Access: public

    ParamTypeDescription
    resourceTypestringThe type of a resource to upsert. E.g. trackedEntityInstances
    queryObjectA query object that allows to uniquely identify the resource to update. If no matches found, then the resource will be created.
    dataObjectThe data to use for update or create depending on the result of the query.
    [options]ObjectOptional configuration that will be applied to both the get and the create or update operations.
    [callback]functionOptional callback to handle the response

    Example (Example `expression.js` of upsert)

    upsert('trackedEntityInstances', {
    ou: 'TSyzvBiovKh',
    filter: ['w75KJ2mc4zz:Eq:Qassim'],
    }, {
    orgUnit: 'TSyzvBiovKh',
    trackedEntityType: 'nEenWmSyUEp',
    attributes: [
    {
    attribute: 'w75KJ2mc4zz',
    value: 'Qassim',
    },
    ],
    });

    - + \ No newline at end of file diff --git a/adaptors/packages/dhis2-readme.html b/adaptors/packages/dhis2-readme.html index 2c970bea997..a735f52c49a 100644 --- a/adaptors/packages/dhis2-readme.html +++ b/adaptors/packages/dhis2-readme.html @@ -22,7 +22,7 @@ - + @@ -65,7 +65,7 @@ required. Otherwise the create integration tests would be broken again; and that's an endless faillure loop :(

    Anytime a new example is added in the documentation of a helper function, a new integration test should be built.

    - + \ No newline at end of file diff --git a/adaptors/packages/dynamics-changelog.html b/adaptors/packages/dynamics-changelog.html index d1cc8558792..42168605c03 100644 --- a/adaptors/packages/dynamics-changelog.html +++ b/adaptors/packages/dynamics-changelog.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.5

    Patch Changes

    0.3.4

    Patch Changes

    0.3.3

    Patch Changes

    0.3.2

    Patch Changes

    0.3.1

    Patch Changes

    0.3.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/dynamics-configuration-schema.html b/adaptors/packages/dynamics-configuration-schema.html index 96adcdcccbf..4332c4cb7cb 100644 --- a/adaptors/packages/dynamics-configuration-schema.html +++ b/adaptors/packages/dynamics-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "resource": "https://openfn.crm2.dynamics.com",
    "apiVersion": "8.2.0",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRlQyU3ZRdVhoODQ2WVR3RUlCdyIsI"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$comment": "OAuth2",
    "properties": {
    "resource": {
    "title": "Resource",
    "type": "string",
    "description": "Dynamics resource URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://openfn.crm2.dynamics.com"
    ]
    },
    "apiVersion": {
    "title": "API Version",
    "type": "string",
    "default": "8.2.0",
    "description": "Dynamics API version to use",
    "minLength": 1,
    "examples": [
    "8.2.0"
    ]
    },
    "access_token": {
    "title": "Access Token",
    "type": "string",
    "description": "Dynamics API access token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRlQyU3ZRdVhoODQ2WVR3RUlCdyIsI"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "resource",
    "apiVersion",
    "access_token"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/dynamics-docs.html b/adaptors/packages/dynamics-docs.html index edbe441343a..4681761264f 100644 --- a/adaptors/packages/dynamics-docs.html +++ b/adaptors/packages/dynamics-docs.html @@ -22,13 +22,13 @@ - +
    Skip to main content
    - + \ No newline at end of file diff --git a/adaptors/packages/dynamics-readme.html b/adaptors/packages/dynamics-readme.html index da2f8e8be46..36a61a2a205 100644 --- a/adaptors/packages/dynamics-readme.html +++ b/adaptors/packages/dynamics-readme.html @@ -22,7 +22,7 @@ - + @@ -38,7 +38,7 @@ in the expression. Otherwise it will perform a query on all data with the defined Entity Name

    query({
    entityName: 'contacts',
    entityId: '51a0e5b9-88df-e311-b8e5-6c3be5a8b200',
    query: {
    fields: ['fullname', 'birthdate'],
    limit: 10,
    orderBy: {
    field: 'lastname',
    direction: 'asc',
    },
    filter: "firstname eq 'Cat'",
    },
    });

    sample update expression

    updateEntity({
    entityName: 'accounts',
    entityId: 'f4301865-c64a-e711-80f3-e0071b6fd061',
    body: {
    name: 'wilder 2',
    creditonhold: true,
    address1_latitude: 47.639583,
    description: 'This is the description of the sample account',
    revenue: 5000000,
    accountcategorycode: 1,
    },
    });

    sample delete expression

    deleteEntity({
    entityName: 'accounts',
    entityId: 'aeef941b-254a-e711-80f1-e0071b685921',
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/facebook-changelog.html b/adaptors/packages/facebook-changelog.html index a46da5f8800..77faaf8cc06 100644 --- a/adaptors/packages/facebook-changelog.html +++ b/adaptors/packages/facebook-changelog.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.2.3

    Patch Changes

    0.2.2

    Patch Changes

    0.2.1

    Patch Changes

    0.2.0

    Minor Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/facebook-configuration-schema.html b/adaptors/packages/facebook-configuration-schema.html index d2da38f7ffe..eabf81d7c37 100644 --- a/adaptors/packages/facebook-configuration-schema.html +++ b/adaptors/packages/facebook-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "access_token": false
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$comment": "OAuth2",
    "properties": {
    "access_token": {
    "title": "Access Token",
    "type": "string",
    "description": "Your Facebook API access token",
    "writeOnly": true,
    "minLength": 1
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "access_token"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/facebook-docs.html b/adaptors/packages/facebook-docs.html index 922fd0cbc6b..4c1eb697a41 100644 --- a/adaptors/packages/facebook-docs.html +++ b/adaptors/packages/facebook-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@
    Skip to main content
    - + \ No newline at end of file diff --git a/adaptors/packages/facebook-readme.html b/adaptors/packages/facebook-readme.html index 7f00c9da16b..7eb8fe65d27 100644 --- a/adaptors/packages/facebook-readme.html +++ b/adaptors/packages/facebook-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    postMessage

    sample expression using operation

    postMessage({
    recipient: {
    id: '<PSID>',
    },
    message: {
    text: '<YOUR MESSAGE GOES HERE>',
    },
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/fhir-changelog.html b/adaptors/packages/fhir-changelog.html index 12358d21b1e..fb55d31355e 100644 --- a/adaptors/packages/fhir-changelog.html +++ b/adaptors/packages/fhir-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    2.0.0

    Major Changes

    1.1.5

    Patch Changes

    1.1.4

    Patch Changes

    1.1.3

    Patch Changes

    1.1.2

    Patch Changes

    1.1.1

    Patch Changes

    1.1.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/fhir-configuration-schema.html b/adaptors/packages/fhir-configuration-schema.html index 83561f3acd9..3345e1ce997 100644 --- a/adaptors/packages/fhir-configuration-schema.html +++ b/adaptors/packages/fhir-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "baseUrl": "https://hapi.fhir.org/baseR4",
    "apiPath": "baseR4",
    "authType": "Basic",
    "token": "@super!scretetoken"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
    "baseUrl": {
    "title": "Base Url",
    "type": "string",
    "description": "The baseUrl",
    "examples": [
    "https://hapi.fhir.org/baseR4"
    ]
    },
    "apiPath": {
    "title": "API Path",
    "anyOf": [
    {
    "type": "string"
    },
    {
    "type": "null"
    }
    ],
    "placeholder": "R4",
    "description": "FHIR api path",
    "minLength": 1,
    "examples": [
    "baseR4",
    "R3",
    "R4"
    ]
    },
    "authType": {
    "title": "Auth Type",
    "type": "string",
    "description": "The type of authentication used to authenticate into the destination system",
    "examples": [
    "Basic"
    ]
    },
    "token": {
    "title": "Token",
    "type": "string",
    "description": "The token used to authenticate into the destination system",
    "examples": [
    "@super!scretetoken"
    ]
    }
    },
    "required": [
    "resource",
    "authType",
    "token"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/fhir-docs.html b/adaptors/packages/fhir-docs.html index 69c3b7d9d37..c6fdef31aa6 100644 --- a/adaptors/packages/fhir-docs.html +++ b/adaptors/packages/fhir-docs.html @@ -22,7 +22,7 @@ - + @@ -41,7 +41,7 @@ Returns: The request function is returning the parsed JSON data from the response of the HTTP request made to the specified url with the given params and method. If there is an error in the response, the function will throw an error.

    ParamTypeDefaultDescription
    urlstringThe URL of the API endpoint that the request is being made to.
    [params]objectAn object containing any additional parameters to be sent with the request, such as query parameters or request body data. It is an optional parameter and defaults to an empty object if not provided.
    [method]string"GET"The HTTP method to be used for the request. It defaults to 'GET' if not specified.

    - + \ No newline at end of file diff --git a/adaptors/packages/fhir-readme.html b/adaptors/packages/fhir-readme.html index 300e92ec10d..7d623b884ce 100644 --- a/adaptors/packages/fhir-readme.html +++ b/adaptors/packages/fhir-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Creates a resource in a destination system using a POST request

    create('/endpoint', { foo: 'bar' });

    Creates a transactionBundle for HAPI FHIR

    createTransactionBundle({
    entry: [transactionBundle],
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/godata-changelog.html b/adaptors/packages/godata-changelog.html index 8978dfa922f..2b6305a29ef 100644 --- a/adaptors/packages/godata-changelog.html +++ b/adaptors/packages/godata-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    3.2.4

    Patch Changes

    3.2.3

    Patch Changes

    3.2.2

    Patch Changes

    3.2.1

    Patch Changes

    3.2.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/godata-configuration-schema.html b/adaptors/packages/godata-configuration-schema.html index d7ec039b83e..913a8f2ec1c 100644 --- a/adaptors/packages/godata-configuration-schema.html +++ b/adaptors/packages/godata-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "apiUrl": "https://www.who-godata.com/api",
    "email": "test@openfn.org",
    "password": "@some(!)Strongpassword"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "apiUrl": {
    "title": "API URL",
    "type": "string",
    "description": "Godata API URL",
    "default": "https://www.who-godata.com/api",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://www.who-godata.com/api"
    ]
    },
    "email": {
    "title": "Email",
    "type": "string",
    "description": "Your Godata login email",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Your Godata login password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)Strongpassword"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "apiUrl",
    "email",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/godata-docs.html b/adaptors/packages/godata-docs.html index ac0fc22abe9..2808ec9adc8 100644 --- a/adaptors/packages/godata-docs.html +++ b/adaptors/packages/godata-docs.html @@ -22,7 +22,7 @@ - + @@ -58,7 +58,7 @@ Access: public

    ParamTypeDescription
    outbreakobjectan object with an externalId and some outbreak data.
    callbackfunction(Optional) Callback function

    Example

    upsertOutbreak({externalId: "3dec33-ede3", data: {...}})

    upsertReferenceData

    upsertReferenceData(externalId, goDataReferenceData, callback) ⇒ Operation Upsert reference data to godata

    Kind: global function
    Access: public

    ParamTypeDescription
    externalIdstringExternal Id to match
    goDataReferenceDataobjectan object with some reference data.
    callbackfunction(Optional) Callback function

    Example

    upsertReferenceData('id', {...})

    - + \ No newline at end of file diff --git a/adaptors/packages/godata-readme.html b/adaptors/packages/godata-readme.html index e04b363c8c9..ade36378583 100644 --- a/adaptors/packages/godata-readme.html +++ b/adaptors/packages/godata-readme.html @@ -22,7 +22,7 @@ - + @@ -54,7 +54,7 @@ mechanism can specify a criteria to match.

    getReferenceData(
    { where: { categoryId: 'LNG_REFERENCE_DATA_CATEGORY_CENTRE_NAME' } },
    state => {
    console.log(state.data);
    return state;
    }
    );

    Insert or Update a reference data using a unique id as a key

    This function is used to either update a location if matched or insert a new. A custom externalId can be provided.

    upsertReferenceData('id', {
    categoryId: 'CATEGORY',
    value: 'VALUE',
    readOnly: false,
    active: true,
    id: 'ID',
    createdAt: '2020-10-01T18:48:31.784Z',
    createdBy: '95d31ea9',
    updatedAt: '2020-10-01T18:48:31.784Z',
    updatedBy: '95d31ea9',
    createdOn: 'API',
    deleted: false,
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/googlehealthcare-changelog.html b/adaptors/packages/googlehealthcare-changelog.html index 583c490d635..9d494a1ac92 100644 --- a/adaptors/packages/googlehealthcare-changelog.html +++ b/adaptors/packages/googlehealthcare-changelog.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ information ({cloudRegion: string, projectId: string, datasetId: string, fhirStoreId: string}).

    0.1.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/googlehealthcare-configuration-schema.html b/adaptors/packages/googlehealthcare-configuration-schema.html index aa44453046b..5a26a66bec7 100644 --- a/adaptors/packages/googlehealthcare-configuration-schema.html +++ b/adaptors/packages/googlehealthcare-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRlQyU3ZRdVhoODQ2WVR3RUlCdyIsI",
    "apiVersion": "v1"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$comment": "OAuth2",
    "type": "object",
    "properties": {
    "access_token": {
    "title": "Access Token",
    "type": "string",
    "description": "Your Google Cloud Healthcare access token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRlQyU3ZRdVhoODQ2WVR3RUlCdyIsI"
    ]
    },
    "apiVersion": {
    "title": "API Version",
    "type": "string",
    "description": "The API version",
    "default": "v1",
    "examples": [
    "v1",
    "v1beta1"
    ]
    }
    },
    "required": [
    "access_token"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/googlehealthcare-docs.html b/adaptors/packages/googlehealthcare-docs.html index cc953ac785d..b55a4995bfb 100644 --- a/adaptors/packages/googlehealthcare-docs.html +++ b/adaptors/packages/googlehealthcare-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@
    Skip to main content

    googlehealthcare@1.0.0

    createFhirResource

    createFhirResource([fhirStore], resource, callback) ⇒ Operation Create some resource in Google Cloud Healthcare

    Kind: global function
    Access: public

    ParamTypeDescription
    [fhirStore]ObjectThe FHIR store information. - cloudRegion (string): The cloud region where the FHIR store is located. - projectId (string): The ID of the project that contains the FHIR store. - datasetId (string): The ID of the dataset that contains the FHIR store. - fhirStoreId (string): The ID of the FHIR store.
    resourceobjectThe FHIR resource data to be created
    callbackfunctionAn optional callback function

    Example

    createFhirResource(
    {
    cloudRegion: "us-central1",
    projectId: "adjective-noun-123",
    datasetId: "my-dataset",
    fhirStoreId: "my-fhir-store",
    },
    {
    resourceType: "Patient",
    name: [{ use: "official", family: "Smith", given: ["Darcy"] }],
    gender: "female",
    birthDate: "1970-01-01",
    }
    );

    Example

    createFhirResource(
    {
    cloudRegion: "us-central1",
    projectId: "adjective-noun-123",
    datasetId: "my-dataset",
    fhirStoreId: "my-fhir-store",
    },
    (state) => ({
    resourceType: "Encounter",
    status: "finished",
    class: {
    system: "http://hl7.org/fhir/v3/ActCode",
    code: "IMP",
    display: "inpatient encounter",
    },
    reasonCode: [
    {
    text: "The patient had an abnormal heart rate. She was concerned about this.",
    },
    ],
    subject: {
    reference: `Patient/${state.data.id}`,
    },
    })
    );

    - + \ No newline at end of file diff --git a/adaptors/packages/googlehealthcare-readme.html b/adaptors/packages/googlehealthcare-readme.html index 7077bd4af6f..3c704b44737 100644 --- a/adaptors/packages/googlehealthcare-readme.html +++ b/adaptors/packages/googlehealthcare-readme.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ configuration-schema for required and optional configuration properties.

    Development

    Clone the adaptors monorepo. Follow the "Getting Started" guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To build only the docs run pnpm build docs.

    - + \ No newline at end of file diff --git a/adaptors/packages/googlesheets-changelog.html b/adaptors/packages/googlesheets-changelog.html index 9bd38a9ea38..f65e2ea0f52 100644 --- a/adaptors/packages/googlesheets-changelog.html +++ b/adaptors/packages/googlesheets-changelog.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    2.1.6

    Patch Changes

    2.1.5

    Patch Changes

    2.1.4

    Patch Changes

    2.1.3

    Patch Changes

    2.1.2

    Patch Changes

    2.1.1

    Patch Changes

    2.1.0

    Minor Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/googlesheets-configuration-schema.html b/adaptors/packages/googlesheets-configuration-schema.html index 5955540153d..71d20646b18 100644 --- a/adaptors/packages/googlesheets-configuration-schema.html +++ b/adaptors/packages/googlesheets-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRlQyU3ZRdVhoODQ2WVR3RUlCdyIsI"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$comment": "OAuth2",
    "properties": {
    "access_token": {
    "title": "Access Token",
    "type": "string",
    "description": "Your Google Sheets access token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRlQyU3ZRdVhoODQ2WVR3RUlCdyIsI"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "access_token"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/googlesheets-docs.html b/adaptors/packages/googlesheets-docs.html index aa287c2de87..0773fca5b1c 100644 --- a/adaptors/packages/googlesheets-docs.html +++ b/adaptors/packages/googlesheets-docs.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ Add an array of rows to the spreadsheet. https://developers.google.com/sheets/api/samples/writing#append_values

    Kind: global function
    Access: public

    ParamTypeDescription
    paramsObjectData object to add to the spreadsheet.

    Example

    appendValues({
    spreadsheetId: '1O-a4_RgPF_p8W3I6b5M9wobA3-CBW8hLClZfUik5sos',
    range: 'Sheet1!A1:E1',
    values: [
    ['From expression', '$15', '2', '3/15/2016'],
    ['Really now!', '$100', '1', '3/20/2016'],
    ],
    })

    - + \ No newline at end of file diff --git a/adaptors/packages/googlesheets-readme.html b/adaptors/packages/googlesheets-readme.html index ea90758b881..35b33220f96 100644 --- a/adaptors/packages/googlesheets-readme.html +++ b/adaptors/packages/googlesheets-readme.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ definition.

    appendValues()

    Add rows to an existing sheet: https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/values/Sheet1!A1:E1:append?valueInputOption=USER_ENTERED

    appendValues({
    spreadsheetId: '1O-a4_RgPF_p8W3I6b5M9wobA3-CBW8hLClZfUik5sos',
    range: 'Sheet1!A1:E1',
    values: [
    ['From expression', '$15', '2', '3/15/2016'],
    ['Really now!', '$100', '1', '3/20/2016'],
    ],
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/hive-changelog.html b/adaptors/packages/hive-changelog.html index 87ff4d7e916..be7625106e9 100644 --- a/adaptors/packages/hive-changelog.html +++ b/adaptors/packages/hive-changelog.html @@ -22,13 +22,13 @@ - +
    Skip to main content
    - + \ No newline at end of file diff --git a/adaptors/packages/hive-configuration-schema.html b/adaptors/packages/hive-configuration-schema.html index 1e049178b60..1e6e7b16001 100644 --- a/adaptors/packages/hive-configuration-schema.html +++ b/adaptors/packages/hive-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "host": "some-host-url.compute-1.amazonaws.com",
    "port": "10001",
    "database": "demo-db",
    "username": "admin-demo",
    "password": "@super(!)Secretpass"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "host": {
    "title": "Host URL",
    "type": "string",
    "description": "The database instance host URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "some-host-url.compute-1.amazonaws.com"
    ]
    },
    "port": {
    "title": "Port",
    "type": "integer",
    "default": 10001,
    "description": "Database instance port",
    "minLength": 1,
    "examples": [
    10001
    ]
    },
    "database": {
    "title": "Database",
    "type": "string",
    "description": "The database name",
    "minLength": 1,
    "examples": [
    "demo-db"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in the database",
    "minLength": 1,
    "examples": [
    "admin-demo"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in the database",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secretpass"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "host",
    "port",
    "username",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/hive-docs.html b/adaptors/packages/hive-docs.html index b1beca6948b..bcddf7b2f82 100644 --- a/adaptors/packages/hive-docs.html +++ b/adaptors/packages/hive-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@
    Skip to main content

    hive@0.2.0

    query

    query(qs, options, callback) ⇒ Operation Execute an SQL statement

    Kind: global function
    Access: public

    ParamTypeDescription
    qsstringSQL statement
    optionsobject(Optional) options for executing sql statement
    callbackfunctionAn optional callback function

    Example (Get patient count from hive database)

    query("select count(*) from patient");

    - + \ No newline at end of file diff --git a/adaptors/packages/hive-readme.html b/adaptors/packages/hive-readme.html index f95c3e8a01a..b5894286f2a 100644 --- a/adaptors/packages/hive-readme.html +++ b/adaptors/packages/hive-readme.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ configuration-schema for required and optional configuration properties.

    A example expression using the query function

    query('select count(*) from patient');

    Development

    Clone the adaptors monorepo. Follow the "Getting Started" guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To build only the docs run pnpm build docs.

    - + \ No newline at end of file diff --git a/adaptors/packages/http-changelog.html b/adaptors/packages/http-changelog.html index a9acd559f22..507be500fbf 100644 --- a/adaptors/packages/http-changelog.html +++ b/adaptors/packages/http-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    4.2.8

    Patch Changes

    4.2.7

    Patch Changes

    4.2.6

    Patch Changes

    4.2.5

    Patch Changes

    4.2.4

    Patch Changes

    4.2.3

    Patch Changes

    4.2.2

    Patch Changes

    4.2.1

    Patch Changes

    4.2.0

    Minor Changes

    4.1.0

    Minor Changes

    4.0.1

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/http-configuration-schema.html b/adaptors/packages/http-configuration-schema.html index 21fb1bd4614..3356e812627 100644 --- a/adaptors/packages/http-configuration-schema.html +++ b/adaptors/packages/http-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "username": "test@openfn.org",
    "password": "@some(!)Password",
    "baseUrl": "https://instance_name.surveycto.com"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Username",
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "examples": [
    "@some(!)Password"
    ]
    },
    "baseUrl": {
    "title": "Base URL",
    "anyOf": [
    {
    "type": "string"
    },
    {
    "type": "null"
    }
    ],
    "description": "The base URL (http://www.example.com)",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://instance_name.surveycto.com"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "password",
    "username"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/http-docs.html b/adaptors/packages/http-docs.html index a8a2f45dd20..612a3ade383 100644 --- a/adaptors/packages/http-docs.html +++ b/adaptors/packages/http-docs.html @@ -22,7 +22,7 @@ - + @@ -41,7 +41,7 @@ Make a PUT request

    Kind: global function
    Access: public

    ParamTypeDescription
    pathstringPath to resource
    paramsobjectBody, Query, Headers and Auth parameters
    callbackfunction(Optional) Callback function

    Example

    put('/myEndpoint', {
    body: {'foo': 'bar'},
    headers: {'content-type': 'application/json'},
    authentication: {username: 'user', password: 'pass'}
    })

    request

    request(params) ⇒ Operation Make a request using the 'request' node module. This module is deprecated.

    Kind: global function

    ParamTypeDescription
    paramsobjectQuery, Headers and Authentication parameters

    Example

    request(params);

    - + \ No newline at end of file diff --git a/adaptors/packages/http-readme.html b/adaptors/packages/http-readme.html index e1a4ec166a5..8873850856f 100644 --- a/adaptors/packages/http-readme.html +++ b/adaptors/packages/http-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ definition.

    Get data

    This helper function allows the use of a get method to fetch data. You can specify a query string for filter.

    get(
    '/myendpoint',
    {
    query: { foo: 'bar', a: 1 },
    headers: { 'content-type': 'application/json' },
    authentication: { username: 'taylor', password: 'somethingsecret' },
    },
    state => {
    return state;
    }
    );

    Post existing data

    Send some data to an existing endpoint.

    post('/endpoint', {
    body: state => {
    return {
    field_1: 'some_data',
    field_2: 'some_more_data',
    field_id: dataValue('Some.Json.Object.Id')(state),
    };
    },
    headers: {
    Authorization: 'AUTH_KEY',
    'Content-Type': 'application/json',
    },
    });

    Update existing data with PUT or PATCH

    put(
    '/myendpoint',
    {
    body: { firstname: 'taylor', lastname: 'downs' },
    headers: { 'content-type': 'application/json' },
    authentication: { username: 'user', password: 'pass' },
    },
    state => {
    return state;
    }
    );
    patch(
    '/myendpoint',
    {
    body: { firstname: 'taylor', lastname: 'downs' },
    headers: { 'content-type': 'application/json' },
    authentication: { username: 'user', password: 'pass' },
    },
    state => {
    return state;
    }
    );

    Delete data

    del(
    '/myendpoint',
    {
    query: { id: 'someId' },
    headers: { 'content-type': 'application/json' },
    authentication: { username: 'user', password: 'pass' },
    },
    state => {
    return state;
    }
    );

    Parse XML

    This function allows you to parse some xml data. A callback function can be use to store in a table.

    parseXML(body, function ($) {
    return $('table[class=your_table]').parsetable(true, true, true);
    });

    Parse CSV

    parseCSV('someData.csv', {
    quoteChar: '"',
    header: false,
    });

    Sample parse local CSV file

    parseCSV('PatientsJan2009.csv', {
    quoteChar: '"',
    header: false,
    columns: true,
    skip_empty_lines: true,
    trim: true,
    bom: true,
    });

    Development

    Clone the repo, run pnpm install.

    Run tests using pnpm run test or pnpm run test:watch.

    To build the docs for this repo, run pnpm build:docs.

    - + \ No newline at end of file diff --git a/adaptors/packages/khanacademy-changelog.html b/adaptors/packages/khanacademy-changelog.html index 0883acae0fb..d0c37ac51d6 100644 --- a/adaptors/packages/khanacademy-changelog.html +++ b/adaptors/packages/khanacademy-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.4

    Patch Changes

    0.3.3

    Patch Changes

    0.3.2

    Patch Changes

    0.3.1

    Patch Changes

    0.3.0

    Minor Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/khanacademy-configuration-schema.html b/adaptors/packages/khanacademy-configuration-schema.html index 35556733f4e..37703c7cae5 100644 --- a/adaptors/packages/khanacademy-configuration-schema.html +++ b/adaptors/packages/khanacademy-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "email": "test@openfn.org",
    "password": "@some(!)Strongpassword",
    "consumerKey": "somEThINGkeyish",
    "secretKey": "otherThiNGfSECret"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "email": {
    "title": "Email",
    "type": "string",
    "description": "Your Khanacademy login email",
    "format": "email",
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Your Khanacademy login password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)Strongpassword"
    ]
    },
    "consumerKey": {
    "title": "Consumer Key",
    "type": "string",
    "description": "Your Khanacademy consumer key",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "somEThINGkeyish"
    ]
    },
    "secretKey": {
    "title": "Secret Key",
    "type": "string",
    "description": "Your Khanacademy secret key",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "otherThiNGfSECret"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "email",
    "password",
    "secretKey",
    "consumerKey"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/khanacademy-docs.html b/adaptors/packages/khanacademy-docs.html index 597e9b2a99c..51eeb5ee82c 100644 --- a/adaptors/packages/khanacademy-docs.html +++ b/adaptors/packages/khanacademy-docs.html @@ -22,14 +22,14 @@ - +
    Skip to main content
    - + \ No newline at end of file diff --git a/adaptors/packages/khanacademy-readme.html b/adaptors/packages/khanacademy-readme.html index 104745725d2..126134aaeb0 100644 --- a/adaptors/packages/khanacademy-readme.html +++ b/adaptors/packages/khanacademy-readme.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ configuration-schema definition.

    fetch

    sample usage

    fetch({
    getEndpoint: 'user',
    queryParams: {
    email: 'thisoneuser@something.org',
    },
    postUrl: 'https://www.openfn.org/inbox/your-uuid',
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/kobotoolbox-changelog.html b/adaptors/packages/kobotoolbox-changelog.html index aa5ee8f40e6..19bc7f80b40 100644 --- a/adaptors/packages/kobotoolbox-changelog.html +++ b/adaptors/packages/kobotoolbox-changelog.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.3.3

    Patch Changes

    1.3.2

    Patch Changes

    1.3.1

    Patch Changes

    1.3.0

    Minor Changes

    Patch Changes

    1.2.0

    Minor Changes

    Patch Changes

    1.1.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/kobotoolbox-configuration-schema.html b/adaptors/packages/kobotoolbox-configuration-schema.html index fb35a21431b..cd4e64a9ea0 100644 --- a/adaptors/packages/kobotoolbox-configuration-schema.html +++ b/adaptors/packages/kobotoolbox-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "baseURL": "https://kf.kobotoolbox.org",
    "username": "test@openfn.org",
    "password": "@some(!)Strongpassword",
    "apiVersion": "v2"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "baseURL": {
    "title": "Base URL",
    "type": "string",
    "default": "https://kf.kobotoolbox.org",
    "description": "Kobotoolbox URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://kf.kobotoolbox.org"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Kobotoolbox username",
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Kobotoolbox password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)Strongpassword"
    ]
    },
    "apiVersion": {
    "title": "API Version",
    "type": "string",
    "placeholder": "v2",
    "description": "Kobotoolbox API version to use",
    "minLength": 1,
    "examples": [
    "v2"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "username",
    "baseURL",
    "password",
    "apiVersion"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/kobotoolbox-docs.html b/adaptors/packages/kobotoolbox-docs.html index d035b6b1dbd..e3d70ae46ca 100644 --- a/adaptors/packages/kobotoolbox-docs.html +++ b/adaptors/packages/kobotoolbox-docs.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ Make a request to get the list of forms

    Kind: global function
    Access: public

    ParamTypeDescription
    paramsobjectQuery, Headers and Authentication parameters
    callbackfunction(Optional) Callback function to execute after fetching form list

    Example

    getForms({}, state => {
    console.log(state.data);
    return state;
    });

    getSubmissions

    getSubmissions(params, callback) ⇒ Operation Get submissions for a specific form

    Kind: global function

    ParamTypeDescription
    paramsobjectForm Id and data to make the fetch or filter
    callbackfunction(Optional) Callback function to execute after fetching form submissions

    Example

    getSubmissions({formId: 'aXecHjmbATuF6iGFmvBLBX'}, state => {
    console.log(state.data);
    return state;
    });

    - + \ No newline at end of file diff --git a/adaptors/packages/kobotoolbox-readme.html b/adaptors/packages/kobotoolbox-readme.html index 28f49d45a9f..31cfec7aa0f 100644 --- a/adaptors/packages/kobotoolbox-readme.html +++ b/adaptors/packages/kobotoolbox-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Get the list of forms

    getForms({}, state => {
    console.log(state.data);
    return state;
    });

    Get submissions for a specific form

    A query can be used to filter results.

    getSubmissions(
    { formId: 'aXecHjmbATuF6iGFmvBLBX', query: { end: { $gte: '2020-11-20' } } },
    state => {
    console.log(state.data);
    return state;
    }
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/magpi-changelog.html b/adaptors/packages/magpi-changelog.html index e699d38ecca..8187d2f8cb7 100644 --- a/adaptors/packages/magpi-changelog.html +++ b/adaptors/packages/magpi-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.0.5

    Patch Changes

    1.0.4

    Patch Changes

    1.0.3

    Patch Changes

    1.0.2

    Patch Changes

    1.0.1

    Patch Changes

    1.0.0

    Major Changes

    Minor Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/magpi-configuration-schema.html b/adaptors/packages/magpi-configuration-schema.html index 4b44a865f3b..64eb73b8f63 100644 --- a/adaptors/packages/magpi-configuration-schema.html +++ b/adaptors/packages/magpi-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "username": "test@openfn.org",
    "accessToken": "somEThINGkeyish"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "username": {
    "title": "username",
    "type": "string",
    "description": "Magpi username",
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "accessToken": {
    "title": "Access Token",
    "type": "string",
    "description": "Magpi access token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "somEThINGkeyish"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "username",
    "accessToken"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/magpi-docs.html b/adaptors/packages/magpi-docs.html index 892d40d962a..15afb9c51ff 100644 --- a/adaptors/packages/magpi-docs.html +++ b/adaptors/packages/magpi-docs.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ Access: public

    ParamTypeDescription
    paramsobjectdata to make the fetch

    Example

    fetchSurveyData({
    "surveyId": "37479",
    "afterDate": "2017-09-27",
    "postUrl": "https://www.openfn.org/inbox/your-inbox-url"
    })

    submitRecord

    submitRecord(jsonData) ⇒ Operation Submit a record for a form/survey which already exists in a Magpi user account

    Kind: global function
    Access: public

    ParamTypeDescription
    jsonDataobjectPayload data for the record

    Example

    submitRecord(jsonData)

    - + \ No newline at end of file diff --git a/adaptors/packages/magpi-readme.html b/adaptors/packages/magpi-readme.html index 22b79d6d7c9..0ef29e77ce5 100644 --- a/adaptors/packages/magpi-readme.html +++ b/adaptors/packages/magpi-readme.html @@ -22,7 +22,7 @@ - + @@ -42,7 +42,7 @@ one on the data tab
  • enddate: End date of the data to be returned. Filtering is done based on the DateStamp and is inclusive.(Optional)
  • Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/mailchimp-changelog.html b/adaptors/packages/mailchimp-changelog.html index 94c9bf8d274..2d28a8785fa 100644 --- a/adaptors/packages/mailchimp-changelog.html +++ b/adaptors/packages/mailchimp-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.5

    Patch Changes

    0.3.4

    Patch Changes

    0.3.3

    Patch Changes

    0.3.2

    Patch Changes

    0.3.1

    Patch Changes

    0.3.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/mailchimp-configuration-schema.html b/adaptors/packages/mailchimp-configuration-schema.html index efd9cb25cf8..4c53c129a96 100644 --- a/adaptors/packages/mailchimp-configuration-schema.html +++ b/adaptors/packages/mailchimp-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "server": "us11",
    "apiKey": "0eb22c7b4a1c5bcd789379bf8a92902d-us13"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "server": {
    "title": "Data Center",
    "type": "string",
    "description": "Mailchimp Data Center for your account",
    "minLength": 3,
    "examples": [
    "us11",
    "uk8",
    "in10"
    ],
    "pattern": "^[a-zA-Z]{2}\\d{1,2}$"
    },
    "apiKey": {
    "title": "API Key",
    "type": "string",
    "description": "Mailchimp API Key",
    "minLength": 32,
    "examples": [
    "0eb22c7b4a1c5bcd789379bf8a92902d-us13"
    ],
    "pattern": "^[a-zA-Z0-9]{20}-[a-zA-Z]{2}\\d{1,2}$"
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "server",
    "apiKey"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/mailchimp-docs.html b/adaptors/packages/mailchimp-docs.html index e7d8945aca1..ead4e07f830 100644 --- a/adaptors/packages/mailchimp-docs.html +++ b/adaptors/packages/mailchimp-docs.html @@ -22,7 +22,7 @@ - + @@ -44,7 +44,7 @@ updateMember

    Kind: global function

    ParamTypeDescription
    paramsobjecta listId,subscriberHash and member
    [callback]functionOptional callback to handle the response

    updateMemberTags

    updateMemberTags(params, [callback]) ⇒ Operation updateMemberTags

    Kind: global function

    ParamTypeDescription
    paramsobjecta listId, and options
    [callback]functionOptional callback to handle the response

    upsertMembers

    upsertMembers(params, [callback]) ⇒ Operation Add or update a list members

    Kind: global function

    ParamTypeDescription
    paramsobjecta listId, users, and options
    [callback]functionOptional callback to handle the response

    Example

    upsertMembers((state) => ({
    listId: "someId",
    users: state.response.body.rows.map((u) => ({
    email: u.email,
    status: u.allow_other_emails ? "subscribed" : "unsubscribed",
    mergeFields: { FNAME: u.first_name, LNAME: u.last_name },
    })),
    }));

    - + \ No newline at end of file diff --git a/adaptors/packages/mailchimp-readme.html b/adaptors/packages/mailchimp-readme.html index 0dfe6d5190d..72177da6e9c 100644 --- a/adaptors/packages/mailchimp-readme.html +++ b/adaptors/packages/mailchimp-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/mailgun-changelog.html b/adaptors/packages/mailgun-changelog.html index c52c8618888..d55749b040f 100644 --- a/adaptors/packages/mailgun-changelog.html +++ b/adaptors/packages/mailgun-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.4

    Patch Changes

    0.3.3

    Patch Changes

    0.3.2

    Patch Changes

    0.3.1

    Patch Changes

    0.3.0

    Minor Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/mailgun-configuration-schema.html b/adaptors/packages/mailgun-configuration-schema.html index b4d7eb9e52b..0b068d67366 100644 --- a/adaptors/packages/mailgun-configuration-schema.html +++ b/adaptors/packages/mailgun-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "domain": "https://mailgun.com/api/example",
    "apiKey": "otherThiNGfSECret"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "domain": {
    "title": "Domain URL",
    "type": "string",
    "description": "Mailgun API domain URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://mailgun.com/api/example"
    ]
    },
    "apiKey": {
    "title": "API Key",
    "type": "string",
    "description": "Mailgun API Key",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "otherThiNGfSECret"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "domain",
    "apiKey"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/mailgun-docs.html b/adaptors/packages/mailgun-docs.html index ed3d195a824..d890865002e 100644 --- a/adaptors/packages/mailgun-docs.html +++ b/adaptors/packages/mailgun-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@
    Skip to main content

    mailgun@0.4.3

    send

    send(params) Create an event

    Kind: global function
    Access: public

    ParamTypeDescription
    paramsobjectParams for sending an email

    Example

    send({
    from: 'from_email',
    to: 'to_email',
    subject: 'Your Subject',
    text: 'Your message goes here',
    attachment: {
    url: 'www.google.com/doodle.png',
    filename: 'forYou.png',
    },
    })

    - + \ No newline at end of file diff --git a/adaptors/packages/mailgun-readme.html b/adaptors/packages/mailgun-readme.html index f9190415208..c4e5b549e95 100644 --- a/adaptors/packages/mailgun-readme.html +++ b/adaptors/packages/mailgun-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    send

    send(
    fields(
    field('from', 'from_email'),
    field('to', 'to_email'),
    field('subject', 'Your Subject'),
    field('text', 'Your message goes here')
    )
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/maximo-changelog.html b/adaptors/packages/maximo-changelog.html index 4bb2d413678..e0e92392347 100644 --- a/adaptors/packages/maximo-changelog.html +++ b/adaptors/packages/maximo-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.5

    Patch Changes

    0.3.4

    Patch Changes

    0.3.3

    Patch Changes

    0.3.2

    Patch Changes

    0.3.1

    Patch Changes

    0.3.0

    Minor Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/maximo-configuration-schema.html b/adaptors/packages/maximo-configuration-schema.html index d691e65ad96..0a368b18797 100644 --- a/adaptors/packages/maximo-configuration-schema.html +++ b/adaptors/packages/maximo-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "baseUrl": "https://maximo-demo76.mro.com",
    "username": "test@openfn.org",
    "password": "@some(!)passowrd"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "baseUrl": {
    "title": "Base URL",
    "type": "string",
    "description": "Maximo instance base URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://maximo-demo76.mro.com"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Maximo instance username",
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Maximo instance password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)passowrd"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "baseUrl",
    "username",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/maximo-docs.html b/adaptors/packages/maximo-docs.html index 4f72f48c0af..f8b9cc83c7e 100644 --- a/adaptors/packages/maximo-docs.html +++ b/adaptors/packages/maximo-docs.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ Make a GET request and POST it somewhere else

    Kind: global function

    ParamTypeDescription
    paramsobjectdata to make the fetch

    Example

    fetch({
    endpoint: 'maxrest/rest/os/mxinventory',
    query: {
    ITEMNUM: '01226',
    _format: 'json',
    },
    postUrl: 'https://www.openfn.org/inbox/not-real',
    });

    update

    update(params) ⇒ Operation Make an update in Maximo 7.6 and beyond

    Kind: global function

    ParamTypeDescription
    paramsobjectdata to make the update

    Example

    execute(
    update(params)
    )(state)

    update75

    update75(params) ⇒ Operation Make an upadte in Maximo 7.5

    Kind: global function

    ParamTypeDescription
    paramsobjectdata to make the update

    Example

    execute(
    update75(params)
    )(state)

    - + \ No newline at end of file diff --git a/adaptors/packages/maximo-readme.html b/adaptors/packages/maximo-readme.html index a20e641d954..ef6b2d535e9 100644 --- a/adaptors/packages/maximo-readme.html +++ b/adaptors/packages/maximo-readme.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ configuration-schema definition.

    Fetch

    sample 'fetch' expression

    fetch({
    endpoint: 'maxrest/rest/os/mxinventory',
    query: {
    ITEMNUM: '01226',
    _format: 'json',
    },
    postUrl: 'https://www.openfn.org/inbox/not-real',
    });

    sample 'create' expression

    create({
    endpoint: 'maxrest/rest/os/mxinvbal/',
    body: function (state) {
    return {
    ITEMNUM: dataValue('form.ITEMNUM')(state),
    ITEMSETID: dataValue('form.ITEMSETID')(state),
    SITEID: dataValue('form.SITEID')(state),
    LOCATION: dataValue('form.LOCATION')(state),
    ISSUEUNIT: 'FOO',
    PHYSCNT: dataValue('PHYSCNT')(state),
    BINNUM: dataValue('form.BINNUM')(state),
    };
    },
    });

    sample 'update75' expression

    update75({
    endpoint: state => {
    return (
    'maxrest/rest/os/mxinvbal/' +
    dataValue('form.question1.INVBALANCESID')(state)
    );
    },
    body: state => {
    return {
    _action: 'AddChange', //this is required for the old Maximo API!
    ITEMNUM: dataValue('form.ITEMNUM')(state),
    ITEMSETID: dataValue('form.ITEMSETID')(state),
    SITEID: dataValue('form.SITEID')(state),
    LOCATION: dataValue('form.LOCATION')(state),
    PHYSCNT: dataValue('form.PHYSCNT')(state),
    BINNUM: dataValue('form.BINNUM')(state),
    };
    },
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/medicmobile-changelog.html b/adaptors/packages/medicmobile-changelog.html index 68ac01ff0c5..f6888252b49 100644 --- a/adaptors/packages/medicmobile-changelog.html +++ b/adaptors/packages/medicmobile-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.3

    Patch Changes

    0.3.2

    Patch Changes

    0.3.1

    Patch Changes

    0.3.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/medicmobile-configuration-schema.html b/adaptors/packages/medicmobile-configuration-schema.html index 0319a81648b..effc3f4c1d7 100644 --- a/adaptors/packages/medicmobile-configuration-schema.html +++ b/adaptors/packages/medicmobile-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "server": "https://standard.app.medicmobile.org",
    "db": "medic",
    "username": "admin",
    "password": "@super(!)Secret"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "server": {
    "title": "Server URL",
    "type": "string",
    "description": "Medic's CouchDB api URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://standard.app.medicmobile.org"
    ]
    },
    "db": {
    "title": "Database",
    "type": "string",
    "description": "Database name",
    "minLength": 1,
    "examples": [
    "medic"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Medic instance username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Medic instance password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secret"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "server",
    "username",
    "password",
    "db"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/medicmobile-docs.html b/adaptors/packages/medicmobile-docs.html index 463f113d6a8..a784ed73727 100644 --- a/adaptors/packages/medicmobile-docs.html +++ b/adaptors/packages/medicmobile-docs.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ Access: public

    ParamTypeDescription
    formIdstringQuery parameters
    paramsobjectStarting sequence id
    postUrlstringInbox to post form data

    Example

    fetchSubmissions(
    "pregnancy", // formId
    { "last-event-id": 334 }, // params
    "http://localhost:4000/inbox/abc-123-xyz" // postUrl
    );

    pickFormData

    pickFormData(formId) ⇒ Operation Select submissions for a specific form

    Kind: global function
    Access: public

    ParamTypeDescription
    formIdstringThe form ID.

    Example

    pickFormData(formId)

    - + \ No newline at end of file diff --git a/adaptors/packages/medicmobile-readme.html b/adaptors/packages/medicmobile-readme.html index f36ab460062..adc37c4f9ca 100644 --- a/adaptors/packages/medicmobile-readme.html +++ b/adaptors/packages/medicmobile-readme.html @@ -22,7 +22,7 @@ - + @@ -39,7 +39,7 @@ configuration-schema definition.

    sample fetchSubmissions expression

    fetchSubmissions(
    'pregnancy', // formId
    { 'last-event-id': 334 }, // params, last-event-id will be replaced by cursor
    'http://localhost:4000/inbox/abc-123-xyz' // postUrl
    );

    sample changesApi and pickFormData usage

    // get all the changes...
    changesApi({
    include_docs: true,
    // This only gets used the first time the job is run.
    // Subsequent runs take the lastSeq value as their cursor.
    // "last-event-id": 789,
    });

    // Picks out the field data for a given formId.
    pickFormData('pregnancy');

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/mogli-changelog.html b/adaptors/packages/mogli-changelog.html index 882136052fd..9ee8cd16f31 100644 --- a/adaptors/packages/mogli-changelog.html +++ b/adaptors/packages/mogli-changelog.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.4

    Patch Changes

    0.3.3

    Patch Changes

    0.3.2

    Patch Changes

    0.3.1

    Patch Changes

    0.3.0

    Minor Changes

    v0.1.3

    - + \ No newline at end of file diff --git a/adaptors/packages/mogli-configuration-schema.html b/adaptors/packages/mogli-configuration-schema.html index 86097ded7bf..8471039045a 100644 --- a/adaptors/packages/mogli-configuration-schema.html +++ b/adaptors/packages/mogli-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "loginUrl": " https://www.orange-or-airtel-or-vodafone.com/api/",
    "username": "admin",
    "password": "@secret(!)Pass",
    "securityToken": "dGF5bG9yOnNlY3JldA==",
    "secret": "someotherThiNGfSECret"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "loginUrl": {
    "title": "Login URL",
    "type": "string",
    "description": "Mogli instance login URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    " https://www.orange-or-airtel-or-vodafone.com/api/"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Mogli instance username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Mogli instance password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@secret(!)Pass"
    ]
    },
    "securityToken": {
    "title": "Security Token",
    "type": "string",
    "description": "Mogli instance security token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "dGF5bG9yOnNlY3JldA=="
    ]
    },
    "secret": {
    "title": "Secret",
    "type": "string",
    "description": "Mogli instance secret",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "someotherThiNGfSECret"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "loginUrl",
    "username",
    "password",
    "securityToken",
    "secret"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/mogli-docs.html b/adaptors/packages/mogli-docs.html index cb4bbbbd74a..ce07e7815e2 100644 --- a/adaptors/packages/mogli-docs.html +++ b/adaptors/packages/mogli-docs.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ Removes unserializable keys from the state.

    Kind: global function

    ParamType
    stateState

    lookup

    lookup(relationshipName, externalID, path) ⇒ object Adds a lookup or 'dome insert' to a record.

    Kind: global function

    ParamTypeDescription
    relationshipNamestring__r relationship field on the record.
    externalIDstringSalesforce ExternalID field.
    pathstringJSONPath to data source.

    Example (Example)

    lookup("relationship_name__r", "externalID on related object", "$.path")

    relationship

    relationship(relationshipName, externalID, dataSource) ⇒ object Adds a lookup or 'dome insert' to a record.

    Kind: global function

    ParamTypeDescription
    relationshipNamestring__r relationship field on the record.
    externalIDstringSalesforce ExternalID field.
    dataSourcestringresolvable source.

    Example (Data Sourced Value)

    relationship("relationship_name__r", "externalID on related object", dataSource("path"))

    Example (Fixed Value)

    relationship("relationship_name__r", "externalID on related object", "hello world")

    - + \ No newline at end of file diff --git a/adaptors/packages/mogli-readme.html b/adaptors/packages/mogli-readme.html index 298c9b6c66b..616a8daf451 100644 --- a/adaptors/packages/mogli-readme.html +++ b/adaptors/packages/mogli-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Create inbound SMS

    createSMS(
    fields(
    field('sender', dataValue('from_number')),
    field('receivedAt', dataValue('timestamp')),
    field('message', dataValue('message'))
    )
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/mongodb-changelog.html b/adaptors/packages/mongodb-changelog.html index 93562b55476..360fa451da5 100644 --- a/adaptors/packages/mongodb-changelog.html +++ b/adaptors/packages/mongodb-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.0.6

    Patch Changes

    1.0.5

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/mongodb-configuration-schema.html b/adaptors/packages/mongodb-configuration-schema.html index fac8787ab60..e16431b978c 100644 --- a/adaptors/packages/mongodb-configuration-schema.html +++ b/adaptors/packages/mongodb-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "clusterHostname": "yourCluster-xxxyzzz.mongodb.net",
    "username": "admin",
    "password": "@secret(!)Pass"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "clusterHostname": {
    "title": "Cluster Hostname",
    "type": "string",
    "description": "Your MongoDB cluster hostname",
    "format": "hostname",
    "minLength": 1,
    "examples": [
    "yourCluster-xxxyzzz.mongodb.net"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Your MongoDB instance username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Your MongoDB instance password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@secret(!)Pass"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "clusterHostname",
    "username",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/mongodb-docs.html b/adaptors/packages/mongodb-docs.html index 61325fac811..dbf053024ad 100644 --- a/adaptors/packages/mongodb-docs.html +++ b/adaptors/packages/mongodb-docs.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ Find documents in a mongoDb collection

    Kind: global function

    ParamTypeDescription
    paramsobjectConfiguration for mongo

    Example

    findDocuments({
    database: 'str',
    collection: 'cases',
    query: {a:3}
    });

    insertDocuments

    insertDocuments(params) ⇒ State Inserts documents into a mongoDb collection

    Kind: global function

    ParamTypeDescription
    paramsobjectConfiguration for mongo

    Example

    insertDocuments({
    database: 'str',
    collection: 'kids',
    documents: [1,2,3]
    });

    updateDocument

    updateDocument(params) ⇒ State Updates document (optionally upserting) into a mongoDb collection

    Kind: global function

    ParamTypeDescription
    paramsobjectConfiguration for mongo

    Example

    updateDocuments({
    database: 'str',
    collection: 'animals',
    filter: { type: 'fuzzy' },
    changes: { kind: 'soft' },
    options: { upsert: true }
    });

    - + \ No newline at end of file diff --git a/adaptors/packages/mongodb-readme.html b/adaptors/packages/mongodb-readme.html index e2a0f19d40b..21085521a6a 100644 --- a/adaptors/packages/mongodb-readme.html +++ b/adaptors/packages/mongodb-readme.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ configuration-schema definition.

    insertDocuments

    insertDocuments({
    database: 'yourDb',
    collection: 'yourCollection',
    documents: state => {
    return state.data.map(item => {
    return { name: item.name, age: item.age };
    });
    },
    // callback: (state) => state, // optional
    });

    findDocuments

    findDocuments({
    database: 'yourDb',
    collection: 'yourCollection',
    query: state => {
    return { name: 'stu' };
    },
    // callback: (state) => state, // optional
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/msgraph-changelog.html b/adaptors/packages/msgraph-changelog.html index bd5cc9059d9..7139cfc1b45 100644 --- a/adaptors/packages/msgraph-changelog.html +++ b/adaptors/packages/msgraph-changelog.html @@ -22,14 +22,14 @@ - +
    Skip to main content

    Changelog for the msgraph adaptor

    @openfn/language-msgraph

    0.4.0

    Minor Changes

    • 4cd6587: Add uploadFile and sheetToBuffer function

    Patch Changes

    0.3.5

    Patch Changes

    0.3.4

    Patch Changes

    • 1c183e9: Fix getFile unit tests

    0.3.3

    Patch Changes

    0.3.2

    Patch Changes

    • 9cc4952: fix url in request util

    0.3.1

    Patch Changes

    • f45f477: Clean-up state before throwing an error

    0.3.0

    Minor Changes

    • 9366e53: - Switch from nodejs default fetch to undici fetch
      • Added the following sharepoint functions
        • getDrive()
        • getFolder()
        • getFile()

    0.2.0

    Minor Changes

    • d33c0ee: export parseCsv from common

    Patch Changes

    0.1.1

    Patch Changes

    • aad9549: Ensure that standard OAuth2 credentials with snake-cased "access_token" keys can be used for OAuth2-reliant adaptors
    • Updated dependencies [aad9549]

    0.1.0

    Minor Changes

    • 93d82a8: Add msgraph adaptor with get() and create() functions

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/msgraph-configuration-schema.html b/adaptors/packages/msgraph-configuration-schema.html index 2274dbfff30..652a7369670 100644 --- a/adaptors/packages/msgraph-configuration-schema.html +++ b/adaptors/packages/msgraph-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "apiVersion": "v1.0",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRl"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$comment": "OAuth2",
    "properties": {
    "apiVersion": {
    "title": "API Version",
    "anyOf": [
    {
    "type": "string"
    },
    {
    "type": "null"
    }
    ],
    "placeholder": "v1.0",
    "description": "Microsoft Graph api version",
    "minLength": 1,
    "examples": [
    "v1.0",
    "beta"
    ]
    },
    "access_token": {
    "title": "Access Token",
    "type": "string",
    "description": "Your Microsoft Graph access token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRl"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "access_token"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/msgraph-docs.html b/adaptors/packages/msgraph-docs.html index 4b8fc254e55..3df0b87a57d 100644 --- a/adaptors/packages/msgraph-docs.html +++ b/adaptors/packages/msgraph-docs.html @@ -22,7 +22,7 @@ - + @@ -53,7 +53,7 @@ Access: public

    ParamTypeDescription
    rowsThe rows parameter is an array of objects representing the data to be written to the Excel sheet. Each object in the array represents a row in the sheet, and the keys of the object represent the column headers. The values of the object represent the data in each cell of the row.
    optionsThe options parameter is an object that contains additional configuration options
    [options.wsName]StringWorksheet name i.e 32 Characters
    [options.bookType]StringFile format of the exported file, Default is 'xlsx'. See here for the function. It can have the following properties:

    Example (Create a buffer containing excel file with `xlsx` output format )

    sheetToBuffer('$.data[*]', {
    wsName: 'Invalid Grant Codes',
    bookType: 'xlsx',
    });

    uploadFile

    uploadFile(resource, data, callback) ⇒ Operation Upload a file to a drive

    Kind: global function
    Access: public

    ParamTypeDescription
    resourceObjectResource Object
    [resource.driveId]StringDrive Id
    [resource.driveId]StringSite Id
    [resource.folderId]StringParent folder id
    [resource.contentType]StringResource content-type
    [resource.onConflict]StringSpecify conflict behavior if file with the same name exists. Can be "rename
    dataObjectA buffer containing the file.
    callbackfunctionOptional callback function

    Example (Upload Excel file to a drive using `driveId` and `parantItemId`)

    uploadFile(
    state => ({
    driveId: state.driveId,
    folderId: state.folderId,
    fileName: `Tracker.xlsx`,
    }),
    state => state.buffer
    );

    Example (Upload Excel file to a SharePoint drive using `siteId` and `parantItemId`)

    uploadFile(
    state => ({
    siteId: state.siteId,
    folderId: state.folderId,
    fileName: `Report.xlsx`,
    }),
    state => state.buffer
    );

    - + \ No newline at end of file diff --git a/adaptors/packages/msgraph-readme.html b/adaptors/packages/msgraph-readme.html index 0b76aa9d53f..89117b18f48 100644 --- a/adaptors/packages/msgraph-readme.html +++ b/adaptors/packages/msgraph-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema for required and optional configuration properties.

    Development

    Clone the adaptors monorepo. Follow the "Getting Started" guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To build only the docs run pnpm build docs.

    - + \ No newline at end of file diff --git a/adaptors/packages/mssql-changelog.html b/adaptors/packages/mssql-changelog.html index 72a30cdc358..e4220c16765 100644 --- a/adaptors/packages/mssql-changelog.html +++ b/adaptors/packages/mssql-changelog.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    4.0.8

    Patch Changes

    4.0.7

    Patch Changes

    4.0.6

    Patch Changes

    4.0.5

    Patch Changes

    4.0.4

    Patch Changes

    4.0.3

    Patch Changes

    4.0.2

    Patch Changes

    4.0.1

    Patch Changes

    4.0.0

    Major Changes

    Patch Changes

    3.1.1

    Patch Changes

    3.1.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/mssql-configuration-schema.html b/adaptors/packages/mssql-configuration-schema.html index f1a5ed37deb..401c66f0b2c 100644 --- a/adaptors/packages/mssql-configuration-schema.html +++ b/adaptors/packages/mssql-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "server": "something.database.windows.net",
    "database": "demo-db",
    "userName": "admin",
    "password": "@super(!)Password"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "server": {
    "title": "Server URL",
    "type": "string",
    "description": "The database instance server URL or IP address",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "something.database.windows.net"
    ]
    },
    "database": {
    "title": "Database",
    "type": "string",
    "description": "The database name",
    "minLength": 1,
    "examples": [
    "demo-db"
    ]
    },
    "userName": {
    "title": "Username",
    "type": "string",
    "description": "Username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Password"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "server",
    "database"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/mssql-docs.html b/adaptors/packages/mssql-docs.html index 1376d831446..605328e7de8 100644 --- a/adaptors/packages/mssql-docs.html +++ b/adaptors/packages/mssql-docs.html @@ -22,7 +22,7 @@ - + @@ -53,7 +53,7 @@ Access: public

    ParamTypeDescription
    logicalstringa data to check existing value for.
    tablestringThe target table
    uuidstringThe uuid column to determine a matching/existing record
    recordobjectPayload data for the record as a JS object or function
    optionsobjectOptional options argument

    Example

    upsertIf(
    dataValue('name'),
    'users', // the DB table
    'uuid', // a DB column with a unique constraint
    { name: 'Elodie', id: 7 },
    { writeSql:true, execute: true, logValues: false }
    )

    upsertMany

    upsertMany(table, uuid, records, options) ⇒ Operation Insert or update multiple records using ON CONFLICT UPDATE and excluded

    Kind: global function
    Access: public

    ParamTypeDescription
    tablestringThe target table
    uuidstringThe uuid column to determine a matching/existing record
    recordsfunctionA function that takes state and returns an array of records
    optionsobjectOptional options argument

    Example

    upsertMany(
    'users', 'email', records, { logValues: false }
    )
    upsertMany(
    'users', ['email', 'phone'], records, { logValues: false }
    )

    - + \ No newline at end of file diff --git a/adaptors/packages/mssql-readme.html b/adaptors/packages/mssql-readme.html index 43968ea3ada..843fa5a319a 100644 --- a/adaptors/packages/mssql-readme.html +++ b/adaptors/packages/mssql-readme.html @@ -22,7 +22,7 @@ - + @@ -42,7 +42,7 @@ columns. The key identity can be use for a column to auto-generate a value.

    insertTable('users', state =>
    state.data.map(column => ({
    name: column.name,
    type: column.type,
    required: true, // optional
    unique: false, // optional - set to true for unique constraint
    }))
    );

    Alter a table in the database

    This function allows to add new columns to a table. Beware of the fact that you cannot add new columns with names that already exist in the table.

    modifyTable(
    'users',
    state =>
    state.data.map(newColumn => ({
    name: newColumn.name,
    type: newColumn.type,
    required: true, // optional
    unique: false, // optional - set to true for unique constraint
    })),
    { writeSql: false, execute: true }
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/mysql-changelog.html b/adaptors/packages/mysql-changelog.html index 684d01b7305..e3d2c45e0e5 100644 --- a/adaptors/packages/mysql-changelog.html +++ b/adaptors/packages/mysql-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.3.5

    Patch Changes

    1.3.4

    Patch Changes

    1.3.3

    Patch Changes

    1.3.2

    Patch Changes

    1.3.1

    Patch Changes

    1.3.0

    Minor Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/mysql-configuration-schema.html b/adaptors/packages/mysql-configuration-schema.html index c1878c8bdbb..c59b54ff505 100644 --- a/adaptors/packages/mysql-configuration-schema.html +++ b/adaptors/packages/mysql-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "host": "some-host-url.compute-1.amazonaws.com",
    "port": "3306",
    "database": "demo-db",
    "user": "admin-demo",
    "password": "@super(!)Secretpass"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "host": {
    "title": "Host URL",
    "type": "string",
    "description": "The database instance host URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "some-host-url.compute-1.amazonaws.com"
    ]
    },
    "port": {
    "title": "Port",
    "type": "integer",
    "default": 3306,
    "description": "Database instance port",
    "minLength": 1,
    "examples": [
    3306
    ]
    },
    "database": {
    "title": "Database",
    "type": "string",
    "description": "The database name",
    "minLength": 1,
    "examples": [
    "demo-db"
    ]
    },
    "user": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in the database",
    "minLength": 1,
    "examples": [
    "admin-demo"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in the database",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secretpass"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "host",
    "database"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/mysql-docs.html b/adaptors/packages/mysql-docs.html index 0241e9a1abf..6349c25439b 100644 --- a/adaptors/packages/mysql-docs.html +++ b/adaptors/packages/mysql-docs.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ Insert or Update a record if matched

    Kind: global function

    ParamTypeDescription
    tablestringThe target table
    fieldsobjectA fields object

    Example

    execute(
    upsert('table', fields(
    field('name', dataValue('name'))
    ))
    )(state)

    upsertMany

    upsertMany(table, data) ⇒ Operation Insert or update multiple records using ON DUPLICATE KEY

    Kind: global function
    Access: public

    ParamTypeDescription
    tablestringThe target table
    dataarrayAn array of objects or a function that returns an array

    Example

    upsertMany(
    'users', // the DB table
    [
    { name: 'one', email: 'one@openfn.org' },
    { name: 'two', email: 'two@openfn.org' },
    ]
    )

    - + \ No newline at end of file diff --git a/adaptors/packages/mysql-readme.html b/adaptors/packages/mysql-readme.html index dadc02370a0..81e4f63359b 100644 --- a/adaptors/packages/mysql-readme.html +++ b/adaptors/packages/mysql-readme.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ returns a string.

    sqlString(state => {
    return (
    `INSERT INTO untitled_table (name, the_geom) VALUES ('` +
    state.data.version +
    `', ` +
    dataValue('form.Choix_tache')(state) +
    `)`
    );
    });

    Insert a single record

    This function is used to insert a single record in a MySQL database.

    insert(
    'some_table',
    fields(
    field('firstname', dataValue('form.patient_firstname')),
    field('lastname', dataValue('form.patient_lastname'))
    )
    );

    Insert or update a single record

    This function is used to insert a single record in a MySQL database or update it if there is a match.

    upsert(
    'some_table',
    fields(
    field('firstname', dataValue('form.patient_firstname')),
    field('lastname', dataValue('form.patient_lastname'))
    )
    );

    Upsert many records

    This function allows the upsert of a set of records inside a table all at once.

    upsertMany(
    'users', // the DB table
    [
    { name: 'one', email: 'one@openfn.org' },
    { name: 'two', email: 'two@openfn.org' },
    ]
    );

    or

    upsertMany('users', state =>
    state.data.users.map(user => {
    name: user['name'],
    email: user['email']
    })
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/nexmo-changelog.html b/adaptors/packages/nexmo-changelog.html index 0e0a4c2c0d3..9ab88a4dba6 100644 --- a/adaptors/packages/nexmo-changelog.html +++ b/adaptors/packages/nexmo-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.2.3

    Patch Changes

    0.2.2

    Patch Changes

    0.2.1

    Patch Changes

    0.2.0

    Minor Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/nexmo-configuration-schema.html b/adaptors/packages/nexmo-configuration-schema.html index b79522b1858..09976701556 100644 --- a/adaptors/packages/nexmo-configuration-schema.html +++ b/adaptors/packages/nexmo-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "apiKey": "mYaP1K3y",
    "apiSecret": "supersecret"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "apiKey": {
    "title": "API Key",
    "type": "string",
    "description": "Your Nexmo API Key",
    "minLength": 1,
    "examples": [
    "mYaP1K3y"
    ]
    },
    "apiSecret": {
    "title": "API Secret",
    "type": "string",
    "description": "Your Nexmo API Secret key",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "supersecret"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "apiKey",
    "apiSecret"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/nexmo-docs.html b/adaptors/packages/nexmo-docs.html index f1c396e7c02..c4f3d8e6a05 100644 --- a/adaptors/packages/nexmo-docs.html +++ b/adaptors/packages/nexmo-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@
    Skip to main content

    nexmo@0.4.3

    sendSMS

    sendSMS(from, toNumber, message) ⇒ Operation Sends an SMS message to a specific phone number

    Kind: global function
    Access: public

    ParamTypeDescription
    fromStringName or number the message should be sent from.
    toNumberStringDestination phone number.
    messageStringText message

    Example

    sendSMS("OpenFn", "phoneNumber", "Hello World!")

    - + \ No newline at end of file diff --git a/adaptors/packages/nexmo-readme.html b/adaptors/packages/nexmo-readme.html index 1ecc4fcc49e..a18de3e5109 100644 --- a/adaptors/packages/nexmo-readme.html +++ b/adaptors/packages/nexmo-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    sendSMS

    sample expression

    sendSMS('OpenFn', '0123456789', 'HelloWorld!');

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/ocl-changelog.html b/adaptors/packages/ocl-changelog.html index b20e0ba341d..67e06e4db0e 100644 --- a/adaptors/packages/ocl-changelog.html +++ b/adaptors/packages/ocl-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.0

    Minor Changes

    0.2.6

    Patch Changes

    0.2.5

    Patch Changes

    0.2.4

    Patch Changes

    0.2.3

    Patch Changes

    0.2.2

    Patch Changes

    0.2.1

    Patch Changes

    0.2.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/ocl-configuration-schema.html b/adaptors/packages/ocl-configuration-schema.html index efb1cd3f8ca..427dfea16a8 100644 --- a/adaptors/packages/ocl-configuration-schema.html +++ b/adaptors/packages/ocl-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "hostUrl": "https://api.openconceptlab.org/",
    "username": "usernmame",
    "password": "supersecretpassword"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "hostUrl": {
    "title": "Host URL",
    "type": "string",
    "description": "The OCL API URL",
    "default": "https://api.openconceptlab.org/",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://api.openconceptlab.org/"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in to OCL",
    "minLength": 1,
    "examples": [
    "usernmame"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in to OCL",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "supersecretpassword"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "hostUrl",
    "username",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/ocl-docs.html b/adaptors/packages/ocl-docs.html index cdb474f513f..d5589ad3f75 100644 --- a/adaptors/packages/ocl-docs.html +++ b/adaptors/packages/ocl-docs.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ Access: public

    ParamTypeDescription
    pathstringPath to resource
    queryobjectA query object that will limit what resources are retrieved when converted into request params.
    callbackfunction(Optional) callback function

    Example

    get(
    "orgs/MSFOCG/collections/lime-demo/HEAD/mappings",
    {
    page: 1,
    exact_match: "off",
    limit: 200,
    verbose: false,
    sortDesc: "_score",
    },
    (state) => {
    // Add state oclMappings
    const oclMappings = state.data;
    return { ...state, data: {}, references: [], response: {}, oclMappings };
    }
    );

    getMappings

    getMappings(ownerId, repositoryId, [options], callback) ⇒ Operation Get a source repository in OCL

    Kind: global function
    Access: public

    ParamTypeDescription
    ownerIdstringAn OCL user or organization
    repositoryIdstringAn OCL collection id or source id
    [options]ObjectOptional. options which can be passed to See more on OCL swagger docs
    callbackfunction(Optional) callback function

    Example

    getMappings(
    "MSFOCG",
    "lime-demo",
    { page: 1, exact_match: "off", verbose: false },
    (state) => {
    // Add state oclMappings
    const oclMappings = state.data;
    return { ...state, data: {}, references: [], response: {}, oclMappings };
    }
    );

    - + \ No newline at end of file diff --git a/adaptors/packages/ocl-readme.html b/adaptors/packages/ocl-readme.html index bcb4c5e7bac..3056ef99371 100644 --- a/adaptors/packages/ocl-readme.html +++ b/adaptors/packages/ocl-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Mapping source concepts to destination API

    Recieve form data from source application and convert data element keys to destination application.

    map(  "data": {
    "a": 1,
    "b": 2},
    {users:"haftamuk", sources: "eCHIS-CODES", concepts: "fp_new_at_10_to_14" }
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/openfn-changelog.html b/adaptors/packages/openfn-changelog.html index 72d5d44e6c7..7e11d4f2f2f 100644 --- a/adaptors/packages/openfn-changelog.html +++ b/adaptors/packages/openfn-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.2.6

    Patch Changes

    1.2.5

    Patch Changes

    1.2.4

    Patch Changes

    1.2.3

    Patch Changes

    1.2.2

    Patch Changes

    1.2.1

    Patch Changes

    1.2.0

    Minor Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/openfn-configuration-schema.html b/adaptors/packages/openfn-configuration-schema.html index 95c1eda17ef..9077734bb9b 100644 --- a/adaptors/packages/openfn-configuration-schema.html +++ b/adaptors/packages/openfn-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "host": "https://www.openfn.org",
    "projectId": "some-id",
    "username": "test@openfn.org",
    "password": "@super(!)Secretpass"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "host": {
    "title": "Host",
    "type": "string",
    "description": "The OpenFn host url",
    "format": "uri",
    "default": "https://www.openfn.org",
    "minLength": 1,
    "examples": [
    "https://www.openfn.org"
    ]
    },
    "projectId": {
    "title": "Project ID",
    "type": "string",
    "description": "Your OpenFn project ID",
    "minLength": 1,
    "examples": [
    "some-id"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in to OpenFn",
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in to OpenFn",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secretpass"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "host",
    "username",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/openfn-docs.html b/adaptors/packages/openfn-docs.html index e89ad708d26..74c68abc394 100644 --- a/adaptors/packages/openfn-docs.html +++ b/adaptors/packages/openfn-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@
    Skip to main content

    openfn@1.3.8

    request

    request(options, callback) ⇒ Operation Make a POST request

    Kind: global function
    Access: public

    ParamTypeDescription
    optionsobjectBody, Query, Headers and Authentication parameters
    callbackfunction(Optional) Callback function

    Example

    request({method: 'get', path: '/jobs/});

    - + \ No newline at end of file diff --git a/adaptors/packages/openfn-readme.html b/adaptors/packages/openfn-readme.html index dea8c42c6e5..80cde9f5945 100644 --- a/adaptors/packages/openfn-readme.html +++ b/adaptors/packages/openfn-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/openhim-changelog.html b/adaptors/packages/openhim-changelog.html index 931afb64833..e001a2703c6 100644 --- a/adaptors/packages/openhim-changelog.html +++ b/adaptors/packages/openhim-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.1.4

    Patch Changes

    0.1.3

    Patch Changes

    0.1.2

    Patch Changes

    0.1.1

    Patch Changes

    0.1.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/openhim-configuration-schema.html b/adaptors/packages/openhim-configuration-schema.html index a56141ad870..f46554f58c6 100644 --- a/adaptors/packages/openhim-configuration-schema.html +++ b/adaptors/packages/openhim-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "apiUrl": "http://openhim.com/api",
    "username": "admin@openhim.org",
    "password": "@super(!)Secretpass"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "apiUrl": {
    "title": "API URL",
    "type": "string",
    "description": "The OpenHIM API url",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "http://openhim.com/api"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in to OpenHIM",
    "minLength": 1,
    "examples": [
    "admin@openhim.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in to OpenHIM",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secretpass"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "apiUrl"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/openhim-docs.html b/adaptors/packages/openhim-docs.html index 0c0bccccd19..27d004631d6 100644 --- a/adaptors/packages/openhim-docs.html +++ b/adaptors/packages/openhim-docs.html @@ -22,14 +22,14 @@ - +
    Skip to main content
    - + \ No newline at end of file diff --git a/adaptors/packages/openhim-readme.html b/adaptors/packages/openhim-readme.html index c06acad5189..961344d8914 100644 --- a/adaptors/packages/openhim-readme.html +++ b/adaptors/packages/openhim-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/openmrs-changelog.html b/adaptors/packages/openmrs-changelog.html index 5587558a4ef..f8fe36c8643 100644 --- a/adaptors/packages/openmrs-changelog.html +++ b/adaptors/packages/openmrs-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.1.1

    Patch Changes

    1.1.0

    Minor Changes

    1.0.1

    Patch Changes

    1.0.0

    Major Changes

    0.10.5

    Patch Changes

    0.10.4

    Patch Changes

    0.10.3

    Patch Changes

    0.10.2

    Patch Changes

    0.10.1

    Patch Changes

    0.10.0

    Minor Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/openmrs-configuration-schema.html b/adaptors/packages/openmrs-configuration-schema.html index 5710817b4fb..7a1bbf82c06 100644 --- a/adaptors/packages/openmrs-configuration-schema.html +++ b/adaptors/packages/openmrs-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "instanceUrl": "http://openmrs.com/instance/url",
    "username": "admin@openmrs.org",
    "password": "@super(!)Secretpass"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "instanceUrl": {
    "title": "Instance URL",
    "type": "string",
    "description": "The OpenMRS host url",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "http://openmrs.com/instance/url"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in to OpenMRS",
    "minLength": 1,
    "examples": [
    "admin@openmrs.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in to OpenMRS",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secretpass"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "instanceUrl"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/openmrs-docs.html b/adaptors/packages/openmrs-docs.html index 95a8a5db306..79260e09eae 100644 --- a/adaptors/packages/openmrs-docs.html +++ b/adaptors/packages/openmrs-docs.html @@ -22,7 +22,7 @@ - + @@ -44,7 +44,7 @@ Access: public

    ParamTypeDescription
    resourceTypestringThe type of resource to be updated. E.g. person, patient, etc.
    pathstringThe id or path to the object to be updated. E.g. e739808f-f166-42ae-aaf3-8b3e8fa13fda or e739808f-f166-42ae-aaf3-8b3e8fa13fda/{collection-name}/{object-id}
    dataObjectData to update. It requires to send all required fields or the full body. If you want partial updates, use patch operation.
    [callback]functionOptional callback to handle the response

    Example (a person)

    update("person", '3cad37ad-984d-4c65-a019-3eb120c9c373',{"gender":"M","birthdate":"1997-01-13"})

    upsert

    upsert(resourceType, query, data, [callback]) ⇒ Operation Upsert a record. A generic helper function used to atomically either insert a row, or on the basis of the row already existing, UPDATE that existing row instead.

    Kind: global function
    Throws:

    Access: public

    ParamTypeDescription
    resourceTypestringThe type of a resource to upsert. E.g. trackedEntityInstances
    queryObjectA query object that allows to uniquely identify the resource to update. If no matches found, then the resource will be created.
    dataObjectThe data to use for update or create depending on the result of the query.
    [callback]functionOptional callback to handle the response

    Example (For an existing patient using upsert)

    upsert('patient', { q: '10007JJ' }, { person: { age: 50 } });

    Example (For non existing patient creating a patient record using upsert )

    upsert(
    "patient",
    { q: "1000EHE" },
    {
    identifiers: [
    {
    identifier: "1000EHE",
    identifierType: "05a29f94-c0ed-11e2-94be-8c13b969e334",
    location: "44c3efb0-2583-4c80-a79e-1f756a03c0a1",
    preferred: true,
    },
    ],
    person: {
    gender: "M",
    age: 42,
    },
    }
    );

    - + \ No newline at end of file diff --git a/adaptors/packages/openmrs-readme.html b/adaptors/packages/openmrs-readme.html index 6b9f6659547..dd1314f4641 100644 --- a/adaptors/packages/openmrs-readme.html +++ b/adaptors/packages/openmrs-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Get a patient by some criteria

    // getPatient({ uuid: '516af9aa-0402-4e11-ad79-e394fdec0c91' });
    // getPatient({ uuid: dataValue('patientId')(state) });
    getPatient({
    uuid: state => state.data[0].uuid,
    });

    Example of searching for patients based on their EMR Id

    getPatients(
    {
    identifier: state => state.data.emrId,
    v: 'full',
    },
    {
    exactlyOne: true,
    }
    );

    Create an Encounter

    createEncounter({
    encounterDatetime: dataValue('visit_date'), //dynamically fill with source app data
    patient: dataValue('uuid'),
    encounterType: dataValue('visit_type'),
    location: dataValue('location.uuid'),
    encounterProviders: [
    {
    provider: dataValue('provider_name'),
    encounterRole: '240b26f9-dd88-4172-823d-4a8bfeb7841f', //hardcoded value
    },
    ],
    });

    Make a request to any OpenMRS endpoint

    req({ method: 'GET', url: '/ws/rest/v1/concept' }, state => {
    console.log(JSON.stringify(state, null, 2));
    return state;
    });

    Create new patient

    patient(
    fields(
    field('gender', 'M'),
    field('names', function (state) {
    return [
    {
    patient_id: dataValue('form.patientId')(state),
    creator: dataValue('form.user')(state),
    },
    ];
    })
    )
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/postgresql-changelog.html b/adaptors/packages/postgresql-changelog.html index 4e9874658ca..c87f9c9840a 100644 --- a/adaptors/packages/postgresql-changelog.html +++ b/adaptors/packages/postgresql-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    4.0.0

    Major Changes

    3.4.6

    Patch Changes

    3.4.5

    Patch Changes

    3.4.4

    Patch Changes

    3.4.3

    Patch Changes

    3.4.2

    Patch Changes

    3.4.1

    Patch Changes

    3.4.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/postgresql-configuration-schema.html b/adaptors/packages/postgresql-configuration-schema.html index 4867f5ac247..fe5924b2bae 100644 --- a/adaptors/packages/postgresql-configuration-schema.html +++ b/adaptors/packages/postgresql-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "host": "https://some-host.compute-1.amazonaws.com",
    "port": "5432",
    "database": "demo-db",
    "user": "admin",
    "password": "@super(!)Secretpass",
    "ssl": "true",
    "allowSelfSignedCert": "true"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "host": {
    "title": "Host",
    "type": "string",
    "description": "Postgres instance host URL or IP address",
    "minLength": 1,
    "anyOf": [
    {
    "format": "uri"
    },
    {
    "format": "ipv4"
    }
    ],
    "examples": [
    "https://some-host.compute-1.amazonaws.com",
    "201.220.61.246"
    ]
    },
    "port": {
    "title": "Port",
    "type": "integer",
    "default": 5432,
    "description": "Database instance port",
    "minLength": 1,
    "examples": [
    5432
    ]
    },
    "database": {
    "title": "Database",
    "type": "string",
    "description": "The database name",
    "minLength": 1,
    "examples": [
    "demo-db"
    ]
    },
    "user": {
    "title": "User",
    "type": "string",
    "description": "User name",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secretpass"
    ]
    },
    "ssl": {
    "title": "Use SSL",
    "type": "boolean",
    "examples": [
    true
    ]
    },
    "allowSelfSignedCert": {
    "title": "Allow self-signed certificate",
    "type": "boolean",
    "examples": [
    true
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "host",
    "port",
    "database"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/postgresql-docs.html b/adaptors/packages/postgresql-docs.html index b7129b50aa5..63f8e8d68c0 100644 --- a/adaptors/packages/postgresql-docs.html +++ b/adaptors/packages/postgresql-docs.html @@ -22,7 +22,7 @@ - + @@ -48,7 +48,7 @@ Access: public

    ParamTypeDescription
    logicalstringa data to check existing value for.
    tablestringThe target table
    uuidstringThe uuid column to determine a matching/existing record
    recordobjectPayload data for the record as a JS object or function
    [options]objectOptional options argument
    [options.setNull]stringA string value that specifies the behavior for inserting null values.
    [options.writeSql]booleanA boolean value that specifies whether to log the generated SQL statement. Defaults to false.
    [options.execute]booleanA boolean value that specifies whether to execute the generated SQL statement. Defaults to false.
    [options.logValues]booleanA boolean value that specifies whether to log the inserted values to the console. Defaults to false.
    callbackfunction(Optional) callback function

    Example

    upsertIf(
    dataValue('name'),
    'users', // the DB table
    'ON CONSTRAINT users_pkey', // a DB column with a unique constraint OR a CONSTRAINT NAME
    { name: 'Elodie', id: 7 },
    { writeSql:true, execute: true }
    )

    upsertMany

    upsertMany(table, uuid, data, [options], callback) ⇒ Operation Insert or update multiple records using ON CONFLICT UPDATE and excluded

    Kind: global function
    Access: public

    ParamTypeDescription
    tablestringThe target table
    uuidstringThe uuid column to determine a matching/existing record
    dataarrayAn array of objects or a function that returns an array
    [options]objectOptional options argument
    [options.setNull]stringA string value that specifies the behavior for inserting null values.
    [options.writeSql]booleanA boolean value that specifies whether to log the generated SQL statement. Defaults to false.
    [options.execute]booleanA boolean value that specifies whether to execute the generated SQL statement. Defaults to false.
    [options.logValues]booleanA boolean value that specifies whether to log the inserted values to the console. Defaults to false.
    callbackfunction(Optional) callback function

    Example

    upsertMany(
    'users', // the DB table
    'email', // a DB column with a unique constraint OR a CONSTRAINT NAME
    [
    { name: 'one', email: 'one@openfn.org' },
    { name: 'two', email: 'two@openfn.org' },
    ]
    { logValues: true }
    )

    - + \ No newline at end of file diff --git a/adaptors/packages/postgresql-readme.html b/adaptors/packages/postgresql-readme.html index 44bd2127aa0..78f20ba7536 100644 --- a/adaptors/packages/postgresql-readme.html +++ b/adaptors/packages/postgresql-readme.html @@ -22,7 +22,7 @@ - + @@ -39,7 +39,7 @@ columns. The key identity can be use for a column to auto-generate a value.

    insertTable('users', state =>
    state.data.map(column => ({
    name: column.name,
    type: column.type,
    required: true, // optional
    unique: false, // optional - set to true for unique constraint
    }))
    );

    Alter a table in the database

    This function allows to add new columns to a table. Beware of the fact that you cannot add new columns with names that already exist in the table.

    modifyTable(
    'users',
    state =>
    state.data.map(newColumn => ({
    name: newColumn.name,
    type: newColumn.type,
    required: true, // optional
    unique: false, // optional - set to true for unique constraint
    })),
    { writeSql: false, execute: true }
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/primero-changelog.html b/adaptors/packages/primero-changelog.html index 95f655bce4b..8cc09d2232a 100644 --- a/adaptors/packages/primero-changelog.html +++ b/adaptors/packages/primero-changelog.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ argument: the metadata from Primero's response.

    getCases will now not only return an array of cases in state.data, but metadata related to pagination in state.metadata.

    Patch Changes

    2.9.2

    Patch Changes

    2.9.1

    Patch Changes

    2.9.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/primero-configuration-schema.html b/adaptors/packages/primero-configuration-schema.html index f748a1ef0da..31c7e7ac447 100644 --- a/adaptors/packages/primero-configuration-schema.html +++ b/adaptors/packages/primero-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "url": "https://primero.org/some-org",
    "user": "admin",
    "password": "@super(!)Superpass",
    "basicAuth": "true"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "url": {
    "title": "URL",
    "type": "string",
    "description": "The Primero host url",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://primero.org/some-org"
    ]
    },
    "user": {
    "title": "User",
    "type": "string",
    "description": "The username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Superpass"
    ]
    },
    "basicAuth": {
    "title": "Use Basic Auth",
    "type": "boolean",
    "examples": [
    true
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "url"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/primero-docs.html b/adaptors/packages/primero-docs.html index 9e184500a47..86a2c82f242 100644 --- a/adaptors/packages/primero-docs.html +++ b/adaptors/packages/primero-docs.html @@ -22,7 +22,7 @@ - + @@ -68,7 +68,7 @@ In this implementation, we first fetch the list of cases, then we check if the case exist before choosing the right operation to do.

    Kind: global function
    Access: public

    ParamTypeDescription
    paramsobjectan object with an externalIds and some case data.
    callbackfunction(Optional) Callback function

    Example (Upsert case for a specific case id)

    upsertCase({
    externalIds: ["case_id"],
    data: state => ({
    age: 20,
    sex: "male",
    name: "Alex",
    status: "open",
    case_id: "6aeaa66a-5a92-4ff5-bf7a-e59cde07eaaz",
    }),
    });

    - + \ No newline at end of file diff --git a/adaptors/packages/primero-readme.html b/adaptors/packages/primero-readme.html index 90e7ce8a433..253c86f498b 100644 --- a/adaptors/packages/primero-readme.html +++ b/adaptors/packages/primero-readme.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ in our Microsoft Dynamics, Github, or Google Sheets adaptors, but we'll need to await final doucmentation for Primero's v2 API before making changes.

    Azure Active Directory B2C

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/progres-changelog.html b/adaptors/packages/progres-changelog.html index 408e6b62a97..58727862f37 100644 --- a/adaptors/packages/progres-changelog.html +++ b/adaptors/packages/progres-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.2.5

    Patch Changes

    1.2.4

    Patch Changes

    1.2.3

    Patch Changes

    1.2.2

    Patch Changes

    1.2.1

    Patch Changes

    1.2.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/progres-configuration-schema.html b/adaptors/packages/progres-configuration-schema.html index 63d0d716272..16415960e72 100644 --- a/adaptors/packages/progres-configuration-schema.html +++ b/adaptors/packages/progres-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "url": "https://endpoint/To/DTP",
    "key": "-----BEGIN PRIVATE KEY-----SOMETYPEOFPRIVATEVALUE-----END PRIVATE KEY-----",
    "cert": "-----BEGIN CERTIFICATE-----SOMETYPEOFVALUE-----END CERTIFICATE-----",
    "token": "[REDACTED]"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "url": {
    "title": "URL",
    "type": "string",
    "description": "The Progres URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://endpoint/To/DTP"
    ]
    },
    "key": {
    "title": "Private Key",
    "type": "string",
    "description": "Your Progres private key",
    "minLength": 1,
    "examples": [
    "-----BEGIN PRIVATE KEY-----SOMETYPEOFPRIVATEVALUE-----END PRIVATE KEY-----"
    ]
    },
    "cert": {
    "title": "Certificate",
    "type": "string",
    "description": "Your Progres certificate",
    "minLength": 1,
    "examples": [
    "-----BEGIN CERTIFICATE-----SOMETYPEOFVALUE-----END CERTIFICATE-----"
    ]
    },
    "token": {
    "title": "Token",
    "type": "string",
    "description": "Your Progres token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "[REDACTED]"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "url",
    "key",
    "cert",
    "token"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/progres-docs.html b/adaptors/packages/progres-docs.html index 0831c850090..a4b5e3251ba 100644 --- a/adaptors/packages/progres-docs.html +++ b/adaptors/packages/progres-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@
    Skip to main content

    progres@1.3.8

    postData

    postData(params, callback) ⇒ Operation Make a POST request with a certificate

    Kind: global function
    Access: public

    ParamTypeDescription
    paramsobjectUrl, Headers and Body parameters
    callbackfunction(Optional) A callback function

    Example

    postData({
    url: urlDTP,
    body: obj,
    headers: {
    'Ocp-Apim-Subscription-Key': configuration['Ocp-Apim-Subscription-Key'],
    },
    agentOptions: {
    key,
    cert,
    },
    }, callback)(state)

    - + \ No newline at end of file diff --git a/adaptors/packages/progres-readme.html b/adaptors/packages/progres-readme.html index cc7effa7abe..cda483b6dc2 100644 --- a/adaptors/packages/progres-readme.html +++ b/adaptors/packages/progres-readme.html @@ -22,7 +22,7 @@ - + @@ -37,7 +37,7 @@ configuration-schema definition.

    Posting data to an endpoint with SSL cert authentication

    postData({
    url: urlDTP,
    body: { a: 1 },
    headers: {
    'Subscription-Key': configuration['token'],
    },
    agentOptions: {
    key,
    cert,
    },
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/rapidpro-changelog.html b/adaptors/packages/rapidpro-changelog.html index 928a65d31f6..d3f5df8f315 100644 --- a/adaptors/packages/rapidpro-changelog.html +++ b/adaptors/packages/rapidpro-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.5.6

    Patch Changes

    0.5.5

    Patch Changes

    0.5.4

    Patch Changes

    0.5.3

    Patch Changes

    0.5.2

    Patch Changes

    0.5.1

    Patch Changes

    0.5.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/rapidpro-configuration-schema.html b/adaptors/packages/rapidpro-configuration-schema.html index 9159d5050de..4403a5c4a2f 100644 --- a/adaptors/packages/rapidpro-configuration-schema.html +++ b/adaptors/packages/rapidpro-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "host": "https://app.rapidpro.io/",
    "token": "#Super-sSCrecrete-token",
    "apiVersion": "v2"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "host": {
    "title": "Host",
    "type": "string",
    "default": "https://app.rapidpro.io/",
    "description": "instance host URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://app.rapidpro.io/"
    ]
    },
    "token": {
    "title": "Token",
    "type": "string",
    "description": "instance access token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "#Super-sSCrecrete-token"
    ]
    },
    "apiVersion": {
    "title": "API Version",
    "type": "string",
    "description": "API version to use. Leave this empty to use the default v2",
    "minLength": 1,
    "examples": [
    "v2"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "host",
    "token"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/rapidpro-docs.html b/adaptors/packages/rapidpro-docs.html index 6b18a89f882..207ca91f1fb 100644 --- a/adaptors/packages/rapidpro-docs.html +++ b/adaptors/packages/rapidpro-docs.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ Access: public

    ParamTypeDescription
    paramsobjectdata to create the new resource
    callbackfunction(Optional) callback function

    Example

    startFlow({
    flow: "f5901b62-ba76-4003-9c62-72fdacc1b7b7",
    restart_participants: false,
    contacts: ["a052b00c-15b3-48e6-9771-edbaa277a353"]
    });

    upsertContact

    upsertContact(params, callback) ⇒ Operation Upserts a contact to RapidPro by URN

    Kind: global function
    Access: public

    ParamTypeDescription
    paramsobjectdata to upsert a contact
    callbackfunction(Optional) callback function

    Example

    upsertContact({
    name: "Mamadou",
    language: "ENG",
    urns: ["tel:+250788123123"]
    });

    - + \ No newline at end of file diff --git a/adaptors/packages/rapidpro-readme.html b/adaptors/packages/rapidpro-readme.html index b2cc5b43ec6..2cff5c51657 100644 --- a/adaptors/packages/rapidpro-readme.html +++ b/adaptors/packages/rapidpro-readme.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ definition.

    sample job expression using operation

    sendBroadcast({
    "text": "Hello friends.",
    "urns": [],
    "contacts": [],
    "groups", [],
    });

    Key helper functions

    sendBroadcast(...) to send broadcast message to multiple contacts

    sendBroadcast({
    text: 'Hello world',
    urns: ['twitter:sirmixalot'],
    contacts: ['a052b00c-15b3-48e6-9771-edbaa277a353'],
    });

    startFlow(...) to trigger an automation flow in RapidPro

    startFlow({
    flow: 'f5901b62-ba76-4003-9c62-72fdacc1b7b7',
    restart_participants: false,
    contacts: ['a052b00c-15b3-48e6-9771-edbaa277a353'],
    });

    upsertContact(...) to update/insert a Contact (and check if exists using external identifiers)

    upsertContact({
    name: 'Mamadou',
    language: 'ENG',
    urns: ['tel:+250788123123'],
    });

    addContact(...) to insert a Contact

    addContact({
    name: 'Mamadou',
    language: 'ENG',
    urns: ['tel:+250788123123'],
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/resourcemap-changelog.html b/adaptors/packages/resourcemap-changelog.html index cffa256e8cf..f7c554d382e 100644 --- a/adaptors/packages/resourcemap-changelog.html +++ b/adaptors/packages/resourcemap-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.2.3

    Patch Changes

    0.2.2

    Patch Changes

    0.2.1

    Patch Changes

    0.2.0

    Minor Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/resourcemap-configuration-schema.html b/adaptors/packages/resourcemap-configuration-schema.html index 17a42fa94af..e2452c0fc7c 100644 --- a/adaptors/packages/resourcemap-configuration-schema.html +++ b/adaptors/packages/resourcemap-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "baseUrl": "http://some-site-of-yours.com:8080",
    "username": "admin",
    "password": "@super(!)Secret"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "baseUrl": {
    "title": "Base URL",
    "type": "string",
    "default": "http://some-site-of-yours.com:8080",
    "description": "ResourceMap base URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "http://some-site-of-yours.com:8080"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Your ResourceMap username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Your ResourceMap password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secret"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "baseUrl"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/resourcemap-docs.html b/adaptors/packages/resourcemap-docs.html index ac2ce8d3de6..c760e159614 100644 --- a/adaptors/packages/resourcemap-docs.html +++ b/adaptors/packages/resourcemap-docs.html @@ -22,14 +22,14 @@ - +
    Skip to main content
    - + \ No newline at end of file diff --git a/adaptors/packages/resourcemap-readme.html b/adaptors/packages/resourcemap-readme.html index 21a8af5b5c9..5d271588a58 100644 --- a/adaptors/packages/resourcemap-readme.html +++ b/adaptors/packages/resourcemap-readme.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ configuration-schema definition.

    Expressions

    submitSite(collectionId, fields)

    submitSite(
    303,
    fields(
    field('name', dataValue('sampleText')),
    field('lat', 48.86),
    field('lon', 2.35),
    field('properties', function (state) {
    return {
    Comment: state.data.sampleText,
    phone: '85512345678',
    };
    })
    )
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/salesforce-changelog.html b/adaptors/packages/salesforce-changelog.html index 1096981141b..d02a758d5d2 100644 --- a/adaptors/packages/salesforce-changelog.html +++ b/adaptors/packages/salesforce-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    3.0.7

    Patch Changes

    3.0.6

    Patch Changes

    3.0.5

    Patch Changes

    3.0.4

    Patch Changes

    3.0.3

    Patch Changes

    3.0.2

    Patch Changes

    3.0.1

    Patch Changes

    3.0.0

    Major Changes

    2.12.3

    Patch Changes

    2.12.2

    Patch Changes

    2.12.1

    Patch Changes

    2.12.0

    Minor Changes

    Patch Changes

    2.11.1

    Patch Changes

    2.11.0

    Minor Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/salesforce-configuration-schema.html b/adaptors/packages/salesforce-configuration-schema.html index da0234b322c..53b1659a522 100644 --- a/adaptors/packages/salesforce-configuration-schema.html +++ b/adaptors/packages/salesforce-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "loginUrl": "https://somesalesforcelogin.url",
    "username": "someusername",
    "password": "@super(!)SecretPass",
    "securityToken": "salesforcesecuritytoken",
    "apiVersion": "59.0"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "loginUrl": {
    "title": "Login URL",
    "type": "string",
    "description": "The Salesforce instance login URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://somesalesforcelogin.url"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in the Salesforce instance",
    "minLength": 1,
    "examples": [
    "someusername"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in the Salesforce instance",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)SecretPass"
    ]
    },
    "securityToken": {
    "title": "Security Token",
    "type": "string",
    "description": "The security token to access the Salesforce instance",
    "minLength": 1,
    "examples": [
    "salesforcesecuritytoken"
    ]
    },
    "apiVersion": {
    "title": "API Version",
    "type": "string",
    "pattern": "^[0-9]{2}\\.[0-9]$",
    "placeholder": "52.0",
    "description": "Salesforce API Version",
    "minLength": 1,
    "examples": [
    "59.0"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "loginUrl",
    "username",
    "password",
    "securityToken"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/salesforce-docs.html b/adaptors/packages/salesforce-docs.html index 94bf8c7c5e0..60bb8297f92 100644 --- a/adaptors/packages/salesforce-docs.html +++ b/adaptors/packages/salesforce-docs.html @@ -22,7 +22,7 @@ - + @@ -71,7 +71,7 @@ Magic: attrs - $.children[?(@.name=="{{args.sObject}}")].children[?(!@.meta.externalId)]

    ParamTypeDescription
    sObjectStringAPI name of the sObject.
    externalIdStringID.
    attrsObjectField attributes for the new object.

    Example

    upsert('obj_name', 'ext_id', {
    attr1: "foo",
    attr2: "bar"
    })

    upsertIf

    upsertIf(logical, sObject, externalId, attrs) ⇒ Operation Upsert if conditions are met.

    Kind: global function
    Access: public

    ParamTypeDescription
    logicalbooleana logical statement that will be evaluated.
    sObjectStringAPI name of the sObject.
    externalIdStringID.
    attrsObjectField attributes for the new object.

    Example

    upsertIf(true, 'obj_name', 'ext_id', {
    attr1: "foo",
    attr2: "bar"
    })

    - + \ No newline at end of file diff --git a/adaptors/packages/salesforce-readme.html b/adaptors/packages/salesforce-readme.html index f923bdd77e1..e8da82432d7 100644 --- a/adaptors/packages/salesforce-readme.html +++ b/adaptors/packages/salesforce-readme.html @@ -22,7 +22,7 @@ - + @@ -38,8 +38,8 @@ needed to be performed.

    An uncompiled expression has no knowledge of the internals of the adaptor, credentials or runtime environment.

    It's the responsibility of the build process to provide a wrapper that will inject the functions in.

    For example:

    describe('vera__Test_Event__c'),
    create('vera__Test_Event__c', {
    vera__Test_Event_Name_Unique__c: 'hello from jsforce',
    }),
    create('vera__Boat__c', {
    Name: 'Catatafish redux!',
    vera__Test_Event__c: reference(0),
    });

    Development

    Clone the adaptors monorepo. Follow the -Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    ## Other

    Create SOAP session

    curl https://test.salesforce.com/services/Soap/u/47.0 -H "Content-Type: text/xml; charset=UTF-8" -H "SOAPAction: login" -d @tmp/login.txt | xmllint --format -

    Close jobs

    curl
    https://openfn.my.salesforce.com/services/async/47.0/job/some_id -H 'X-SFDC-Session: abc123sessionID456xyz' -H "Content-Type: application/xml; charset=UTF-8" -d @tmp/close_job.txt | xmllint --format -
    - +Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    ## Other

    Create SOAP session

    curl https://test.salesforce.com/services/Soap/u/47.0 -H "Content-Type: text/xml; charset=UTF-8" -H "SOAPAction: login" -d @tmp/login.txt | xmllint --format -

    Close jobs

    curl
    https://openfn.my.salesforce.com/services/async/47.0/job/some_id -H 'X-SFDC-Session: abc123sessionID456xyz' -H "Content-Type: application/xml; charset=UTF-8" -d @tmp/close_job.txt | xmllint --format -
    + \ No newline at end of file diff --git a/adaptors/packages/sftp-changelog.html b/adaptors/packages/sftp-changelog.html index 7784628dc45..819344a99dc 100644 --- a/adaptors/packages/sftp-changelog.html +++ b/adaptors/packages/sftp-changelog.html @@ -3,7 +3,7 @@ -sftp changelog | OpenFn/docs +sftp changelog | OpenFn/docs @@ -22,17 +22,17 @@ - +
    -
    Skip to main content

    Changelog for the sftp adaptor

    @openfn/language-sftp

    1.0.1

    Patch Changes

    • 771c814: - Properly disconnect on error
      • Improve operation logs

    1.0.0

    Major Changes

    • e52ba66: add filter option in list() function

    0.8.8

    Patch Changes

    0.8.7

    Patch Changes

    0.8.6

    Patch Changes

    0.8.5

    Patch Changes

    0.8.4

    Patch Changes

    0.8.3

    Patch Changes

    0.8.2

    Patch Changes

    • d2c980e: Use parseCsv from language-common
    • c5d3ce1: improve connection handling
    • Updated dependencies [111807f]

    0.8.1

    Patch Changes

    0.8.0

    Minor Changes

    - +be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.7.3

    Patch Changes

    • 432dd0a: fix sftp connection wqautoclose

    0.7.2

    Patch Changes

    • 205b806: remove asObjects key before parsing

    0.7.1

    Patch Changes

    • 827c627: error handling

    0.7.0

    Minor Changes

    • fa58216: Add csvtojson convertion option

    0.6.9

    Patch Changes

    0.6.8

    Patch Changes

    0.6.7

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.6.6

    Patch Changes

    • f2aed32: add examples

    0.6.5

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    0.6.4

    Patch Changes

    0.6.3

    Patch Changes

    • 8566b26: Fix typings
    • b3d45ff: Fix CJS export of npm package.
    • 4126a62: Fix built bundle
    • ecf5d30: remove sinon since it was not being used
    • Updated dependencies [8566b26]
    • Updated dependencies [b3d45ff]
    • Updated dependencies [b5eb665]
    • Updated dependencies [ecf5d30]

    0.6.2

    Patch Changes

    • e04aa28: Rename credential-schema to configuration-schema, update descriptions

    0.6.1

    Patch Changes

    • 28dfbfa: add todo, fix build pack

    0.6.0

    Minor Changes

    • f294a62: Added credential-schema.json for new ui

    0.5.0

    Minor Changes

    • 2c04894: added sftp package
    + \ No newline at end of file diff --git a/adaptors/packages/sftp-configuration-schema.html b/adaptors/packages/sftp-configuration-schema.html index c7d527999ee..ddb73fa0b41 100644 --- a/adaptors/packages/sftp-configuration-schema.html +++ b/adaptors/packages/sftp-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -32,8 +32,8 @@ using the CLI, you can set up your own state.configuration by using the sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "host": "191.173.128.88",
    "port": "22",
    "username": "admin",
    "password": "@some(!)Strongpassword"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and -notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "host": {
    "title": "Host URL",
    "type": "string",
    "description": "The SFTP server host url or ip address",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "191.173.128.88"
    ]
    },
    "port": {
    "title": "Port",
    "type": "integer",
    "default": 21,
    "description": "The SFTP server port",
    "minLength": 1,
    "examples": [
    22
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)Strongpassword"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "host"
    ]
    }
    - +notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "host": {
    "title": "Host URL",
    "type": "string",
    "description": "The SFTP server host url or ip address",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "191.173.128.88"
    ]
    },
    "port": {
    "title": "Port",
    "type": "integer",
    "default": 21,
    "description": "The SFTP server port",
    "minLength": 1,
    "examples": [
    22
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)Strongpassword"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "host"
    ]
    }
    + \ No newline at end of file diff --git a/adaptors/packages/sftp-docs.html b/adaptors/packages/sftp-docs.html index 29199dfea98..26befd619ff 100644 --- a/adaptors/packages/sftp-docs.html +++ b/adaptors/packages/sftp-docs.html @@ -3,7 +3,7 @@ -sftp@1.0.1 | OpenFn/docs +sftp@1.0.2 | OpenFn/docs @@ -22,12 +22,12 @@ - +
    -
    Skip to main content

    sftp@1.0.1

    Functions

    getCSV(filePath, [parsingOptions])
    getJSON(filePath, encoding)
    list(dirPath, filter, [callback])
    normalizeCSVarray(options, callback)
    putCSV(localFilePath, remoteFilePath, parsingOptions)

    getCSV

    getCSV(filePath, [parsingOptions]) ⇒ Operation +

    sftp@1.0.2

    Functions

    getCSV(filePath, [parsingOptions])
    getJSON(filePath, encoding)
    list(dirPath, filter, [callback])
    normalizeCSVarray(options, callback)
    putCSV(localFilePath, remoteFilePath, parsingOptions)

    getCSV

    getCSV(filePath, [parsingOptions]) ⇒ Operation Get a CSV and return a JSON array of strings for each item separated by the delimiter

    Kind: global function
    Access: public

    ParamTypeDescription
    filePathstringPath to resource
    [parsingOptions]ObjectOptional. parsingOptions Parsing options which can be passed to convert csv to json See more on csvtojson docs

    Example

    getCSV(
    '/some/path/to_file.csv',
    {delimiter: ";", flatKeys: true }
    );

    getJSON

    getJSON(filePath, encoding) ⇒ Operation Fetch a json file from an FTP server

    Kind: global function
    @@ -38,7 +38,7 @@ Access: public

    ParamTypeDescription
    optionsoptionsOptions passed to csvtojson parser
    callbackcallbackOptions passed to csvtojson parser

    Example

    normalizeCSVarray({ delimiter: ';', noheader: true });

    putCSV

    putCSV(localFilePath, remoteFilePath, parsingOptions) ⇒ Operation Convert JSON to CSV and upload to an FTP server

    Kind: global function
    Access: public

    ParamTypeDescription
    localFilePathstringData source for data to copy to the remote server.
    remoteFilePathstringPath to the remote file to be created on the server.
    parsingOptionsobjectOptions which can be passed to adjust the read and write stream used in sending the data to the remote server

    Example

    putCSV(
    '/some/path/to_local_file.csv',
    '/some/path/to_remove_file.csv',
    { delimiter: ';', noheader: true }
    );

    - + \ No newline at end of file diff --git a/adaptors/packages/sftp-readme.html b/adaptors/packages/sftp-readme.html index c963fb17a36..d302d03931c 100644 --- a/adaptors/packages/sftp-readme.html +++ b/adaptors/packages/sftp-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ definition.

    List the content of a directory

    alterState(state => {
    return list('/path/To/Directory')(state).then(response => {
    console.log(`There are ${response.data.length} files.`);
    return response;
    });
    });

    sample getCSV expression

    getCSV('path/to/file.csv', 'utf8', {
    quote: 'off',
    delimiter: ';',
    noheader: true,
    filter: {
    type: 'startsWith',
    key: 'field1',
    value: 'JO',
    },
    });

    A more complex example that breaks up the CSV file into multiple payloads for quicker processing.

    fn(state => {
    return list('/')(state).then(state => {
    const targetNames = [
    'exportContacts', //example fileName
    ];
    console.log(`Fetching files: ${targetNames}`);
    const files = state.data
    .filter(file => file.name.split('.')[1] === 'csv')
    .filter(file =>
    targetNames.some(targetName =>
    file.name.toLowerCase().includes(targetName)
    )
    );

    if (files.length === 0) console.log('No new CSV files found.');
    return { ...state, data: {}, files };
    });
    });

    each(
    '$.files[*]',
    fn(state => {
    const { configuration, data } = state;

    return getCSV(`/${data.name}`)(state).then(async state => {
    const headers = state.data
    .shift()
    .split(';')
    .map(h => (h = h.replace(/"/g, '')));

    function toObject(item) {
    const values = item.split(';');

    return Object.fromEntries(
    headers.map((k, i) => {
    return values[i]
    ? [k, values[i].replace(/"/g, '')]
    : [k, values[i]];
    })
    );
    }

    let countInbox = 0;

    //to post CSV data as individual Messages to OpenFn Inbox
    const postToInbox = async data => {
    countInbox++;

    console.log(`Sending request ${countInbox} to inbox`);

    await new Promise(resolve => setTimeout(resolve, 200));

    await http.post({
    url: configuration.openfnInboxUrl,
    data: data,
    maxContentLength: Infinity,
    maxBodyLength: Infinity,
    })(state);
    };

    //To split up into multiple, smaller payloads before send to OpenFn Inbox
    const chunkSize = 500;

    console.log(
    state.data.length,
    'rows will be sent in',
    Math.ceil(state.data.length / chunkSize),
    'requests of',
    chunkSize,
    'rows each.'
    );

    while (state.data.length > 0) {
    console.log('data.length', state.data.length);
    await postToInbox({
    fileName: data.name,
    fileType: data.name.split('-')[0],
    uploadDate: new Date(data.modifyTime).toISOString(),
    json: state.data.splice(0, chunkSize).map(toObject),
    });
    }

    return { configuration, references: [], data: {} };
    });
    })
    );

    sample putCSV expression

    This function converts JSON to CSV and post to a server

    putCSV('/some/path/to_file.csv', 'utf8', { delimiter: ';', noheader: true });

    Get JSON from FTP server

    getJSON('path/to/file.json', 'utf8');

    Custom request to an http endpoint

    This adaptor exports http from language-common. Here, we outline the usage in order to make custom requests to an endpoint. It returns a promise

    alterState(state => {
    return http
    .post({ url: 'yourURL', data: { name: 'Mamadou' } })(state)
    .then(response => {
    // do something with response;
    return response;
    });
    });

    Development

    Clone the repo, run pnpm install.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To build the docs for this repo, pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/smpp-changelog.html b/adaptors/packages/smpp-changelog.html index 53837769fa7..fd71cc50b14 100644 --- a/adaptors/packages/smpp-changelog.html +++ b/adaptors/packages/smpp-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.2.3

    Patch Changes

    1.2.2

    Patch Changes

    1.2.1

    Patch Changes

    1.2.0

    Minor Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/smpp-configuration-schema.html b/adaptors/packages/smpp-configuration-schema.html index fd11038c740..66d4462222c 100644 --- a/adaptors/packages/smpp-configuration-schema.html +++ b/adaptors/packages/smpp-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "clientHost": "https://some-smpp.com:3000",
    "systemId": "some_smpp_client_name",
    "inboxId": "1c908151-8273-431c-b1d4-blah",
    "password": "@some(!)StrongPassword"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "clientHost": {
    "title": "Client host",
    "type": "string",
    "description": "Your SMPP client host URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://some-smpp.com:3000"
    ]
    },
    "systemId": {
    "title": "System ID",
    "type": "string",
    "description": "Your SMPP client name",
    "minLength": 1,
    "examples": [
    "some_smpp_client_name"
    ]
    },
    "inboxId": {
    "title": "Inbox ID",
    "type": "string",
    "description": "Your SMPP client inbox ID",
    "minLength": 1,
    "examples": [
    "1c908151-8273-431c-b1d4-blah"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Your SMPP client password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)StrongPassword"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "clientHost",
    "systemId",
    "inboxId",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/smpp-docs.html b/adaptors/packages/smpp-docs.html index 4b1d3ea48eb..b94dc13c85f 100644 --- a/adaptors/packages/smpp-docs.html +++ b/adaptors/packages/smpp-docs.html @@ -22,13 +22,13 @@ - +
    Skip to main content
    - + \ No newline at end of file diff --git a/adaptors/packages/smpp-readme.html b/adaptors/packages/smpp-readme.html index a7f6c781dea..3aa7b86003f 100644 --- a/adaptors/packages/smpp-readme.html +++ b/adaptors/packages/smpp-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    sample send expression

    send({
    text: dataValue('text'),
    smsId: dataValue('messageId'),
    recipient: dataValue('to'),
    sender: dataValue('from'),
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/surveycto-changelog.html b/adaptors/packages/surveycto-changelog.html index 969efc0af44..7d1d3eec134 100644 --- a/adaptors/packages/surveycto-changelog.html +++ b/adaptors/packages/surveycto-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.1.4

    Patch Changes

    1.1.3

    Patch Changes

    1.1.2

    Patch Changes

    1.1.1

    Patch Changes

    1.1.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/surveycto-configuration-schema.html b/adaptors/packages/surveycto-configuration-schema.html index 7836e8943d3..0cdbdfb385c 100644 --- a/adaptors/packages/surveycto-configuration-schema.html +++ b/adaptors/packages/surveycto-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "instanceName": "openfn_test",
    "username": "someusername",
    "password": "@some(%)!Password"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "instanceName": {
    "title": "Instance name",
    "type": "string",
    "description": "Your Surveycto instance name",
    "minLength": 1,
    "examples": [
    "openfn_test"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Your Surveycto instance username",
    "minLength": 1,
    "examples": [
    "someusername"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Your Surveycto instance password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(%)!Password"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "instanceName",
    "username",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/surveycto-docs.html b/adaptors/packages/surveycto-docs.html index 6753b303acb..537bde7cee3 100644 --- a/adaptors/packages/surveycto-docs.html +++ b/adaptors/packages/surveycto-docs.html @@ -22,14 +22,14 @@ - +
    Skip to main content
    - + \ No newline at end of file diff --git a/adaptors/packages/surveycto-readme.html b/adaptors/packages/surveycto-readme.html index 995a3060eb5..77d8b2351c2 100644 --- a/adaptors/packages/surveycto-readme.html +++ b/adaptors/packages/surveycto-readme.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ the job, subsequent runs will only fetch NEW submissions.

  • the postUrl is where the wide-format JSON representation of each form submission should be sent. Note that a formId key will be added to each form submission for later filtering/routing.

  • sample fetchSubmissions expression

    fetchSubmissions(
    // formId on SurveyCTO server
    'household_survey',
    // initialAfterDate: this will only be accessed if "lastSubmissionDate" is empty in your job_state".
    // After the initial run of the job, OpenFn will only pull new submissions from SurveyCTO.
    'Aug 29, 2016 4:44:26 PM',
    // postUrl is where you want to send the JSON submissions, appended with a new "formId" key
    'https://www.openfn.org/inbox/secret-inbox-uuid'
    );

    Development

    Clone the repo, run npm install.

    Run tests using npm run test or npm run test:watch

    Build the project using make.

    - + \ No newline at end of file diff --git a/adaptors/packages/telerivet-changelog.html b/adaptors/packages/telerivet-changelog.html index 4e16eac075a..c2260e003be 100644 --- a/adaptors/packages/telerivet-changelog.html +++ b/adaptors/packages/telerivet-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.1.4

    Patch Changes

    0.1.3

    Patch Changes

    0.1.2

    Patch Changes

    0.1.1

    Patch Changes

    0.1.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/telerivet-configuration-schema.html b/adaptors/packages/telerivet-configuration-schema.html index a703aee8473..88eaf619d7a 100644 --- a/adaptors/packages/telerivet-configuration-schema.html +++ b/adaptors/packages/telerivet-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "projectId": "telerivet_project_id",
    "apiKey": "telerivet_api_key"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "projectId": {
    "title": "Project ID",
    "type": "string",
    "description": "Your Telerivet project id",
    "minLength": 1,
    "examples": [
    "telerivet_project_id"
    ]
    },
    "apiKey": {
    "title": "API Key",
    "type": "string",
    "description": "Your Telerivet API Key",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "telerivet_api_key"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "projectId",
    "apiKey"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/telerivet-docs.html b/adaptors/packages/telerivet-docs.html index 09e93b17562..cc690409daa 100644 --- a/adaptors/packages/telerivet-docs.html +++ b/adaptors/packages/telerivet-docs.html @@ -22,14 +22,14 @@ - +
    Skip to main content
    - + \ No newline at end of file diff --git a/adaptors/packages/telerivet-readme.html b/adaptors/packages/telerivet-readme.html index 0e14119ed81..2034361ef1e 100644 --- a/adaptors/packages/telerivet-readme.html +++ b/adaptors/packages/telerivet-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Send message

    Current send expression:

    send(
    fields(
    field('to_number', dataValue('recipient_number')),
    field('content', dataValue('recipient_text')),
    // Lots of optional parameters...
    field('message_type', 'sms'),
    field('route_id', dataValue('some_route'))
    )
    );

    sendBulk messages - WIP

    Current sendBulk expression:

    send(fields(
    field("content", dataValue("recipient_text")),
    field("to_numbers", [
    "+14155550123",
    "+14255550234",
    "+16505550345"
    ]
    // Lots of optional parameters...
    field("message_type", "sms"),
    field("route_id", dataValue("some_route"))
    ))

    Note that "recipient_text" may be a concatenation like this:

    field('content', function (state) {
    return dataValue('salutation')(state).concat(
    '. ',
    dataValue('last_name')(state),
    ', )'
    );
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/template-changelog.html b/adaptors/packages/template-changelog.html index 0930b2a3294..33bcc5cb745 100644 --- a/adaptors/packages/template-changelog.html +++ b/adaptors/packages/template-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    2.0.0

    Major Changes

    Minor Changes

    1.7.8

    Patch Changes

    1.7.7

    Patch Changes

    1.7.6

    Patch Changes

    1.7.5

    Patch Changes

    1.7.4

    Patch Changes

    1.7.3

    Patch Changes

    1.7.2

    Patch Changes

    1.7.1

    Patch Changes

    1.7.0

    Minor Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/template-configuration-schema.html b/adaptors/packages/template-configuration-schema.html index 231be177001..5fc1ea60428 100644 --- a/adaptors/packages/template-configuration-schema.html +++ b/adaptors/packages/template-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "baseUrl": "https://example.com",
    "username": "test@openfn.org",
    "password": "@some(!)Str0ngp4ss0w0rd"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "baseUrl": {
    "title": "Base URL",
    "anyOf": [
    {
    "type": "string"
    },
    {
    "type": "null"
    }
    ],
    "description": "The base URL (http://www.example.com)",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://example.com"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Username",
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "examples": [
    "@some(!)Str0ngp4ss0w0rd"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "password",
    "username"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/template-docs.html b/adaptors/packages/template-docs.html index a37b407bdde..14c55e0d398 100644 --- a/adaptors/packages/template-docs.html +++ b/adaptors/packages/template-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@
    Skip to main content

    template@3.0.1

    create

    create(resource, data, callback) ⇒ Operation Create some resource in some system

    Kind: global function
    Access: public

    ParamTypeDescription
    resourcestringThe type of entity that will be created
    dataobjectThe data to create the new resource
    callbackfunctionAn optional callback function

    Example

    create("patient", {"name": "Bukayo"})

    - + \ No newline at end of file diff --git a/adaptors/packages/template-readme.html b/adaptors/packages/template-readme.html index d00d43dc13a..67e746282ff 100644 --- a/adaptors/packages/template-readme.html +++ b/adaptors/packages/template-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema for required and optional configuration properties.

    A example expression using the create function

    create('patient', { name: 'Bukayo' });

    Development

    Clone the adaptors monorepo. Follow the "Getting Started" guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To build only the docs run pnpm build docs.

    - + \ No newline at end of file diff --git a/adaptors/packages/twilio-changelog.html b/adaptors/packages/twilio-changelog.html index 5954f486a24..7ed791cf819 100644 --- a/adaptors/packages/twilio-changelog.html +++ b/adaptors/packages/twilio-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.4

    Patch Changes

    0.3.3

    Patch Changes

    0.3.2

    Patch Changes

    0.3.1

    Patch Changes

    0.3.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/twilio-configuration-schema.html b/adaptors/packages/twilio-configuration-schema.html index d17d065d68c..8d942390ce8 100644 --- a/adaptors/packages/twilio-configuration-schema.html +++ b/adaptors/packages/twilio-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "accountSid": "account_id",
    "authToken": "evenMoreSecret"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "accountSid": {
    "title": "Account ID",
    "type": "string",
    "description": "Your Twilio account id",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "account_id"
    ]
    },
    "authToken": {
    "title": "Auth Token",
    "type": "string",
    "description": "Your Twilio auth token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "evenMoreSecret"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "accountSid",
    "authToken"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/twilio-docs.html b/adaptors/packages/twilio-docs.html index 153c779f198..f2e8de13d9d 100644 --- a/adaptors/packages/twilio-docs.html +++ b/adaptors/packages/twilio-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@
    Skip to main content

    twilio@0.4.1

    sendSMS

    sendSMS(params) ⇒ Operation Sends an SMS message to a specific phone number

    Kind: global function
    Access: public

    ParamTypeDescription
    paramsObjectan object containing 'body', 'from', and 'to' keys.

    Example

    sendSMS({
    body: dataValue('sampleText'),
    from: dataValue('myFromNumber'),
    to: dataValue('ukMobile'),
    });

    - + \ No newline at end of file diff --git a/adaptors/packages/twilio-readme.html b/adaptors/packages/twilio-readme.html index 251f0431af5..3a9b6b1c5d7 100644 --- a/adaptors/packages/twilio-readme.html +++ b/adaptors/packages/twilio-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    sendSMS

    sample expression, sending an sms

    sendSMS({
    body: dataValue('text'),
    from: '+15005550006',
    to: dataValue('recipient'),
    });

    local usage

    ~/devtools/core/bin/core execute \
    -l ~/devtools/adaptors/language-twilio \
    -s ./tmp/state.json \
    -o ./tmp/output.json \
    -e ./tmp/expression.js

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/vtiger-changelog.html b/adaptors/packages/vtiger-changelog.html index 51f754379f8..5b30dd840cc 100644 --- a/adaptors/packages/vtiger-changelog.html +++ b/adaptors/packages/vtiger-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.1.3

    Patch Changes

    1.1.2

    Patch Changes

    1.1.1

    Patch Changes

    1.1.0

    Minor Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/vtiger-configuration-schema.html b/adaptors/packages/vtiger-configuration-schema.html index ffbba03003d..d60c8a65a7b 100644 --- a/adaptors/packages/vtiger-configuration-schema.html +++ b/adaptors/packages/vtiger-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "hostUrl": "https://openfunction.od2.vtiger.com",
    "username": "test@openfn.org",
    "accessToken": "@some()!veryHugeToke"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "hostUrl": {
    "title": "Host URL",
    "type": "string",
    "description": "VTiger instance host URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://openfunction.od2.vtiger.com"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "VTiger instance username",
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "accessToken": {
    "title": "Access Token",
    "type": "string",
    "description": "VTiger instance access token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some()!veryHugeToke"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "hostUrl",
    "username",
    "accessToken"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/vtiger-docs.html b/adaptors/packages/vtiger-docs.html index ea1464cba42..b0573f3c4aa 100644 --- a/adaptors/packages/vtiger-docs.html +++ b/adaptors/packages/vtiger-docs.html @@ -22,13 +22,13 @@ - +
    Skip to main content
    - + \ No newline at end of file diff --git a/adaptors/packages/vtiger-readme.html b/adaptors/packages/vtiger-readme.html index 94dde1f35cd..684f8c7f7d5 100644 --- a/adaptors/packages/vtiger-readme.html +++ b/adaptors/packages/vtiger-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    sample listTypes expression

    listTypes();

    sample postElement expression

    postElement({
    operation: "create"
    elementType: "leads",
    element: {
    "name": dataValue("name")(state),
    "surname": dataValue("surname")(state),
    "email": dataValue("email")(state)
    }
    });


    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/packages/zoho-changelog.html b/adaptors/packages/zoho-changelog.html index edc6b9928cb..c428ed46222 100644 --- a/adaptors/packages/zoho-changelog.html +++ b/adaptors/packages/zoho-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.2.3

    Patch Changes

    0.2.2

    Patch Changes

    0.2.1

    Patch Changes

    0.2.0

    Minor Changes

    Patch Changes

    - + \ No newline at end of file diff --git a/adaptors/packages/zoho-configuration-schema.html b/adaptors/packages/zoho-configuration-schema.html index 80dcf992eae..34cd169647e 100644 --- a/adaptors/packages/zoho-configuration-schema.html +++ b/adaptors/packages/zoho-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "account": "yourzohoaccount",
    "authToken": "secreauthtoken",
    "apiVersion": "v2"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "account": {
    "title": "Account",
    "type": "string",
    "description": "Your Zoho account",
    "minLength": 1,
    "examples": [
    "yourzohoaccount"
    ]
    },
    "authToken": {
    "title": "Auth Token",
    "type": "string",
    "description": "Your Zoho authentication token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "secreauthtoken"
    ]
    },
    "apiVersion": {
    "title": "API Version",
    "type": "string",
    "default": "v2",
    "enum": [
    "v1",
    "v2"
    ],
    "description": "Zoho API version",
    "minLength": 1,
    "examples": [
    "v2",
    "v1"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "account",
    "authToken",
    "apiVersion"
    ]
    }
    - + \ No newline at end of file diff --git a/adaptors/packages/zoho-docs.html b/adaptors/packages/zoho-docs.html index 2f2cb830e96..6bfc6a8690e 100644 --- a/adaptors/packages/zoho-docs.html +++ b/adaptors/packages/zoho-docs.html @@ -22,14 +22,14 @@ - +
    Skip to main content

    zoho@0.3.1

    addRow

    addRow(db, table, rowData) ⇒ Operation To add a row data to a database table

    Kind: global function

    ParamTypeDescription
    dbstringDatabase
    tablestringDatabase table
    rowDataobjectrow data to be added into the database

    Example

    addRow(
    'testing_openfn',
    'Customers',
    fields(field('Subject', dataValue('formId')), field('Status', 'Closed'))
    );

    - + \ No newline at end of file diff --git a/adaptors/packages/zoho-readme.html b/adaptors/packages/zoho-readme.html index c8e3db512e4..8eba95306aa 100644 --- a/adaptors/packages/zoho-readme.html +++ b/adaptors/packages/zoho-readme.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ following addRow function.

    addRow(
    'testing_openfn',
    'Customers',
    fields(field('Subject', dataValue('formId')), field('Status', 'Closed'))
    );

    updateRow

    Coming soon. Want to help? https://zohoreportsapi.wiki.zoho.com/Updating-Data.html

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/adaptors/postgresql.html b/adaptors/postgresql.html index 869df5a58fe..16cba8a8453 100644 --- a/adaptors/postgresql.html +++ b/adaptors/postgresql.html @@ -22,7 +22,7 @@ - + @@ -57,7 +57,7 @@ PostgreSQL adaptor.

    Implementation Examples

    1. Wildlife Conservation Society Kobo < > Database: https://github.com/OpenFn/consosci
    2. Cambodia Primero < > ONA Database: https://github.com/OpenFn/primero-ona-dashboard
    - + \ No newline at end of file diff --git a/adaptors/powerbi.html b/adaptors/powerbi.html index e9f9906ed83..e4f9d5e6089 100644 --- a/adaptors/powerbi.html +++ b/adaptors/powerbi.html @@ -22,7 +22,7 @@ - + @@ -40,7 +40,7 @@ structured database from it using MySQL. Once the structured database is established, OpenFn assists the iNGO with connecting this data to Power BI.

    Refer to the diagram below for a visualization of the data flow cited in the above use case.

    Tableau Data Flow Visualization

    - + \ No newline at end of file diff --git a/adaptors/primero.html b/adaptors/primero.html index 035ddbf08e8..e28e1becf97 100644 --- a/adaptors/primero.html +++ b/adaptors/primero.html @@ -22,7 +22,7 @@ - + @@ -63,7 +63,7 @@ https://github.com/OpenFn/primero-ona-dashboard/
  • Gambella: UNICEF Primero < > UNHCR Progres: https://github.com/OpenFn/primero-progres
  • Thailand: UNICEF Primero < > MoPH HIS: https://github.com/OpenFn/primero-thailand
  • - + \ No newline at end of file diff --git a/adaptors/salesforce.html b/adaptors/salesforce.html index 6041e8e499e..df601ed36ee 100644 --- a/adaptors/salesforce.html +++ b/adaptors/salesforce.html @@ -22,7 +22,7 @@ - + @@ -139,7 +139,7 @@ with a range of helper functions for common CRUD & upsert operations, and for accessing the Salesforce bulk API.

    Example Implementations

    - + \ No newline at end of file diff --git a/adaptors/surveycto.html b/adaptors/surveycto.html index 6d8e32d7e90..284cbf0e607 100644 --- a/adaptors/surveycto.html +++ b/adaptors/surveycto.html @@ -22,7 +22,7 @@ - + @@ -39,7 +39,7 @@ Configure option for that form, and then click Add Webhook in the panel that appears.

    Periodic

    In order to fetch data from SurveyCTO periodically, you can use language-surveycto:

    fetchSubmissions(
    'form_id', // the form id
    'Sep 1, 2016 3:56:02 PM', // the initial "after" date
    // after the first run, OpenFn will only fetch new submissions
    'https://www.openfn.org/inbox/something-secret' // the inbox to post form data to.
    );

    Every time this job runs it will only fetch new data, by default.

    - + \ No newline at end of file diff --git a/adaptors/tableau.html b/adaptors/tableau.html index 304e85c554c..72828f92925 100644 --- a/adaptors/tableau.html +++ b/adaptors/tableau.html @@ -22,7 +22,7 @@ - + @@ -41,7 +41,7 @@ structured database from it using MySQL. Once the structured database is established, OpenFn assists the iNGO with connecting this data to Tableau.

    Refer to the diagram below for a visualization of the data flow cited in the above use case.

    Tableau Data Flow Visualization

    - + \ No newline at end of file diff --git a/articles.html b/articles.html index a6eae748ecd..e1aa83aa933 100644 --- a/articles.html +++ b/articles.html @@ -22,7 +22,7 @@ - + @@ -73,7 +73,7 @@ someone else’s servers (SaaS), or on her organization’s own servers (deployed locally). Before making a decision she outlines the basic, non-technical considerations for both options.

    - + \ No newline at end of file diff --git a/articles/2020/06/16/how-information-is-organized.html b/articles/2020/06/16/how-information-is-organized.html index 7e55ffc9a5d..ea38fcf80ef 100644 --- a/articles/2020/06/16/how-information-is-organized.html +++ b/articles/2020/06/16/how-information-is-organized.html @@ -22,7 +22,7 @@ - + @@ -102,7 +102,7 @@ might be better off than those operating a well defined assembly-line with interchangeable parts. Alas, the middle way is probably the best.

    That’s all for now. More soon.

    Need help organizing or scaling your organization's information or process flows? Contact our team of ICT4D specialists at support@openfn.org.

    - + \ No newline at end of file diff --git a/articles/2020/06/24/three-questions-to-ask.html b/articles/2020/06/24/three-questions-to-ask.html index af18f6110dd..4a56b2a7347 100644 --- a/articles/2020/06/24/three-questions-to-ask.html +++ b/articles/2020/06/24/three-questions-to-ask.html @@ -22,7 +22,7 @@ - + @@ -63,7 +63,7 @@ admin@openfn.org for support. Our team is always happy to assist and help you evaluate the total cost of ownership of automation solutions.

    - + \ No newline at end of file diff --git a/articles/2020/07/02/allow-yourself-to-fail.html b/articles/2020/07/02/allow-yourself-to-fail.html index 4ec05fbe93b..89c7b17a0b1 100644 --- a/articles/2020/07/02/allow-yourself-to-fail.html +++ b/articles/2020/07/02/allow-yourself-to-fail.html @@ -22,7 +22,7 @@ - + @@ -52,7 +52,7 @@ design for idempotence. It's common sense when you're passing messages between two different systems that are bound to evolve, go offline, have a bad day, etc

    — Taylor

    Sign up{: .btn} to set up a project today, absolutely free.

    Reach out{: .btn} for more information.

    - + \ No newline at end of file diff --git a/articles/2020/07/14/cron-is-better-than-a-timer.html b/articles/2020/07/14/cron-is-better-than-a-timer.html index dce1289dfe9..c87097603b1 100644 --- a/articles/2020/07/14/cron-is-better-than-a-timer.html +++ b/articles/2020/07/14/cron-is-better-than-a-timer.html @@ -22,7 +22,7 @@ - + @@ -49,7 +49,7 @@ sign up for free or mess around with cron expressions at crontab.guru, a brilliant site to quickly build complex cron expressions.

    That's all from product for today. Speak soon.

    Taylor

    - + \ No newline at end of file diff --git a/articles/2020/12/09/upsert-in-dhis2.html b/articles/2020/12/09/upsert-in-dhis2.html index a4aa3e077f0..4c080e2d78d 100644 --- a/articles/2020/12/09/upsert-in-dhis2.html +++ b/articles/2020/12/09/upsert-in-dhis2.html @@ -22,7 +22,7 @@ - + @@ -51,7 +51,7 @@ about it over here.

    Please don’t hesitate to reach out to one of OpenFn’s implementation specialists if you’d like to learn more.

    — Taylor

    Sign up{: .btn} to set up a project today, absolutely free.

    Reach out{: .btn} for more information.

    - + \ No newline at end of file diff --git a/articles/2021/02/03/hosted-or-local-deployment.html b/articles/2021/02/03/hosted-or-local-deployment.html index e000b9e6cb7..0ab0db1485c 100644 --- a/articles/2021/02/03/hosted-or-local-deployment.html +++ b/articles/2021/02/03/hosted-or-local-deployment.html @@ -22,7 +22,7 @@ - + @@ -87,7 +87,7 @@ likely be in a better position to know if you want to continue using the software for 5-10 years.

    Should you need any help with your decision though please do not hesitate to contact OpenFn.

    - + \ No newline at end of file diff --git a/articles/2021/02/17/syncing-options.html b/articles/2021/02/17/syncing-options.html index cc0bb906386..13878c9a9e1 100644 --- a/articles/2021/02/17/syncing-options.html +++ b/articles/2021/02/17/syncing-options.html @@ -22,7 +22,7 @@ - + @@ -76,7 +76,7 @@ eventual syncing was more important than having real-time syncing.

    Both Sync Options Have Their Pros and Cons

    Both options definitely have their use-cases and OpenFn's platform versatility enables your team to decide which type of sync is right for your project.

    As always, we are here to help with any questions as you think through which sync option makes the most sense for your project.

    - + \ No newline at end of file diff --git a/articles/2021/05/24/commcare-events.html b/articles/2021/05/24/commcare-events.html index 37f712d6377..d5fdfca5e9f 100644 --- a/articles/2021/05/24/commcare-events.html +++ b/articles/2021/05/24/commcare-events.html @@ -22,7 +22,7 @@ - + @@ -116,7 +116,7 @@ head directly to the Job Library to see how other OpenFn users are creating their jobs.

    Either way, keep the community posted on your progress in the forum—you'll find lots of helpful folks willing to lend you a hand in your integration journey.

    - + \ No newline at end of file diff --git a/articles/2021/07/05/wrapping-my-head-around-jobs.html b/articles/2021/07/05/wrapping-my-head-around-jobs.html index 43ff877604e..eecf2a980d2 100644 --- a/articles/2021/07/05/wrapping-my-head-around-jobs.html +++ b/articles/2021/07/05/wrapping-my-head-around-jobs.html @@ -22,7 +22,7 @@ - + @@ -104,7 +104,7 @@ complex, and are pushing our new documentation regularly, so please do get in touch if you think there are ways we could improve this type of walk-through/helper article.

    Happy integrating,

    Taylor

    - + \ No newline at end of file diff --git a/articles/2021/10/08/improving-multistage-docker-builds-using-buildx.html b/articles/2021/10/08/improving-multistage-docker-builds-using-buildx.html index a9a5131ce8a..7cc82dae7e2 100644 --- a/articles/2021/10/08/improving-multistage-docker-builds-using-buildx.html +++ b/articles/2021/10/08/improving-multistage-docker-builds-using-buildx.html @@ -22,7 +22,7 @@ - + @@ -97,7 +97,7 @@ hey!

    Buildx has given me what I 'expected' with docker multi-stage builds, and having the cache in a repository completely side-steps having to attach a shared volume or copying from a storage bucket.

    Resources

    - + \ No newline at end of file diff --git a/articles/2021/10/15/webpack-to-esbuild-part1.html b/articles/2021/10/15/webpack-to-esbuild-part1.html index 0234460f38c..19fa8c30a2a 100644 --- a/articles/2021/10/15/webpack-to-esbuild-part1.html +++ b/articles/2021/10/15/webpack-to-esbuild-part1.html @@ -22,7 +22,7 @@ - + @@ -80,7 +80,7 @@ minified and split production build takes about 34s with webpack and that's on my i7 desktop machine, and 197s (3+ mins) on CI/CD.

    What's next?

    So our 'can we actually do this' seems to have gone pretty well so far. I'm really excited about what this will give us in the end.

    But a shell command doth not a replacement for webpack make. We still need to:

    1. Get Phoenix to use esbuild and watch our files as we work.
    2. Ensure that our html templates serve the correct files in dev & production.
      Including our CSS that is no longer injected into the DOM.
    3. Split at least our vendored modules into their own bundle.
    4. Make sure sourcemaps generate correctly for when we upload them to Sentry.
    5. Have some kind of cache-busting naming scheme for production builds.

    Resources

    - + \ No newline at end of file diff --git a/articles/2021/10/22/testing-react-app-with-jest-hound.html b/articles/2021/10/22/testing-react-app-with-jest-hound.html index f6e5c40dd67..ec78acf6868 100644 --- a/articles/2021/10/22/testing-react-app-with-jest-hound.html +++ b/articles/2021/10/22/testing-react-app-with-jest-hound.html @@ -22,7 +22,7 @@ - + @@ -115,7 +115,7 @@ guarantee a maintainable codebase and a progressive software application.
    Still looking for the legend's advice?

    Gotcha, here you go...

    1. Swallow your pride and be humble: always do manual testing!
    2. Click test your way through the manual test cases for every new deployment, catching regressions.
    3. Lock in your fixes and new features as unit tests, integration tests, and end-to-end tests.

    Happy testing,

    Chaiwa

    - + \ No newline at end of file diff --git a/articles/2021/10/29/how-learning-javascript-helped-me-better-understand-jobs.html b/articles/2021/10/29/how-learning-javascript-helped-me-better-understand-jobs.html index bc98595258c..23361edf771 100644 --- a/articles/2021/10/29/how-learning-javascript-helped-me-better-understand-jobs.html +++ b/articles/2021/10/29/how-learning-javascript-helped-me-better-understand-jobs.html @@ -22,7 +22,7 @@ - + @@ -115,7 +115,7 @@ to store various keyed collections and more complex entities."

    Next steps

    I'm well on my way to becoming a better job reader and writer. Here are some next steps:

    1. Understand fn(state) and how state can be manipulated in OpenFn jobs.

    2. Explore what's available on the JavaScript docs site.

    3. Sign up for the next level JavaScript course.

    - + \ No newline at end of file diff --git a/articles/2022/06/07/workflow-automation.html b/articles/2022/06/07/workflow-automation.html index a2ba0596f0d..62e305bdaa3 100644 --- a/articles/2022/06/07/workflow-automation.html +++ b/articles/2022/06/07/workflow-automation.html @@ -22,7 +22,7 @@ - + @@ -113,7 +113,7 @@ DPG, OpenFn’s core technology is free and open-source. If you want more information about the Toolkit or to sign up for a free plan on our associated SaaS application, visit https://www.openfn.org/.

    - + \ No newline at end of file diff --git a/articles/2022/09/19/auth-security.html b/articles/2022/09/19/auth-security.html index 241184ac996..85b38be457c 100644 --- a/articles/2022/09/19/auth-security.html +++ b/articles/2022/09/19/auth-security.html @@ -22,7 +22,7 @@ - + @@ -75,7 +75,7 @@ security experts and international standards, including GovStack, OpenHIE, OWASP, NIST, and more.

    The resource can be found here.

    - + \ No newline at end of file diff --git a/articles/archive.html b/articles/archive.html index 30b17e89729..164c1d1d2db 100644 --- a/articles/archive.html +++ b/articles/archive.html @@ -22,13 +22,13 @@ - +
    Skip to main content
    - + \ No newline at end of file diff --git a/articles/page/2.html b/articles/page/2.html index 4b98f350220..119b875f6dd 100644 --- a/articles/page/2.html +++ b/articles/page/2.html @@ -22,7 +22,7 @@ - + @@ -45,7 +45,7 @@ a non-profit is organized. I thought I was getting into a technical discussion—I’ve been doing system architecture discussions for years—but what we ended up talking about was how this NGO thinks.

    - + \ No newline at end of file diff --git a/articles/tags.html b/articles/tags.html index 833b6bd7c96..e608c489a45 100644 --- a/articles/tags.html +++ b/articles/tags.html @@ -22,13 +22,13 @@ - +
    Skip to main content
    - + \ No newline at end of file diff --git a/articles/tags/annoucement.html b/articles/tags/annoucement.html index b7e285023b2..d7cb6ffccc0 100644 --- a/articles/tags/annoucement.html +++ b/articles/tags/annoucement.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@
    Skip to main content
    - + \ No newline at end of file diff --git a/articles/tags/authentication.html b/articles/tags/authentication.html index 2d43c8d28dc..288d18e5d58 100644 --- a/articles/tags/authentication.html +++ b/articles/tags/authentication.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ Goods achieve just this. You can view and comment on the resource here, or read on to learn why.

    - + \ No newline at end of file diff --git a/articles/tags/authorization.html b/articles/tags/authorization.html index 109c958ff83..9bb5da1296c 100644 --- a/articles/tags/authorization.html +++ b/articles/tags/authorization.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ Goods achieve just this. You can view and comment on the resource here, or read on to learn why.

    - + \ No newline at end of file diff --git a/articles/tags/automation.html b/articles/tags/automation.html index 72f368565a4..0e5fe732939 100644 --- a/articles/tags/automation.html +++ b/articles/tags/automation.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ supply chain systems, tracking clinical visits, and helping plan vaccine rollouts. We support our partners’ work by lifting the burden of manual data transfers between platforms.

    - + \ No newline at end of file diff --git a/articles/tags/browser-testing.html b/articles/tags/browser-testing.html index 30f15ca1ac2..4fae3f6d578 100644 --- a/articles/tags/browser-testing.html +++ b/articles/tags/browser-testing.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ React/Redux app with a Phoenix/Elixir backend.

    - + \ No newline at end of file diff --git a/articles/tags/build.html b/articles/tags/build.html index fec8031de7c..e536b92908f 100644 --- a/articles/tags/build.html +++ b/articles/tags/build.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ using it continuously for about 6 years - upgrades and all. Our front-end toolchain, albeit far from out of date (Webpack 5.52.1 today) has left some room for improvement.

    - + \ No newline at end of file diff --git a/articles/tags/ci-cd.html b/articles/tags/ci-cd.html index 776fe760a65..9ee25ce72fb 100644 --- a/articles/tags/ci-cd.html +++ b/articles/tags/ci-cd.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ toolchain, albeit far from out of date (Webpack 5.52.1 today) has left some room for improvement.

    · 6 min read

    So you're using docker's multi-stage builds and noticed that your build times aren't nearly as quick as you expected?

    - + \ No newline at end of file diff --git a/articles/tags/docker.html b/articles/tags/docker.html index 1539b529b4e..a7524fddf34 100644 --- a/articles/tags/docker.html +++ b/articles/tags/docker.html @@ -22,14 +22,14 @@ - +
    Skip to main content
    - + \ No newline at end of file diff --git a/articles/tags/elixir.html b/articles/tags/elixir.html index cfb39a76a19..9a27f0e3cde 100644 --- a/articles/tags/elixir.html +++ b/articles/tags/elixir.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ React/Redux app with a Phoenix/Elixir backend.

    - + \ No newline at end of file diff --git a/articles/tags/how-to.html b/articles/tags/how-to.html index 1a14c9f693b..de9a24fd316 100644 --- a/articles/tags/how-to.html +++ b/articles/tags/how-to.html @@ -22,7 +22,7 @@ - + @@ -67,7 +67,7 @@ a non-profit is organized. I thought I was getting into a technical discussion—I’ve been doing system architecture discussions for years—but what we ended up talking about was how this NGO thinks.

    - + \ No newline at end of file diff --git a/articles/tags/javascript.html b/articles/tags/javascript.html index 564d17c133c..927dd3e850a 100644 --- a/articles/tags/javascript.html +++ b/articles/tags/javascript.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ your job writing on OpenFn to the next level. To improve my limited knowledge of JavaScript, I have been taking Codecademy's Introduction to JavaScript Course.

    - + \ No newline at end of file diff --git a/articles/tags/jobs.html b/articles/tags/jobs.html index bfcb4d7b068..be5fc979f04 100644 --- a/articles/tags/jobs.html +++ b/articles/tags/jobs.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ JavaScript, I have been taking Codecademy's Introduction to JavaScript Course.

    · 9 min read

    Jobs are business processes turned into functional-style scripts. What does that mean, how should you approach writing jobs?

    - + \ No newline at end of file diff --git a/articles/tags/js.html b/articles/tags/js.html index b05f4d2aa0d..0b0e68c616b 100644 --- a/articles/tags/js.html +++ b/articles/tags/js.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ using it continuously for about 6 years - upgrades and all. Our front-end toolchain, albeit far from out of date (Webpack 5.52.1 today) has left some room for improvement.

    - + \ No newline at end of file diff --git a/articles/tags/learning.html b/articles/tags/learning.html index 8a5d90031c6..dd5da5cf72c 100644 --- a/articles/tags/learning.html +++ b/articles/tags/learning.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ your job writing on OpenFn to the next level. To improve my limited knowledge of JavaScript, I have been taking Codecademy's Introduction to JavaScript Course.

    - + \ No newline at end of file diff --git a/articles/tags/phoenix.html b/articles/tags/phoenix.html index f9d40feb639..8d84ddebee0 100644 --- a/articles/tags/phoenix.html +++ b/articles/tags/phoenix.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ using it continuously for about 6 years - upgrades and all. Our front-end toolchain, albeit far from out of date (Webpack 5.52.1 today) has left some room for improvement.

    - + \ No newline at end of file diff --git a/articles/tags/react.html b/articles/tags/react.html index 5560024d7e6..83e39fb9c74 100644 --- a/articles/tags/react.html +++ b/articles/tags/react.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ React/Redux app with a Phoenix/Elixir backend.

    - + \ No newline at end of file diff --git a/articles/tags/security.html b/articles/tags/security.html index 115ef65befb..7325bd75680 100644 --- a/articles/tags/security.html +++ b/articles/tags/security.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ Goods achieve just this. You can view and comment on the resource here, or read on to learn why.

    - + \ No newline at end of file diff --git a/articles/tags/solution.html b/articles/tags/solution.html index e21e7ae9094..ea03d92d72e 100644 --- a/articles/tags/solution.html +++ b/articles/tags/solution.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ supply chain systems, tracking clinical visits, and helping plan vaccine rollouts. We support our partners’ work by lifting the burden of manual data transfers between platforms.

    - + \ No newline at end of file diff --git a/articles/tags/testing.html b/articles/tags/testing.html index e5e91b9506a..dde376d4ec6 100644 --- a/articles/tags/testing.html +++ b/articles/tags/testing.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ React/Redux app with a Phoenix/Elixir backend.

    - + \ No newline at end of file diff --git a/articles/tags/tips.html b/articles/tags/tips.html index c7b596649c5..266f01ba427 100644 --- a/articles/tags/tips.html +++ b/articles/tags/tips.html @@ -22,7 +22,7 @@ - + @@ -68,7 +68,7 @@ "idempotence."

    · 3 min read

    Automation can save time, unlock critical resources, and enable scale–but it typically requires investment to set up. Wondering whether you should automate your processes? Ask yourself these 3 questions.

    - + \ No newline at end of file diff --git a/articles/tags/tips/page/2.html b/articles/tags/tips/page/2.html index 5ce21f0f68e..8846fe80c8e 100644 --- a/articles/tags/tips/page/2.html +++ b/articles/tags/tips/page/2.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ a non-profit is organized. I thought I was getting into a technical discussion—I’ve been doing system architecture discussions for years—but what we ended up talking about was how this NGO thinks.

    - + \ No newline at end of file diff --git a/articles/tags/webpack.html b/articles/tags/webpack.html index dc31d78a623..6518ca53f47 100644 --- a/articles/tags/webpack.html +++ b/articles/tags/webpack.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ using it continuously for about 6 years - upgrades and all. Our front-end toolchain, albeit far from out of date (Webpack 5.52.1 today) has left some room for improvement.

    - + \ No newline at end of file diff --git a/assets/js/09b23959.055f6fdc.js b/assets/js/09b23959.82732e22.js similarity index 99% rename from assets/js/09b23959.055f6fdc.js rename to assets/js/09b23959.82732e22.js index ab48c76135c..12c3b5457e9 100644 --- a/assets/js/09b23959.055f6fdc.js +++ b/assets/js/09b23959.82732e22.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[83278],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),i=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=i(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=i(n),m=a,f=d["".concat(p,".").concat(m)]||d[m]||u[m]||o;return n?r.createElement(f,s(s({ref:t},c),{},{components:n})):r.createElement(f,s({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:a,s[1]=l;for(var i=2;i{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>i});var r=n(87462),a=(n(67294),n(3905));const o={title:"salesforce developer readme",id:"salesforce-readme",keywords:["adaptor","readme","salesforce"]},s="salesforce Adaptor developer README.md",l={unversionedId:"packages/salesforce-readme",id:"packages/salesforce-readme",title:"salesforce developer readme",description:"Source//github.com/OpenFn/adaptors/tree/main/packages/salesforce",source:"@site/adaptors/packages/salesforce-readme.md",sourceDirName:"packages",slug:"/packages/salesforce-readme",permalink:"/adaptors/packages/salesforce-readme",draft:!1,tags:[],version:"current",frontMatter:{title:"salesforce developer readme",id:"salesforce-readme",keywords:["adaptor","readme","salesforce"]},sidebar:"adaptors",previous:{title:"salesforce changelog",permalink:"/adaptors/packages/salesforce-changelog"},next:{title:"sftp@1.0.1",permalink:"/adaptors/packages/sftp-docs"}},p={},i=[{value:"Documentation",id:"documentation",level:2},{value:"Release notes and deprecated CHANGELOG.md",id:"release-notes-and-deprecated-changelogmd",level:2},{value:"Configuration",id:"configuration",level:3},{value:"Intent",id:"intent",level:2},{value:"Expressions",id:"expressions",level:2},{value:"Development",id:"development",level:2}],c={toc:i},d="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"salesforce-adaptor-developer-readmemd"},"salesforce Adaptor developer README.md"),(0,a.kt)("p",null,"Source: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors/tree/main/packages/salesforce"},"https://github.com/OpenFn/adaptors/tree/main/packages/salesforce")),(0,a.kt)("h1",{id:"language-salesforce"},"Language Salesforce"),(0,a.kt)("p",null,"An OpenFn ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},"adaptor"))," for building integration jobs for use with the\nSalesforce API."),(0,a.kt)("h2",{id:"documentation"},"Documentation"),(0,a.kt)("p",null,"View the ",(0,a.kt)("a",{parentName:"p",href:"https://docs.openfn.org/adaptors/packages/salesforce-docs"},"docs site"),"\nfor full technical documentation."),(0,a.kt)("h2",{id:"release-notes-and-deprecated-changelogmd"},"Release notes and deprecated CHANGELOG.md"),(0,a.kt)("p",null,"See ",(0,a.kt)("a",{parentName:"p",href:"https://docs.openfn.org/adaptors/packages/salesforce-changelog"},"releases"),"\nfor all changes."),(0,a.kt)("h3",{id:"configuration"},"Configuration"),(0,a.kt)("p",null,"View all the required and optional properties for ",(0,a.kt)("inlineCode",{parentName:"p"},"state.configuration")," in the\nofficial\n",(0,a.kt)("a",{parentName:"p",href:"https://docs.openfn.org/adaptors/packages/saleforce-configuration-schema/"},"configuration-schema"),"\ndefinition."),(0,a.kt)("h2",{id:"intent"},"Intent"),(0,a.kt)("hr",null),(0,a.kt)("p",null,"Allow communication with Salesforce using a set of Lisp compatible expressions."),(0,a.kt)("p",null,"Using simple functions we can create a simplified API, simple enough to generate\ncode from data."),(0,a.kt)("h2",{id:"expressions"},"Expressions"),(0,a.kt)("hr",null),(0,a.kt)("p",null,"Expressions are a simplified set of function calls. Outlining the operations\nneeded to be performed."),(0,a.kt)("p",null,"An uncompiled expression has no knowledge of the internals of the adaptor,\ncredentials or runtime environment."),(0,a.kt)("p",null,"It's the responsibility of the build process to provide a wrapper that will\ninject the functions in."),(0,a.kt)("p",null,"For example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-javascript"},"describe('vera__Test_Event__c'),\n create('vera__Test_Event__c', {\n vera__Test_Event_Name_Unique__c: 'hello from jsforce',\n }),\n create('vera__Boat__c', {\n Name: 'Catatafish redux!',\n vera__Test_Event__c: reference(0),\n });\n")),(0,a.kt)("h2",{id:"development"},"Development"),(0,a.kt)("p",null,"Clone the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors"},"adaptors monorepo"),". Follow the\n",(0,a.kt)("inlineCode",{parentName:"p"},"Getting Started")," guide inside to get set up."),(0,a.kt)("p",null,"Run tests using ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm run test")," or ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm run test:watch")),(0,a.kt)("p",null,"Build the project using ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm build"),"."),(0,a.kt)("p",null,"To just build the docs run ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm build docs")),(0,a.kt)("p",null,"##\xa0Other"),(0,a.kt)("p",null,"Create SOAP session"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},'curl https://test.salesforce.com/services/Soap/u/47.0 -H "Content-Type: text/xml; charset=UTF-8" -H "SOAPAction: login" -d @tmp/login.txt | xmllint --format -\n')),(0,a.kt)("p",null,"Close jobs"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},"curl\nhttps://openfn.my.salesforce.com/services/async/47.0/job/some_id -H 'X-SFDC-Session: abc123sessionID456xyz' -H \"Content-Type: application/xml; charset=UTF-8\" -d @tmp/close_job.txt | xmllint --format -\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[83278],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),i=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=i(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=i(n),m=a,f=d["".concat(p,".").concat(m)]||d[m]||u[m]||o;return n?r.createElement(f,s(s({ref:t},c),{},{components:n})):r.createElement(f,s({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:a,s[1]=l;for(var i=2;i{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>i});var r=n(87462),a=(n(67294),n(3905));const o={title:"salesforce developer readme",id:"salesforce-readme",keywords:["adaptor","readme","salesforce"]},s="salesforce Adaptor developer README.md",l={unversionedId:"packages/salesforce-readme",id:"packages/salesforce-readme",title:"salesforce developer readme",description:"Source//github.com/OpenFn/adaptors/tree/main/packages/salesforce",source:"@site/adaptors/packages/salesforce-readme.md",sourceDirName:"packages",slug:"/packages/salesforce-readme",permalink:"/adaptors/packages/salesforce-readme",draft:!1,tags:[],version:"current",frontMatter:{title:"salesforce developer readme",id:"salesforce-readme",keywords:["adaptor","readme","salesforce"]},sidebar:"adaptors",previous:{title:"salesforce changelog",permalink:"/adaptors/packages/salesforce-changelog"},next:{title:"sftp@1.0.2",permalink:"/adaptors/packages/sftp-docs"}},p={},i=[{value:"Documentation",id:"documentation",level:2},{value:"Release notes and deprecated CHANGELOG.md",id:"release-notes-and-deprecated-changelogmd",level:2},{value:"Configuration",id:"configuration",level:3},{value:"Intent",id:"intent",level:2},{value:"Expressions",id:"expressions",level:2},{value:"Development",id:"development",level:2}],c={toc:i},d="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"salesforce-adaptor-developer-readmemd"},"salesforce Adaptor developer README.md"),(0,a.kt)("p",null,"Source: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors/tree/main/packages/salesforce"},"https://github.com/OpenFn/adaptors/tree/main/packages/salesforce")),(0,a.kt)("h1",{id:"language-salesforce"},"Language Salesforce"),(0,a.kt)("p",null,"An OpenFn ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},"adaptor"))," for building integration jobs for use with the\nSalesforce API."),(0,a.kt)("h2",{id:"documentation"},"Documentation"),(0,a.kt)("p",null,"View the ",(0,a.kt)("a",{parentName:"p",href:"https://docs.openfn.org/adaptors/packages/salesforce-docs"},"docs site"),"\nfor full technical documentation."),(0,a.kt)("h2",{id:"release-notes-and-deprecated-changelogmd"},"Release notes and deprecated CHANGELOG.md"),(0,a.kt)("p",null,"See ",(0,a.kt)("a",{parentName:"p",href:"https://docs.openfn.org/adaptors/packages/salesforce-changelog"},"releases"),"\nfor all changes."),(0,a.kt)("h3",{id:"configuration"},"Configuration"),(0,a.kt)("p",null,"View all the required and optional properties for ",(0,a.kt)("inlineCode",{parentName:"p"},"state.configuration")," in the\nofficial\n",(0,a.kt)("a",{parentName:"p",href:"https://docs.openfn.org/adaptors/packages/saleforce-configuration-schema/"},"configuration-schema"),"\ndefinition."),(0,a.kt)("h2",{id:"intent"},"Intent"),(0,a.kt)("hr",null),(0,a.kt)("p",null,"Allow communication with Salesforce using a set of Lisp compatible expressions."),(0,a.kt)("p",null,"Using simple functions we can create a simplified API, simple enough to generate\ncode from data."),(0,a.kt)("h2",{id:"expressions"},"Expressions"),(0,a.kt)("hr",null),(0,a.kt)("p",null,"Expressions are a simplified set of function calls. Outlining the operations\nneeded to be performed."),(0,a.kt)("p",null,"An uncompiled expression has no knowledge of the internals of the adaptor,\ncredentials or runtime environment."),(0,a.kt)("p",null,"It's the responsibility of the build process to provide a wrapper that will\ninject the functions in."),(0,a.kt)("p",null,"For example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-javascript"},"describe('vera__Test_Event__c'),\n create('vera__Test_Event__c', {\n vera__Test_Event_Name_Unique__c: 'hello from jsforce',\n }),\n create('vera__Boat__c', {\n Name: 'Catatafish redux!',\n vera__Test_Event__c: reference(0),\n });\n")),(0,a.kt)("h2",{id:"development"},"Development"),(0,a.kt)("p",null,"Clone the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors"},"adaptors monorepo"),". Follow the\n",(0,a.kt)("inlineCode",{parentName:"p"},"Getting Started")," guide inside to get set up."),(0,a.kt)("p",null,"Run tests using ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm run test")," or ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm run test:watch")),(0,a.kt)("p",null,"Build the project using ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm build"),"."),(0,a.kt)("p",null,"To just build the docs run ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm build docs")),(0,a.kt)("p",null,"##\xa0Other"),(0,a.kt)("p",null,"Create SOAP session"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},'curl https://test.salesforce.com/services/Soap/u/47.0 -H "Content-Type: text/xml; charset=UTF-8" -H "SOAPAction: login" -d @tmp/login.txt | xmllint --format -\n')),(0,a.kt)("p",null,"Close jobs"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},"curl\nhttps://openfn.my.salesforce.com/services/async/47.0/job/some_id -H 'X-SFDC-Session: abc123sessionID456xyz' -H \"Content-Type: application/xml; charset=UTF-8\" -d @tmp/close_job.txt | xmllint --format -\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/450c527f.f08f4566.js b/assets/js/450c527f.fbe9c3a0.js similarity index 98% rename from assets/js/450c527f.f08f4566.js rename to assets/js/450c527f.fbe9c3a0.js index 6058ab879f1..0c7e52c274f 100644 --- a/assets/js/450c527f.f08f4566.js +++ b/assets/js/450c527f.fbe9c3a0.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[73446],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>d});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),c=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},l=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=c(n),m=a,d=u["".concat(p,".").concat(m)]||u[m]||f[m]||o;return n?r.createElement(d,i(i({ref:t},l),{},{components:n})):r.createElement(d,i({ref:t},l))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>f,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"Config for sftp",id:"sftp-configuration-schema",keywords:["adaptor","configuration-schema","sftp"]},i=void 0,s={unversionedId:"packages/sftp-configuration-schema",id:"packages/sftp-configuration-schema",title:"Config for sftp",description:"Jobs that use the sftp adaptor may require authentication. A",source:"@site/adaptors/packages/sftp-configuration-schema.md",sourceDirName:"packages",slug:"/packages/sftp-configuration-schema",permalink:"/adaptors/packages/sftp-configuration-schema",draft:!1,tags:[],version:"current",frontMatter:{title:"Config for sftp",id:"sftp-configuration-schema",keywords:["adaptor","configuration-schema","sftp"]},sidebar:"adaptors",previous:{title:"sftp@1.0.1",permalink:"/adaptors/packages/sftp-docs"},next:{title:"sftp changelog",permalink:"/adaptors/packages/sftp-changelog"}},p={},c=[{value:"Sample Configuration",id:"sample-configuration",level:2},{value:"Full Schema",id:"full-schema",level:2}],l={toc:c},u="wrapper";function f(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Jobs that use the ",(0,a.kt)("inlineCode",{parentName:"p"},"sftp"),' adaptor may require authentication. A\n"credential" for the ',(0,a.kt)("inlineCode",{parentName:"p"},"sftp")," adaptor will follow the schema below. When\nusing the CLI, you can set up your own ",(0,a.kt)("inlineCode",{parentName:"p"},"state.configuration")," by using the\nsample below."),(0,a.kt)("h2",{id:"sample-configuration"},"Sample Configuration"),(0,a.kt)("p",null," Paste this into the ",(0,a.kt)("inlineCode",{parentName:"p"},"configuration")," key of your ",(0,a.kt)("inlineCode",{parentName:"p"},"state.json")," file and\nmodify the values to run jobs locally."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "host": "191.173.128.88",\n "port": "22",\n "username": "admin",\n "password": "@some(!)Strongpassword"\n}\n')),(0,a.kt)("h2",{id:"full-schema"},"Full Schema"),(0,a.kt)("p",null," The full configuration schema describes each attribute of the credential and\nnotes those that are required."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "$schema": "http://json-schema.org/draft-07/schema#",\n "properties": {\n "host": {\n "title": "Host URL",\n "type": "string",\n "description": "The SFTP server host url or ip address",\n "format": "uri",\n "minLength": 1,\n "examples": [\n "191.173.128.88"\n ]\n },\n "port": {\n "title": "Port",\n "type": "integer",\n "default": 21,\n "description": "The SFTP server port",\n "minLength": 1,\n "examples": [\n 22\n ]\n },\n "username": {\n "title": "Username",\n "type": "string",\n "description": "Username",\n "minLength": 1,\n "examples": [\n "admin"\n ]\n },\n "password": {\n "title": "Password",\n "type": "string",\n "description": "Password",\n "writeOnly": true,\n "minLength": 1,\n "examples": [\n "@some(!)Strongpassword"\n ]\n }\n },\n "type": "object",\n "additionalProperties": true,\n "required": [\n "host"\n ]\n}\n')))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[73446],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>d});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),c=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},l=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=c(n),m=a,d=u["".concat(p,".").concat(m)]||u[m]||f[m]||o;return n?r.createElement(d,i(i({ref:t},l),{},{components:n})):r.createElement(d,i({ref:t},l))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>f,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"Config for sftp",id:"sftp-configuration-schema",keywords:["adaptor","configuration-schema","sftp"]},i=void 0,s={unversionedId:"packages/sftp-configuration-schema",id:"packages/sftp-configuration-schema",title:"Config for sftp",description:"Jobs that use the sftp adaptor may require authentication. A",source:"@site/adaptors/packages/sftp-configuration-schema.md",sourceDirName:"packages",slug:"/packages/sftp-configuration-schema",permalink:"/adaptors/packages/sftp-configuration-schema",draft:!1,tags:[],version:"current",frontMatter:{title:"Config for sftp",id:"sftp-configuration-schema",keywords:["adaptor","configuration-schema","sftp"]},sidebar:"adaptors",previous:{title:"sftp@1.0.2",permalink:"/adaptors/packages/sftp-docs"},next:{title:"sftp changelog",permalink:"/adaptors/packages/sftp-changelog"}},p={},c=[{value:"Sample Configuration",id:"sample-configuration",level:2},{value:"Full Schema",id:"full-schema",level:2}],l={toc:c},u="wrapper";function f(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Jobs that use the ",(0,a.kt)("inlineCode",{parentName:"p"},"sftp"),' adaptor may require authentication. A\n"credential" for the ',(0,a.kt)("inlineCode",{parentName:"p"},"sftp")," adaptor will follow the schema below. When\nusing the CLI, you can set up your own ",(0,a.kt)("inlineCode",{parentName:"p"},"state.configuration")," by using the\nsample below."),(0,a.kt)("h2",{id:"sample-configuration"},"Sample Configuration"),(0,a.kt)("p",null," Paste this into the ",(0,a.kt)("inlineCode",{parentName:"p"},"configuration")," key of your ",(0,a.kt)("inlineCode",{parentName:"p"},"state.json")," file and\nmodify the values to run jobs locally."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "host": "191.173.128.88",\n "port": "22",\n "username": "admin",\n "password": "@some(!)Strongpassword"\n}\n')),(0,a.kt)("h2",{id:"full-schema"},"Full Schema"),(0,a.kt)("p",null," The full configuration schema describes each attribute of the credential and\nnotes those that are required."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "$schema": "http://json-schema.org/draft-07/schema#",\n "properties": {\n "host": {\n "title": "Host URL",\n "type": "string",\n "description": "The SFTP server host url or ip address",\n "format": "uri",\n "minLength": 1,\n "examples": [\n "191.173.128.88"\n ]\n },\n "port": {\n "title": "Port",\n "type": "integer",\n "default": 21,\n "description": "The SFTP server port",\n "minLength": 1,\n "examples": [\n 22\n ]\n },\n "username": {\n "title": "Username",\n "type": "string",\n "description": "Username",\n "minLength": 1,\n "examples": [\n "admin"\n ]\n },\n "password": {\n "title": "Password",\n "type": "string",\n "description": "Password",\n "writeOnly": true,\n "minLength": 1,\n "examples": [\n "@some(!)Strongpassword"\n ]\n }\n },\n "type": "object",\n "additionalProperties": true,\n "required": [\n "host"\n ]\n}\n')))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6cb21577.313786a6.js b/assets/js/6cb21577.313786a6.js new file mode 100644 index 00000000000..35fd585c5d4 --- /dev/null +++ b/assets/js/6cb21577.313786a6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[32674],{3905:(a,e,p)=>{p.d(e,{Zo:()=>d,kt:()=>g});var n=p(67294);function t(a,e,p){return e in a?Object.defineProperty(a,e,{value:p,enumerable:!0,configurable:!0,writable:!0}):a[e]=p,a}function o(a,e){var p=Object.keys(a);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(a);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}))),p.push.apply(p,n)}return p}function l(a){for(var e=1;e=0||(t[p]=a[p]);return t}(a,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(a);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(a,p)&&(t[p]=a[p])}return t}var b=n.createContext({}),r=function(a){var e=n.useContext(b),p=e;return a&&(p="function"==typeof a?a(e):l(l({},e),a)),p},d=function(a){var e=r(a.components);return n.createElement(b.Provider,{value:e},a.children)},i="mdxType",m={inlineCode:"code",wrapper:function(a){var e=a.children;return n.createElement(n.Fragment,{},e)}},c=n.forwardRef((function(a,e){var p=a.components,t=a.mdxType,o=a.originalType,b=a.parentName,d=s(a,["components","mdxType","originalType","parentName"]),i=r(p),c=t,g=i["".concat(b,".").concat(c)]||i[c]||m[c]||o;return p?n.createElement(g,l(l({ref:e},d),{},{components:p})):n.createElement(g,l({ref:e},d))}));function g(a,e){var p=arguments,t=e&&e.mdxType;if("string"==typeof a||t){var o=p.length,l=new Array(o);l[0]=c;var s={};for(var b in e)hasOwnProperty.call(e,b)&&(s[b]=e[b]);s.originalType=a,s[i]="string"==typeof a?a:t,l[1]=s;for(var r=2;r{p.r(e),p.d(e,{assets:()=>Z,contentTitle:()=>O,default:()=>z,frontMatter:()=>F,metadata:()=>_,toc:()=>A});var n=p(87462),t=p(67294),o=p(3905);const l=(a,e)=>{const p=b(a),n=b(e),t=p.pop(),o=n.pop(),l=m(p,n);return 0!==l?l:t&&o?m(t.split("."),o.split(".")):t||o?t?-1:1:0},s=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,b=a=>{if("string"!=typeof a)throw new TypeError("Invalid argument expected string");const e=a.match(s);if(!e)throw new Error(`Invalid argument not valid semver ('${a}' received)`);return e.shift(),e},r=a=>"*"===a||"x"===a||"X"===a,d=a=>{const e=parseInt(a,10);return isNaN(e)?a:e},i=(a,e)=>{if(r(a)||r(e))return 0;const[p,n]=((a,e)=>typeof a!=typeof e?[String(a),String(e)]:[a,e])(d(a),d(e));return p>n?1:p{for(let p=0;p":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]},g=(Object.keys(c),JSON.parse('[{"name":"@openfn/migrate-adaptor@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/migrate-adaptor@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/migrate-adaptor@1.0.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL21pZ3JhdGUtYWRhcHRvckAxLjAuMQ"},{"name":"@openfn/language-zoho@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4zLjE"},{"name":"@openfn/language-zoho@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4yLjM"},{"name":"@openfn/language-zoho@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4yLjI"},{"name":"@openfn/language-zoho@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4yLjE"},{"name":"@openfn/language-vtiger@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjIuMQ"},{"name":"@openfn/language-vtiger@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.1.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjEuMw"},{"name":"@openfn/language-vtiger@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.1.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjEuMg"},{"name":"@openfn/language-vtiger@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.1.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjEuMQ"},{"name":"@openfn/language-twilio@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjQuMQ"},{"name":"@openfn/language-twilio@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.4","commit":{"sha":"2426f4c77af264fca6892ee32f77556346ad4e9e","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2426f4c77af264fca6892ee32f77556346ad4e9e"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuNA"},{"name":"@openfn/language-twilio@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMw"},{"name":"@openfn/language-twilio@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMg"},{"name":"@openfn/language-twilio@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMQ"},{"name":"@openfn/language-twilio@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMA"},{"name":"@openfn/language-template@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@3.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDMuMC4x"},{"name":"@openfn/language-template@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@2.0.0","commit":{"sha":"35e92ab1418380e26f36269167fcbb7e8c1f5259","url":"https://api.github.com/repos/OpenFn/adaptors/commits/35e92ab1418380e26f36269167fcbb7e8c1f5259"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDIuMC4w"},{"name":"@openfn/language-template@1.7.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.8","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy44"},{"name":"@openfn/language-template@1.7.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.7","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy43"},{"name":"@openfn/language-template@1.7.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.6","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy42"},{"name":"@openfn/language-template@1.7.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.5","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy41"},{"name":"@openfn/language-template@1.7.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.4","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy40"},{"name":"@openfn/language-template@1.7.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.3","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4z"},{"name":"@openfn/language-template@1.7.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.2","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4y"},{"name":"@openfn/language-template@1.7.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.1","commit":{"sha":"87c52be93bef2fb37a7d6d0df99feab5ed8611f1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/87c52be93bef2fb37a7d6d0df99feab5ed8611f1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4x"},{"name":"@openfn/language-template@1.7.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.0","commit":{"sha":"9b2b65c1a420ce72139677f49033fb4a3de57944","url":"https://api.github.com/repos/OpenFn/adaptors/commits/9b2b65c1a420ce72139677f49033fb4a3de57944"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4w"},{"name":"@openfn/language-telerivet@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjIuMQ"},{"name":"@openfn/language-telerivet@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuNA"},{"name":"@openfn/language-telerivet@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuMw"},{"name":"@openfn/language-telerivet@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuMg"},{"name":"@openfn/language-telerivet@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuMA"},{"name":"@openfn/language-surveycto@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjIuMQ"},{"name":"@openfn/language-surveycto@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuNA"},{"name":"@openfn/language-surveycto@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMw"},{"name":"@openfn/language-surveycto@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMg"},{"name":"@openfn/language-surveycto@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMQ"},{"name":"@openfn/language-surveycto@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMA"},{"name":"@openfn/language-smpp@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4zLjE"},{"name":"@openfn/language-smpp@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4yLjM"},{"name":"@openfn/language-smpp@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4yLjI"},{"name":"@openfn/language-smpp@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4yLjE"},{"name":"@openfn/language-sftp@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@1.0.2","commit":{"sha":"118c64a46f7c79945b2feb5b4cbbbeb6446c6fe1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/118c64a46f7c79945b2feb5b4cbbbeb6446c6fe1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMS4wLjI"},{"name":"@openfn/language-sftp@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@1.0.1","commit":{"sha":"c76ed1c521296b9abc6e9bfea25cfb347c48c642","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c76ed1c521296b9abc6e9bfea25cfb347c48c642"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMS4wLjE"},{"name":"@openfn/language-sftp@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@1.0.0","commit":{"sha":"65243bdaf913bdd5d17cb3984bda594290cd5c58","url":"https://api.github.com/repos/OpenFn/adaptors/commits/65243bdaf913bdd5d17cb3984bda594290cd5c58"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMS4wLjA"},{"name":"@openfn/language-sftp@0.8.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44Ljg"},{"name":"@openfn/language-sftp@0.8.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44Ljc"},{"name":"@openfn/language-sftp@0.8.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjY"},{"name":"@openfn/language-sftp@0.8.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjU"},{"name":"@openfn/language-sftp@0.8.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjQ"},{"name":"@openfn/language-sftp@0.8.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjM"},{"name":"@openfn/language-sftp@0.8.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjI"},{"name":"@openfn/language-sftp@0.8.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjE"},{"name":"@openfn/language-sftp@0.7.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.3","commit":{"sha":"e50ccd9f126ca73a80bc8d0294817ca077398bf1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e50ccd9f126ca73a80bc8d0294817ca077398bf1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjM"},{"name":"@openfn/language-sftp@0.7.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.2","commit":{"sha":"7a6059dc2f1b5f79447adf7f48d36a0b7aeb2372","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7a6059dc2f1b5f79447adf7f48d36a0b7aeb2372"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjI"},{"name":"@openfn/language-sftp@0.7.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.1","commit":{"sha":"eced2b1d8f2a5399e3120ae2a2b092463a1f72f1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/eced2b1d8f2a5399e3120ae2a2b092463a1f72f1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjE"},{"name":"@openfn/language-sftp@0.7.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.0","commit":{"sha":"fdbbfebcabd9df25617801ad6c2147862230efc6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fdbbfebcabd9df25617801ad6c2147862230efc6"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjA"},{"name":"@openfn/language-sftp@0.6.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.9","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42Ljk"},{"name":"@openfn/language-sftp@0.6.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.8","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42Ljg"},{"name":"@openfn/language-sftp@0.6.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.7","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42Ljc"},{"name":"@openfn/language-sftp@0.6.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.6","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjY"},{"name":"@openfn/language-sftp@0.6.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.5","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjU"},{"name":"@openfn/language-sftp@0.6.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.4","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjQ"},{"name":"@openfn/language-sftp@0.6.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.3","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjM"},{"name":"@openfn/language-sftp@0.6.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.2","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjI"},{"name":"@openfn/language-sftp@0.6.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjE"},{"name":"@openfn/language-salesforce@5.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@5.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@5.0.1","commit":{"sha":"ebdd3aacdabcb42e383715e9a22f7525341bf00c","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ebdd3aacdabcb42e383715e9a22f7525341bf00c"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANS4wLjE"},{"name":"@openfn/language-salesforce@5.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@5.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@5.0.0","commit":{"sha":"ebdd3aacdabcb42e383715e9a22f7525341bf00c","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ebdd3aacdabcb42e383715e9a22f7525341bf00c"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANS4wLjA"},{"name":"@openfn/language-salesforce@5.0.0-alpha","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@5.0.0-alpha","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@5.0.0-alpha","commit":{"sha":"ebdd3aacdabcb42e383715e9a22f7525341bf00c","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ebdd3aacdabcb42e383715e9a22f7525341bf00c"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANS4wLjAtYWxwaGE"},{"name":"@openfn/language-salesforce@4.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.2.2","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4yLjI"},{"name":"@openfn/language-salesforce@4.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.2.1","commit":{"sha":"16e1a95db48f32601b277e7ffcd9eb3bcbba85cd","url":"https://api.github.com/repos/OpenFn/adaptors/commits/16e1a95db48f32601b277e7ffcd9eb3bcbba85cd"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4yLjE"},{"name":"@openfn/language-salesforce@4.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.2.0","commit":{"sha":"377c432c960070902b0d686c2502e5d4137bc078","url":"https://api.github.com/repos/OpenFn/adaptors/commits/377c432c960070902b0d686c2502e5d4137bc078"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4yLjA"},{"name":"@openfn/language-salesforce@4.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.1.0","commit":{"sha":"a8df89d8e4537b7c1645f2db2c0f792d49535d50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a8df89d8e4537b7c1645f2db2c0f792d49535d50"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4xLjA"},{"name":"@openfn/language-salesforce@4.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.8","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjg"},{"name":"@openfn/language-salesforce@4.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.7","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjc"},{"name":"@openfn/language-salesforce@4.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.6","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjY"},{"name":"@openfn/language-salesforce@4.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjU"},{"name":"@openfn/language-salesforce@4.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjQ"},{"name":"@openfn/language-salesforce@4.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjM"},{"name":"@openfn/language-salesforce@4.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjI"},{"name":"@openfn/language-salesforce@4.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjE"},{"name":"@openfn/language-salesforce@3.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.7","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjc"},{"name":"@openfn/language-salesforce@3.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.6","commit":{"sha":"0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjY"},{"name":"@openfn/language-salesforce@3.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjU"},{"name":"@openfn/language-salesforce@3.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjQ"},{"name":"@openfn/language-salesforce@3.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.3","commit":{"sha":"1817f08cb8d8d586c710d5ca7e50f2f4230a2d35","url":"https://api.github.com/repos/OpenFn/adaptors/commits/1817f08cb8d8d586c710d5ca7e50f2f4230a2d35"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjM"},{"name":"@openfn/language-salesforce@3.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.2","commit":{"sha":"d6c0c7e39242ffea633e4f5b2569027feeaed2d4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/d6c0c7e39242ffea633e4f5b2569027feeaed2d4"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjI"},{"name":"@openfn/language-salesforce@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.1","commit":{"sha":"f5cf160440f03f0455a0251d8fc8ac6026665e49","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f5cf160440f03f0455a0251d8fc8ac6026665e49"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjE"},{"name":"@openfn/language-salesforce@3.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.0","commit":{"sha":"d7c2816033818da1d83656cea56c4681bf384105","url":"https://api.github.com/repos/OpenFn/adaptors/commits/d7c2816033818da1d83656cea56c4681bf384105"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjA"},{"name":"@openfn/language-salesforce@2.12.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4z"},{"name":"@openfn/language-salesforce@2.12.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4y"},{"name":"@openfn/language-salesforce@2.12.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4x"},{"name":"@openfn/language-salesforce@2.12.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4w"},{"name":"@openfn/language-salesforce@2.11.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.11.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.11.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMS4y"},{"name":"@openfn/language-salesforce@2.11.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.11.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.11.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMS4x"},{"name":"@openfn/language-salesforce@2.11.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.11.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.11.0","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMS4w"},{"name":"@openfn/language-resourcemap@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMy4x"},{"name":"@openfn/language-resourcemap@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMi4z"},{"name":"@openfn/language-resourcemap@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMi4y"},{"name":"@openfn/language-resourcemap@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMi4x"},{"name":"@openfn/language-rapidpro@1.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC44"},{"name":"@openfn/language-rapidpro@1.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC43"},{"name":"@openfn/language-rapidpro@1.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC42"},{"name":"@openfn/language-rapidpro@1.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC41"},{"name":"@openfn/language-rapidpro@1.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC40"},{"name":"@openfn/language-rapidpro@1.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC4z"},{"name":"@openfn/language-rapidpro@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC4y"},{"name":"@openfn/language-rapidpro@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC4x"},{"name":"@openfn/language-rapidpro@0.5.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS42"},{"name":"@openfn/language-rapidpro@0.5.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS41"},{"name":"@openfn/language-rapidpro@0.5.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS40"},{"name":"@openfn/language-rapidpro@0.5.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS4z"},{"name":"@openfn/language-rapidpro@0.5.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS4y"},{"name":"@openfn/language-rapidpro@0.5.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS4w"},{"name":"@openfn/language-progres@1.3.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjg"},{"name":"@openfn/language-progres@1.3.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjc"},{"name":"@openfn/language-progres@1.3.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjY"},{"name":"@openfn/language-progres@1.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjU"},{"name":"@openfn/language-progres@1.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjQ"},{"name":"@openfn/language-progres@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjM"},{"name":"@openfn/language-progres@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjI"},{"name":"@openfn/language-progres@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjE"},{"name":"@openfn/language-progres@1.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjU"},{"name":"@openfn/language-progres@1.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjQ"},{"name":"@openfn/language-progres@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjM"},{"name":"@openfn/language-progres@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjI"},{"name":"@openfn/language-progres@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjE"},{"name":"@openfn/language-progres@1.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjA"},{"name":"@openfn/language-primero@2.11.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS44"},{"name":"@openfn/language-primero@2.11.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS43"},{"name":"@openfn/language-primero@2.11.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS42"},{"name":"@openfn/language-primero@2.11.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS41"},{"name":"@openfn/language-primero@2.11.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS40"},{"name":"@openfn/language-primero@2.11.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS4z"},{"name":"@openfn/language-primero@2.11.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS4y"},{"name":"@openfn/language-primero@2.11.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS4x"},{"name":"@openfn/language-primero@2.10.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC42"},{"name":"@openfn/language-primero@2.10.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC41"},{"name":"@openfn/language-primero@2.10.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC40"},{"name":"@openfn/language-primero@2.10.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4z"},{"name":"@openfn/language-primero@2.10.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4y"},{"name":"@openfn/language-primero@2.10.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4x"},{"name":"@openfn/language-primero@2.10.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.0","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4w"},{"name":"@openfn/language-primero@2.9.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.9.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.9.2","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi45LjI"},{"name":"@openfn/language-primero@2.9.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.9.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.9.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi45LjE"},{"name":"@openfn/language-postgresql@4.1.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjg"},{"name":"@openfn/language-postgresql@4.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjc"},{"name":"@openfn/language-postgresql@4.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjY"},{"name":"@openfn/language-postgresql@4.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjU"},{"name":"@openfn/language-postgresql@4.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjQ"},{"name":"@openfn/language-postgresql@4.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjM"},{"name":"@openfn/language-postgresql@4.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjI"},{"name":"@openfn/language-postgresql@4.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjE"},{"name":"@openfn/language-postgresql@4.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.0.0","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4wLjA"},{"name":"@openfn/language-postgresql@3.4.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjY"},{"name":"@openfn/language-postgresql@3.4.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjU"},{"name":"@openfn/language-postgresql@3.4.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjQ"},{"name":"@openfn/language-postgresql@3.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjM"},{"name":"@openfn/language-postgresql@3.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjI"},{"name":"@openfn/language-postgresql@3.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjE"},{"name":"@openfn/language-postgresql@3.4.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjA"},{"name":"@openfn/language-openmrs@2.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjg"},{"name":"@openfn/language-openmrs@2.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjc"},{"name":"@openfn/language-openmrs@2.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjY"},{"name":"@openfn/language-openmrs@2.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjU"},{"name":"@openfn/language-openmrs@2.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjQ"},{"name":"@openfn/language-openmrs@2.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjM"},{"name":"@openfn/language-openmrs@2.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjI"},{"name":"@openfn/language-openmrs@2.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjE"},{"name":"@openfn/language-openmrs@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.1.1","commit":{"sha":"9909077c42eaeb4231894e5138c23ad33e630c7a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/9909077c42eaeb4231894e5138c23ad33e630c7a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4xLjE"},{"name":"@openfn/language-openmrs@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.1.0","commit":{"sha":"35e92ab1418380e26f36269167fcbb7e8c1f5259","url":"https://api.github.com/repos/OpenFn/adaptors/commits/35e92ab1418380e26f36269167fcbb7e8c1f5259"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4xLjA"},{"name":"@openfn/language-openmrs@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.0.1","commit":{"sha":"a4d370b1d341e1678ccfbb1ff95342fb379a16c6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a4d370b1d341e1678ccfbb1ff95342fb379a16c6"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4wLjE"},{"name":"@openfn/language-openmrs@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.0.0","commit":{"sha":"22ffe402d9d70889a2f5faa22d61d1719d33dd2a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/22ffe402d9d70889a2f5faa22d61d1719d33dd2a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4wLjA"},{"name":"@openfn/language-openmrs@0.10.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC41"},{"name":"@openfn/language-openmrs@0.10.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC40"},{"name":"@openfn/language-openmrs@0.10.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC4z"},{"name":"@openfn/language-openmrs@0.10.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC4y"},{"name":"@openfn/language-openmrs@0.10.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC4x"},{"name":"@openfn/language-openhim@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4yLjE"},{"name":"@openfn/language-openhim@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjQ"},{"name":"@openfn/language-openhim@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjM"},{"name":"@openfn/language-openhim@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjI"},{"name":"@openfn/language-openhim@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjE"},{"name":"@openfn/language-openfn@1.3.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuOA"},{"name":"@openfn/language-openfn@1.3.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNw"},{"name":"@openfn/language-openfn@1.3.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNg"},{"name":"@openfn/language-openfn@1.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNQ"},{"name":"@openfn/language-openfn@1.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNA"},{"name":"@openfn/language-openfn@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuMw"},{"name":"@openfn/language-openfn@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuMg"},{"name":"@openfn/language-openfn@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuMQ"},{"name":"@openfn/language-openfn@1.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.6","commit":{"sha":"35e92ab1418380e26f36269167fcbb7e8c1f5259","url":"https://api.github.com/repos/OpenFn/adaptors/commits/35e92ab1418380e26f36269167fcbb7e8c1f5259"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuNg"},{"name":"@openfn/language-openfn@1.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuNQ"},{"name":"@openfn/language-openfn@1.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuNA"},{"name":"@openfn/language-openfn@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuMw"},{"name":"@openfn/language-openfn@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuMg"},{"name":"@openfn/language-openfn@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuMQ"},{"name":"@openfn/language-ocl@1.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.7","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNw"},{"name":"@openfn/language-ocl@1.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.6","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNg"},{"name":"@openfn/language-ocl@1.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.5","commit":{"sha":"e6778a06c6644e59013a16fb60682e7de1c9ecb5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e6778a06c6644e59013a16fb60682e7de1c9ecb5"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNQ"},{"name":"@openfn/language-ocl@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.4","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNA"},{"name":"@openfn/language-ocl@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.3","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMw"},{"name":"@openfn/language-ocl@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.2","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMg"},{"name":"@openfn/language-ocl@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.1","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMQ"},{"name":"@openfn/language-ocl@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.0","commit":{"sha":"27492e9edf122b2d498820bdb54c3341ab7cf86e","url":"https://api.github.com/repos/OpenFn/adaptors/commits/27492e9edf122b2d498820bdb54c3341ab7cf86e"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMA"},{"name":"@openfn/language-ocl@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjAuMg"},{"name":"@openfn/language-ocl@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjAuMQ"},{"name":"@openfn/language-ocl@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.3.0","commit":{"sha":"9909077c42eaeb4231894e5138c23ad33e630c7a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/9909077c42eaeb4231894e5138c23ad33e630c7a"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjMuMA"},{"name":"@openfn/language-ocl@0.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuNg"},{"name":"@openfn/language-ocl@0.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuNQ"},{"name":"@openfn/language-ocl@0.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuNA"},{"name":"@openfn/language-ocl@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMw"},{"name":"@openfn/language-ocl@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMg"},{"name":"@openfn/language-ocl@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMQ"},{"name":"@openfn/language-ocl@0.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMA"},{"name":"@openfn/language-nexmo@0.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.3","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4z"},{"name":"@openfn/language-nexmo@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.2","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4y"},{"name":"@openfn/language-nexmo@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.1","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4x"},{"name":"@openfn/language-nexmo@0.4.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.0","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4w"},{"name":"@openfn/language-nexmo@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMy4x"},{"name":"@openfn/language-nexmo@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMi4z"},{"name":"@openfn/language-nexmo@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMi4y"},{"name":"@openfn/language-nexmo@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMi4x"},{"name":"@openfn/language-mysql@1.4.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC44"},{"name":"@openfn/language-mysql@1.4.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC43"},{"name":"@openfn/language-mysql@1.4.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC42"},{"name":"@openfn/language-mysql@1.4.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC41"},{"name":"@openfn/language-mysql@1.4.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC40"},{"name":"@openfn/language-mysql@1.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC4z"},{"name":"@openfn/language-mysql@1.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC4y"},{"name":"@openfn/language-mysql@1.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC4x"},{"name":"@openfn/language-mysql@1.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy41"},{"name":"@openfn/language-mysql@1.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy40"},{"name":"@openfn/language-mysql@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy4z"},{"name":"@openfn/language-mysql@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy4y"},{"name":"@openfn/language-mysql@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy4x"},{"name":"@openfn/language-mssql@4.1.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS44"},{"name":"@openfn/language-mssql@4.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS43"},{"name":"@openfn/language-mssql@4.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS42"},{"name":"@openfn/language-mssql@4.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS41"},{"name":"@openfn/language-mssql@4.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS40"},{"name":"@openfn/language-mssql@4.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS4z"},{"name":"@openfn/language-mssql@4.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS4y"},{"name":"@openfn/language-mssql@4.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS4x"},{"name":"@openfn/language-mssql@4.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.8","commit":{"sha":"a4d370b1d341e1678ccfbb1ff95342fb379a16c6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a4d370b1d341e1678ccfbb1ff95342fb379a16c6"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC44"},{"name":"@openfn/language-mssql@4.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.7","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC43"},{"name":"@openfn/language-mssql@4.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.6","commit":{"sha":"2426f4c77af264fca6892ee32f77556346ad4e9e","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2426f4c77af264fca6892ee32f77556346ad4e9e"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC42"},{"name":"@openfn/language-mssql@4.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC41"},{"name":"@openfn/language-mssql@4.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC40"},{"name":"@openfn/language-mssql@4.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4z"},{"name":"@openfn/language-mssql@4.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4y"},{"name":"@openfn/language-mssql@4.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4x"},{"name":"@openfn/language-mssql@4.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4w"},{"name":"@openfn/language-mssql@3.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@3.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@3.1.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDMuMS4y"},{"name":"@openfn/language-mssql@3.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@3.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@3.1.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDMuMS4x"},{"name":"@openfn/language-mssql@3.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@3.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@3.1.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDMuMS4w"},{"name":"@openfn/language-msgraph@0.4.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.4.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.4.0","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC40LjA"},{"name":"@openfn/language-msgraph@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.5","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjU"},{"name":"@openfn/language-msgraph@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.4","commit":{"sha":"dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747","url":"https://api.github.com/repos/OpenFn/adaptors/commits/dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjQ"},{"name":"@openfn/language-msgraph@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.3","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjM"},{"name":"@openfn/language-msgraph@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.2","commit":{"sha":"fa4feaead4b2a6281d1dbb1859b3760314217ca8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fa4feaead4b2a6281d1dbb1859b3760314217ca8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjI"},{"name":"@openfn/language-msgraph@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.1","commit":{"sha":"95da6f2a8492f44a92bdc403f6adc33a76ebe4d6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/95da6f2a8492f44a92bdc403f6adc33a76ebe4d6"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjE"},{"name":"@openfn/language-msgraph@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.0","commit":{"sha":"12faef5ded95acaf0b148aa9a6fdde1c0a4b7111","url":"https://api.github.com/repos/OpenFn/adaptors/commits/12faef5ded95acaf0b148aa9a6fdde1c0a4b7111"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjA"},{"name":"@openfn/language-msgraph@0.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.2.0","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4yLjA"},{"name":"@openfn/language-msgraph@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.1.1","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4xLjE"},{"name":"@openfn/language-msgraph@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.1.0","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4xLjA"},{"name":"@openfn/language-mongodb@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@2.0.0","commit":{"sha":"4aaef4ffa5da2fad3f39866838d1eeff5f7bd546","url":"https://api.github.com/repos/OpenFn/adaptors/commits/4aaef4ffa5da2fad3f39866838d1eeff5f7bd546"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMi4wLjA"},{"name":"@openfn/language-mongodb@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4xLjE"},{"name":"@openfn/language-mongodb@1.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.0.6","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4wLjY"},{"name":"@openfn/language-mongodb@1.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.0.5","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4wLjU"},{"name":"@openfn/language-mongodb@1.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.0.4","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4wLjQ"},{"name":"@openfn/language-mogli@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuNC4x"},{"name":"@openfn/language-mogli@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.4","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy40"},{"name":"@openfn/language-mogli@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy4z"},{"name":"@openfn/language-mogli@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy4y"},{"name":"@openfn/language-mogli@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy4x"},{"name":"@openfn/language-medicmobile@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.4.2","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuNC4y"},{"name":"@openfn/language-medicmobile@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuNC4x"},{"name":"@openfn/language-medicmobile@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4z"},{"name":"@openfn/language-medicmobile@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4y"},{"name":"@openfn/language-medicmobile@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4x"},{"name":"@openfn/language-medicmobile@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4w"},{"name":"@openfn/language-maximo@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjQuMQ"},{"name":"@openfn/language-maximo@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuNQ"},{"name":"@openfn/language-maximo@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.4","commit":{"sha":"d6c0c7e39242ffea633e4f5b2569027feeaed2d4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/d6c0c7e39242ffea633e4f5b2569027feeaed2d4"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuNA"},{"name":"@openfn/language-maximo@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuMw"},{"name":"@openfn/language-maximo@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuMg"},{"name":"@openfn/language-maximo@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuMQ"},{"name":"@openfn/language-mailgun@0.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.4.3","commit":{"sha":"21315b88949b585291213b5959f80eb99a7fc335","url":"https://api.github.com/repos/OpenFn/adaptors/commits/21315b88949b585291213b5959f80eb99a7fc335"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC40LjM"},{"name":"@openfn/language-mailgun@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.4.2","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC40LjI"},{"name":"@openfn/language-mailgun@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC40LjE"},{"name":"@openfn/language-mailgun@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjQ"},{"name":"@openfn/language-mailgun@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjM"},{"name":"@openfn/language-mailgun@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjI"},{"name":"@openfn/language-mailgun@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjE"},{"name":"@openfn/language-mailchimp@0.7.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.7.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.7.1","commit":{"sha":"5452145a3e54e281bd242b87386953f4e4928aae","url":"https://api.github.com/repos/OpenFn/adaptors/commits/5452145a3e54e281bd242b87386953f4e4928aae"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjcuMQ"},{"name":"@openfn/language-mailchimp@0.7.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.7.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.7.0","commit":{"sha":"f88f0ca0b5316015c36f187d9596bd34a7f51944","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f88f0ca0b5316015c36f187d9596bd34a7f51944"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjcuMA"},{"name":"@openfn/language-mailchimp@0.6.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.6.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.6.0","commit":{"sha":"dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747","url":"https://api.github.com/repos/OpenFn/adaptors/commits/dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjYuMA"},{"name":"@openfn/language-mailchimp@0.5.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.5.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.5.0","commit":{"sha":"83e4f65d59c47551e9922a6213c296335c58fdb7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/83e4f65d59c47551e9922a6213c296335c58fdb7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjUuMA"},{"name":"@openfn/language-mailchimp@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjQuMQ"},{"name":"@openfn/language-mailchimp@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuNQ"},{"name":"@openfn/language-mailchimp@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuNA"},{"name":"@openfn/language-mailchimp@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuMw"},{"name":"@openfn/language-mailchimp@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuMg"},{"name":"@openfn/language-mailchimp@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuMA"},{"name":"@openfn/language-magpi@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMS4x"},{"name":"@openfn/language-magpi@1.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.5","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC41"},{"name":"@openfn/language-magpi@1.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC40"},{"name":"@openfn/language-magpi@1.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC4z"},{"name":"@openfn/language-magpi@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC4y"},{"name":"@openfn/language-magpi@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC4x"},{"name":"@openfn/language-kobotoolbox@2.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@2.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@2.1.0","commit":{"sha":"5452145a3e54e281bd242b87386953f4e4928aae","url":"https://api.github.com/repos/OpenFn/adaptors/commits/5452145a3e54e281bd242b87386953f4e4928aae"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDIuMS4w"},{"name":"@openfn/language-kobotoolbox@2.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@2.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@2.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDIuMC4x"},{"name":"@openfn/language-kobotoolbox@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4z"},{"name":"@openfn/language-kobotoolbox@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4y"},{"name":"@openfn/language-kobotoolbox@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4x"},{"name":"@openfn/language-kobotoolbox@1.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.0","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4w"},{"name":"@openfn/language-kobotoolbox@1.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.2.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMi4w"},{"name":"@openfn/language-kobotoolbox@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.1.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMS4x"},{"name":"@openfn/language-kobotoolbox@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.1.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMS4w"},{"name":"@openfn/language-khanacademy@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuNC4x"},{"name":"@openfn/language-khanacademy@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy40"},{"name":"@openfn/language-khanacademy@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy4z"},{"name":"@openfn/language-khanacademy@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy4y"},{"name":"@openfn/language-khanacademy@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy4x"},{"name":"@openfn/language-http@5.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.4","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjQ"},{"name":"@openfn/language-http@5.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.3","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjM"},{"name":"@openfn/language-http@5.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.2","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjI"},{"name":"@openfn/language-http@5.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.1","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjE"},{"name":"@openfn/language-http@5.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.0","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjA"},{"name":"@openfn/language-http@4.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.3.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4zLjM"},{"name":"@openfn/language-http@4.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.3.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4zLjI"},{"name":"@openfn/language-http@4.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4zLjE"},{"name":"@openfn/language-http@4.2.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.8","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjg"},{"name":"@openfn/language-http@4.2.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.7","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjc"},{"name":"@openfn/language-http@4.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.6","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjY"},{"name":"@openfn/language-http@4.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.5","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjU"},{"name":"@openfn/language-http@4.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.4","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjQ"},{"name":"@openfn/language-http@4.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.3","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjM"},{"name":"@openfn/language-http@4.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.2","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjI"},{"name":"@openfn/language-http@4.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.1","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjE"},{"name":"@openfn/language-http@4.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.0","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjA"},{"name":"@openfn/language-hive@0.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-hive@0.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-hive@0.2.0","commit":{"sha":"e8f1b6b8b1b22b7f2111c90b011fef59d61e0720","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e8f1b6b8b1b22b7f2111c90b011fef59d61e0720"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWhpdmVAMC4yLjA"},{"name":"@openfn/language-googlesheets@2.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.2.2","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjIuMg"},{"name":"@openfn/language-googlesheets@2.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjIuMQ"},{"name":"@openfn/language-googlesheets@2.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.6","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuNg"},{"name":"@openfn/language-googlesheets@2.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.5","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuNQ"},{"name":"@openfn/language-googlesheets@2.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuNA"},{"name":"@openfn/language-googlesheets@2.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMw"},{"name":"@openfn/language-googlesheets@2.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMg"},{"name":"@openfn/language-googlesheets@2.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMQ"},{"name":"@openfn/language-googlesheets@2.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.0","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMA"},{"name":"@openfn/language-googlehealthcare@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlehealthcare@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlehealthcare@1.0.0","commit":{"sha":"0a5e39a9c849282bfe5b59578abd71de761a679d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0a5e39a9c849282bfe5b59578abd71de761a679d"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZWhlYWx0aGNhcmVAMS4wLjA"},{"name":"@openfn/language-googlehealthcare@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlehealthcare@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlehealthcare@0.1.0","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZWhlYWx0aGNhcmVAMC4xLjA"},{"name":"@openfn/language-googlehealthcare@0.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlehealthcare@0.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlehealthcare@0.0.1","commit":{"sha":"636d8a7f1ff21d7362cce869e7edb04f72fb1828","url":"https://api.github.com/repos/OpenFn/adaptors/commits/636d8a7f1ff21d7362cce869e7edb04f72fb1828"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZWhlYWx0aGNhcmVAMC4wLjE"},{"name":"@openfn/language-godata@3.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjMuMQ"},{"name":"@openfn/language-godata@3.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuNA"},{"name":"@openfn/language-godata@3.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuMw"},{"name":"@openfn/language-godata@3.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuMg"},{"name":"@openfn/language-godata@3.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuMQ"},{"name":"@openfn/language-fhir@3.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@3.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@3.1.0","commit":{"sha":"70c56c3a0f867754958944a1f4f7608d12ca5047","url":"https://api.github.com/repos/OpenFn/adaptors/commits/70c56c3a0f867754958944a1f4f7608d12ca5047"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMy4xLjA"},{"name":"@openfn/language-fhir@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@3.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMy4wLjE"},{"name":"@openfn/language-fhir@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@2.0.0","commit":{"sha":"00811f8d3f2fd3c58c08e3631b439c467b0fc614","url":"https://api.github.com/repos/OpenFn/adaptors/commits/00811f8d3f2fd3c58c08e3631b439c467b0fc614"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMi4wLjA"},{"name":"@openfn/language-fhir@1.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjU"},{"name":"@openfn/language-fhir@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjQ"},{"name":"@openfn/language-fhir@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjM"},{"name":"@openfn/language-fhir@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjI"},{"name":"@openfn/language-fhir@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjE"},{"name":"@openfn/language-fhir@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjA"},{"name":"@openfn/language-facebook@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.3.2","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMy4y"},{"name":"@openfn/language-facebook@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMy4x"},{"name":"@openfn/language-facebook@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMi4z"},{"name":"@openfn/language-facebook@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMi4y"},{"name":"@openfn/language-facebook@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMi4x"},{"name":"@openfn/language-dynamics@0.4.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC44"},{"name":"@openfn/language-dynamics@0.4.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC43"},{"name":"@openfn/language-dynamics@0.4.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC42"},{"name":"@openfn/language-dynamics@0.4.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC41"},{"name":"@openfn/language-dynamics@0.4.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC40"},{"name":"@openfn/language-dynamics@0.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC4z"},{"name":"@openfn/language-dynamics@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC4y"},{"name":"@openfn/language-dynamics@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC4x"},{"name":"@openfn/language-dynamics@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy41"},{"name":"@openfn/language-dynamics@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy40"},{"name":"@openfn/language-dynamics@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy4z"},{"name":"@openfn/language-dynamics@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy4y"},{"name":"@openfn/language-dynamics@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy4x"},{"name":"@openfn/language-dhis2@4.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@4.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@4.0.3","commit":{"sha":"c76ed1c521296b9abc6e9bfea25cfb347c48c642","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c76ed1c521296b9abc6e9bfea25cfb347c48c642"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDQuMC4z"},{"name":"@openfn/language-dhis2@4.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@4.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@4.0.2","commit":{"sha":"0a5e39a9c849282bfe5b59578abd71de761a679d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0a5e39a9c849282bfe5b59578abd71de761a679d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDQuMC4y"},{"name":"@openfn/language-dhis2@4.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@4.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@4.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDQuMC4x"},{"name":"@openfn/language-dhis2@3.2.12","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.12","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.12","commit":{"sha":"a4d370b1d341e1678ccfbb1ff95342fb379a16c6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a4d370b1d341e1678ccfbb1ff95342fb379a16c6"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4xMg"},{"name":"@openfn/language-dhis2@3.2.11","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.11","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.11","commit":{"sha":"0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4xMQ"},{"name":"@openfn/language-dhis2@3.2.10","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.10","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.10","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4xMA"},{"name":"@openfn/language-dhis2@3.2.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.9","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi45"},{"name":"@openfn/language-dhis2@3.2.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.8","commit":{"sha":"c1fcc05f76fd245b8892091e23385f87f5dff3fd","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c1fcc05f76fd245b8892091e23385f87f5dff3fd"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi44"},{"name":"@openfn/language-dhis2@3.2.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.7","commit":{"sha":"f5cf160440f03f0455a0251d8fc8ac6026665e49","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f5cf160440f03f0455a0251d8fc8ac6026665e49"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi43"},{"name":"@openfn/language-dhis2@3.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.6","commit":{"sha":"3b1a650aacca463493b36fc59fa10050cbec2b41","url":"https://api.github.com/repos/OpenFn/adaptors/commits/3b1a650aacca463493b36fc59fa10050cbec2b41"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi42"},{"name":"@openfn/language-dhis2@3.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.5","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi41"},{"name":"@openfn/language-dhis2@3.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.4","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi40"},{"name":"@openfn/language-dhis2@3.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.3","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4z"},{"name":"@openfn/language-dhis2@3.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.2","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4y"},{"name":"@openfn/language-dhis2@3.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.1","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4x"},{"name":"@openfn/language-dhis2@3.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.0","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4w"},{"name":"@openfn/language-common@1.11.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.11.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.11.1","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjExLjE"},{"name":"@openfn/language-common@1.11.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.11.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.11.0","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjExLjA"},{"name":"@openfn/language-common@1.10.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.3","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjM"},{"name":"@openfn/language-common@1.10.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.2","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjI"},{"name":"@openfn/language-common@1.10.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.1","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjE"},{"name":"@openfn/language-common@1.10.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.0","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjA"},{"name":"@openfn/language-common@1.9.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.9.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.9.0","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjkuMA"},{"name":"@openfn/language-common@1.8.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.8.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.8.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjguMQ"},{"name":"@openfn/language-common@1.7.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.7","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNw"},{"name":"@openfn/language-common@1.7.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.6","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNg"},{"name":"@openfn/language-common@1.7.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.5","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNQ"},{"name":"@openfn/language-common@1.7.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.4","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNA"},{"name":"@openfn/language-commcare@1.6.10","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.10","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.10","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4xMA"},{"name":"@openfn/language-commcare@1.6.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.9","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi45"},{"name":"@openfn/language-commcare@1.6.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.8","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi44"},{"name":"@openfn/language-commcare@1.6.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.7","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi43"},{"name":"@openfn/language-commcare@1.6.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.6","commit":{"sha":"0a5e39a9c849282bfe5b59578abd71de761a679d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0a5e39a9c849282bfe5b59578abd71de761a679d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi42"},{"name":"@openfn/language-commcare@1.6.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi41"},{"name":"@openfn/language-commcare@1.6.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi40"},{"name":"@openfn/language-commcare@1.6.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4z"},{"name":"@openfn/language-commcare@1.6.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4y"},{"name":"@openfn/language-commcare@1.6.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4x"},{"name":"@openfn/language-commcare@1.5.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.6","commit":{"sha":"8e44ede59f7c5ba825414a84c46b1a677b92d7e4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/8e44ede59f7c5ba825414a84c46b1a677b92d7e4"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS42"},{"name":"@openfn/language-commcare@1.5.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS41"},{"name":"@openfn/language-commcare@1.5.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS40"},{"name":"@openfn/language-commcare@1.5.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS4z"},{"name":"@openfn/language-commcare@1.5.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS4x"},{"name":"@openfn/language-commcare@1.5.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS4w"},{"name":"@openfn/language-cartodb@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4yLjE"},{"name":"@openfn/language-cartodb@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjQ"},{"name":"@openfn/language-cartodb@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjM"},{"name":"@openfn/language-cartodb@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjI"},{"name":"@openfn/language-cartodb@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjE"},{"name":"@openfn/language-bigquery@2.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.4","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC40"},{"name":"@openfn/language-bigquery@2.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.3","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4z"},{"name":"@openfn/language-bigquery@2.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.2","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4y"},{"name":"@openfn/language-bigquery@2.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.1","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4x"},{"name":"@openfn/language-bigquery@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.0","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4w"},{"name":"@openfn/language-bigquery@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.2.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMi4z"},{"name":"@openfn/language-bigquery@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.2.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMi4y"},{"name":"@openfn/language-bigquery@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMi4x"},{"name":"@openfn/language-bigquery@1.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.5","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS41"},{"name":"@openfn/language-bigquery@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.4","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS40"},{"name":"@openfn/language-bigquery@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS4z"},{"name":"@openfn/language-bigquery@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS4y"},{"name":"@openfn/language-bigquery@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.0","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS4w"},{"name":"@openfn/language-beyonic@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4yLjE"},{"name":"@openfn/language-beyonic@0.1.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.9","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjk"},{"name":"@openfn/language-beyonic@0.1.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.8","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjg"},{"name":"@openfn/language-beyonic@0.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.7","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjc"},{"name":"@openfn/language-beyonic@0.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.6","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjY"},{"name":"@openfn/language-beyonic@0.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.5","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjU"},{"name":"@openfn/language-beyonic@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.4","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjQ"},{"name":"@openfn/language-beyonic@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.3","commit":{"sha":"2baee4d9ccd7c0df60bb38e83c5d4dbcfebbf775","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2baee4d9ccd7c0df60bb38e83c5d4dbcfebbf775"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjM"},{"name":"@openfn/language-beyonic@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.2","commit":{"sha":"278e3c61a1cdcb14b452d5e7cb613414c68e1dc5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/278e3c61a1cdcb14b452d5e7cb613414c68e1dc5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjI"},{"name":"@openfn/language-beyonic@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.1","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjE"},{"name":"@openfn/language-beyonic@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjA"},{"name":"@openfn/language-asana@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@3.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDMuMC4x"},{"name":"@openfn/language-asana@2.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.6","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS42"},{"name":"@openfn/language-asana@2.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.5","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS41"},{"name":"@openfn/language-asana@2.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS40"},{"name":"@openfn/language-asana@2.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4z"},{"name":"@openfn/language-asana@2.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4y"},{"name":"@openfn/language-asana@2.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4x"},{"name":"@openfn/language-asana@2.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4w"},{"name":"@openfn/buildtools@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/buildtools@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/buildtools@1.0.2","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAInJlZnMvdGFncy9Ab3BlbmZuL2J1aWxkdG9vbHNAMS4wLjI"},{"name":"@openfn/buildtools@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/buildtools@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/buildtools@1.0.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAInJlZnMvdGFncy9Ab3BlbmZuL2J1aWxkdG9vbHNAMS4wLjE"},{"name":"import-tests@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/import-tests@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/import-tests@1.0.0","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZflrxyZWZzL3RhZ3MvaW1wb3J0LXRlc3RzQDEuMC4w"}]')),f=JSON.parse('[{"module":"asana","name":"Asana","versions":["v1.0.1","v2.0.0","v2.1.0"],"npm":"v2.1.0","public":true},{"module":"beyonic","name":"Beyonic","versions":["v0.1.3"],"npm":"v0.1.0","public":true},{"module":"cartodb","name":"Carto","versions":["v0.0.4"],"public":true},{"module":"commcare","name":"CommCareHQ","versions":["v1.2.1","v1.4.1"],"public":true},{"module":"dhis2","name":"DHIS2","versions":["v1.0.1","v1.3.0","v2.0.4","v2.0.8","v2.0.11","v3.0.1","v3.0.4","v3.0.5","v3.2.1"],"npm":"v3.2.1","public":true},{"module":"dynamics","name":"Microsoft Dynamics","versions":["v0.2.0"],"public":true},{"module":"googlesheets","name":"Google Sheets","versions":["v1.0.2","v2.0.0","v2.1.0"],"npm":"v2.1.0","public":true},{"module":"facebook","name":"Facebook Messenger","versions":["v0.1.0"],"public":true},{"module":"godata","name":"Go.Data","versions":["v3.1.0"],"public":true},{"module":"http","name":"HTTP","versions":["v2.4.15","v3.1.7","v3.1.11","v3.1.12","v4.0.0","v4.2.1"],"public":true,"npm":"v4.1.0"},{"module":"khanacademy","name":"Khan Academy","versions":["v0.2.0"],"public":true},{"module":"kobotoolbox","name":"Kobo Toolbox","versions":["v1.0.4"],"public":true},{"module":"magpi","name":"Magpi","versions":["v0.3.2"],"public":true},{"module":"mailchimp","name":"Mailchimp","versions":["v0.2.0"],"public":true},{"module":"mailgun","name":"Mailgun","versions":["v0.2.2"],"public":true},{"module":"maximo","name":"IBM Maximo EAM","versions":["v0.2.0"],"public":true},{"module":"medicmobile","name":"Medic Mobile","versions":["v0.2.0"],"public":true},{"module":"mogli","name":"Mogli SMS","versions":["v0.2.1"],"public":true},{"module":"mongodb","name":"MongoDB","versions":["v1.0.4"],"public":true},{"module":"mssql","name":"Azure/MS SQL","versions":["v2.3.3","v2.6.1","v2.6.4","v2.6.9","v2.6.11","v3.0.0","v3.1.0"],"npm":"v3.1.0","public":true},{"module":"mysql","name":"MySQL","versions":["v1.1.1","v1.2.0"],"public":true},{"module":"nexmo","name":"Nexmo","versions":["v0.1.1"],"public":true},{"module":"openfn","name":"OpenFn","versions":["v1.1.3","v1.1.4"],"public":true},{"module":"openhim","name":"OpenHIM","versions":["v0.0.3"],"public":true},{"module":"openmrs","name":"OpenMRS","versions":["v0.9.2"],"public":true},{"module":"postgresql","name":"PostgreSQL","versions":["v2.4.0","v3.1.4","v3.3.2","v3.3.1","v3.3.3","v3.4.0"],"npm":"v3.4.0","public":true},{"module":"primero","name":"Primero","versions":["v1.2.0","v2.2.3","v2.2.8","v2.3.4","v2.3.5","v2.3.6","v2.4.4","v2.7.0","v2.7.2","v2.8.0","v2.9.1","v2.9.2","v2.10.0"],"npm":"v2.9.1","public":true},{"module":"progres","name":"Progres","versions":["v1.1.0"],"public":true},{"module":"rapidpro","name":"RapidPro","versions":["v0.4.7"],"public":true},{"module":"resourcemap","name":"Resource Map","versions":["v0.1.0"],"public":true},{"module":"salesforce","name":"Salesforce","versions":["v1.3.2","v2.3.2","v2.3.5","v2.4.0","v2.6.3","v2.7.2","v2.7.3","v2.7.4","v2.8.1","v2.9.0","v2.10.0","v2.11.0"],"npm":"v2.11.0","public":true},{"module":"sftp","name":"SFTP","versions":["v0.3.3","v0.4.0","v0.6.1","v0.6.2"],"npm":"v0.6.1","public":true},{"module":"smpp","name":"SMPP","versions":["v1.1.0"],"public":true},{"module":"surveycto","name":"SurveyCTO","versions":["v1.0.0"],"public":true},{"module":"telerivet","name":"Telerivet","versions":["v0.0.2"],"public":true},{"module":"twilio","name":"Twilio","versions":["v0.2.0","v0.2.1"],"public":true},{"module":"vtiger","name":"vtiger CRM","versions":["v1.0.0"],"public":true},{"module":"zoho","name":"Zoho Reports","versions":["v0.0.2","v0.1.0"],"public":true}]');function u(){const a={};g.filter((a=>a.name.includes("language-"))).map((a=>{const e=a.name,p=e.substring(e.indexOf("-")+1,e.lastIndexOf("@")),n=e.split("@")[2];return{module:p,version:n,url:`https://github.com/OpenFn/adaptors/tree/%40openfn/language-${p}%40${n}/packages/${p}`}})).forEach((e=>{a[e.module]={module:e.module,versions:{...a[e.module]?.versions,[e.version]:{version:`v${e.version}`,url:e.url}}}})),f.forEach((e=>{a[e.module]={module:a[e.module]?.module||e.module,versions:{...a[e.module]?.versions}};e.versions.filter((a=>!e.npm||-1==l(a.substring(1),e.npm.substring(1)))).forEach((p=>{a[e.module].versions[p]={version:p,url:`https://www.github.com/openfn/language-${e.module}/tree/${p}`}}))}));return Object.values(a).sort(((a,e)=>a.module>e.module?1:e.module>a.module?-1:0)).map((a=>({...a,versions:Object.values(a.versions)})))}const h=JSON.parse('[{"name":"asana","docsId":"packages/asana-docs","readmeId":"packages/asana-readme","changelogId":"packages/asana-changelog","configurationSchemaId":"packages/asana-configuration-schema"},{"name":"beyonic","docsId":"packages/beyonic-docs","readmeId":"packages/beyonic-readme","changelogId":"packages/beyonic-changelog","configurationSchemaId":"packages/beyonic-configuration-schema"},{"name":"bigquery","docsId":"packages/bigquery-docs","readmeId":"packages/bigquery-readme","changelogId":"packages/bigquery-changelog","configurationSchemaId":"packages/bigquery-configuration-schema"},{"name":"commcare","docsId":"packages/commcare-docs","readmeId":"packages/commcare-readme","changelogId":"packages/commcare-changelog","configurationSchemaId":"packages/commcare-configuration-schema"},{"name":"common","docsId":"packages/common-docs","readmeId":"packages/common-readme","changelogId":"packages/common-changelog","configurationSchemaId":"packages/common-configuration-schema"},{"name":"dhis2","docsId":"packages/dhis2-docs","readmeId":"packages/dhis2-readme","changelogId":"packages/dhis2-changelog","configurationSchemaId":"packages/dhis2-configuration-schema"},{"name":"dynamics","docsId":"packages/dynamics-docs","readmeId":"packages/dynamics-readme","changelogId":"packages/dynamics-changelog","configurationSchemaId":"packages/dynamics-configuration-schema"},{"name":"facebook","docsId":"packages/facebook-docs","readmeId":"packages/facebook-readme","changelogId":"packages/facebook-changelog","configurationSchemaId":"packages/facebook-configuration-schema"},{"name":"fhir","docsId":"packages/fhir-docs","readmeId":"packages/fhir-readme","changelogId":"packages/fhir-changelog","configurationSchemaId":"packages/fhir-configuration-schema"},{"name":"godata","docsId":"packages/godata-docs","readmeId":"packages/godata-readme","changelogId":"packages/godata-changelog","configurationSchemaId":"packages/godata-configuration-schema"},{"name":"googlehealthcare","docsId":"packages/googlehealthcare-docs","readmeId":"packages/googlehealthcare-readme","changelogId":"packages/googlehealthcare-changelog","configurationSchemaId":"packages/googlehealthcare-configuration-schema"},{"name":"googlesheets","docsId":"packages/googlesheets-docs","readmeId":"packages/googlesheets-readme","changelogId":"packages/googlesheets-changelog","configurationSchemaId":"packages/googlesheets-configuration-schema"},{"name":"hive","docsId":"packages/hive-docs","readmeId":"packages/hive-readme","changelogId":"packages/hive-changelog","configurationSchemaId":"packages/hive-configuration-schema"},{"name":"http","docsId":"packages/http-docs","readmeId":"packages/http-readme","changelogId":"packages/http-changelog","configurationSchemaId":"packages/http-configuration-schema"},{"name":"khanacademy","docsId":"packages/khanacademy-docs","readmeId":"packages/khanacademy-readme","changelogId":"packages/khanacademy-changelog","configurationSchemaId":"packages/khanacademy-configuration-schema"},{"name":"kobotoolbox","docsId":"packages/kobotoolbox-docs","readmeId":"packages/kobotoolbox-readme","changelogId":"packages/kobotoolbox-changelog","configurationSchemaId":"packages/kobotoolbox-configuration-schema"},{"name":"magpi","docsId":"packages/magpi-docs","readmeId":"packages/magpi-readme","changelogId":"packages/magpi-changelog","configurationSchemaId":"packages/magpi-configuration-schema"},{"name":"mailchimp","docsId":"packages/mailchimp-docs","readmeId":"packages/mailchimp-readme","changelogId":"packages/mailchimp-changelog","configurationSchemaId":"packages/mailchimp-configuration-schema"},{"name":"mailgun","docsId":"packages/mailgun-docs","readmeId":"packages/mailgun-readme","changelogId":"packages/mailgun-changelog","configurationSchemaId":"packages/mailgun-configuration-schema"},{"name":"maximo","docsId":"packages/maximo-docs","readmeId":"packages/maximo-readme","changelogId":"packages/maximo-changelog","configurationSchemaId":"packages/maximo-configuration-schema"},{"name":"medicmobile","docsId":"packages/medicmobile-docs","readmeId":"packages/medicmobile-readme","changelogId":"packages/medicmobile-changelog","configurationSchemaId":"packages/medicmobile-configuration-schema"},{"name":"mogli","docsId":"packages/mogli-docs","readmeId":"packages/mogli-readme","changelogId":"packages/mogli-changelog","configurationSchemaId":"packages/mogli-configuration-schema"},{"name":"mongodb","docsId":"packages/mongodb-docs","readmeId":"packages/mongodb-readme","changelogId":"packages/mongodb-changelog","configurationSchemaId":"packages/mongodb-configuration-schema"},{"name":"msgraph","docsId":"packages/msgraph-docs","readmeId":"packages/msgraph-readme","changelogId":"packages/msgraph-changelog","configurationSchemaId":"packages/msgraph-configuration-schema"},{"name":"mssql","docsId":"packages/mssql-docs","readmeId":"packages/mssql-readme","changelogId":"packages/mssql-changelog","configurationSchemaId":"packages/mssql-configuration-schema"},{"name":"mysql","docsId":"packages/mysql-docs","readmeId":"packages/mysql-readme","changelogId":"packages/mysql-changelog","configurationSchemaId":"packages/mysql-configuration-schema"},{"name":"nexmo","docsId":"packages/nexmo-docs","readmeId":"packages/nexmo-readme","changelogId":"packages/nexmo-changelog","configurationSchemaId":"packages/nexmo-configuration-schema"},{"name":"ocl","docsId":"packages/ocl-docs","readmeId":"packages/ocl-readme","changelogId":"packages/ocl-changelog","configurationSchemaId":"packages/ocl-configuration-schema"},{"name":"openfn","docsId":"packages/openfn-docs","readmeId":"packages/openfn-readme","changelogId":"packages/openfn-changelog","configurationSchemaId":"packages/openfn-configuration-schema"},{"name":"openhim","docsId":"packages/openhim-docs","readmeId":"packages/openhim-readme","changelogId":"packages/openhim-changelog","configurationSchemaId":"packages/openhim-configuration-schema"},{"name":"openmrs","docsId":"packages/openmrs-docs","readmeId":"packages/openmrs-readme","changelogId":"packages/openmrs-changelog","configurationSchemaId":"packages/openmrs-configuration-schema"},{"name":"postgresql","docsId":"packages/postgresql-docs","readmeId":"packages/postgresql-readme","changelogId":"packages/postgresql-changelog","configurationSchemaId":"packages/postgresql-configuration-schema"},{"name":"primero","docsId":"packages/primero-docs","readmeId":"packages/primero-readme","changelogId":"packages/primero-changelog","configurationSchemaId":"packages/primero-configuration-schema"},{"name":"progres","docsId":"packages/progres-docs","readmeId":"packages/progres-readme","changelogId":"packages/progres-changelog","configurationSchemaId":"packages/progres-configuration-schema"},{"name":"rapidpro","docsId":"packages/rapidpro-docs","readmeId":"packages/rapidpro-readme","changelogId":"packages/rapidpro-changelog","configurationSchemaId":"packages/rapidpro-configuration-schema"},{"name":"resourcemap","docsId":"packages/resourcemap-docs","readmeId":"packages/resourcemap-readme","changelogId":"packages/resourcemap-changelog","configurationSchemaId":"packages/resourcemap-configuration-schema"},{"name":"salesforce","docsId":"packages/salesforce-docs","readmeId":"packages/salesforce-readme","changelogId":"packages/salesforce-changelog","configurationSchemaId":"packages/salesforce-configuration-schema"},{"name":"sftp","docsId":"packages/sftp-docs","readmeId":"packages/sftp-readme","changelogId":"packages/sftp-changelog","configurationSchemaId":"packages/sftp-configuration-schema"},{"name":"smpp","docsId":"packages/smpp-docs","readmeId":"packages/smpp-readme","changelogId":"packages/smpp-changelog","configurationSchemaId":"packages/smpp-configuration-schema"},{"name":"surveycto","docsId":"packages/surveycto-docs","readmeId":"packages/surveycto-readme","changelogId":"packages/surveycto-changelog","configurationSchemaId":"packages/surveycto-configuration-schema"},{"name":"telerivet","docsId":"packages/telerivet-docs","readmeId":"packages/telerivet-readme","changelogId":"packages/telerivet-changelog","configurationSchemaId":"packages/telerivet-configuration-schema"},{"name":"template","docsId":"packages/template-docs","readmeId":"packages/template-readme","changelogId":"packages/template-changelog","configurationSchemaId":"packages/template-configuration-schema"},{"name":"twilio","docsId":"packages/twilio-docs","readmeId":"packages/twilio-readme","changelogId":"packages/twilio-changelog","configurationSchemaId":"packages/twilio-configuration-schema"},{"name":"vtiger","docsId":"packages/vtiger-docs","readmeId":"packages/vtiger-readme","changelogId":"packages/vtiger-changelog","configurationSchemaId":"packages/vtiger-configuration-schema"},{"name":"zoho","docsId":"packages/zoho-docs","readmeId":"packages/zoho-readme","changelogId":"packages/zoho-changelog","configurationSchemaId":"packages/zoho-configuration-schema"}]'),F={id:"adaptors-intro",title:"Adaptors",sidebar_label:"Introduction",slug:"/"},O=void 0,_={unversionedId:"adaptors-intro",id:"adaptors-intro",title:"Adaptors",description:"Connect Anything.",source:"@site/adaptors/intro.mdx",sourceDirName:".",slug:"/",permalink:"/adaptors/",draft:!1,tags:[],version:"current",frontMatter:{id:"adaptors-intro",title:"Adaptors",sidebar_label:"Introduction",slug:"/"},sidebar:"adaptors",next:{title:"Library Examples",permalink:"/adaptors/library"}},Z={},A=[{value:"Connect Anything.",id:"connect-anything",level:2},{value:"What's an adaptor?",id:"whats-an-adaptor",level:2},{value:"Where to find them",id:"where-to-find-them",level:2},{value:"On the OpenFn platform",id:"on-the-openfn-platform",level:3},{value:"On npm",id:"on-npm",level:3},{value:"Install on platform via npm",id:"install-on-platform-via-npm",level:4},{value:"Building and extending adaptors",id:"building-and-extending-adaptors",level:2}],L={toc:A},J="wrapper";function z(a){let{components:e,...s}=a;return(0,o.kt)(J,(0,n.Z)({},L,s,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"connect-anything"},"Connect ",(0,o.kt)("em",{parentName:"h2"},"Anything.")),(0,o.kt)("p",null,"First, it's important to note that OpenFn can connect to ",(0,o.kt)("em",{parentName:"p"},"any system"),' via HTTP,\nbut our community has also built dozens of "adaptors" to save time & money while\nconnecting to most commonly used digital public goods and key ICT4D systems.'),(0,o.kt)("p",null,"You can even run web scraping or browser automation tools with OpenFn. See the\n",(0,o.kt)("a",{parentName:"p",href:"/documentation/faqs#can-openfn-integrate-with-my-custom-app"},"FAQs")," and\n",(0,o.kt)("a",{parentName:"p",href:"/documentation/source-apps"},"Generic Data Sources")," for more info on how to\nconnect to systems without custom adaptors. It's almost like a universal\ntranslator... \ud83d\udd96"),(0,o.kt)("h2",{id:"whats-an-adaptor"},"What's an adaptor?"),(0,o.kt)("p",null,'An adaptor is an open-source Javascript or Typescript module that provides\nOpenFn users with a clean set of helper functions that help communicate with a\nspecific external system. In the past, we often referred to them as "language\npackages" and the two terms are sometimes used interchangeably, but the\npreferred way of communicating about adaptors is as follows:'),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},'"What ',(0,o.kt)("em",{parentName:"li"},(0,o.kt)("strong",{parentName:"em"},"adaptor")),' is that job using?" ("That job is using\n',(0,o.kt)("inlineCode",{parentName:"li"},"language-dhis2"),'.")'),(0,o.kt)("li",{parentName:"ul"},'"The DHIS2 ',(0,o.kt)("em",{parentName:"li"},(0,o.kt)("strong",{parentName:"em"},"adaptor"))," is called ",(0,o.kt)("inlineCode",{parentName:"li"},"language-dhis2"),'."'),(0,o.kt)("li",{parentName:"ul"},"\"I don't have the right ",(0,o.kt)("em",{parentName:"li"},(0,o.kt)("strong",{parentName:"em"},"adaptor"))," for this job, let me install it by\nrunning ",(0,o.kt)("inlineCode",{parentName:"li"},"npm install @openfn/language-dhis2"),".")),(0,o.kt)("p",null,"In short, ",(0,o.kt)("em",{parentName:"p"},"most")," adaptors follow the naming convention ",(0,o.kt)("inlineCode",{parentName:"p"},"@openfn/language-xyz"),"."),(0,o.kt)("h2",{id:"where-to-find-them"},"Where to find them"),(0,o.kt)("div",null,"Here's a list of the ",u().length," publicly supported OpenFn adaptors. Note that only some have been migrated to our new and have their docs sites served here. For the rest, you can view the docs and source by clicking into the adaptor and choosing your version."),(0,o.kt)("br",null),(0,o.kt)("div",null,u().map((a=>(0,o.kt)("details",null,(0,o.kt)("summary",null,(0,o.kt)("b",null,a.module),h.find((e=>e.name==a.module))&&(0,o.kt)(t.Fragment,null," (",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).docsId}`},"docs"),")")),h.find((e=>e.name==a.module))?(0,o.kt)("div",null,"The current"," ",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).docsId}`},"API docs"),", ",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).changelogId}`},"changelog"),", and ",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).readmeId}`},"developer readme")," for ",(0,o.kt)("b",null,a.module)," are available here. You can view the source & documentation via these links:"):(0,o.kt)("div",null,"This adaptor hasn't been migrated yet, but it still works just fine and you can view the source & documentation via these links:"),(0,o.kt)("ul",null,a.versions.sort(((a,e)=>l(e.version,a.version))).map((a=>(0,o.kt)("li",null,(0,o.kt)("a",{href:a.url,target:"_blank"},a.version)," ")))))))),(0,o.kt)("h3",{id:"on-the-openfn-platform"},"On the OpenFn platform"),(0,o.kt)("p",null,'When creating or editing a job on platform, you can choose the adaptor to run\nthe job. This way you "import" the needed operations. Simply open the dropdown\nlist of adaptors, and click on one.'),(0,o.kt)("img",{src:"/img/adaptor_choice_openfn.png",width:"300"}),(0,o.kt)("h3",{id:"on-npm"},"On npm"),(0,o.kt)("p",null,"Most of our adaptors are also available on\n",(0,o.kt)("a",{parentName:"p",href:"https://www.npmjs.com/search?q=%40openfn"},"npmjs"),"."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Adaptors list in npm",src:p(57361).Z,width:"2766",height:"1266"})),(0,o.kt)("h4",{id:"install-on-platform-via-npm"},"Install on platform via npm"),(0,o.kt)("p",null,"When using ",(0,o.kt)("inlineCode",{parentName:"p"},"platform"),", you can install adaptors that are not part of the\nrecommended adaptors picklist directly from\n",(0,o.kt)("a",{parentName:"p",href:"https://www.npmjs.com/search?q=%40openfn"},"npm"),"."),(0,o.kt)("p",null,"To install from npm, click on the ",(0,o.kt)("em",{parentName:"p"},"cloud download icon")," next to the adaptor\nversion picklist. In the ",(0,o.kt)("strong",{parentName:"p"},"Select Unreleased Adaptor")," dialog box, enter the\n",(0,o.kt)("inlineCode",{parentName:"p"},"adaptor name"),"(e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"dhis2")," for ",(0,o.kt)("inlineCode",{parentName:"p"},"language-dhis2"),") and the corresponding\n",(0,o.kt)("inlineCode",{parentName:"p"},"version number"),"(e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"v2.3.4"),"), as listed on\n",(0,o.kt)("a",{parentName:"p",href:"https://www.npmjs.com/search?q=%40openfn"},"npmjs"),", for the adaptor of your\nchoice. The platform will attempt to install the selected adaptor version it can\nbe used to run the specified job."),(0,o.kt)("p",null,"Note that, after this custom installation of the adaptor, ",(0,o.kt)("inlineCode",{parentName:"p"},"platform")," will not\nadd this adaptor version to the picklist of recommended adaptors in\n",(0,o.kt)("a",{parentName:"p",href:"/documentation/jobs/job-studio"},"JobStudio"),", but you are guaranteed that the\nadaptor will be available to use in any of your jobs as long as you specify it\nvia the ",(0,o.kt)("strong",{parentName:"p"},"Select Unreleased Adaptor")," dialog."),(0,o.kt)("h2",{id:"building-and-extending-adaptors"},"Building and extending adaptors"),(0,o.kt)("p",null,"The source code and technical documentation for developing or extending existing\nadaptors can be found\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors#working-with-adaptors"},"here"),"."))}z.isMDXComponent=!0},57361:(a,e,p)=>{p.d(e,{Z:()=>n});const n=p.p+"assets/images/adaptor_npm-1ecb3d844ff20c11d9f7ee009a1d4e9a.png"}}]); \ No newline at end of file diff --git a/assets/js/6cb21577.dd5d259c.js b/assets/js/6cb21577.dd5d259c.js deleted file mode 100644 index c98e383b0c6..00000000000 --- a/assets/js/6cb21577.dd5d259c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[32674],{3905:(a,e,p)=>{p.d(e,{Zo:()=>d,kt:()=>g});var n=p(67294);function t(a,e,p){return e in a?Object.defineProperty(a,e,{value:p,enumerable:!0,configurable:!0,writable:!0}):a[e]=p,a}function o(a,e){var p=Object.keys(a);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(a);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}))),p.push.apply(p,n)}return p}function l(a){for(var e=1;e=0||(t[p]=a[p]);return t}(a,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(a);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(a,p)&&(t[p]=a[p])}return t}var b=n.createContext({}),r=function(a){var e=n.useContext(b),p=e;return a&&(p="function"==typeof a?a(e):l(l({},e),a)),p},d=function(a){var e=r(a.components);return n.createElement(b.Provider,{value:e},a.children)},i="mdxType",m={inlineCode:"code",wrapper:function(a){var e=a.children;return n.createElement(n.Fragment,{},e)}},c=n.forwardRef((function(a,e){var p=a.components,t=a.mdxType,o=a.originalType,b=a.parentName,d=s(a,["components","mdxType","originalType","parentName"]),i=r(p),c=t,g=i["".concat(b,".").concat(c)]||i[c]||m[c]||o;return p?n.createElement(g,l(l({ref:e},d),{},{components:p})):n.createElement(g,l({ref:e},d))}));function g(a,e){var p=arguments,t=e&&e.mdxType;if("string"==typeof a||t){var o=p.length,l=new Array(o);l[0]=c;var s={};for(var b in e)hasOwnProperty.call(e,b)&&(s[b]=e[b]);s.originalType=a,s[i]="string"==typeof a?a:t,l[1]=s;for(var r=2;r{p.r(e),p.d(e,{assets:()=>Z,contentTitle:()=>O,default:()=>z,frontMatter:()=>F,metadata:()=>_,toc:()=>A});var n=p(87462),t=p(67294),o=p(3905);const l=(a,e)=>{const p=b(a),n=b(e),t=p.pop(),o=n.pop(),l=m(p,n);return 0!==l?l:t&&o?m(t.split("."),o.split(".")):t||o?t?-1:1:0},s=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,b=a=>{if("string"!=typeof a)throw new TypeError("Invalid argument expected string");const e=a.match(s);if(!e)throw new Error(`Invalid argument not valid semver ('${a}' received)`);return e.shift(),e},r=a=>"*"===a||"x"===a||"X"===a,d=a=>{const e=parseInt(a,10);return isNaN(e)?a:e},i=(a,e)=>{if(r(a)||r(e))return 0;const[p,n]=((a,e)=>typeof a!=typeof e?[String(a),String(e)]:[a,e])(d(a),d(e));return p>n?1:p{for(let p=0;p":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]},g=(Object.keys(c),JSON.parse('[{"name":"@openfn/migrate-adaptor@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/migrate-adaptor@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/migrate-adaptor@1.0.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL21pZ3JhdGUtYWRhcHRvckAxLjAuMQ"},{"name":"@openfn/language-zoho@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4zLjE"},{"name":"@openfn/language-zoho@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4yLjM"},{"name":"@openfn/language-zoho@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4yLjI"},{"name":"@openfn/language-zoho@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4yLjE"},{"name":"@openfn/language-vtiger@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjIuMQ"},{"name":"@openfn/language-vtiger@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.1.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjEuMw"},{"name":"@openfn/language-vtiger@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.1.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjEuMg"},{"name":"@openfn/language-vtiger@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.1.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjEuMQ"},{"name":"@openfn/language-twilio@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjQuMQ"},{"name":"@openfn/language-twilio@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.4","commit":{"sha":"2426f4c77af264fca6892ee32f77556346ad4e9e","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2426f4c77af264fca6892ee32f77556346ad4e9e"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuNA"},{"name":"@openfn/language-twilio@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMw"},{"name":"@openfn/language-twilio@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMg"},{"name":"@openfn/language-twilio@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMQ"},{"name":"@openfn/language-twilio@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMA"},{"name":"@openfn/language-template@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@3.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDMuMC4x"},{"name":"@openfn/language-template@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@2.0.0","commit":{"sha":"35e92ab1418380e26f36269167fcbb7e8c1f5259","url":"https://api.github.com/repos/OpenFn/adaptors/commits/35e92ab1418380e26f36269167fcbb7e8c1f5259"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDIuMC4w"},{"name":"@openfn/language-template@1.7.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.8","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy44"},{"name":"@openfn/language-template@1.7.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.7","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy43"},{"name":"@openfn/language-template@1.7.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.6","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy42"},{"name":"@openfn/language-template@1.7.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.5","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy41"},{"name":"@openfn/language-template@1.7.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.4","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy40"},{"name":"@openfn/language-template@1.7.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.3","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4z"},{"name":"@openfn/language-template@1.7.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.2","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4y"},{"name":"@openfn/language-template@1.7.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.1","commit":{"sha":"87c52be93bef2fb37a7d6d0df99feab5ed8611f1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/87c52be93bef2fb37a7d6d0df99feab5ed8611f1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4x"},{"name":"@openfn/language-template@1.7.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.0","commit":{"sha":"9b2b65c1a420ce72139677f49033fb4a3de57944","url":"https://api.github.com/repos/OpenFn/adaptors/commits/9b2b65c1a420ce72139677f49033fb4a3de57944"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4w"},{"name":"@openfn/language-telerivet@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjIuMQ"},{"name":"@openfn/language-telerivet@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuNA"},{"name":"@openfn/language-telerivet@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuMw"},{"name":"@openfn/language-telerivet@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuMg"},{"name":"@openfn/language-telerivet@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuMA"},{"name":"@openfn/language-surveycto@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjIuMQ"},{"name":"@openfn/language-surveycto@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuNA"},{"name":"@openfn/language-surveycto@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMw"},{"name":"@openfn/language-surveycto@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMg"},{"name":"@openfn/language-surveycto@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMQ"},{"name":"@openfn/language-surveycto@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMA"},{"name":"@openfn/language-smpp@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4zLjE"},{"name":"@openfn/language-smpp@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4yLjM"},{"name":"@openfn/language-smpp@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4yLjI"},{"name":"@openfn/language-smpp@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4yLjE"},{"name":"@openfn/language-sftp@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@1.0.1","commit":{"sha":"c76ed1c521296b9abc6e9bfea25cfb347c48c642","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c76ed1c521296b9abc6e9bfea25cfb347c48c642"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMS4wLjE"},{"name":"@openfn/language-sftp@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@1.0.0","commit":{"sha":"65243bdaf913bdd5d17cb3984bda594290cd5c58","url":"https://api.github.com/repos/OpenFn/adaptors/commits/65243bdaf913bdd5d17cb3984bda594290cd5c58"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMS4wLjA"},{"name":"@openfn/language-sftp@0.8.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44Ljg"},{"name":"@openfn/language-sftp@0.8.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44Ljc"},{"name":"@openfn/language-sftp@0.8.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjY"},{"name":"@openfn/language-sftp@0.8.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjU"},{"name":"@openfn/language-sftp@0.8.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjQ"},{"name":"@openfn/language-sftp@0.8.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjM"},{"name":"@openfn/language-sftp@0.8.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjI"},{"name":"@openfn/language-sftp@0.8.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjE"},{"name":"@openfn/language-sftp@0.7.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.3","commit":{"sha":"e50ccd9f126ca73a80bc8d0294817ca077398bf1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e50ccd9f126ca73a80bc8d0294817ca077398bf1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjM"},{"name":"@openfn/language-sftp@0.7.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.2","commit":{"sha":"7a6059dc2f1b5f79447adf7f48d36a0b7aeb2372","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7a6059dc2f1b5f79447adf7f48d36a0b7aeb2372"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjI"},{"name":"@openfn/language-sftp@0.7.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.1","commit":{"sha":"eced2b1d8f2a5399e3120ae2a2b092463a1f72f1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/eced2b1d8f2a5399e3120ae2a2b092463a1f72f1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjE"},{"name":"@openfn/language-sftp@0.7.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.0","commit":{"sha":"fdbbfebcabd9df25617801ad6c2147862230efc6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fdbbfebcabd9df25617801ad6c2147862230efc6"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjA"},{"name":"@openfn/language-sftp@0.6.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.9","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42Ljk"},{"name":"@openfn/language-sftp@0.6.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.8","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42Ljg"},{"name":"@openfn/language-sftp@0.6.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.7","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42Ljc"},{"name":"@openfn/language-sftp@0.6.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.6","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjY"},{"name":"@openfn/language-sftp@0.6.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.5","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjU"},{"name":"@openfn/language-sftp@0.6.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.4","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjQ"},{"name":"@openfn/language-sftp@0.6.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.3","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjM"},{"name":"@openfn/language-sftp@0.6.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.2","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjI"},{"name":"@openfn/language-sftp@0.6.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjE"},{"name":"@openfn/language-salesforce@5.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@5.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@5.0.1","commit":{"sha":"ebdd3aacdabcb42e383715e9a22f7525341bf00c","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ebdd3aacdabcb42e383715e9a22f7525341bf00c"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANS4wLjE"},{"name":"@openfn/language-salesforce@5.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@5.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@5.0.0","commit":{"sha":"ebdd3aacdabcb42e383715e9a22f7525341bf00c","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ebdd3aacdabcb42e383715e9a22f7525341bf00c"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANS4wLjA"},{"name":"@openfn/language-salesforce@5.0.0-alpha","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@5.0.0-alpha","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@5.0.0-alpha","commit":{"sha":"ebdd3aacdabcb42e383715e9a22f7525341bf00c","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ebdd3aacdabcb42e383715e9a22f7525341bf00c"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANS4wLjAtYWxwaGE"},{"name":"@openfn/language-salesforce@4.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.2.2","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4yLjI"},{"name":"@openfn/language-salesforce@4.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.2.1","commit":{"sha":"16e1a95db48f32601b277e7ffcd9eb3bcbba85cd","url":"https://api.github.com/repos/OpenFn/adaptors/commits/16e1a95db48f32601b277e7ffcd9eb3bcbba85cd"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4yLjE"},{"name":"@openfn/language-salesforce@4.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.2.0","commit":{"sha":"377c432c960070902b0d686c2502e5d4137bc078","url":"https://api.github.com/repos/OpenFn/adaptors/commits/377c432c960070902b0d686c2502e5d4137bc078"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4yLjA"},{"name":"@openfn/language-salesforce@4.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.1.0","commit":{"sha":"a8df89d8e4537b7c1645f2db2c0f792d49535d50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a8df89d8e4537b7c1645f2db2c0f792d49535d50"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4xLjA"},{"name":"@openfn/language-salesforce@4.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.8","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjg"},{"name":"@openfn/language-salesforce@4.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.7","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjc"},{"name":"@openfn/language-salesforce@4.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.6","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjY"},{"name":"@openfn/language-salesforce@4.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjU"},{"name":"@openfn/language-salesforce@4.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjQ"},{"name":"@openfn/language-salesforce@4.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjM"},{"name":"@openfn/language-salesforce@4.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjI"},{"name":"@openfn/language-salesforce@4.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjE"},{"name":"@openfn/language-salesforce@3.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.7","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjc"},{"name":"@openfn/language-salesforce@3.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.6","commit":{"sha":"0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjY"},{"name":"@openfn/language-salesforce@3.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjU"},{"name":"@openfn/language-salesforce@3.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjQ"},{"name":"@openfn/language-salesforce@3.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.3","commit":{"sha":"1817f08cb8d8d586c710d5ca7e50f2f4230a2d35","url":"https://api.github.com/repos/OpenFn/adaptors/commits/1817f08cb8d8d586c710d5ca7e50f2f4230a2d35"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjM"},{"name":"@openfn/language-salesforce@3.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.2","commit":{"sha":"d6c0c7e39242ffea633e4f5b2569027feeaed2d4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/d6c0c7e39242ffea633e4f5b2569027feeaed2d4"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjI"},{"name":"@openfn/language-salesforce@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.1","commit":{"sha":"f5cf160440f03f0455a0251d8fc8ac6026665e49","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f5cf160440f03f0455a0251d8fc8ac6026665e49"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjE"},{"name":"@openfn/language-salesforce@3.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.0","commit":{"sha":"d7c2816033818da1d83656cea56c4681bf384105","url":"https://api.github.com/repos/OpenFn/adaptors/commits/d7c2816033818da1d83656cea56c4681bf384105"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjA"},{"name":"@openfn/language-salesforce@2.12.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4z"},{"name":"@openfn/language-salesforce@2.12.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4y"},{"name":"@openfn/language-salesforce@2.12.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4x"},{"name":"@openfn/language-salesforce@2.12.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4w"},{"name":"@openfn/language-salesforce@2.11.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.11.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.11.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMS4y"},{"name":"@openfn/language-salesforce@2.11.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.11.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.11.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMS4x"},{"name":"@openfn/language-salesforce@2.11.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.11.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.11.0","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMS4w"},{"name":"@openfn/language-resourcemap@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMy4x"},{"name":"@openfn/language-resourcemap@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMi4z"},{"name":"@openfn/language-resourcemap@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMi4y"},{"name":"@openfn/language-resourcemap@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMi4x"},{"name":"@openfn/language-rapidpro@1.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC44"},{"name":"@openfn/language-rapidpro@1.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC43"},{"name":"@openfn/language-rapidpro@1.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC42"},{"name":"@openfn/language-rapidpro@1.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC41"},{"name":"@openfn/language-rapidpro@1.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC40"},{"name":"@openfn/language-rapidpro@1.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC4z"},{"name":"@openfn/language-rapidpro@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC4y"},{"name":"@openfn/language-rapidpro@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC4x"},{"name":"@openfn/language-rapidpro@0.5.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS42"},{"name":"@openfn/language-rapidpro@0.5.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS41"},{"name":"@openfn/language-rapidpro@0.5.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS40"},{"name":"@openfn/language-rapidpro@0.5.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS4z"},{"name":"@openfn/language-rapidpro@0.5.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS4y"},{"name":"@openfn/language-rapidpro@0.5.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS4w"},{"name":"@openfn/language-progres@1.3.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjg"},{"name":"@openfn/language-progres@1.3.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjc"},{"name":"@openfn/language-progres@1.3.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjY"},{"name":"@openfn/language-progres@1.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjU"},{"name":"@openfn/language-progres@1.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjQ"},{"name":"@openfn/language-progres@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjM"},{"name":"@openfn/language-progres@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjI"},{"name":"@openfn/language-progres@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjE"},{"name":"@openfn/language-progres@1.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjU"},{"name":"@openfn/language-progres@1.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjQ"},{"name":"@openfn/language-progres@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjM"},{"name":"@openfn/language-progres@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjI"},{"name":"@openfn/language-progres@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjE"},{"name":"@openfn/language-progres@1.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjA"},{"name":"@openfn/language-primero@2.11.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS44"},{"name":"@openfn/language-primero@2.11.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS43"},{"name":"@openfn/language-primero@2.11.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS42"},{"name":"@openfn/language-primero@2.11.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS41"},{"name":"@openfn/language-primero@2.11.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS40"},{"name":"@openfn/language-primero@2.11.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS4z"},{"name":"@openfn/language-primero@2.11.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS4y"},{"name":"@openfn/language-primero@2.11.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS4x"},{"name":"@openfn/language-primero@2.10.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC42"},{"name":"@openfn/language-primero@2.10.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC41"},{"name":"@openfn/language-primero@2.10.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC40"},{"name":"@openfn/language-primero@2.10.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4z"},{"name":"@openfn/language-primero@2.10.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4y"},{"name":"@openfn/language-primero@2.10.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4x"},{"name":"@openfn/language-primero@2.10.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.0","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4w"},{"name":"@openfn/language-primero@2.9.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.9.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.9.2","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi45LjI"},{"name":"@openfn/language-primero@2.9.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.9.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.9.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi45LjE"},{"name":"@openfn/language-postgresql@4.1.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjg"},{"name":"@openfn/language-postgresql@4.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjc"},{"name":"@openfn/language-postgresql@4.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjY"},{"name":"@openfn/language-postgresql@4.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjU"},{"name":"@openfn/language-postgresql@4.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjQ"},{"name":"@openfn/language-postgresql@4.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjM"},{"name":"@openfn/language-postgresql@4.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjI"},{"name":"@openfn/language-postgresql@4.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjE"},{"name":"@openfn/language-postgresql@4.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.0.0","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4wLjA"},{"name":"@openfn/language-postgresql@3.4.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjY"},{"name":"@openfn/language-postgresql@3.4.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjU"},{"name":"@openfn/language-postgresql@3.4.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjQ"},{"name":"@openfn/language-postgresql@3.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjM"},{"name":"@openfn/language-postgresql@3.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjI"},{"name":"@openfn/language-postgresql@3.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjE"},{"name":"@openfn/language-postgresql@3.4.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjA"},{"name":"@openfn/language-openmrs@2.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjg"},{"name":"@openfn/language-openmrs@2.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjc"},{"name":"@openfn/language-openmrs@2.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjY"},{"name":"@openfn/language-openmrs@2.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjU"},{"name":"@openfn/language-openmrs@2.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjQ"},{"name":"@openfn/language-openmrs@2.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjM"},{"name":"@openfn/language-openmrs@2.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjI"},{"name":"@openfn/language-openmrs@2.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjE"},{"name":"@openfn/language-openmrs@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.1.1","commit":{"sha":"9909077c42eaeb4231894e5138c23ad33e630c7a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/9909077c42eaeb4231894e5138c23ad33e630c7a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4xLjE"},{"name":"@openfn/language-openmrs@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.1.0","commit":{"sha":"35e92ab1418380e26f36269167fcbb7e8c1f5259","url":"https://api.github.com/repos/OpenFn/adaptors/commits/35e92ab1418380e26f36269167fcbb7e8c1f5259"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4xLjA"},{"name":"@openfn/language-openmrs@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.0.1","commit":{"sha":"a4d370b1d341e1678ccfbb1ff95342fb379a16c6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a4d370b1d341e1678ccfbb1ff95342fb379a16c6"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4wLjE"},{"name":"@openfn/language-openmrs@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.0.0","commit":{"sha":"22ffe402d9d70889a2f5faa22d61d1719d33dd2a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/22ffe402d9d70889a2f5faa22d61d1719d33dd2a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4wLjA"},{"name":"@openfn/language-openmrs@0.10.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC41"},{"name":"@openfn/language-openmrs@0.10.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC40"},{"name":"@openfn/language-openmrs@0.10.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC4z"},{"name":"@openfn/language-openmrs@0.10.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC4y"},{"name":"@openfn/language-openmrs@0.10.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC4x"},{"name":"@openfn/language-openhim@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4yLjE"},{"name":"@openfn/language-openhim@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjQ"},{"name":"@openfn/language-openhim@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjM"},{"name":"@openfn/language-openhim@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjI"},{"name":"@openfn/language-openhim@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjE"},{"name":"@openfn/language-openfn@1.3.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuOA"},{"name":"@openfn/language-openfn@1.3.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNw"},{"name":"@openfn/language-openfn@1.3.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNg"},{"name":"@openfn/language-openfn@1.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNQ"},{"name":"@openfn/language-openfn@1.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNA"},{"name":"@openfn/language-openfn@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuMw"},{"name":"@openfn/language-openfn@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuMg"},{"name":"@openfn/language-openfn@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuMQ"},{"name":"@openfn/language-openfn@1.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.6","commit":{"sha":"35e92ab1418380e26f36269167fcbb7e8c1f5259","url":"https://api.github.com/repos/OpenFn/adaptors/commits/35e92ab1418380e26f36269167fcbb7e8c1f5259"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuNg"},{"name":"@openfn/language-openfn@1.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuNQ"},{"name":"@openfn/language-openfn@1.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuNA"},{"name":"@openfn/language-openfn@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuMw"},{"name":"@openfn/language-openfn@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuMg"},{"name":"@openfn/language-openfn@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuMQ"},{"name":"@openfn/language-ocl@1.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.7","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNw"},{"name":"@openfn/language-ocl@1.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.6","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNg"},{"name":"@openfn/language-ocl@1.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.5","commit":{"sha":"e6778a06c6644e59013a16fb60682e7de1c9ecb5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e6778a06c6644e59013a16fb60682e7de1c9ecb5"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNQ"},{"name":"@openfn/language-ocl@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.4","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNA"},{"name":"@openfn/language-ocl@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.3","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMw"},{"name":"@openfn/language-ocl@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.2","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMg"},{"name":"@openfn/language-ocl@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.1","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMQ"},{"name":"@openfn/language-ocl@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.0","commit":{"sha":"27492e9edf122b2d498820bdb54c3341ab7cf86e","url":"https://api.github.com/repos/OpenFn/adaptors/commits/27492e9edf122b2d498820bdb54c3341ab7cf86e"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMA"},{"name":"@openfn/language-ocl@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjAuMg"},{"name":"@openfn/language-ocl@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjAuMQ"},{"name":"@openfn/language-ocl@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.3.0","commit":{"sha":"9909077c42eaeb4231894e5138c23ad33e630c7a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/9909077c42eaeb4231894e5138c23ad33e630c7a"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjMuMA"},{"name":"@openfn/language-ocl@0.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuNg"},{"name":"@openfn/language-ocl@0.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuNQ"},{"name":"@openfn/language-ocl@0.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuNA"},{"name":"@openfn/language-ocl@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMw"},{"name":"@openfn/language-ocl@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMg"},{"name":"@openfn/language-ocl@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMQ"},{"name":"@openfn/language-ocl@0.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMA"},{"name":"@openfn/language-nexmo@0.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.3","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4z"},{"name":"@openfn/language-nexmo@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.2","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4y"},{"name":"@openfn/language-nexmo@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.1","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4x"},{"name":"@openfn/language-nexmo@0.4.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.0","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4w"},{"name":"@openfn/language-nexmo@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMy4x"},{"name":"@openfn/language-nexmo@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMi4z"},{"name":"@openfn/language-nexmo@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMi4y"},{"name":"@openfn/language-nexmo@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMi4x"},{"name":"@openfn/language-mysql@1.4.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC44"},{"name":"@openfn/language-mysql@1.4.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC43"},{"name":"@openfn/language-mysql@1.4.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC42"},{"name":"@openfn/language-mysql@1.4.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC41"},{"name":"@openfn/language-mysql@1.4.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC40"},{"name":"@openfn/language-mysql@1.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC4z"},{"name":"@openfn/language-mysql@1.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC4y"},{"name":"@openfn/language-mysql@1.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC4x"},{"name":"@openfn/language-mysql@1.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy41"},{"name":"@openfn/language-mysql@1.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy40"},{"name":"@openfn/language-mysql@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy4z"},{"name":"@openfn/language-mysql@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy4y"},{"name":"@openfn/language-mysql@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy4x"},{"name":"@openfn/language-mssql@4.1.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS44"},{"name":"@openfn/language-mssql@4.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS43"},{"name":"@openfn/language-mssql@4.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS42"},{"name":"@openfn/language-mssql@4.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS41"},{"name":"@openfn/language-mssql@4.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS40"},{"name":"@openfn/language-mssql@4.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS4z"},{"name":"@openfn/language-mssql@4.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS4y"},{"name":"@openfn/language-mssql@4.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS4x"},{"name":"@openfn/language-mssql@4.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.8","commit":{"sha":"a4d370b1d341e1678ccfbb1ff95342fb379a16c6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a4d370b1d341e1678ccfbb1ff95342fb379a16c6"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC44"},{"name":"@openfn/language-mssql@4.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.7","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC43"},{"name":"@openfn/language-mssql@4.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.6","commit":{"sha":"2426f4c77af264fca6892ee32f77556346ad4e9e","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2426f4c77af264fca6892ee32f77556346ad4e9e"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC42"},{"name":"@openfn/language-mssql@4.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC41"},{"name":"@openfn/language-mssql@4.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC40"},{"name":"@openfn/language-mssql@4.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4z"},{"name":"@openfn/language-mssql@4.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4y"},{"name":"@openfn/language-mssql@4.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4x"},{"name":"@openfn/language-mssql@4.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4w"},{"name":"@openfn/language-mssql@3.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@3.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@3.1.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDMuMS4y"},{"name":"@openfn/language-mssql@3.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@3.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@3.1.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDMuMS4x"},{"name":"@openfn/language-mssql@3.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@3.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@3.1.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDMuMS4w"},{"name":"@openfn/language-msgraph@0.4.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.4.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.4.0","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC40LjA"},{"name":"@openfn/language-msgraph@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.5","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjU"},{"name":"@openfn/language-msgraph@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.4","commit":{"sha":"dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747","url":"https://api.github.com/repos/OpenFn/adaptors/commits/dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjQ"},{"name":"@openfn/language-msgraph@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.3","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjM"},{"name":"@openfn/language-msgraph@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.2","commit":{"sha":"fa4feaead4b2a6281d1dbb1859b3760314217ca8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fa4feaead4b2a6281d1dbb1859b3760314217ca8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjI"},{"name":"@openfn/language-msgraph@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.1","commit":{"sha":"95da6f2a8492f44a92bdc403f6adc33a76ebe4d6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/95da6f2a8492f44a92bdc403f6adc33a76ebe4d6"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjE"},{"name":"@openfn/language-msgraph@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.0","commit":{"sha":"12faef5ded95acaf0b148aa9a6fdde1c0a4b7111","url":"https://api.github.com/repos/OpenFn/adaptors/commits/12faef5ded95acaf0b148aa9a6fdde1c0a4b7111"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjA"},{"name":"@openfn/language-msgraph@0.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.2.0","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4yLjA"},{"name":"@openfn/language-msgraph@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.1.1","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4xLjE"},{"name":"@openfn/language-msgraph@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.1.0","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4xLjA"},{"name":"@openfn/language-mongodb@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@2.0.0","commit":{"sha":"4aaef4ffa5da2fad3f39866838d1eeff5f7bd546","url":"https://api.github.com/repos/OpenFn/adaptors/commits/4aaef4ffa5da2fad3f39866838d1eeff5f7bd546"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMi4wLjA"},{"name":"@openfn/language-mongodb@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4xLjE"},{"name":"@openfn/language-mongodb@1.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.0.6","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4wLjY"},{"name":"@openfn/language-mongodb@1.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.0.5","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4wLjU"},{"name":"@openfn/language-mongodb@1.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.0.4","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4wLjQ"},{"name":"@openfn/language-mogli@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuNC4x"},{"name":"@openfn/language-mogli@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.4","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy40"},{"name":"@openfn/language-mogli@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy4z"},{"name":"@openfn/language-mogli@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy4y"},{"name":"@openfn/language-mogli@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy4x"},{"name":"@openfn/language-medicmobile@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.4.2","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuNC4y"},{"name":"@openfn/language-medicmobile@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuNC4x"},{"name":"@openfn/language-medicmobile@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4z"},{"name":"@openfn/language-medicmobile@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4y"},{"name":"@openfn/language-medicmobile@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4x"},{"name":"@openfn/language-medicmobile@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4w"},{"name":"@openfn/language-maximo@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjQuMQ"},{"name":"@openfn/language-maximo@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuNQ"},{"name":"@openfn/language-maximo@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.4","commit":{"sha":"d6c0c7e39242ffea633e4f5b2569027feeaed2d4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/d6c0c7e39242ffea633e4f5b2569027feeaed2d4"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuNA"},{"name":"@openfn/language-maximo@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuMw"},{"name":"@openfn/language-maximo@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuMg"},{"name":"@openfn/language-maximo@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuMQ"},{"name":"@openfn/language-mailgun@0.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.4.3","commit":{"sha":"21315b88949b585291213b5959f80eb99a7fc335","url":"https://api.github.com/repos/OpenFn/adaptors/commits/21315b88949b585291213b5959f80eb99a7fc335"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC40LjM"},{"name":"@openfn/language-mailgun@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.4.2","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC40LjI"},{"name":"@openfn/language-mailgun@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC40LjE"},{"name":"@openfn/language-mailgun@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjQ"},{"name":"@openfn/language-mailgun@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjM"},{"name":"@openfn/language-mailgun@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjI"},{"name":"@openfn/language-mailgun@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjE"},{"name":"@openfn/language-mailchimp@0.7.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.7.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.7.1","commit":{"sha":"5452145a3e54e281bd242b87386953f4e4928aae","url":"https://api.github.com/repos/OpenFn/adaptors/commits/5452145a3e54e281bd242b87386953f4e4928aae"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjcuMQ"},{"name":"@openfn/language-mailchimp@0.7.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.7.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.7.0","commit":{"sha":"f88f0ca0b5316015c36f187d9596bd34a7f51944","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f88f0ca0b5316015c36f187d9596bd34a7f51944"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjcuMA"},{"name":"@openfn/language-mailchimp@0.6.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.6.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.6.0","commit":{"sha":"dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747","url":"https://api.github.com/repos/OpenFn/adaptors/commits/dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjYuMA"},{"name":"@openfn/language-mailchimp@0.5.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.5.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.5.0","commit":{"sha":"83e4f65d59c47551e9922a6213c296335c58fdb7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/83e4f65d59c47551e9922a6213c296335c58fdb7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjUuMA"},{"name":"@openfn/language-mailchimp@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjQuMQ"},{"name":"@openfn/language-mailchimp@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuNQ"},{"name":"@openfn/language-mailchimp@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuNA"},{"name":"@openfn/language-mailchimp@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuMw"},{"name":"@openfn/language-mailchimp@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuMg"},{"name":"@openfn/language-mailchimp@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuMA"},{"name":"@openfn/language-magpi@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMS4x"},{"name":"@openfn/language-magpi@1.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.5","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC41"},{"name":"@openfn/language-magpi@1.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC40"},{"name":"@openfn/language-magpi@1.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC4z"},{"name":"@openfn/language-magpi@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC4y"},{"name":"@openfn/language-magpi@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC4x"},{"name":"@openfn/language-kobotoolbox@2.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@2.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@2.1.0","commit":{"sha":"5452145a3e54e281bd242b87386953f4e4928aae","url":"https://api.github.com/repos/OpenFn/adaptors/commits/5452145a3e54e281bd242b87386953f4e4928aae"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDIuMS4w"},{"name":"@openfn/language-kobotoolbox@2.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@2.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@2.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDIuMC4x"},{"name":"@openfn/language-kobotoolbox@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4z"},{"name":"@openfn/language-kobotoolbox@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4y"},{"name":"@openfn/language-kobotoolbox@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4x"},{"name":"@openfn/language-kobotoolbox@1.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.0","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4w"},{"name":"@openfn/language-kobotoolbox@1.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.2.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMi4w"},{"name":"@openfn/language-kobotoolbox@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.1.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMS4x"},{"name":"@openfn/language-kobotoolbox@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.1.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMS4w"},{"name":"@openfn/language-khanacademy@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuNC4x"},{"name":"@openfn/language-khanacademy@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy40"},{"name":"@openfn/language-khanacademy@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy4z"},{"name":"@openfn/language-khanacademy@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy4y"},{"name":"@openfn/language-khanacademy@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy4x"},{"name":"@openfn/language-http@5.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.4","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjQ"},{"name":"@openfn/language-http@5.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.3","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjM"},{"name":"@openfn/language-http@5.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.2","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjI"},{"name":"@openfn/language-http@5.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.1","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjE"},{"name":"@openfn/language-http@5.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.0","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjA"},{"name":"@openfn/language-http@4.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.3.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4zLjM"},{"name":"@openfn/language-http@4.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.3.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4zLjI"},{"name":"@openfn/language-http@4.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4zLjE"},{"name":"@openfn/language-http@4.2.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.8","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjg"},{"name":"@openfn/language-http@4.2.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.7","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjc"},{"name":"@openfn/language-http@4.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.6","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjY"},{"name":"@openfn/language-http@4.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.5","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjU"},{"name":"@openfn/language-http@4.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.4","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjQ"},{"name":"@openfn/language-http@4.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.3","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjM"},{"name":"@openfn/language-http@4.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.2","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjI"},{"name":"@openfn/language-http@4.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.1","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjE"},{"name":"@openfn/language-http@4.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.0","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjA"},{"name":"@openfn/language-hive@0.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-hive@0.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-hive@0.2.0","commit":{"sha":"e8f1b6b8b1b22b7f2111c90b011fef59d61e0720","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e8f1b6b8b1b22b7f2111c90b011fef59d61e0720"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWhpdmVAMC4yLjA"},{"name":"@openfn/language-googlesheets@2.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.2.2","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjIuMg"},{"name":"@openfn/language-googlesheets@2.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjIuMQ"},{"name":"@openfn/language-googlesheets@2.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.6","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuNg"},{"name":"@openfn/language-googlesheets@2.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.5","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuNQ"},{"name":"@openfn/language-googlesheets@2.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuNA"},{"name":"@openfn/language-googlesheets@2.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMw"},{"name":"@openfn/language-googlesheets@2.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMg"},{"name":"@openfn/language-googlesheets@2.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMQ"},{"name":"@openfn/language-googlesheets@2.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.0","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMA"},{"name":"@openfn/language-googlehealthcare@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlehealthcare@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlehealthcare@1.0.0","commit":{"sha":"0a5e39a9c849282bfe5b59578abd71de761a679d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0a5e39a9c849282bfe5b59578abd71de761a679d"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZWhlYWx0aGNhcmVAMS4wLjA"},{"name":"@openfn/language-googlehealthcare@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlehealthcare@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlehealthcare@0.1.0","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZWhlYWx0aGNhcmVAMC4xLjA"},{"name":"@openfn/language-googlehealthcare@0.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlehealthcare@0.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlehealthcare@0.0.1","commit":{"sha":"636d8a7f1ff21d7362cce869e7edb04f72fb1828","url":"https://api.github.com/repos/OpenFn/adaptors/commits/636d8a7f1ff21d7362cce869e7edb04f72fb1828"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZWhlYWx0aGNhcmVAMC4wLjE"},{"name":"@openfn/language-godata@3.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjMuMQ"},{"name":"@openfn/language-godata@3.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuNA"},{"name":"@openfn/language-godata@3.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuMw"},{"name":"@openfn/language-godata@3.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuMg"},{"name":"@openfn/language-godata@3.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuMQ"},{"name":"@openfn/language-fhir@3.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@3.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@3.1.0","commit":{"sha":"70c56c3a0f867754958944a1f4f7608d12ca5047","url":"https://api.github.com/repos/OpenFn/adaptors/commits/70c56c3a0f867754958944a1f4f7608d12ca5047"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMy4xLjA"},{"name":"@openfn/language-fhir@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@3.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMy4wLjE"},{"name":"@openfn/language-fhir@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@2.0.0","commit":{"sha":"00811f8d3f2fd3c58c08e3631b439c467b0fc614","url":"https://api.github.com/repos/OpenFn/adaptors/commits/00811f8d3f2fd3c58c08e3631b439c467b0fc614"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMi4wLjA"},{"name":"@openfn/language-fhir@1.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjU"},{"name":"@openfn/language-fhir@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjQ"},{"name":"@openfn/language-fhir@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjM"},{"name":"@openfn/language-fhir@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjI"},{"name":"@openfn/language-fhir@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjE"},{"name":"@openfn/language-fhir@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjA"},{"name":"@openfn/language-facebook@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.3.2","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMy4y"},{"name":"@openfn/language-facebook@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMy4x"},{"name":"@openfn/language-facebook@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMi4z"},{"name":"@openfn/language-facebook@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMi4y"},{"name":"@openfn/language-facebook@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMi4x"},{"name":"@openfn/language-dynamics@0.4.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC44"},{"name":"@openfn/language-dynamics@0.4.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC43"},{"name":"@openfn/language-dynamics@0.4.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC42"},{"name":"@openfn/language-dynamics@0.4.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC41"},{"name":"@openfn/language-dynamics@0.4.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC40"},{"name":"@openfn/language-dynamics@0.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC4z"},{"name":"@openfn/language-dynamics@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC4y"},{"name":"@openfn/language-dynamics@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC4x"},{"name":"@openfn/language-dynamics@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy41"},{"name":"@openfn/language-dynamics@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy40"},{"name":"@openfn/language-dynamics@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy4z"},{"name":"@openfn/language-dynamics@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy4y"},{"name":"@openfn/language-dynamics@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy4x"},{"name":"@openfn/language-dhis2@4.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@4.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@4.0.3","commit":{"sha":"c76ed1c521296b9abc6e9bfea25cfb347c48c642","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c76ed1c521296b9abc6e9bfea25cfb347c48c642"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDQuMC4z"},{"name":"@openfn/language-dhis2@4.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@4.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@4.0.2","commit":{"sha":"0a5e39a9c849282bfe5b59578abd71de761a679d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0a5e39a9c849282bfe5b59578abd71de761a679d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDQuMC4y"},{"name":"@openfn/language-dhis2@4.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@4.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@4.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDQuMC4x"},{"name":"@openfn/language-dhis2@3.2.12","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.12","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.12","commit":{"sha":"a4d370b1d341e1678ccfbb1ff95342fb379a16c6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a4d370b1d341e1678ccfbb1ff95342fb379a16c6"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4xMg"},{"name":"@openfn/language-dhis2@3.2.11","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.11","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.11","commit":{"sha":"0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4xMQ"},{"name":"@openfn/language-dhis2@3.2.10","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.10","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.10","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4xMA"},{"name":"@openfn/language-dhis2@3.2.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.9","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi45"},{"name":"@openfn/language-dhis2@3.2.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.8","commit":{"sha":"c1fcc05f76fd245b8892091e23385f87f5dff3fd","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c1fcc05f76fd245b8892091e23385f87f5dff3fd"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi44"},{"name":"@openfn/language-dhis2@3.2.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.7","commit":{"sha":"f5cf160440f03f0455a0251d8fc8ac6026665e49","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f5cf160440f03f0455a0251d8fc8ac6026665e49"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi43"},{"name":"@openfn/language-dhis2@3.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.6","commit":{"sha":"3b1a650aacca463493b36fc59fa10050cbec2b41","url":"https://api.github.com/repos/OpenFn/adaptors/commits/3b1a650aacca463493b36fc59fa10050cbec2b41"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi42"},{"name":"@openfn/language-dhis2@3.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.5","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi41"},{"name":"@openfn/language-dhis2@3.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.4","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi40"},{"name":"@openfn/language-dhis2@3.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.3","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4z"},{"name":"@openfn/language-dhis2@3.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.2","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4y"},{"name":"@openfn/language-dhis2@3.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.1","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4x"},{"name":"@openfn/language-dhis2@3.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.0","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4w"},{"name":"@openfn/language-common@1.11.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.11.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.11.1","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjExLjE"},{"name":"@openfn/language-common@1.11.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.11.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.11.0","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjExLjA"},{"name":"@openfn/language-common@1.10.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.3","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjM"},{"name":"@openfn/language-common@1.10.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.2","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjI"},{"name":"@openfn/language-common@1.10.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.1","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjE"},{"name":"@openfn/language-common@1.10.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.0","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjA"},{"name":"@openfn/language-common@1.9.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.9.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.9.0","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjkuMA"},{"name":"@openfn/language-common@1.8.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.8.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.8.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjguMQ"},{"name":"@openfn/language-common@1.7.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.7","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNw"},{"name":"@openfn/language-common@1.7.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.6","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNg"},{"name":"@openfn/language-common@1.7.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.5","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNQ"},{"name":"@openfn/language-common@1.7.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.4","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNA"},{"name":"@openfn/language-commcare@1.6.10","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.10","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.10","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4xMA"},{"name":"@openfn/language-commcare@1.6.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.9","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi45"},{"name":"@openfn/language-commcare@1.6.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.8","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi44"},{"name":"@openfn/language-commcare@1.6.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.7","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi43"},{"name":"@openfn/language-commcare@1.6.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.6","commit":{"sha":"0a5e39a9c849282bfe5b59578abd71de761a679d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0a5e39a9c849282bfe5b59578abd71de761a679d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi42"},{"name":"@openfn/language-commcare@1.6.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi41"},{"name":"@openfn/language-commcare@1.6.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi40"},{"name":"@openfn/language-commcare@1.6.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4z"},{"name":"@openfn/language-commcare@1.6.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4y"},{"name":"@openfn/language-commcare@1.6.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4x"},{"name":"@openfn/language-commcare@1.5.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.6","commit":{"sha":"8e44ede59f7c5ba825414a84c46b1a677b92d7e4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/8e44ede59f7c5ba825414a84c46b1a677b92d7e4"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS42"},{"name":"@openfn/language-commcare@1.5.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS41"},{"name":"@openfn/language-commcare@1.5.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS40"},{"name":"@openfn/language-commcare@1.5.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS4z"},{"name":"@openfn/language-commcare@1.5.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS4x"},{"name":"@openfn/language-commcare@1.5.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS4w"},{"name":"@openfn/language-cartodb@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4yLjE"},{"name":"@openfn/language-cartodb@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjQ"},{"name":"@openfn/language-cartodb@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjM"},{"name":"@openfn/language-cartodb@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjI"},{"name":"@openfn/language-cartodb@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjE"},{"name":"@openfn/language-bigquery@2.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.4","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC40"},{"name":"@openfn/language-bigquery@2.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.3","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4z"},{"name":"@openfn/language-bigquery@2.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.2","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4y"},{"name":"@openfn/language-bigquery@2.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.1","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4x"},{"name":"@openfn/language-bigquery@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.0","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4w"},{"name":"@openfn/language-bigquery@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.2.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMi4z"},{"name":"@openfn/language-bigquery@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.2.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMi4y"},{"name":"@openfn/language-bigquery@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMi4x"},{"name":"@openfn/language-bigquery@1.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.5","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS41"},{"name":"@openfn/language-bigquery@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.4","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS40"},{"name":"@openfn/language-bigquery@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS4z"},{"name":"@openfn/language-bigquery@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS4y"},{"name":"@openfn/language-bigquery@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.0","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS4w"},{"name":"@openfn/language-beyonic@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4yLjE"},{"name":"@openfn/language-beyonic@0.1.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.9","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjk"},{"name":"@openfn/language-beyonic@0.1.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.8","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjg"},{"name":"@openfn/language-beyonic@0.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.7","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjc"},{"name":"@openfn/language-beyonic@0.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.6","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjY"},{"name":"@openfn/language-beyonic@0.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.5","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjU"},{"name":"@openfn/language-beyonic@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.4","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjQ"},{"name":"@openfn/language-beyonic@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.3","commit":{"sha":"2baee4d9ccd7c0df60bb38e83c5d4dbcfebbf775","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2baee4d9ccd7c0df60bb38e83c5d4dbcfebbf775"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjM"},{"name":"@openfn/language-beyonic@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.2","commit":{"sha":"278e3c61a1cdcb14b452d5e7cb613414c68e1dc5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/278e3c61a1cdcb14b452d5e7cb613414c68e1dc5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjI"},{"name":"@openfn/language-beyonic@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.1","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjE"},{"name":"@openfn/language-beyonic@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjA"},{"name":"@openfn/language-asana@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@3.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDMuMC4x"},{"name":"@openfn/language-asana@2.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.6","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS42"},{"name":"@openfn/language-asana@2.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.5","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS41"},{"name":"@openfn/language-asana@2.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS40"},{"name":"@openfn/language-asana@2.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4z"},{"name":"@openfn/language-asana@2.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4y"},{"name":"@openfn/language-asana@2.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4x"},{"name":"@openfn/language-asana@2.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4w"},{"name":"@openfn/buildtools@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/buildtools@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/buildtools@1.0.2","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAInJlZnMvdGFncy9Ab3BlbmZuL2J1aWxkdG9vbHNAMS4wLjI"},{"name":"@openfn/buildtools@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/buildtools@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/buildtools@1.0.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAInJlZnMvdGFncy9Ab3BlbmZuL2J1aWxkdG9vbHNAMS4wLjE"},{"name":"import-tests@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/import-tests@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/import-tests@1.0.0","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZflrxyZWZzL3RhZ3MvaW1wb3J0LXRlc3RzQDEuMC4w"}]')),f=JSON.parse('[{"module":"asana","name":"Asana","versions":["v1.0.1","v2.0.0","v2.1.0"],"npm":"v2.1.0","public":true},{"module":"beyonic","name":"Beyonic","versions":["v0.1.3"],"npm":"v0.1.0","public":true},{"module":"cartodb","name":"Carto","versions":["v0.0.4"],"public":true},{"module":"commcare","name":"CommCareHQ","versions":["v1.2.1","v1.4.1"],"public":true},{"module":"dhis2","name":"DHIS2","versions":["v1.0.1","v1.3.0","v2.0.4","v2.0.8","v2.0.11","v3.0.1","v3.0.4","v3.0.5","v3.2.1"],"npm":"v3.2.1","public":true},{"module":"dynamics","name":"Microsoft Dynamics","versions":["v0.2.0"],"public":true},{"module":"googlesheets","name":"Google Sheets","versions":["v1.0.2","v2.0.0","v2.1.0"],"npm":"v2.1.0","public":true},{"module":"facebook","name":"Facebook Messenger","versions":["v0.1.0"],"public":true},{"module":"godata","name":"Go.Data","versions":["v3.1.0"],"public":true},{"module":"http","name":"HTTP","versions":["v2.4.15","v3.1.7","v3.1.11","v3.1.12","v4.0.0","v4.2.1"],"public":true,"npm":"v4.1.0"},{"module":"khanacademy","name":"Khan Academy","versions":["v0.2.0"],"public":true},{"module":"kobotoolbox","name":"Kobo Toolbox","versions":["v1.0.4"],"public":true},{"module":"magpi","name":"Magpi","versions":["v0.3.2"],"public":true},{"module":"mailchimp","name":"Mailchimp","versions":["v0.2.0"],"public":true},{"module":"mailgun","name":"Mailgun","versions":["v0.2.2"],"public":true},{"module":"maximo","name":"IBM Maximo EAM","versions":["v0.2.0"],"public":true},{"module":"medicmobile","name":"Medic Mobile","versions":["v0.2.0"],"public":true},{"module":"mogli","name":"Mogli SMS","versions":["v0.2.1"],"public":true},{"module":"mongodb","name":"MongoDB","versions":["v1.0.4"],"public":true},{"module":"mssql","name":"Azure/MS SQL","versions":["v2.3.3","v2.6.1","v2.6.4","v2.6.9","v2.6.11","v3.0.0","v3.1.0"],"npm":"v3.1.0","public":true},{"module":"mysql","name":"MySQL","versions":["v1.1.1","v1.2.0"],"public":true},{"module":"nexmo","name":"Nexmo","versions":["v0.1.1"],"public":true},{"module":"openfn","name":"OpenFn","versions":["v1.1.3","v1.1.4"],"public":true},{"module":"openhim","name":"OpenHIM","versions":["v0.0.3"],"public":true},{"module":"openmrs","name":"OpenMRS","versions":["v0.9.2"],"public":true},{"module":"postgresql","name":"PostgreSQL","versions":["v2.4.0","v3.1.4","v3.3.2","v3.3.1","v3.3.3","v3.4.0"],"npm":"v3.4.0","public":true},{"module":"primero","name":"Primero","versions":["v1.2.0","v2.2.3","v2.2.8","v2.3.4","v2.3.5","v2.3.6","v2.4.4","v2.7.0","v2.7.2","v2.8.0","v2.9.1","v2.9.2","v2.10.0"],"npm":"v2.9.1","public":true},{"module":"progres","name":"Progres","versions":["v1.1.0"],"public":true},{"module":"rapidpro","name":"RapidPro","versions":["v0.4.7"],"public":true},{"module":"resourcemap","name":"Resource Map","versions":["v0.1.0"],"public":true},{"module":"salesforce","name":"Salesforce","versions":["v1.3.2","v2.3.2","v2.3.5","v2.4.0","v2.6.3","v2.7.2","v2.7.3","v2.7.4","v2.8.1","v2.9.0","v2.10.0","v2.11.0"],"npm":"v2.11.0","public":true},{"module":"sftp","name":"SFTP","versions":["v0.3.3","v0.4.0","v0.6.1","v0.6.2"],"npm":"v0.6.1","public":true},{"module":"smpp","name":"SMPP","versions":["v1.1.0"],"public":true},{"module":"surveycto","name":"SurveyCTO","versions":["v1.0.0"],"public":true},{"module":"telerivet","name":"Telerivet","versions":["v0.0.2"],"public":true},{"module":"twilio","name":"Twilio","versions":["v0.2.0","v0.2.1"],"public":true},{"module":"vtiger","name":"vtiger CRM","versions":["v1.0.0"],"public":true},{"module":"zoho","name":"Zoho Reports","versions":["v0.0.2","v0.1.0"],"public":true}]');function u(){const a={};g.filter((a=>a.name.includes("language-"))).map((a=>{const e=a.name,p=e.substring(e.indexOf("-")+1,e.lastIndexOf("@")),n=e.split("@")[2];return{module:p,version:n,url:`https://github.com/OpenFn/adaptors/tree/%40openfn/language-${p}%40${n}/packages/${p}`}})).forEach((e=>{a[e.module]={module:e.module,versions:{...a[e.module]?.versions,[e.version]:{version:`v${e.version}`,url:e.url}}}})),f.forEach((e=>{a[e.module]={module:a[e.module]?.module||e.module,versions:{...a[e.module]?.versions}};e.versions.filter((a=>!e.npm||-1==l(a.substring(1),e.npm.substring(1)))).forEach((p=>{a[e.module].versions[p]={version:p,url:`https://www.github.com/openfn/language-${e.module}/tree/${p}`}}))}));return Object.values(a).sort(((a,e)=>a.module>e.module?1:e.module>a.module?-1:0)).map((a=>({...a,versions:Object.values(a.versions)})))}const h=JSON.parse('[{"name":"asana","docsId":"packages/asana-docs","readmeId":"packages/asana-readme","changelogId":"packages/asana-changelog","configurationSchemaId":"packages/asana-configuration-schema"},{"name":"beyonic","docsId":"packages/beyonic-docs","readmeId":"packages/beyonic-readme","changelogId":"packages/beyonic-changelog","configurationSchemaId":"packages/beyonic-configuration-schema"},{"name":"bigquery","docsId":"packages/bigquery-docs","readmeId":"packages/bigquery-readme","changelogId":"packages/bigquery-changelog","configurationSchemaId":"packages/bigquery-configuration-schema"},{"name":"commcare","docsId":"packages/commcare-docs","readmeId":"packages/commcare-readme","changelogId":"packages/commcare-changelog","configurationSchemaId":"packages/commcare-configuration-schema"},{"name":"common","docsId":"packages/common-docs","readmeId":"packages/common-readme","changelogId":"packages/common-changelog","configurationSchemaId":"packages/common-configuration-schema"},{"name":"dhis2","docsId":"packages/dhis2-docs","readmeId":"packages/dhis2-readme","changelogId":"packages/dhis2-changelog","configurationSchemaId":"packages/dhis2-configuration-schema"},{"name":"dynamics","docsId":"packages/dynamics-docs","readmeId":"packages/dynamics-readme","changelogId":"packages/dynamics-changelog","configurationSchemaId":"packages/dynamics-configuration-schema"},{"name":"facebook","docsId":"packages/facebook-docs","readmeId":"packages/facebook-readme","changelogId":"packages/facebook-changelog","configurationSchemaId":"packages/facebook-configuration-schema"},{"name":"fhir","docsId":"packages/fhir-docs","readmeId":"packages/fhir-readme","changelogId":"packages/fhir-changelog","configurationSchemaId":"packages/fhir-configuration-schema"},{"name":"godata","docsId":"packages/godata-docs","readmeId":"packages/godata-readme","changelogId":"packages/godata-changelog","configurationSchemaId":"packages/godata-configuration-schema"},{"name":"googlehealthcare","docsId":"packages/googlehealthcare-docs","readmeId":"packages/googlehealthcare-readme","changelogId":"packages/googlehealthcare-changelog","configurationSchemaId":"packages/googlehealthcare-configuration-schema"},{"name":"googlesheets","docsId":"packages/googlesheets-docs","readmeId":"packages/googlesheets-readme","changelogId":"packages/googlesheets-changelog","configurationSchemaId":"packages/googlesheets-configuration-schema"},{"name":"hive","docsId":"packages/hive-docs","readmeId":"packages/hive-readme","changelogId":"packages/hive-changelog","configurationSchemaId":"packages/hive-configuration-schema"},{"name":"http","docsId":"packages/http-docs","readmeId":"packages/http-readme","changelogId":"packages/http-changelog","configurationSchemaId":"packages/http-configuration-schema"},{"name":"khanacademy","docsId":"packages/khanacademy-docs","readmeId":"packages/khanacademy-readme","changelogId":"packages/khanacademy-changelog","configurationSchemaId":"packages/khanacademy-configuration-schema"},{"name":"kobotoolbox","docsId":"packages/kobotoolbox-docs","readmeId":"packages/kobotoolbox-readme","changelogId":"packages/kobotoolbox-changelog","configurationSchemaId":"packages/kobotoolbox-configuration-schema"},{"name":"magpi","docsId":"packages/magpi-docs","readmeId":"packages/magpi-readme","changelogId":"packages/magpi-changelog","configurationSchemaId":"packages/magpi-configuration-schema"},{"name":"mailchimp","docsId":"packages/mailchimp-docs","readmeId":"packages/mailchimp-readme","changelogId":"packages/mailchimp-changelog","configurationSchemaId":"packages/mailchimp-configuration-schema"},{"name":"mailgun","docsId":"packages/mailgun-docs","readmeId":"packages/mailgun-readme","changelogId":"packages/mailgun-changelog","configurationSchemaId":"packages/mailgun-configuration-schema"},{"name":"maximo","docsId":"packages/maximo-docs","readmeId":"packages/maximo-readme","changelogId":"packages/maximo-changelog","configurationSchemaId":"packages/maximo-configuration-schema"},{"name":"medicmobile","docsId":"packages/medicmobile-docs","readmeId":"packages/medicmobile-readme","changelogId":"packages/medicmobile-changelog","configurationSchemaId":"packages/medicmobile-configuration-schema"},{"name":"mogli","docsId":"packages/mogli-docs","readmeId":"packages/mogli-readme","changelogId":"packages/mogli-changelog","configurationSchemaId":"packages/mogli-configuration-schema"},{"name":"mongodb","docsId":"packages/mongodb-docs","readmeId":"packages/mongodb-readme","changelogId":"packages/mongodb-changelog","configurationSchemaId":"packages/mongodb-configuration-schema"},{"name":"msgraph","docsId":"packages/msgraph-docs","readmeId":"packages/msgraph-readme","changelogId":"packages/msgraph-changelog","configurationSchemaId":"packages/msgraph-configuration-schema"},{"name":"mssql","docsId":"packages/mssql-docs","readmeId":"packages/mssql-readme","changelogId":"packages/mssql-changelog","configurationSchemaId":"packages/mssql-configuration-schema"},{"name":"mysql","docsId":"packages/mysql-docs","readmeId":"packages/mysql-readme","changelogId":"packages/mysql-changelog","configurationSchemaId":"packages/mysql-configuration-schema"},{"name":"nexmo","docsId":"packages/nexmo-docs","readmeId":"packages/nexmo-readme","changelogId":"packages/nexmo-changelog","configurationSchemaId":"packages/nexmo-configuration-schema"},{"name":"ocl","docsId":"packages/ocl-docs","readmeId":"packages/ocl-readme","changelogId":"packages/ocl-changelog","configurationSchemaId":"packages/ocl-configuration-schema"},{"name":"openfn","docsId":"packages/openfn-docs","readmeId":"packages/openfn-readme","changelogId":"packages/openfn-changelog","configurationSchemaId":"packages/openfn-configuration-schema"},{"name":"openhim","docsId":"packages/openhim-docs","readmeId":"packages/openhim-readme","changelogId":"packages/openhim-changelog","configurationSchemaId":"packages/openhim-configuration-schema"},{"name":"openmrs","docsId":"packages/openmrs-docs","readmeId":"packages/openmrs-readme","changelogId":"packages/openmrs-changelog","configurationSchemaId":"packages/openmrs-configuration-schema"},{"name":"postgresql","docsId":"packages/postgresql-docs","readmeId":"packages/postgresql-readme","changelogId":"packages/postgresql-changelog","configurationSchemaId":"packages/postgresql-configuration-schema"},{"name":"primero","docsId":"packages/primero-docs","readmeId":"packages/primero-readme","changelogId":"packages/primero-changelog","configurationSchemaId":"packages/primero-configuration-schema"},{"name":"progres","docsId":"packages/progres-docs","readmeId":"packages/progres-readme","changelogId":"packages/progres-changelog","configurationSchemaId":"packages/progres-configuration-schema"},{"name":"rapidpro","docsId":"packages/rapidpro-docs","readmeId":"packages/rapidpro-readme","changelogId":"packages/rapidpro-changelog","configurationSchemaId":"packages/rapidpro-configuration-schema"},{"name":"resourcemap","docsId":"packages/resourcemap-docs","readmeId":"packages/resourcemap-readme","changelogId":"packages/resourcemap-changelog","configurationSchemaId":"packages/resourcemap-configuration-schema"},{"name":"salesforce","docsId":"packages/salesforce-docs","readmeId":"packages/salesforce-readme","changelogId":"packages/salesforce-changelog","configurationSchemaId":"packages/salesforce-configuration-schema"},{"name":"sftp","docsId":"packages/sftp-docs","readmeId":"packages/sftp-readme","changelogId":"packages/sftp-changelog","configurationSchemaId":"packages/sftp-configuration-schema"},{"name":"smpp","docsId":"packages/smpp-docs","readmeId":"packages/smpp-readme","changelogId":"packages/smpp-changelog","configurationSchemaId":"packages/smpp-configuration-schema"},{"name":"surveycto","docsId":"packages/surveycto-docs","readmeId":"packages/surveycto-readme","changelogId":"packages/surveycto-changelog","configurationSchemaId":"packages/surveycto-configuration-schema"},{"name":"telerivet","docsId":"packages/telerivet-docs","readmeId":"packages/telerivet-readme","changelogId":"packages/telerivet-changelog","configurationSchemaId":"packages/telerivet-configuration-schema"},{"name":"template","docsId":"packages/template-docs","readmeId":"packages/template-readme","changelogId":"packages/template-changelog","configurationSchemaId":"packages/template-configuration-schema"},{"name":"twilio","docsId":"packages/twilio-docs","readmeId":"packages/twilio-readme","changelogId":"packages/twilio-changelog","configurationSchemaId":"packages/twilio-configuration-schema"},{"name":"vtiger","docsId":"packages/vtiger-docs","readmeId":"packages/vtiger-readme","changelogId":"packages/vtiger-changelog","configurationSchemaId":"packages/vtiger-configuration-schema"},{"name":"zoho","docsId":"packages/zoho-docs","readmeId":"packages/zoho-readme","changelogId":"packages/zoho-changelog","configurationSchemaId":"packages/zoho-configuration-schema"}]'),F={id:"adaptors-intro",title:"Adaptors",sidebar_label:"Introduction",slug:"/"},O=void 0,_={unversionedId:"adaptors-intro",id:"adaptors-intro",title:"Adaptors",description:"Connect Anything.",source:"@site/adaptors/intro.mdx",sourceDirName:".",slug:"/",permalink:"/adaptors/",draft:!1,tags:[],version:"current",frontMatter:{id:"adaptors-intro",title:"Adaptors",sidebar_label:"Introduction",slug:"/"},sidebar:"adaptors",next:{title:"Library Examples",permalink:"/adaptors/library"}},Z={},A=[{value:"Connect Anything.",id:"connect-anything",level:2},{value:"What's an adaptor?",id:"whats-an-adaptor",level:2},{value:"Where to find them",id:"where-to-find-them",level:2},{value:"On the OpenFn platform",id:"on-the-openfn-platform",level:3},{value:"On npm",id:"on-npm",level:3},{value:"Install on platform via npm",id:"install-on-platform-via-npm",level:4},{value:"Building and extending adaptors",id:"building-and-extending-adaptors",level:2}],L={toc:A},J="wrapper";function z(a){let{components:e,...s}=a;return(0,o.kt)(J,(0,n.Z)({},L,s,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"connect-anything"},"Connect ",(0,o.kt)("em",{parentName:"h2"},"Anything.")),(0,o.kt)("p",null,"First, it's important to note that OpenFn can connect to ",(0,o.kt)("em",{parentName:"p"},"any system"),' via HTTP,\nbut our community has also built dozens of "adaptors" to save time & money while\nconnecting to most commonly used digital public goods and key ICT4D systems.'),(0,o.kt)("p",null,"You can even run web scraping or browser automation tools with OpenFn. See the\n",(0,o.kt)("a",{parentName:"p",href:"/documentation/faqs#can-openfn-integrate-with-my-custom-app"},"FAQs")," and\n",(0,o.kt)("a",{parentName:"p",href:"/documentation/source-apps"},"Generic Data Sources")," for more info on how to\nconnect to systems without custom adaptors. It's almost like a universal\ntranslator... \ud83d\udd96"),(0,o.kt)("h2",{id:"whats-an-adaptor"},"What's an adaptor?"),(0,o.kt)("p",null,'An adaptor is an open-source Javascript or Typescript module that provides\nOpenFn users with a clean set of helper functions that help communicate with a\nspecific external system. In the past, we often referred to them as "language\npackages" and the two terms are sometimes used interchangeably, but the\npreferred way of communicating about adaptors is as follows:'),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},'"What ',(0,o.kt)("em",{parentName:"li"},(0,o.kt)("strong",{parentName:"em"},"adaptor")),' is that job using?" ("That job is using\n',(0,o.kt)("inlineCode",{parentName:"li"},"language-dhis2"),'.")'),(0,o.kt)("li",{parentName:"ul"},'"The DHIS2 ',(0,o.kt)("em",{parentName:"li"},(0,o.kt)("strong",{parentName:"em"},"adaptor"))," is called ",(0,o.kt)("inlineCode",{parentName:"li"},"language-dhis2"),'."'),(0,o.kt)("li",{parentName:"ul"},"\"I don't have the right ",(0,o.kt)("em",{parentName:"li"},(0,o.kt)("strong",{parentName:"em"},"adaptor"))," for this job, let me install it by\nrunning ",(0,o.kt)("inlineCode",{parentName:"li"},"npm install @openfn/language-dhis2"),".")),(0,o.kt)("p",null,"In short, ",(0,o.kt)("em",{parentName:"p"},"most")," adaptors follow the naming convention ",(0,o.kt)("inlineCode",{parentName:"p"},"@openfn/language-xyz"),"."),(0,o.kt)("h2",{id:"where-to-find-them"},"Where to find them"),(0,o.kt)("div",null,"Here's a list of the ",u().length," publicly supported OpenFn adaptors. Note that only some have been migrated to our new and have their docs sites served here. For the rest, you can view the docs and source by clicking into the adaptor and choosing your version."),(0,o.kt)("br",null),(0,o.kt)("div",null,u().map((a=>(0,o.kt)("details",null,(0,o.kt)("summary",null,(0,o.kt)("b",null,a.module),h.find((e=>e.name==a.module))&&(0,o.kt)(t.Fragment,null," (",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).docsId}`},"docs"),")")),h.find((e=>e.name==a.module))?(0,o.kt)("div",null,"The current"," ",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).docsId}`},"API docs"),", ",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).changelogId}`},"changelog"),", and ",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).readmeId}`},"developer readme")," for ",(0,o.kt)("b",null,a.module)," are available here. You can view the source & documentation via these links:"):(0,o.kt)("div",null,"This adaptor hasn't been migrated yet, but it still works just fine and you can view the source & documentation via these links:"),(0,o.kt)("ul",null,a.versions.sort(((a,e)=>l(e.version,a.version))).map((a=>(0,o.kt)("li",null,(0,o.kt)("a",{href:a.url,target:"_blank"},a.version)," ")))))))),(0,o.kt)("h3",{id:"on-the-openfn-platform"},"On the OpenFn platform"),(0,o.kt)("p",null,'When creating or editing a job on platform, you can choose the adaptor to run\nthe job. This way you "import" the needed operations. Simply open the dropdown\nlist of adaptors, and click on one.'),(0,o.kt)("img",{src:"/img/adaptor_choice_openfn.png",width:"300"}),(0,o.kt)("h3",{id:"on-npm"},"On npm"),(0,o.kt)("p",null,"Most of our adaptors are also available on\n",(0,o.kt)("a",{parentName:"p",href:"https://www.npmjs.com/search?q=%40openfn"},"npmjs"),"."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Adaptors list in npm",src:p(57361).Z,width:"2766",height:"1266"})),(0,o.kt)("h4",{id:"install-on-platform-via-npm"},"Install on platform via npm"),(0,o.kt)("p",null,"When using ",(0,o.kt)("inlineCode",{parentName:"p"},"platform"),", you can install adaptors that are not part of the\nrecommended adaptors picklist directly from\n",(0,o.kt)("a",{parentName:"p",href:"https://www.npmjs.com/search?q=%40openfn"},"npm"),"."),(0,o.kt)("p",null,"To install from npm, click on the ",(0,o.kt)("em",{parentName:"p"},"cloud download icon")," next to the adaptor\nversion picklist. In the ",(0,o.kt)("strong",{parentName:"p"},"Select Unreleased Adaptor")," dialog box, enter the\n",(0,o.kt)("inlineCode",{parentName:"p"},"adaptor name"),"(e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"dhis2")," for ",(0,o.kt)("inlineCode",{parentName:"p"},"language-dhis2"),") and the corresponding\n",(0,o.kt)("inlineCode",{parentName:"p"},"version number"),"(e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"v2.3.4"),"), as listed on\n",(0,o.kt)("a",{parentName:"p",href:"https://www.npmjs.com/search?q=%40openfn"},"npmjs"),", for the adaptor of your\nchoice. The platform will attempt to install the selected adaptor version it can\nbe used to run the specified job."),(0,o.kt)("p",null,"Note that, after this custom installation of the adaptor, ",(0,o.kt)("inlineCode",{parentName:"p"},"platform")," will not\nadd this adaptor version to the picklist of recommended adaptors in\n",(0,o.kt)("a",{parentName:"p",href:"/documentation/jobs/job-studio"},"JobStudio"),", but you are guaranteed that the\nadaptor will be available to use in any of your jobs as long as you specify it\nvia the ",(0,o.kt)("strong",{parentName:"p"},"Select Unreleased Adaptor")," dialog."),(0,o.kt)("h2",{id:"building-and-extending-adaptors"},"Building and extending adaptors"),(0,o.kt)("p",null,"The source code and technical documentation for developing or extending existing\nadaptors can be found\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors#working-with-adaptors"},"here"),"."))}z.isMDXComponent=!0},57361:(a,e,p)=>{p.d(e,{Z:()=>n});const n=p.p+"assets/images/adaptor_npm-1ecb3d844ff20c11d9f7ee009a1d4e9a.png"}}]); \ No newline at end of file diff --git a/assets/js/771488fd.3daf1871.js b/assets/js/771488fd.3daf1871.js deleted file mode 100644 index f7f89ac67eb..00000000000 --- a/assets/js/771488fd.3daf1871.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[76874],{3905:(e,a,t)=>{t.d(a,{Zo:()=>o,kt:()=>g});var n=t(67294);function l(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function i(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function r(e){for(var a=1;a=0||(l[t]=e[t]);return l}(e,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(l[t]=e[t])}return l}var p=n.createContext({}),h=function(e){var a=n.useContext(p),t=a;return e&&(t="function"==typeof e?e(a):r(r({},a),e)),t},o=function(e){var a=h(e.components);return n.createElement(p.Provider,{value:a},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},s=n.forwardRef((function(e,a){var t=e.components,l=e.mdxType,i=e.originalType,p=e.parentName,o=c(e,["components","mdxType","originalType","parentName"]),d=h(t),s=l,g=d["".concat(p,".").concat(s)]||d[s]||u[s]||i;return t?n.createElement(g,r(r({ref:a},o),{},{components:t})):n.createElement(g,r({ref:a},o))}));function g(e,a){var t=arguments,l=a&&a.mdxType;if("string"==typeof e||l){var i=t.length,r=new Array(i);r[0]=s;var c={};for(var p in a)hasOwnProperty.call(a,p)&&(c[p]=a[p]);c.originalType=e,c[d]="string"==typeof e?e:l,r[1]=c;for(var h=2;h{t.r(a),t.d(a,{assets:()=>p,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>c,toc:()=>h});var n=t(87462),l=(t(67294),t(3905));const i={title:"sftp changelog",id:"sftp-changelog",keywords:["adaptor","changelog","sftp"]},r="Changelog for the sftp adaptor",c={unversionedId:"packages/sftp-changelog",id:"packages/sftp-changelog",title:"sftp changelog",description:"1.0.1",source:"@site/adaptors/packages/sftp-changelog.md",sourceDirName:"packages",slug:"/packages/sftp-changelog",permalink:"/adaptors/packages/sftp-changelog",draft:!1,tags:[],version:"current",frontMatter:{title:"sftp changelog",id:"sftp-changelog",keywords:["adaptor","changelog","sftp"]},sidebar:"adaptors",previous:{title:"Config for sftp",permalink:"/adaptors/packages/sftp-configuration-schema"},next:{title:"sftp developer readme",permalink:"/adaptors/packages/sftp-readme"}},p={},h=[{value:"1.0.1",id:"101",level:2},{value:"Patch Changes",id:"patch-changes",level:3},{value:"1.0.0",id:"100",level:2},{value:"Major Changes",id:"major-changes",level:3},{value:"0.8.8",id:"088",level:2},{value:"Patch Changes",id:"patch-changes-1",level:3},{value:"0.8.7",id:"087",level:2},{value:"Patch Changes",id:"patch-changes-2",level:3},{value:"0.8.6",id:"086",level:2},{value:"Patch Changes",id:"patch-changes-3",level:3},{value:"0.8.5",id:"085",level:2},{value:"Patch Changes",id:"patch-changes-4",level:3},{value:"0.8.4",id:"084",level:2},{value:"Patch Changes",id:"patch-changes-5",level:3},{value:"0.8.3",id:"083",level:2},{value:"Patch Changes",id:"patch-changes-6",level:3},{value:"0.8.2",id:"082",level:2},{value:"Patch Changes",id:"patch-changes-7",level:3},{value:"0.8.1",id:"081",level:2},{value:"Patch Changes",id:"patch-changes-8",level:3},{value:"0.8.0",id:"080",level:2},{value:"Minor Changes",id:"minor-changes",level:3},{value:"Patch Changes",id:"patch-changes-9",level:3},{value:"0.7.3",id:"073",level:2},{value:"Patch Changes",id:"patch-changes-10",level:3},{value:"0.7.2",id:"072",level:2},{value:"Patch Changes",id:"patch-changes-11",level:3},{value:"0.7.1",id:"071",level:2},{value:"Patch Changes",id:"patch-changes-12",level:3},{value:"0.7.0",id:"070",level:2},{value:"Minor Changes",id:"minor-changes-1",level:3},{value:"0.6.9",id:"069",level:2},{value:"Patch Changes",id:"patch-changes-13",level:3},{value:"0.6.8",id:"068",level:2},{value:"Patch Changes",id:"patch-changes-14",level:3},{value:"0.6.7",id:"067",level:2},{value:"Patch Changes",id:"patch-changes-15",level:3},{value:"0.6.6",id:"066",level:2},{value:"Patch Changes",id:"patch-changes-16",level:3},{value:"0.6.5",id:"065",level:2},{value:"Patch Changes",id:"patch-changes-17",level:3},{value:"0.6.4",id:"064",level:2},{value:"Patch Changes",id:"patch-changes-18",level:3},{value:"0.6.3",id:"063",level:2},{value:"Patch Changes",id:"patch-changes-19",level:3},{value:"0.6.2",id:"062",level:2},{value:"Patch Changes",id:"patch-changes-20",level:3},{value:"0.6.1",id:"061",level:2},{value:"Patch Changes",id:"patch-changes-21",level:3},{value:"0.6.0",id:"060",level:2},{value:"Minor Changes",id:"minor-changes-2",level:3},{value:"0.5.0",id:"050",level:2},{value:"Minor Changes",id:"minor-changes-3",level:3}],o={toc:h},d="wrapper";function u(e){let{components:a,...t}=e;return(0,l.kt)(d,(0,n.Z)({},o,t,{components:a,mdxType:"MDXLayout"}),(0,l.kt)("h1",{id:"changelog-for-the-sftp-adaptor"},"Changelog for the sftp adaptor"),(0,l.kt)("h1",{id:"openfnlanguage-sftp"},"@openfn/language-sftp"),(0,l.kt)("h2",{id:"101"},"1.0.1"),(0,l.kt)("h3",{id:"patch-changes"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"771c814: - Properly disconnect on error",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Improve operation logs")))),(0,l.kt)("h2",{id:"100"},"1.0.0"),(0,l.kt)("h3",{id:"major-changes"},"Major Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"e52ba66: add ",(0,l.kt)("inlineCode",{parentName:"li"},"filter")," option in ",(0,l.kt)("inlineCode",{parentName:"li"},"list()")," function")),(0,l.kt)("h2",{id:"088"},"0.8.8"),(0,l.kt)("h3",{id:"patch-changes-1"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[c19efbe]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.11.1"},"language-common@1.11.1"))))),(0,l.kt)("h2",{id:"087"},"0.8.7"),(0,l.kt)("h3",{id:"patch-changes-2"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[85c35b8]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.11.0"},"language-common@1.11.0"))))),(0,l.kt)("h2",{id:"086"},"0.8.6"),(0,l.kt)("h3",{id:"patch-changes-3"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[df09270]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.3"},"language-common@1.10.3"))))),(0,l.kt)("h2",{id:"085"},"0.8.5"),(0,l.kt)("h3",{id:"patch-changes-4"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[26a303e]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.2"},"language-common@1.10.2"))))),(0,l.kt)("h2",{id:"084"},"0.8.4"),(0,l.kt)("h3",{id:"patch-changes-5"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[8c32eb3]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.1"},"language-common@1.10.1"))))),(0,l.kt)("h2",{id:"083"},"0.8.3"),(0,l.kt)("h3",{id:"patch-changes-6"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[aad9549]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.0"},"language-common@1.10.0"))))),(0,l.kt)("h2",{id:"082"},"0.8.2"),(0,l.kt)("h3",{id:"patch-changes-7"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"d2c980e: Use ",(0,l.kt)("inlineCode",{parentName:"li"},"parseCsv")," from language-common"),(0,l.kt)("li",{parentName:"ul"},"c5d3ce1: improve connection handling"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[111807f]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.9.0"},"language-common@1.9.0"))))),(0,l.kt)("h2",{id:"081"},"0.8.1"),(0,l.kt)("h3",{id:"patch-changes-8"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Update lock files"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.8.1"},"language-common@1.8.1"))))),(0,l.kt)("h2",{id:"080"},"0.8.0"),(0,l.kt)("h3",{id:"minor-changes"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"2c1d603: Remove parameter reassignment to ensure proper functioning inside an\n",(0,l.kt)("inlineCode",{parentName:"p"},"each")," block; add eslint"),(0,l.kt)("p",{parentName:"li"},"The packages receiving a major bump here exposed functions that didn't work as\nexpected inside ",(0,l.kt)("inlineCode",{parentName:"p"},"each")," blocks. Users were previously wrapping these functions\ninside their own custom ",(0,l.kt)("inlineCode",{parentName:"p"},"fn")," blocks, and this change will ensure that they can\nbe used inside a standard each."),(0,l.kt)("p",{parentName:"li"},"See ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors/issues/275"},"https://github.com/OpenFn/adaptors/issues/275")," for more details."))),(0,l.kt)("h3",{id:"patch-changes-9"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[2c1d603]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.8.0"},"language-common@1.8.0"))))),(0,l.kt)("h2",{id:"073"},"0.7.3"),(0,l.kt)("h3",{id:"patch-changes-10"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"432dd0a: fix sftp connection wqautoclose")),(0,l.kt)("h2",{id:"072"},"0.7.2"),(0,l.kt)("h3",{id:"patch-changes-11"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"205b806: remove asObjects key before parsing")),(0,l.kt)("h2",{id:"071"},"0.7.1"),(0,l.kt)("h3",{id:"patch-changes-12"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"827c627: error handling")),(0,l.kt)("h2",{id:"070"},"0.7.0"),(0,l.kt)("h3",{id:"minor-changes-1"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"fa58216: Add csvtojson convertion option")),(0,l.kt)("h2",{id:"069"},"0.6.9"),(0,l.kt)("h3",{id:"patch-changes-13"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[929bca6]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.7"},"language-common@1.7.7"))))),(0,l.kt)("h2",{id:"068"},"0.6.8"),(0,l.kt)("h3",{id:"patch-changes-14"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"14f481e: mark execute as private"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[2b4c61a]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.6"},"language-common@1.7.6"))))),(0,l.kt)("h2",{id:"067"},"0.6.7"),(0,l.kt)("h3",{id:"patch-changes-15"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f7ebd3c: remove sample configuration")),(0,l.kt)("h2",{id:"066"},"0.6.6"),(0,l.kt)("h3",{id:"patch-changes-16"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f2aed32: add examples")),(0,l.kt)("h2",{id:"065"},"0.6.5"),(0,l.kt)("h3",{id:"patch-changes-17"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"6d8de03: change @constructor to @function and remove /","*",(0,l.kt)("em",{parentName:"li"}," @module Adaptor "),"/")),(0,l.kt)("h2",{id:"064"},"0.6.4"),(0,l.kt)("h3",{id:"patch-changes-18"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f2a91a4: Update package exports"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[f2a91a4]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.5"},"language-common@1.7.5"))))),(0,l.kt)("h2",{id:"063"},"0.6.3"),(0,l.kt)("h3",{id:"patch-changes-19"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"8566b26: Fix typings"),(0,l.kt)("li",{parentName:"ul"},"b3d45ff: Fix CJS export of npm package."),(0,l.kt)("li",{parentName:"ul"},"4126a62: Fix built bundle"),(0,l.kt)("li",{parentName:"ul"},"ecf5d30: remove sinon since it was not being used"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[8566b26]"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[b3d45ff]"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[b5eb665]"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[ecf5d30]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.4"},"language-common@1.7.4"))))),(0,l.kt)("h2",{id:"062"},"0.6.2"),(0,l.kt)("h3",{id:"patch-changes-20"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"e04aa28: Rename credential-schema to configuration-schema, update descriptions")),(0,l.kt)("h2",{id:"061"},"0.6.1"),(0,l.kt)("h3",{id:"patch-changes-21"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"28dfbfa: add todo, fix build pack")),(0,l.kt)("h2",{id:"060"},"0.6.0"),(0,l.kt)("h3",{id:"minor-changes-2"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f294a62: Added credential-schema.json for new ui")),(0,l.kt)("h2",{id:"050"},"0.5.0"),(0,l.kt)("h3",{id:"minor-changes-3"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"2c04894: added sftp package")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/771488fd.8a860019.js b/assets/js/771488fd.8a860019.js new file mode 100644 index 00000000000..024d2c3b032 --- /dev/null +++ b/assets/js/771488fd.8a860019.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[76874],{3905:(e,a,t)=>{t.d(a,{Zo:()=>o,kt:()=>g});var n=t(67294);function l(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function i(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function c(e){for(var a=1;a=0||(l[t]=e[t]);return l}(e,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(l[t]=e[t])}return l}var p=n.createContext({}),h=function(e){var a=n.useContext(p),t=a;return e&&(t="function"==typeof e?e(a):c(c({},a),e)),t},o=function(e){var a=h(e.components);return n.createElement(p.Provider,{value:a},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},s=n.forwardRef((function(e,a){var t=e.components,l=e.mdxType,i=e.originalType,p=e.parentName,o=r(e,["components","mdxType","originalType","parentName"]),d=h(t),s=l,g=d["".concat(p,".").concat(s)]||d[s]||u[s]||i;return t?n.createElement(g,c(c({ref:a},o),{},{components:t})):n.createElement(g,c({ref:a},o))}));function g(e,a){var t=arguments,l=a&&a.mdxType;if("string"==typeof e||l){var i=t.length,c=new Array(i);c[0]=s;var r={};for(var p in a)hasOwnProperty.call(a,p)&&(r[p]=a[p]);r.originalType=e,r[d]="string"==typeof e?e:l,c[1]=r;for(var h=2;h{t.r(a),t.d(a,{assets:()=>p,contentTitle:()=>c,default:()=>u,frontMatter:()=>i,metadata:()=>r,toc:()=>h});var n=t(87462),l=(t(67294),t(3905));const i={title:"sftp changelog",id:"sftp-changelog",keywords:["adaptor","changelog","sftp"]},c="Changelog for the sftp adaptor",r={unversionedId:"packages/sftp-changelog",id:"packages/sftp-changelog",title:"sftp changelog",description:"1.0.2",source:"@site/adaptors/packages/sftp-changelog.md",sourceDirName:"packages",slug:"/packages/sftp-changelog",permalink:"/adaptors/packages/sftp-changelog",draft:!1,tags:[],version:"current",frontMatter:{title:"sftp changelog",id:"sftp-changelog",keywords:["adaptor","changelog","sftp"]},sidebar:"adaptors",previous:{title:"Config for sftp",permalink:"/adaptors/packages/sftp-configuration-schema"},next:{title:"sftp developer readme",permalink:"/adaptors/packages/sftp-readme"}},p={},h=[{value:"1.0.2",id:"102",level:2},{value:"Patch Changes",id:"patch-changes",level:3},{value:"1.0.1",id:"101",level:2},{value:"Patch Changes",id:"patch-changes-1",level:3},{value:"1.0.0",id:"100",level:2},{value:"Major Changes",id:"major-changes",level:3},{value:"0.8.8",id:"088",level:2},{value:"Patch Changes",id:"patch-changes-2",level:3},{value:"0.8.7",id:"087",level:2},{value:"Patch Changes",id:"patch-changes-3",level:3},{value:"0.8.6",id:"086",level:2},{value:"Patch Changes",id:"patch-changes-4",level:3},{value:"0.8.5",id:"085",level:2},{value:"Patch Changes",id:"patch-changes-5",level:3},{value:"0.8.4",id:"084",level:2},{value:"Patch Changes",id:"patch-changes-6",level:3},{value:"0.8.3",id:"083",level:2},{value:"Patch Changes",id:"patch-changes-7",level:3},{value:"0.8.2",id:"082",level:2},{value:"Patch Changes",id:"patch-changes-8",level:3},{value:"0.8.1",id:"081",level:2},{value:"Patch Changes",id:"patch-changes-9",level:3},{value:"0.8.0",id:"080",level:2},{value:"Minor Changes",id:"minor-changes",level:3},{value:"Patch Changes",id:"patch-changes-10",level:3},{value:"0.7.3",id:"073",level:2},{value:"Patch Changes",id:"patch-changes-11",level:3},{value:"0.7.2",id:"072",level:2},{value:"Patch Changes",id:"patch-changes-12",level:3},{value:"0.7.1",id:"071",level:2},{value:"Patch Changes",id:"patch-changes-13",level:3},{value:"0.7.0",id:"070",level:2},{value:"Minor Changes",id:"minor-changes-1",level:3},{value:"0.6.9",id:"069",level:2},{value:"Patch Changes",id:"patch-changes-14",level:3},{value:"0.6.8",id:"068",level:2},{value:"Patch Changes",id:"patch-changes-15",level:3},{value:"0.6.7",id:"067",level:2},{value:"Patch Changes",id:"patch-changes-16",level:3},{value:"0.6.6",id:"066",level:2},{value:"Patch Changes",id:"patch-changes-17",level:3},{value:"0.6.5",id:"065",level:2},{value:"Patch Changes",id:"patch-changes-18",level:3},{value:"0.6.4",id:"064",level:2},{value:"Patch Changes",id:"patch-changes-19",level:3},{value:"0.6.3",id:"063",level:2},{value:"Patch Changes",id:"patch-changes-20",level:3},{value:"0.6.2",id:"062",level:2},{value:"Patch Changes",id:"patch-changes-21",level:3},{value:"0.6.1",id:"061",level:2},{value:"Patch Changes",id:"patch-changes-22",level:3},{value:"0.6.0",id:"060",level:2},{value:"Minor Changes",id:"minor-changes-2",level:3},{value:"0.5.0",id:"050",level:2},{value:"Minor Changes",id:"minor-changes-3",level:3}],o={toc:h},d="wrapper";function u(e){let{components:a,...t}=e;return(0,l.kt)(d,(0,n.Z)({},o,t,{components:a,mdxType:"MDXLayout"}),(0,l.kt)("h1",{id:"changelog-for-the-sftp-adaptor"},"Changelog for the sftp adaptor"),(0,l.kt)("h1",{id:"openfnlanguage-sftp"},"@openfn/language-sftp"),(0,l.kt)("h2",{id:"102"},"1.0.2"),(0,l.kt)("h3",{id:"patch-changes"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"a666a63: On error disconnect then throw")),(0,l.kt)("h2",{id:"101"},"1.0.1"),(0,l.kt)("h3",{id:"patch-changes-1"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"771c814: - Properly disconnect on error",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Improve operation logs")))),(0,l.kt)("h2",{id:"100"},"1.0.0"),(0,l.kt)("h3",{id:"major-changes"},"Major Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"e52ba66: add ",(0,l.kt)("inlineCode",{parentName:"li"},"filter")," option in ",(0,l.kt)("inlineCode",{parentName:"li"},"list()")," function")),(0,l.kt)("h2",{id:"088"},"0.8.8"),(0,l.kt)("h3",{id:"patch-changes-2"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[c19efbe]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.11.1"},"language-common@1.11.1"))))),(0,l.kt)("h2",{id:"087"},"0.8.7"),(0,l.kt)("h3",{id:"patch-changes-3"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[85c35b8]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.11.0"},"language-common@1.11.0"))))),(0,l.kt)("h2",{id:"086"},"0.8.6"),(0,l.kt)("h3",{id:"patch-changes-4"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[df09270]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.3"},"language-common@1.10.3"))))),(0,l.kt)("h2",{id:"085"},"0.8.5"),(0,l.kt)("h3",{id:"patch-changes-5"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[26a303e]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.2"},"language-common@1.10.2"))))),(0,l.kt)("h2",{id:"084"},"0.8.4"),(0,l.kt)("h3",{id:"patch-changes-6"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[8c32eb3]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.1"},"language-common@1.10.1"))))),(0,l.kt)("h2",{id:"083"},"0.8.3"),(0,l.kt)("h3",{id:"patch-changes-7"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[aad9549]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.0"},"language-common@1.10.0"))))),(0,l.kt)("h2",{id:"082"},"0.8.2"),(0,l.kt)("h3",{id:"patch-changes-8"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"d2c980e: Use ",(0,l.kt)("inlineCode",{parentName:"li"},"parseCsv")," from language-common"),(0,l.kt)("li",{parentName:"ul"},"c5d3ce1: improve connection handling"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[111807f]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.9.0"},"language-common@1.9.0"))))),(0,l.kt)("h2",{id:"081"},"0.8.1"),(0,l.kt)("h3",{id:"patch-changes-9"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Update lock files"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.8.1"},"language-common@1.8.1"))))),(0,l.kt)("h2",{id:"080"},"0.8.0"),(0,l.kt)("h3",{id:"minor-changes"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"2c1d603: Remove parameter reassignment to ensure proper functioning inside an\n",(0,l.kt)("inlineCode",{parentName:"p"},"each")," block; add eslint"),(0,l.kt)("p",{parentName:"li"},"The packages receiving a major bump here exposed functions that didn't work as\nexpected inside ",(0,l.kt)("inlineCode",{parentName:"p"},"each")," blocks. Users were previously wrapping these functions\ninside their own custom ",(0,l.kt)("inlineCode",{parentName:"p"},"fn")," blocks, and this change will ensure that they can\nbe used inside a standard each."),(0,l.kt)("p",{parentName:"li"},"See ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors/issues/275"},"https://github.com/OpenFn/adaptors/issues/275")," for more details."))),(0,l.kt)("h3",{id:"patch-changes-10"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[2c1d603]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.8.0"},"language-common@1.8.0"))))),(0,l.kt)("h2",{id:"073"},"0.7.3"),(0,l.kt)("h3",{id:"patch-changes-11"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"432dd0a: fix sftp connection wqautoclose")),(0,l.kt)("h2",{id:"072"},"0.7.2"),(0,l.kt)("h3",{id:"patch-changes-12"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"205b806: remove asObjects key before parsing")),(0,l.kt)("h2",{id:"071"},"0.7.1"),(0,l.kt)("h3",{id:"patch-changes-13"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"827c627: error handling")),(0,l.kt)("h2",{id:"070"},"0.7.0"),(0,l.kt)("h3",{id:"minor-changes-1"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"fa58216: Add csvtojson convertion option")),(0,l.kt)("h2",{id:"069"},"0.6.9"),(0,l.kt)("h3",{id:"patch-changes-14"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[929bca6]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.7"},"language-common@1.7.7"))))),(0,l.kt)("h2",{id:"068"},"0.6.8"),(0,l.kt)("h3",{id:"patch-changes-15"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"14f481e: mark execute as private"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[2b4c61a]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.6"},"language-common@1.7.6"))))),(0,l.kt)("h2",{id:"067"},"0.6.7"),(0,l.kt)("h3",{id:"patch-changes-16"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f7ebd3c: remove sample configuration")),(0,l.kt)("h2",{id:"066"},"0.6.6"),(0,l.kt)("h3",{id:"patch-changes-17"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f2aed32: add examples")),(0,l.kt)("h2",{id:"065"},"0.6.5"),(0,l.kt)("h3",{id:"patch-changes-18"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"6d8de03: change @constructor to @function and remove /","*",(0,l.kt)("em",{parentName:"li"}," @module Adaptor "),"/")),(0,l.kt)("h2",{id:"064"},"0.6.4"),(0,l.kt)("h3",{id:"patch-changes-19"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f2a91a4: Update package exports"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[f2a91a4]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.5"},"language-common@1.7.5"))))),(0,l.kt)("h2",{id:"063"},"0.6.3"),(0,l.kt)("h3",{id:"patch-changes-20"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"8566b26: Fix typings"),(0,l.kt)("li",{parentName:"ul"},"b3d45ff: Fix CJS export of npm package."),(0,l.kt)("li",{parentName:"ul"},"4126a62: Fix built bundle"),(0,l.kt)("li",{parentName:"ul"},"ecf5d30: remove sinon since it was not being used"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[8566b26]"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[b3d45ff]"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[b5eb665]"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[ecf5d30]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.4"},"language-common@1.7.4"))))),(0,l.kt)("h2",{id:"062"},"0.6.2"),(0,l.kt)("h3",{id:"patch-changes-21"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"e04aa28: Rename credential-schema to configuration-schema, update descriptions")),(0,l.kt)("h2",{id:"061"},"0.6.1"),(0,l.kt)("h3",{id:"patch-changes-22"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"28dfbfa: add todo, fix build pack")),(0,l.kt)("h2",{id:"060"},"0.6.0"),(0,l.kt)("h3",{id:"minor-changes-2"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f294a62: Added credential-schema.json for new ui")),(0,l.kt)("h2",{id:"050"},"0.5.0"),(0,l.kt)("h3",{id:"minor-changes-3"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"2c04894: added sftp package")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/cc826739.10eb5ed6.js b/assets/js/cc826739.bbc10bb5.js similarity index 99% rename from assets/js/cc826739.10eb5ed6.js rename to assets/js/cc826739.bbc10bb5.js index b3526d1b2b0..f83f46e77eb 100644 --- a/assets/js/cc826739.10eb5ed6.js +++ b/assets/js/cc826739.bbc10bb5.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[85960],{73451:a=>{a.exports=JSON.parse('{"pluginId":"adaptors","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"adaptors":[{"type":"link","label":"Introduction","href":"/adaptors/","docId":"adaptors-intro"},{"type":"link","label":"Library Examples","href":"/adaptors/library","docId":"library-intro"},{"type":"category","label":"asana","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/asana-docs","docId":"packages/asana-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/asana-configuration-schema","docId":"packages/asana-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/asana-changelog","docId":"packages/asana-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/asana-readme","docId":"packages/asana-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"beyonic","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/beyonic-docs","docId":"packages/beyonic-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/beyonic-configuration-schema","docId":"packages/beyonic-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Pay CHW","href":"/adaptors/library/jobs/auto/Pay-CHW-2021-04-23","docId":"library/jobs/auto/Pay-CHW-2021-04-23"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/beyonic-changelog","docId":"packages/beyonic-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/beyonic-readme","docId":"packages/beyonic-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"bigquery","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/bigquery-docs","docId":"packages/bigquery-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/bigquery-configuration-schema","docId":"packages/bigquery-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/bigquery-changelog","docId":"packages/bigquery-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/bigquery-readme","docId":"packages/bigquery-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"cht","href":"/adaptors/cht","docId":"cht"},{"type":"link","label":"ckan","href":"/adaptors/ckan","docId":"ckan"},{"type":"category","label":"commcare","items":[{"type":"link","label":"Overview","href":"/adaptors/commcare","docId":"commcare"},{"type":"link","label":"Functions","href":"/adaptors/packages/commcare-docs","docId":"packages/commcare-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/commcare-configuration-schema","docId":"packages/commcare-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Registration forms(new case)","href":"/adaptors/library/jobs/auto/Registration-forms-new-case-2023-06-22","docId":"library/jobs/auto/Registration-forms-new-case-2023-06-22"},{"type":"link","label":"\u2728 Q3 2022] Update HH Name in CommCare","href":"/adaptors/library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27","docId":"library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27"},{"type":"link","label":"nawiri","href":"/adaptors/library/jobs/auto/nawiri-2023-05-03","docId":"library/jobs/auto/nawiri-2023-05-03"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/commcare-changelog","docId":"packages/commcare-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/commcare-readme","docId":"packages/commcare-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"common","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/common-docs","docId":"packages/common-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/common-configuration-schema","docId":"packages/common-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/common-changelog","docId":"packages/common-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/common-readme","docId":"packages/common-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"dhis2","items":[{"type":"link","label":"Overview","href":"/adaptors/dhis2","docId":"dhis2"},{"type":"link","label":"Functions","href":"/adaptors/packages/dhis2-docs","docId":"packages/dhis2-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/dhis2-configuration-schema","docId":"packages/dhis2-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Add data values","href":"/adaptors/library/jobs/auto/DHIS2-DataValues-API","docId":"library/jobs/auto/DHIS2-DataValues-API"},{"type":"link","label":"\ud83d\udcdc Add events","href":"/adaptors/library/jobs/auto/DHIS2-Events-API","docId":"library/jobs/auto/DHIS2-Events-API"},{"type":"link","label":"\u2728 Load to DHIS2","href":"/adaptors/library/jobs/auto/Load-to-DHIS2-2023-07-17","docId":"library/jobs/auto/Load-to-DHIS2-2023-07-17"},{"type":"link","label":"Create TEI (dhis2)","href":"/adaptors/library/jobs/auto/Create-TEI-dhis2-2021-03-22","docId":"library/jobs/auto/Create-TEI-dhis2-2021-03-22"},{"type":"link","label":"CHW case to DHIS2","href":"/adaptors/library/jobs/auto/CHW-case-to-DHIS2-2023-04-27","docId":"library/jobs/auto/CHW-case-to-DHIS2-2023-04-27"},{"type":"link","label":"0 - Get TEI data","href":"/adaptors/library/jobs/auto/0-Get-TEI-data-2021-06-02","docId":"library/jobs/auto/0-Get-TEI-data-2021-06-02"},{"type":"link","label":"DHIS2 Events","href":"/adaptors/library/jobs/auto/DHIS2-Events-2016-01-27","docId":"library/jobs/auto/DHIS2-Events-2016-01-27"},{"type":"link","label":"Add DHIS2 Data Value Sets","href":"/adaptors/library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28","docId":"library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/dhis2-changelog","docId":"packages/dhis2-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/dhis2-readme","docId":"packages/dhis2-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"dynamics","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/dynamics-docs","docId":"packages/dynamics-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/dynamics-configuration-schema","docId":"packages/dynamics-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/dynamics-changelog","docId":"packages/dynamics-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/dynamics-readme","docId":"packages/dynamics-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"facebook","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/facebook-docs","docId":"packages/facebook-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/facebook-configuration-schema","docId":"packages/facebook-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/facebook-changelog","docId":"packages/facebook-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/facebook-readme","docId":"packages/facebook-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"fhir","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/fhir-docs","docId":"packages/fhir-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/fhir-configuration-schema","docId":"packages/fhir-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/fhir-changelog","docId":"packages/fhir-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/fhir-readme","docId":"packages/fhir-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"godata","items":[{"type":"link","label":"Overview","href":"/adaptors/godata","docId":"godata"},{"type":"link","label":"Functions","href":"/adaptors/packages/godata-docs","docId":"packages/godata-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/godata-configuration-schema","docId":"packages/godata-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/godata-changelog","docId":"packages/godata-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/godata-readme","docId":"packages/godata-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"googlehealthcare","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/googlehealthcare-docs","docId":"packages/googlehealthcare-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/googlehealthcare-configuration-schema","docId":"packages/googlehealthcare-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/googlehealthcare-changelog","docId":"packages/googlehealthcare-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/googlehealthcare-readme","docId":"packages/googlehealthcare-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"googlesheets","items":[{"type":"link","label":"Overview","href":"/adaptors/googlesheets","docId":"googlesheets"},{"type":"link","label":"Functions","href":"/adaptors/packages/googlesheets-docs","docId":"packages/googlesheets-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/googlesheets-configuration-schema","docId":"packages/googlesheets-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Kobo to sheets","href":"/adaptors/library/jobs/auto/Kobo-to-sheets-2023-10-13","docId":"library/jobs/auto/Kobo-to-sheets-2023-10-13"},{"type":"link","label":"Register Patient","href":"/adaptors/library/jobs/auto/Register-Patient-2021-03-02","docId":"library/jobs/auto/Register-Patient-2021-03-02"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/googlesheets-changelog","docId":"packages/googlesheets-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/googlesheets-readme","docId":"packages/googlesheets-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"hive","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/hive-docs","docId":"packages/hive-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/hive-configuration-schema","docId":"packages/hive-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/hive-changelog","docId":"packages/hive-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/hive-readme","docId":"packages/hive-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"http","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/http-docs","docId":"packages/http-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/http-configuration-schema","docId":"packages/http-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Extract Kobo data from API to send to OpenFn Inbox","href":"/adaptors/library/jobs/auto/getKoboData","docId":"library/jobs/auto/getKoboData"},{"type":"link","label":"\ud83d\udcdc Using async and array.map","href":"/adaptors/library/jobs/auto/async-and-array-dot-map","docId":"library/jobs/auto/async-and-array-dot-map"},{"type":"link","label":"\ud83d\udcdc Chaining HTTP Requests","href":"/adaptors/library/jobs/auto/complex-http-request-chains","docId":"library/jobs/auto/complex-http-request-chains"},{"type":"link","label":"\ud83d\udcdc Promises and nested requests","href":"/adaptors/library/jobs/auto/promise-all-nested-requests","docId":"library/jobs/auto/promise-all-nested-requests"},{"type":"link","label":"\ud83d\udcdc Timeout to create a delay","href":"/adaptors/library/jobs/auto/timeout","docId":"library/jobs/auto/timeout"},{"type":"link","label":"\ud83d\udcdc Chaining synchronous http requests","href":"/adaptors/library/jobs/auto/synchronous-http-request","docId":"library/jobs/auto/synchronous-http-request"},{"type":"link","label":"\u2728 WF1-1. Bulk get HH cases","href":"/adaptors/library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19","docId":"library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19"},{"type":"link","label":"\u2728 WF2-1. Bulk get Person cases","href":"/adaptors/library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19","docId":"library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19"},{"type":"link","label":"\u2728 WF4-1. Bulk get Referral Cases","href":"/adaptors/library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19","docId":"library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19"},{"type":"link","label":"\u2728 WF3-1. Bulk get Person Visit cases","href":"/adaptors/library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19","docId":"library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19"},{"type":"link","label":"Fetch Claims","href":"/adaptors/library/jobs/auto/Fetch-Claims-2023-07-17","docId":"library/jobs/auto/Fetch-Claims-2023-07-17"},{"type":"link","label":"no return","href":"/adaptors/library/jobs/auto/no-return-2023-01-06","docId":"library/jobs/auto/no-return-2023-01-06"},{"type":"link","label":"Catch Error in HTTP Request","href":"/adaptors/library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26","docId":"library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26"},{"type":"link","label":"Get CommCare Forms (Bulk Extract)","href":"/adaptors/library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16","docId":"library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16"},{"type":"link","label":"aleksa cron","href":"/adaptors/library/jobs/auto/aleksa-cron-2022-04-29","docId":"library/jobs/auto/aleksa-cron-2022-04-29"},{"type":"link","label":"1. Get CommCare Forms (Bulk Extract)","href":"/adaptors/library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08","docId":"library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08"},{"type":"link","label":"Request Vitas Sync","href":"/adaptors/library/jobs/auto/Request-Vitas-Sync-2021-05-11","docId":"library/jobs/auto/Request-Vitas-Sync-2021-05-11"},{"type":"link","label":"Failed Payment Notification","href":"/adaptors/library/jobs/auto/Failed-Payment-Notification-2021-04-23","docId":"library/jobs/auto/Failed-Payment-Notification-2021-04-23"},{"type":"link","label":"02b/ Initiate Payments","href":"/adaptors/library/jobs/auto/02b-Initiate-Payments-2019-11-19","docId":"library/jobs/auto/02b-Initiate-Payments-2019-11-19"},{"type":"link","label":"01c/ Create person_position record","href":"/adaptors/library/jobs/auto/01c-Create-person_position-record-2019-12-13","docId":"library/jobs/auto/01c-Create-person_position-record-2019-12-13"},{"type":"link","label":"01a/ Create Registrants","href":"/adaptors/library/jobs/auto/01a-Create-Registrants-2019-11-19","docId":"library/jobs/auto/01a-Create-Registrants-2019-11-19"},{"type":"link","label":"05b/Update ODK eval form","href":"/adaptors/library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19","docId":"library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19"},{"type":"link","label":"05/ Submit employee evaluation","href":"/adaptors/library/jobs/auto/05-Submit-employee-evaluation-2019-12-03","docId":"library/jobs/auto/05-Submit-employee-evaluation-2019-12-03"},{"type":"link","label":"04b/ Update ODK form","href":"/adaptors/library/jobs/auto/04b-Update-ODK-form-2019-12-03","docId":"library/jobs/auto/04b-Update-ODK-form-2019-12-03"},{"type":"link","label":"commcare reports api","href":"/adaptors/library/jobs/auto/commcare-reports-api-2016-08-29","docId":"library/jobs/auto/commcare-reports-api-2016-08-29"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/http-changelog","docId":"packages/http-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/http-readme","docId":"packages/http-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"khanacademy","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/khanacademy-docs","docId":"packages/khanacademy-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/khanacademy-configuration-schema","docId":"packages/khanacademy-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/khanacademy-changelog","docId":"packages/khanacademy-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/khanacademy-readme","docId":"packages/khanacademy-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"kobotoolbox","items":[{"type":"link","label":"Overview","href":"/adaptors/kobotoolbox","docId":"kobotoolbox"},{"type":"link","label":"Functions","href":"/adaptors/packages/kobotoolbox-docs","docId":"packages/kobotoolbox-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/kobotoolbox-configuration-schema","docId":"packages/kobotoolbox-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"GET Data From KoboToolbox","href":"/adaptors/library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22","docId":"library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/kobotoolbox-changelog","docId":"packages/kobotoolbox-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/kobotoolbox-readme","docId":"packages/kobotoolbox-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"magpi","items":[{"type":"link","label":"Overview","href":"/adaptors/magpi","docId":"magpi"},{"type":"link","label":"Functions","href":"/adaptors/packages/magpi-docs","docId":"packages/magpi-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/magpi-configuration-schema","docId":"packages/magpi-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/magpi-changelog","docId":"packages/magpi-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/magpi-readme","docId":"packages/magpi-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mailchimp","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/mailchimp-docs","docId":"packages/mailchimp-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/mailchimp-configuration-schema","docId":"packages/mailchimp-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/mailchimp-changelog","docId":"packages/mailchimp-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/mailchimp-readme","docId":"packages/mailchimp-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mailgun","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/mailgun-docs","docId":"packages/mailgun-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/mailgun-configuration-schema","docId":"packages/mailgun-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc send email","href":"/adaptors/library/jobs/auto/send-mail-in-mailgun","docId":"library/jobs/auto/send-mail-in-mailgun"},{"type":"link","label":"01 send mailgun email","href":"/adaptors/library/jobs/auto/01-send-mailgun-email-2018-12-04","docId":"library/jobs/auto/01-send-mailgun-email-2018-12-04"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/mailgun-changelog","docId":"packages/mailgun-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/mailgun-readme","docId":"packages/mailgun-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"maximo","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/maximo-docs","docId":"packages/maximo-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/maximo-configuration-schema","docId":"packages/maximo-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/maximo-changelog","docId":"packages/maximo-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/maximo-readme","docId":"packages/maximo-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"medicmobile","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/medicmobile-docs","docId":"packages/medicmobile-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/medicmobile-configuration-schema","docId":"packages/medicmobile-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/medicmobile-changelog","docId":"packages/medicmobile-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/medicmobile-readme","docId":"packages/medicmobile-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mogli","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/mogli-docs","docId":"packages/mogli-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/mogli-configuration-schema","docId":"packages/mogli-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/mogli-changelog","docId":"packages/mogli-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/mogli-readme","docId":"packages/mogli-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mongodb","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/mongodb-docs","docId":"packages/mongodb-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/mongodb-configuration-schema","docId":"packages/mongodb-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/mongodb-changelog","docId":"packages/mongodb-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/mongodb-readme","docId":"packages/mongodb-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"moodle","href":"/adaptors/moodle","docId":"moodle"},{"type":"category","label":"msgraph","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/msgraph-docs","docId":"packages/msgraph-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/msgraph-configuration-schema","docId":"packages/msgraph-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/msgraph-changelog","docId":"packages/msgraph-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/msgraph-readme","docId":"packages/msgraph-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mssql","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/mssql-docs","docId":"packages/mssql-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/mssql-configuration-schema","docId":"packages/mssql-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Extract Vitas Data","href":"/adaptors/library/jobs/auto/Extract-Vitas-Data-2021-05-11","docId":"library/jobs/auto/Extract-Vitas-Data-2021-05-11"},{"type":"link","label":"CommCare to Azure Sql","href":"/adaptors/library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27","docId":"library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/mssql-changelog","docId":"packages/mssql-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/mssql-readme","docId":"packages/mssql-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mysql","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/mysql-docs","docId":"packages/mysql-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/mysql-configuration-schema","docId":"packages/mysql-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"01b/ Query new person record","href":"/adaptors/library/jobs/auto/01b-Query-new-person-record-2019-12-13","docId":"library/jobs/auto/01b-Query-new-person-record-2019-12-13"},{"type":"link","label":"03/ Update Payment Status","href":"/adaptors/library/jobs/auto/03-Update-Payment-Status-2019-11-19","docId":"library/jobs/auto/03-Update-Payment-Status-2019-11-19"},{"type":"link","label":"05a/Query for new employees","href":"/adaptors/library/jobs/auto/05a-Query-for-new-employees-2019-12-19","docId":"library/jobs/auto/05a-Query-for-new-employees-2019-12-19"},{"type":"link","label":"04a/Query for job changes","href":"/adaptors/library/jobs/auto/04a-Query-for-job-changes-2019-12-12","docId":"library/jobs/auto/04a-Query-for-job-changes-2019-12-12"},{"type":"link","label":"02a/ Query DB for people to pay","href":"/adaptors/library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11","docId":"library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/mysql-changelog","docId":"packages/mysql-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/mysql-readme","docId":"packages/mysql-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"nexmo","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/nexmo-docs","docId":"packages/nexmo-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/nexmo-configuration-schema","docId":"packages/nexmo-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/nexmo-changelog","docId":"packages/nexmo-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/nexmo-readme","docId":"packages/nexmo-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"ocl","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/ocl-docs","docId":"packages/ocl-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/ocl-configuration-schema","docId":"packages/ocl-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/ocl-changelog","docId":"packages/ocl-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/ocl-readme","docId":"packages/ocl-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"odk","href":"/adaptors/odk","docId":"odk"},{"type":"link","label":"ona","href":"/adaptors/ona","docId":"ona"},{"type":"category","label":"openfn","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/openfn-docs","docId":"packages/openfn-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/openfn-configuration-schema","docId":"packages/openfn-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/openfn-changelog","docId":"packages/openfn-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/openfn-readme","docId":"packages/openfn-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"openhim","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/openhim-docs","docId":"packages/openhim-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/openhim-configuration-schema","docId":"packages/openhim-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Create encounter in OpenHIM","href":"/adaptors/library/jobs/auto/CommCare-FHIR","docId":"library/jobs/auto/CommCare-FHIR"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/openhim-changelog","docId":"packages/openhim-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/openhim-readme","docId":"packages/openhim-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"openmrs","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/openmrs-docs","docId":"packages/openmrs-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/openmrs-configuration-schema","docId":"packages/openmrs-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Create Person in OpenMRS","href":"/adaptors/library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12","docId":"library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12"},{"type":"link","label":"Create Patient in OpenMRS","href":"/adaptors/library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24","docId":"library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/openmrs-changelog","docId":"packages/openmrs-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/openmrs-readme","docId":"packages/openmrs-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"postgresql","items":[{"type":"link","label":"Overview","href":"/adaptors/postgresql","docId":"postgresql"},{"type":"link","label":"Functions","href":"/adaptors/packages/postgresql-docs","docId":"packages/postgresql-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/postgresql-configuration-schema","docId":"packages/postgresql-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Using findValue with an array of data","href":"/adaptors/library/jobs/auto/async-findValue","docId":"library/jobs/auto/async-findValue"},{"type":"link","label":"1. Get data from SLUHIS","href":"/adaptors/library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08","docId":"library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08"},{"type":"link","label":"Load to DB","href":"/adaptors/library/jobs/auto/Load-to-DB-2022-05-16","docId":"library/jobs/auto/Load-to-DB-2022-05-16"},{"type":"link","label":"Load / Upsert Data into PostgreSQL","href":"/adaptors/library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22","docId":"library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22"},{"type":"link","label":"Upsert to mBrana","href":"/adaptors/library/jobs/auto/Upsert-to-mBrana-2021-05-11","docId":"library/jobs/auto/Upsert-to-mBrana-2021-05-11"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/postgresql-changelog","docId":"packages/postgresql-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/postgresql-readme","docId":"packages/postgresql-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"powerbi","href":"/adaptors/powerbi","docId":"powerbi"},{"type":"category","label":"primero","items":[{"type":"link","label":"Overview","href":"/adaptors/primero","docId":"primero"},{"type":"link","label":"Functions","href":"/adaptors/packages/primero-docs","docId":"packages/primero-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/primero-configuration-schema","docId":"packages/primero-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Get cases from Primero","href":"/adaptors/library/jobs/auto/Get-cases-from-Primero-2021-09-23","docId":"library/jobs/auto/Get-cases-from-Primero-2021-09-23"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/primero-changelog","docId":"packages/primero-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/primero-readme","docId":"packages/primero-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"progres","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/progres-docs","docId":"packages/progres-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/progres-configuration-schema","docId":"packages/progres-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/progres-changelog","docId":"packages/progres-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/progres-readme","docId":"packages/progres-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"rapidpro","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/rapidpro-docs","docId":"packages/rapidpro-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/rapidpro-configuration-schema","docId":"packages/rapidpro-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/rapidpro-changelog","docId":"packages/rapidpro-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/rapidpro-readme","docId":"packages/rapidpro-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"resourcemap","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/resourcemap-docs","docId":"packages/resourcemap-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/resourcemap-configuration-schema","docId":"packages/resourcemap-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/resourcemap-changelog","docId":"packages/resourcemap-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/resourcemap-readme","docId":"packages/resourcemap-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"salesforce","items":[{"type":"link","label":"Overview","href":"/adaptors/salesforce","docId":"salesforce"},{"type":"link","label":"Functions","href":"/adaptors/packages/salesforce-docs","docId":"packages/salesforce-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/salesforce-configuration-schema","docId":"packages/salesforce-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Pre-processing data","href":"/adaptors/library/jobs/auto/alter-state-before-operations","docId":"library/jobs/auto/alter-state-before-operations"},{"type":"link","label":"\ud83d\udcdc Using merge and each","href":"/adaptors/library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce","docId":"library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce"},{"type":"link","label":"\ud83d\udcdc Using promises","href":"/adaptors/library/jobs/auto/complex-state-control","docId":"library/jobs/auto/complex-state-control"},{"type":"link","label":"\ud83d\udcdc Concat fields with nulls","href":"/adaptors/library/jobs/auto/concatenate-many-fields-with-nulls","docId":"library/jobs/auto/concatenate-many-fields-with-nulls"},{"type":"link","label":"\ud83d\udcdc Create/update records if...","href":"/adaptors/library/jobs/auto/create-if-proposal","docId":"library/jobs/auto/create-if-proposal"},{"type":"link","label":"\ud83d\udcdc Create SMS linked to contact","href":"/adaptors/library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF","docId":"library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF"},{"type":"link","label":"\ud83d\udcdc Handling multiple ODK repeat groups","href":"/adaptors/library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks","docId":"library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks"},{"type":"link","label":"\ud83d\udcdc Merge data into child array then upsert","href":"/adaptors/library/jobs/auto/upsert-many-items-in-array-with-value-outside-array","docId":"library/jobs/auto/upsert-many-items-in-array-with-value-outside-array"},{"type":"link","label":"WF3-2a/ Repeat Failed Person Visits","href":"/adaptors/library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31","docId":"library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31"},{"type":"link","label":"\u2728 WF3-2. Bulk upsert Person Visits","href":"/adaptors/library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19","docId":"library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19"},{"type":"link","label":"\u2728 Upsert Pre Challenges","href":"/adaptors/library/jobs/auto/Upsert-Pre-Challenges-2021-04-30","docId":"library/jobs/auto/Upsert-Pre-Challenges-2021-04-30"},{"type":"link","label":"\u2728 Attendance Non Skillz","href":"/adaptors/library/jobs/auto/Attendance-Non-Skillz-2021-06-14","docId":"library/jobs/auto/Attendance-Non-Skillz-2021-06-14"},{"type":"link","label":"\u2728 Upsert Post Challenges","href":"/adaptors/library/jobs/auto/Upsert-Post-Challenges-2021-04-30","docId":"library/jobs/auto/Upsert-Post-Challenges-2021-04-30"},{"type":"link","label":"\u2728 Upsert Register Participant","href":"/adaptors/library/jobs/auto/Upsert-Register-Participant-2021-04-28","docId":"library/jobs/auto/Upsert-Register-Participant-2021-04-28"},{"type":"link","label":"Upsert Register Participant (Skillz)","href":"/adaptors/library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30","docId":"library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30"},{"type":"link","label":"\u2728 Coach Session Register","href":"/adaptors/library/jobs/auto/Coach-Session-Register-2021-05-03","docId":"library/jobs/auto/Coach-Session-Register-2021-05-03"},{"type":"link","label":"\u2728 WF2-2. Bulk upsert Persons","href":"/adaptors/library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19","docId":"library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19"},{"type":"link","label":"\u2728 Create Intervention","href":"/adaptors/library/jobs/auto/Create-Intervention-2021-04-08","docId":"library/jobs/auto/Create-Intervention-2021-04-08"},{"type":"link","label":"\u2728 WF1-2. Bulk upsert HHs and HH Visits","href":"/adaptors/library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19","docId":"library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19"},{"type":"link","label":"\u2728 WF4-2. Bulk upsert Services","href":"/adaptors/library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19","docId":"library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19"},{"type":"link","label":"Q3 2022] Upsert Person Visit","href":"/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28","docId":"library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28"},{"type":"link","label":"Q4 2022] Upsert Supervision - Accompaniment","href":"/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22","docId":"library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22"},{"type":"link","label":"Q4 2022] Upsert Supervision - Feedback","href":"/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19","docId":"library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19"},{"type":"link","label":"Q4 2022] Upsert Supervision - Household Spot Check","href":"/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24","docId":"library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24"},{"type":"link","label":"\u2728 Q3 2022] Create Distribution & Referral in SF","href":"/adaptors/library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19","docId":"library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19"},{"type":"link","label":"Create contact","href":"/adaptors/library/jobs/auto/Create-contact-2021-03-01","docId":"library/jobs/auto/Create-contact-2021-03-01"},{"type":"link","label":"Q3 2022] Upsert Person","href":"/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21","docId":"library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21"},{"type":"link","label":"Q3 2022] Upsert Household & Household Visit in SF","href":"/adaptors/library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28","docId":"library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28"},{"type":"link","label":"HIV Testing Event Statistics","href":"/adaptors/library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03","docId":"library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03"},{"type":"link","label":"Malaria Testing Event Statistics","href":"/adaptors/library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03","docId":"library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03"},{"type":"link","label":"HIV Testing Event Snapshot","href":"/adaptors/library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03","docId":"library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03"},{"type":"link","label":"Malaria Testing Event Snapshot","href":"/adaptors/library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03","docId":"library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03"},{"type":"link","label":"PHQ9","href":"/adaptors/library/jobs/auto/PHQ9-2021-05-03","docId":"library/jobs/auto/PHQ9-2021-05-03"},{"type":"link","label":"Risk and Vulnerability Assessment","href":"/adaptors/library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27","docId":"library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27"},{"type":"link","label":"Upsert Attendance Skillz Plus Club","href":"/adaptors/library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24","docId":"library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24"},{"type":"link","label":"Upsert ART Adherence Self-Reporting Tool","href":"/adaptors/library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30","docId":"library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30"},{"type":"link","label":"Upsert Aggregate Service Referrals","href":"/adaptors/library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30","docId":"library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30"},{"type":"link","label":"Upsert Coach Support Visit (CSV)","href":"/adaptors/library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28","docId":"library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28"},{"type":"link","label":"Upsert Confirm Services Received","href":"/adaptors/library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14","docId":"library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14"},{"type":"link","label":"Upsert Home Visit Log Form","href":"/adaptors/library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03","docId":"library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03"},{"type":"link","label":"\u2728 Upsert Intervention Notes","href":"/adaptors/library/jobs/auto/Upsert-Intervention-Notes-2021-04-28","docId":"library/jobs/auto/Upsert-Intervention-Notes-2021-04-28"},{"type":"link","label":"\u2728 Upsert Register Event","href":"/adaptors/library/jobs/auto/Upsert-Register-Event-2021-04-30","docId":"library/jobs/auto/Upsert-Register-Event-2021-04-30"},{"type":"link","label":"Upsert Register Skills plus Club","href":"/adaptors/library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30","docId":"library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30"},{"type":"link","label":"\u2728 Upsert Risk & Vulnerability Assessment | Service Referral","href":"/adaptors/library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25","docId":"library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25"},{"type":"link","label":"Upsert Service Referral","href":"/adaptors/library/jobs/auto/Upsert-Service-Referral-2021-04-30","docId":"library/jobs/auto/Upsert-Service-Referral-2021-04-30"},{"type":"link","label":"Upsert Service Referral 2","href":"/adaptors/library/jobs/auto/Upsert-Service-Referral-2-2021-06-14","docId":"library/jobs/auto/Upsert-Service-Referral-2-2021-06-14"},{"type":"link","label":"Upsert Service Referral Followup","href":"/adaptors/library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30","docId":"library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30"},{"type":"link","label":"\u2728 Upsert Team/Group Name","href":"/adaptors/library/jobs/auto/Upsert-Team-Group-Name-2021-04-28","docId":"library/jobs/auto/Upsert-Team-Group-Name-2021-04-28"},{"type":"link","label":"Register Participant - V2 Skillz","href":"/adaptors/library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02","docId":"library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02"},{"type":"link","label":"Upsert User in Salesforce","href":"/adaptors/library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16","docId":"library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16"},{"type":"link","label":"Create Person in SF","href":"/adaptors/library/jobs/auto/Create-Person-in-SF-2019-02-25","docId":"library/jobs/auto/Create-Person-in-SF-2019-02-25"},{"type":"link","label":"1. Create Payment in SF","href":"/adaptors/library/jobs/auto/1-Create-Payment-in-SF-2018-09-03","docId":"library/jobs/auto/1-Create-Payment-in-SF-2018-09-03"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/salesforce-changelog","docId":"packages/salesforce-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/salesforce-readme","docId":"packages/salesforce-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"sftp","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/sftp-docs","docId":"packages/sftp-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/sftp-configuration-schema","docId":"packages/sftp-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/sftp-changelog","docId":"packages/sftp-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/sftp-readme","docId":"packages/sftp-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"smpp","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/smpp-docs","docId":"packages/smpp-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/smpp-configuration-schema","docId":"packages/smpp-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/smpp-changelog","docId":"packages/smpp-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/smpp-readme","docId":"packages/smpp-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"surveycto","items":[{"type":"link","label":"Overview","href":"/adaptors/surveycto","docId":"surveycto"},{"type":"link","label":"Functions","href":"/adaptors/packages/surveycto-docs","docId":"packages/surveycto-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/surveycto-configuration-schema","docId":"packages/surveycto-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/surveycto-changelog","docId":"packages/surveycto-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/surveycto-readme","docId":"packages/surveycto-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"tableau","href":"/adaptors/tableau","docId":"tableau"},{"type":"category","label":"telerivet","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/telerivet-docs","docId":"packages/telerivet-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/telerivet-configuration-schema","docId":"packages/telerivet-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Send sms from Salesforce workflow action","href":"/adaptors/library/jobs/auto/send-sms-from-salesforce-workflow","docId":"library/jobs/auto/send-sms-from-salesforce-workflow"},{"type":"link","label":"2. SMS Balance Update to Customer","href":"/adaptors/library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14","docId":"library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/telerivet-changelog","docId":"packages/telerivet-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/telerivet-readme","docId":"packages/telerivet-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"template","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/template-docs","docId":"packages/template-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/template-configuration-schema","docId":"packages/template-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/template-changelog","docId":"packages/template-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/template-readme","docId":"packages/template-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"twilio","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/twilio-docs","docId":"packages/twilio-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/twilio-configuration-schema","docId":"packages/twilio-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/twilio-changelog","docId":"packages/twilio-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/twilio-readme","docId":"packages/twilio-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"vtiger","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/vtiger-docs","docId":"packages/vtiger-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/vtiger-configuration-schema","docId":"packages/vtiger-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/vtiger-changelog","docId":"packages/vtiger-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/vtiger-readme","docId":"packages/vtiger-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"zoho","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/zoho-docs","docId":"packages/zoho-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/zoho-configuration-schema","docId":"packages/zoho-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/zoho-changelog","docId":"packages/zoho-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/zoho-readme","docId":"packages/zoho-readme"}],"collapsed":true,"collapsible":true}]},"docs":{"adaptors-intro":{"id":"adaptors-intro","title":"Adaptors","description":"Connect Anything.","sidebar":"adaptors"},"cht":{"id":"cht","title":"Community Health Toolkit","description":"1. To push data from CHT applications to OpenFn, leverage the","sidebar":"adaptors"},"ckan":{"id":"ckan","title":"CKAN","description":"App Overview","sidebar":"adaptors"},"commcare":{"id":"commcare","title":"CommCare","description":"App Overview","sidebar":"adaptors"},"dhis2":{"id":"dhis2","title":"DHIS2","description":"App Overview","sidebar":"adaptors"},"godata":{"id":"godata","title":"Go.Data","description":"Overview","sidebar":"adaptors"},"googlesheets":{"id":"googlesheets","title":"Google Forms/Google Sheets","description":"Google Forms/Google Sheets","sidebar":"adaptors"},"kobotoolbox":{"id":"kobotoolbox","title":"Kobo Toolbox","description":"App Overview","sidebar":"adaptors"},"library-intro":{"id":"library-intro","title":"The Community Job Library","description":"A growing knowledge base","sidebar":"adaptors"},"library/jobs/auto/0-Get-TEI-data-2021-06-02":{"id":"library/jobs/auto/0-Get-TEI-data-2021-06-02","title":"0 - Get TEI data","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01-send-mailgun-email-2018-12-04":{"id":"library/jobs/auto/01-send-mailgun-email-2018-12-04","title":"01 send mailgun email","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01a-Create-Registrants-2019-11-19":{"id":"library/jobs/auto/01a-Create-Registrants-2019-11-19","title":"01a/ Create Registrants","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01b-Query-new-person-record-2019-12-13":{"id":"library/jobs/auto/01b-Query-new-person-record-2019-12-13","title":"01b/ Query new person record","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01c-Create-person_position-record-2019-12-13":{"id":"library/jobs/auto/01c-Create-person_position-record-2019-12-13","title":"01c/ Create person_position record","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11":{"id":"library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11","title":"02a/ Query DB for people to pay","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/02b-Initiate-Payments-2019-11-19":{"id":"library/jobs/auto/02b-Initiate-Payments-2019-11-19","title":"02b/ Initiate Payments","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/03-Update-Payment-Status-2019-11-19":{"id":"library/jobs/auto/03-Update-Payment-Status-2019-11-19","title":"03/ Update Payment Status","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/04a-Query-for-job-changes-2019-12-12":{"id":"library/jobs/auto/04a-Query-for-job-changes-2019-12-12","title":"04a/Query for job changes","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/04b-Update-ODK-form-2019-12-03":{"id":"library/jobs/auto/04b-Update-ODK-form-2019-12-03","title":"04b/ Update ODK form","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/05-Submit-employee-evaluation-2019-12-03":{"id":"library/jobs/auto/05-Submit-employee-evaluation-2019-12-03","title":"05/ Submit employee evaluation","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/05a-Query-for-new-employees-2019-12-19":{"id":"library/jobs/auto/05a-Query-for-new-employees-2019-12-19","title":"05a/Query for new employees","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19":{"id":"library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19","title":"05b/Update ODK eval form","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/1-Create-Payment-in-SF-2018-09-03":{"id":"library/jobs/auto/1-Create-Payment-in-SF-2018-09-03","title":"1. Create Payment in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08":{"id":"library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08","title":"1. Get CommCare Forms (Bulk Extract)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08":{"id":"library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08","title":"1. Get data from SLUHIS","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14":{"id":"library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14","title":"2. SMS Balance Update to Customer","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28":{"id":"library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28","title":"Add DHIS2 Data Value Sets","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/aleksa-cron-2022-04-29":{"id":"library/jobs/auto/aleksa-cron-2022-04-29","title":"aleksa cron","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/alter-state-before-operations":{"id":"library/jobs/auto/alter-state-before-operations","title":"Pre-processing data","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/async-and-array-dot-map":{"id":"library/jobs/auto/async-and-array-dot-map","title":"Using async and array.map","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/async-findValue":{"id":"library/jobs/auto/async-findValue","title":"Using findValue with an array of data","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Attendance-Non-Skillz-2021-06-14":{"id":"library/jobs/auto/Attendance-Non-Skillz-2021-06-14","title":"Attendance Non Skillz","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce":{"id":"library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce","title":"Using merge and each","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26":{"id":"library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26","title":"Catch Error in HTTP Request","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/CHW-case-to-DHIS2-2023-04-27":{"id":"library/jobs/auto/CHW-case-to-DHIS2-2023-04-27","title":"CHW case to DHIS2","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Coach-Session-Register-2021-05-03":{"id":"library/jobs/auto/Coach-Session-Register-2021-05-03","title":"Coach Session Register","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/CommCare-FHIR":{"id":"library/jobs/auto/CommCare-FHIR","title":"Create encounter in OpenHIM","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/commcare-reports-api-2016-08-29":{"id":"library/jobs/auto/commcare-reports-api-2016-08-29","title":"commcare reports api","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27":{"id":"library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27","title":"CommCare to Azure Sql","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/complex-http-request-chains":{"id":"library/jobs/auto/complex-http-request-chains","title":"Chaining HTTP Requests","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/complex-state-control":{"id":"library/jobs/auto/complex-state-control","title":"Using promises","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/concatenate-many-fields-with-nulls":{"id":"library/jobs/auto/concatenate-many-fields-with-nulls","title":"Concat fields with nulls","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Create-contact-2021-03-01":{"id":"library/jobs/auto/Create-contact-2021-03-01","title":"Create contact","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/create-if-proposal":{"id":"library/jobs/auto/create-if-proposal","title":"Create/update records if...","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Create-Intervention-2021-04-08":{"id":"library/jobs/auto/Create-Intervention-2021-04-08","title":"Create Intervention","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24":{"id":"library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24","title":"Create Patient in OpenMRS","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12":{"id":"library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12","title":"Create Person in OpenMRS","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-Person-in-SF-2019-02-25":{"id":"library/jobs/auto/Create-Person-in-SF-2019-02-25","title":"Create Person in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF":{"id":"library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF","title":"Create SMS linked to contact","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Create-TEI-dhis2-2021-03-22":{"id":"library/jobs/auto/Create-TEI-dhis2-2021-03-22","title":"Create TEI (dhis2)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/DHIS2-DataValues-API":{"id":"library/jobs/auto/DHIS2-DataValues-API","title":"Add data values","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/DHIS2-Events-2016-01-27":{"id":"library/jobs/auto/DHIS2-Events-2016-01-27","title":"DHIS2 Events","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/DHIS2-Events-API":{"id":"library/jobs/auto/DHIS2-Events-API","title":"Add events","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Extract-Vitas-Data-2021-05-11":{"id":"library/jobs/auto/Extract-Vitas-Data-2021-05-11","title":"Extract Vitas Data","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Failed-Payment-Notification-2021-04-23":{"id":"library/jobs/auto/Failed-Payment-Notification-2021-04-23","title":"Failed Payment Notification","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Fetch-Claims-2023-07-17":{"id":"library/jobs/auto/Fetch-Claims-2023-07-17","title":"Fetch Claims","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Get-cases-from-Primero-2021-09-23":{"id":"library/jobs/auto/Get-cases-from-Primero-2021-09-23","title":"Get cases from Primero","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16":{"id":"library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16","title":"Get CommCare Forms (Bulk Extract)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22":{"id":"library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22","title":"GET Data From KoboToolbox","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/getKoboData":{"id":"library/jobs/auto/getKoboData","title":"Extract Kobo data from API to send to OpenFn Inbox","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03":{"id":"library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03","title":"HIV Testing Event Snapshot","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03":{"id":"library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03","title":"HIV Testing Event Statistics","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Kobo-to-sheets-2023-10-13":{"id":"library/jobs/auto/Kobo-to-sheets-2023-10-13","title":"Kobo to sheets","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Load-to-DB-2022-05-16":{"id":"library/jobs/auto/Load-to-DB-2022-05-16","title":"Load to DB","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Load-to-DHIS2-2023-07-17":{"id":"library/jobs/auto/Load-to-DHIS2-2023-07-17","title":"Load to DHIS2","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22":{"id":"library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22","title":"Load / Upsert Data into PostgreSQL","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03":{"id":"library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03","title":"Malaria Testing Event Snapshot","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03":{"id":"library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03","title":"Malaria Testing Event Statistics","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/nawiri-2023-05-03":{"id":"library/jobs/auto/nawiri-2023-05-03","title":"nawiri","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/no-return-2023-01-06":{"id":"library/jobs/auto/no-return-2023-01-06","title":"no return","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks":{"id":"library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks","title":"Handling multiple ODK repeat groups","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Pay-CHW-2021-04-23":{"id":"library/jobs/auto/Pay-CHW-2021-04-23","title":"Pay CHW","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/PHQ9-2021-05-03":{"id":"library/jobs/auto/PHQ9-2021-05-03","title":"PHQ9","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/promise-all-nested-requests":{"id":"library/jobs/auto/promise-all-nested-requests","title":"Promises and nested requests","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19":{"id":"library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19","title":"Q3 2022] Create Distribution & Referral in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27":{"id":"library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27","title":"Q3 2022] Update HH Name in CommCare","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28":{"id":"library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28","title":"Q3 2022] Upsert Household & Household Visit in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21":{"id":"library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21","title":"Q3 2022] Upsert Person","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28":{"id":"library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28","title":"Q3 2022] Upsert Person Visit","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22":{"id":"library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22","title":"Q4 2022] Upsert Supervision - Accompaniment","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19":{"id":"library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19","title":"Q4 2022] Upsert Supervision - Feedback","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24":{"id":"library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24","title":"Q4 2022] Upsert Supervision - Household Spot Check","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02":{"id":"library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02","title":"Register Participant - V2 Skillz","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Register-Patient-2021-03-02":{"id":"library/jobs/auto/Register-Patient-2021-03-02","title":"Register Patient","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Registration-forms-new-case-2023-06-22":{"id":"library/jobs/auto/Registration-forms-new-case-2023-06-22","title":"Registration forms(new case)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Request-Vitas-Sync-2021-05-11":{"id":"library/jobs/auto/Request-Vitas-Sync-2021-05-11","title":"Request Vitas Sync","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27":{"id":"library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27","title":"Risk and Vulnerability Assessment","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/send-mail-in-mailgun":{"id":"library/jobs/auto/send-mail-in-mailgun","title":"send email","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/send-sms-from-salesforce-workflow":{"id":"library/jobs/auto/send-sms-from-salesforce-workflow","title":"Send sms from Salesforce workflow action","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/synchronous-http-request":{"id":"library/jobs/auto/synchronous-http-request","title":"Chaining synchronous http requests","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/timeout":{"id":"library/jobs/auto/timeout","title":"Timeout to create a delay","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30":{"id":"library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30","title":"Upsert Aggregate Service Referrals","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30":{"id":"library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30","title":"Upsert ART Adherence Self-Reporting Tool","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24":{"id":"library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24","title":"Upsert Attendance Skillz Plus Club","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28":{"id":"library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28","title":"Upsert Coach Support Visit (CSV)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14":{"id":"library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14","title":"Upsert Confirm Services Received","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03":{"id":"library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03","title":"Upsert Home Visit Log Form","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Intervention-Notes-2021-04-28":{"id":"library/jobs/auto/Upsert-Intervention-Notes-2021-04-28","title":"Upsert Intervention Notes","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/upsert-many-items-in-array-with-value-outside-array":{"id":"library/jobs/auto/upsert-many-items-in-array-with-value-outside-array","title":"Merge data into child array then upsert","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Post-Challenges-2021-04-30":{"id":"library/jobs/auto/Upsert-Post-Challenges-2021-04-30","title":"Upsert Post Challenges","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Pre-Challenges-2021-04-30":{"id":"library/jobs/auto/Upsert-Pre-Challenges-2021-04-30","title":"Upsert Pre Challenges","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Event-2021-04-30":{"id":"library/jobs/auto/Upsert-Register-Event-2021-04-30","title":"Upsert Register Event","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Participant-2021-04-28":{"id":"library/jobs/auto/Upsert-Register-Participant-2021-04-28","title":"Upsert Register Participant","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30":{"id":"library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30","title":"Upsert Register Participant (Skillz)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30":{"id":"library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30","title":"Upsert Register Skills plus Club","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25":{"id":"library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25","title":"Upsert Risk & Vulnerability Assessment | Service Referral","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Service-Referral-2-2021-06-14":{"id":"library/jobs/auto/Upsert-Service-Referral-2-2021-06-14","title":"Upsert Service Referral 2","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Service-Referral-2021-04-30":{"id":"library/jobs/auto/Upsert-Service-Referral-2021-04-30","title":"Upsert Service Referral","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30":{"id":"library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30","title":"Upsert Service Referral Followup","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Team-Group-Name-2021-04-28":{"id":"library/jobs/auto/Upsert-Team-Group-Name-2021-04-28","title":"Upsert Team/Group Name","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-to-mBrana-2021-05-11":{"id":"library/jobs/auto/Upsert-to-mBrana-2021-05-11","title":"Upsert to mBrana","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16":{"id":"library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16","title":"Upsert User in Salesforce","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19":{"id":"library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19","title":"WF1-1. Bulk get HH cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19":{"id":"library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19","title":"WF1-2. Bulk upsert HHs and HH Visits","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19":{"id":"library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19","title":"WF2-1. Bulk get Person cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19":{"id":"library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19","title":"WF2-2. Bulk upsert Persons","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19":{"id":"library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19","title":"WF3-1. Bulk get Person Visit cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19":{"id":"library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19","title":"WF3-2. Bulk upsert Person Visits","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31":{"id":"library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31","title":"WF3-2a/ Repeat Failed Person Visits","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19":{"id":"library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19","title":"WF4-1. Bulk get Referral Cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19":{"id":"library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19","title":"WF4-2. Bulk upsert Services","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/triggers/xmlns":{"id":"library/triggers/xmlns","title":"Match a message with a fragment inside another object called `form`","description":""},"magpi":{"id":"magpi","title":"Magpi","description":"Magpi is not able to push data to external URLs. In order to fetch data from","sidebar":"adaptors"},"moodle":{"id":"moodle","title":"Moodle","description":"Overview","sidebar":"adaptors"},"odk":{"id":"odk","title":"Open Data Kit (ODK)","description":"Open Data Kit (ODK) Collect","sidebar":"adaptors"},"ona":{"id":"ona","title":"Ona.io","description":"Webhooks to push form data to OpenFn","sidebar":"adaptors"},"packages/asana-changelog":{"id":"packages/asana-changelog","title":"asana changelog","description":"3.0.1","sidebar":"adaptors"},"packages/asana-configuration-schema":{"id":"packages/asana-configuration-schema","title":"Config for asana","description":"Jobs that use the asana adaptor may require authentication. A","sidebar":"adaptors"},"packages/asana-docs":{"id":"packages/asana-docs","title":"asana@3.0.1","description":"Functions","sidebar":"adaptors"},"packages/asana-readme":{"id":"packages/asana-readme","title":"asana developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/asana","sidebar":"adaptors"},"packages/beyonic-changelog":{"id":"packages/beyonic-changelog","title":"beyonic changelog","description":"0.2.1","sidebar":"adaptors"},"packages/beyonic-configuration-schema":{"id":"packages/beyonic-configuration-schema","title":"Config for beyonic","description":"Jobs that use the beyonic adaptor may require authentication. A","sidebar":"adaptors"},"packages/beyonic-docs":{"id":"packages/beyonic-docs","title":"beyonic@0.2.1","description":"Functions","sidebar":"adaptors"},"packages/beyonic-readme":{"id":"packages/beyonic-readme","title":"beyonic developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/beyonic","sidebar":"adaptors"},"packages/bigquery-changelog":{"id":"packages/bigquery-changelog","title":"bigquery changelog","description":"2.0.4","sidebar":"adaptors"},"packages/bigquery-configuration-schema":{"id":"packages/bigquery-configuration-schema","title":"Config for bigquery","description":"Jobs that use the bigquery adaptor may require authentication. A","sidebar":"adaptors"},"packages/bigquery-docs":{"id":"packages/bigquery-docs","title":"bigquery@2.0.4","description":"load","sidebar":"adaptors"},"packages/bigquery-readme":{"id":"packages/bigquery-readme","title":"bigquery developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/bigquery","sidebar":"adaptors"},"packages/commcare-changelog":{"id":"packages/commcare-changelog","title":"commcare changelog","description":"1.6.10","sidebar":"adaptors"},"packages/commcare-configuration-schema":{"id":"packages/commcare-configuration-schema","title":"Config for commcare","description":"Jobs that use the commcare adaptor may require authentication. A","sidebar":"adaptors"},"packages/commcare-docs":{"id":"packages/commcare-docs","title":"commcare@1.6.10","description":"Functions","sidebar":"adaptors"},"packages/commcare-readme":{"id":"packages/commcare-readme","title":"commcare developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/commcare","sidebar":"adaptors"},"packages/common-changelog":{"id":"packages/common-changelog","title":"common changelog","description":"v0.4.0","sidebar":"adaptors"},"packages/common-configuration-schema":{"id":"packages/common-configuration-schema","title":"Config for common","description":"No configuration schema has been defined for the common adaptor.","sidebar":"adaptors"},"packages/common-docs":{"id":"packages/common-docs","title":"common@1.11.1","description":"Functions","sidebar":"adaptors"},"packages/common-readme":{"id":"packages/common-readme","title":"common developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/common","sidebar":"adaptors"},"packages/dhis2-changelog":{"id":"packages/dhis2-changelog","title":"dhis2 changelog","description":"4.0.3","sidebar":"adaptors"},"packages/dhis2-configuration-schema":{"id":"packages/dhis2-configuration-schema","title":"Config for dhis2","description":"Jobs that use the dhis2 adaptor may require authentication. A","sidebar":"adaptors"},"packages/dhis2-docs":{"id":"packages/dhis2-docs","title":"dhis2@4.0.3","description":"Functions","sidebar":"adaptors"},"packages/dhis2-readme":{"id":"packages/dhis2-readme","title":"dhis2 developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/dhis2","sidebar":"adaptors"},"packages/dynamics-changelog":{"id":"packages/dynamics-changelog","title":"dynamics changelog","description":"0.4.8","sidebar":"adaptors"},"packages/dynamics-configuration-schema":{"id":"packages/dynamics-configuration-schema","title":"Config for dynamics","description":"Jobs that use the dynamics adaptor may require authentication. A","sidebar":"adaptors"},"packages/dynamics-docs":{"id":"packages/dynamics-docs","title":"dynamics@0.4.8","description":"","sidebar":"adaptors"},"packages/dynamics-readme":{"id":"packages/dynamics-readme","title":"dynamics developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/dynamics","sidebar":"adaptors"},"packages/facebook-changelog":{"id":"packages/facebook-changelog","title":"facebook changelog","description":"0.3.2","sidebar":"adaptors"},"packages/facebook-configuration-schema":{"id":"packages/facebook-configuration-schema","title":"Config for facebook","description":"Jobs that use the facebook adaptor may require authentication. A","sidebar":"adaptors"},"packages/facebook-docs":{"id":"packages/facebook-docs","title":"facebook@0.3.2","description":"postMessage","sidebar":"adaptors"},"packages/facebook-readme":{"id":"packages/facebook-readme","title":"facebook developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/facebook","sidebar":"adaptors"},"packages/fhir-changelog":{"id":"packages/fhir-changelog","title":"fhir changelog","description":"3.1.0","sidebar":"adaptors"},"packages/fhir-configuration-schema":{"id":"packages/fhir-configuration-schema","title":"Config for fhir","description":"Jobs that use the fhir adaptor may require authentication. A","sidebar":"adaptors"},"packages/fhir-docs":{"id":"packages/fhir-docs","title":"fhir@3.1.0","description":"Functions","sidebar":"adaptors"},"packages/fhir-readme":{"id":"packages/fhir-readme","title":"fhir developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/fhir","sidebar":"adaptors"},"packages/godata-changelog":{"id":"packages/godata-changelog","title":"godata changelog","description":"3.3.1","sidebar":"adaptors"},"packages/godata-configuration-schema":{"id":"packages/godata-configuration-schema","title":"Config for godata","description":"Jobs that use the godata adaptor may require authentication. A","sidebar":"adaptors"},"packages/godata-docs":{"id":"packages/godata-docs","title":"godata@3.3.1","description":"Functions","sidebar":"adaptors"},"packages/godata-readme":{"id":"packages/godata-readme","title":"godata developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/godata","sidebar":"adaptors"},"packages/googlehealthcare-changelog":{"id":"packages/googlehealthcare-changelog","title":"googlehealthcare changelog","description":"1.0.0","sidebar":"adaptors"},"packages/googlehealthcare-configuration-schema":{"id":"packages/googlehealthcare-configuration-schema","title":"Config for googlehealthcare","description":"Jobs that use the googlehealthcare adaptor may require authentication. A","sidebar":"adaptors"},"packages/googlehealthcare-docs":{"id":"packages/googlehealthcare-docs","title":"googlehealthcare@1.0.0","description":"createFhirResource","sidebar":"adaptors"},"packages/googlehealthcare-readme":{"id":"packages/googlehealthcare-readme","title":"googlehealthcare developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/googlehealthcare","sidebar":"adaptors"},"packages/googlesheets-changelog":{"id":"packages/googlesheets-changelog","title":"googlesheets changelog","description":"2.2.2","sidebar":"adaptors"},"packages/googlesheets-configuration-schema":{"id":"packages/googlesheets-configuration-schema","title":"Config for googlesheets","description":"Jobs that use the googlesheets adaptor may require authentication. A","sidebar":"adaptors"},"packages/googlesheets-docs":{"id":"packages/googlesheets-docs","title":"googlesheets@2.2.2","description":"appendValues","sidebar":"adaptors"},"packages/googlesheets-readme":{"id":"packages/googlesheets-readme","title":"googlesheets developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/googlesheets","sidebar":"adaptors"},"packages/hive-changelog":{"id":"packages/hive-changelog","title":"hive changelog","description":"0.2.0","sidebar":"adaptors"},"packages/hive-configuration-schema":{"id":"packages/hive-configuration-schema","title":"Config for hive","description":"Jobs that use the hive adaptor may require authentication. A","sidebar":"adaptors"},"packages/hive-docs":{"id":"packages/hive-docs","title":"hive@0.2.0","description":"query","sidebar":"adaptors"},"packages/hive-readme":{"id":"packages/hive-readme","title":"hive developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/hive","sidebar":"adaptors"},"packages/http-changelog":{"id":"packages/http-changelog","title":"http changelog","description":"5.0.4","sidebar":"adaptors"},"packages/http-configuration-schema":{"id":"packages/http-configuration-schema","title":"Config for http","description":"Jobs that use the http adaptor may require authentication. A","sidebar":"adaptors"},"packages/http-docs":{"id":"packages/http-docs","title":"http@5.0.4","description":"Functions","sidebar":"adaptors"},"packages/http-readme":{"id":"packages/http-readme","title":"http developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/http","sidebar":"adaptors"},"packages/khanacademy-changelog":{"id":"packages/khanacademy-changelog","title":"khanacademy changelog","description":"0.4.1","sidebar":"adaptors"},"packages/khanacademy-configuration-schema":{"id":"packages/khanacademy-configuration-schema","title":"Config for khanacademy","description":"Jobs that use the khanacademy adaptor may require authentication. A","sidebar":"adaptors"},"packages/khanacademy-docs":{"id":"packages/khanacademy-docs","title":"khanacademy@0.4.1","description":"fetch","sidebar":"adaptors"},"packages/khanacademy-readme":{"id":"packages/khanacademy-readme","title":"khanacademy developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/khanacademy","sidebar":"adaptors"},"packages/kobotoolbox-changelog":{"id":"packages/kobotoolbox-changelog","title":"kobotoolbox changelog","description":"2.1.0","sidebar":"adaptors"},"packages/kobotoolbox-configuration-schema":{"id":"packages/kobotoolbox-configuration-schema","title":"Config for kobotoolbox","description":"Jobs that use the kobotoolbox adaptor may require authentication. A","sidebar":"adaptors"},"packages/kobotoolbox-docs":{"id":"packages/kobotoolbox-docs","title":"kobotoolbox@2.1.0","description":"Functions","sidebar":"adaptors"},"packages/kobotoolbox-readme":{"id":"packages/kobotoolbox-readme","title":"kobotoolbox developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/kobotoolbox","sidebar":"adaptors"},"packages/magpi-changelog":{"id":"packages/magpi-changelog","title":"magpi changelog","description":"1.1.1","sidebar":"adaptors"},"packages/magpi-configuration-schema":{"id":"packages/magpi-configuration-schema","title":"Config for magpi","description":"Jobs that use the magpi adaptor may require authentication. A","sidebar":"adaptors"},"packages/magpi-docs":{"id":"packages/magpi-docs","title":"magpi@1.1.1","description":"Functions","sidebar":"adaptors"},"packages/magpi-readme":{"id":"packages/magpi-readme","title":"magpi developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/magpi","sidebar":"adaptors"},"packages/mailchimp-changelog":{"id":"packages/mailchimp-changelog","title":"mailchimp changelog","description":"0.7.1","sidebar":"adaptors"},"packages/mailchimp-configuration-schema":{"id":"packages/mailchimp-configuration-schema","title":"Config for mailchimp","description":"Jobs that use the mailchimp adaptor may require authentication. A","sidebar":"adaptors"},"packages/mailchimp-docs":{"id":"packages/mailchimp-docs","title":"mailchimp@0.7.1","description":"Functions","sidebar":"adaptors"},"packages/mailchimp-readme":{"id":"packages/mailchimp-readme","title":"mailchimp developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mailchimp","sidebar":"adaptors"},"packages/mailgun-changelog":{"id":"packages/mailgun-changelog","title":"mailgun changelog","description":"0.4.3","sidebar":"adaptors"},"packages/mailgun-configuration-schema":{"id":"packages/mailgun-configuration-schema","title":"Config for mailgun","description":"Jobs that use the mailgun adaptor may require authentication. A","sidebar":"adaptors"},"packages/mailgun-docs":{"id":"packages/mailgun-docs","title":"mailgun@0.4.3","description":"send","sidebar":"adaptors"},"packages/mailgun-readme":{"id":"packages/mailgun-readme","title":"mailgun developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mailgun","sidebar":"adaptors"},"packages/maximo-changelog":{"id":"packages/maximo-changelog","title":"maximo changelog","description":"0.4.1","sidebar":"adaptors"},"packages/maximo-configuration-schema":{"id":"packages/maximo-configuration-schema","title":"Config for maximo","description":"Jobs that use the maximo adaptor may require authentication. A","sidebar":"adaptors"},"packages/maximo-docs":{"id":"packages/maximo-docs","title":"maximo@0.4.1","description":"Functions","sidebar":"adaptors"},"packages/maximo-readme":{"id":"packages/maximo-readme","title":"maximo developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/maximo","sidebar":"adaptors"},"packages/medicmobile-changelog":{"id":"packages/medicmobile-changelog","title":"medicmobile changelog","description":"0.4.2","sidebar":"adaptors"},"packages/medicmobile-configuration-schema":{"id":"packages/medicmobile-configuration-schema","title":"Config for medicmobile","description":"Jobs that use the medicmobile adaptor may require authentication. A","sidebar":"adaptors"},"packages/medicmobile-docs":{"id":"packages/medicmobile-docs","title":"medicmobile@0.4.2","description":"Functions","sidebar":"adaptors"},"packages/medicmobile-readme":{"id":"packages/medicmobile-readme","title":"medicmobile developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/medicmobile","sidebar":"adaptors"},"packages/mogli-changelog":{"id":"packages/mogli-changelog","title":"mogli changelog","description":"v0.1.6","sidebar":"adaptors"},"packages/mogli-configuration-schema":{"id":"packages/mogli-configuration-schema","title":"Config for mogli","description":"Jobs that use the mogli adaptor may require authentication. A","sidebar":"adaptors"},"packages/mogli-docs":{"id":"packages/mogli-docs","title":"mogli@0.4.1","description":"Functions","sidebar":"adaptors"},"packages/mogli-readme":{"id":"packages/mogli-readme","title":"mogli developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mogli","sidebar":"adaptors"},"packages/mongodb-changelog":{"id":"packages/mongodb-changelog","title":"mongodb changelog","description":"2.0.0","sidebar":"adaptors"},"packages/mongodb-configuration-schema":{"id":"packages/mongodb-configuration-schema","title":"Config for mongodb","description":"Jobs that use the mongodb adaptor may require authentication. A","sidebar":"adaptors"},"packages/mongodb-docs":{"id":"packages/mongodb-docs","title":"mongodb@2.0.0","description":"Functions","sidebar":"adaptors"},"packages/mongodb-readme":{"id":"packages/mongodb-readme","title":"mongodb developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mongodb","sidebar":"adaptors"},"packages/msgraph-changelog":{"id":"packages/msgraph-changelog","title":"msgraph changelog","description":"0.4.0","sidebar":"adaptors"},"packages/msgraph-configuration-schema":{"id":"packages/msgraph-configuration-schema","title":"Config for msgraph","description":"Jobs that use the msgraph adaptor may require authentication. A","sidebar":"adaptors"},"packages/msgraph-docs":{"id":"packages/msgraph-docs","title":"msgraph@0.4.0","description":"Functions","sidebar":"adaptors"},"packages/msgraph-readme":{"id":"packages/msgraph-readme","title":"msgraph developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/msgraph","sidebar":"adaptors"},"packages/mssql-changelog":{"id":"packages/mssql-changelog","title":"mssql changelog","description":"4.1.8","sidebar":"adaptors"},"packages/mssql-configuration-schema":{"id":"packages/mssql-configuration-schema","title":"Config for mssql","description":"Jobs that use the mssql adaptor may require authentication. A","sidebar":"adaptors"},"packages/mssql-docs":{"id":"packages/mssql-docs","title":"mssql@4.1.8","description":"Functions","sidebar":"adaptors"},"packages/mssql-readme":{"id":"packages/mssql-readme","title":"mssql developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mssql","sidebar":"adaptors"},"packages/mysql-changelog":{"id":"packages/mysql-changelog","title":"mysql changelog","description":"1.4.8","sidebar":"adaptors"},"packages/mysql-configuration-schema":{"id":"packages/mysql-configuration-schema","title":"Config for mysql","description":"Jobs that use the mysql adaptor may require authentication. A","sidebar":"adaptors"},"packages/mysql-docs":{"id":"packages/mysql-docs","title":"mysql@1.4.8","description":"Functions","sidebar":"adaptors"},"packages/mysql-readme":{"id":"packages/mysql-readme","title":"mysql developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mysql","sidebar":"adaptors"},"packages/nexmo-changelog":{"id":"packages/nexmo-changelog","title":"nexmo changelog","description":"0.4.3","sidebar":"adaptors"},"packages/nexmo-configuration-schema":{"id":"packages/nexmo-configuration-schema","title":"Config for nexmo","description":"Jobs that use the nexmo adaptor may require authentication. A","sidebar":"adaptors"},"packages/nexmo-docs":{"id":"packages/nexmo-docs","title":"nexmo@0.4.3","description":"sendSMS","sidebar":"adaptors"},"packages/nexmo-readme":{"id":"packages/nexmo-readme","title":"nexmo developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/nexmo","sidebar":"adaptors"},"packages/ocl-changelog":{"id":"packages/ocl-changelog","title":"ocl changelog","description":"1.1.7","sidebar":"adaptors"},"packages/ocl-configuration-schema":{"id":"packages/ocl-configuration-schema","title":"Config for ocl","description":"Jobs that use the ocl adaptor may require authentication. A","sidebar":"adaptors"},"packages/ocl-docs":{"id":"packages/ocl-docs","title":"ocl@1.1.7","description":"Functions","sidebar":"adaptors"},"packages/ocl-readme":{"id":"packages/ocl-readme","title":"ocl developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/ocl","sidebar":"adaptors"},"packages/openfn-changelog":{"id":"packages/openfn-changelog","title":"openfn changelog","description":"1.3.8","sidebar":"adaptors"},"packages/openfn-configuration-schema":{"id":"packages/openfn-configuration-schema","title":"Config for openfn","description":"Jobs that use the openfn adaptor may require authentication. A","sidebar":"adaptors"},"packages/openfn-docs":{"id":"packages/openfn-docs","title":"openfn@1.3.8","description":"request","sidebar":"adaptors"},"packages/openfn-readme":{"id":"packages/openfn-readme","title":"openfn developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/openfn","sidebar":"adaptors"},"packages/openhim-changelog":{"id":"packages/openhim-changelog","title":"openhim changelog","description":"0.2.1","sidebar":"adaptors"},"packages/openhim-configuration-schema":{"id":"packages/openhim-configuration-schema","title":"Config for openhim","description":"Jobs that use the openhim adaptor may require authentication. A","sidebar":"adaptors"},"packages/openhim-docs":{"id":"packages/openhim-docs","title":"openhim@0.2.1","description":"encounter","sidebar":"adaptors"},"packages/openhim-readme":{"id":"packages/openhim-readme","title":"openhim developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/openhim","sidebar":"adaptors"},"packages/openmrs-changelog":{"id":"packages/openmrs-changelog","title":"openmrs changelog","description":"2.0.8","sidebar":"adaptors"},"packages/openmrs-configuration-schema":{"id":"packages/openmrs-configuration-schema","title":"Config for openmrs","description":"Jobs that use the openmrs adaptor may require authentication. A","sidebar":"adaptors"},"packages/openmrs-docs":{"id":"packages/openmrs-docs","title":"openmrs@2.0.8","description":"Functions","sidebar":"adaptors"},"packages/openmrs-readme":{"id":"packages/openmrs-readme","title":"openmrs developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/openmrs","sidebar":"adaptors"},"packages/postgresql-changelog":{"id":"packages/postgresql-changelog","title":"postgresql changelog","description":"4.1.8","sidebar":"adaptors"},"packages/postgresql-configuration-schema":{"id":"packages/postgresql-configuration-schema","title":"Config for postgresql","description":"Jobs that use the postgresql adaptor may require authentication. A","sidebar":"adaptors"},"packages/postgresql-docs":{"id":"packages/postgresql-docs","title":"postgresql@4.1.8","description":"Functions","sidebar":"adaptors"},"packages/postgresql-readme":{"id":"packages/postgresql-readme","title":"postgresql developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/postgresql","sidebar":"adaptors"},"packages/primero-changelog":{"id":"packages/primero-changelog","title":"primero changelog","description":"2.11.8","sidebar":"adaptors"},"packages/primero-configuration-schema":{"id":"packages/primero-configuration-schema","title":"Config for primero","description":"Jobs that use the primero adaptor may require authentication. A","sidebar":"adaptors"},"packages/primero-docs":{"id":"packages/primero-docs","title":"primero@2.11.8","description":"Functions","sidebar":"adaptors"},"packages/primero-readme":{"id":"packages/primero-readme","title":"primero developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/primero","sidebar":"adaptors"},"packages/progres-changelog":{"id":"packages/progres-changelog","title":"progres changelog","description":"1.3.8","sidebar":"adaptors"},"packages/progres-configuration-schema":{"id":"packages/progres-configuration-schema","title":"Config for progres","description":"Jobs that use the progres adaptor may require authentication. A","sidebar":"adaptors"},"packages/progres-docs":{"id":"packages/progres-docs","title":"progres@1.3.8","description":"postData","sidebar":"adaptors"},"packages/progres-readme":{"id":"packages/progres-readme","title":"progres developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/progres","sidebar":"adaptors"},"packages/rapidpro-changelog":{"id":"packages/rapidpro-changelog","title":"rapidpro changelog","description":"1.0.8","sidebar":"adaptors"},"packages/rapidpro-configuration-schema":{"id":"packages/rapidpro-configuration-schema","title":"Config for rapidpro","description":"Jobs that use the rapidpro adaptor may require authentication. A","sidebar":"adaptors"},"packages/rapidpro-docs":{"id":"packages/rapidpro-docs","title":"rapidpro@1.0.8","description":"Functions","sidebar":"adaptors"},"packages/rapidpro-readme":{"id":"packages/rapidpro-readme","title":"rapidpro developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/rapidpro","sidebar":"adaptors"},"packages/resourcemap-changelog":{"id":"packages/resourcemap-changelog","title":"resourcemap changelog","description":"0.3.1","sidebar":"adaptors"},"packages/resourcemap-configuration-schema":{"id":"packages/resourcemap-configuration-schema","title":"Config for resourcemap","description":"Jobs that use the resourcemap adaptor may require authentication. A","sidebar":"adaptors"},"packages/resourcemap-docs":{"id":"packages/resourcemap-docs","title":"resourcemap@0.3.1","description":"submitSite","sidebar":"adaptors"},"packages/resourcemap-readme":{"id":"packages/resourcemap-readme","title":"resourcemap developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/resourcemap","sidebar":"adaptors"},"packages/salesforce-changelog":{"id":"packages/salesforce-changelog","title":"salesforce changelog","description":"4.2.2","sidebar":"adaptors"},"packages/salesforce-configuration-schema":{"id":"packages/salesforce-configuration-schema","title":"Config for salesforce","description":"Jobs that use the salesforce adaptor may require authentication. A","sidebar":"adaptors"},"packages/salesforce-docs":{"id":"packages/salesforce-docs","title":"salesforce@4.2.2","description":"Functions","sidebar":"adaptors"},"packages/salesforce-readme":{"id":"packages/salesforce-readme","title":"salesforce developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/salesforce","sidebar":"adaptors"},"packages/sftp-changelog":{"id":"packages/sftp-changelog","title":"sftp changelog","description":"1.0.1","sidebar":"adaptors"},"packages/sftp-configuration-schema":{"id":"packages/sftp-configuration-schema","title":"Config for sftp","description":"Jobs that use the sftp adaptor may require authentication. A","sidebar":"adaptors"},"packages/sftp-docs":{"id":"packages/sftp-docs","title":"sftp@1.0.1","description":"Functions","sidebar":"adaptors"},"packages/sftp-readme":{"id":"packages/sftp-readme","title":"sftp developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/sftp","sidebar":"adaptors"},"packages/smpp-changelog":{"id":"packages/smpp-changelog","title":"smpp changelog","description":"1.3.1","sidebar":"adaptors"},"packages/smpp-configuration-schema":{"id":"packages/smpp-configuration-schema","title":"Config for smpp","description":"Jobs that use the smpp adaptor may require authentication. A","sidebar":"adaptors"},"packages/smpp-docs":{"id":"packages/smpp-docs","title":"smpp@1.3.1","description":"","sidebar":"adaptors"},"packages/smpp-readme":{"id":"packages/smpp-readme","title":"smpp developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/smpp","sidebar":"adaptors"},"packages/surveycto-changelog":{"id":"packages/surveycto-changelog","title":"surveycto changelog","description":"1.2.1","sidebar":"adaptors"},"packages/surveycto-configuration-schema":{"id":"packages/surveycto-configuration-schema","title":"Config for surveycto","description":"Jobs that use the surveycto adaptor may require authentication. A","sidebar":"adaptors"},"packages/surveycto-docs":{"id":"packages/surveycto-docs","title":"surveycto@1.2.1","description":"fetchSubmissions","sidebar":"adaptors"},"packages/surveycto-readme":{"id":"packages/surveycto-readme","title":"surveycto developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/surveycto","sidebar":"adaptors"},"packages/telerivet-changelog":{"id":"packages/telerivet-changelog","title":"telerivet changelog","description":"0.2.1","sidebar":"adaptors"},"packages/telerivet-configuration-schema":{"id":"packages/telerivet-configuration-schema","title":"Config for telerivet","description":"Jobs that use the telerivet adaptor may require authentication. A","sidebar":"adaptors"},"packages/telerivet-docs":{"id":"packages/telerivet-docs","title":"telerivet@0.2.1","description":"send","sidebar":"adaptors"},"packages/telerivet-readme":{"id":"packages/telerivet-readme","title":"telerivet developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/telerivet","sidebar":"adaptors"},"packages/template-changelog":{"id":"packages/template-changelog","title":"template changelog","description":"3.0.1","sidebar":"adaptors"},"packages/template-configuration-schema":{"id":"packages/template-configuration-schema","title":"Config for template","description":"Jobs that use the template adaptor may require authentication. A","sidebar":"adaptors"},"packages/template-docs":{"id":"packages/template-docs","title":"template@3.0.1","description":"create","sidebar":"adaptors"},"packages/template-readme":{"id":"packages/template-readme","title":"template developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/template","sidebar":"adaptors"},"packages/twilio-changelog":{"id":"packages/twilio-changelog","title":"twilio changelog","description":"0.4.1","sidebar":"adaptors"},"packages/twilio-configuration-schema":{"id":"packages/twilio-configuration-schema","title":"Config for twilio","description":"Jobs that use the twilio adaptor may require authentication. A","sidebar":"adaptors"},"packages/twilio-docs":{"id":"packages/twilio-docs","title":"twilio@0.4.1","description":"sendSMS","sidebar":"adaptors"},"packages/twilio-readme":{"id":"packages/twilio-readme","title":"twilio developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/twilio","sidebar":"adaptors"},"packages/vtiger-changelog":{"id":"packages/vtiger-changelog","title":"vtiger changelog","description":"1.2.1","sidebar":"adaptors"},"packages/vtiger-configuration-schema":{"id":"packages/vtiger-configuration-schema","title":"Config for vtiger","description":"Jobs that use the vtiger adaptor may require authentication. A","sidebar":"adaptors"},"packages/vtiger-docs":{"id":"packages/vtiger-docs","title":"vtiger@1.2.1","description":"","sidebar":"adaptors"},"packages/vtiger-readme":{"id":"packages/vtiger-readme","title":"vtiger developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/vtiger","sidebar":"adaptors"},"packages/zoho-changelog":{"id":"packages/zoho-changelog","title":"zoho changelog","description":"0.3.1","sidebar":"adaptors"},"packages/zoho-configuration-schema":{"id":"packages/zoho-configuration-schema","title":"Config for zoho","description":"Jobs that use the zoho adaptor may require authentication. A","sidebar":"adaptors"},"packages/zoho-docs":{"id":"packages/zoho-docs","title":"zoho@0.3.1","description":"addRow","sidebar":"adaptors"},"packages/zoho-readme":{"id":"packages/zoho-readme","title":"zoho developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/zoho","sidebar":"adaptors"},"postgresql":{"id":"postgresql","title":"PostgreSQL","description":"Overview","sidebar":"adaptors"},"powerbi":{"id":"powerbi","title":"Power BI","description":"(Work in progress)","sidebar":"adaptors"},"primero":{"id":"primero","title":"Primero","description":"Overview","sidebar":"adaptors"},"salesforce":{"id":"salesforce","title":"Salesforce","description":"App Overview","sidebar":"adaptors"},"surveycto":{"id":"surveycto","title":"SurveyCTO","description":"Real-time (with webhooks)","sidebar":"adaptors"},"tableau":{"id":"tableau","title":"Tableau","description":"(Work in progress)","sidebar":"adaptors"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[85960],{73451:a=>{a.exports=JSON.parse('{"pluginId":"adaptors","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"adaptors":[{"type":"link","label":"Introduction","href":"/adaptors/","docId":"adaptors-intro"},{"type":"link","label":"Library Examples","href":"/adaptors/library","docId":"library-intro"},{"type":"category","label":"asana","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/asana-docs","docId":"packages/asana-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/asana-configuration-schema","docId":"packages/asana-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/asana-changelog","docId":"packages/asana-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/asana-readme","docId":"packages/asana-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"beyonic","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/beyonic-docs","docId":"packages/beyonic-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/beyonic-configuration-schema","docId":"packages/beyonic-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Pay CHW","href":"/adaptors/library/jobs/auto/Pay-CHW-2021-04-23","docId":"library/jobs/auto/Pay-CHW-2021-04-23"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/beyonic-changelog","docId":"packages/beyonic-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/beyonic-readme","docId":"packages/beyonic-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"bigquery","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/bigquery-docs","docId":"packages/bigquery-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/bigquery-configuration-schema","docId":"packages/bigquery-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/bigquery-changelog","docId":"packages/bigquery-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/bigquery-readme","docId":"packages/bigquery-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"cht","href":"/adaptors/cht","docId":"cht"},{"type":"link","label":"ckan","href":"/adaptors/ckan","docId":"ckan"},{"type":"category","label":"commcare","items":[{"type":"link","label":"Overview","href":"/adaptors/commcare","docId":"commcare"},{"type":"link","label":"Functions","href":"/adaptors/packages/commcare-docs","docId":"packages/commcare-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/commcare-configuration-schema","docId":"packages/commcare-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Registration forms(new case)","href":"/adaptors/library/jobs/auto/Registration-forms-new-case-2023-06-22","docId":"library/jobs/auto/Registration-forms-new-case-2023-06-22"},{"type":"link","label":"\u2728 Q3 2022] Update HH Name in CommCare","href":"/adaptors/library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27","docId":"library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27"},{"type":"link","label":"nawiri","href":"/adaptors/library/jobs/auto/nawiri-2023-05-03","docId":"library/jobs/auto/nawiri-2023-05-03"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/commcare-changelog","docId":"packages/commcare-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/commcare-readme","docId":"packages/commcare-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"common","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/common-docs","docId":"packages/common-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/common-configuration-schema","docId":"packages/common-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/common-changelog","docId":"packages/common-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/common-readme","docId":"packages/common-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"dhis2","items":[{"type":"link","label":"Overview","href":"/adaptors/dhis2","docId":"dhis2"},{"type":"link","label":"Functions","href":"/adaptors/packages/dhis2-docs","docId":"packages/dhis2-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/dhis2-configuration-schema","docId":"packages/dhis2-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Add data values","href":"/adaptors/library/jobs/auto/DHIS2-DataValues-API","docId":"library/jobs/auto/DHIS2-DataValues-API"},{"type":"link","label":"\ud83d\udcdc Add events","href":"/adaptors/library/jobs/auto/DHIS2-Events-API","docId":"library/jobs/auto/DHIS2-Events-API"},{"type":"link","label":"\u2728 Load to DHIS2","href":"/adaptors/library/jobs/auto/Load-to-DHIS2-2023-07-17","docId":"library/jobs/auto/Load-to-DHIS2-2023-07-17"},{"type":"link","label":"Create TEI (dhis2)","href":"/adaptors/library/jobs/auto/Create-TEI-dhis2-2021-03-22","docId":"library/jobs/auto/Create-TEI-dhis2-2021-03-22"},{"type":"link","label":"CHW case to DHIS2","href":"/adaptors/library/jobs/auto/CHW-case-to-DHIS2-2023-04-27","docId":"library/jobs/auto/CHW-case-to-DHIS2-2023-04-27"},{"type":"link","label":"0 - Get TEI data","href":"/adaptors/library/jobs/auto/0-Get-TEI-data-2021-06-02","docId":"library/jobs/auto/0-Get-TEI-data-2021-06-02"},{"type":"link","label":"DHIS2 Events","href":"/adaptors/library/jobs/auto/DHIS2-Events-2016-01-27","docId":"library/jobs/auto/DHIS2-Events-2016-01-27"},{"type":"link","label":"Add DHIS2 Data Value Sets","href":"/adaptors/library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28","docId":"library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/dhis2-changelog","docId":"packages/dhis2-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/dhis2-readme","docId":"packages/dhis2-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"dynamics","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/dynamics-docs","docId":"packages/dynamics-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/dynamics-configuration-schema","docId":"packages/dynamics-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/dynamics-changelog","docId":"packages/dynamics-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/dynamics-readme","docId":"packages/dynamics-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"facebook","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/facebook-docs","docId":"packages/facebook-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/facebook-configuration-schema","docId":"packages/facebook-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/facebook-changelog","docId":"packages/facebook-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/facebook-readme","docId":"packages/facebook-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"fhir","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/fhir-docs","docId":"packages/fhir-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/fhir-configuration-schema","docId":"packages/fhir-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/fhir-changelog","docId":"packages/fhir-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/fhir-readme","docId":"packages/fhir-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"godata","items":[{"type":"link","label":"Overview","href":"/adaptors/godata","docId":"godata"},{"type":"link","label":"Functions","href":"/adaptors/packages/godata-docs","docId":"packages/godata-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/godata-configuration-schema","docId":"packages/godata-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/godata-changelog","docId":"packages/godata-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/godata-readme","docId":"packages/godata-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"googlehealthcare","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/googlehealthcare-docs","docId":"packages/googlehealthcare-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/googlehealthcare-configuration-schema","docId":"packages/googlehealthcare-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/googlehealthcare-changelog","docId":"packages/googlehealthcare-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/googlehealthcare-readme","docId":"packages/googlehealthcare-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"googlesheets","items":[{"type":"link","label":"Overview","href":"/adaptors/googlesheets","docId":"googlesheets"},{"type":"link","label":"Functions","href":"/adaptors/packages/googlesheets-docs","docId":"packages/googlesheets-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/googlesheets-configuration-schema","docId":"packages/googlesheets-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Kobo to sheets","href":"/adaptors/library/jobs/auto/Kobo-to-sheets-2023-10-13","docId":"library/jobs/auto/Kobo-to-sheets-2023-10-13"},{"type":"link","label":"Register Patient","href":"/adaptors/library/jobs/auto/Register-Patient-2021-03-02","docId":"library/jobs/auto/Register-Patient-2021-03-02"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/googlesheets-changelog","docId":"packages/googlesheets-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/googlesheets-readme","docId":"packages/googlesheets-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"hive","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/hive-docs","docId":"packages/hive-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/hive-configuration-schema","docId":"packages/hive-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/hive-changelog","docId":"packages/hive-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/hive-readme","docId":"packages/hive-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"http","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/http-docs","docId":"packages/http-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/http-configuration-schema","docId":"packages/http-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Extract Kobo data from API to send to OpenFn Inbox","href":"/adaptors/library/jobs/auto/getKoboData","docId":"library/jobs/auto/getKoboData"},{"type":"link","label":"\ud83d\udcdc Using async and array.map","href":"/adaptors/library/jobs/auto/async-and-array-dot-map","docId":"library/jobs/auto/async-and-array-dot-map"},{"type":"link","label":"\ud83d\udcdc Chaining HTTP Requests","href":"/adaptors/library/jobs/auto/complex-http-request-chains","docId":"library/jobs/auto/complex-http-request-chains"},{"type":"link","label":"\ud83d\udcdc Promises and nested requests","href":"/adaptors/library/jobs/auto/promise-all-nested-requests","docId":"library/jobs/auto/promise-all-nested-requests"},{"type":"link","label":"\ud83d\udcdc Timeout to create a delay","href":"/adaptors/library/jobs/auto/timeout","docId":"library/jobs/auto/timeout"},{"type":"link","label":"\ud83d\udcdc Chaining synchronous http requests","href":"/adaptors/library/jobs/auto/synchronous-http-request","docId":"library/jobs/auto/synchronous-http-request"},{"type":"link","label":"\u2728 WF1-1. Bulk get HH cases","href":"/adaptors/library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19","docId":"library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19"},{"type":"link","label":"\u2728 WF2-1. Bulk get Person cases","href":"/adaptors/library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19","docId":"library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19"},{"type":"link","label":"\u2728 WF4-1. Bulk get Referral Cases","href":"/adaptors/library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19","docId":"library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19"},{"type":"link","label":"\u2728 WF3-1. Bulk get Person Visit cases","href":"/adaptors/library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19","docId":"library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19"},{"type":"link","label":"Fetch Claims","href":"/adaptors/library/jobs/auto/Fetch-Claims-2023-07-17","docId":"library/jobs/auto/Fetch-Claims-2023-07-17"},{"type":"link","label":"no return","href":"/adaptors/library/jobs/auto/no-return-2023-01-06","docId":"library/jobs/auto/no-return-2023-01-06"},{"type":"link","label":"Catch Error in HTTP Request","href":"/adaptors/library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26","docId":"library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26"},{"type":"link","label":"Get CommCare Forms (Bulk Extract)","href":"/adaptors/library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16","docId":"library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16"},{"type":"link","label":"aleksa cron","href":"/adaptors/library/jobs/auto/aleksa-cron-2022-04-29","docId":"library/jobs/auto/aleksa-cron-2022-04-29"},{"type":"link","label":"1. Get CommCare Forms (Bulk Extract)","href":"/adaptors/library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08","docId":"library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08"},{"type":"link","label":"Request Vitas Sync","href":"/adaptors/library/jobs/auto/Request-Vitas-Sync-2021-05-11","docId":"library/jobs/auto/Request-Vitas-Sync-2021-05-11"},{"type":"link","label":"Failed Payment Notification","href":"/adaptors/library/jobs/auto/Failed-Payment-Notification-2021-04-23","docId":"library/jobs/auto/Failed-Payment-Notification-2021-04-23"},{"type":"link","label":"02b/ Initiate Payments","href":"/adaptors/library/jobs/auto/02b-Initiate-Payments-2019-11-19","docId":"library/jobs/auto/02b-Initiate-Payments-2019-11-19"},{"type":"link","label":"01c/ Create person_position record","href":"/adaptors/library/jobs/auto/01c-Create-person_position-record-2019-12-13","docId":"library/jobs/auto/01c-Create-person_position-record-2019-12-13"},{"type":"link","label":"01a/ Create Registrants","href":"/adaptors/library/jobs/auto/01a-Create-Registrants-2019-11-19","docId":"library/jobs/auto/01a-Create-Registrants-2019-11-19"},{"type":"link","label":"05b/Update ODK eval form","href":"/adaptors/library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19","docId":"library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19"},{"type":"link","label":"05/ Submit employee evaluation","href":"/adaptors/library/jobs/auto/05-Submit-employee-evaluation-2019-12-03","docId":"library/jobs/auto/05-Submit-employee-evaluation-2019-12-03"},{"type":"link","label":"04b/ Update ODK form","href":"/adaptors/library/jobs/auto/04b-Update-ODK-form-2019-12-03","docId":"library/jobs/auto/04b-Update-ODK-form-2019-12-03"},{"type":"link","label":"commcare reports api","href":"/adaptors/library/jobs/auto/commcare-reports-api-2016-08-29","docId":"library/jobs/auto/commcare-reports-api-2016-08-29"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/http-changelog","docId":"packages/http-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/http-readme","docId":"packages/http-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"khanacademy","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/khanacademy-docs","docId":"packages/khanacademy-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/khanacademy-configuration-schema","docId":"packages/khanacademy-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/khanacademy-changelog","docId":"packages/khanacademy-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/khanacademy-readme","docId":"packages/khanacademy-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"kobotoolbox","items":[{"type":"link","label":"Overview","href":"/adaptors/kobotoolbox","docId":"kobotoolbox"},{"type":"link","label":"Functions","href":"/adaptors/packages/kobotoolbox-docs","docId":"packages/kobotoolbox-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/kobotoolbox-configuration-schema","docId":"packages/kobotoolbox-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"GET Data From KoboToolbox","href":"/adaptors/library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22","docId":"library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/kobotoolbox-changelog","docId":"packages/kobotoolbox-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/kobotoolbox-readme","docId":"packages/kobotoolbox-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"magpi","items":[{"type":"link","label":"Overview","href":"/adaptors/magpi","docId":"magpi"},{"type":"link","label":"Functions","href":"/adaptors/packages/magpi-docs","docId":"packages/magpi-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/magpi-configuration-schema","docId":"packages/magpi-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/magpi-changelog","docId":"packages/magpi-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/magpi-readme","docId":"packages/magpi-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mailchimp","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/mailchimp-docs","docId":"packages/mailchimp-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/mailchimp-configuration-schema","docId":"packages/mailchimp-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/mailchimp-changelog","docId":"packages/mailchimp-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/mailchimp-readme","docId":"packages/mailchimp-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mailgun","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/mailgun-docs","docId":"packages/mailgun-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/mailgun-configuration-schema","docId":"packages/mailgun-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc send email","href":"/adaptors/library/jobs/auto/send-mail-in-mailgun","docId":"library/jobs/auto/send-mail-in-mailgun"},{"type":"link","label":"01 send mailgun email","href":"/adaptors/library/jobs/auto/01-send-mailgun-email-2018-12-04","docId":"library/jobs/auto/01-send-mailgun-email-2018-12-04"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/mailgun-changelog","docId":"packages/mailgun-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/mailgun-readme","docId":"packages/mailgun-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"maximo","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/maximo-docs","docId":"packages/maximo-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/maximo-configuration-schema","docId":"packages/maximo-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/maximo-changelog","docId":"packages/maximo-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/maximo-readme","docId":"packages/maximo-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"medicmobile","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/medicmobile-docs","docId":"packages/medicmobile-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/medicmobile-configuration-schema","docId":"packages/medicmobile-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/medicmobile-changelog","docId":"packages/medicmobile-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/medicmobile-readme","docId":"packages/medicmobile-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mogli","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/mogli-docs","docId":"packages/mogli-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/mogli-configuration-schema","docId":"packages/mogli-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/mogli-changelog","docId":"packages/mogli-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/mogli-readme","docId":"packages/mogli-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mongodb","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/mongodb-docs","docId":"packages/mongodb-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/mongodb-configuration-schema","docId":"packages/mongodb-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/mongodb-changelog","docId":"packages/mongodb-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/mongodb-readme","docId":"packages/mongodb-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"moodle","href":"/adaptors/moodle","docId":"moodle"},{"type":"category","label":"msgraph","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/msgraph-docs","docId":"packages/msgraph-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/msgraph-configuration-schema","docId":"packages/msgraph-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/msgraph-changelog","docId":"packages/msgraph-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/msgraph-readme","docId":"packages/msgraph-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mssql","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/mssql-docs","docId":"packages/mssql-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/mssql-configuration-schema","docId":"packages/mssql-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Extract Vitas Data","href":"/adaptors/library/jobs/auto/Extract-Vitas-Data-2021-05-11","docId":"library/jobs/auto/Extract-Vitas-Data-2021-05-11"},{"type":"link","label":"CommCare to Azure Sql","href":"/adaptors/library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27","docId":"library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/mssql-changelog","docId":"packages/mssql-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/mssql-readme","docId":"packages/mssql-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mysql","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/mysql-docs","docId":"packages/mysql-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/mysql-configuration-schema","docId":"packages/mysql-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"01b/ Query new person record","href":"/adaptors/library/jobs/auto/01b-Query-new-person-record-2019-12-13","docId":"library/jobs/auto/01b-Query-new-person-record-2019-12-13"},{"type":"link","label":"03/ Update Payment Status","href":"/adaptors/library/jobs/auto/03-Update-Payment-Status-2019-11-19","docId":"library/jobs/auto/03-Update-Payment-Status-2019-11-19"},{"type":"link","label":"05a/Query for new employees","href":"/adaptors/library/jobs/auto/05a-Query-for-new-employees-2019-12-19","docId":"library/jobs/auto/05a-Query-for-new-employees-2019-12-19"},{"type":"link","label":"04a/Query for job changes","href":"/adaptors/library/jobs/auto/04a-Query-for-job-changes-2019-12-12","docId":"library/jobs/auto/04a-Query-for-job-changes-2019-12-12"},{"type":"link","label":"02a/ Query DB for people to pay","href":"/adaptors/library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11","docId":"library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/mysql-changelog","docId":"packages/mysql-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/mysql-readme","docId":"packages/mysql-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"nexmo","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/nexmo-docs","docId":"packages/nexmo-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/nexmo-configuration-schema","docId":"packages/nexmo-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/nexmo-changelog","docId":"packages/nexmo-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/nexmo-readme","docId":"packages/nexmo-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"ocl","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/ocl-docs","docId":"packages/ocl-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/ocl-configuration-schema","docId":"packages/ocl-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/ocl-changelog","docId":"packages/ocl-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/ocl-readme","docId":"packages/ocl-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"odk","href":"/adaptors/odk","docId":"odk"},{"type":"link","label":"ona","href":"/adaptors/ona","docId":"ona"},{"type":"category","label":"openfn","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/openfn-docs","docId":"packages/openfn-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/openfn-configuration-schema","docId":"packages/openfn-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/openfn-changelog","docId":"packages/openfn-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/openfn-readme","docId":"packages/openfn-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"openhim","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/openhim-docs","docId":"packages/openhim-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/openhim-configuration-schema","docId":"packages/openhim-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Create encounter in OpenHIM","href":"/adaptors/library/jobs/auto/CommCare-FHIR","docId":"library/jobs/auto/CommCare-FHIR"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/openhim-changelog","docId":"packages/openhim-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/openhim-readme","docId":"packages/openhim-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"openmrs","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/openmrs-docs","docId":"packages/openmrs-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/openmrs-configuration-schema","docId":"packages/openmrs-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Create Person in OpenMRS","href":"/adaptors/library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12","docId":"library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12"},{"type":"link","label":"Create Patient in OpenMRS","href":"/adaptors/library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24","docId":"library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/openmrs-changelog","docId":"packages/openmrs-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/openmrs-readme","docId":"packages/openmrs-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"postgresql","items":[{"type":"link","label":"Overview","href":"/adaptors/postgresql","docId":"postgresql"},{"type":"link","label":"Functions","href":"/adaptors/packages/postgresql-docs","docId":"packages/postgresql-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/postgresql-configuration-schema","docId":"packages/postgresql-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Using findValue with an array of data","href":"/adaptors/library/jobs/auto/async-findValue","docId":"library/jobs/auto/async-findValue"},{"type":"link","label":"1. Get data from SLUHIS","href":"/adaptors/library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08","docId":"library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08"},{"type":"link","label":"Load to DB","href":"/adaptors/library/jobs/auto/Load-to-DB-2022-05-16","docId":"library/jobs/auto/Load-to-DB-2022-05-16"},{"type":"link","label":"Load / Upsert Data into PostgreSQL","href":"/adaptors/library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22","docId":"library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22"},{"type":"link","label":"Upsert to mBrana","href":"/adaptors/library/jobs/auto/Upsert-to-mBrana-2021-05-11","docId":"library/jobs/auto/Upsert-to-mBrana-2021-05-11"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/postgresql-changelog","docId":"packages/postgresql-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/postgresql-readme","docId":"packages/postgresql-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"powerbi","href":"/adaptors/powerbi","docId":"powerbi"},{"type":"category","label":"primero","items":[{"type":"link","label":"Overview","href":"/adaptors/primero","docId":"primero"},{"type":"link","label":"Functions","href":"/adaptors/packages/primero-docs","docId":"packages/primero-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/primero-configuration-schema","docId":"packages/primero-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Get cases from Primero","href":"/adaptors/library/jobs/auto/Get-cases-from-Primero-2021-09-23","docId":"library/jobs/auto/Get-cases-from-Primero-2021-09-23"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/primero-changelog","docId":"packages/primero-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/primero-readme","docId":"packages/primero-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"progres","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/progres-docs","docId":"packages/progres-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/progres-configuration-schema","docId":"packages/progres-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/progres-changelog","docId":"packages/progres-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/progres-readme","docId":"packages/progres-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"rapidpro","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/rapidpro-docs","docId":"packages/rapidpro-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/rapidpro-configuration-schema","docId":"packages/rapidpro-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/rapidpro-changelog","docId":"packages/rapidpro-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/rapidpro-readme","docId":"packages/rapidpro-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"resourcemap","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/resourcemap-docs","docId":"packages/resourcemap-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/resourcemap-configuration-schema","docId":"packages/resourcemap-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/resourcemap-changelog","docId":"packages/resourcemap-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/resourcemap-readme","docId":"packages/resourcemap-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"salesforce","items":[{"type":"link","label":"Overview","href":"/adaptors/salesforce","docId":"salesforce"},{"type":"link","label":"Functions","href":"/adaptors/packages/salesforce-docs","docId":"packages/salesforce-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/salesforce-configuration-schema","docId":"packages/salesforce-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Pre-processing data","href":"/adaptors/library/jobs/auto/alter-state-before-operations","docId":"library/jobs/auto/alter-state-before-operations"},{"type":"link","label":"\ud83d\udcdc Using merge and each","href":"/adaptors/library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce","docId":"library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce"},{"type":"link","label":"\ud83d\udcdc Using promises","href":"/adaptors/library/jobs/auto/complex-state-control","docId":"library/jobs/auto/complex-state-control"},{"type":"link","label":"\ud83d\udcdc Concat fields with nulls","href":"/adaptors/library/jobs/auto/concatenate-many-fields-with-nulls","docId":"library/jobs/auto/concatenate-many-fields-with-nulls"},{"type":"link","label":"\ud83d\udcdc Create/update records if...","href":"/adaptors/library/jobs/auto/create-if-proposal","docId":"library/jobs/auto/create-if-proposal"},{"type":"link","label":"\ud83d\udcdc Create SMS linked to contact","href":"/adaptors/library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF","docId":"library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF"},{"type":"link","label":"\ud83d\udcdc Handling multiple ODK repeat groups","href":"/adaptors/library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks","docId":"library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks"},{"type":"link","label":"\ud83d\udcdc Merge data into child array then upsert","href":"/adaptors/library/jobs/auto/upsert-many-items-in-array-with-value-outside-array","docId":"library/jobs/auto/upsert-many-items-in-array-with-value-outside-array"},{"type":"link","label":"WF3-2a/ Repeat Failed Person Visits","href":"/adaptors/library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31","docId":"library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31"},{"type":"link","label":"\u2728 WF3-2. Bulk upsert Person Visits","href":"/adaptors/library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19","docId":"library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19"},{"type":"link","label":"\u2728 Upsert Pre Challenges","href":"/adaptors/library/jobs/auto/Upsert-Pre-Challenges-2021-04-30","docId":"library/jobs/auto/Upsert-Pre-Challenges-2021-04-30"},{"type":"link","label":"\u2728 Attendance Non Skillz","href":"/adaptors/library/jobs/auto/Attendance-Non-Skillz-2021-06-14","docId":"library/jobs/auto/Attendance-Non-Skillz-2021-06-14"},{"type":"link","label":"\u2728 Upsert Post Challenges","href":"/adaptors/library/jobs/auto/Upsert-Post-Challenges-2021-04-30","docId":"library/jobs/auto/Upsert-Post-Challenges-2021-04-30"},{"type":"link","label":"\u2728 Upsert Register Participant","href":"/adaptors/library/jobs/auto/Upsert-Register-Participant-2021-04-28","docId":"library/jobs/auto/Upsert-Register-Participant-2021-04-28"},{"type":"link","label":"Upsert Register Participant (Skillz)","href":"/adaptors/library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30","docId":"library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30"},{"type":"link","label":"\u2728 Coach Session Register","href":"/adaptors/library/jobs/auto/Coach-Session-Register-2021-05-03","docId":"library/jobs/auto/Coach-Session-Register-2021-05-03"},{"type":"link","label":"\u2728 WF2-2. Bulk upsert Persons","href":"/adaptors/library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19","docId":"library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19"},{"type":"link","label":"\u2728 Create Intervention","href":"/adaptors/library/jobs/auto/Create-Intervention-2021-04-08","docId":"library/jobs/auto/Create-Intervention-2021-04-08"},{"type":"link","label":"\u2728 WF1-2. Bulk upsert HHs and HH Visits","href":"/adaptors/library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19","docId":"library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19"},{"type":"link","label":"\u2728 WF4-2. Bulk upsert Services","href":"/adaptors/library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19","docId":"library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19"},{"type":"link","label":"Q3 2022] Upsert Person Visit","href":"/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28","docId":"library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28"},{"type":"link","label":"Q4 2022] Upsert Supervision - Accompaniment","href":"/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22","docId":"library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22"},{"type":"link","label":"Q4 2022] Upsert Supervision - Feedback","href":"/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19","docId":"library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19"},{"type":"link","label":"Q4 2022] Upsert Supervision - Household Spot Check","href":"/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24","docId":"library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24"},{"type":"link","label":"\u2728 Q3 2022] Create Distribution & Referral in SF","href":"/adaptors/library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19","docId":"library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19"},{"type":"link","label":"Create contact","href":"/adaptors/library/jobs/auto/Create-contact-2021-03-01","docId":"library/jobs/auto/Create-contact-2021-03-01"},{"type":"link","label":"Q3 2022] Upsert Person","href":"/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21","docId":"library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21"},{"type":"link","label":"Q3 2022] Upsert Household & Household Visit in SF","href":"/adaptors/library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28","docId":"library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28"},{"type":"link","label":"HIV Testing Event Statistics","href":"/adaptors/library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03","docId":"library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03"},{"type":"link","label":"Malaria Testing Event Statistics","href":"/adaptors/library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03","docId":"library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03"},{"type":"link","label":"HIV Testing Event Snapshot","href":"/adaptors/library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03","docId":"library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03"},{"type":"link","label":"Malaria Testing Event Snapshot","href":"/adaptors/library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03","docId":"library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03"},{"type":"link","label":"PHQ9","href":"/adaptors/library/jobs/auto/PHQ9-2021-05-03","docId":"library/jobs/auto/PHQ9-2021-05-03"},{"type":"link","label":"Risk and Vulnerability Assessment","href":"/adaptors/library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27","docId":"library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27"},{"type":"link","label":"Upsert Attendance Skillz Plus Club","href":"/adaptors/library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24","docId":"library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24"},{"type":"link","label":"Upsert ART Adherence Self-Reporting Tool","href":"/adaptors/library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30","docId":"library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30"},{"type":"link","label":"Upsert Aggregate Service Referrals","href":"/adaptors/library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30","docId":"library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30"},{"type":"link","label":"Upsert Coach Support Visit (CSV)","href":"/adaptors/library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28","docId":"library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28"},{"type":"link","label":"Upsert Confirm Services Received","href":"/adaptors/library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14","docId":"library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14"},{"type":"link","label":"Upsert Home Visit Log Form","href":"/adaptors/library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03","docId":"library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03"},{"type":"link","label":"\u2728 Upsert Intervention Notes","href":"/adaptors/library/jobs/auto/Upsert-Intervention-Notes-2021-04-28","docId":"library/jobs/auto/Upsert-Intervention-Notes-2021-04-28"},{"type":"link","label":"\u2728 Upsert Register Event","href":"/adaptors/library/jobs/auto/Upsert-Register-Event-2021-04-30","docId":"library/jobs/auto/Upsert-Register-Event-2021-04-30"},{"type":"link","label":"Upsert Register Skills plus Club","href":"/adaptors/library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30","docId":"library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30"},{"type":"link","label":"\u2728 Upsert Risk & Vulnerability Assessment | Service Referral","href":"/adaptors/library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25","docId":"library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25"},{"type":"link","label":"Upsert Service Referral","href":"/adaptors/library/jobs/auto/Upsert-Service-Referral-2021-04-30","docId":"library/jobs/auto/Upsert-Service-Referral-2021-04-30"},{"type":"link","label":"Upsert Service Referral 2","href":"/adaptors/library/jobs/auto/Upsert-Service-Referral-2-2021-06-14","docId":"library/jobs/auto/Upsert-Service-Referral-2-2021-06-14"},{"type":"link","label":"Upsert Service Referral Followup","href":"/adaptors/library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30","docId":"library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30"},{"type":"link","label":"\u2728 Upsert Team/Group Name","href":"/adaptors/library/jobs/auto/Upsert-Team-Group-Name-2021-04-28","docId":"library/jobs/auto/Upsert-Team-Group-Name-2021-04-28"},{"type":"link","label":"Register Participant - V2 Skillz","href":"/adaptors/library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02","docId":"library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02"},{"type":"link","label":"Upsert User in Salesforce","href":"/adaptors/library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16","docId":"library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16"},{"type":"link","label":"Create Person in SF","href":"/adaptors/library/jobs/auto/Create-Person-in-SF-2019-02-25","docId":"library/jobs/auto/Create-Person-in-SF-2019-02-25"},{"type":"link","label":"1. Create Payment in SF","href":"/adaptors/library/jobs/auto/1-Create-Payment-in-SF-2018-09-03","docId":"library/jobs/auto/1-Create-Payment-in-SF-2018-09-03"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/salesforce-changelog","docId":"packages/salesforce-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/salesforce-readme","docId":"packages/salesforce-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"sftp","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/sftp-docs","docId":"packages/sftp-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/sftp-configuration-schema","docId":"packages/sftp-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/sftp-changelog","docId":"packages/sftp-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/sftp-readme","docId":"packages/sftp-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"smpp","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/smpp-docs","docId":"packages/smpp-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/smpp-configuration-schema","docId":"packages/smpp-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/smpp-changelog","docId":"packages/smpp-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/smpp-readme","docId":"packages/smpp-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"surveycto","items":[{"type":"link","label":"Overview","href":"/adaptors/surveycto","docId":"surveycto"},{"type":"link","label":"Functions","href":"/adaptors/packages/surveycto-docs","docId":"packages/surveycto-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/surveycto-configuration-schema","docId":"packages/surveycto-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/surveycto-changelog","docId":"packages/surveycto-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/surveycto-readme","docId":"packages/surveycto-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"tableau","href":"/adaptors/tableau","docId":"tableau"},{"type":"category","label":"telerivet","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/telerivet-docs","docId":"packages/telerivet-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/telerivet-configuration-schema","docId":"packages/telerivet-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Send sms from Salesforce workflow action","href":"/adaptors/library/jobs/auto/send-sms-from-salesforce-workflow","docId":"library/jobs/auto/send-sms-from-salesforce-workflow"},{"type":"link","label":"2. SMS Balance Update to Customer","href":"/adaptors/library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14","docId":"library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/adaptors/packages/telerivet-changelog","docId":"packages/telerivet-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/telerivet-readme","docId":"packages/telerivet-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"template","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/template-docs","docId":"packages/template-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/template-configuration-schema","docId":"packages/template-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/template-changelog","docId":"packages/template-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/template-readme","docId":"packages/template-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"twilio","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/twilio-docs","docId":"packages/twilio-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/twilio-configuration-schema","docId":"packages/twilio-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/twilio-changelog","docId":"packages/twilio-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/twilio-readme","docId":"packages/twilio-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"vtiger","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/vtiger-docs","docId":"packages/vtiger-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/vtiger-configuration-schema","docId":"packages/vtiger-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/vtiger-changelog","docId":"packages/vtiger-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/vtiger-readme","docId":"packages/vtiger-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"zoho","items":[{"type":"link","label":"Functions","href":"/adaptors/packages/zoho-docs","docId":"packages/zoho-docs"},{"type":"link","label":"Configuration","href":"/adaptors/packages/zoho-configuration-schema","docId":"packages/zoho-configuration-schema"},{"type":"link","label":"Changelog","href":"/adaptors/packages/zoho-changelog","docId":"packages/zoho-changelog"},{"type":"link","label":"README.md","href":"/adaptors/packages/zoho-readme","docId":"packages/zoho-readme"}],"collapsed":true,"collapsible":true}]},"docs":{"adaptors-intro":{"id":"adaptors-intro","title":"Adaptors","description":"Connect Anything.","sidebar":"adaptors"},"cht":{"id":"cht","title":"Community Health Toolkit","description":"1. To push data from CHT applications to OpenFn, leverage the","sidebar":"adaptors"},"ckan":{"id":"ckan","title":"CKAN","description":"App Overview","sidebar":"adaptors"},"commcare":{"id":"commcare","title":"CommCare","description":"App Overview","sidebar":"adaptors"},"dhis2":{"id":"dhis2","title":"DHIS2","description":"App Overview","sidebar":"adaptors"},"godata":{"id":"godata","title":"Go.Data","description":"Overview","sidebar":"adaptors"},"googlesheets":{"id":"googlesheets","title":"Google Forms/Google Sheets","description":"Google Forms/Google Sheets","sidebar":"adaptors"},"kobotoolbox":{"id":"kobotoolbox","title":"Kobo Toolbox","description":"App Overview","sidebar":"adaptors"},"library-intro":{"id":"library-intro","title":"The Community Job Library","description":"A growing knowledge base","sidebar":"adaptors"},"library/jobs/auto/0-Get-TEI-data-2021-06-02":{"id":"library/jobs/auto/0-Get-TEI-data-2021-06-02","title":"0 - Get TEI data","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01-send-mailgun-email-2018-12-04":{"id":"library/jobs/auto/01-send-mailgun-email-2018-12-04","title":"01 send mailgun email","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01a-Create-Registrants-2019-11-19":{"id":"library/jobs/auto/01a-Create-Registrants-2019-11-19","title":"01a/ Create Registrants","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01b-Query-new-person-record-2019-12-13":{"id":"library/jobs/auto/01b-Query-new-person-record-2019-12-13","title":"01b/ Query new person record","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01c-Create-person_position-record-2019-12-13":{"id":"library/jobs/auto/01c-Create-person_position-record-2019-12-13","title":"01c/ Create person_position record","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11":{"id":"library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11","title":"02a/ Query DB for people to pay","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/02b-Initiate-Payments-2019-11-19":{"id":"library/jobs/auto/02b-Initiate-Payments-2019-11-19","title":"02b/ Initiate Payments","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/03-Update-Payment-Status-2019-11-19":{"id":"library/jobs/auto/03-Update-Payment-Status-2019-11-19","title":"03/ Update Payment Status","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/04a-Query-for-job-changes-2019-12-12":{"id":"library/jobs/auto/04a-Query-for-job-changes-2019-12-12","title":"04a/Query for job changes","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/04b-Update-ODK-form-2019-12-03":{"id":"library/jobs/auto/04b-Update-ODK-form-2019-12-03","title":"04b/ Update ODK form","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/05-Submit-employee-evaluation-2019-12-03":{"id":"library/jobs/auto/05-Submit-employee-evaluation-2019-12-03","title":"05/ Submit employee evaluation","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/05a-Query-for-new-employees-2019-12-19":{"id":"library/jobs/auto/05a-Query-for-new-employees-2019-12-19","title":"05a/Query for new employees","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19":{"id":"library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19","title":"05b/Update ODK eval form","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/1-Create-Payment-in-SF-2018-09-03":{"id":"library/jobs/auto/1-Create-Payment-in-SF-2018-09-03","title":"1. Create Payment in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08":{"id":"library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08","title":"1. Get CommCare Forms (Bulk Extract)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08":{"id":"library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08","title":"1. Get data from SLUHIS","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14":{"id":"library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14","title":"2. SMS Balance Update to Customer","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28":{"id":"library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28","title":"Add DHIS2 Data Value Sets","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/aleksa-cron-2022-04-29":{"id":"library/jobs/auto/aleksa-cron-2022-04-29","title":"aleksa cron","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/alter-state-before-operations":{"id":"library/jobs/auto/alter-state-before-operations","title":"Pre-processing data","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/async-and-array-dot-map":{"id":"library/jobs/auto/async-and-array-dot-map","title":"Using async and array.map","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/async-findValue":{"id":"library/jobs/auto/async-findValue","title":"Using findValue with an array of data","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Attendance-Non-Skillz-2021-06-14":{"id":"library/jobs/auto/Attendance-Non-Skillz-2021-06-14","title":"Attendance Non Skillz","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce":{"id":"library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce","title":"Using merge and each","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26":{"id":"library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26","title":"Catch Error in HTTP Request","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/CHW-case-to-DHIS2-2023-04-27":{"id":"library/jobs/auto/CHW-case-to-DHIS2-2023-04-27","title":"CHW case to DHIS2","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Coach-Session-Register-2021-05-03":{"id":"library/jobs/auto/Coach-Session-Register-2021-05-03","title":"Coach Session Register","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/CommCare-FHIR":{"id":"library/jobs/auto/CommCare-FHIR","title":"Create encounter in OpenHIM","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/commcare-reports-api-2016-08-29":{"id":"library/jobs/auto/commcare-reports-api-2016-08-29","title":"commcare reports api","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27":{"id":"library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27","title":"CommCare to Azure Sql","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/complex-http-request-chains":{"id":"library/jobs/auto/complex-http-request-chains","title":"Chaining HTTP Requests","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/complex-state-control":{"id":"library/jobs/auto/complex-state-control","title":"Using promises","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/concatenate-many-fields-with-nulls":{"id":"library/jobs/auto/concatenate-many-fields-with-nulls","title":"Concat fields with nulls","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Create-contact-2021-03-01":{"id":"library/jobs/auto/Create-contact-2021-03-01","title":"Create contact","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/create-if-proposal":{"id":"library/jobs/auto/create-if-proposal","title":"Create/update records if...","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Create-Intervention-2021-04-08":{"id":"library/jobs/auto/Create-Intervention-2021-04-08","title":"Create Intervention","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24":{"id":"library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24","title":"Create Patient in OpenMRS","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12":{"id":"library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12","title":"Create Person in OpenMRS","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-Person-in-SF-2019-02-25":{"id":"library/jobs/auto/Create-Person-in-SF-2019-02-25","title":"Create Person in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF":{"id":"library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF","title":"Create SMS linked to contact","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Create-TEI-dhis2-2021-03-22":{"id":"library/jobs/auto/Create-TEI-dhis2-2021-03-22","title":"Create TEI (dhis2)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/DHIS2-DataValues-API":{"id":"library/jobs/auto/DHIS2-DataValues-API","title":"Add data values","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/DHIS2-Events-2016-01-27":{"id":"library/jobs/auto/DHIS2-Events-2016-01-27","title":"DHIS2 Events","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/DHIS2-Events-API":{"id":"library/jobs/auto/DHIS2-Events-API","title":"Add events","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Extract-Vitas-Data-2021-05-11":{"id":"library/jobs/auto/Extract-Vitas-Data-2021-05-11","title":"Extract Vitas Data","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Failed-Payment-Notification-2021-04-23":{"id":"library/jobs/auto/Failed-Payment-Notification-2021-04-23","title":"Failed Payment Notification","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Fetch-Claims-2023-07-17":{"id":"library/jobs/auto/Fetch-Claims-2023-07-17","title":"Fetch Claims","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Get-cases-from-Primero-2021-09-23":{"id":"library/jobs/auto/Get-cases-from-Primero-2021-09-23","title":"Get cases from Primero","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16":{"id":"library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16","title":"Get CommCare Forms (Bulk Extract)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22":{"id":"library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22","title":"GET Data From KoboToolbox","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/getKoboData":{"id":"library/jobs/auto/getKoboData","title":"Extract Kobo data from API to send to OpenFn Inbox","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03":{"id":"library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03","title":"HIV Testing Event Snapshot","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03":{"id":"library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03","title":"HIV Testing Event Statistics","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Kobo-to-sheets-2023-10-13":{"id":"library/jobs/auto/Kobo-to-sheets-2023-10-13","title":"Kobo to sheets","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Load-to-DB-2022-05-16":{"id":"library/jobs/auto/Load-to-DB-2022-05-16","title":"Load to DB","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Load-to-DHIS2-2023-07-17":{"id":"library/jobs/auto/Load-to-DHIS2-2023-07-17","title":"Load to DHIS2","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22":{"id":"library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22","title":"Load / Upsert Data into PostgreSQL","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03":{"id":"library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03","title":"Malaria Testing Event Snapshot","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03":{"id":"library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03","title":"Malaria Testing Event Statistics","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/nawiri-2023-05-03":{"id":"library/jobs/auto/nawiri-2023-05-03","title":"nawiri","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/no-return-2023-01-06":{"id":"library/jobs/auto/no-return-2023-01-06","title":"no return","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks":{"id":"library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks","title":"Handling multiple ODK repeat groups","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Pay-CHW-2021-04-23":{"id":"library/jobs/auto/Pay-CHW-2021-04-23","title":"Pay CHW","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/PHQ9-2021-05-03":{"id":"library/jobs/auto/PHQ9-2021-05-03","title":"PHQ9","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/promise-all-nested-requests":{"id":"library/jobs/auto/promise-all-nested-requests","title":"Promises and nested requests","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19":{"id":"library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19","title":"Q3 2022] Create Distribution & Referral in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27":{"id":"library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27","title":"Q3 2022] Update HH Name in CommCare","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28":{"id":"library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28","title":"Q3 2022] Upsert Household & Household Visit in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21":{"id":"library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21","title":"Q3 2022] Upsert Person","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28":{"id":"library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28","title":"Q3 2022] Upsert Person Visit","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22":{"id":"library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22","title":"Q4 2022] Upsert Supervision - Accompaniment","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19":{"id":"library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19","title":"Q4 2022] Upsert Supervision - Feedback","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24":{"id":"library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24","title":"Q4 2022] Upsert Supervision - Household Spot Check","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02":{"id":"library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02","title":"Register Participant - V2 Skillz","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Register-Patient-2021-03-02":{"id":"library/jobs/auto/Register-Patient-2021-03-02","title":"Register Patient","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Registration-forms-new-case-2023-06-22":{"id":"library/jobs/auto/Registration-forms-new-case-2023-06-22","title":"Registration forms(new case)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Request-Vitas-Sync-2021-05-11":{"id":"library/jobs/auto/Request-Vitas-Sync-2021-05-11","title":"Request Vitas Sync","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27":{"id":"library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27","title":"Risk and Vulnerability Assessment","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/send-mail-in-mailgun":{"id":"library/jobs/auto/send-mail-in-mailgun","title":"send email","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/send-sms-from-salesforce-workflow":{"id":"library/jobs/auto/send-sms-from-salesforce-workflow","title":"Send sms from Salesforce workflow action","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/synchronous-http-request":{"id":"library/jobs/auto/synchronous-http-request","title":"Chaining synchronous http requests","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/timeout":{"id":"library/jobs/auto/timeout","title":"Timeout to create a delay","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30":{"id":"library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30","title":"Upsert Aggregate Service Referrals","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30":{"id":"library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30","title":"Upsert ART Adherence Self-Reporting Tool","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24":{"id":"library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24","title":"Upsert Attendance Skillz Plus Club","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28":{"id":"library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28","title":"Upsert Coach Support Visit (CSV)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14":{"id":"library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14","title":"Upsert Confirm Services Received","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03":{"id":"library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03","title":"Upsert Home Visit Log Form","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Intervention-Notes-2021-04-28":{"id":"library/jobs/auto/Upsert-Intervention-Notes-2021-04-28","title":"Upsert Intervention Notes","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/upsert-many-items-in-array-with-value-outside-array":{"id":"library/jobs/auto/upsert-many-items-in-array-with-value-outside-array","title":"Merge data into child array then upsert","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Post-Challenges-2021-04-30":{"id":"library/jobs/auto/Upsert-Post-Challenges-2021-04-30","title":"Upsert Post Challenges","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Pre-Challenges-2021-04-30":{"id":"library/jobs/auto/Upsert-Pre-Challenges-2021-04-30","title":"Upsert Pre Challenges","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Event-2021-04-30":{"id":"library/jobs/auto/Upsert-Register-Event-2021-04-30","title":"Upsert Register Event","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Participant-2021-04-28":{"id":"library/jobs/auto/Upsert-Register-Participant-2021-04-28","title":"Upsert Register Participant","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30":{"id":"library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30","title":"Upsert Register Participant (Skillz)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30":{"id":"library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30","title":"Upsert Register Skills plus Club","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25":{"id":"library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25","title":"Upsert Risk & Vulnerability Assessment | Service Referral","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Service-Referral-2-2021-06-14":{"id":"library/jobs/auto/Upsert-Service-Referral-2-2021-06-14","title":"Upsert Service Referral 2","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Service-Referral-2021-04-30":{"id":"library/jobs/auto/Upsert-Service-Referral-2021-04-30","title":"Upsert Service Referral","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30":{"id":"library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30","title":"Upsert Service Referral Followup","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Team-Group-Name-2021-04-28":{"id":"library/jobs/auto/Upsert-Team-Group-Name-2021-04-28","title":"Upsert Team/Group Name","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-to-mBrana-2021-05-11":{"id":"library/jobs/auto/Upsert-to-mBrana-2021-05-11","title":"Upsert to mBrana","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16":{"id":"library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16","title":"Upsert User in Salesforce","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19":{"id":"library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19","title":"WF1-1. Bulk get HH cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19":{"id":"library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19","title":"WF1-2. Bulk upsert HHs and HH Visits","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19":{"id":"library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19","title":"WF2-1. Bulk get Person cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19":{"id":"library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19","title":"WF2-2. Bulk upsert Persons","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19":{"id":"library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19","title":"WF3-1. Bulk get Person Visit cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19":{"id":"library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19","title":"WF3-2. Bulk upsert Person Visits","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31":{"id":"library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31","title":"WF3-2a/ Repeat Failed Person Visits","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19":{"id":"library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19","title":"WF4-1. Bulk get Referral Cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19":{"id":"library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19","title":"WF4-2. Bulk upsert Services","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/triggers/xmlns":{"id":"library/triggers/xmlns","title":"Match a message with a fragment inside another object called `form`","description":""},"magpi":{"id":"magpi","title":"Magpi","description":"Magpi is not able to push data to external URLs. In order to fetch data from","sidebar":"adaptors"},"moodle":{"id":"moodle","title":"Moodle","description":"Overview","sidebar":"adaptors"},"odk":{"id":"odk","title":"Open Data Kit (ODK)","description":"Open Data Kit (ODK) Collect","sidebar":"adaptors"},"ona":{"id":"ona","title":"Ona.io","description":"Webhooks to push form data to OpenFn","sidebar":"adaptors"},"packages/asana-changelog":{"id":"packages/asana-changelog","title":"asana changelog","description":"3.0.1","sidebar":"adaptors"},"packages/asana-configuration-schema":{"id":"packages/asana-configuration-schema","title":"Config for asana","description":"Jobs that use the asana adaptor may require authentication. A","sidebar":"adaptors"},"packages/asana-docs":{"id":"packages/asana-docs","title":"asana@3.0.1","description":"Functions","sidebar":"adaptors"},"packages/asana-readme":{"id":"packages/asana-readme","title":"asana developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/asana","sidebar":"adaptors"},"packages/beyonic-changelog":{"id":"packages/beyonic-changelog","title":"beyonic changelog","description":"0.2.1","sidebar":"adaptors"},"packages/beyonic-configuration-schema":{"id":"packages/beyonic-configuration-schema","title":"Config for beyonic","description":"Jobs that use the beyonic adaptor may require authentication. A","sidebar":"adaptors"},"packages/beyonic-docs":{"id":"packages/beyonic-docs","title":"beyonic@0.2.1","description":"Functions","sidebar":"adaptors"},"packages/beyonic-readme":{"id":"packages/beyonic-readme","title":"beyonic developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/beyonic","sidebar":"adaptors"},"packages/bigquery-changelog":{"id":"packages/bigquery-changelog","title":"bigquery changelog","description":"2.0.4","sidebar":"adaptors"},"packages/bigquery-configuration-schema":{"id":"packages/bigquery-configuration-schema","title":"Config for bigquery","description":"Jobs that use the bigquery adaptor may require authentication. A","sidebar":"adaptors"},"packages/bigquery-docs":{"id":"packages/bigquery-docs","title":"bigquery@2.0.4","description":"load","sidebar":"adaptors"},"packages/bigquery-readme":{"id":"packages/bigquery-readme","title":"bigquery developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/bigquery","sidebar":"adaptors"},"packages/commcare-changelog":{"id":"packages/commcare-changelog","title":"commcare changelog","description":"1.6.10","sidebar":"adaptors"},"packages/commcare-configuration-schema":{"id":"packages/commcare-configuration-schema","title":"Config for commcare","description":"Jobs that use the commcare adaptor may require authentication. A","sidebar":"adaptors"},"packages/commcare-docs":{"id":"packages/commcare-docs","title":"commcare@1.6.10","description":"Functions","sidebar":"adaptors"},"packages/commcare-readme":{"id":"packages/commcare-readme","title":"commcare developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/commcare","sidebar":"adaptors"},"packages/common-changelog":{"id":"packages/common-changelog","title":"common changelog","description":"v0.4.0","sidebar":"adaptors"},"packages/common-configuration-schema":{"id":"packages/common-configuration-schema","title":"Config for common","description":"No configuration schema has been defined for the common adaptor.","sidebar":"adaptors"},"packages/common-docs":{"id":"packages/common-docs","title":"common@1.11.1","description":"Functions","sidebar":"adaptors"},"packages/common-readme":{"id":"packages/common-readme","title":"common developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/common","sidebar":"adaptors"},"packages/dhis2-changelog":{"id":"packages/dhis2-changelog","title":"dhis2 changelog","description":"4.0.3","sidebar":"adaptors"},"packages/dhis2-configuration-schema":{"id":"packages/dhis2-configuration-schema","title":"Config for dhis2","description":"Jobs that use the dhis2 adaptor may require authentication. A","sidebar":"adaptors"},"packages/dhis2-docs":{"id":"packages/dhis2-docs","title":"dhis2@4.0.3","description":"Functions","sidebar":"adaptors"},"packages/dhis2-readme":{"id":"packages/dhis2-readme","title":"dhis2 developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/dhis2","sidebar":"adaptors"},"packages/dynamics-changelog":{"id":"packages/dynamics-changelog","title":"dynamics changelog","description":"0.4.8","sidebar":"adaptors"},"packages/dynamics-configuration-schema":{"id":"packages/dynamics-configuration-schema","title":"Config for dynamics","description":"Jobs that use the dynamics adaptor may require authentication. A","sidebar":"adaptors"},"packages/dynamics-docs":{"id":"packages/dynamics-docs","title":"dynamics@0.4.8","description":"","sidebar":"adaptors"},"packages/dynamics-readme":{"id":"packages/dynamics-readme","title":"dynamics developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/dynamics","sidebar":"adaptors"},"packages/facebook-changelog":{"id":"packages/facebook-changelog","title":"facebook changelog","description":"0.3.2","sidebar":"adaptors"},"packages/facebook-configuration-schema":{"id":"packages/facebook-configuration-schema","title":"Config for facebook","description":"Jobs that use the facebook adaptor may require authentication. A","sidebar":"adaptors"},"packages/facebook-docs":{"id":"packages/facebook-docs","title":"facebook@0.3.2","description":"postMessage","sidebar":"adaptors"},"packages/facebook-readme":{"id":"packages/facebook-readme","title":"facebook developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/facebook","sidebar":"adaptors"},"packages/fhir-changelog":{"id":"packages/fhir-changelog","title":"fhir changelog","description":"3.1.0","sidebar":"adaptors"},"packages/fhir-configuration-schema":{"id":"packages/fhir-configuration-schema","title":"Config for fhir","description":"Jobs that use the fhir adaptor may require authentication. A","sidebar":"adaptors"},"packages/fhir-docs":{"id":"packages/fhir-docs","title":"fhir@3.1.0","description":"Functions","sidebar":"adaptors"},"packages/fhir-readme":{"id":"packages/fhir-readme","title":"fhir developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/fhir","sidebar":"adaptors"},"packages/godata-changelog":{"id":"packages/godata-changelog","title":"godata changelog","description":"3.3.1","sidebar":"adaptors"},"packages/godata-configuration-schema":{"id":"packages/godata-configuration-schema","title":"Config for godata","description":"Jobs that use the godata adaptor may require authentication. A","sidebar":"adaptors"},"packages/godata-docs":{"id":"packages/godata-docs","title":"godata@3.3.1","description":"Functions","sidebar":"adaptors"},"packages/godata-readme":{"id":"packages/godata-readme","title":"godata developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/godata","sidebar":"adaptors"},"packages/googlehealthcare-changelog":{"id":"packages/googlehealthcare-changelog","title":"googlehealthcare changelog","description":"1.0.0","sidebar":"adaptors"},"packages/googlehealthcare-configuration-schema":{"id":"packages/googlehealthcare-configuration-schema","title":"Config for googlehealthcare","description":"Jobs that use the googlehealthcare adaptor may require authentication. A","sidebar":"adaptors"},"packages/googlehealthcare-docs":{"id":"packages/googlehealthcare-docs","title":"googlehealthcare@1.0.0","description":"createFhirResource","sidebar":"adaptors"},"packages/googlehealthcare-readme":{"id":"packages/googlehealthcare-readme","title":"googlehealthcare developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/googlehealthcare","sidebar":"adaptors"},"packages/googlesheets-changelog":{"id":"packages/googlesheets-changelog","title":"googlesheets changelog","description":"2.2.2","sidebar":"adaptors"},"packages/googlesheets-configuration-schema":{"id":"packages/googlesheets-configuration-schema","title":"Config for googlesheets","description":"Jobs that use the googlesheets adaptor may require authentication. A","sidebar":"adaptors"},"packages/googlesheets-docs":{"id":"packages/googlesheets-docs","title":"googlesheets@2.2.2","description":"appendValues","sidebar":"adaptors"},"packages/googlesheets-readme":{"id":"packages/googlesheets-readme","title":"googlesheets developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/googlesheets","sidebar":"adaptors"},"packages/hive-changelog":{"id":"packages/hive-changelog","title":"hive changelog","description":"0.2.0","sidebar":"adaptors"},"packages/hive-configuration-schema":{"id":"packages/hive-configuration-schema","title":"Config for hive","description":"Jobs that use the hive adaptor may require authentication. A","sidebar":"adaptors"},"packages/hive-docs":{"id":"packages/hive-docs","title":"hive@0.2.0","description":"query","sidebar":"adaptors"},"packages/hive-readme":{"id":"packages/hive-readme","title":"hive developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/hive","sidebar":"adaptors"},"packages/http-changelog":{"id":"packages/http-changelog","title":"http changelog","description":"5.0.4","sidebar":"adaptors"},"packages/http-configuration-schema":{"id":"packages/http-configuration-schema","title":"Config for http","description":"Jobs that use the http adaptor may require authentication. A","sidebar":"adaptors"},"packages/http-docs":{"id":"packages/http-docs","title":"http@5.0.4","description":"Functions","sidebar":"adaptors"},"packages/http-readme":{"id":"packages/http-readme","title":"http developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/http","sidebar":"adaptors"},"packages/khanacademy-changelog":{"id":"packages/khanacademy-changelog","title":"khanacademy changelog","description":"0.4.1","sidebar":"adaptors"},"packages/khanacademy-configuration-schema":{"id":"packages/khanacademy-configuration-schema","title":"Config for khanacademy","description":"Jobs that use the khanacademy adaptor may require authentication. A","sidebar":"adaptors"},"packages/khanacademy-docs":{"id":"packages/khanacademy-docs","title":"khanacademy@0.4.1","description":"fetch","sidebar":"adaptors"},"packages/khanacademy-readme":{"id":"packages/khanacademy-readme","title":"khanacademy developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/khanacademy","sidebar":"adaptors"},"packages/kobotoolbox-changelog":{"id":"packages/kobotoolbox-changelog","title":"kobotoolbox changelog","description":"2.1.0","sidebar":"adaptors"},"packages/kobotoolbox-configuration-schema":{"id":"packages/kobotoolbox-configuration-schema","title":"Config for kobotoolbox","description":"Jobs that use the kobotoolbox adaptor may require authentication. A","sidebar":"adaptors"},"packages/kobotoolbox-docs":{"id":"packages/kobotoolbox-docs","title":"kobotoolbox@2.1.0","description":"Functions","sidebar":"adaptors"},"packages/kobotoolbox-readme":{"id":"packages/kobotoolbox-readme","title":"kobotoolbox developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/kobotoolbox","sidebar":"adaptors"},"packages/magpi-changelog":{"id":"packages/magpi-changelog","title":"magpi changelog","description":"1.1.1","sidebar":"adaptors"},"packages/magpi-configuration-schema":{"id":"packages/magpi-configuration-schema","title":"Config for magpi","description":"Jobs that use the magpi adaptor may require authentication. A","sidebar":"adaptors"},"packages/magpi-docs":{"id":"packages/magpi-docs","title":"magpi@1.1.1","description":"Functions","sidebar":"adaptors"},"packages/magpi-readme":{"id":"packages/magpi-readme","title":"magpi developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/magpi","sidebar":"adaptors"},"packages/mailchimp-changelog":{"id":"packages/mailchimp-changelog","title":"mailchimp changelog","description":"0.7.1","sidebar":"adaptors"},"packages/mailchimp-configuration-schema":{"id":"packages/mailchimp-configuration-schema","title":"Config for mailchimp","description":"Jobs that use the mailchimp adaptor may require authentication. A","sidebar":"adaptors"},"packages/mailchimp-docs":{"id":"packages/mailchimp-docs","title":"mailchimp@0.7.1","description":"Functions","sidebar":"adaptors"},"packages/mailchimp-readme":{"id":"packages/mailchimp-readme","title":"mailchimp developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mailchimp","sidebar":"adaptors"},"packages/mailgun-changelog":{"id":"packages/mailgun-changelog","title":"mailgun changelog","description":"0.4.3","sidebar":"adaptors"},"packages/mailgun-configuration-schema":{"id":"packages/mailgun-configuration-schema","title":"Config for mailgun","description":"Jobs that use the mailgun adaptor may require authentication. A","sidebar":"adaptors"},"packages/mailgun-docs":{"id":"packages/mailgun-docs","title":"mailgun@0.4.3","description":"send","sidebar":"adaptors"},"packages/mailgun-readme":{"id":"packages/mailgun-readme","title":"mailgun developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mailgun","sidebar":"adaptors"},"packages/maximo-changelog":{"id":"packages/maximo-changelog","title":"maximo changelog","description":"0.4.1","sidebar":"adaptors"},"packages/maximo-configuration-schema":{"id":"packages/maximo-configuration-schema","title":"Config for maximo","description":"Jobs that use the maximo adaptor may require authentication. A","sidebar":"adaptors"},"packages/maximo-docs":{"id":"packages/maximo-docs","title":"maximo@0.4.1","description":"Functions","sidebar":"adaptors"},"packages/maximo-readme":{"id":"packages/maximo-readme","title":"maximo developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/maximo","sidebar":"adaptors"},"packages/medicmobile-changelog":{"id":"packages/medicmobile-changelog","title":"medicmobile changelog","description":"0.4.2","sidebar":"adaptors"},"packages/medicmobile-configuration-schema":{"id":"packages/medicmobile-configuration-schema","title":"Config for medicmobile","description":"Jobs that use the medicmobile adaptor may require authentication. A","sidebar":"adaptors"},"packages/medicmobile-docs":{"id":"packages/medicmobile-docs","title":"medicmobile@0.4.2","description":"Functions","sidebar":"adaptors"},"packages/medicmobile-readme":{"id":"packages/medicmobile-readme","title":"medicmobile developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/medicmobile","sidebar":"adaptors"},"packages/mogli-changelog":{"id":"packages/mogli-changelog","title":"mogli changelog","description":"v0.1.6","sidebar":"adaptors"},"packages/mogli-configuration-schema":{"id":"packages/mogli-configuration-schema","title":"Config for mogli","description":"Jobs that use the mogli adaptor may require authentication. A","sidebar":"adaptors"},"packages/mogli-docs":{"id":"packages/mogli-docs","title":"mogli@0.4.1","description":"Functions","sidebar":"adaptors"},"packages/mogli-readme":{"id":"packages/mogli-readme","title":"mogli developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mogli","sidebar":"adaptors"},"packages/mongodb-changelog":{"id":"packages/mongodb-changelog","title":"mongodb changelog","description":"2.0.0","sidebar":"adaptors"},"packages/mongodb-configuration-schema":{"id":"packages/mongodb-configuration-schema","title":"Config for mongodb","description":"Jobs that use the mongodb adaptor may require authentication. A","sidebar":"adaptors"},"packages/mongodb-docs":{"id":"packages/mongodb-docs","title":"mongodb@2.0.0","description":"Functions","sidebar":"adaptors"},"packages/mongodb-readme":{"id":"packages/mongodb-readme","title":"mongodb developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mongodb","sidebar":"adaptors"},"packages/msgraph-changelog":{"id":"packages/msgraph-changelog","title":"msgraph changelog","description":"0.4.0","sidebar":"adaptors"},"packages/msgraph-configuration-schema":{"id":"packages/msgraph-configuration-schema","title":"Config for msgraph","description":"Jobs that use the msgraph adaptor may require authentication. A","sidebar":"adaptors"},"packages/msgraph-docs":{"id":"packages/msgraph-docs","title":"msgraph@0.4.0","description":"Functions","sidebar":"adaptors"},"packages/msgraph-readme":{"id":"packages/msgraph-readme","title":"msgraph developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/msgraph","sidebar":"adaptors"},"packages/mssql-changelog":{"id":"packages/mssql-changelog","title":"mssql changelog","description":"4.1.8","sidebar":"adaptors"},"packages/mssql-configuration-schema":{"id":"packages/mssql-configuration-schema","title":"Config for mssql","description":"Jobs that use the mssql adaptor may require authentication. A","sidebar":"adaptors"},"packages/mssql-docs":{"id":"packages/mssql-docs","title":"mssql@4.1.8","description":"Functions","sidebar":"adaptors"},"packages/mssql-readme":{"id":"packages/mssql-readme","title":"mssql developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mssql","sidebar":"adaptors"},"packages/mysql-changelog":{"id":"packages/mysql-changelog","title":"mysql changelog","description":"1.4.8","sidebar":"adaptors"},"packages/mysql-configuration-schema":{"id":"packages/mysql-configuration-schema","title":"Config for mysql","description":"Jobs that use the mysql adaptor may require authentication. A","sidebar":"adaptors"},"packages/mysql-docs":{"id":"packages/mysql-docs","title":"mysql@1.4.8","description":"Functions","sidebar":"adaptors"},"packages/mysql-readme":{"id":"packages/mysql-readme","title":"mysql developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mysql","sidebar":"adaptors"},"packages/nexmo-changelog":{"id":"packages/nexmo-changelog","title":"nexmo changelog","description":"0.4.3","sidebar":"adaptors"},"packages/nexmo-configuration-schema":{"id":"packages/nexmo-configuration-schema","title":"Config for nexmo","description":"Jobs that use the nexmo adaptor may require authentication. A","sidebar":"adaptors"},"packages/nexmo-docs":{"id":"packages/nexmo-docs","title":"nexmo@0.4.3","description":"sendSMS","sidebar":"adaptors"},"packages/nexmo-readme":{"id":"packages/nexmo-readme","title":"nexmo developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/nexmo","sidebar":"adaptors"},"packages/ocl-changelog":{"id":"packages/ocl-changelog","title":"ocl changelog","description":"1.1.7","sidebar":"adaptors"},"packages/ocl-configuration-schema":{"id":"packages/ocl-configuration-schema","title":"Config for ocl","description":"Jobs that use the ocl adaptor may require authentication. A","sidebar":"adaptors"},"packages/ocl-docs":{"id":"packages/ocl-docs","title":"ocl@1.1.7","description":"Functions","sidebar":"adaptors"},"packages/ocl-readme":{"id":"packages/ocl-readme","title":"ocl developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/ocl","sidebar":"adaptors"},"packages/openfn-changelog":{"id":"packages/openfn-changelog","title":"openfn changelog","description":"1.3.8","sidebar":"adaptors"},"packages/openfn-configuration-schema":{"id":"packages/openfn-configuration-schema","title":"Config for openfn","description":"Jobs that use the openfn adaptor may require authentication. A","sidebar":"adaptors"},"packages/openfn-docs":{"id":"packages/openfn-docs","title":"openfn@1.3.8","description":"request","sidebar":"adaptors"},"packages/openfn-readme":{"id":"packages/openfn-readme","title":"openfn developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/openfn","sidebar":"adaptors"},"packages/openhim-changelog":{"id":"packages/openhim-changelog","title":"openhim changelog","description":"0.2.1","sidebar":"adaptors"},"packages/openhim-configuration-schema":{"id":"packages/openhim-configuration-schema","title":"Config for openhim","description":"Jobs that use the openhim adaptor may require authentication. A","sidebar":"adaptors"},"packages/openhim-docs":{"id":"packages/openhim-docs","title":"openhim@0.2.1","description":"encounter","sidebar":"adaptors"},"packages/openhim-readme":{"id":"packages/openhim-readme","title":"openhim developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/openhim","sidebar":"adaptors"},"packages/openmrs-changelog":{"id":"packages/openmrs-changelog","title":"openmrs changelog","description":"2.0.8","sidebar":"adaptors"},"packages/openmrs-configuration-schema":{"id":"packages/openmrs-configuration-schema","title":"Config for openmrs","description":"Jobs that use the openmrs adaptor may require authentication. A","sidebar":"adaptors"},"packages/openmrs-docs":{"id":"packages/openmrs-docs","title":"openmrs@2.0.8","description":"Functions","sidebar":"adaptors"},"packages/openmrs-readme":{"id":"packages/openmrs-readme","title":"openmrs developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/openmrs","sidebar":"adaptors"},"packages/postgresql-changelog":{"id":"packages/postgresql-changelog","title":"postgresql changelog","description":"4.1.8","sidebar":"adaptors"},"packages/postgresql-configuration-schema":{"id":"packages/postgresql-configuration-schema","title":"Config for postgresql","description":"Jobs that use the postgresql adaptor may require authentication. A","sidebar":"adaptors"},"packages/postgresql-docs":{"id":"packages/postgresql-docs","title":"postgresql@4.1.8","description":"Functions","sidebar":"adaptors"},"packages/postgresql-readme":{"id":"packages/postgresql-readme","title":"postgresql developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/postgresql","sidebar":"adaptors"},"packages/primero-changelog":{"id":"packages/primero-changelog","title":"primero changelog","description":"2.11.8","sidebar":"adaptors"},"packages/primero-configuration-schema":{"id":"packages/primero-configuration-schema","title":"Config for primero","description":"Jobs that use the primero adaptor may require authentication. A","sidebar":"adaptors"},"packages/primero-docs":{"id":"packages/primero-docs","title":"primero@2.11.8","description":"Functions","sidebar":"adaptors"},"packages/primero-readme":{"id":"packages/primero-readme","title":"primero developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/primero","sidebar":"adaptors"},"packages/progres-changelog":{"id":"packages/progres-changelog","title":"progres changelog","description":"1.3.8","sidebar":"adaptors"},"packages/progres-configuration-schema":{"id":"packages/progres-configuration-schema","title":"Config for progres","description":"Jobs that use the progres adaptor may require authentication. A","sidebar":"adaptors"},"packages/progres-docs":{"id":"packages/progres-docs","title":"progres@1.3.8","description":"postData","sidebar":"adaptors"},"packages/progres-readme":{"id":"packages/progres-readme","title":"progres developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/progres","sidebar":"adaptors"},"packages/rapidpro-changelog":{"id":"packages/rapidpro-changelog","title":"rapidpro changelog","description":"1.0.8","sidebar":"adaptors"},"packages/rapidpro-configuration-schema":{"id":"packages/rapidpro-configuration-schema","title":"Config for rapidpro","description":"Jobs that use the rapidpro adaptor may require authentication. A","sidebar":"adaptors"},"packages/rapidpro-docs":{"id":"packages/rapidpro-docs","title":"rapidpro@1.0.8","description":"Functions","sidebar":"adaptors"},"packages/rapidpro-readme":{"id":"packages/rapidpro-readme","title":"rapidpro developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/rapidpro","sidebar":"adaptors"},"packages/resourcemap-changelog":{"id":"packages/resourcemap-changelog","title":"resourcemap changelog","description":"0.3.1","sidebar":"adaptors"},"packages/resourcemap-configuration-schema":{"id":"packages/resourcemap-configuration-schema","title":"Config for resourcemap","description":"Jobs that use the resourcemap adaptor may require authentication. A","sidebar":"adaptors"},"packages/resourcemap-docs":{"id":"packages/resourcemap-docs","title":"resourcemap@0.3.1","description":"submitSite","sidebar":"adaptors"},"packages/resourcemap-readme":{"id":"packages/resourcemap-readme","title":"resourcemap developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/resourcemap","sidebar":"adaptors"},"packages/salesforce-changelog":{"id":"packages/salesforce-changelog","title":"salesforce changelog","description":"4.2.2","sidebar":"adaptors"},"packages/salesforce-configuration-schema":{"id":"packages/salesforce-configuration-schema","title":"Config for salesforce","description":"Jobs that use the salesforce adaptor may require authentication. A","sidebar":"adaptors"},"packages/salesforce-docs":{"id":"packages/salesforce-docs","title":"salesforce@4.2.2","description":"Functions","sidebar":"adaptors"},"packages/salesforce-readme":{"id":"packages/salesforce-readme","title":"salesforce developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/salesforce","sidebar":"adaptors"},"packages/sftp-changelog":{"id":"packages/sftp-changelog","title":"sftp changelog","description":"1.0.2","sidebar":"adaptors"},"packages/sftp-configuration-schema":{"id":"packages/sftp-configuration-schema","title":"Config for sftp","description":"Jobs that use the sftp adaptor may require authentication. A","sidebar":"adaptors"},"packages/sftp-docs":{"id":"packages/sftp-docs","title":"sftp@1.0.2","description":"Functions","sidebar":"adaptors"},"packages/sftp-readme":{"id":"packages/sftp-readme","title":"sftp developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/sftp","sidebar":"adaptors"},"packages/smpp-changelog":{"id":"packages/smpp-changelog","title":"smpp changelog","description":"1.3.1","sidebar":"adaptors"},"packages/smpp-configuration-schema":{"id":"packages/smpp-configuration-schema","title":"Config for smpp","description":"Jobs that use the smpp adaptor may require authentication. A","sidebar":"adaptors"},"packages/smpp-docs":{"id":"packages/smpp-docs","title":"smpp@1.3.1","description":"","sidebar":"adaptors"},"packages/smpp-readme":{"id":"packages/smpp-readme","title":"smpp developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/smpp","sidebar":"adaptors"},"packages/surveycto-changelog":{"id":"packages/surveycto-changelog","title":"surveycto changelog","description":"1.2.1","sidebar":"adaptors"},"packages/surveycto-configuration-schema":{"id":"packages/surveycto-configuration-schema","title":"Config for surveycto","description":"Jobs that use the surveycto adaptor may require authentication. A","sidebar":"adaptors"},"packages/surveycto-docs":{"id":"packages/surveycto-docs","title":"surveycto@1.2.1","description":"fetchSubmissions","sidebar":"adaptors"},"packages/surveycto-readme":{"id":"packages/surveycto-readme","title":"surveycto developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/surveycto","sidebar":"adaptors"},"packages/telerivet-changelog":{"id":"packages/telerivet-changelog","title":"telerivet changelog","description":"0.2.1","sidebar":"adaptors"},"packages/telerivet-configuration-schema":{"id":"packages/telerivet-configuration-schema","title":"Config for telerivet","description":"Jobs that use the telerivet adaptor may require authentication. A","sidebar":"adaptors"},"packages/telerivet-docs":{"id":"packages/telerivet-docs","title":"telerivet@0.2.1","description":"send","sidebar":"adaptors"},"packages/telerivet-readme":{"id":"packages/telerivet-readme","title":"telerivet developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/telerivet","sidebar":"adaptors"},"packages/template-changelog":{"id":"packages/template-changelog","title":"template changelog","description":"3.0.1","sidebar":"adaptors"},"packages/template-configuration-schema":{"id":"packages/template-configuration-schema","title":"Config for template","description":"Jobs that use the template adaptor may require authentication. A","sidebar":"adaptors"},"packages/template-docs":{"id":"packages/template-docs","title":"template@3.0.1","description":"create","sidebar":"adaptors"},"packages/template-readme":{"id":"packages/template-readme","title":"template developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/template","sidebar":"adaptors"},"packages/twilio-changelog":{"id":"packages/twilio-changelog","title":"twilio changelog","description":"0.4.1","sidebar":"adaptors"},"packages/twilio-configuration-schema":{"id":"packages/twilio-configuration-schema","title":"Config for twilio","description":"Jobs that use the twilio adaptor may require authentication. A","sidebar":"adaptors"},"packages/twilio-docs":{"id":"packages/twilio-docs","title":"twilio@0.4.1","description":"sendSMS","sidebar":"adaptors"},"packages/twilio-readme":{"id":"packages/twilio-readme","title":"twilio developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/twilio","sidebar":"adaptors"},"packages/vtiger-changelog":{"id":"packages/vtiger-changelog","title":"vtiger changelog","description":"1.2.1","sidebar":"adaptors"},"packages/vtiger-configuration-schema":{"id":"packages/vtiger-configuration-schema","title":"Config for vtiger","description":"Jobs that use the vtiger adaptor may require authentication. A","sidebar":"adaptors"},"packages/vtiger-docs":{"id":"packages/vtiger-docs","title":"vtiger@1.2.1","description":"","sidebar":"adaptors"},"packages/vtiger-readme":{"id":"packages/vtiger-readme","title":"vtiger developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/vtiger","sidebar":"adaptors"},"packages/zoho-changelog":{"id":"packages/zoho-changelog","title":"zoho changelog","description":"0.3.1","sidebar":"adaptors"},"packages/zoho-configuration-schema":{"id":"packages/zoho-configuration-schema","title":"Config for zoho","description":"Jobs that use the zoho adaptor may require authentication. A","sidebar":"adaptors"},"packages/zoho-docs":{"id":"packages/zoho-docs","title":"zoho@0.3.1","description":"addRow","sidebar":"adaptors"},"packages/zoho-readme":{"id":"packages/zoho-readme","title":"zoho developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/zoho","sidebar":"adaptors"},"postgresql":{"id":"postgresql","title":"PostgreSQL","description":"Overview","sidebar":"adaptors"},"powerbi":{"id":"powerbi","title":"Power BI","description":"(Work in progress)","sidebar":"adaptors"},"primero":{"id":"primero","title":"Primero","description":"Overview","sidebar":"adaptors"},"salesforce":{"id":"salesforce","title":"Salesforce","description":"App Overview","sidebar":"adaptors"},"surveycto":{"id":"surveycto","title":"SurveyCTO","description":"Real-time (with webhooks)","sidebar":"adaptors"},"tableau":{"id":"tableau","title":"Tableau","description":"(Work in progress)","sidebar":"adaptors"}}}')}}]); \ No newline at end of file diff --git a/assets/js/d9a6c9f9.20516ca7.js b/assets/js/d9a6c9f9.bf670a25.js similarity index 98% rename from assets/js/d9a6c9f9.20516ca7.js rename to assets/js/d9a6c9f9.bf670a25.js index 1832f2edf6e..737afacd9ed 100644 --- a/assets/js/d9a6c9f9.20516ca7.js +++ b/assets/js/d9a6c9f9.bf670a25.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[26090],{3905:(t,e,a)=>{a.d(e,{Zo:()=>u,kt:()=>d});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function p(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var i=n.createContext({}),s=function(t){var e=n.useContext(i),a=e;return t&&(a="function"==typeof t?t(e):p(p({},e),t)),a},u=function(t){var e=s(t.components);return n.createElement(i.Provider,{value:e},t.children)},c="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},k=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,i=t.parentName,u=o(t,["components","mdxType","originalType","parentName"]),c=s(a),k=r,d=c["".concat(i,".").concat(k)]||c[k]||m[k]||l;return a?n.createElement(d,p(p({ref:e},u),{},{components:a})):n.createElement(d,p({ref:e},u))}));function d(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,p=new Array(l);p[0]=k;var o={};for(var i in e)hasOwnProperty.call(e,i)&&(o[i]=e[i]);o.originalType=t,o[c]="string"==typeof t?t:r,p[1]=o;for(var s=2;s{a.r(e),a.d(e,{assets:()=>i,contentTitle:()=>p,default:()=>m,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var n=a(87462),r=(a(67294),a(3905));const l={title:"sftp@1.0.1",id:"sftp-docs",keywords:["adaptor","sftp","getCSV","getJSON","list","normalizeCSVarray","putCSV"]},p=void 0,o={unversionedId:"packages/sftp-docs",id:"packages/sftp-docs",title:"sftp@1.0.1",description:"Functions",source:"@site/adaptors/packages/sftp-docs.md",sourceDirName:"packages",slug:"/packages/sftp-docs",permalink:"/adaptors/packages/sftp-docs",draft:!1,tags:[],version:"current",frontMatter:{title:"sftp@1.0.1",id:"sftp-docs",keywords:["adaptor","sftp","getCSV","getJSON","list","normalizeCSVarray","putCSV"]},sidebar:"adaptors",previous:{title:"salesforce developer readme",permalink:"/adaptors/packages/salesforce-readme"},next:{title:"Config for sftp",permalink:"/adaptors/packages/sftp-configuration-schema"}},i={},s=[{value:"Functions",id:"functions",level:2},{value:"getCSV",id:"getcsv",level:2},{value:"getJSON",id:"getjson",level:2},{value:"list",id:"list",level:2},{value:"normalizeCSVarray",id:"normalizecsvarray",level:2},{value:"putCSV",id:"putcsv",level:2}],u={toc:s},c="wrapper";function m(t){let{components:e,...a}=t;return(0,r.kt)(c,(0,n.Z)({},u,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"functions"},"Functions"),(0,r.kt)("dl",null,(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#getCSV"},"getCSV(filePath, [parsingOptions])")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#getJSON"},"getJSON(filePath, encoding)")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#list"},"list(dirPath, filter, [callback])")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#normalizeCSVarray"},"normalizeCSVarray(options, callback)")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#putCSV"},"putCSV(localFilePath, remoteFilePath, parsingOptions)"))),(0,r.kt)("h2",{id:"getcsv"},"getCSV"),(0,r.kt)("p",null,"getCSV(filePath, ","[parsingOptions]",") \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nGet a CSV and return a JSON array of strings for each item separated by the delimiter"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"filePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to resource")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"[parsingOptions]"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"Object")),(0,r.kt)("td",{parentName:"tr",align:null},"Optional. ",(0,r.kt)("inlineCode",{parentName:"td"},"parsingOptions")," Parsing options which can be passed to convert csv to json See more ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/Keyang/node-csvtojson#parameters"},"on csvtojson docs"))))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"getCSV(\n '/some/path/to_file.csv',\n {delimiter: \";\", flatKeys: true }\n);\n")),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"getjson"},"getJSON"),(0,r.kt)("p",null,"getJSON(filePath, encoding) \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nFetch a json file from an FTP server"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"filePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to resource")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"encoding"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Character encoding for the json")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"getJSON(\n '/path/To/File',\n 'utf8',\n);\n")),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"list"},"list"),(0,r.kt)("p",null,"list(dirPath, filter, ","[callback]",") \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nList files present in a directory"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"dirPath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to remote directory")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"filter"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"function")),(0,r.kt)("td",{parentName:"tr",align:null},"a filter function used to select return entries")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"[callback]"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"function")),(0,r.kt)("td",{parentName:"tr",align:null},"Optional callback to handle the response")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," ",(0,r.kt)("em",{parentName:"p"},"(basic files listing)")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"list('/some/path/')\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," ",(0,r.kt)("em",{parentName:"p"},"(list files with filters)")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"list('/some/path/', file=> {\n return /foo.\\.txt/.test(file.name);\n})\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," ",(0,r.kt)("em",{parentName:"p"},"(list files with filters and use callback)")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},'list(\n "/some/path/",\n (file) => /foo.\\.txt/.test(file.name),\n (state) => {\n const latestFile = state.data.filter(\n (file) => file.modifyTime <= new Date()\n );\n return { ...state, latestFile };\n }\n);\n')),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"normalizecsvarray"},"normalizeCSVarray"),(0,r.kt)("p",null,"normalizeCSVarray(options, callback) \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nConvert JSON array of strings into a normalized object"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"options"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"options")),(0,r.kt)("td",{parentName:"tr",align:null},"Options passed to csvtojson parser")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"callback"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"callback")),(0,r.kt)("td",{parentName:"tr",align:null},"Options passed to csvtojson parser")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"normalizeCSVarray({ delimiter: ';', noheader: true });\n")),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"putcsv"},"putCSV"),(0,r.kt)("p",null,"putCSV(localFilePath, remoteFilePath, parsingOptions) \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nConvert JSON to CSV and upload to an FTP server"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"localFilePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Data source for data to copy to the remote server.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"remoteFilePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to the remote file to be created on the server.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"parsingOptions"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"object")),(0,r.kt)("td",{parentName:"tr",align:null},"Options which can be passed to adjust the read and write stream used in sending the data to the remote server")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"putCSV(\n '/some/path/to_local_file.csv',\n '/some/path/to_remove_file.csv',\n { delimiter: ';', noheader: true }\n);\n")),(0,r.kt)("hr",null))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[26090],{3905:(t,e,a)=>{a.d(e,{Zo:()=>u,kt:()=>d});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function p(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var i=n.createContext({}),s=function(t){var e=n.useContext(i),a=e;return t&&(a="function"==typeof t?t(e):p(p({},e),t)),a},u=function(t){var e=s(t.components);return n.createElement(i.Provider,{value:e},t.children)},c="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},k=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,i=t.parentName,u=o(t,["components","mdxType","originalType","parentName"]),c=s(a),k=r,d=c["".concat(i,".").concat(k)]||c[k]||m[k]||l;return a?n.createElement(d,p(p({ref:e},u),{},{components:a})):n.createElement(d,p({ref:e},u))}));function d(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,p=new Array(l);p[0]=k;var o={};for(var i in e)hasOwnProperty.call(e,i)&&(o[i]=e[i]);o.originalType=t,o[c]="string"==typeof t?t:r,p[1]=o;for(var s=2;s{a.r(e),a.d(e,{assets:()=>i,contentTitle:()=>p,default:()=>m,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var n=a(87462),r=(a(67294),a(3905));const l={title:"sftp@1.0.2",id:"sftp-docs",keywords:["adaptor","sftp","getCSV","getJSON","list","normalizeCSVarray","putCSV"]},p=void 0,o={unversionedId:"packages/sftp-docs",id:"packages/sftp-docs",title:"sftp@1.0.2",description:"Functions",source:"@site/adaptors/packages/sftp-docs.md",sourceDirName:"packages",slug:"/packages/sftp-docs",permalink:"/adaptors/packages/sftp-docs",draft:!1,tags:[],version:"current",frontMatter:{title:"sftp@1.0.2",id:"sftp-docs",keywords:["adaptor","sftp","getCSV","getJSON","list","normalizeCSVarray","putCSV"]},sidebar:"adaptors",previous:{title:"salesforce developer readme",permalink:"/adaptors/packages/salesforce-readme"},next:{title:"Config for sftp",permalink:"/adaptors/packages/sftp-configuration-schema"}},i={},s=[{value:"Functions",id:"functions",level:2},{value:"getCSV",id:"getcsv",level:2},{value:"getJSON",id:"getjson",level:2},{value:"list",id:"list",level:2},{value:"normalizeCSVarray",id:"normalizecsvarray",level:2},{value:"putCSV",id:"putcsv",level:2}],u={toc:s},c="wrapper";function m(t){let{components:e,...a}=t;return(0,r.kt)(c,(0,n.Z)({},u,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"functions"},"Functions"),(0,r.kt)("dl",null,(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#getCSV"},"getCSV(filePath, [parsingOptions])")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#getJSON"},"getJSON(filePath, encoding)")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#list"},"list(dirPath, filter, [callback])")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#normalizeCSVarray"},"normalizeCSVarray(options, callback)")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#putCSV"},"putCSV(localFilePath, remoteFilePath, parsingOptions)"))),(0,r.kt)("h2",{id:"getcsv"},"getCSV"),(0,r.kt)("p",null,"getCSV(filePath, ","[parsingOptions]",") \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nGet a CSV and return a JSON array of strings for each item separated by the delimiter"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"filePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to resource")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"[parsingOptions]"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"Object")),(0,r.kt)("td",{parentName:"tr",align:null},"Optional. ",(0,r.kt)("inlineCode",{parentName:"td"},"parsingOptions")," Parsing options which can be passed to convert csv to json See more ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/Keyang/node-csvtojson#parameters"},"on csvtojson docs"))))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"getCSV(\n '/some/path/to_file.csv',\n {delimiter: \";\", flatKeys: true }\n);\n")),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"getjson"},"getJSON"),(0,r.kt)("p",null,"getJSON(filePath, encoding) \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nFetch a json file from an FTP server"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"filePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to resource")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"encoding"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Character encoding for the json")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"getJSON(\n '/path/To/File',\n 'utf8',\n);\n")),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"list"},"list"),(0,r.kt)("p",null,"list(dirPath, filter, ","[callback]",") \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nList files present in a directory"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"dirPath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to remote directory")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"filter"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"function")),(0,r.kt)("td",{parentName:"tr",align:null},"a filter function used to select return entries")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"[callback]"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"function")),(0,r.kt)("td",{parentName:"tr",align:null},"Optional callback to handle the response")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," ",(0,r.kt)("em",{parentName:"p"},"(basic files listing)")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"list('/some/path/')\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," ",(0,r.kt)("em",{parentName:"p"},"(list files with filters)")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"list('/some/path/', file=> {\n return /foo.\\.txt/.test(file.name);\n})\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," ",(0,r.kt)("em",{parentName:"p"},"(list files with filters and use callback)")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},'list(\n "/some/path/",\n (file) => /foo.\\.txt/.test(file.name),\n (state) => {\n const latestFile = state.data.filter(\n (file) => file.modifyTime <= new Date()\n );\n return { ...state, latestFile };\n }\n);\n')),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"normalizecsvarray"},"normalizeCSVarray"),(0,r.kt)("p",null,"normalizeCSVarray(options, callback) \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nConvert JSON array of strings into a normalized object"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"options"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"options")),(0,r.kt)("td",{parentName:"tr",align:null},"Options passed to csvtojson parser")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"callback"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"callback")),(0,r.kt)("td",{parentName:"tr",align:null},"Options passed to csvtojson parser")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"normalizeCSVarray({ delimiter: ';', noheader: true });\n")),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"putcsv"},"putCSV"),(0,r.kt)("p",null,"putCSV(localFilePath, remoteFilePath, parsingOptions) \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nConvert JSON to CSV and upload to an FTP server"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"localFilePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Data source for data to copy to the remote server.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"remoteFilePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to the remote file to be created on the server.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"parsingOptions"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"object")),(0,r.kt)("td",{parentName:"tr",align:null},"Options which can be passed to adjust the read and write stream used in sending the data to the remote server")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"putCSV(\n '/some/path/to_local_file.csv',\n '/some/path/to_remove_file.csv',\n { delimiter: ';', noheader: true }\n);\n")),(0,r.kt)("hr",null))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.13254845.js b/assets/js/runtime~main.7a1c3ca5.js similarity index 98% rename from assets/js/runtime~main.13254845.js rename to assets/js/runtime~main.7a1c3ca5.js index 22a663ab19e..c897880042c 100644 --- a/assets/js/runtime~main.13254845.js +++ b/assets/js/runtime~main.7a1c3ca5.js @@ -1 +1 @@ -(()=>{"use strict";var e,f,d,c,a,b={},t={};function r(e){var f=t[e];if(void 0!==f)return f.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=b,r.c=t,e=[],r.O=(f,d,c,a)=>{if(!d){var b=1/0;for(i=0;i=a)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,a0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[d,c,a]},r.n=e=>{var f=e&&e.__esModule?()=>e.default:()=>e;return r.d(f,{a:f}),f},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var a=Object.create(null);r.r(a);var b={};f=f||[null,d({}),d([]),d(d)];for(var t=2&c&&e;"object"==typeof t&&!~f.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((f=>b[f]=()=>e[f]));return b.default=()=>e,r.d(a,b),a},r.d=(e,f)=>{for(var d in f)r.o(f,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:f[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((f,d)=>(r.f[d](e,f),f)),[])),r.u=e=>"assets/js/"+({75:"1ef0096b",160:"6f69b847",640:"c85c4b26",740:"fa811662",936:"885e9765",977:"b973dcfd",1080:"16aa9458",1140:"2bb14bf0",1177:"ceb3f8e5",1589:"3e1cef53",1685:"2f06f2be",1958:"6479f562",2110:"bd16d6fd",2232:"c64ebc62",2365:"f38541c0",3109:"f2a21e1f",3112:"97bb0f58",3132:"9915a91d",3211:"1ffdd7de",3673:"aae0663e",3812:"9d4548fb",3818:"a22153eb",4100:"c6cf652c",4213:"12ebab0f",4474:"f615a51d",4652:"dd45a7f1",4804:"60a00565",4825:"2d52fc42",4832:"ece86388",4993:"81c93763",5099:"f30a3d1e",5195:"c7bf2a3a",5332:"d3433875",5484:"4cd34504",5498:"d7f657c9",5547:"da184dc1",5566:"1578031d",5670:"fcdeb347",6136:"9da9a498",6249:"0564f87a",6286:"e19908fc",6367:"6de65b44",6450:"5ede04c0",6535:"3d8d21df",6536:"f2ca2c55",6819:"39906be8",6895:"dd13b434",6905:"13a70009",7127:"cfc8229c",7330:"d9cb599e",7332:"1a848321",7432:"954fe712",7463:"21b56577",7483:"a6a264d3",7567:"f77d5673",7694:"aa1b4e53",7911:"54e91ab5",8012:"c0f0637e",8076:"035d0344",8097:"20501ae4",8631:"0210b704",8697:"cb759659",8765:"4aaa0f44",8773:"da6f85e6",8985:"48052ce1",9084:"0a6f29e5",9112:"f93f95da",9260:"e150ab3e",9562:"45b0764f",9966:"60ab92b2",9985:"237f254e",10001:"8eb4e46b",10099:"f5f1347d",10195:"1dd16762",10309:"60f1bcf9",10660:"437618c4",10924:"5e450bcf",10996:"caaf01d4",11168:"11e6d144",11258:"d40361ad",11439:"33e1509d",11477:"b2f554cd",11483:"5b5d0fd6",11509:"d5b44e8d",11702:"ced1473c",11713:"a7023ddc",11953:"1e9ef283",11990:"30ddeb5e",12165:"d523bad7",12229:"964386c1",12306:"3d5c28b0",12573:"5dfb628f",12620:"274548c6",12797:"cdfa78cc",12831:"3062d10d",13633:"5e1c9ef2",13812:"207ee67a",13834:"c4643d70",13986:"55cceff7",14050:"2e7fdd6f",14074:"bd6858b9",14419:"8c2c25e6",14601:"81eac5d3",14687:"5610898c",14694:"29a36bd7",14753:"ce5aebf3",14817:"6aa8733e",15015:"2158648d",15288:"0452e1bb",15795:"5a047bf8",15847:"f6525c87",16057:"b083e7a6",16203:"3a232380",16679:"ff6530e5",16785:"a7ce3f25",16819:"9ee43f4e",17191:"89f741ca",17238:"45b3f811",17388:"97feb4e9",17470:"1abd0bca",17753:"6680323d",17773:"285ad496",17895:"112be523",18047:"9997aecf",18073:"92009f0a",18141:"febd0338",18308:"83170ae2",18384:"614beed4",18442:"92999a1c",18527:"83218c8a",18902:"0e04b402",18918:"24a5cb68",18967:"7a801707",19014:"50711b5c",19262:"80a6599d",19624:"8f8e3a33",19692:"ea07b8e0",19835:"e202e776",19873:"14ee1fe9",19881:"853164ef",19923:"006fd865",20396:"7ee80f24",20512:"5f265cf4",20868:"3d8bf3ab",21111:"fba9f625",21151:"14ad7d65",21217:"a582c3a1",21271:"8310c4f6",21356:"0d1eeea0",21481:"919ee986",21665:"e56b7427",21685:"03cd8e1c",22226:"f5466782",22235:"3947b16e",22409:"5e1dea11",22605:"55bb925b",22623:"ecfe8209",22740:"e436cfad",22881:"e175f9f3",23024:"665c23b8",23046:"192eff61",23067:"57fbf2bd",23497:"b3879250",23679:"12f62dc2",23872:"b5bd7f9b",23913:"3874af3e",24067:"8660c4b6",24219:"5e95c167",24378:"de4aaf36",24685:"a0799a2b",24688:"9784261d",24742:"833f2ec0",24857:"cc3db60c",24869:"90d535c2",24883:"9eb4e0db",25035:"1af9c7d3",25048:"a20e070a",25294:"73578edf",25315:"e310b146",25857:"5f0700c5",25903:"2c828998",25920:"cce9ad1c",26090:"d9a6c9f9",26723:"60194cf2",26920:"d98b9f83",27102:"e8b14a65",27385:"96ecf107",27747:"1e27a2df",27800:"b1ecb9ed",27864:"ce789ca4",27865:"bc07532a",27918:"06a5ba8b",28283:"d776f897",28573:"233cd645",28698:"c77a0576",29049:"7f9948f6",29354:"c2d56c21",29514:"1be78505",29814:"db6367fb",29881:"be818d17",29889:"471dcc6f",30117:"385718d4",30636:"747a690f",30674:"1140a058",31109:"dff30c03",31114:"f13d29f3",31158:"f2b4d23e",31262:"2dcd28d2",31326:"7a35092c",31350:"5fb0ec3e",31552:"4aa43dae",31800:"c1dc13d0",31883:"3c41cfdf",31955:"ba11d205",32107:"916b8fda",32567:"dc14f0c4",32661:"e1d93203",32672:"85f847a7",32674:"6cb21577",32737:"afbc2852",33089:"20a5a532",33731:"20f8de15",33889:"5de53f8e",33926:"c4429c79",33947:"c6dfd94e",34050:"3fa9568c",34229:"199fcd36",34490:"33844ff3",34737:"31b72ec5",35023:"d3797a8b",35097:"def6dfb9",35257:"1f86786a",35304:"1e26ddab",35349:"ef4e0518",35477:"c0908e63",35506:"6738a51a",35755:"c275b7b1",35955:"bb2ae6bf",36425:"984b8319",37120:"669b0b95",37181:"deb190e6",37209:"4980c4fa",37274:"02371d76",37427:"baf0d4a2",37435:"b942cf8e",37456:"cab54053",37638:"fa746f0e",37737:"2db499ae",37799:"b50d6289",37874:"8e97cc15",38360:"c3a6b316",38574:"1b3816a8",38887:"e967512d",38968:"512d8cfa",39210:"75270caf",39527:"afd0cb1b",39626:"8b77e1a5",39799:"330b8ea1",39856:"e0c8a1d6",40176:"a2e2478b",40268:"1de77d44",40280:"07e96687",40332:"cd8c9fbc",40381:"050638ff",40548:"67c4a832",40556:"1ee9c635",40597:"2d68e16b",40804:"84810683",41661:"1280552c",41856:"2f989304",42251:"55ac83aa",42349:"81ce5e0c",42412:"8328e7f1",42531:"4f8f7d74",42541:"868893ac",42958:"14a767b9",43086:"bb40a730",43521:"8d1ec4c5",43699:"186444dd",43905:"5653e10f",43996:"277d517a",44157:"283e63f8",44911:"677d6777",44953:"78b226dc",44988:"4be7e5d0",45048:"cad77a40",45112:"31d20e13",45190:"1d970e9f",45452:"5bcd0da1",45566:"8fa4918e",45702:"1074bb26",45939:"b1212599",45977:"acfb9a5e",45980:"ffecbc46",46074:"b198cec2",46103:"ccc49370",46353:"77faeb23",46526:"7f6bbd73",46564:"3aef9c59",46667:"ed03f5d4",46858:"e2c3bc5f",46940:"d4e06cde",46953:"58cbfb5a",46989:"e802237a",47077:"554f4bd3",47214:"326c0af7",47642:"741a738c",48104:"c333ed9f",48338:"4f3e32ec",48610:"6875c492",48632:"a555a233",48690:"5ffd6909",49158:"f50ed874",49208:"fd69b207",49517:"6af54863",49558:"ef9227ec",49808:"d0ac1c30",50003:"6850cfb6",50103:"65e8e75e",50258:"5575e2a8",50339:"cb128a98",50403:"de387681",50481:"af4b7be4",50533:"e19d86f2",50576:"e09d62f1",50758:"853ddb5d",50813:"f77b4e82",50988:"186b492d",51035:"9c1835bf",51065:"49dd7e39",51149:"cd910537",51161:"2127c55a",51296:"f7765531",51652:"708cde07",51818:"75ae40a4",51904:"c260b9a0",51917:"3f2ad086",52025:"4649e1c2",52409:"5cecf783",52535:"814f3328",52610:"1d48afb9",52739:"734563d5",52765:"933a49e7",52853:"1c7cc376",52943:"a9bffa51",53003:"10647879",53202:"68987ad2",53244:"869c9c27",53608:"9e4087bc",53787:"bc4d6fc9",53962:"3a574a7f",54239:"77354108",54246:"c942fcda",54468:"1a20bc57",54980:"e57c1bef",55191:"bb8cf488",55494:"38eccbde",55501:"7f2f79c2",55547:"45062c3f",55606:"b1be30d1",55776:"341bd61f",55797:"e4608243",55870:"c302b7f6",55889:"080066ed",56123:"4ef508e9",56147:"92e661e4",56522:"406b186f",56757:"fbcdd0ee",56852:"30995fb4",57019:"479e2d15",57178:"3de04134",57463:"f2f7c8b6",57684:"86b52bb0",57698:"8b0d3319",57973:"e7215565",58193:"aacecf0a",58290:"cc8c6322",58452:"8cbfacc6",58509:"507e1a4c",58701:"4e3d1533",59139:"5153790b",59334:"247783bb",59424:"133b4df0",59650:"4646a8a4",59671:"0e384e19",59891:"3124230e",60330:"13a2a5ae",60379:"271f7228",60595:"a9d6ad8a",60712:"699a47d0",60771:"22ef07eb",60992:"352bf367",61247:"83dc33dd",61484:"20a7d97c",61536:"1e613d61",61624:"4ef2e3ea",61887:"f9ed4079",62126:"c3a5a911",62339:"17896441",62405:"a8faecbd",62650:"0f427d40",63253:"a69ebe5f",63445:"92af7f04",63792:"bd83a8c8",63812:"45a8dc52",63816:"0475f9cc",63870:"0b31129f",63952:"d493c3e8",64013:"01a85c17",64195:"c4f5d8e4",64477:"3cf47477",64693:"1e5c0d86",64709:"f3954950",64880:"6a3a4a87",64887:"a8c84974",64947:"460d220e",65146:"069211c5",65341:"0a451647",65442:"444d5ed4",65688:"9afa6cde",65826:"203262b0",66070:"25057d02",66102:"36ded102",66385:"59b068d1",66433:"4656ed6c",66526:"e6102057",66609:"0c8b9afa",66618:"802db911",66766:"9e339b71",66833:"f24f0ea5",66863:"1cd349ba",67492:"aa9c90f7",67544:"aea1a378",67547:"9b3efc75",67560:"36a143db",68175:"c831614b",68271:"1c091541",68618:"5f16d91a",69048:"7b2e7fac",69081:"97a69baf",69104:"acd02317",69159:"e6b3976f",69276:"4c2772ab",69279:"776f5947",69962:"8e10bb86",70289:"b2b9b866",70351:"c6fe0741",70363:"6f4af312",70486:"6d30ac0a",70970:"77e868d9",71061:"c968f1a3",71592:"3685f909",72054:"f64a2f66",72099:"eae3fa10",72216:"ba98d3a9",72514:"6c5c20d6",72543:"61428574",72937:"193bf152",72978:"56b2a431",73032:"13c3e084",73446:"450c527f",73745:"1954649e",73881:"671081f5",74002:"9bb632fa",74083:"68cedfd5",74089:"2091582f",74113:"89ebc8eb",74134:"d5e8cc91",74198:"b3198ac5",74300:"419e73d5",74697:"26c54994",74888:"1a43e018",75075:"0dffb83e",75558:"3cc638e0",75878:"c08d79e7",76045:"a13b9d31",76126:"d060dfa6",76130:"6ccb7d3e",76575:"6d0c6131",76660:"c76eb7d5",76786:"8e37cc44",76791:"06b1e92d",76874:"771488fd",76967:"e2548c92",77012:"9e1f7384",77055:"f5d5b73d",77169:"e4f4dec4",77217:"af1b4014",77645:"a7434565",78046:"2fd22369",78082:"fcfb247d",78314:"10915d97",78436:"c541efc4",78489:"c98ac358",78659:"890759ea",78823:"c0daf1e6",78914:"1a98f2d5",78941:"88b398be",79495:"62b71d38",79559:"7356945f",79697:"fae4f913",79993:"fa56ac42",80053:"935f2afb",80448:"d1e2a1e4",80505:"342f32a4",80546:"a1b695db",80867:"6620b2c9",81155:"5f6910fd",81186:"e5e83212",81194:"cf61eed5",81312:"6bb55549",81448:"927acbbf",81475:"1ddde2c7",81487:"70b40441",81511:"208114e0",81649:"92bdb8f4",81757:"5fa25c43",81938:"6310fd48",82024:"8ed61535",82276:"46bd2088",82461:"dfd4abb8",82818:"5f1113d5",82838:"cd7cc5b2",82863:"eb4eb408",83006:"87d0342b",83054:"b85e9339",83278:"09b23959",83834:"07987921",83897:"500fb0e6",83988:"e0ecd9df",84568:"3e171e78",84726:"08e43170",84728:"903c4f6f",84761:"ab0b43f0",84784:"f7f75c2e",84935:"bab68f7e",85040:"f5ff4ddf",85528:"69802526",85586:"5f0cc255",85634:"a6748c3f",85744:"c4816122",85960:"cc826739",86179:"22ff6767",86236:"565d3b3a",86565:"4224ef00",86621:"519cbeed",86719:"4256eaf4",86904:"fec351f2",86984:"2bf9c0b5",87070:"3bc428dc",87233:"1ff7f4b8",87393:"ede583c5",87494:"90377122",87557:"4cbb880b",87644:"81e594d4",87746:"6fa39f86",87802:"4f0c7b96",87991:"09d8949d",88180:"eec2ee36",88529:"879bb888",88652:"39e9cb37",88795:"27e17dc0",88941:"2d1a235c",89007:"e4a50065",89364:"96781795",89501:"f48233a1",89642:"36788d15",89903:"ffc1986f",89959:"8435c5ad",90076:"c5495231",90111:"073713d1",90288:"82092fc0",90451:"e7db057b",90500:"cc135780",90533:"b2b675dd",90558:"a12f1ef9",90560:"5426ac11",90794:"b5efef1d",91374:"c2be96f9",91552:"b3022338",91637:"a3f9e536",91705:"524c9166",91878:"e866f873",91910:"d879ea04",92133:"bebb13e1",92648:"fca34444",92755:"9d36e504",93089:"a6aa9e1f",93233:"998a3ebe",93729:"f0884d43",94218:"216be533",94349:"09a69b27",94498:"10eaf6bf",94610:"dc62dd6c",94831:"4b75119c",95358:"7f0b639b",95520:"608d3bbe",95676:"a54058d6",95697:"c4fd3761",95752:"7b20acf0",95960:"dbbfaad4",95990:"ed48b979",95997:"8977ff65",96110:"90e38f0d",96218:"a9808524",96505:"f08e269d",96545:"40fd761e",96857:"5f87d652",97092:"661132b8",97470:"783bde4f",97595:"960d9980",97847:"f7d07906",97901:"60e9e07a",97920:"1a4e3797",97963:"22885a83",98216:"15d749b5",98418:"28411ba4",98646:"b4a58d82",99217:"6bf3b56c",99295:"fc5ff77a",99914:"b37711b1"}[e]||e)+"."+{75:"ba209844",160:"e5da974a",640:"66ba63be",740:"f8fe0687",936:"4c8c7358",977:"37a66585",1080:"75839613",1140:"f6d14862",1177:"082777f8",1589:"281acca6",1685:"99feb5c1",1958:"7bcf4b1e",2110:"0f784096",2232:"9658d2f9",2365:"49f92594",3109:"c6d9d07d",3112:"02619aa3",3132:"80676a41",3211:"03e41ee3",3473:"1483dcde",3673:"bc92d771",3812:"93a67fef",3818:"957afbad",4100:"22290676",4213:"7edb5230",4474:"de961bc6",4652:"e372b05b",4804:"7285b55a",4825:"83c6321a",4832:"52c1e025",4972:"4be77f28",4993:"1cf962f5",5099:"57e37f03",5195:"160f7aa9",5332:"1cb5798a",5484:"07e4fd90",5498:"013865d3",5547:"67f73252",5566:"92629b9f",5670:"c10c0fba",6136:"7a6557d6",6249:"a265052e",6286:"11710a8b",6367:"d9135d74",6450:"36add7bd",6535:"8270bf8b",6536:"31011f4a",6819:"f4f5903f",6895:"dcda0488",6905:"2739d39e",7127:"5574af70",7330:"4ef4ab4a",7332:"b857ce44",7432:"f8a6fc8e",7463:"d6f0a042",7483:"ca4c6e7e",7567:"23918f0c",7694:"4e9066f1",7911:"e487fa71",8012:"32969560",8076:"0a4bf576",8097:"ef3d21b7",8631:"b7382975",8697:"8ca7c083",8765:"0a76d68f",8773:"4d81694a",8985:"cb5697e6",9084:"9d09db61",9112:"c2af2ec2",9260:"b001f541",9562:"b89eeffa",9966:"1e880894",9985:"8d706c2f",10001:"a742282e",10099:"fb91e017",10195:"d332ee62",10309:"ca3e9203",10660:"e87ddd34",10924:"3dea7a77",10996:"79c1c7a4",11080:"a9a57c7f",11168:"84877c73",11258:"38d7d039",11439:"ec1f41be",11477:"ebd44df7",11483:"f700070c",11509:"c1c793e8",11702:"a58fba97",11713:"d0191fd9",11953:"4533979a",11990:"6f1e152a",12165:"24d1d113",12229:"a1555f6a",12306:"45f74160",12573:"7f8af31d",12620:"6708a580",12797:"3db0e00c",12831:"1c8512de",13633:"e10e3a7d",13812:"fdd71593",13834:"a3cd23ee",13986:"75337b20",14050:"fd1f6f94",14074:"e47f1d04",14419:"cecb2efc",14601:"9db1b629",14687:"6c5cdfd7",14694:"00f4a86d",14753:"2a30d1e8",14817:"b74f703c",15015:"c4993e25",15288:"7666a3a7",15795:"d77e68a6",15847:"0e0140ca",16057:"63dc81f9",16203:"9d8c0e01",16679:"da918e72",16785:"b816d1e7",16819:"ede6e28c",17191:"d56d1632",17238:"c392ec24",17388:"9854912e",17470:"955454d6",17753:"fcd1093c",17773:"e83467c4",17895:"d17e7953",18047:"14fe704d",18073:"37fd2b33",18141:"86ccdae3",18308:"dd57902b",18384:"a31beba8",18442:"a54c3abe",18527:"4cab4fe6",18894:"d7313338",18902:"33bfb34f",18918:"bbc62c4f",18967:"de7564ae",19014:"a07ef9b7",19262:"772e85d3",19487:"378cff79",19624:"4ea75e07",19692:"c62e520f",19835:"7ce8fcaa",19873:"fdfeacc6",19881:"9f8eef5f",19923:"b28cdacc",20396:"00139995",20512:"6b4c3c2e",20868:"0bdb5763",21111:"748e813f",21151:"cb569f4e",21217:"67f4e0be",21271:"9738f32d",21356:"50058654",21481:"c2468aba",21665:"01838e5d",21685:"af219096",22004:"8a0a8205",22226:"58eec50e",22235:"605b8183",22409:"fcfa855e",22605:"c23a1523",22623:"f9089edc",22740:"c652ea79",22881:"c27befbd",23024:"ea55a397",23046:"baec1de5",23067:"38984a4e",23497:"afda66d9",23679:"c52bebdb",23872:"64f3f6c3",23913:"38adccf3",24067:"1a3e19c1",24219:"4f178d44",24378:"8dbbcf7f",24685:"4a76270b",24688:"655e148c",24742:"cfc45767",24857:"68f07ba6",24869:"63acd6ab",24883:"0cb8c08d",25035:"3f669cd3",25048:"86669071",25294:"0ed9bd64",25315:"dd65f827",25857:"40b1b5e0",25903:"7b117143",25920:"3819e594",26090:"20516ca7",26723:"85c42d3d",26920:"fac27bc2",27102:"e72af470",27385:"0fff7ec2",27747:"7aa0b2a4",27800:"9abc5834",27864:"3ad11aa4",27865:"e9de5791",27918:"10e3c711",28283:"5d99ae9a",28573:"9883bfdc",28698:"4489cbf4",29049:"e57945f9",29354:"8dcfc928",29514:"efc67b9d",29814:"5aeec07a",29881:"93017777",29889:"36ef29d6",30117:"28998c3f",30636:"d18def78",30674:"d8b680cd",31109:"a4dece73",31114:"2d583c5a",31158:"be3a3ab8",31262:"561bbfb1",31326:"e5cd2764",31350:"797cdcb4",31466:"0024b86f",31552:"47e94f50",31800:"500713fd",31883:"b11a41ca",31955:"5f7835e7",32107:"b21796cb",32567:"3e10a887",32661:"fd96ce67",32672:"ad43de1f",32674:"dd5d259c",32737:"4575b3cc",33089:"3cd29263",33731:"8f426541",33889:"b8a30553",33926:"3c751710",33947:"471b3468",34050:"6bd370e5",34229:"4ac390cb",34490:"e831d01d",34737:"9587808b",35023:"1c611029",35097:"046756fd",35257:"e473e94c",35304:"41e6617c",35349:"23860a86",35477:"920c5501",35506:"28c13d96",35755:"b0a98bd4",35955:"dca6f4d3",36425:"35abcf54",37120:"21c8837f",37181:"539e1b97",37209:"3f6b1eb8",37274:"af7acf94",37427:"92d23900",37435:"1541074d",37456:"f438cb45",37638:"f294dc4b",37737:"cffe99c8",37799:"4f98a08b",37874:"3a138488",38360:"4e90aa50",38574:"d9468674",38887:"8c09d6b0",38968:"050053fd",39210:"21d024e6",39527:"3c3976af",39626:"4b6e93e1",39799:"c2010732",39856:"4dee8915",40176:"fed6f7e1",40268:"707ebbd6",40280:"dfc9e302",40332:"2464db9c",40381:"1df00230",40548:"e713df2d",40556:"73785032",40597:"5966791a",40804:"5648c776",41661:"198a6972",41856:"b3b5f85a",42251:"6c41ce9d",42349:"1ed3bd3f",42412:"afac3f8f",42531:"2477a914",42541:"d19f7810",42958:"251ffce9",43086:"01e6fa8b",43521:"e2d37587",43699:"623b825d",43905:"18f8f180",43996:"8a577e88",44157:"fd2b5e94",44911:"1b3c5761",44953:"c9430191",44988:"ecb11f1d",45048:"da752ee4",45112:"2790a97e",45190:"f923059f",45452:"678c3dbc",45566:"d808e99d",45702:"b535f50d",45939:"79b97812",45977:"c86c9d46",45980:"005f0187",46048:"991a2a40",46074:"82417a8d",46103:"ffd73f5c",46353:"97e9bfd6",46526:"71795cd9",46564:"bc69870f",46667:"03fb924e",46858:"cc97ccbe",46940:"1197d67b",46945:"a8617603",46953:"00fb7ea2",46989:"a46da357",47077:"e53f90f4",47214:"a855ad40",47642:"ade194dc",47724:"885efeb6",48104:"24c25af1",48338:"320ec0e2",48610:"9abf5873",48632:"1034d7ea",48690:"bc3070bc",49158:"71fb8b88",49208:"abbc6821",49517:"46b2802e",49558:"8baf268e",49808:"2ecf26cf",50003:"9cdf056c",50103:"aa33e6f8",50258:"e4b80dbe",50339:"01a76df1",50403:"ed7faa9b",50481:"79ba5b89",50533:"570ae3f5",50576:"e639c687",50758:"d9924384",50813:"2f17a7e6",50988:"559e5ae8",51035:"d24439d0",51065:"f2c75391",51149:"5465ea56",51161:"71d23e39",51296:"09b058e6",51652:"e6ecc0bc",51818:"87dad8e4",51904:"6487b1c8",51917:"d26609ba",52025:"cb7bfba1",52409:"48c2215f",52535:"27ffb074",52610:"174e1fb1",52739:"80299de6",52765:"76c3c387",52853:"7f427d82",52943:"7c53cd0f",53003:"6b3346f5",53202:"18dbfa73",53244:"559e1188",53608:"58cce4c5",53787:"22734071",53962:"c958b7b1",54239:"7ddd28a4",54246:"8b0f306b",54468:"b6bae94c",54980:"0df5011c",55191:"b060dc5a",55494:"28104b5e",55501:"7bc602e1",55547:"6a2eb3d8",55606:"aa0d9394",55776:"95897bd5",55797:"73992098",55870:"8a7b6ef6",55889:"02ff0ca7",56123:"0451191d",56147:"aded2add",56522:"2875452c",56757:"92b72a3c",56852:"a9f9e0e8",57019:"8611871f",57178:"a32d62c7",57463:"27ee395d",57684:"49b84bd0",57698:"406ba3c5",57973:"3dbf42b1",58193:"54edadad",58290:"0d6d8221",58452:"769a7d66",58509:"e4cfc3cb",58701:"6355db4b",59139:"94bd35c1",59334:"bc97b4af",59424:"a2394b8c",59650:"d3e21286",59671:"b7911a22",59891:"a6c6b226",60330:"4ddc6504",60379:"37f65d99",60595:"33d164e1",60712:"9ba741e0",60771:"806bb9bb",60992:"f92f1ba6",61247:"d8812a42",61426:"b005faab",61484:"9070572a",61536:"93aaed06",61624:"e2e0b33e",61887:"370bfec7",62126:"2e6842cc",62339:"d08a6152",62405:"fb708fd1",62650:"baeae442",63253:"032ad655",63445:"41155df7",63792:"f4a5b04e",63812:"736962b3",63816:"cfdfa4e6",63870:"5ddc4883",63952:"56dca9b6",64013:"599e8d04",64195:"9df9af76",64477:"880366e2",64693:"3591a451",64709:"0a02c2db",64880:"5483943f",64887:"93acfbce",64947:"a84b1560",65146:"5284aa98",65341:"074c1878",65442:"4b462267",65688:"c39dea2f",65826:"a257e4d2",66070:"30b7f98a",66102:"f562315c",66385:"a981a7d1",66433:"96b14f14",66526:"a30fc757",66609:"a83f3bad",66618:"9e6de4b0",66766:"cf3324fc",66833:"9539154b",66863:"bc4ddb97",67492:"7b1b3da8",67544:"44f25981",67547:"6aa55282",67560:"70abe5ee",68175:"8e5c2bc6",68271:"b6fb9f60",68618:"1b792ae9",69048:"a6d8ee91",69081:"1cbe58f2",69104:"434ddf10",69159:"22ecb9eb",69276:"79546110",69279:"2c16191a",69962:"407e25af",70289:"087dc897",70351:"1fbf6b6d",70363:"213a673d",70486:"d1979806",70970:"899290ee",71061:"aa73d1fe",71592:"ea4b6e59",72054:"3beef3e6",72099:"8b5339a0",72216:"61f5e878",72514:"30c2305a",72543:"8a095fb6",72937:"41d3a8ef",72978:"5b5fb654",73032:"d4406492",73446:"f08f4566",73745:"a1b09a88",73881:"b03ec57a",74002:"3c96ec89",74083:"51c6b576",74089:"1774a653",74113:"534e16f6",74134:"62cb2464",74198:"8f49a086",74300:"90208db5",74697:"ec35cd16",74888:"e8afaf87",75075:"7a8a6bb7",75558:"46fcfd6b",75878:"6106dfbb",76045:"7150d692",76126:"caff1910",76130:"3cebd4b0",76575:"0d031bbc",76660:"c0edfa51",76786:"c01123e3",76791:"18caed4b",76874:"3daf1871",76967:"2b7b93c5",77012:"424136c5",77055:"52d64481",77169:"c85f7414",77217:"73da5c9e",77645:"0d9ea538",78046:"b61f3e11",78082:"bb2abd1d",78314:"fc30bb20",78436:"bad65e65",78489:"07d0924a",78659:"5a1a8dd3",78823:"ca7a733a",78914:"ee403c7d",78941:"be3ab0f3",79134:"2cb1d474",79495:"e788506f",79559:"c43d5cea",79697:"662c6265",79993:"28e7c668",80053:"a59959ca",80448:"7bbda511",80505:"88574b97",80546:"5c09c361",80867:"e813d886",81155:"227074b2",81186:"97190397",81194:"6dd7db62",81312:"61e2a625",81448:"4d897493",81475:"7ff082cb",81487:"ff495c77",81511:"8c18480e",81649:"2b9a813c",81757:"a6e99358",81938:"c77cdb8f",82024:"a9006cb4",82276:"7b5e03b1",82461:"6d871fc9",82818:"c783e155",82838:"552dc70e",82863:"91149d10",83006:"91c44e75",83054:"1d15a998",83278:"055f6fdc",83834:"68361e02",83897:"345be9af",83988:"37c462d0",84568:"ec209866",84726:"1207266a",84728:"04a0b258",84761:"13de1572",84784:"5e119fa7",84935:"bc522665",85040:"0020a767",85528:"2f3d83b3",85586:"cb2a9a88",85634:"05248a84",85744:"6d83ff55",85960:"10eb5ed6",86179:"bf6d094e",86236:"be8b499c",86565:"93c3b976",86621:"7000eb75",86719:"4d003468",86904:"148fb722",86984:"33aa1a23",87070:"563e9013",87233:"bfc96bfb",87393:"3c6eba01",87494:"75e0e25a",87557:"708c5610",87644:"89b134ce",87746:"8ad7b419",87802:"f2a62bb2",87991:"ef36b765",88180:"b4f95828",88529:"90290f03",88652:"3fc6ee75",88795:"ee1fe83a",88941:"b4cd78bd",89007:"e5688e55",89364:"b1698349",89501:"45b3f8b8",89642:"92e1f794",89903:"a08599c5",89959:"26fa247a",90076:"8ad4604b",90111:"01869f8f",90288:"59cda47e",90451:"f8fb81e0",90500:"419e0882",90533:"4d78a45c",90558:"f40c67ff",90560:"7bc975ec",90794:"673dbef2",91374:"15386fc1",91552:"87f75dd0",91637:"5add28d0",91705:"a9673f3e",91878:"795bfb68",91910:"9131b612",92133:"1737bce4",92648:"3ee0cca8",92755:"332a5792",93089:"65e2c549",93233:"9a491502",93729:"54529f6c",94218:"6304aed3",94349:"46b52a8a",94498:"a0e25775",94610:"9f88de9e",94831:"979e575e",95358:"ad3493d9",95520:"f8165fd1",95676:"8d617ccd",95697:"c3b383d2",95752:"8a1e51fb",95960:"69129f52",95990:"879fe54a",95997:"17a3ae54",96110:"e3d5e26c",96218:"88e79e1b",96316:"e60530d6",96505:"ee8f3356",96545:"f9862151",96857:"4dc55093",97092:"1a30c487",97470:"b3ded8b0",97595:"87836ff0",97847:"a3812acc",97901:"0a8cc66e",97920:"d35141b1",97963:"5ac2d968",98216:"c6441497",98418:"268a13fc",98646:"35aa0daf",99217:"78769dc1",99295:"61a5d491",99914:"b4809dd8"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,f)=>Object.prototype.hasOwnProperty.call(e,f),c={},a="@openfn/docs:",r.l=(e,f,d,b)=>{if(c[e])c[e].push(f);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var a=c[e];if(delete c[e],t.parentNode&&t.parentNode.removeChild(t),a&&a.forEach((e=>e(d))),f)return f(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={10647879:"53003",17896441:"62339",61428574:"72543",69802526:"85528",77354108:"54239",84810683:"40804",90377122:"87494",96781795:"89364","1ef0096b":"75","6f69b847":"160",c85c4b26:"640",fa811662:"740","885e9765":"936",b973dcfd:"977","16aa9458":"1080","2bb14bf0":"1140",ceb3f8e5:"1177","3e1cef53":"1589","2f06f2be":"1685","6479f562":"1958",bd16d6fd:"2110",c64ebc62:"2232",f38541c0:"2365",f2a21e1f:"3109","97bb0f58":"3112","9915a91d":"3132","1ffdd7de":"3211",aae0663e:"3673","9d4548fb":"3812",a22153eb:"3818",c6cf652c:"4100","12ebab0f":"4213",f615a51d:"4474",dd45a7f1:"4652","60a00565":"4804","2d52fc42":"4825",ece86388:"4832","81c93763":"4993",f30a3d1e:"5099",c7bf2a3a:"5195",d3433875:"5332","4cd34504":"5484",d7f657c9:"5498",da184dc1:"5547","1578031d":"5566",fcdeb347:"5670","9da9a498":"6136","0564f87a":"6249",e19908fc:"6286","6de65b44":"6367","5ede04c0":"6450","3d8d21df":"6535",f2ca2c55:"6536","39906be8":"6819",dd13b434:"6895","13a70009":"6905",cfc8229c:"7127",d9cb599e:"7330","1a848321":"7332","954fe712":"7432","21b56577":"7463",a6a264d3:"7483",f77d5673:"7567",aa1b4e53:"7694","54e91ab5":"7911",c0f0637e:"8012","035d0344":"8076","20501ae4":"8097","0210b704":"8631",cb759659:"8697","4aaa0f44":"8765",da6f85e6:"8773","48052ce1":"8985","0a6f29e5":"9084",f93f95da:"9112",e150ab3e:"9260","45b0764f":"9562","60ab92b2":"9966","237f254e":"9985","8eb4e46b":"10001",f5f1347d:"10099","1dd16762":"10195","60f1bcf9":"10309","437618c4":"10660","5e450bcf":"10924",caaf01d4:"10996","11e6d144":"11168",d40361ad:"11258","33e1509d":"11439",b2f554cd:"11477","5b5d0fd6":"11483",d5b44e8d:"11509",ced1473c:"11702",a7023ddc:"11713","1e9ef283":"11953","30ddeb5e":"11990",d523bad7:"12165","964386c1":"12229","3d5c28b0":"12306","5dfb628f":"12573","274548c6":"12620",cdfa78cc:"12797","3062d10d":"12831","5e1c9ef2":"13633","207ee67a":"13812",c4643d70:"13834","55cceff7":"13986","2e7fdd6f":"14050",bd6858b9:"14074","8c2c25e6":"14419","81eac5d3":"14601","5610898c":"14687","29a36bd7":"14694",ce5aebf3:"14753","6aa8733e":"14817","2158648d":"15015","0452e1bb":"15288","5a047bf8":"15795",f6525c87:"15847",b083e7a6:"16057","3a232380":"16203",ff6530e5:"16679",a7ce3f25:"16785","9ee43f4e":"16819","89f741ca":"17191","45b3f811":"17238","97feb4e9":"17388","1abd0bca":"17470","6680323d":"17753","285ad496":"17773","112be523":"17895","9997aecf":"18047","92009f0a":"18073",febd0338:"18141","83170ae2":"18308","614beed4":"18384","92999a1c":"18442","83218c8a":"18527","0e04b402":"18902","24a5cb68":"18918","7a801707":"18967","50711b5c":"19014","80a6599d":"19262","8f8e3a33":"19624",ea07b8e0:"19692",e202e776:"19835","14ee1fe9":"19873","853164ef":"19881","006fd865":"19923","7ee80f24":"20396","5f265cf4":"20512","3d8bf3ab":"20868",fba9f625:"21111","14ad7d65":"21151",a582c3a1:"21217","8310c4f6":"21271","0d1eeea0":"21356","919ee986":"21481",e56b7427:"21665","03cd8e1c":"21685",f5466782:"22226","3947b16e":"22235","5e1dea11":"22409","55bb925b":"22605",ecfe8209:"22623",e436cfad:"22740",e175f9f3:"22881","665c23b8":"23024","192eff61":"23046","57fbf2bd":"23067",b3879250:"23497","12f62dc2":"23679",b5bd7f9b:"23872","3874af3e":"23913","8660c4b6":"24067","5e95c167":"24219",de4aaf36:"24378",a0799a2b:"24685","9784261d":"24688","833f2ec0":"24742",cc3db60c:"24857","90d535c2":"24869","9eb4e0db":"24883","1af9c7d3":"25035",a20e070a:"25048","73578edf":"25294",e310b146:"25315","5f0700c5":"25857","2c828998":"25903",cce9ad1c:"25920",d9a6c9f9:"26090","60194cf2":"26723",d98b9f83:"26920",e8b14a65:"27102","96ecf107":"27385","1e27a2df":"27747",b1ecb9ed:"27800",ce789ca4:"27864",bc07532a:"27865","06a5ba8b":"27918",d776f897:"28283","233cd645":"28573",c77a0576:"28698","7f9948f6":"29049",c2d56c21:"29354","1be78505":"29514",db6367fb:"29814",be818d17:"29881","471dcc6f":"29889","385718d4":"30117","747a690f":"30636","1140a058":"30674",dff30c03:"31109",f13d29f3:"31114",f2b4d23e:"31158","2dcd28d2":"31262","7a35092c":"31326","5fb0ec3e":"31350","4aa43dae":"31552",c1dc13d0:"31800","3c41cfdf":"31883",ba11d205:"31955","916b8fda":"32107",dc14f0c4:"32567",e1d93203:"32661","85f847a7":"32672","6cb21577":"32674",afbc2852:"32737","20a5a532":"33089","20f8de15":"33731","5de53f8e":"33889",c4429c79:"33926",c6dfd94e:"33947","3fa9568c":"34050","199fcd36":"34229","33844ff3":"34490","31b72ec5":"34737",d3797a8b:"35023",def6dfb9:"35097","1f86786a":"35257","1e26ddab":"35304",ef4e0518:"35349",c0908e63:"35477","6738a51a":"35506",c275b7b1:"35755",bb2ae6bf:"35955","984b8319":"36425","669b0b95":"37120",deb190e6:"37181","4980c4fa":"37209","02371d76":"37274",baf0d4a2:"37427",b942cf8e:"37435",cab54053:"37456",fa746f0e:"37638","2db499ae":"37737",b50d6289:"37799","8e97cc15":"37874",c3a6b316:"38360","1b3816a8":"38574",e967512d:"38887","512d8cfa":"38968","75270caf":"39210",afd0cb1b:"39527","8b77e1a5":"39626","330b8ea1":"39799",e0c8a1d6:"39856",a2e2478b:"40176","1de77d44":"40268","07e96687":"40280",cd8c9fbc:"40332","050638ff":"40381","67c4a832":"40548","1ee9c635":"40556","2d68e16b":"40597","1280552c":"41661","2f989304":"41856","55ac83aa":"42251","81ce5e0c":"42349","8328e7f1":"42412","4f8f7d74":"42531","868893ac":"42541","14a767b9":"42958",bb40a730:"43086","8d1ec4c5":"43521","186444dd":"43699","5653e10f":"43905","277d517a":"43996","283e63f8":"44157","677d6777":"44911","78b226dc":"44953","4be7e5d0":"44988",cad77a40:"45048","31d20e13":"45112","1d970e9f":"45190","5bcd0da1":"45452","8fa4918e":"45566","1074bb26":"45702",b1212599:"45939",acfb9a5e:"45977",ffecbc46:"45980",b198cec2:"46074",ccc49370:"46103","77faeb23":"46353","7f6bbd73":"46526","3aef9c59":"46564",ed03f5d4:"46667",e2c3bc5f:"46858",d4e06cde:"46940","58cbfb5a":"46953",e802237a:"46989","554f4bd3":"47077","326c0af7":"47214","741a738c":"47642",c333ed9f:"48104","4f3e32ec":"48338","6875c492":"48610",a555a233:"48632","5ffd6909":"48690",f50ed874:"49158",fd69b207:"49208","6af54863":"49517",ef9227ec:"49558",d0ac1c30:"49808","6850cfb6":"50003","65e8e75e":"50103","5575e2a8":"50258",cb128a98:"50339",de387681:"50403",af4b7be4:"50481",e19d86f2:"50533",e09d62f1:"50576","853ddb5d":"50758",f77b4e82:"50813","186b492d":"50988","9c1835bf":"51035","49dd7e39":"51065",cd910537:"51149","2127c55a":"51161",f7765531:"51296","708cde07":"51652","75ae40a4":"51818",c260b9a0:"51904","3f2ad086":"51917","4649e1c2":"52025","5cecf783":"52409","814f3328":"52535","1d48afb9":"52610","734563d5":"52739","933a49e7":"52765","1c7cc376":"52853",a9bffa51:"52943","68987ad2":"53202","869c9c27":"53244","9e4087bc":"53608",bc4d6fc9:"53787","3a574a7f":"53962",c942fcda:"54246","1a20bc57":"54468",e57c1bef:"54980",bb8cf488:"55191","38eccbde":"55494","7f2f79c2":"55501","45062c3f":"55547",b1be30d1:"55606","341bd61f":"55776",e4608243:"55797",c302b7f6:"55870","080066ed":"55889","4ef508e9":"56123","92e661e4":"56147","406b186f":"56522",fbcdd0ee:"56757","30995fb4":"56852","479e2d15":"57019","3de04134":"57178",f2f7c8b6:"57463","86b52bb0":"57684","8b0d3319":"57698",e7215565:"57973",aacecf0a:"58193",cc8c6322:"58290","8cbfacc6":"58452","507e1a4c":"58509","4e3d1533":"58701","5153790b":"59139","247783bb":"59334","133b4df0":"59424","4646a8a4":"59650","0e384e19":"59671","3124230e":"59891","13a2a5ae":"60330","271f7228":"60379",a9d6ad8a:"60595","699a47d0":"60712","22ef07eb":"60771","352bf367":"60992","83dc33dd":"61247","20a7d97c":"61484","1e613d61":"61536","4ef2e3ea":"61624",f9ed4079:"61887",c3a5a911:"62126",a8faecbd:"62405","0f427d40":"62650",a69ebe5f:"63253","92af7f04":"63445",bd83a8c8:"63792","45a8dc52":"63812","0475f9cc":"63816","0b31129f":"63870",d493c3e8:"63952","01a85c17":"64013",c4f5d8e4:"64195","3cf47477":"64477","1e5c0d86":"64693",f3954950:"64709","6a3a4a87":"64880",a8c84974:"64887","460d220e":"64947","069211c5":"65146","0a451647":"65341","444d5ed4":"65442","9afa6cde":"65688","203262b0":"65826","25057d02":"66070","36ded102":"66102","59b068d1":"66385","4656ed6c":"66433",e6102057:"66526","0c8b9afa":"66609","802db911":"66618","9e339b71":"66766",f24f0ea5:"66833","1cd349ba":"66863",aa9c90f7:"67492",aea1a378:"67544","9b3efc75":"67547","36a143db":"67560",c831614b:"68175","1c091541":"68271","5f16d91a":"68618","7b2e7fac":"69048","97a69baf":"69081",acd02317:"69104",e6b3976f:"69159","4c2772ab":"69276","776f5947":"69279","8e10bb86":"69962",b2b9b866:"70289",c6fe0741:"70351","6f4af312":"70363","6d30ac0a":"70486","77e868d9":"70970",c968f1a3:"71061","3685f909":"71592",f64a2f66:"72054",eae3fa10:"72099",ba98d3a9:"72216","6c5c20d6":"72514","193bf152":"72937","56b2a431":"72978","13c3e084":"73032","450c527f":"73446","1954649e":"73745","671081f5":"73881","9bb632fa":"74002","68cedfd5":"74083","2091582f":"74089","89ebc8eb":"74113",d5e8cc91:"74134",b3198ac5:"74198","419e73d5":"74300","26c54994":"74697","1a43e018":"74888","0dffb83e":"75075","3cc638e0":"75558",c08d79e7:"75878",a13b9d31:"76045",d060dfa6:"76126","6ccb7d3e":"76130","6d0c6131":"76575",c76eb7d5:"76660","8e37cc44":"76786","06b1e92d":"76791","771488fd":"76874",e2548c92:"76967","9e1f7384":"77012",f5d5b73d:"77055",e4f4dec4:"77169",af1b4014:"77217",a7434565:"77645","2fd22369":"78046",fcfb247d:"78082","10915d97":"78314",c541efc4:"78436",c98ac358:"78489","890759ea":"78659",c0daf1e6:"78823","1a98f2d5":"78914","88b398be":"78941","62b71d38":"79495","7356945f":"79559",fae4f913:"79697",fa56ac42:"79993","935f2afb":"80053",d1e2a1e4:"80448","342f32a4":"80505",a1b695db:"80546","6620b2c9":"80867","5f6910fd":"81155",e5e83212:"81186",cf61eed5:"81194","6bb55549":"81312","927acbbf":"81448","1ddde2c7":"81475","70b40441":"81487","208114e0":"81511","92bdb8f4":"81649","5fa25c43":"81757","6310fd48":"81938","8ed61535":"82024","46bd2088":"82276",dfd4abb8:"82461","5f1113d5":"82818",cd7cc5b2:"82838",eb4eb408:"82863","87d0342b":"83006",b85e9339:"83054","09b23959":"83278","07987921":"83834","500fb0e6":"83897",e0ecd9df:"83988","3e171e78":"84568","08e43170":"84726","903c4f6f":"84728",ab0b43f0:"84761",f7f75c2e:"84784",bab68f7e:"84935",f5ff4ddf:"85040","5f0cc255":"85586",a6748c3f:"85634",c4816122:"85744",cc826739:"85960","22ff6767":"86179","565d3b3a":"86236","4224ef00":"86565","519cbeed":"86621","4256eaf4":"86719",fec351f2:"86904","2bf9c0b5":"86984","3bc428dc":"87070","1ff7f4b8":"87233",ede583c5:"87393","4cbb880b":"87557","81e594d4":"87644","6fa39f86":"87746","4f0c7b96":"87802","09d8949d":"87991",eec2ee36:"88180","879bb888":"88529","39e9cb37":"88652","27e17dc0":"88795","2d1a235c":"88941",e4a50065:"89007",f48233a1:"89501","36788d15":"89642",ffc1986f:"89903","8435c5ad":"89959",c5495231:"90076","073713d1":"90111","82092fc0":"90288",e7db057b:"90451",cc135780:"90500",b2b675dd:"90533",a12f1ef9:"90558","5426ac11":"90560",b5efef1d:"90794",c2be96f9:"91374",b3022338:"91552",a3f9e536:"91637","524c9166":"91705",e866f873:"91878",d879ea04:"91910",bebb13e1:"92133",fca34444:"92648","9d36e504":"92755",a6aa9e1f:"93089","998a3ebe":"93233",f0884d43:"93729","216be533":"94218","09a69b27":"94349","10eaf6bf":"94498",dc62dd6c:"94610","4b75119c":"94831","7f0b639b":"95358","608d3bbe":"95520",a54058d6:"95676",c4fd3761:"95697","7b20acf0":"95752",dbbfaad4:"95960",ed48b979:"95990","8977ff65":"95997","90e38f0d":"96110",a9808524:"96218",f08e269d:"96505","40fd761e":"96545","5f87d652":"96857","661132b8":"97092","783bde4f":"97470","960d9980":"97595",f7d07906:"97847","60e9e07a":"97901","1a4e3797":"97920","22885a83":"97963","15d749b5":"98216","28411ba4":"98418",b4a58d82:"98646","6bf3b56c":"99217",fc5ff77a:"99295",b37711b1:"99914"}[e]||e,r.p+r.u(e)},(()=>{var e={51303:0,40532:0};r.f.j=(f,d)=>{var c=r.o(e,f)?e[f]:void 0;if(0!==c)if(c)d.push(c[2]);else if(/^(40532|51303)$/.test(f))e[f]=0;else{var a=new Promise(((d,a)=>c=e[f]=[d,a]));d.push(c[2]=a);var b=r.p+r.u(f),t=new Error;r.l(b,(d=>{if(r.o(e,f)&&(0!==(c=e[f])&&(e[f]=void 0),c)){var a=d&&("load"===d.type?"missing":d.type),b=d&&d.target&&d.target.src;t.message="Loading chunk "+f+" failed.\n("+a+": "+b+")",t.name="ChunkLoadError",t.type=a,t.request=b,c[1](t)}}),"chunk-"+f,f)}},r.O.j=f=>0===e[f];var f=(f,d)=>{var c,a,b=d[0],t=d[1],o=d[2],n=0;if(b.some((f=>0!==e[f]))){for(c in t)r.o(t,c)&&(r.m[c]=t[c]);if(o)var i=o(r)}for(f&&f(d);n{"use strict";var e,f,d,c,a,b={},t={};function r(e){var f=t[e];if(void 0!==f)return f.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=b,r.c=t,e=[],r.O=(f,d,c,a)=>{if(!d){var b=1/0;for(i=0;i=a)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,a0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[d,c,a]},r.n=e=>{var f=e&&e.__esModule?()=>e.default:()=>e;return r.d(f,{a:f}),f},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var a=Object.create(null);r.r(a);var b={};f=f||[null,d({}),d([]),d(d)];for(var t=2&c&&e;"object"==typeof t&&!~f.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((f=>b[f]=()=>e[f]));return b.default=()=>e,r.d(a,b),a},r.d=(e,f)=>{for(var d in f)r.o(f,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:f[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((f,d)=>(r.f[d](e,f),f)),[])),r.u=e=>"assets/js/"+({75:"1ef0096b",160:"6f69b847",640:"c85c4b26",740:"fa811662",936:"885e9765",977:"b973dcfd",1080:"16aa9458",1140:"2bb14bf0",1177:"ceb3f8e5",1589:"3e1cef53",1685:"2f06f2be",1958:"6479f562",2110:"bd16d6fd",2232:"c64ebc62",2365:"f38541c0",3109:"f2a21e1f",3112:"97bb0f58",3132:"9915a91d",3211:"1ffdd7de",3673:"aae0663e",3812:"9d4548fb",3818:"a22153eb",4100:"c6cf652c",4213:"12ebab0f",4474:"f615a51d",4652:"dd45a7f1",4804:"60a00565",4825:"2d52fc42",4832:"ece86388",4993:"81c93763",5099:"f30a3d1e",5195:"c7bf2a3a",5332:"d3433875",5484:"4cd34504",5498:"d7f657c9",5547:"da184dc1",5566:"1578031d",5670:"fcdeb347",6136:"9da9a498",6249:"0564f87a",6286:"e19908fc",6367:"6de65b44",6450:"5ede04c0",6535:"3d8d21df",6536:"f2ca2c55",6819:"39906be8",6895:"dd13b434",6905:"13a70009",7127:"cfc8229c",7330:"d9cb599e",7332:"1a848321",7432:"954fe712",7463:"21b56577",7483:"a6a264d3",7567:"f77d5673",7694:"aa1b4e53",7911:"54e91ab5",8012:"c0f0637e",8076:"035d0344",8097:"20501ae4",8631:"0210b704",8697:"cb759659",8765:"4aaa0f44",8773:"da6f85e6",8985:"48052ce1",9084:"0a6f29e5",9112:"f93f95da",9260:"e150ab3e",9562:"45b0764f",9966:"60ab92b2",9985:"237f254e",10001:"8eb4e46b",10099:"f5f1347d",10195:"1dd16762",10309:"60f1bcf9",10660:"437618c4",10924:"5e450bcf",10996:"caaf01d4",11168:"11e6d144",11258:"d40361ad",11439:"33e1509d",11477:"b2f554cd",11483:"5b5d0fd6",11509:"d5b44e8d",11702:"ced1473c",11713:"a7023ddc",11953:"1e9ef283",11990:"30ddeb5e",12165:"d523bad7",12229:"964386c1",12306:"3d5c28b0",12573:"5dfb628f",12620:"274548c6",12797:"cdfa78cc",12831:"3062d10d",13633:"5e1c9ef2",13812:"207ee67a",13834:"c4643d70",13986:"55cceff7",14050:"2e7fdd6f",14074:"bd6858b9",14419:"8c2c25e6",14601:"81eac5d3",14687:"5610898c",14694:"29a36bd7",14753:"ce5aebf3",14817:"6aa8733e",15015:"2158648d",15288:"0452e1bb",15795:"5a047bf8",15847:"f6525c87",16057:"b083e7a6",16203:"3a232380",16679:"ff6530e5",16785:"a7ce3f25",16819:"9ee43f4e",17191:"89f741ca",17238:"45b3f811",17388:"97feb4e9",17470:"1abd0bca",17753:"6680323d",17773:"285ad496",17895:"112be523",18047:"9997aecf",18073:"92009f0a",18141:"febd0338",18308:"83170ae2",18384:"614beed4",18442:"92999a1c",18527:"83218c8a",18902:"0e04b402",18918:"24a5cb68",18967:"7a801707",19014:"50711b5c",19262:"80a6599d",19624:"8f8e3a33",19692:"ea07b8e0",19835:"e202e776",19873:"14ee1fe9",19881:"853164ef",19923:"006fd865",20396:"7ee80f24",20512:"5f265cf4",20868:"3d8bf3ab",21111:"fba9f625",21151:"14ad7d65",21217:"a582c3a1",21271:"8310c4f6",21356:"0d1eeea0",21481:"919ee986",21665:"e56b7427",21685:"03cd8e1c",22226:"f5466782",22235:"3947b16e",22409:"5e1dea11",22605:"55bb925b",22623:"ecfe8209",22740:"e436cfad",22881:"e175f9f3",23024:"665c23b8",23046:"192eff61",23067:"57fbf2bd",23497:"b3879250",23679:"12f62dc2",23872:"b5bd7f9b",23913:"3874af3e",24067:"8660c4b6",24219:"5e95c167",24378:"de4aaf36",24685:"a0799a2b",24688:"9784261d",24742:"833f2ec0",24857:"cc3db60c",24869:"90d535c2",24883:"9eb4e0db",25035:"1af9c7d3",25048:"a20e070a",25294:"73578edf",25315:"e310b146",25857:"5f0700c5",25903:"2c828998",25920:"cce9ad1c",26090:"d9a6c9f9",26723:"60194cf2",26920:"d98b9f83",27102:"e8b14a65",27385:"96ecf107",27747:"1e27a2df",27800:"b1ecb9ed",27864:"ce789ca4",27865:"bc07532a",27918:"06a5ba8b",28283:"d776f897",28573:"233cd645",28698:"c77a0576",29049:"7f9948f6",29354:"c2d56c21",29514:"1be78505",29814:"db6367fb",29881:"be818d17",29889:"471dcc6f",30117:"385718d4",30636:"747a690f",30674:"1140a058",31109:"dff30c03",31114:"f13d29f3",31158:"f2b4d23e",31262:"2dcd28d2",31326:"7a35092c",31350:"5fb0ec3e",31552:"4aa43dae",31800:"c1dc13d0",31883:"3c41cfdf",31955:"ba11d205",32107:"916b8fda",32567:"dc14f0c4",32661:"e1d93203",32672:"85f847a7",32674:"6cb21577",32737:"afbc2852",33089:"20a5a532",33731:"20f8de15",33889:"5de53f8e",33926:"c4429c79",33947:"c6dfd94e",34050:"3fa9568c",34229:"199fcd36",34490:"33844ff3",34737:"31b72ec5",35023:"d3797a8b",35097:"def6dfb9",35257:"1f86786a",35304:"1e26ddab",35349:"ef4e0518",35477:"c0908e63",35506:"6738a51a",35755:"c275b7b1",35955:"bb2ae6bf",36425:"984b8319",37120:"669b0b95",37181:"deb190e6",37209:"4980c4fa",37274:"02371d76",37427:"baf0d4a2",37435:"b942cf8e",37456:"cab54053",37638:"fa746f0e",37737:"2db499ae",37799:"b50d6289",37874:"8e97cc15",38360:"c3a6b316",38574:"1b3816a8",38887:"e967512d",38968:"512d8cfa",39210:"75270caf",39527:"afd0cb1b",39626:"8b77e1a5",39799:"330b8ea1",39856:"e0c8a1d6",40176:"a2e2478b",40268:"1de77d44",40280:"07e96687",40332:"cd8c9fbc",40381:"050638ff",40548:"67c4a832",40556:"1ee9c635",40597:"2d68e16b",40804:"84810683",41661:"1280552c",41856:"2f989304",42251:"55ac83aa",42349:"81ce5e0c",42412:"8328e7f1",42531:"4f8f7d74",42541:"868893ac",42958:"14a767b9",43086:"bb40a730",43521:"8d1ec4c5",43699:"186444dd",43905:"5653e10f",43996:"277d517a",44157:"283e63f8",44911:"677d6777",44953:"78b226dc",44988:"4be7e5d0",45048:"cad77a40",45112:"31d20e13",45190:"1d970e9f",45452:"5bcd0da1",45566:"8fa4918e",45702:"1074bb26",45939:"b1212599",45977:"acfb9a5e",45980:"ffecbc46",46074:"b198cec2",46103:"ccc49370",46353:"77faeb23",46526:"7f6bbd73",46564:"3aef9c59",46667:"ed03f5d4",46858:"e2c3bc5f",46940:"d4e06cde",46953:"58cbfb5a",46989:"e802237a",47077:"554f4bd3",47214:"326c0af7",47642:"741a738c",48104:"c333ed9f",48338:"4f3e32ec",48610:"6875c492",48632:"a555a233",48690:"5ffd6909",49158:"f50ed874",49208:"fd69b207",49517:"6af54863",49558:"ef9227ec",49808:"d0ac1c30",50003:"6850cfb6",50103:"65e8e75e",50258:"5575e2a8",50339:"cb128a98",50403:"de387681",50481:"af4b7be4",50533:"e19d86f2",50576:"e09d62f1",50758:"853ddb5d",50813:"f77b4e82",50988:"186b492d",51035:"9c1835bf",51065:"49dd7e39",51149:"cd910537",51161:"2127c55a",51296:"f7765531",51652:"708cde07",51818:"75ae40a4",51904:"c260b9a0",51917:"3f2ad086",52025:"4649e1c2",52409:"5cecf783",52535:"814f3328",52610:"1d48afb9",52739:"734563d5",52765:"933a49e7",52853:"1c7cc376",52943:"a9bffa51",53003:"10647879",53202:"68987ad2",53244:"869c9c27",53608:"9e4087bc",53787:"bc4d6fc9",53962:"3a574a7f",54239:"77354108",54246:"c942fcda",54468:"1a20bc57",54980:"e57c1bef",55191:"bb8cf488",55494:"38eccbde",55501:"7f2f79c2",55547:"45062c3f",55606:"b1be30d1",55776:"341bd61f",55797:"e4608243",55870:"c302b7f6",55889:"080066ed",56123:"4ef508e9",56147:"92e661e4",56522:"406b186f",56757:"fbcdd0ee",56852:"30995fb4",57019:"479e2d15",57178:"3de04134",57463:"f2f7c8b6",57684:"86b52bb0",57698:"8b0d3319",57973:"e7215565",58193:"aacecf0a",58290:"cc8c6322",58452:"8cbfacc6",58509:"507e1a4c",58701:"4e3d1533",59139:"5153790b",59334:"247783bb",59424:"133b4df0",59650:"4646a8a4",59671:"0e384e19",59891:"3124230e",60330:"13a2a5ae",60379:"271f7228",60595:"a9d6ad8a",60712:"699a47d0",60771:"22ef07eb",60992:"352bf367",61247:"83dc33dd",61484:"20a7d97c",61536:"1e613d61",61624:"4ef2e3ea",61887:"f9ed4079",62126:"c3a5a911",62339:"17896441",62405:"a8faecbd",62650:"0f427d40",63253:"a69ebe5f",63445:"92af7f04",63792:"bd83a8c8",63812:"45a8dc52",63816:"0475f9cc",63870:"0b31129f",63952:"d493c3e8",64013:"01a85c17",64195:"c4f5d8e4",64477:"3cf47477",64693:"1e5c0d86",64709:"f3954950",64880:"6a3a4a87",64887:"a8c84974",64947:"460d220e",65146:"069211c5",65341:"0a451647",65442:"444d5ed4",65688:"9afa6cde",65826:"203262b0",66070:"25057d02",66102:"36ded102",66385:"59b068d1",66433:"4656ed6c",66526:"e6102057",66609:"0c8b9afa",66618:"802db911",66766:"9e339b71",66833:"f24f0ea5",66863:"1cd349ba",67492:"aa9c90f7",67544:"aea1a378",67547:"9b3efc75",67560:"36a143db",68175:"c831614b",68271:"1c091541",68618:"5f16d91a",69048:"7b2e7fac",69081:"97a69baf",69104:"acd02317",69159:"e6b3976f",69276:"4c2772ab",69279:"776f5947",69962:"8e10bb86",70289:"b2b9b866",70351:"c6fe0741",70363:"6f4af312",70486:"6d30ac0a",70970:"77e868d9",71061:"c968f1a3",71592:"3685f909",72054:"f64a2f66",72099:"eae3fa10",72216:"ba98d3a9",72514:"6c5c20d6",72543:"61428574",72937:"193bf152",72978:"56b2a431",73032:"13c3e084",73446:"450c527f",73745:"1954649e",73881:"671081f5",74002:"9bb632fa",74083:"68cedfd5",74089:"2091582f",74113:"89ebc8eb",74134:"d5e8cc91",74198:"b3198ac5",74300:"419e73d5",74697:"26c54994",74888:"1a43e018",75075:"0dffb83e",75558:"3cc638e0",75878:"c08d79e7",76045:"a13b9d31",76126:"d060dfa6",76130:"6ccb7d3e",76575:"6d0c6131",76660:"c76eb7d5",76786:"8e37cc44",76791:"06b1e92d",76874:"771488fd",76967:"e2548c92",77012:"9e1f7384",77055:"f5d5b73d",77169:"e4f4dec4",77217:"af1b4014",77645:"a7434565",78046:"2fd22369",78082:"fcfb247d",78314:"10915d97",78436:"c541efc4",78489:"c98ac358",78659:"890759ea",78823:"c0daf1e6",78914:"1a98f2d5",78941:"88b398be",79495:"62b71d38",79559:"7356945f",79697:"fae4f913",79993:"fa56ac42",80053:"935f2afb",80448:"d1e2a1e4",80505:"342f32a4",80546:"a1b695db",80867:"6620b2c9",81155:"5f6910fd",81186:"e5e83212",81194:"cf61eed5",81312:"6bb55549",81448:"927acbbf",81475:"1ddde2c7",81487:"70b40441",81511:"208114e0",81649:"92bdb8f4",81757:"5fa25c43",81938:"6310fd48",82024:"8ed61535",82276:"46bd2088",82461:"dfd4abb8",82818:"5f1113d5",82838:"cd7cc5b2",82863:"eb4eb408",83006:"87d0342b",83054:"b85e9339",83278:"09b23959",83834:"07987921",83897:"500fb0e6",83988:"e0ecd9df",84568:"3e171e78",84726:"08e43170",84728:"903c4f6f",84761:"ab0b43f0",84784:"f7f75c2e",84935:"bab68f7e",85040:"f5ff4ddf",85528:"69802526",85586:"5f0cc255",85634:"a6748c3f",85744:"c4816122",85960:"cc826739",86179:"22ff6767",86236:"565d3b3a",86565:"4224ef00",86621:"519cbeed",86719:"4256eaf4",86904:"fec351f2",86984:"2bf9c0b5",87070:"3bc428dc",87233:"1ff7f4b8",87393:"ede583c5",87494:"90377122",87557:"4cbb880b",87644:"81e594d4",87746:"6fa39f86",87802:"4f0c7b96",87991:"09d8949d",88180:"eec2ee36",88529:"879bb888",88652:"39e9cb37",88795:"27e17dc0",88941:"2d1a235c",89007:"e4a50065",89364:"96781795",89501:"f48233a1",89642:"36788d15",89903:"ffc1986f",89959:"8435c5ad",90076:"c5495231",90111:"073713d1",90288:"82092fc0",90451:"e7db057b",90500:"cc135780",90533:"b2b675dd",90558:"a12f1ef9",90560:"5426ac11",90794:"b5efef1d",91374:"c2be96f9",91552:"b3022338",91637:"a3f9e536",91705:"524c9166",91878:"e866f873",91910:"d879ea04",92133:"bebb13e1",92648:"fca34444",92755:"9d36e504",93089:"a6aa9e1f",93233:"998a3ebe",93729:"f0884d43",94218:"216be533",94349:"09a69b27",94498:"10eaf6bf",94610:"dc62dd6c",94831:"4b75119c",95358:"7f0b639b",95520:"608d3bbe",95676:"a54058d6",95697:"c4fd3761",95752:"7b20acf0",95960:"dbbfaad4",95990:"ed48b979",95997:"8977ff65",96110:"90e38f0d",96218:"a9808524",96505:"f08e269d",96545:"40fd761e",96857:"5f87d652",97092:"661132b8",97470:"783bde4f",97595:"960d9980",97847:"f7d07906",97901:"60e9e07a",97920:"1a4e3797",97963:"22885a83",98216:"15d749b5",98418:"28411ba4",98646:"b4a58d82",99217:"6bf3b56c",99295:"fc5ff77a",99914:"b37711b1"}[e]||e)+"."+{75:"ba209844",160:"e5da974a",640:"66ba63be",740:"f8fe0687",936:"4c8c7358",977:"37a66585",1080:"75839613",1140:"f6d14862",1177:"082777f8",1589:"281acca6",1685:"99feb5c1",1958:"7bcf4b1e",2110:"0f784096",2232:"9658d2f9",2365:"49f92594",3109:"c6d9d07d",3112:"02619aa3",3132:"80676a41",3211:"03e41ee3",3473:"1483dcde",3673:"bc92d771",3812:"93a67fef",3818:"957afbad",4100:"22290676",4213:"7edb5230",4474:"de961bc6",4652:"e372b05b",4804:"7285b55a",4825:"83c6321a",4832:"52c1e025",4972:"4be77f28",4993:"1cf962f5",5099:"57e37f03",5195:"160f7aa9",5332:"1cb5798a",5484:"07e4fd90",5498:"013865d3",5547:"67f73252",5566:"92629b9f",5670:"c10c0fba",6136:"7a6557d6",6249:"a265052e",6286:"11710a8b",6367:"d9135d74",6450:"36add7bd",6535:"8270bf8b",6536:"31011f4a",6819:"f4f5903f",6895:"dcda0488",6905:"2739d39e",7127:"5574af70",7330:"4ef4ab4a",7332:"b857ce44",7432:"f8a6fc8e",7463:"d6f0a042",7483:"ca4c6e7e",7567:"23918f0c",7694:"4e9066f1",7911:"e487fa71",8012:"32969560",8076:"0a4bf576",8097:"ef3d21b7",8631:"b7382975",8697:"8ca7c083",8765:"0a76d68f",8773:"4d81694a",8985:"cb5697e6",9084:"9d09db61",9112:"c2af2ec2",9260:"b001f541",9562:"b89eeffa",9966:"1e880894",9985:"8d706c2f",10001:"a742282e",10099:"fb91e017",10195:"d332ee62",10309:"ca3e9203",10660:"e87ddd34",10924:"3dea7a77",10996:"79c1c7a4",11080:"a9a57c7f",11168:"84877c73",11258:"38d7d039",11439:"ec1f41be",11477:"ebd44df7",11483:"f700070c",11509:"c1c793e8",11702:"a58fba97",11713:"d0191fd9",11953:"4533979a",11990:"6f1e152a",12165:"24d1d113",12229:"a1555f6a",12306:"45f74160",12573:"7f8af31d",12620:"6708a580",12797:"3db0e00c",12831:"1c8512de",13633:"e10e3a7d",13812:"fdd71593",13834:"a3cd23ee",13986:"75337b20",14050:"fd1f6f94",14074:"e47f1d04",14419:"cecb2efc",14601:"9db1b629",14687:"6c5cdfd7",14694:"00f4a86d",14753:"2a30d1e8",14817:"b74f703c",15015:"c4993e25",15288:"7666a3a7",15795:"d77e68a6",15847:"0e0140ca",16057:"63dc81f9",16203:"9d8c0e01",16679:"da918e72",16785:"b816d1e7",16819:"ede6e28c",17191:"d56d1632",17238:"c392ec24",17388:"9854912e",17470:"955454d6",17753:"fcd1093c",17773:"e83467c4",17895:"d17e7953",18047:"14fe704d",18073:"37fd2b33",18141:"86ccdae3",18308:"dd57902b",18384:"a31beba8",18442:"a54c3abe",18527:"4cab4fe6",18894:"d7313338",18902:"33bfb34f",18918:"bbc62c4f",18967:"de7564ae",19014:"a07ef9b7",19262:"772e85d3",19487:"378cff79",19624:"4ea75e07",19692:"c62e520f",19835:"7ce8fcaa",19873:"fdfeacc6",19881:"9f8eef5f",19923:"b28cdacc",20396:"00139995",20512:"6b4c3c2e",20868:"0bdb5763",21111:"748e813f",21151:"cb569f4e",21217:"67f4e0be",21271:"9738f32d",21356:"50058654",21481:"c2468aba",21665:"01838e5d",21685:"af219096",22004:"8a0a8205",22226:"58eec50e",22235:"605b8183",22409:"fcfa855e",22605:"c23a1523",22623:"f9089edc",22740:"c652ea79",22881:"c27befbd",23024:"ea55a397",23046:"baec1de5",23067:"38984a4e",23497:"afda66d9",23679:"c52bebdb",23872:"64f3f6c3",23913:"38adccf3",24067:"1a3e19c1",24219:"4f178d44",24378:"8dbbcf7f",24685:"4a76270b",24688:"655e148c",24742:"cfc45767",24857:"68f07ba6",24869:"63acd6ab",24883:"0cb8c08d",25035:"3f669cd3",25048:"86669071",25294:"0ed9bd64",25315:"dd65f827",25857:"40b1b5e0",25903:"7b117143",25920:"3819e594",26090:"bf670a25",26723:"85c42d3d",26920:"fac27bc2",27102:"e72af470",27385:"0fff7ec2",27747:"7aa0b2a4",27800:"9abc5834",27864:"3ad11aa4",27865:"e9de5791",27918:"10e3c711",28283:"5d99ae9a",28573:"9883bfdc",28698:"4489cbf4",29049:"e57945f9",29354:"8dcfc928",29514:"efc67b9d",29814:"5aeec07a",29881:"93017777",29889:"36ef29d6",30117:"28998c3f",30636:"d18def78",30674:"d8b680cd",31109:"a4dece73",31114:"2d583c5a",31158:"be3a3ab8",31262:"561bbfb1",31326:"e5cd2764",31350:"797cdcb4",31466:"0024b86f",31552:"47e94f50",31800:"500713fd",31883:"b11a41ca",31955:"5f7835e7",32107:"b21796cb",32567:"3e10a887",32661:"fd96ce67",32672:"ad43de1f",32674:"313786a6",32737:"4575b3cc",33089:"3cd29263",33731:"8f426541",33889:"b8a30553",33926:"3c751710",33947:"471b3468",34050:"6bd370e5",34229:"4ac390cb",34490:"e831d01d",34737:"9587808b",35023:"1c611029",35097:"046756fd",35257:"e473e94c",35304:"41e6617c",35349:"23860a86",35477:"920c5501",35506:"28c13d96",35755:"b0a98bd4",35955:"dca6f4d3",36425:"35abcf54",37120:"21c8837f",37181:"539e1b97",37209:"3f6b1eb8",37274:"af7acf94",37427:"92d23900",37435:"1541074d",37456:"f438cb45",37638:"f294dc4b",37737:"cffe99c8",37799:"4f98a08b",37874:"3a138488",38360:"4e90aa50",38574:"d9468674",38887:"8c09d6b0",38968:"050053fd",39210:"21d024e6",39527:"3c3976af",39626:"4b6e93e1",39799:"c2010732",39856:"4dee8915",40176:"fed6f7e1",40268:"707ebbd6",40280:"dfc9e302",40332:"2464db9c",40381:"1df00230",40548:"e713df2d",40556:"73785032",40597:"5966791a",40804:"5648c776",41661:"198a6972",41856:"b3b5f85a",42251:"6c41ce9d",42349:"1ed3bd3f",42412:"afac3f8f",42531:"2477a914",42541:"d19f7810",42958:"251ffce9",43086:"01e6fa8b",43521:"e2d37587",43699:"623b825d",43905:"18f8f180",43996:"8a577e88",44157:"fd2b5e94",44911:"1b3c5761",44953:"c9430191",44988:"ecb11f1d",45048:"da752ee4",45112:"2790a97e",45190:"f923059f",45452:"678c3dbc",45566:"d808e99d",45702:"b535f50d",45939:"79b97812",45977:"c86c9d46",45980:"005f0187",46048:"991a2a40",46074:"82417a8d",46103:"ffd73f5c",46353:"97e9bfd6",46526:"71795cd9",46564:"bc69870f",46667:"03fb924e",46858:"cc97ccbe",46940:"1197d67b",46945:"a8617603",46953:"00fb7ea2",46989:"a46da357",47077:"e53f90f4",47214:"a855ad40",47642:"ade194dc",47724:"885efeb6",48104:"24c25af1",48338:"320ec0e2",48610:"9abf5873",48632:"1034d7ea",48690:"bc3070bc",49158:"71fb8b88",49208:"abbc6821",49517:"46b2802e",49558:"8baf268e",49808:"2ecf26cf",50003:"9cdf056c",50103:"aa33e6f8",50258:"e4b80dbe",50339:"01a76df1",50403:"ed7faa9b",50481:"79ba5b89",50533:"570ae3f5",50576:"e639c687",50758:"d9924384",50813:"2f17a7e6",50988:"559e5ae8",51035:"d24439d0",51065:"f2c75391",51149:"5465ea56",51161:"71d23e39",51296:"09b058e6",51652:"e6ecc0bc",51818:"87dad8e4",51904:"6487b1c8",51917:"d26609ba",52025:"cb7bfba1",52409:"48c2215f",52535:"27ffb074",52610:"174e1fb1",52739:"80299de6",52765:"76c3c387",52853:"7f427d82",52943:"7c53cd0f",53003:"6b3346f5",53202:"18dbfa73",53244:"559e1188",53608:"58cce4c5",53787:"22734071",53962:"c958b7b1",54239:"7ddd28a4",54246:"8b0f306b",54468:"b6bae94c",54980:"0df5011c",55191:"b060dc5a",55494:"28104b5e",55501:"7bc602e1",55547:"6a2eb3d8",55606:"aa0d9394",55776:"95897bd5",55797:"73992098",55870:"8a7b6ef6",55889:"02ff0ca7",56123:"0451191d",56147:"aded2add",56522:"2875452c",56757:"92b72a3c",56852:"a9f9e0e8",57019:"8611871f",57178:"a32d62c7",57463:"27ee395d",57684:"49b84bd0",57698:"406ba3c5",57973:"3dbf42b1",58193:"54edadad",58290:"0d6d8221",58452:"769a7d66",58509:"e4cfc3cb",58701:"6355db4b",59139:"94bd35c1",59334:"bc97b4af",59424:"a2394b8c",59650:"d3e21286",59671:"b7911a22",59891:"a6c6b226",60330:"4ddc6504",60379:"37f65d99",60595:"33d164e1",60712:"9ba741e0",60771:"806bb9bb",60992:"f92f1ba6",61247:"d8812a42",61426:"b005faab",61484:"9070572a",61536:"93aaed06",61624:"e2e0b33e",61887:"370bfec7",62126:"2e6842cc",62339:"d08a6152",62405:"fb708fd1",62650:"baeae442",63253:"032ad655",63445:"41155df7",63792:"f4a5b04e",63812:"736962b3",63816:"cfdfa4e6",63870:"5ddc4883",63952:"56dca9b6",64013:"599e8d04",64195:"9df9af76",64477:"880366e2",64693:"3591a451",64709:"0a02c2db",64880:"5483943f",64887:"93acfbce",64947:"a84b1560",65146:"5284aa98",65341:"074c1878",65442:"4b462267",65688:"c39dea2f",65826:"a257e4d2",66070:"30b7f98a",66102:"f562315c",66385:"a981a7d1",66433:"96b14f14",66526:"a30fc757",66609:"a83f3bad",66618:"9e6de4b0",66766:"cf3324fc",66833:"9539154b",66863:"bc4ddb97",67492:"7b1b3da8",67544:"44f25981",67547:"6aa55282",67560:"70abe5ee",68175:"8e5c2bc6",68271:"b6fb9f60",68618:"1b792ae9",69048:"a6d8ee91",69081:"1cbe58f2",69104:"434ddf10",69159:"22ecb9eb",69276:"79546110",69279:"2c16191a",69962:"407e25af",70289:"087dc897",70351:"1fbf6b6d",70363:"213a673d",70486:"d1979806",70970:"899290ee",71061:"aa73d1fe",71592:"ea4b6e59",72054:"3beef3e6",72099:"8b5339a0",72216:"61f5e878",72514:"30c2305a",72543:"8a095fb6",72937:"41d3a8ef",72978:"5b5fb654",73032:"d4406492",73446:"fbe9c3a0",73745:"a1b09a88",73881:"b03ec57a",74002:"3c96ec89",74083:"51c6b576",74089:"1774a653",74113:"534e16f6",74134:"62cb2464",74198:"8f49a086",74300:"90208db5",74697:"ec35cd16",74888:"e8afaf87",75075:"7a8a6bb7",75558:"46fcfd6b",75878:"6106dfbb",76045:"7150d692",76126:"caff1910",76130:"3cebd4b0",76575:"0d031bbc",76660:"c0edfa51",76786:"c01123e3",76791:"18caed4b",76874:"8a860019",76967:"2b7b93c5",77012:"424136c5",77055:"52d64481",77169:"c85f7414",77217:"73da5c9e",77645:"0d9ea538",78046:"b61f3e11",78082:"bb2abd1d",78314:"fc30bb20",78436:"bad65e65",78489:"07d0924a",78659:"5a1a8dd3",78823:"ca7a733a",78914:"ee403c7d",78941:"be3ab0f3",79134:"2cb1d474",79495:"e788506f",79559:"c43d5cea",79697:"662c6265",79993:"28e7c668",80053:"a59959ca",80448:"7bbda511",80505:"88574b97",80546:"5c09c361",80867:"e813d886",81155:"227074b2",81186:"97190397",81194:"6dd7db62",81312:"61e2a625",81448:"4d897493",81475:"7ff082cb",81487:"ff495c77",81511:"8c18480e",81649:"2b9a813c",81757:"a6e99358",81938:"c77cdb8f",82024:"a9006cb4",82276:"7b5e03b1",82461:"6d871fc9",82818:"c783e155",82838:"552dc70e",82863:"91149d10",83006:"91c44e75",83054:"1d15a998",83278:"82732e22",83834:"68361e02",83897:"345be9af",83988:"37c462d0",84568:"ec209866",84726:"1207266a",84728:"04a0b258",84761:"13de1572",84784:"5e119fa7",84935:"bc522665",85040:"0020a767",85528:"2f3d83b3",85586:"cb2a9a88",85634:"05248a84",85744:"6d83ff55",85960:"bbc10bb5",86179:"bf6d094e",86236:"be8b499c",86565:"93c3b976",86621:"7000eb75",86719:"4d003468",86904:"148fb722",86984:"33aa1a23",87070:"563e9013",87233:"bfc96bfb",87393:"3c6eba01",87494:"75e0e25a",87557:"708c5610",87644:"89b134ce",87746:"8ad7b419",87802:"f2a62bb2",87991:"ef36b765",88180:"b4f95828",88529:"90290f03",88652:"3fc6ee75",88795:"ee1fe83a",88941:"b4cd78bd",89007:"e5688e55",89364:"b1698349",89501:"45b3f8b8",89642:"92e1f794",89903:"a08599c5",89959:"26fa247a",90076:"8ad4604b",90111:"01869f8f",90288:"59cda47e",90451:"f8fb81e0",90500:"419e0882",90533:"4d78a45c",90558:"f40c67ff",90560:"7bc975ec",90794:"673dbef2",91374:"15386fc1",91552:"87f75dd0",91637:"5add28d0",91705:"a9673f3e",91878:"795bfb68",91910:"9131b612",92133:"1737bce4",92648:"3ee0cca8",92755:"332a5792",93089:"65e2c549",93233:"9a491502",93729:"54529f6c",94218:"6304aed3",94349:"46b52a8a",94498:"a0e25775",94610:"9f88de9e",94831:"979e575e",95358:"ad3493d9",95520:"f8165fd1",95676:"8d617ccd",95697:"c3b383d2",95752:"8a1e51fb",95960:"69129f52",95990:"879fe54a",95997:"17a3ae54",96110:"e3d5e26c",96218:"88e79e1b",96316:"e60530d6",96505:"ee8f3356",96545:"f9862151",96857:"4dc55093",97092:"1a30c487",97470:"b3ded8b0",97595:"87836ff0",97847:"a3812acc",97901:"0a8cc66e",97920:"d35141b1",97963:"5ac2d968",98216:"c6441497",98418:"268a13fc",98646:"35aa0daf",99217:"78769dc1",99295:"61a5d491",99914:"b4809dd8"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,f)=>Object.prototype.hasOwnProperty.call(e,f),c={},a="@openfn/docs:",r.l=(e,f,d,b)=>{if(c[e])c[e].push(f);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var a=c[e];if(delete c[e],t.parentNode&&t.parentNode.removeChild(t),a&&a.forEach((e=>e(d))),f)return f(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={10647879:"53003",17896441:"62339",61428574:"72543",69802526:"85528",77354108:"54239",84810683:"40804",90377122:"87494",96781795:"89364","1ef0096b":"75","6f69b847":"160",c85c4b26:"640",fa811662:"740","885e9765":"936",b973dcfd:"977","16aa9458":"1080","2bb14bf0":"1140",ceb3f8e5:"1177","3e1cef53":"1589","2f06f2be":"1685","6479f562":"1958",bd16d6fd:"2110",c64ebc62:"2232",f38541c0:"2365",f2a21e1f:"3109","97bb0f58":"3112","9915a91d":"3132","1ffdd7de":"3211",aae0663e:"3673","9d4548fb":"3812",a22153eb:"3818",c6cf652c:"4100","12ebab0f":"4213",f615a51d:"4474",dd45a7f1:"4652","60a00565":"4804","2d52fc42":"4825",ece86388:"4832","81c93763":"4993",f30a3d1e:"5099",c7bf2a3a:"5195",d3433875:"5332","4cd34504":"5484",d7f657c9:"5498",da184dc1:"5547","1578031d":"5566",fcdeb347:"5670","9da9a498":"6136","0564f87a":"6249",e19908fc:"6286","6de65b44":"6367","5ede04c0":"6450","3d8d21df":"6535",f2ca2c55:"6536","39906be8":"6819",dd13b434:"6895","13a70009":"6905",cfc8229c:"7127",d9cb599e:"7330","1a848321":"7332","954fe712":"7432","21b56577":"7463",a6a264d3:"7483",f77d5673:"7567",aa1b4e53:"7694","54e91ab5":"7911",c0f0637e:"8012","035d0344":"8076","20501ae4":"8097","0210b704":"8631",cb759659:"8697","4aaa0f44":"8765",da6f85e6:"8773","48052ce1":"8985","0a6f29e5":"9084",f93f95da:"9112",e150ab3e:"9260","45b0764f":"9562","60ab92b2":"9966","237f254e":"9985","8eb4e46b":"10001",f5f1347d:"10099","1dd16762":"10195","60f1bcf9":"10309","437618c4":"10660","5e450bcf":"10924",caaf01d4:"10996","11e6d144":"11168",d40361ad:"11258","33e1509d":"11439",b2f554cd:"11477","5b5d0fd6":"11483",d5b44e8d:"11509",ced1473c:"11702",a7023ddc:"11713","1e9ef283":"11953","30ddeb5e":"11990",d523bad7:"12165","964386c1":"12229","3d5c28b0":"12306","5dfb628f":"12573","274548c6":"12620",cdfa78cc:"12797","3062d10d":"12831","5e1c9ef2":"13633","207ee67a":"13812",c4643d70:"13834","55cceff7":"13986","2e7fdd6f":"14050",bd6858b9:"14074","8c2c25e6":"14419","81eac5d3":"14601","5610898c":"14687","29a36bd7":"14694",ce5aebf3:"14753","6aa8733e":"14817","2158648d":"15015","0452e1bb":"15288","5a047bf8":"15795",f6525c87:"15847",b083e7a6:"16057","3a232380":"16203",ff6530e5:"16679",a7ce3f25:"16785","9ee43f4e":"16819","89f741ca":"17191","45b3f811":"17238","97feb4e9":"17388","1abd0bca":"17470","6680323d":"17753","285ad496":"17773","112be523":"17895","9997aecf":"18047","92009f0a":"18073",febd0338:"18141","83170ae2":"18308","614beed4":"18384","92999a1c":"18442","83218c8a":"18527","0e04b402":"18902","24a5cb68":"18918","7a801707":"18967","50711b5c":"19014","80a6599d":"19262","8f8e3a33":"19624",ea07b8e0:"19692",e202e776:"19835","14ee1fe9":"19873","853164ef":"19881","006fd865":"19923","7ee80f24":"20396","5f265cf4":"20512","3d8bf3ab":"20868",fba9f625:"21111","14ad7d65":"21151",a582c3a1:"21217","8310c4f6":"21271","0d1eeea0":"21356","919ee986":"21481",e56b7427:"21665","03cd8e1c":"21685",f5466782:"22226","3947b16e":"22235","5e1dea11":"22409","55bb925b":"22605",ecfe8209:"22623",e436cfad:"22740",e175f9f3:"22881","665c23b8":"23024","192eff61":"23046","57fbf2bd":"23067",b3879250:"23497","12f62dc2":"23679",b5bd7f9b:"23872","3874af3e":"23913","8660c4b6":"24067","5e95c167":"24219",de4aaf36:"24378",a0799a2b:"24685","9784261d":"24688","833f2ec0":"24742",cc3db60c:"24857","90d535c2":"24869","9eb4e0db":"24883","1af9c7d3":"25035",a20e070a:"25048","73578edf":"25294",e310b146:"25315","5f0700c5":"25857","2c828998":"25903",cce9ad1c:"25920",d9a6c9f9:"26090","60194cf2":"26723",d98b9f83:"26920",e8b14a65:"27102","96ecf107":"27385","1e27a2df":"27747",b1ecb9ed:"27800",ce789ca4:"27864",bc07532a:"27865","06a5ba8b":"27918",d776f897:"28283","233cd645":"28573",c77a0576:"28698","7f9948f6":"29049",c2d56c21:"29354","1be78505":"29514",db6367fb:"29814",be818d17:"29881","471dcc6f":"29889","385718d4":"30117","747a690f":"30636","1140a058":"30674",dff30c03:"31109",f13d29f3:"31114",f2b4d23e:"31158","2dcd28d2":"31262","7a35092c":"31326","5fb0ec3e":"31350","4aa43dae":"31552",c1dc13d0:"31800","3c41cfdf":"31883",ba11d205:"31955","916b8fda":"32107",dc14f0c4:"32567",e1d93203:"32661","85f847a7":"32672","6cb21577":"32674",afbc2852:"32737","20a5a532":"33089","20f8de15":"33731","5de53f8e":"33889",c4429c79:"33926",c6dfd94e:"33947","3fa9568c":"34050","199fcd36":"34229","33844ff3":"34490","31b72ec5":"34737",d3797a8b:"35023",def6dfb9:"35097","1f86786a":"35257","1e26ddab":"35304",ef4e0518:"35349",c0908e63:"35477","6738a51a":"35506",c275b7b1:"35755",bb2ae6bf:"35955","984b8319":"36425","669b0b95":"37120",deb190e6:"37181","4980c4fa":"37209","02371d76":"37274",baf0d4a2:"37427",b942cf8e:"37435",cab54053:"37456",fa746f0e:"37638","2db499ae":"37737",b50d6289:"37799","8e97cc15":"37874",c3a6b316:"38360","1b3816a8":"38574",e967512d:"38887","512d8cfa":"38968","75270caf":"39210",afd0cb1b:"39527","8b77e1a5":"39626","330b8ea1":"39799",e0c8a1d6:"39856",a2e2478b:"40176","1de77d44":"40268","07e96687":"40280",cd8c9fbc:"40332","050638ff":"40381","67c4a832":"40548","1ee9c635":"40556","2d68e16b":"40597","1280552c":"41661","2f989304":"41856","55ac83aa":"42251","81ce5e0c":"42349","8328e7f1":"42412","4f8f7d74":"42531","868893ac":"42541","14a767b9":"42958",bb40a730:"43086","8d1ec4c5":"43521","186444dd":"43699","5653e10f":"43905","277d517a":"43996","283e63f8":"44157","677d6777":"44911","78b226dc":"44953","4be7e5d0":"44988",cad77a40:"45048","31d20e13":"45112","1d970e9f":"45190","5bcd0da1":"45452","8fa4918e":"45566","1074bb26":"45702",b1212599:"45939",acfb9a5e:"45977",ffecbc46:"45980",b198cec2:"46074",ccc49370:"46103","77faeb23":"46353","7f6bbd73":"46526","3aef9c59":"46564",ed03f5d4:"46667",e2c3bc5f:"46858",d4e06cde:"46940","58cbfb5a":"46953",e802237a:"46989","554f4bd3":"47077","326c0af7":"47214","741a738c":"47642",c333ed9f:"48104","4f3e32ec":"48338","6875c492":"48610",a555a233:"48632","5ffd6909":"48690",f50ed874:"49158",fd69b207:"49208","6af54863":"49517",ef9227ec:"49558",d0ac1c30:"49808","6850cfb6":"50003","65e8e75e":"50103","5575e2a8":"50258",cb128a98:"50339",de387681:"50403",af4b7be4:"50481",e19d86f2:"50533",e09d62f1:"50576","853ddb5d":"50758",f77b4e82:"50813","186b492d":"50988","9c1835bf":"51035","49dd7e39":"51065",cd910537:"51149","2127c55a":"51161",f7765531:"51296","708cde07":"51652","75ae40a4":"51818",c260b9a0:"51904","3f2ad086":"51917","4649e1c2":"52025","5cecf783":"52409","814f3328":"52535","1d48afb9":"52610","734563d5":"52739","933a49e7":"52765","1c7cc376":"52853",a9bffa51:"52943","68987ad2":"53202","869c9c27":"53244","9e4087bc":"53608",bc4d6fc9:"53787","3a574a7f":"53962",c942fcda:"54246","1a20bc57":"54468",e57c1bef:"54980",bb8cf488:"55191","38eccbde":"55494","7f2f79c2":"55501","45062c3f":"55547",b1be30d1:"55606","341bd61f":"55776",e4608243:"55797",c302b7f6:"55870","080066ed":"55889","4ef508e9":"56123","92e661e4":"56147","406b186f":"56522",fbcdd0ee:"56757","30995fb4":"56852","479e2d15":"57019","3de04134":"57178",f2f7c8b6:"57463","86b52bb0":"57684","8b0d3319":"57698",e7215565:"57973",aacecf0a:"58193",cc8c6322:"58290","8cbfacc6":"58452","507e1a4c":"58509","4e3d1533":"58701","5153790b":"59139","247783bb":"59334","133b4df0":"59424","4646a8a4":"59650","0e384e19":"59671","3124230e":"59891","13a2a5ae":"60330","271f7228":"60379",a9d6ad8a:"60595","699a47d0":"60712","22ef07eb":"60771","352bf367":"60992","83dc33dd":"61247","20a7d97c":"61484","1e613d61":"61536","4ef2e3ea":"61624",f9ed4079:"61887",c3a5a911:"62126",a8faecbd:"62405","0f427d40":"62650",a69ebe5f:"63253","92af7f04":"63445",bd83a8c8:"63792","45a8dc52":"63812","0475f9cc":"63816","0b31129f":"63870",d493c3e8:"63952","01a85c17":"64013",c4f5d8e4:"64195","3cf47477":"64477","1e5c0d86":"64693",f3954950:"64709","6a3a4a87":"64880",a8c84974:"64887","460d220e":"64947","069211c5":"65146","0a451647":"65341","444d5ed4":"65442","9afa6cde":"65688","203262b0":"65826","25057d02":"66070","36ded102":"66102","59b068d1":"66385","4656ed6c":"66433",e6102057:"66526","0c8b9afa":"66609","802db911":"66618","9e339b71":"66766",f24f0ea5:"66833","1cd349ba":"66863",aa9c90f7:"67492",aea1a378:"67544","9b3efc75":"67547","36a143db":"67560",c831614b:"68175","1c091541":"68271","5f16d91a":"68618","7b2e7fac":"69048","97a69baf":"69081",acd02317:"69104",e6b3976f:"69159","4c2772ab":"69276","776f5947":"69279","8e10bb86":"69962",b2b9b866:"70289",c6fe0741:"70351","6f4af312":"70363","6d30ac0a":"70486","77e868d9":"70970",c968f1a3:"71061","3685f909":"71592",f64a2f66:"72054",eae3fa10:"72099",ba98d3a9:"72216","6c5c20d6":"72514","193bf152":"72937","56b2a431":"72978","13c3e084":"73032","450c527f":"73446","1954649e":"73745","671081f5":"73881","9bb632fa":"74002","68cedfd5":"74083","2091582f":"74089","89ebc8eb":"74113",d5e8cc91:"74134",b3198ac5:"74198","419e73d5":"74300","26c54994":"74697","1a43e018":"74888","0dffb83e":"75075","3cc638e0":"75558",c08d79e7:"75878",a13b9d31:"76045",d060dfa6:"76126","6ccb7d3e":"76130","6d0c6131":"76575",c76eb7d5:"76660","8e37cc44":"76786","06b1e92d":"76791","771488fd":"76874",e2548c92:"76967","9e1f7384":"77012",f5d5b73d:"77055",e4f4dec4:"77169",af1b4014:"77217",a7434565:"77645","2fd22369":"78046",fcfb247d:"78082","10915d97":"78314",c541efc4:"78436",c98ac358:"78489","890759ea":"78659",c0daf1e6:"78823","1a98f2d5":"78914","88b398be":"78941","62b71d38":"79495","7356945f":"79559",fae4f913:"79697",fa56ac42:"79993","935f2afb":"80053",d1e2a1e4:"80448","342f32a4":"80505",a1b695db:"80546","6620b2c9":"80867","5f6910fd":"81155",e5e83212:"81186",cf61eed5:"81194","6bb55549":"81312","927acbbf":"81448","1ddde2c7":"81475","70b40441":"81487","208114e0":"81511","92bdb8f4":"81649","5fa25c43":"81757","6310fd48":"81938","8ed61535":"82024","46bd2088":"82276",dfd4abb8:"82461","5f1113d5":"82818",cd7cc5b2:"82838",eb4eb408:"82863","87d0342b":"83006",b85e9339:"83054","09b23959":"83278","07987921":"83834","500fb0e6":"83897",e0ecd9df:"83988","3e171e78":"84568","08e43170":"84726","903c4f6f":"84728",ab0b43f0:"84761",f7f75c2e:"84784",bab68f7e:"84935",f5ff4ddf:"85040","5f0cc255":"85586",a6748c3f:"85634",c4816122:"85744",cc826739:"85960","22ff6767":"86179","565d3b3a":"86236","4224ef00":"86565","519cbeed":"86621","4256eaf4":"86719",fec351f2:"86904","2bf9c0b5":"86984","3bc428dc":"87070","1ff7f4b8":"87233",ede583c5:"87393","4cbb880b":"87557","81e594d4":"87644","6fa39f86":"87746","4f0c7b96":"87802","09d8949d":"87991",eec2ee36:"88180","879bb888":"88529","39e9cb37":"88652","27e17dc0":"88795","2d1a235c":"88941",e4a50065:"89007",f48233a1:"89501","36788d15":"89642",ffc1986f:"89903","8435c5ad":"89959",c5495231:"90076","073713d1":"90111","82092fc0":"90288",e7db057b:"90451",cc135780:"90500",b2b675dd:"90533",a12f1ef9:"90558","5426ac11":"90560",b5efef1d:"90794",c2be96f9:"91374",b3022338:"91552",a3f9e536:"91637","524c9166":"91705",e866f873:"91878",d879ea04:"91910",bebb13e1:"92133",fca34444:"92648","9d36e504":"92755",a6aa9e1f:"93089","998a3ebe":"93233",f0884d43:"93729","216be533":"94218","09a69b27":"94349","10eaf6bf":"94498",dc62dd6c:"94610","4b75119c":"94831","7f0b639b":"95358","608d3bbe":"95520",a54058d6:"95676",c4fd3761:"95697","7b20acf0":"95752",dbbfaad4:"95960",ed48b979:"95990","8977ff65":"95997","90e38f0d":"96110",a9808524:"96218",f08e269d:"96505","40fd761e":"96545","5f87d652":"96857","661132b8":"97092","783bde4f":"97470","960d9980":"97595",f7d07906:"97847","60e9e07a":"97901","1a4e3797":"97920","22885a83":"97963","15d749b5":"98216","28411ba4":"98418",b4a58d82:"98646","6bf3b56c":"99217",fc5ff77a:"99295",b37711b1:"99914"}[e]||e,r.p+r.u(e)},(()=>{var e={51303:0,40532:0};r.f.j=(f,d)=>{var c=r.o(e,f)?e[f]:void 0;if(0!==c)if(c)d.push(c[2]);else if(/^(40532|51303)$/.test(f))e[f]=0;else{var a=new Promise(((d,a)=>c=e[f]=[d,a]));d.push(c[2]=a);var b=r.p+r.u(f),t=new Error;r.l(b,(d=>{if(r.o(e,f)&&(0!==(c=e[f])&&(e[f]=void 0),c)){var a=d&&("load"===d.type?"missing":d.type),b=d&&d.target&&d.target.src;t.message="Loading chunk "+f+" failed.\n("+a+": "+b+")",t.name="ChunkLoadError",t.type=a,t.request=b,c[1](t)}}),"chunk-"+f,f)}},r.O.j=f=>0===e[f];var f=(f,d)=>{var c,a,b=d[0],t=d[1],o=d[2],n=0;if(b.some((f=>0!==e[f]))){for(c in t)r.o(t,c)&&(r.m[c]=t[c]);if(o)var i=o(r)}for(f&&f(d);n - + @@ -76,7 +76,7 @@ reading-for-enjoyment initiative, which promotes reading and writing in mother tongue languages. To effectively monitor program activities and children reached across the country, Nal’ibali needed to integrate multiple data platforms.

    - + \ No newline at end of file diff --git a/blog/2020/05/31/the-new-openfn-blog.html b/blog/2020/05/31/the-new-openfn-blog.html index 0a4c5401902..b94da973789 100644 --- a/blog/2020/05/31/the-new-openfn-blog.html +++ b/blog/2020/05/31/the-new-openfn-blog.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ scale, and all of the contributors to the OpenFn blog can post in the same place. You can still follow us and receive notifications by subscribing below, and we hope you'll do so.

    For now, happy integrating!

    — Taylor

    - + \ No newline at end of file diff --git a/blog/2020/06/04/Building-Integrated-Systems-That-Just-Work.html b/blog/2020/06/04/Building-Integrated-Systems-That-Just-Work.html index fa3e64635fc..a638df4b255 100644 --- a/blog/2020/06/04/Building-Integrated-Systems-That-Just-Work.html +++ b/blog/2020/06/04/Building-Integrated-Systems-That-Just-Work.html @@ -22,7 +22,7 @@ - + @@ -95,7 +95,7 @@ Solution Overviews - OpenFn. To get all the latest OpenFn updates, like us on Facebook and follow us on Twitter.

    - + \ No newline at end of file diff --git a/blog/2020/06/04/Technology-Isnt-The-Answer.html b/blog/2020/06/04/Technology-Isnt-The-Answer.html index 8d61a5edc03..104033924dd 100644 --- a/blog/2020/06/04/Technology-Isnt-The-Answer.html +++ b/blog/2020/06/04/Technology-Isnt-The-Answer.html @@ -22,7 +22,7 @@ - + @@ -73,7 +73,7 @@ programs, and impact. So far, different organizations have integrated more than X number of technologies, including Open Data Kit (ODK), Kobo Toolbox, DHIS2, CommCare, Salesforce, custom databases, and more.

    - + \ No newline at end of file diff --git a/blog/2020/06/09/enabling-scale-at-myagro.html b/blog/2020/06/09/enabling-scale-at-myagro.html index 3efb2c19d7f..18bff6cbc9e 100644 --- a/blog/2020/06/09/enabling-scale-at-myagro.html +++ b/blog/2020/06/09/enabling-scale-at-myagro.html @@ -22,7 +22,7 @@ - + @@ -62,7 +62,7 @@ Mali.
  • With the help of OpenFn, myAgro worked with 120,000 farmers in 2019, and plans to scale towards its goal of reaching 1 million farmers by 2025.
  • myagro

    Read more about myAgro’s mission here, and stay tuned as myAgro continues to scale its OpenFn implementation.

    - + \ No newline at end of file diff --git a/blog/2020/06/10/iKapaData-Case-Study.html b/blog/2020/06/10/iKapaData-Case-Study.html index 3c6c55389d6..52f65adf61b 100644 --- a/blog/2020/06/10/iKapaData-Case-Study.html +++ b/blog/2020/06/10/iKapaData-Case-Study.html @@ -22,7 +22,7 @@ - + @@ -53,7 +53,7 @@ on CartoDB to display the locations already visited by enumerators.

    The real-time connection enabled live data monitoring for the team as iKapaData survey enumerators were conducting the survey.

    Learn more about OpenFn and SurveyCTO integrations here.

    - + \ No newline at end of file diff --git a/blog/2020/06/25/SwissTPH-case-study.html b/blog/2020/06/25/SwissTPH-case-study.html index bd7450438e2..ec28ea74e50 100644 --- a/blog/2020/06/25/SwissTPH-case-study.html +++ b/blog/2020/06/25/SwissTPH-case-study.html @@ -22,7 +22,7 @@ - + @@ -54,7 +54,7 @@ The Almanach tablet-based decision support tool supports health workers in diagnosing and treating sick children. OpenFn integrates this data with DHIS2 for real-time reporting.

    - + \ No newline at end of file diff --git a/blog/2020/07/01/KGVK-case-study.html b/blog/2020/07/01/KGVK-case-study.html index 0e73664b4f7..d501cbcab28 100644 --- a/blog/2020/07/01/KGVK-case-study.html +++ b/blog/2020/07/01/KGVK-case-study.html @@ -22,7 +22,7 @@ - + @@ -44,7 +44,7 @@ access, KGVK can more regularly evaluate and adjust its programs to better serve the needs of the Jharkhand communities it serves.

    The photo above was originally posted on the KGVK Achievements site.

    - + \ No newline at end of file diff --git a/blog/2020/07/01/african-school-of-excellence-case-study.html b/blog/2020/07/01/african-school-of-excellence-case-study.html index d24e40e9f42..a8e68251906 100644 --- a/blog/2020/07/01/african-school-of-excellence-case-study.html +++ b/blog/2020/07/01/african-school-of-excellence-case-study.html @@ -22,7 +22,7 @@ - + @@ -50,7 +50,7 @@ contact our team.

    The photo above was originally posted on the Wikimedia site under "WikiAfrica Schools training Africa School of Excellence."

    - + \ No newline at end of file diff --git a/blog/2020/07/01/airport-case-study.html b/blog/2020/07/01/airport-case-study.html index e112d5d6a85..ec856ad5982 100644 --- a/blog/2020/07/01/airport-case-study.html +++ b/blog/2020/07/01/airport-case-study.html @@ -22,7 +22,7 @@ - + @@ -52,7 +52,7 @@ staff.
  • HQ staff then use a leading industry tool (IBM Maximo) to store asset data, schedule maintenance, and perform performance analysis.
  • With real-time data syncs, OpenFn helps this airport ensure top-quality assets and service for its workers and passengers.

    - + \ No newline at end of file diff --git a/blog/2020/07/08/caris-foundation-case-study.html b/blog/2020/07/08/caris-foundation-case-study.html index cde30acf0da..3dd771babbf 100644 --- a/blog/2020/07/08/caris-foundation-case-study.html +++ b/blog/2020/07/08/caris-foundation-case-study.html @@ -22,7 +22,7 @@ - + @@ -67,7 +67,7 @@ agent, and for external reporting.” Read our interview with Jennifer here.

    The photo above was originally posted on the Caris Foundation site.

    - + \ No newline at end of file diff --git a/blog/2020/07/13/x-runner-case-study.html b/blog/2020/07/13/x-runner-case-study.html index 28b9ed80f43..f06b1bba3dc 100644 --- a/blog/2020/07/13/x-runner-case-study.html +++ b/blog/2020/07/13/x-runner-case-study.html @@ -22,7 +22,7 @@ - + @@ -51,7 +51,7 @@ services and track customer issues. Salesforce reports help to easily identify issues for X-runner staff to immediately address.

    With this integrated service system, X-runner can deliver high quality customer service and technical assistance to their customers, with no time lag.

    - + \ No newline at end of file diff --git a/blog/2020/07/26/sinapis-case-study.html b/blog/2020/07/26/sinapis-case-study.html index 5b44028d2a7..ceb7b8f8839 100644 --- a/blog/2020/07/26/sinapis-case-study.html +++ b/blog/2020/07/26/sinapis-case-study.html @@ -22,7 +22,7 @@ - + @@ -57,7 +57,7 @@ to learn more about their impact.

    The photo above was originally posted on the The Star. It features female entrepreneurs in Kenya undergoing Sinapis's finance training.

    - + \ No newline at end of file diff --git a/blog/2020/07/27/nalibali-case-study.html b/blog/2020/07/27/nalibali-case-study.html index b29a86951b7..9be01b943b4 100644 --- a/blog/2020/07/27/nalibali-case-study.html +++ b/blog/2020/07/27/nalibali-case-study.html @@ -22,7 +22,7 @@ - + @@ -60,7 +60,7 @@ their main website.

    The photo above was originally posted on the Nal'ibali Facebook page. It features children doing role play in order to practice conversation.

    - + \ No newline at end of file diff --git a/blog/2021/02/09/interoperability_for_case_referrals.html b/blog/2021/02/09/interoperability_for_case_referrals.html index e112648ca11..5c85bf4809b 100644 --- a/blog/2021/02/09/interoperability_for_case_referrals.html +++ b/blog/2021/02/09/interoperability_for_case_referrals.html @@ -22,7 +22,7 @@ - + @@ -89,7 +89,7 @@ includes supporting the efforts of social workers across the country.

    About OpenFn Group: Open Function Group (“OFG”) helps health and humanitarian interventions in 40+ countries achieve scale and improve service delivery through automation, data integration, and interoperability solutions.

    - + \ No newline at end of file diff --git a/blog/2021/03/30/digital-global-good.html b/blog/2021/03/30/digital-global-good.html index bbd3d9fe766..7e65bec64bf 100644 --- a/blog/2021/03/30/digital-global-good.html +++ b/blog/2021/03/30/digital-global-good.html @@ -22,7 +22,7 @@ - + @@ -141,7 +141,7 @@ services@openfn.org for a free consultation.

    Also, be sure to stay tuned to our blog, or subscribe to our newsletter to stay up to date with all ICT4D integration related news.

    - + \ No newline at end of file diff --git a/blog/2021/07/30/processes-and-open-source-as-choice.html b/blog/2021/07/30/processes-and-open-source-as-choice.html index cf876469667..9a315017e04 100644 --- a/blog/2021/07/30/processes-and-open-source-as-choice.html +++ b/blog/2021/07/30/processes-and-open-source-as-choice.html @@ -22,7 +22,7 @@ - + @@ -117,7 +117,7 @@ services@openfn.org for a free consultation.

    Also, be sure to stay tuned to our blog, or subscribe to our newsletter to stay up to date with all ICT4D integration related news.

    - + \ No newline at end of file diff --git a/blog/2021/10/20/the-case-for-health-information-exchange.html b/blog/2021/10/20/the-case-for-health-information-exchange.html index ded4b7ece25..af11a55619f 100644 --- a/blog/2021/10/20/the-case-for-health-information-exchange.html +++ b/blog/2021/10/20/the-case-for-health-information-exchange.html @@ -22,7 +22,7 @@ - + @@ -61,7 +61,7 @@ resources and learnings from dozens of implementations to deliver a suite of open-source documentation, implementation tools, and a templates library that fast-tracks interoperability and automation projects.

    For more information visit the links below:

    — Aicha

    - + \ No newline at end of file diff --git "a/blog/2022/06/28/Data-Integration-to-better-safeguard-the-world\342\200\231s-wildlife.html" "b/blog/2022/06/28/Data-Integration-to-better-safeguard-the-world\342\200\231s-wildlife.html" index 6b602769516..a92cdabe28e 100644 --- "a/blog/2022/06/28/Data-Integration-to-better-safeguard-the-world\342\200\231s-wildlife.html" +++ "b/blog/2022/06/28/Data-Integration-to-better-safeguard-the-world\342\200\231s-wildlife.html" @@ -22,13 +22,13 @@ - +

    Data Integration to better safeguard the world’s wildlife

    · 4 min read

    Since 2020, the Wildlife Conservation Society (“WCS”) has leveraged the OpenFn Integration Toolkit to collect, clean, and integrate critical data for critical conservation programs targeting the world's largest wild places. WCS and its partners work at the frontline of conservation, and with support from OpenFn, they can automatically and seamlessly integrate and quickly analyse the masses of data collected across dozens of countries.

    WCS saves wildlife and wild places worldwide through science, conservation action, and collaborating with local communities and indigenous people.

    Climate change is happening right before our eyes. The 2019 Union Nations SDG Report found that as many as one million animal and plant species are in danger of extinction. Ergo, this also puts the people who highly depend on them at great risk. The earth’s demolition statistics are alarming, with “greenhouse gas emissions [having] doubled, raising average global temperatures by at least 0.7 degrees Celsius.” Less than 25% of the world can still be considered “wilderness”, urging that we must mitigate and avert these disasters without hesitation. Wilderness areas act as critical buffers against climate change, and as time goes on, these areas are diminishing due to global warming, leaving us vulnerable to climate disasters.

    WCS works with multiple data platforms and dozens of partners worldwide and needs an integration solution to enable interoperability and scale.

    With projects in nearly 60 countries and across oceans, WCS aims to re-establish a world where wildlife and people thrive in healthy lands and seas. WCS partners work on the frontline of conservation, ranging from Indigenous and local communities to national and local governments. Using mobile survey tools like KoBo Toolbox, WCS field staff can complete and submit data collection forms to track the well-being of local communities they support, local governance, reforestation activities, natural resource use, and other conservation and social science research data. WCS sought out OpenFN to integrate its data collection sources with one database for centralised analysis of all this information.

    OpenFn automates data pipelines from field to office, ensuring WCS decision-makers and researchers can access timely, accurate information.

    WCS implemented OpenFn to automate a standardised data flow between numerous wild meat consumption surveys and an MSSQL database to enable cross-partner data sharing and critical data analysis for a €45 million initiative. The initiative aims to curb unsustainable wildlife hunting, conserve biodiversity and improve food security.

    Since then, WCS has implemented OpenFn to support its partners from Conservation Social Science Partnership (“ConSoSci”). ConSoSci uses OpenFn to deploy and analyse research data collected in the field rapidly. One OpenFn solution auto-scans social science Kobo ToolBox surveys to then automatically:

    1. Build PostgreSQL and MSSQL databases and
    2. Integrate the databases, making the field data quickly available for analysis and eliminating multiple manual configurations and data integration steps typically handled by a software engineer.

    OpenFn integration

    OpenFn’s solution saves ConSoSci partners time and money, enabling researchers to access reliable data from multiple sources more quickly and effectively. They can then analyse this information to help address critical gaps in social science capacity, implementation, and accessibility in conservation.

    Thanks to the OpenFn Integration Toolkit, WCS has the digital infrastructure to efficiently scale its data collection, analysis, and sharing solutions to enhance interoperability across its programs and partners. OpenFn automatically syncs hundreds of records across dozens of WCS sites daily, enabling the WCS Conservation Technology Team to redirect its focus to its core work–empowering researchers working to mitigate continued environmental damage. WCS believes that “by discovering how to save nature, we can inspire the world to protect it”, and OpenFn is committed to helping conservation stakeholders automate this discovery process worldwide.

    To explore WCS and ConSoSci OpenFn solutions, check out the open-source code on Github (github.com/OpenFn/consosci). Next up for WCS are integrations between Kobo ToolBox and Asana. Stay tuned for more!

    Call to Action

    If you have questions about our WCS partnership or integration toolkit, head to community.openfn.org to connect and talk to like-minded social-sector integrators and OpenFn staff. We hope to see you soon!

    - + \ No newline at end of file diff --git a/blog/2023/03/01/open-human.html b/blog/2023/03/01/open-human.html index 314314ffe84..22a29e05a58 100644 --- a/blog/2023/03/01/open-human.html +++ b/blog/2023/03/01/open-human.html @@ -22,7 +22,7 @@ - + @@ -80,7 +80,7 @@ miss the company of my colleagues more than the comforts of home.

    Somewhere during this long pandemic, between fleeing an unsafe office and thriving in isolation, I Iost something. I forgot something important, something about connecting to people, something about society, the world, my place in it.

    In Cape Town, and with the humans of Open Function, I found it once more.

    An OpenHuman at Camps Bay Beach

    - + \ No newline at end of file diff --git a/blog/2023/04/13/lightning-beta.html b/blog/2023/04/13/lightning-beta.html index fdff5976152..c091569f940 100644 --- a/blog/2023/04/13/lightning-beta.html +++ b/blog/2023/04/13/lightning-beta.html @@ -22,7 +22,7 @@ - + @@ -55,7 +55,7 @@ deleted once viewed please state so in the email.

    If you would rather give your feedback in person, or have questions around using Lightning, please book office hours with our product manager Amber via the following link: https://calendly.com/amber-openfn/30min.

    - + \ No newline at end of file diff --git a/blog/2023/06/01/open-function-group.html b/blog/2023/06/01/open-function-group.html index 3fa7d2c9eb4..79093bd76d6 100644 --- a/blog/2023/06/01/open-function-group.html +++ b/blog/2023/06/01/open-function-group.html @@ -22,7 +22,7 @@ - + @@ -91,7 +91,7 @@ delight... they have driven the product forward for the last 9 years and we can’t tell you how grateful we are for your continued support and willingness to contribute. Thank you.

    — Taylor

    - + \ No newline at end of file diff --git a/blog/2023/08/14/OS4H-case-study.html b/blog/2023/08/14/OS4H-case-study.html index 8d38b8bb025..6186df0456d 100644 --- a/blog/2023/08/14/OS4H-case-study.html +++ b/blog/2023/08/14/OS4H-case-study.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    Open Solutions for Health delivers workflow automation for the St. Lucia Ministry of Health

    · 7 min read

    Open Solutions for Health (“OS4H”) is an Integrated Systems for Health collaborator and implementer specializing in providing enterprise support for free and open-source systems (FOSS). They customize small, mid-range and large open source health applications for Ministries of Health, medical councils, medical doctor practices, health groups and hospitals in the Caribbean. OS4H is also our first certified OpenFn implementation partner in the Caribbean, trained to deliver workflow automation projects to help their regional partners achieve health systems interoperability.

    Peter Ricketts, CEO at OS4H, says the Dominica-based team provides sustainable solutions designed to meet the needs of organizations in small island developing states (SIDS) that will strengthen their health management operations. While OS4H specializes in digital health implementations for the Caribbean, their team of IT specialists also works across other sectors, including education and agriculture.

    “At OS4H, our mission is to improve health outcomes by matching the right technologies to the problems and build the supporting framework around it to ensure it is implemented and sustained over the long run. We believe in making high quality data and information available to those who need it, where they need it, and when they need it in a sustainable manner.” - Peter Ricketts

    osh4h-team
    Above: Members of the Open Solutions for Health team based in Roseau, Dominica.

    This year, OS4H has been working with partners at the St. Lucia Ministry of Health (MOH) to expand their in-country DHIS2 implementation to monitor key immunization indicators so that they can strengthen management operations against vaccine preventable diseases. Check out this press release to learn more about the project supported by the Pan American Health Organization (PAHO).

    DHIS2 offers robust dashboard and data visualization options, but St. Lucia’s immunization data was collected in a separate database, along with sensitive patient information that should only be accessed by authorized users. Therefore, to (i) avoid manual data entry and indicators calculations, and (ii) minimize access to sensitive patient data, OS4H sought to automate the reporting of key immunization indicators to DHIS2. After researching secure, open source, and OpenHIE-compliant options for data integration, OS4H decided to deliver this solution using the OpenFn workflow automation platform.

    In less than 1 month, OS4H successfully designed and implemented workflow automation on OpenFn that integrates the St. Lucia Health Information System (“SLUHIS”) database with DHIS2, enabling regular, nation-wide monitoring of key immunization indicators for MOH staff and epidemiologists.

    This OS4H implementation consisted of two phases: (1) training on the OpenFn platform and(2) implementation of the automated workflow for St. Lucia.

    OS4H is now a certified OpenFn implementer

    At OpenFn, we have a small implementation team that cannot meet the rising demand for workflow automation we’re seeing worldwide. Therefore, we are investing more in partner enablement to help develop the automation expertise and OpenFn implementation capacity of local IT teams solving local problems–like OS4H in the Caribbean. Earlier this year, our core team launched the OpenFn Implementation Partner Program to offer training on the OpenFn Digital Public Good, as well as on our implementation process.

    To quickly learn how to implement OpenFn, the OS4H team completed the OpenFn Partner Onboarding Training to learn about the OpenFn product suite, as well as how to successfully design and deliver workflow automation implementations end-to-end. Over the course of 2 weeks, OS4H team members attended online training sessions and completed “homework” exercises to practice OpenFn fundamentals and prepare for their upcoming, real-world projects. At the end of the training, the OS4H team officially joined the OpenFn Community, received “OpenFn Essentials” badges for OpenFn administration and development, and were prepared to kick off their first implementation with the St. Lucia Ministry of Health.

    "After adopting the OpenHIE reference architecture, we began exploring the various referenced technologies. Upon review of the interoperability layer technologies, we quickly appreciated the versatility and ease of use of OpenFn.

    When data transformation is needed, OpenFn utilizes JavaScript, a scripting language that is familiar to most developers in the Caribbean. This meant a lower learning curve, enabling us to get up and running relatively quickly. Furthermore, the support from the OpenFn core team allowed us to build in-house capacity for the full delivery cycle of an OpenFn project." - Peter Ricketts

    Automating indicators reporting for the MOH

    Following the OpenFn training, the OS4H team successfully led the design and implementation of a solution which integrates SLUHIS, the St. Lucia MOH's health information system built on a PostgreSQL database, with their DHIS2 reporting system.

    This process involved consultations with St. Lucia MOH partners to understand the SLUHIS data structure and how to map SLUHIS data points to the DHIS2 data model. Once the data mapping requirements and workflow steps were clearly defined, then OS4H was able to configure the workflow on OpenFn and schedule the automation to run hourly.

    osh4h-flow

    How the workflow automation works:

    1. On an hourly basis, OpenFn executes complex SQL queries to extract and aggregate immunization data from the SLUHIS PostgreSQL database.
    2. OpenFn next fetches a list of “data mapping rules” from SLUHIS, which inform how municipalities should be reassigned to organization units in the DHIS2 location hierarchy.
    3. OpenFn then maps the SLUHIS aggregated indicators results to related DHIS2 data elements to prepare the data for import.
    4. Finally, using the DHIS2 adaptor, OpenFn imports data values to DHIS2, updating linked indicators and dashboards.

    As the workflow runs, all activity history can be centrally monitored in the OpenFn platform, and alerts are configured to notify St. Lucia MOH partners if any errors are thrown.

    osh4h-dashboard
    Above: Screenshot of the test DHIS2 dashboard for key immunization indicators, which displays data from SLUHIS that is aggregated and updated by OpenFn daily. This image contains test data only.

    For the MOH staff and epidemiologist end users, the DHIS2 immunization dashboards are updated automatically and regularly, ensuring access to timely and accurate information. MOH dashboard users don't need to worry about manual reporting and data analysis tasks. Automation enables MOH staff to focus on identifying trends and patterns in the administration of vaccines to improve program management operations.

    These users might not even be aware that OpenFn is engine powering the workflow automation under the hood—for them, the dashboard just works.

    osh4h-meet
    Above: Screenshot from online meeting with Taylor Downs (OpenFn) and Clem Francis (Developer, OS4H) celebrating the successful setup of an OpenFn workflow that automates calculating and reporting aggregated data values for key indicators to DHIS2.

    What's next?

    In April 2023, OS4H successfully launched the DHIS2 dashboard solution and handed over the monitoring of the OpenFn automation to the St. Lucia MOH team for the duration of the pilot. In the coming months, the St. Lucia MOH and OS4H will consider adding functionality and deploying the solution on a local, ministry-managed server, using OpenFn Lightning (the OpenFn “v2” fully open-source web app) for continued use at a greater scale.

    In the meantime, the OS4H team is continuing to deliver transformative digital solutions for partners across the Caribbean and is lining up its next OpenFn project.

    info

    If your organization, like OS4H, is hoping to develop in-house workflow automation expertise, contact partnerships@openfn.org to learn more about the OpenFn Partner Program and training options. Also check out OpenFn Community and OpenFn Documentation to learn from other OpenFn partners and implementers from our open source community.

    - + \ No newline at end of file diff --git a/blog/archive.html b/blog/archive.html index 192dd375801..6dd1ee5471c 100644 --- a/blog/archive.html +++ b/blog/archive.html @@ -22,13 +22,13 @@ - +

    Archive

    Archive

    - + \ No newline at end of file diff --git a/blog/page/2.html b/blog/page/2.html index 0245f200e1c..0f9ab9509cb 100644 --- a/blog/page/2.html +++ b/blog/page/2.html @@ -22,7 +22,7 @@ - + @@ -54,7 +54,7 @@ myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/blog/page/3.html b/blog/page/3.html index b94a5ea261e..dbba1f36b7e 100644 --- a/blog/page/3.html +++ b/blog/page/3.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ over at Medium. I'm still going to write there from time to time as part of the OpenFn Founder's Blog, but today, I'm excited to announce the launch of our own, new, more tightly integrated blog.

    - + \ No newline at end of file diff --git a/blog/tags.html b/blog/tags.html index 22a2cdb18cb..6befb495939 100644 --- a/blog/tags.html +++ b/blog/tags.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/blog/tags/african-school-of-excellence.html b/blog/tags/african-school-of-excellence.html index 5c2e27a9e3e..6f45a93d549 100644 --- a/blog/tags/african-school-of-excellence.html +++ b/blog/tags/african-school-of-excellence.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/blog/tags/agriculture.html b/blog/tags/agriculture.html index f652b0cbcff..fe9c771b31a 100644 --- a/blog/tags/agriculture.html +++ b/blog/tags/agriculture.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/blog/tags/airport.html b/blog/tags/airport.html index 47dc5f97ef4..c4cab2ee8cc 100644 --- a/blog/tags/airport.html +++ b/blog/tags/airport.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ and service for its workers and passengers. This integrated asset management system saves time and money, and prevents errors by reducing manual, paper-based data transfer between systems.

    - + \ No newline at end of file diff --git a/blog/tags/announcement.html b/blog/tags/announcement.html index 70f5bc0fa8f..88d8c06eb9b 100644 --- a/blog/tags/announcement.html +++ b/blog/tags/announcement.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ management information system (HMIS) used in over 40 countries, and OpenLMIS, a popular logistics system, are digital global goods. OpenFn is proud to now be officially joining them on this list.

    - + \ No newline at end of file diff --git a/blog/tags/automated-reporting.html b/blog/tags/automated-reporting.html index 0b8c71ef484..3d08379ef05 100644 --- a/blog/tags/automated-reporting.html +++ b/blog/tags/automated-reporting.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ and service for its workers and passengers. This integrated asset management system saves time and money, and prevents errors by reducing manual, paper-based data transfer between systems.

    - + \ No newline at end of file diff --git a/blog/tags/cambodia.html b/blog/tags/cambodia.html index f94ba516511..dfda5e3374b 100644 --- a/blog/tags/cambodia.html +++ b/blog/tags/cambodia.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ secure OpenFn project space with the automated data sharing workflows required to allow for the Cambodian government and their partner NGO caseworkers to communicate with one another seamlessly.

    - + \ No newline at end of file diff --git a/blog/tags/caris-foundation.html b/blog/tags/caris-foundation.html index 534b3b09844..5d1ed29b095 100644 --- a/blog/tags/caris-foundation.html +++ b/blog/tags/caris-foundation.html @@ -22,14 +22,14 @@ - + - + \ No newline at end of file diff --git a/blog/tags/carto.html b/blog/tags/carto.html index 625224d5bd4..4474a431243 100644 --- a/blog/tags/carto.html +++ b/blog/tags/carto.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ manual data entry and cleaning processes.The real-time connection has enabled live data monitoring for the team as iKapaData survey enumerators were conducting the survey.

    - + \ No newline at end of file diff --git a/blog/tags/case-management.html b/blog/tags/case-management.html index 5ad9262f454..969ccdc2c96 100644 --- a/blog/tags/case-management.html +++ b/blog/tags/case-management.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ secure OpenFn project space with the automated data sharing workflows required to allow for the Cambodian government and their partner NGO caseworkers to communicate with one another seamlessly.

    - + \ No newline at end of file diff --git a/blog/tags/case-study.html b/blog/tags/case-study.html index eb4efa76fec..4637828b27d 100644 --- a/blog/tags/case-study.html +++ b/blog/tags/case-study.html @@ -22,7 +22,7 @@ - + @@ -54,7 +54,7 @@ and service for its workers and passengers. This integrated asset management system saves time and money, and prevents errors by reducing manual, paper-based data transfer between systems.

    - + \ No newline at end of file diff --git a/blog/tags/case-study/page/2.html b/blog/tags/case-study/page/2.html index 7d5704d8c82..228622a4a37 100644 --- a/blog/tags/case-study/page/2.html +++ b/blog/tags/case-study/page/2.html @@ -22,7 +22,7 @@ - + @@ -39,7 +39,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/blog/tags/comm-care.html b/blog/tags/comm-care.html index 76c8960a62e..9ccd6e8f13e 100644 --- a/blog/tags/comm-care.html +++ b/blog/tags/comm-care.html @@ -22,7 +22,7 @@ - + @@ -40,7 +40,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/blog/tags/data-monitoring.html b/blog/tags/data-monitoring.html index 371e6527382..853660dc0c3 100644 --- a/blog/tags/data-monitoring.html +++ b/blog/tags/data-monitoring.html @@ -22,7 +22,7 @@ - + @@ -41,7 +41,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/blog/tags/data-warehouse.html b/blog/tags/data-warehouse.html index 604bf97e6ab..e7afcf371f9 100644 --- a/blog/tags/data-warehouse.html +++ b/blog/tags/data-warehouse.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/blog/tags/deployment.html b/blog/tags/deployment.html index c3bdc20aaaa..04a2f77b5af 100644 --- a/blog/tags/deployment.html +++ b/blog/tags/deployment.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ re-victimization. Children might have to recount their whole case history, reliving their traumas time and time again in order to register and access each critical support service they needed.

    - + \ No newline at end of file diff --git a/blog/tags/development.html b/blog/tags/development.html index 98817d861d1..d7608487e75 100644 --- a/blog/tags/development.html +++ b/blog/tags/development.html @@ -22,7 +22,7 @@ - + @@ -37,7 +37,7 @@ and service for its workers and passengers. This integrated asset management system saves time and money, and prevents errors by reducing manual, paper-based data transfer between systems.

    - + \ No newline at end of file diff --git a/blog/tags/dhis-2.html b/blog/tags/dhis-2.html index 6aee814e346..efc302d7ee7 100644 --- a/blog/tags/dhis-2.html +++ b/blog/tags/dhis-2.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ reporting system for the ALMANACH health initiative, OpenFn provided SwissTPH with an automated, real-time connection that enables live disease monitoring in 2019.

    - + \ No newline at end of file diff --git a/blog/tags/education.html b/blog/tags/education.html index 6bba4321b3b..68db03ce913 100644 --- a/blog/tags/education.html +++ b/blog/tags/education.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ data in near real-time and better serve the needs of its communities.

    - + \ No newline at end of file diff --git a/blog/tags/global-goods.html b/blog/tags/global-goods.html index 1b1096ce742..27c81364d3f 100644 --- a/blog/tags/global-goods.html +++ b/blog/tags/global-goods.html @@ -22,7 +22,7 @@ - + @@ -43,7 +43,7 @@ management information system (HMIS) used in over 40 countries, and OpenLMIS, a popular logistics system, are digital global goods. OpenFn is proud to now be officially joining them on this list.

    - + \ No newline at end of file diff --git a/blog/tags/health.html b/blog/tags/health.html index 5297a8a1af5..0d1cbeaca3e 100644 --- a/blog/tags/health.html +++ b/blog/tags/health.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    One post tagged with "health"

    View All Tags

    · 7 min read

    Open Solutions for Health (“OS4H”) is an Integrated Systems for Health collaborator and implementer specializing in providing enterprise support for free and open-source systems (FOSS). They customize small, mid-range and large open source health applications for Ministries of Health, medical councils, medical doctor practices, health groups and hospitals in the Caribbean. OS4H is also our first certified OpenFn implementation partner in the Caribbean, trained to deliver workflow automation projects to help their regional partners achieve health systems interoperability.

    Peter Ricketts, CEO at OS4H, says the Dominica-based team provides sustainable solutions designed to meet the needs of organizations in small island developing states (SIDS) that will strengthen their health management operations. While OS4H specializes in digital health implementations for the Caribbean, their team of IT specialists also works across other sectors, including education and agriculture.

    “At OS4H, our mission is to improve health outcomes by matching the right technologies to the problems and build the supporting framework around it to ensure it is implemented and sustained over the long run. We believe in making high quality data and information available to those who need it, where they need it, and when they need it in a sustainable manner.” - Peter Ricketts

    osh4h-team
    Above: Members of the Open Solutions for Health team based in Roseau, Dominica.

    This year, OS4H has been working with partners at the St. Lucia Ministry of Health (MOH) to expand their in-country DHIS2 implementation to monitor key immunization indicators so that they can strengthen management operations against vaccine preventable diseases. Check out this press release to learn more about the project supported by the Pan American Health Organization (PAHO).

    DHIS2 offers robust dashboard and data visualization options, but St. Lucia’s immunization data was collected in a separate database, along with sensitive patient information that should only be accessed by authorized users. Therefore, to (i) avoid manual data entry and indicators calculations, and (ii) minimize access to sensitive patient data, OS4H sought to automate the reporting of key immunization indicators to DHIS2. After researching secure, open source, and OpenHIE-compliant options for data integration, OS4H decided to deliver this solution using the OpenFn workflow automation platform.

    In less than 1 month, OS4H successfully designed and implemented workflow automation on OpenFn that integrates the St. Lucia Health Information System (“SLUHIS”) database with DHIS2, enabling regular, nation-wide monitoring of key immunization indicators for MOH staff and epidemiologists.

    This OS4H implementation consisted of two phases: (1) training on the OpenFn platform and(2) implementation of the automated workflow for St. Lucia.

    OS4H is now a certified OpenFn implementer

    At OpenFn, we have a small implementation team that cannot meet the rising demand for workflow automation we’re seeing worldwide. Therefore, we are investing more in partner enablement to help develop the automation expertise and OpenFn implementation capacity of local IT teams solving local problems–like OS4H in the Caribbean. Earlier this year, our core team launched the OpenFn Implementation Partner Program to offer training on the OpenFn Digital Public Good, as well as on our implementation process.

    To quickly learn how to implement OpenFn, the OS4H team completed the OpenFn Partner Onboarding Training to learn about the OpenFn product suite, as well as how to successfully design and deliver workflow automation implementations end-to-end. Over the course of 2 weeks, OS4H team members attended online training sessions and completed “homework” exercises to practice OpenFn fundamentals and prepare for their upcoming, real-world projects. At the end of the training, the OS4H team officially joined the OpenFn Community, received “OpenFn Essentials” badges for OpenFn administration and development, and were prepared to kick off their first implementation with the St. Lucia Ministry of Health.

    "After adopting the OpenHIE reference architecture, we began exploring the various referenced technologies. Upon review of the interoperability layer technologies, we quickly appreciated the versatility and ease of use of OpenFn.

    When data transformation is needed, OpenFn utilizes JavaScript, a scripting language that is familiar to most developers in the Caribbean. This meant a lower learning curve, enabling us to get up and running relatively quickly. Furthermore, the support from the OpenFn core team allowed us to build in-house capacity for the full delivery cycle of an OpenFn project." - Peter Ricketts

    Automating indicators reporting for the MOH

    Following the OpenFn training, the OS4H team successfully led the design and implementation of a solution which integrates SLUHIS, the St. Lucia MOH's health information system built on a PostgreSQL database, with their DHIS2 reporting system.

    This process involved consultations with St. Lucia MOH partners to understand the SLUHIS data structure and how to map SLUHIS data points to the DHIS2 data model. Once the data mapping requirements and workflow steps were clearly defined, then OS4H was able to configure the workflow on OpenFn and schedule the automation to run hourly.

    osh4h-flow

    How the workflow automation works:

    1. On an hourly basis, OpenFn executes complex SQL queries to extract and aggregate immunization data from the SLUHIS PostgreSQL database.
    2. OpenFn next fetches a list of “data mapping rules” from SLUHIS, which inform how municipalities should be reassigned to organization units in the DHIS2 location hierarchy.
    3. OpenFn then maps the SLUHIS aggregated indicators results to related DHIS2 data elements to prepare the data for import.
    4. Finally, using the DHIS2 adaptor, OpenFn imports data values to DHIS2, updating linked indicators and dashboards.

    As the workflow runs, all activity history can be centrally monitored in the OpenFn platform, and alerts are configured to notify St. Lucia MOH partners if any errors are thrown.

    osh4h-dashboard
    Above: Screenshot of the test DHIS2 dashboard for key immunization indicators, which displays data from SLUHIS that is aggregated and updated by OpenFn daily. This image contains test data only.

    For the MOH staff and epidemiologist end users, the DHIS2 immunization dashboards are updated automatically and regularly, ensuring access to timely and accurate information. MOH dashboard users don't need to worry about manual reporting and data analysis tasks. Automation enables MOH staff to focus on identifying trends and patterns in the administration of vaccines to improve program management operations.

    These users might not even be aware that OpenFn is engine powering the workflow automation under the hood—for them, the dashboard just works.

    osh4h-meet
    Above: Screenshot from online meeting with Taylor Downs (OpenFn) and Clem Francis (Developer, OS4H) celebrating the successful setup of an OpenFn workflow that automates calculating and reporting aggregated data values for key indicators to DHIS2.

    What's next?

    In April 2023, OS4H successfully launched the DHIS2 dashboard solution and handed over the monitoring of the OpenFn automation to the St. Lucia MOH team for the duration of the pilot. In the coming months, the St. Lucia MOH and OS4H will consider adding functionality and deploying the solution on a local, ministry-managed server, using OpenFn Lightning (the OpenFn “v2” fully open-source web app) for continued use at a greater scale.

    In the meantime, the OS4H team is continuing to deliver transformative digital solutions for partners across the Caribbean and is lining up its next OpenFn project.

    info

    If your organization, like OS4H, is hoping to develop in-house workflow automation expertise, contact partnerships@openfn.org to learn more about the OpenFn Partner Program and training options. Also check out OpenFn Community and OpenFn Documentation to learn from other OpenFn partners and implementers from our open source community.

    - + \ No newline at end of file diff --git a/blog/tags/healthcare.html b/blog/tags/healthcare.html index 1d559e44f7b..1f284dc4e09 100644 --- a/blog/tags/healthcare.html +++ b/blog/tags/healthcare.html @@ -22,7 +22,7 @@ - + @@ -38,7 +38,7 @@ reporting system for the ALMANACH health initiative, OpenFn provided SwissTPH with an automated, real-time connection that enables live disease monitoring in 2019.

    - + \ No newline at end of file diff --git a/blog/tags/i-kapa-data.html b/blog/tags/i-kapa-data.html index ff44853b8b5..d04df23ecff 100644 --- a/blog/tags/i-kapa-data.html +++ b/blog/tags/i-kapa-data.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ manual data entry and cleaning processes.The real-time connection has enabled live data monitoring for the team as iKapaData survey enumerators were conducting the survey.

    - + \ No newline at end of file diff --git a/blog/tags/ibm-maximo.html b/blog/tags/ibm-maximo.html index fca828f1432..8d54deb5c0b 100644 --- a/blog/tags/ibm-maximo.html +++ b/blog/tags/ibm-maximo.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ and service for its workers and passengers. This integrated asset management system saves time and money, and prevents errors by reducing manual, paper-based data transfer between systems.

    - + \ No newline at end of file diff --git a/blog/tags/kgvk.html b/blog/tags/kgvk.html index 625f9662a59..b75f40e78e8 100644 --- a/blog/tags/kgvk.html +++ b/blog/tags/kgvk.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/blog/tags/kobo-toolbox.html b/blog/tags/kobo-toolbox.html index a5ff8b3d203..493ef32d925 100644 --- a/blog/tags/kobo-toolbox.html +++ b/blog/tags/kobo-toolbox.html @@ -22,13 +22,13 @@ - +

    One post tagged with "Kobo Toolbox"

    View All Tags

    · 4 min read

    Since 2020, the Wildlife Conservation Society (“WCS”) has leveraged the OpenFn Integration Toolkit to collect, clean, and integrate critical data for critical conservation programs targeting the world's largest wild places. WCS and its partners work at the frontline of conservation, and with support from OpenFn, they can automatically and seamlessly integrate and quickly analyse the masses of data collected across dozens of countries.

    - + \ No newline at end of file diff --git a/blog/tags/kopo-kopo.html b/blog/tags/kopo-kopo.html index 983c005cce1..e7a3a92876f 100644 --- a/blog/tags/kopo-kopo.html +++ b/blog/tags/kopo-kopo.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/blog/tags/learning-management-system.html b/blog/tags/learning-management-system.html index c09c9b1dae8..18ca78a1691 100644 --- a/blog/tags/learning-management-system.html +++ b/blog/tags/learning-management-system.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ reading-for-enjoyment initiative, which promotes reading and writing in mother tongue languages. To effectively monitor program activities and children reached across the country, Nal’ibali needed to integrate multiple data platforms.

    - + \ No newline at end of file diff --git a/blog/tags/m-pesa.html b/blog/tags/m-pesa.html index 3571e5d09dd..d5121f6afbd 100644 --- a/blog/tags/m-pesa.html +++ b/blog/tags/m-pesa.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/blog/tags/moh.html b/blog/tags/moh.html index fe2af5c580c..dc06621601e 100644 --- a/blog/tags/moh.html +++ b/blog/tags/moh.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    One post tagged with "MOH"

    View All Tags

    · 7 min read

    Open Solutions for Health (“OS4H”) is an Integrated Systems for Health collaborator and implementer specializing in providing enterprise support for free and open-source systems (FOSS). They customize small, mid-range and large open source health applications for Ministries of Health, medical councils, medical doctor practices, health groups and hospitals in the Caribbean. OS4H is also our first certified OpenFn implementation partner in the Caribbean, trained to deliver workflow automation projects to help their regional partners achieve health systems interoperability.

    Peter Ricketts, CEO at OS4H, says the Dominica-based team provides sustainable solutions designed to meet the needs of organizations in small island developing states (SIDS) that will strengthen their health management operations. While OS4H specializes in digital health implementations for the Caribbean, their team of IT specialists also works across other sectors, including education and agriculture.

    “At OS4H, our mission is to improve health outcomes by matching the right technologies to the problems and build the supporting framework around it to ensure it is implemented and sustained over the long run. We believe in making high quality data and information available to those who need it, where they need it, and when they need it in a sustainable manner.” - Peter Ricketts

    osh4h-team
    Above: Members of the Open Solutions for Health team based in Roseau, Dominica.

    This year, OS4H has been working with partners at the St. Lucia Ministry of Health (MOH) to expand their in-country DHIS2 implementation to monitor key immunization indicators so that they can strengthen management operations against vaccine preventable diseases. Check out this press release to learn more about the project supported by the Pan American Health Organization (PAHO).

    DHIS2 offers robust dashboard and data visualization options, but St. Lucia’s immunization data was collected in a separate database, along with sensitive patient information that should only be accessed by authorized users. Therefore, to (i) avoid manual data entry and indicators calculations, and (ii) minimize access to sensitive patient data, OS4H sought to automate the reporting of key immunization indicators to DHIS2. After researching secure, open source, and OpenHIE-compliant options for data integration, OS4H decided to deliver this solution using the OpenFn workflow automation platform.

    In less than 1 month, OS4H successfully designed and implemented workflow automation on OpenFn that integrates the St. Lucia Health Information System (“SLUHIS”) database with DHIS2, enabling regular, nation-wide monitoring of key immunization indicators for MOH staff and epidemiologists.

    This OS4H implementation consisted of two phases: (1) training on the OpenFn platform and(2) implementation of the automated workflow for St. Lucia.

    OS4H is now a certified OpenFn implementer

    At OpenFn, we have a small implementation team that cannot meet the rising demand for workflow automation we’re seeing worldwide. Therefore, we are investing more in partner enablement to help develop the automation expertise and OpenFn implementation capacity of local IT teams solving local problems–like OS4H in the Caribbean. Earlier this year, our core team launched the OpenFn Implementation Partner Program to offer training on the OpenFn Digital Public Good, as well as on our implementation process.

    To quickly learn how to implement OpenFn, the OS4H team completed the OpenFn Partner Onboarding Training to learn about the OpenFn product suite, as well as how to successfully design and deliver workflow automation implementations end-to-end. Over the course of 2 weeks, OS4H team members attended online training sessions and completed “homework” exercises to practice OpenFn fundamentals and prepare for their upcoming, real-world projects. At the end of the training, the OS4H team officially joined the OpenFn Community, received “OpenFn Essentials” badges for OpenFn administration and development, and were prepared to kick off their first implementation with the St. Lucia Ministry of Health.

    "After adopting the OpenHIE reference architecture, we began exploring the various referenced technologies. Upon review of the interoperability layer technologies, we quickly appreciated the versatility and ease of use of OpenFn.

    When data transformation is needed, OpenFn utilizes JavaScript, a scripting language that is familiar to most developers in the Caribbean. This meant a lower learning curve, enabling us to get up and running relatively quickly. Furthermore, the support from the OpenFn core team allowed us to build in-house capacity for the full delivery cycle of an OpenFn project." - Peter Ricketts

    Automating indicators reporting for the MOH

    Following the OpenFn training, the OS4H team successfully led the design and implementation of a solution which integrates SLUHIS, the St. Lucia MOH's health information system built on a PostgreSQL database, with their DHIS2 reporting system.

    This process involved consultations with St. Lucia MOH partners to understand the SLUHIS data structure and how to map SLUHIS data points to the DHIS2 data model. Once the data mapping requirements and workflow steps were clearly defined, then OS4H was able to configure the workflow on OpenFn and schedule the automation to run hourly.

    osh4h-flow

    How the workflow automation works:

    1. On an hourly basis, OpenFn executes complex SQL queries to extract and aggregate immunization data from the SLUHIS PostgreSQL database.
    2. OpenFn next fetches a list of “data mapping rules” from SLUHIS, which inform how municipalities should be reassigned to organization units in the DHIS2 location hierarchy.
    3. OpenFn then maps the SLUHIS aggregated indicators results to related DHIS2 data elements to prepare the data for import.
    4. Finally, using the DHIS2 adaptor, OpenFn imports data values to DHIS2, updating linked indicators and dashboards.

    As the workflow runs, all activity history can be centrally monitored in the OpenFn platform, and alerts are configured to notify St. Lucia MOH partners if any errors are thrown.

    osh4h-dashboard
    Above: Screenshot of the test DHIS2 dashboard for key immunization indicators, which displays data from SLUHIS that is aggregated and updated by OpenFn daily. This image contains test data only.

    For the MOH staff and epidemiologist end users, the DHIS2 immunization dashboards are updated automatically and regularly, ensuring access to timely and accurate information. MOH dashboard users don't need to worry about manual reporting and data analysis tasks. Automation enables MOH staff to focus on identifying trends and patterns in the administration of vaccines to improve program management operations.

    These users might not even be aware that OpenFn is engine powering the workflow automation under the hood—for them, the dashboard just works.

    osh4h-meet
    Above: Screenshot from online meeting with Taylor Downs (OpenFn) and Clem Francis (Developer, OS4H) celebrating the successful setup of an OpenFn workflow that automates calculating and reporting aggregated data values for key indicators to DHIS2.

    What's next?

    In April 2023, OS4H successfully launched the DHIS2 dashboard solution and handed over the monitoring of the OpenFn automation to the St. Lucia MOH team for the duration of the pilot. In the coming months, the St. Lucia MOH and OS4H will consider adding functionality and deploying the solution on a local, ministry-managed server, using OpenFn Lightning (the OpenFn “v2” fully open-source web app) for continued use at a greater scale.

    In the meantime, the OS4H team is continuing to deliver transformative digital solutions for partners across the Caribbean and is lining up its next OpenFn project.

    info

    If your organization, like OS4H, is hoping to develop in-house workflow automation expertise, contact partnerships@openfn.org to learn more about the OpenFn Partner Program and training options. Also check out OpenFn Community and OpenFn Documentation to learn from other OpenFn partners and implementers from our open source community.

    - + \ No newline at end of file diff --git a/blog/tags/mssql.html b/blog/tags/mssql.html index adea498ab5d..ae5d471dc0f 100644 --- a/blog/tags/mssql.html +++ b/blog/tags/mssql.html @@ -22,13 +22,13 @@ - +

    One post tagged with "MSSQL"

    View All Tags

    · 4 min read

    Since 2020, the Wildlife Conservation Society (“WCS”) has leveraged the OpenFn Integration Toolkit to collect, clean, and integrate critical data for critical conservation programs targeting the world's largest wild places. WCS and its partners work at the frontline of conservation, and with support from OpenFn, they can automatically and seamlessly integrate and quickly analyse the masses of data collected across dozens of countries.

    - + \ No newline at end of file diff --git a/blog/tags/my-agro.html b/blog/tags/my-agro.html index 09674701f44..51fedb22018 100644 --- a/blog/tags/my-agro.html +++ b/blog/tags/my-agro.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/blog/tags/my-sql.html b/blog/tags/my-sql.html index 0ebca4b4e8e..23c091609c9 100644 --- a/blog/tags/my-sql.html +++ b/blog/tags/my-sql.html @@ -22,14 +22,14 @@ - + - + \ No newline at end of file diff --git a/blog/tags/odk.html b/blog/tags/odk.html index 57bdb0c81b0..3d169e0f546 100644 --- a/blog/tags/odk.html +++ b/blog/tags/odk.html @@ -22,7 +22,7 @@ - + @@ -37,7 +37,7 @@ time lag.

    - + \ No newline at end of file diff --git a/blog/tags/open-solutions-for-health.html b/blog/tags/open-solutions-for-health.html index 8721c4525e1..10766574fa3 100644 --- a/blog/tags/open-solutions-for-health.html +++ b/blog/tags/open-solutions-for-health.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    One post tagged with "Open Solutions for Health"

    View All Tags

    · 7 min read

    Open Solutions for Health (“OS4H”) is an Integrated Systems for Health collaborator and implementer specializing in providing enterprise support for free and open-source systems (FOSS). They customize small, mid-range and large open source health applications for Ministries of Health, medical councils, medical doctor practices, health groups and hospitals in the Caribbean. OS4H is also our first certified OpenFn implementation partner in the Caribbean, trained to deliver workflow automation projects to help their regional partners achieve health systems interoperability.

    Peter Ricketts, CEO at OS4H, says the Dominica-based team provides sustainable solutions designed to meet the needs of organizations in small island developing states (SIDS) that will strengthen their health management operations. While OS4H specializes in digital health implementations for the Caribbean, their team of IT specialists also works across other sectors, including education and agriculture.

    “At OS4H, our mission is to improve health outcomes by matching the right technologies to the problems and build the supporting framework around it to ensure it is implemented and sustained over the long run. We believe in making high quality data and information available to those who need it, where they need it, and when they need it in a sustainable manner.” - Peter Ricketts

    osh4h-team
    Above: Members of the Open Solutions for Health team based in Roseau, Dominica.

    This year, OS4H has been working with partners at the St. Lucia Ministry of Health (MOH) to expand their in-country DHIS2 implementation to monitor key immunization indicators so that they can strengthen management operations against vaccine preventable diseases. Check out this press release to learn more about the project supported by the Pan American Health Organization (PAHO).

    DHIS2 offers robust dashboard and data visualization options, but St. Lucia’s immunization data was collected in a separate database, along with sensitive patient information that should only be accessed by authorized users. Therefore, to (i) avoid manual data entry and indicators calculations, and (ii) minimize access to sensitive patient data, OS4H sought to automate the reporting of key immunization indicators to DHIS2. After researching secure, open source, and OpenHIE-compliant options for data integration, OS4H decided to deliver this solution using the OpenFn workflow automation platform.

    In less than 1 month, OS4H successfully designed and implemented workflow automation on OpenFn that integrates the St. Lucia Health Information System (“SLUHIS”) database with DHIS2, enabling regular, nation-wide monitoring of key immunization indicators for MOH staff and epidemiologists.

    This OS4H implementation consisted of two phases: (1) training on the OpenFn platform and(2) implementation of the automated workflow for St. Lucia.

    OS4H is now a certified OpenFn implementer

    At OpenFn, we have a small implementation team that cannot meet the rising demand for workflow automation we’re seeing worldwide. Therefore, we are investing more in partner enablement to help develop the automation expertise and OpenFn implementation capacity of local IT teams solving local problems–like OS4H in the Caribbean. Earlier this year, our core team launched the OpenFn Implementation Partner Program to offer training on the OpenFn Digital Public Good, as well as on our implementation process.

    To quickly learn how to implement OpenFn, the OS4H team completed the OpenFn Partner Onboarding Training to learn about the OpenFn product suite, as well as how to successfully design and deliver workflow automation implementations end-to-end. Over the course of 2 weeks, OS4H team members attended online training sessions and completed “homework” exercises to practice OpenFn fundamentals and prepare for their upcoming, real-world projects. At the end of the training, the OS4H team officially joined the OpenFn Community, received “OpenFn Essentials” badges for OpenFn administration and development, and were prepared to kick off their first implementation with the St. Lucia Ministry of Health.

    "After adopting the OpenHIE reference architecture, we began exploring the various referenced technologies. Upon review of the interoperability layer technologies, we quickly appreciated the versatility and ease of use of OpenFn.

    When data transformation is needed, OpenFn utilizes JavaScript, a scripting language that is familiar to most developers in the Caribbean. This meant a lower learning curve, enabling us to get up and running relatively quickly. Furthermore, the support from the OpenFn core team allowed us to build in-house capacity for the full delivery cycle of an OpenFn project." - Peter Ricketts

    Automating indicators reporting for the MOH

    Following the OpenFn training, the OS4H team successfully led the design and implementation of a solution which integrates SLUHIS, the St. Lucia MOH's health information system built on a PostgreSQL database, with their DHIS2 reporting system.

    This process involved consultations with St. Lucia MOH partners to understand the SLUHIS data structure and how to map SLUHIS data points to the DHIS2 data model. Once the data mapping requirements and workflow steps were clearly defined, then OS4H was able to configure the workflow on OpenFn and schedule the automation to run hourly.

    osh4h-flow

    How the workflow automation works:

    1. On an hourly basis, OpenFn executes complex SQL queries to extract and aggregate immunization data from the SLUHIS PostgreSQL database.
    2. OpenFn next fetches a list of “data mapping rules” from SLUHIS, which inform how municipalities should be reassigned to organization units in the DHIS2 location hierarchy.
    3. OpenFn then maps the SLUHIS aggregated indicators results to related DHIS2 data elements to prepare the data for import.
    4. Finally, using the DHIS2 adaptor, OpenFn imports data values to DHIS2, updating linked indicators and dashboards.

    As the workflow runs, all activity history can be centrally monitored in the OpenFn platform, and alerts are configured to notify St. Lucia MOH partners if any errors are thrown.

    osh4h-dashboard
    Above: Screenshot of the test DHIS2 dashboard for key immunization indicators, which displays data from SLUHIS that is aggregated and updated by OpenFn daily. This image contains test data only.

    For the MOH staff and epidemiologist end users, the DHIS2 immunization dashboards are updated automatically and regularly, ensuring access to timely and accurate information. MOH dashboard users don't need to worry about manual reporting and data analysis tasks. Automation enables MOH staff to focus on identifying trends and patterns in the administration of vaccines to improve program management operations.

    These users might not even be aware that OpenFn is engine powering the workflow automation under the hood—for them, the dashboard just works.

    osh4h-meet
    Above: Screenshot from online meeting with Taylor Downs (OpenFn) and Clem Francis (Developer, OS4H) celebrating the successful setup of an OpenFn workflow that automates calculating and reporting aggregated data values for key indicators to DHIS2.

    What's next?

    In April 2023, OS4H successfully launched the DHIS2 dashboard solution and handed over the monitoring of the OpenFn automation to the St. Lucia MOH team for the duration of the pilot. In the coming months, the St. Lucia MOH and OS4H will consider adding functionality and deploying the solution on a local, ministry-managed server, using OpenFn Lightning (the OpenFn “v2” fully open-source web app) for continued use at a greater scale.

    In the meantime, the OS4H team is continuing to deliver transformative digital solutions for partners across the Caribbean and is lining up its next OpenFn project.

    info

    If your organization, like OS4H, is hoping to develop in-house workflow automation expertise, contact partnerships@openfn.org to learn more about the OpenFn Partner Program and training options. Also check out OpenFn Community and OpenFn Documentation to learn from other OpenFn partners and implementers from our open source community.

    - + \ No newline at end of file diff --git a/blog/tags/os-4-h.html b/blog/tags/os-4-h.html index 8ae8c0020de..c8cdf0b1b6e 100644 --- a/blog/tags/os-4-h.html +++ b/blog/tags/os-4-h.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    One post tagged with "OS4H"

    View All Tags

    · 7 min read

    Open Solutions for Health (“OS4H”) is an Integrated Systems for Health collaborator and implementer specializing in providing enterprise support for free and open-source systems (FOSS). They customize small, mid-range and large open source health applications for Ministries of Health, medical councils, medical doctor practices, health groups and hospitals in the Caribbean. OS4H is also our first certified OpenFn implementation partner in the Caribbean, trained to deliver workflow automation projects to help their regional partners achieve health systems interoperability.

    Peter Ricketts, CEO at OS4H, says the Dominica-based team provides sustainable solutions designed to meet the needs of organizations in small island developing states (SIDS) that will strengthen their health management operations. While OS4H specializes in digital health implementations for the Caribbean, their team of IT specialists also works across other sectors, including education and agriculture.

    “At OS4H, our mission is to improve health outcomes by matching the right technologies to the problems and build the supporting framework around it to ensure it is implemented and sustained over the long run. We believe in making high quality data and information available to those who need it, where they need it, and when they need it in a sustainable manner.” - Peter Ricketts

    osh4h-team
    Above: Members of the Open Solutions for Health team based in Roseau, Dominica.

    This year, OS4H has been working with partners at the St. Lucia Ministry of Health (MOH) to expand their in-country DHIS2 implementation to monitor key immunization indicators so that they can strengthen management operations against vaccine preventable diseases. Check out this press release to learn more about the project supported by the Pan American Health Organization (PAHO).

    DHIS2 offers robust dashboard and data visualization options, but St. Lucia’s immunization data was collected in a separate database, along with sensitive patient information that should only be accessed by authorized users. Therefore, to (i) avoid manual data entry and indicators calculations, and (ii) minimize access to sensitive patient data, OS4H sought to automate the reporting of key immunization indicators to DHIS2. After researching secure, open source, and OpenHIE-compliant options for data integration, OS4H decided to deliver this solution using the OpenFn workflow automation platform.

    In less than 1 month, OS4H successfully designed and implemented workflow automation on OpenFn that integrates the St. Lucia Health Information System (“SLUHIS”) database with DHIS2, enabling regular, nation-wide monitoring of key immunization indicators for MOH staff and epidemiologists.

    This OS4H implementation consisted of two phases: (1) training on the OpenFn platform and(2) implementation of the automated workflow for St. Lucia.

    OS4H is now a certified OpenFn implementer

    At OpenFn, we have a small implementation team that cannot meet the rising demand for workflow automation we’re seeing worldwide. Therefore, we are investing more in partner enablement to help develop the automation expertise and OpenFn implementation capacity of local IT teams solving local problems–like OS4H in the Caribbean. Earlier this year, our core team launched the OpenFn Implementation Partner Program to offer training on the OpenFn Digital Public Good, as well as on our implementation process.

    To quickly learn how to implement OpenFn, the OS4H team completed the OpenFn Partner Onboarding Training to learn about the OpenFn product suite, as well as how to successfully design and deliver workflow automation implementations end-to-end. Over the course of 2 weeks, OS4H team members attended online training sessions and completed “homework” exercises to practice OpenFn fundamentals and prepare for their upcoming, real-world projects. At the end of the training, the OS4H team officially joined the OpenFn Community, received “OpenFn Essentials” badges for OpenFn administration and development, and were prepared to kick off their first implementation with the St. Lucia Ministry of Health.

    "After adopting the OpenHIE reference architecture, we began exploring the various referenced technologies. Upon review of the interoperability layer technologies, we quickly appreciated the versatility and ease of use of OpenFn.

    When data transformation is needed, OpenFn utilizes JavaScript, a scripting language that is familiar to most developers in the Caribbean. This meant a lower learning curve, enabling us to get up and running relatively quickly. Furthermore, the support from the OpenFn core team allowed us to build in-house capacity for the full delivery cycle of an OpenFn project." - Peter Ricketts

    Automating indicators reporting for the MOH

    Following the OpenFn training, the OS4H team successfully led the design and implementation of a solution which integrates SLUHIS, the St. Lucia MOH's health information system built on a PostgreSQL database, with their DHIS2 reporting system.

    This process involved consultations with St. Lucia MOH partners to understand the SLUHIS data structure and how to map SLUHIS data points to the DHIS2 data model. Once the data mapping requirements and workflow steps were clearly defined, then OS4H was able to configure the workflow on OpenFn and schedule the automation to run hourly.

    osh4h-flow

    How the workflow automation works:

    1. On an hourly basis, OpenFn executes complex SQL queries to extract and aggregate immunization data from the SLUHIS PostgreSQL database.
    2. OpenFn next fetches a list of “data mapping rules” from SLUHIS, which inform how municipalities should be reassigned to organization units in the DHIS2 location hierarchy.
    3. OpenFn then maps the SLUHIS aggregated indicators results to related DHIS2 data elements to prepare the data for import.
    4. Finally, using the DHIS2 adaptor, OpenFn imports data values to DHIS2, updating linked indicators and dashboards.

    As the workflow runs, all activity history can be centrally monitored in the OpenFn platform, and alerts are configured to notify St. Lucia MOH partners if any errors are thrown.

    osh4h-dashboard
    Above: Screenshot of the test DHIS2 dashboard for key immunization indicators, which displays data from SLUHIS that is aggregated and updated by OpenFn daily. This image contains test data only.

    For the MOH staff and epidemiologist end users, the DHIS2 immunization dashboards are updated automatically and regularly, ensuring access to timely and accurate information. MOH dashboard users don't need to worry about manual reporting and data analysis tasks. Automation enables MOH staff to focus on identifying trends and patterns in the administration of vaccines to improve program management operations.

    These users might not even be aware that OpenFn is engine powering the workflow automation under the hood—for them, the dashboard just works.

    osh4h-meet
    Above: Screenshot from online meeting with Taylor Downs (OpenFn) and Clem Francis (Developer, OS4H) celebrating the successful setup of an OpenFn workflow that automates calculating and reporting aggregated data values for key indicators to DHIS2.

    What's next?

    In April 2023, OS4H successfully launched the DHIS2 dashboard solution and handed over the monitoring of the OpenFn automation to the St. Lucia MOH team for the duration of the pilot. In the coming months, the St. Lucia MOH and OS4H will consider adding functionality and deploying the solution on a local, ministry-managed server, using OpenFn Lightning (the OpenFn “v2” fully open-source web app) for continued use at a greater scale.

    In the meantime, the OS4H team is continuing to deliver transformative digital solutions for partners across the Caribbean and is lining up its next OpenFn project.

    info

    If your organization, like OS4H, is hoping to develop in-house workflow automation expertise, contact partnerships@openfn.org to learn more about the OpenFn Partner Program and training options. Also check out OpenFn Community and OpenFn Documentation to learn from other OpenFn partners and implementers from our open source community.

    - + \ No newline at end of file diff --git a/blog/tags/os-ca-r.html b/blog/tags/os-ca-r.html index 8229505a772..744a2dca3a5 100644 --- a/blog/tags/os-ca-r.html +++ b/blog/tags/os-ca-r.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ secure OpenFn project space with the automated data sharing workflows required to allow for the Cambodian government and their partner NGO caseworkers to communicate with one another seamlessly.

    - + \ No newline at end of file diff --git a/blog/tags/payments.html b/blog/tags/payments.html index 84319f50107..e051bbb0979 100644 --- a/blog/tags/payments.html +++ b/blog/tags/payments.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/blog/tags/postgre-sql.html b/blog/tags/postgre-sql.html index 0a03b109c66..2046bc29410 100644 --- a/blog/tags/postgre-sql.html +++ b/blog/tags/postgre-sql.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    2 posts tagged with "PostgreSQL"

    View All Tags

    · 4 min read

    Since 2020, the Wildlife Conservation Society (“WCS”) has leveraged the OpenFn Integration Toolkit to collect, clean, and integrate critical data for critical conservation programs targeting the world's largest wild places. WCS and its partners work at the frontline of conservation, and with support from OpenFn, they can automatically and seamlessly integrate and quickly analyse the masses of data collected across dozens of countries.

    - + \ No newline at end of file diff --git a/blog/tags/primero.html b/blog/tags/primero.html index ebde12af2a1..02b6d641ac5 100644 --- a/blog/tags/primero.html +++ b/blog/tags/primero.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ secure OpenFn project space with the automated data sharing workflows required to allow for the Cambodian government and their partner NGO caseworkers to communicate with one another seamlessly.

    - + \ No newline at end of file diff --git a/blog/tags/redash.html b/blog/tags/redash.html index 1bff64cddb4..aa31d8b6fd3 100644 --- a/blog/tags/redash.html +++ b/blog/tags/redash.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/blog/tags/salesforce.html b/blog/tags/salesforce.html index 384573ca109..3128fcd1e83 100644 --- a/blog/tags/salesforce.html +++ b/blog/tags/salesforce.html @@ -22,7 +22,7 @@ - + @@ -44,7 +44,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/blog/tags/sms.html b/blog/tags/sms.html index ca84ec9b3bf..f55d4da7fb1 100644 --- a/blog/tags/sms.html +++ b/blog/tags/sms.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/blog/tags/st-lucia.html b/blog/tags/st-lucia.html index c98707f714b..076dbfecd6a 100644 --- a/blog/tags/st-lucia.html +++ b/blog/tags/st-lucia.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    One post tagged with "St. Lucia"

    View All Tags

    · 7 min read

    Open Solutions for Health (“OS4H”) is an Integrated Systems for Health collaborator and implementer specializing in providing enterprise support for free and open-source systems (FOSS). They customize small, mid-range and large open source health applications for Ministries of Health, medical councils, medical doctor practices, health groups and hospitals in the Caribbean. OS4H is also our first certified OpenFn implementation partner in the Caribbean, trained to deliver workflow automation projects to help their regional partners achieve health systems interoperability.

    Peter Ricketts, CEO at OS4H, says the Dominica-based team provides sustainable solutions designed to meet the needs of organizations in small island developing states (SIDS) that will strengthen their health management operations. While OS4H specializes in digital health implementations for the Caribbean, their team of IT specialists also works across other sectors, including education and agriculture.

    “At OS4H, our mission is to improve health outcomes by matching the right technologies to the problems and build the supporting framework around it to ensure it is implemented and sustained over the long run. We believe in making high quality data and information available to those who need it, where they need it, and when they need it in a sustainable manner.” - Peter Ricketts

    osh4h-team
    Above: Members of the Open Solutions for Health team based in Roseau, Dominica.

    This year, OS4H has been working with partners at the St. Lucia Ministry of Health (MOH) to expand their in-country DHIS2 implementation to monitor key immunization indicators so that they can strengthen management operations against vaccine preventable diseases. Check out this press release to learn more about the project supported by the Pan American Health Organization (PAHO).

    DHIS2 offers robust dashboard and data visualization options, but St. Lucia’s immunization data was collected in a separate database, along with sensitive patient information that should only be accessed by authorized users. Therefore, to (i) avoid manual data entry and indicators calculations, and (ii) minimize access to sensitive patient data, OS4H sought to automate the reporting of key immunization indicators to DHIS2. After researching secure, open source, and OpenHIE-compliant options for data integration, OS4H decided to deliver this solution using the OpenFn workflow automation platform.

    In less than 1 month, OS4H successfully designed and implemented workflow automation on OpenFn that integrates the St. Lucia Health Information System (“SLUHIS”) database with DHIS2, enabling regular, nation-wide monitoring of key immunization indicators for MOH staff and epidemiologists.

    This OS4H implementation consisted of two phases: (1) training on the OpenFn platform and(2) implementation of the automated workflow for St. Lucia.

    OS4H is now a certified OpenFn implementer

    At OpenFn, we have a small implementation team that cannot meet the rising demand for workflow automation we’re seeing worldwide. Therefore, we are investing more in partner enablement to help develop the automation expertise and OpenFn implementation capacity of local IT teams solving local problems–like OS4H in the Caribbean. Earlier this year, our core team launched the OpenFn Implementation Partner Program to offer training on the OpenFn Digital Public Good, as well as on our implementation process.

    To quickly learn how to implement OpenFn, the OS4H team completed the OpenFn Partner Onboarding Training to learn about the OpenFn product suite, as well as how to successfully design and deliver workflow automation implementations end-to-end. Over the course of 2 weeks, OS4H team members attended online training sessions and completed “homework” exercises to practice OpenFn fundamentals and prepare for their upcoming, real-world projects. At the end of the training, the OS4H team officially joined the OpenFn Community, received “OpenFn Essentials” badges for OpenFn administration and development, and were prepared to kick off their first implementation with the St. Lucia Ministry of Health.

    "After adopting the OpenHIE reference architecture, we began exploring the various referenced technologies. Upon review of the interoperability layer technologies, we quickly appreciated the versatility and ease of use of OpenFn.

    When data transformation is needed, OpenFn utilizes JavaScript, a scripting language that is familiar to most developers in the Caribbean. This meant a lower learning curve, enabling us to get up and running relatively quickly. Furthermore, the support from the OpenFn core team allowed us to build in-house capacity for the full delivery cycle of an OpenFn project." - Peter Ricketts

    Automating indicators reporting for the MOH

    Following the OpenFn training, the OS4H team successfully led the design and implementation of a solution which integrates SLUHIS, the St. Lucia MOH's health information system built on a PostgreSQL database, with their DHIS2 reporting system.

    This process involved consultations with St. Lucia MOH partners to understand the SLUHIS data structure and how to map SLUHIS data points to the DHIS2 data model. Once the data mapping requirements and workflow steps were clearly defined, then OS4H was able to configure the workflow on OpenFn and schedule the automation to run hourly.

    osh4h-flow

    How the workflow automation works:

    1. On an hourly basis, OpenFn executes complex SQL queries to extract and aggregate immunization data from the SLUHIS PostgreSQL database.
    2. OpenFn next fetches a list of “data mapping rules” from SLUHIS, which inform how municipalities should be reassigned to organization units in the DHIS2 location hierarchy.
    3. OpenFn then maps the SLUHIS aggregated indicators results to related DHIS2 data elements to prepare the data for import.
    4. Finally, using the DHIS2 adaptor, OpenFn imports data values to DHIS2, updating linked indicators and dashboards.

    As the workflow runs, all activity history can be centrally monitored in the OpenFn platform, and alerts are configured to notify St. Lucia MOH partners if any errors are thrown.

    osh4h-dashboard
    Above: Screenshot of the test DHIS2 dashboard for key immunization indicators, which displays data from SLUHIS that is aggregated and updated by OpenFn daily. This image contains test data only.

    For the MOH staff and epidemiologist end users, the DHIS2 immunization dashboards are updated automatically and regularly, ensuring access to timely and accurate information. MOH dashboard users don't need to worry about manual reporting and data analysis tasks. Automation enables MOH staff to focus on identifying trends and patterns in the administration of vaccines to improve program management operations.

    These users might not even be aware that OpenFn is engine powering the workflow automation under the hood—for them, the dashboard just works.

    osh4h-meet
    Above: Screenshot from online meeting with Taylor Downs (OpenFn) and Clem Francis (Developer, OS4H) celebrating the successful setup of an OpenFn workflow that automates calculating and reporting aggregated data values for key indicators to DHIS2.

    What's next?

    In April 2023, OS4H successfully launched the DHIS2 dashboard solution and handed over the monitoring of the OpenFn automation to the St. Lucia MOH team for the duration of the pilot. In the coming months, the St. Lucia MOH and OS4H will consider adding functionality and deploying the solution on a local, ministry-managed server, using OpenFn Lightning (the OpenFn “v2” fully open-source web app) for continued use at a greater scale.

    In the meantime, the OS4H team is continuing to deliver transformative digital solutions for partners across the Caribbean and is lining up its next OpenFn project.

    info

    If your organization, like OS4H, is hoping to develop in-house workflow automation expertise, contact partnerships@openfn.org to learn more about the OpenFn Partner Program and training options. Also check out OpenFn Community and OpenFn Documentation to learn from other OpenFn partners and implementers from our open source community.

    - + \ No newline at end of file diff --git a/blog/tags/supply-chain-system.html b/blog/tags/supply-chain-system.html index dcb45252137..4814b9662dc 100644 --- a/blog/tags/supply-chain-system.html +++ b/blog/tags/supply-chain-system.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ activities. With this integrated service system, X-runner can deliver high quality customer service and technical assistance to their customers, with no time lag.

    - + \ No newline at end of file diff --git a/blog/tags/survey-cto.html b/blog/tags/survey-cto.html index 4b7838e5ad3..a93a6a7864f 100644 --- a/blog/tags/survey-cto.html +++ b/blog/tags/survey-cto.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ manual data entry and cleaning processes.The real-time connection has enabled live data monitoring for the team as iKapaData survey enumerators were conducting the survey.

    - + \ No newline at end of file diff --git a/blog/tags/swiss-tph.html b/blog/tags/swiss-tph.html index b821b10f77d..62b60fa1107 100644 --- a/blog/tags/swiss-tph.html +++ b/blog/tags/swiss-tph.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ reporting system for the ALMANACH health initiative, OpenFn provided SwissTPH with an automated, real-time connection that enables live disease monitoring in 2019.

    - + \ No newline at end of file diff --git a/blog/tags/telerivet.html b/blog/tags/telerivet.html index c88f690c0da..4e63012164f 100644 --- a/blog/tags/telerivet.html +++ b/blog/tags/telerivet.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/blog/tags/tips.html b/blog/tags/tips.html index ca263e8a243..8aff79a51ac 100644 --- a/blog/tags/tips.html +++ b/blog/tags/tips.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    2 posts tagged with "tips"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/unicef.html b/blog/tags/unicef.html index 6f65c663b83..752aa130011 100644 --- a/blog/tags/unicef.html +++ b/blog/tags/unicef.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ secure OpenFn project space with the automated data sharing workflows required to allow for the Cambodian government and their partner NGO caseworkers to communicate with one another seamlessly.

    - + \ No newline at end of file diff --git a/blog/tags/wash.html b/blog/tags/wash.html index 6f4ed0bee4e..05fa067b623 100644 --- a/blog/tags/wash.html +++ b/blog/tags/wash.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ activities. With this integrated service system, X-runner can deliver high quality customer service and technical assistance to their customers, with no time lag.

    - + \ No newline at end of file diff --git a/blog/tags/wcs.html b/blog/tags/wcs.html index 387961ab62a..77bb9cd4b9d 100644 --- a/blog/tags/wcs.html +++ b/blog/tags/wcs.html @@ -22,13 +22,13 @@ - +

    One post tagged with "WCS"

    View All Tags

    · 4 min read

    Since 2020, the Wildlife Conservation Society (“WCS”) has leveraged the OpenFn Integration Toolkit to collect, clean, and integrate critical data for critical conservation programs targeting the world's largest wild places. WCS and its partners work at the frontline of conservation, and with support from OpenFn, they can automatically and seamlessly integrate and quickly analyse the masses of data collected across dozens of countries.

    - + \ No newline at end of file diff --git a/blog/tags/wildlife.html b/blog/tags/wildlife.html index ea18749f48c..5fc46bcbca0 100644 --- a/blog/tags/wildlife.html +++ b/blog/tags/wildlife.html @@ -22,13 +22,13 @@ - +

    One post tagged with "wildlife"

    View All Tags

    · 4 min read

    Since 2020, the Wildlife Conservation Society (“WCS”) has leveraged the OpenFn Integration Toolkit to collect, clean, and integrate critical data for critical conservation programs targeting the world's largest wild places. WCS and its partners work at the frontline of conservation, and with support from OpenFn, they can automatically and seamlessly integrate and quickly analyse the masses of data collected across dozens of countries.

    - + \ No newline at end of file diff --git a/blog/tags/x-runner.html b/blog/tags/x-runner.html index 99414bd4627..15cf2d7fb7d 100644 --- a/blog/tags/x-runner.html +++ b/blog/tags/x-runner.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ activities. With this integrated service system, X-runner can deliver high quality customer service and technical assistance to their customers, with no time lag.

    - + \ No newline at end of file diff --git a/blog/tags/zoho.html b/blog/tags/zoho.html index 9a0c989d1b3..662b58bcabe 100644 --- a/blog/tags/zoho.html +++ b/blog/tags/zoho.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ manual data entry and cleaning processes.The real-time connection has enabled live data monitoring for the team as iKapaData survey enumerators were conducting the survey.

    - + \ No newline at end of file diff --git a/documentation.html b/documentation.html index c4a8a971be2..b9c43c7982c 100644 --- a/documentation.html +++ b/documentation.html @@ -22,7 +22,7 @@ - + @@ -73,7 +73,7 @@ community.openfn.org. Sign up and join the conversation. Usually, that's the quickest way to get help if you've got questions that aren't answered here.

    - + \ No newline at end of file diff --git a/documentation/about-lightning.html b/documentation/about-lightning.html index 833b083831c..57eae9bb0ca 100644 --- a/documentation/about-lightning.html +++ b/documentation/about-lightning.html @@ -22,7 +22,7 @@ - + @@ -141,7 +141,7 @@ manager Amber via email or even better book some time with her through her calendar.

    When will Lightning Beta be ready?

    Lightning is currently in private Beta. You can register for an account on app.openfn.org.

    - + \ No newline at end of file diff --git a/documentation/about.html b/documentation/about.html index 5e622f21a25..a6edc44a5bf 100644 --- a/documentation/about.html +++ b/documentation/about.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ and a huge number of open-source workflow automation, data integration, and "ETL" tools which you can find on our Github.

    The platform is trusted by some of the leading development organizations in the world, including UNICEF, the WHO, the IRC, and Population Council.

    You can learn more about the people at Open Function Group here.

    - + \ No newline at end of file diff --git a/documentation/build/credentials.html b/documentation/build/credentials.html index d36ce42bc5e..478b51e1e3e 100644 --- a/documentation/build/credentials.html +++ b/documentation/build/credentials.html @@ -22,7 +22,7 @@ - + @@ -41,7 +41,7 @@ and checking for the value of a predetermined identifier. Based on that value, present in the data for a given source message, for example, another credential will be selected and applied for that particular job run.

    - + \ No newline at end of file diff --git a/documentation/build/example-build.html b/documentation/build/example-build.html index 851734071a1..f2ec634d60a 100644 --- a/documentation/build/example-build.html +++ b/documentation/build/example-build.html @@ -22,7 +22,7 @@ - + @@ -98,7 +98,7 @@ every time a message matches the trigger inclusion criteria, turn on auto-process.

    autoprocess

    You're all set! Try out your job by submitting another form response to see the data automatically populate your google sheet.

    - + \ No newline at end of file diff --git a/documentation/build/inbox.html b/documentation/build/inbox.html index 0862202e47f..39569c89612 100644 --- a/documentation/build/inbox.html +++ b/documentation/build/inbox.html @@ -22,7 +22,7 @@ - + @@ -64,7 +64,7 @@ 5XX. This is not recommended for high volume systems, but may be a requirement for some implementations; the sprit of OpenFn/microservice is to give as much control as possible to whoever is deploying it on their servers.

    - + \ No newline at end of file diff --git a/documentation/build/jobs.html b/documentation/build/jobs.html index aa20d338858..72c3284072f 100644 --- a/documentation/build/jobs.html +++ b/documentation/build/jobs.html @@ -22,7 +22,7 @@ - + @@ -143,7 +143,7 @@ Salesforce, you're taking the id of the 1st thing, or 2nd thing if you replace "length-1" with "length-2".

    Convert date string to standard ISO date for Salesforce

    field('Payment_Date__c', function (state) {
    return new Date(dataValue('payment_date')(state)).toISOString();
    });

    NOTE: The output of this function will always be formatted according to GMT time-zone.

    Use external ID fields for relationships during a bulk load in Salesforce

    array.map(item => {
    return {
    Patient_Name__c: item.fullName,
    'Account.Account_External_ID__c': item.account
    'Clinic__r.Unique_Clinic_Identifier__c': item.clinicId,
    'RecordType.Name': item.type,
    };
    });

    Bulk upsert with an external ID in salesforce

    bulk(
    'Visit_new__c',
    'upsert',
    {
    extIdField: 'commcare_case_id__c',
    failOnError: true,
    allowNoOp: true,
    },
    dataValue('patients')
    );
    - + \ No newline at end of file diff --git a/documentation/build/lightning-quick-start.html b/documentation/build/lightning-quick-start.html index 6a5be5a696b..d8b85983e46 100644 --- a/documentation/build/lightning-quick-start.html +++ b/documentation/build/lightning-quick-start.html @@ -22,7 +22,7 @@ - + @@ -97,7 +97,7 @@ Give it a go, and don't forget to post on our community forum if you get stuck - or to let us know what you built.

    - + \ No newline at end of file diff --git a/documentation/build/triggers.html b/documentation/build/triggers.html index 401884160e6..3070a1d8f09 100644 --- a/documentation/build/triggers.html +++ b/documentation/build/triggers.html @@ -22,7 +22,7 @@ - + @@ -81,7 +81,7 @@ but we then want to start excluding those that have body.survey_type == 'practice'. Our filter trigger would look need to like this:

    inclusionexclusion
    { "form": "bns_survey" }{"body": {"survey_type": "practice"}}

    We'd set it up from the trigger form like this:

    img

    And verify the result on the inbox:

    img

    - + \ No newline at end of file diff --git a/documentation/build/troubleshooting.html b/documentation/build/troubleshooting.html index e9c74e2f26b..6ed8b2227b0 100644 --- a/documentation/build/troubleshooting.html +++ b/documentation/build/troubleshooting.html @@ -22,7 +22,7 @@ - + @@ -78,7 +78,7 @@ and enable a better "OK, how should we solve this given the current chronological and commercial constraints" conversation between the Implementation Team and the Engineering Team.

    - + \ No newline at end of file diff --git a/documentation/cli.html b/documentation/cli.html index f02ef75ef48..474d695284a 100644 --- a/documentation/cli.html +++ b/documentation/cli.html @@ -22,7 +22,7 @@ - + @@ -163,7 +163,7 @@ will do a number of things to make your code robust, portable, and easier to debug from a pure JS perspective.

    openfn compile [path]

    Will compile the openfn job and print or save the resulting js.

    Learn more about CLI github.com/OpenFn/kit/

    - + \ No newline at end of file diff --git a/documentation/core.html b/documentation/core.html index 8d1ebe83f38..b2f2b79dfe3 100644 --- a/documentation/core.html +++ b/documentation/core.html @@ -22,7 +22,7 @@ - + @@ -38,7 +38,7 @@ be incredibly helpful for debugging.

    Using the new CLI.

    If you're a new OpenFn user and want to build or test jobs for Lighting (v2) and beyond in 2023, use the new CLI instead!

    How do I use it?

    Check out the official documentation on Github.

    The tl;dr: is that you execute jobs from the command line by passing in an expression, state, and the path to an adaptor.

    npm install @openfn/core
    core execute -l ../language-http.Adaptor -e ./some-exprsesion.js -s ./some-state.json

    The full options are:

    -l, --language    resolvable language/adaptor path                [required]
    -e, --expression target expression to execute [required]
    -s, --state Path to initial state file. [required]
    -o, --output Path to write result from expression
    -t, --test Intercepts and logs all HTTP requests to console
    - + \ No newline at end of file diff --git a/documentation/deploy/options.html b/documentation/deploy/options.html index 60662d70b17..b00fcae858a 100644 --- a/documentation/deploy/options.html +++ b/documentation/deploy/options.html @@ -22,7 +22,7 @@ - + @@ -66,7 +66,7 @@ the export).
  • Test your locally deployed project.
  • Technical Guidelines

    For detailed deployment documentation instructions, head to the Lightning developer docs page, paying special attention to several sections:

    1. Getting Started
    2. Deployment Considerations
    3. Benchmarking
    - + \ No newline at end of file diff --git a/documentation/deploy/requirements.html b/documentation/deploy/requirements.html index 0802186a21b..6e8fec706cb 100644 --- a/documentation/deploy/requirements.html +++ b/documentation/deploy/requirements.html @@ -22,7 +22,7 @@ - + @@ -74,7 +74,7 @@ specialist, the following sample configurations may provide useful starting points.

    (a) Simple

    Deploy the application and database on the same machine.

    Deploy the application and database on separate machines.

    (c) Ideal

    Auto-scale different optimized node pools for the Erlang orchestration app and the Javascript worker app.

    - + \ No newline at end of file diff --git a/documentation/design/design-quickstart.html b/documentation/design/design-quickstart.html index 431b0912e71..4adaa06989c 100644 --- a/documentation/design/design-quickstart.html +++ b/documentation/design/design-quickstart.html @@ -22,7 +22,7 @@ - + @@ -107,7 +107,7 @@ implementing partners.

    Share this documentation with any technical implementation team, or check out the Build documentation section to learn how to implement these design specifications using OpenFn.

    - + \ No newline at end of file diff --git a/documentation/design/when-to-integrate.html b/documentation/design/when-to-integrate.html index 6861c5c28a9..192ec958675 100644 --- a/documentation/design/when-to-integrate.html +++ b/documentation/design/when-to-integrate.html @@ -22,14 +22,14 @@ - +
    - + \ No newline at end of file diff --git a/documentation/devtools/home.html b/documentation/devtools/home.html index 2c3c79e85ef..79532a15b21 100644 --- a/documentation/devtools/home.html +++ b/documentation/devtools/home.html @@ -22,7 +22,7 @@ - + @@ -115,7 +115,7 @@ access token in Github.

    In your ~/.bash_profile or ~/.zshrc file, export the newly created token by adding this line:

    export GH_TOKEN=<TOKEN>

    Using a new adaptor in an OpenFn/platform instance

    1. Add your release to the scripts/install-lp script.
    2. Add the version number to priv/adaptors.json.
    3. Add the bodySchema to CredentialView.js.
    - + \ No newline at end of file diff --git a/documentation/faqs.html b/documentation/faqs.html index 92987e68a26..b646c41c0d8 100644 --- a/documentation/faqs.html +++ b/documentation/faqs.html @@ -22,7 +22,7 @@ - + @@ -166,7 +166,7 @@ this page to talk now. Or Email our team at admin@openfn.org, chat us on OpenFn.org, or post a question in our Community Forum.

    - + \ No newline at end of file diff --git a/documentation/for-devs.html b/documentation/for-devs.html index 83813fa3931..a1dd22ba10a 100644 --- a/documentation/for-devs.html +++ b/documentation/for-devs.html @@ -22,7 +22,7 @@ - + @@ -69,7 +69,7 @@ must allow either basic, token, or digest authenticated POST, PUT, or GET requests. (Though it is not advisable to create an API that requires GET requests to create or update data.)

    - + \ No newline at end of file diff --git a/documentation/getting-started/commcare-project-walkthrough.html b/documentation/getting-started/commcare-project-walkthrough.html index e76a8d1edf6..44a76d15715 100644 --- a/documentation/getting-started/commcare-project-walkthrough.html +++ b/documentation/getting-started/commcare-project-walkthrough.html @@ -22,7 +22,7 @@ - + @@ -99,7 +99,7 @@ follow these same steps for other database types (e.g., MS SQL or MySQL)—simply leverage a different adaptor in your job configuration.

    Other resources to check out:

    1. OpenFn Job Library
    2. OpenFn Docs ‘App’ pages for CommCare and Postgres

    Any questions? Comments? New configuration ideas? Please reach out to us with a post on the OpenFn Community forum.

    - + \ No newline at end of file diff --git a/documentation/getting-started/glossary.html b/documentation/getting-started/glossary.html index 6902b803b3f..518fa726340 100644 --- a/documentation/getting-started/glossary.html +++ b/documentation/getting-started/glossary.html @@ -22,7 +22,7 @@ - + @@ -96,7 +96,7 @@ data type, field size, and so on.

    Writeback

    Refers to a destination system making a change in a data source. When my destination application receives information from a data source and wants to do something back to the source in response, that's writeback.

    - + \ No newline at end of file diff --git a/documentation/getting-started/implementation-checklist.html b/documentation/getting-started/implementation-checklist.html index 34a38bc305a..f2daeab8af9 100644 --- a/documentation/getting-started/implementation-checklist.html +++ b/documentation/getting-started/implementation-checklist.html @@ -22,7 +22,7 @@ - + @@ -42,7 +42,7 @@ Read about mapping specs here..
  • Data element mapping specifications finalized (functional/business-friendly version)
  • Client sign-offs on workflow diagram & mapping specs
  • Workflow assumptions documented (e.g., what human, manual steps does the workflow rely on; what are the unique identifiers)
  • Testing scenarios drafted
  • (3) Discovery & Design - Technical Specifications

    • Documentation on APIs or target connection points secured
    • Connection points & authentication methods confirmed
    • Access secured to developer/sandbox environments for testing
    • Authentication and authorization methods & credentials tested
    • Target API endpoints determined based on functional specifications & review of API docs
    • Target API endpoints tested to validate the functional data element specifications can be delivered
    • Workflow BPMN diagram capturing the technical steps of the workflow finalized
    • Technical version of data element mapping specifications created
    • Workflow assumptions updated to include any technical considerations
    • Test scenarios updated to include any technical considerations
    • Project Security Configuration Checklist drafted to capture data security & compliance considerations
    • Github repository created
    • Job specifications written for developers

    (4) Build

    • OpenFn platform: project space created & relevant users invited
    • OpenFn platform: Jobs, triggers, and credentials configured
    • OpenFn platform: Version control configured to connect Github repo
    • Jobs written & pushed to branch on Github
    • Job code review complete and merged to main branch on Github
    • OpenFn platform: Github paths updated on each job to link to source file
    • Test data created (if needed)
    • Engineer updates mapping specifications (if needed)

    (5) Testing

    • Testing Round 1: Developers run jobs locally with sample data provided
    • Testing Round 2: Analysts complete Test Scenarios & run jobs on platform
    • Iteration: Analysts submit feedback to developers & re-test
    • UAT Round 1: Client completes Test Scenarios
    • Iteration: Analysts submit feedback to developers & re-test
    • UAT Round 2 (if needed): Client completes Test Scenarios
    • Iteration: Analysts submit feedback to developers & re-test

    (6) Training & Prep for Go-Live

    • Training materials drafted for client administrators
    • Documentation drafted, and all project artefacts/docs linked
    • Project Security Configuration Checklist reviewed to determine if any configuration changes or settings need to be implemented post-testing
    • Confirm that production system(s) have been configured
    • Production credentials secured & tested (authentication & authorization)
    • OpenFn platform: "production" project created (cloned from "staging" project), job configuration migrated, & jobs connected to production credentials
    • OpenFn administrator users & access levels confirmed and granted?
    • Support POCs identified for each target system?
    • Establish support structures & governance model for change management
    • Training session delivered to designated OpenFn and target system administrators and any other ToTs

    Rollout & Support

    • Go Live: Turn "on" OpenFn jobs in production platform project so that the workflow is now live in production systems
    • Confirm administrators have OpenFn notifications turned on to "Each Time" so that they will receive failure notifications (see OpenFn Account Settings)
    • Communicate to end users as needed about the go-live and its implications

    Questions or feedback?

    If you have any inputs, comments, or questions–please contribute! Submit a pull request to this documentation page or leave a comment in OpenFn Community.

    - + \ No newline at end of file diff --git a/documentation/getting-started/integrating-using-openfn.html b/documentation/getting-started/integrating-using-openfn.html index 4f49a3fc1f0..8944191c1a5 100644 --- a/documentation/getting-started/integrating-using-openfn.html +++ b/documentation/getting-started/integrating-using-openfn.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ Why->not our problem/data mapping How->All of this stuff How safely->Credentials

    - + \ No newline at end of file diff --git a/documentation/getting-started/integration-toolkit.html b/documentation/getting-started/integration-toolkit.html index c19771a4578..96abd50333d 100644 --- a/documentation/getting-started/integration-toolkit.html +++ b/documentation/getting-started/integration-toolkit.html @@ -22,7 +22,7 @@ - + @@ -71,7 +71,7 @@ changes.

    The OSSC's membership and decision making process are defined in the OSSC's internal governance policy if if you're interested in joining, we'd love to hear from you!

    - + \ No newline at end of file diff --git a/documentation/getting-started/security.html b/documentation/getting-started/security.html index c60b552d903..be163b9281d 100644 --- a/documentation/getting-started/security.html +++ b/documentation/getting-started/security.html @@ -22,7 +22,7 @@ - + @@ -49,7 +49,7 @@ openfn.org/trust and openfn.org/compliance.

    Here are the key OpenFn templates and resources referenced in the Guidebook:

    Communities of practice & other experts

    Here are some other communities you may consider following for more security guidance.

    1. OpenHIE Privacy & Security Working Group
    2. GovStack
    3. DHIS2 Security Team & Community of Practice
    4. Asia eHealth Information Network (AeHIN) Communities of Practice
    - + \ No newline at end of file diff --git a/documentation/getting-started/so-you-want-to-integrate.html b/documentation/getting-started/so-you-want-to-integrate.html index 2adbd86e61d..69ec1d84b09 100644 --- a/documentation/getting-started/so-you-want-to-integrate.html +++ b/documentation/getting-started/so-you-want-to-integrate.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ it is you really want before you start writing (or borrowing) a job.

    There are plenty of different reasons to integrate your data systems. Maybe you -want one "master" view that you or your clients can trust as a source of truth.

    Maybe you want to automate some data viz that you currently have to do manually.

    Or maybe you just want to expose a small slice of data from one user group to a +want one "master" view that you or your clients can trust as a source of truth.

    Maybe you want to automate some data viz that you currently have to do manually.

    Or maybe you just want to expose a small slice of data from one user group to a different app used exclusively by some other part of your company.

    Regardless of the reason, what every integration boils down to is connecting two or more disconnected applications. But as you can see, not all integrations look alike. This basic structure comes in many shapes and sizes. There's plenty of @@ -45,7 +45,7 @@ any integration and weigh potential outcomes of design decisions against that ultimate goal.

    1. When you move the data.

    Usually, you can articulate the best case scenario here in plain English pretty easily.

    I want Salesforce to ___ when one of our field workers submits a new -CommCare form.

    or

    I want Postgres to ___ every two weeks.

    A crucial difference between these two whens is that the first turns on an +CommCare form.

    or

    I want Postgres to ___ every two weeks.

    A crucial difference between these two whens is that the first turns on an action, whereas the second is based on a set period of time, regardless of what happens in that window.

    1. How you move the data, namely whether the destination system is pulling or the source system is pushing (or some other pattern), what format the data @@ -66,7 +66,7 @@ this slice of the world as authentication.

      These are all very important questions to consider when designing an integration. Check out our docs on integration design to learn more about how we begin to answer these questions and more:

      - + \ No newline at end of file diff --git a/documentation/getting-started/terminology.html b/documentation/getting-started/terminology.html index c7ee571a6c0..2dcfd4d949e 100644 --- a/documentation/getting-started/terminology.html +++ b/documentation/getting-started/terminology.html @@ -22,7 +22,7 @@ - + @@ -101,7 +101,7 @@ for that message, and this third run succeeded, you'd still only see 2 "job-states" in the inbox, but they'd both be successful:

      1. Referral (success - run 1)
      2. Payment (success - run 3)

      Browsing to the receipt inspector would show all three runs for this single message.

      - + \ No newline at end of file diff --git a/documentation/gsoc.html b/documentation/gsoc.html index ef16aa7c909..cf0b1cfbcd6 100644 --- a/documentation/gsoc.html +++ b/documentation/gsoc.html @@ -22,7 +22,7 @@ - + @@ -67,7 +67,7 @@ community.openfn.org for more information.

      Difficulty level: medium

      You'll be working in NodeJs and Typescript.

      - + \ No newline at end of file diff --git a/documentation/instant-openhie.html b/documentation/instant-openhie.html index 8b67e8a65b9..e60a0416162 100644 --- a/documentation/instant-openhie.html +++ b/documentation/instant-openhie.html @@ -22,7 +22,7 @@ - + @@ -178,7 +178,7 @@ the microservice endpoint (localhost:4001/inbox) and checking to see that resources are created in HAPI FHIR.
    2. Note how the test.js file handles this verification with the sample project.yaml
    3. - + \ No newline at end of file diff --git a/documentation/jobs/each.html b/documentation/jobs/each.html index 1ec9c26d468..1c18ebbc377 100644 --- a/documentation/jobs/each.html +++ b/documentation/jobs/each.html @@ -22,7 +22,7 @@ - + @@ -52,7 +52,7 @@ the data, and then create new records for each item in the second repeat group. Using beta.each(...) lets you enter the first array, create your records, then return to the top level and be able to enter the second array.

      // create some schools from the state.data.form.schools array...
      beta.each(
      dataPath('form.schools[*]'),
      upsert(
      'School__c',
      'School_ID__c',
      fields(
      field('School_ID__c', dataValue('schoolId')),
      field('School_Name__c', dataValue('schoolName')),
      )
      )
      );

      // back up at the top level, we scope the next array with each...
      beta.each(
      dataPath('form.participants[*]'),
      upsert(
      'Person__c',
      'Participant_Identification_Number_PID__c',
      fields(
      field('Participant_Identification_Number_PID__c', dataValue('pid')),
      relationship('RecordType', 'Name', 'Participant'),
      field('First_Name__c', dataValue('participant_first_name')),
      field('Surname__c', dataValue('participant_surname')),
      field('Mobile_Number_1__c', dataValue('mobile_number'))
      field('Sex__c', dataValue('gender')),
      )
      )
      );
      - + \ No newline at end of file diff --git a/documentation/jobs/editing_locally.html b/documentation/jobs/editing_locally.html index 25e86cc3aaa..9261b7ef3b0 100644 --- a/documentation/jobs/editing_locally.html +++ b/documentation/jobs/editing_locally.html @@ -22,7 +22,7 @@ - + @@ -53,7 +53,7 @@ git docs).

    From there, the version control integration will update changed jobs in your OpenFn project and you can test those changes on the platform.

    Once you're ready to start running jobs and testing your changes locally, head over to the The CLI docs for guidance.

    - + \ No newline at end of file diff --git a/documentation/jobs/errors.html b/documentation/jobs/errors.html index 7d4960660a4..cfa5f902d6c 100644 --- a/documentation/jobs/errors.html +++ b/documentation/jobs/errors.html @@ -22,7 +22,7 @@ - + @@ -53,7 +53,7 @@ subsequently aborted by request of an administrator or owner of that project.

    11: Node.js Error

    Exit code 11 means that there was an error in the NodeVM execution but the exit code itself couldn't be captured by our application.

    Limits

    We've shifted this content to a dedicated limits page.

    NodeVM memory limits

    Job state limits

    - + \ No newline at end of file diff --git a/documentation/jobs/job-design-intro.html b/documentation/jobs/job-design-intro.html index 47284976a33..e8b66acbab4 100644 --- a/documentation/jobs/job-design-intro.html +++ b/documentation/jobs/job-design-intro.html @@ -22,7 +22,7 @@ - + @@ -44,7 +44,7 @@ doesn’t; references an external Id b. Example from language-dhis2 using Tracked Entity Instances (TEI)
  • updateTEI(...)
  • upsertTEI(...)
  • Example upsert job:

    upsert('mainDataTable', 'AnswerId', {
      AnswerId: dataValue('\_id'), //external Id for upsert
      column: dataValue('firstQuestion)'),
      LastUpdate: new Date().toISOString(),
      Participant: dataValue('participant'),
      Surveyor: dataValue('surveyor'),
      ...
    });
    - + \ No newline at end of file diff --git a/documentation/jobs/job-studio.html b/documentation/jobs/job-studio.html index 9b301570228..0bfe4ed9641 100644 --- a/documentation/jobs/job-studio.html +++ b/documentation/jobs/job-studio.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ paste it as a dataValue in your job.

    You can find a list of avaible helper functions for your chosen adaptor in the job writing panel heading. Clicking the function name copies the function code that you can directly paste into the job.

    Job_Studio_Edit

    By clicking "Save and Run" run logs are shown real-time in the Output panel.

    Stream

    - + \ No newline at end of file diff --git a/documentation/jobs/limits.html b/documentation/jobs/limits.html index c8a3d79be25..e09f284a353 100644 --- a/documentation/jobs/limits.html +++ b/documentation/jobs/limits.html @@ -22,7 +22,7 @@ - + @@ -49,7 +49,7 @@ a CRON job, remains below 10MB.

    Sometimes, this necessitates streaming data from A -> B in the same job. Other times it will necessitate storing data as local variables and then posting data to your inbox in chunks before cleaning up state.

    - + \ No newline at end of file diff --git a/documentation/jobs/multiple-operations.html b/documentation/jobs/multiple-operations.html index 522309e3ce9..b05cc6bb74e 100644 --- a/documentation/jobs/multiple-operations.html +++ b/documentation/jobs/multiple-operations.html @@ -22,7 +22,7 @@ - + @@ -40,7 +40,7 @@ job be triggered by a message filter.

    get('somePath', { query: { after: '2020-10-12' } }, post('my-inbox-uuid'));
    • You'd like to store the result of the first operation for later use or inspection and not have to retry that operation in order to reproduce the data.
    • You don't care about small delays between the first and second job being run.
    - + \ No newline at end of file diff --git a/documentation/jobs/operations.html b/documentation/jobs/operations.html index 07816064e67..47200daaab1 100644 --- a/documentation/jobs/operations.html +++ b/documentation/jobs/operations.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ credentials, or any dynamic data that you may be available at runtime.

    function create(objectName, data) {
    return function (state) {
    // expand the data argument using state
    // actually do the work
    };
    }

    In this snippet is a simple example of what most functions in OpenFn look like. The create function returns a function that takes state, this is an Operation. The runtime using execute will call all Operations with state.

    - + \ No newline at end of file diff --git a/documentation/jobs/state.html b/documentation/jobs/state.html index 8d6db8cbc85..308ac4d5f11 100644 --- a/documentation/jobs/state.html +++ b/documentation/jobs/state.html @@ -22,7 +22,7 @@ - + @@ -40,7 +40,7 @@ will instead receive the initial state of the previous (failed) run, plus a new error key that contains the stringified logs from the previous run. See below for details.

    States by job trigger type

    Triggering EventInitial State
    http request{ data: httpRequest.body, configuration: job.credential.body }
    cron{ ...finalStateOfLastSuccessfulRun, configuration: job.credential.body }
    flow: success{ ...finalStateOfTriggeringRun, configuration: job.credential.body }
    flow: failure{ ...initialStateOfTriggeringRun, error: logsFromTriggeringRun, configuration: job.credential.body }
    - + \ No newline at end of file diff --git a/documentation/jobs/understanding.html b/documentation/jobs/understanding.html index 4545a1c27a0..7e667f22191 100644 --- a/documentation/jobs/understanding.html +++ b/documentation/jobs/understanding.html @@ -22,7 +22,7 @@ - + @@ -43,7 +43,7 @@ inside an alterState operation, but WAIT for those functions to resolve before moving on to your next operation. If execute doesn't work for your use case, you could use Promise.all and return an async function.

    fn(state => {
    console.log('Here we will await the result of a LOT of async operations.');
    console.log('First we define a bunch of different async functions.');
    const postClinics = async c => {
    return post(state.configuration.inboxUrl, {
    body: { clinics: c },
    })(state);
    };

    const postPatients = async p => {
    return post(state.configuration.inboxUrl, {
    body: { patients: p },
    })(state);
    };

    const postVisits = async v => {
    return post(state.configuration.inboxUrl, {
    body: { visits: v },
    })(state);
    };

    console.log(
    'Then we define a single function that wraps them all up and waits for all the individual functions to resolve.'
    );
    async function makePosts() {
    return Promise.all([
    ...state.data.clinicSets.map(item => postClinics(item)),
    ...state.data.patientSets.map(item => postPatients(item)),
    ...state.data.visitSets.map(item => postVisits(item)),
    ]);
    }

    console.log(
    'Then we return that function, forcing our next operation to await the result of this one.'
    );
    return makePosts();
    });

    fn(state => {
    console.log('I get called AFTER those async functions are resolved.');
    return state;
    });
    - + \ No newline at end of file diff --git a/documentation/jobs/working_with_branches.html b/documentation/jobs/working_with_branches.html index f519f278043..2e63b2a201c 100644 --- a/documentation/jobs/working_with_branches.html +++ b/documentation/jobs/working_with_branches.html @@ -22,7 +22,7 @@ - + @@ -48,7 +48,7 @@ with git checkout main and hit git pull to pull any changes.

  • If you're still working on your separate branch while main has been updated, use git checkout {branch_name} followed by git merge main to copy over new changes from main to your branch.

  • - + \ No newline at end of file diff --git a/documentation/manage/platform-mgmt.html b/documentation/manage/platform-mgmt.html index 669c2477dbb..d412fc4ef80 100644 --- a/documentation/manage/platform-mgmt.html +++ b/documentation/manage/platform-mgmt.html @@ -22,7 +22,7 @@ - + @@ -373,7 +373,7 @@ selecting that version (by its commit date and SHA) on the job view page. A new commit will be made, updating the job to the state it was in at the time of the old commit.

    - + \ No newline at end of file diff --git a/documentation/manage/troubleshooting-tips-on-platform.html b/documentation/manage/troubleshooting-tips-on-platform.html index e89211dc35a..4f8ebd8f403 100644 --- a/documentation/manage/troubleshooting-tips-on-platform.html +++ b/documentation/manage/troubleshooting-tips-on-platform.html @@ -22,7 +22,7 @@ - + @@ -116,7 +116,7 @@ editing and re-submission of data. You can use OpenFn to edit the source data before retrying the attempt.

    Common Error Messages

    The most common error messages with English explanations are:

    DUPLICATE_VALUE: duplicate value found: ODK_uuid__c duplicates value on record with id: a0524000005wNw0
    The insert is blocked because you are attempting to create a new record with a
    unique field with the same value as an existing record.
    Required value missing
    ExternalId not found
    { INVALID_FIELD_FOR_INSERT_UPDATE: Unable to create/update fields: Contact__c.
    Please check the security settings of this field and verify that it is
    read/write for your profile or permission set. }

    This last one may arise if a master-detail relationship in Salesforce is not set as reparentable and the user attempts to run an upsert.

    - + \ No newline at end of file diff --git a/documentation/microservice/home.html b/documentation/microservice/home.html index 65d8802107a..f5d0398b4ca 100644 --- a/documentation/microservice/home.html +++ b/documentation/microservice/home.html @@ -22,7 +22,7 @@ - + @@ -80,7 +80,7 @@ Development Up and Running Guide.

  • If you export as microservice.zip, you'll get your microservice folder ready to run with docker, containing

    • a docker-compose.yaml config file
    • a project folder containing project.yaml
    • .env file with the default environment variables for docker
    • a Readme file

    cd into the folder and run the project with docker-compose up. If you don't have the docker image, it will be auto-pulled from hub.docker.com.

    Export Microservice Zip

    - + \ No newline at end of file diff --git a/documentation/openfn-roadmap.html b/documentation/openfn-roadmap.html index e25c1ab37cf..9282f4c7b0a 100644 --- a/documentation/openfn-roadmap.html +++ b/documentation/openfn-roadmap.html @@ -22,7 +22,7 @@ - + @@ -38,7 +38,7 @@ community.openfn.org, or consider contributing to the OpenFn software, adaptors, or documentation (learn more in the Contributing section).

    - + \ No newline at end of file diff --git a/documentation/portability-versions.html b/documentation/portability-versions.html index c6228b90c7c..e8b00d5ed39 100644 --- a/documentation/portability-versions.html +++ b/documentation/portability-versions.html @@ -22,7 +22,7 @@ - + @@ -39,7 +39,7 @@ Digital Square Global Goods grant.

    The project.zip structure and files:

    /globals
    sample-clinic-map.json
    sample-translations.json
    /workflow-a
    job-1.js
    job-2.js
    job-3.js
    /workflow-b
    job-4.js
    project.yaml
    project.state.yaml

    The project.yaml:

    name: "My Project" # The project name

    globals: # All global constants accessible to this project
    clinic-map: file://./globals/clinic-map.json
    project-expense-codes: file://./globals/project-expense-codes.json
    service-codes:
    body:
    m126: Medical Referral
    g01: General Checkup
    ps: Psycho-social Support

    workflows: # All workflows in a project
    CommCare-to-OpenMRS: #The workflow name. Workflow names won't have spaces
    jobs: # All jobs/steps in a workflow
    Coerce-to-FHIR: # The job/step name
    trigger: webhook #webhook urls are uids so are not included
    adaptor: language-fhir
    enabled: true
    credential: my-fihr-credential #looks up credential in state by its name
    # when running locally, the credentials values are taken from the overrides file
    # cli run workflow "CommCare-to-OpenMRS" --overrides ./keys-and-values.yaml
    body: "file://./CommCare-to-OpenMRS/Coerce-to-FHIR.js" # each job job-body is stored in a separate file, within a folder for the whole workflow

    Load-to-openmrs:
    trigger:
    on-success: Coerce-to-FHIR
    adaptor: language-openmrs
    credential: my-other-credential
    enabled: true
    body:
    # no "include", but pathlike doesn't work: if you're doing a uri you need to be explicit about it
    # default to local fs -- no numbering because too complicated if users change the order
    "file://./CommCare-to-OpenMRS/Load-to-openmrs.js"

    Send-Wrap-Up-Reports:
    trigger:
    on-success: Load-to-openmrs
    enabled: true
    adaptor: language-mailgun
    globals:
    - service-codes
    - clinic-map
    body: >
    # this triggers a new workflow
    fn(state => state)
    sendEmail(state => state.emailContent)

    Kobo-to-DHIS2: #This is a second workflow
    Fetch-Kobo-Submissions:
    trigger:
    cron: * 5 * * *
    enabled: true
    adaptor: language-kobotoolbox
    body: "file://./Kobo-to-DHIS2/Fetch-Kobo-Submissions.js"

    Upload-to-DHIS2:
    trigger:
    on-success: Fetch-Kobo-Submissions
    adaptor: language-kobotoolbox
    enabled: false
    body: "file://./Kobo-to-DHIS2/Upload-to-DHIS2.js"

    The project.state.yaml:

    project:
    - id: '45bffee'
    key: 'My Project'

    globals:
    - id: 'sj23n36'
    key: 'clinic-map'
    - id: 'bss522g'
    key: 'project-expense-codes'
    - id: '22aa4st'
    key: 'service-codes'

    workflows:
    - id: 'cfd7c68'
    key: 'CommCare-to-OpenMRS' # this is the NAME and the KEY
    - id: 'd1ecc4f'
    key: 'Kobo-to-DHIS2'

    jobs:
    - id: 'ns6yw54'
    key: 'Coerce-to-FHIR'
    - id: '12bs52j'
    key: 'Load-to-openmrs'
    - id: 'lk81hs6'
    key: 'Send-Wrap-Up-Reports'

    - id: 'sn26sh2'
    key: 'Fetch-Kobo-Submissions'
    - id: 'sk1722h'
    key: 'Upload-to-DHIS2'

    credentials:
    - id: '12ms62y'
    key: 'My FHIR Credential'

    Proposal v3

    v3 introduces URI schemes file://, https://, gcs://

    jobs:
    job-1:
    expression: 'file://my-job.js' # URIs may be used (e.g., https://raw.githubusercontent.com/org/repo/my-job.js)
    adaptor: '@openfn/language-common'
    trigger: trigger-1
    credential: my-secret-credential
    recurring-job:
    expression: >
    fn(state => {
    console.log("Hi there!")
    return state;
    })
    adaptor: '@openfn/language-common'
    trigger: every-minute
    flow-job:
    expression: >
    fn(state => {
    state.data.number = state.data.number * 3
    return state;
    })
    adaptor: '@openfn/language-common'
    trigger: after-j1
    catch-job:
    expression: >
    fn(state => {
    state.message = "handled it."
    return state;
    })
    adaptor: '@openfn/language-common'
    trigger: j1-fails

    triggers:
    trigger-1:
    criteria: '{"number":2}'
    every-minute:
    cron: '* * * * *'
    after-j1:
    success: job-1
    j1-fails:
    failure: job-1

    credentials:
    my-secret-credential:
    username: '******' # Credential keys get exported, but values must be manually reentered
    password: '******'
    my-other-credential: 'file://gcp_credential.json' # And URIs may be specified directly for the credential body

    Proposal v2

    jobs:
    job-1:
    expression: >
    registerPatient({
    patient-id: state.data.id,
    dob: state.data.birth
    })
    adaptor: '@openfn/language-openmrs'
    trigger: trigger-1
    credential: my-secret-credential
    recurring-job:
    expression: >
    fn(state => {
    console.log("Hi there!")
    return state;
    })
    adaptor: '@openfn/language-common'
    trigger: every-minute
    flow-job:
    expression: >
    fn(state => {
    state.data.number = state.data.number * 3
    return state;
    })
    adaptor: '@openfn/language-common'
    trigger: after-j1
    catch-job:
    expression: >
    fn(state => {
    state.message = "handled it."
    return state;
    })
    adaptor: '@openfn/language-common'
    trigger: j1-fails

    triggers:
    trigger-1:
    criteria: '{"number":2}'
    every-minute:
    cron: '* * * * *'
    after-j1:
    success: job-1
    j1-fails:
    failure: job-1

    # Note that credential keys get copied, but values must be manually entered
    # after the export is completed.
    credentials:
    my-secret-credential:
    username: '******'
    password: '******'

    Proposal v1

    const project = {
    async: true,
    triggers: {
    uniqueTriggerId: {
    // trigger properties
    },
    otherTrigger: {
    // other trigger properties
    },
    },
    credentials: {
    // for now, credentials will not be synced //
    // secret1: {
    // username: 'mamadou',
    // pass: 'shhh',
    },
    staticData: {
    // static objects that can be accessed from any job
    },
    jobs: {
    payHealthWorker: { trigger: 'otherTrigger' },
    syncToSalesforce: {
    expression: 'uri://github.com/jobs/expresion.js',
    trigger: 'uniqueTriggerId',
    credential: 'secret1',
    },
    },
    };
    - + \ No newline at end of file diff --git a/documentation/portability.html b/documentation/portability.html index 0b0873b62bc..37ab5b34a2c 100644 --- a/documentation/portability.html +++ b/documentation/portability.html @@ -22,7 +22,7 @@ - + @@ -82,7 +82,7 @@ as openfn deploy --help will result in a help message describing the command and the options available when using this command. See an example below

    openfn deploy --help
    openfn deploy

    Deploy a project's config to a remote Lightning instance

    Options:
    --version Show version number [boolean]
    --help Show help [boolean]
    -c, --config, --config-path The location of your config file [default: "./.config.json"]
    --no-confirm Skip confirmation prompts (e.g. 'Are you sure?') [boolean]
    --describe Downloads the project yaml from the specified instance [boolean]
    -l, --log Set the log level [string]
    --log-json Output all logs as JSON objects [boolean]
    -p, --project-path The location of your project.yaml file [string]
    -s, --state-path Path to the state file

    Other Versions

    - + \ No newline at end of file diff --git a/documentation/release-notes.html b/documentation/release-notes.html index 572c46d39f3..86ae6d5aefd 100644 --- a/documentation/release-notes.html +++ b/documentation/release-notes.html @@ -22,7 +22,7 @@ - + @@ -194,7 +194,7 @@ takes a url and a body object. At the end, the user is setting state.lastSubmissionDate to submissions[submissions.length-1].SubmissionDate.

    See the functions themselves at language-http.

    get('forms/data/wide/json/someForm', {
    query: function (state) {
    return { date: state.lastSubmissionDate || 'Aug 29, 2016 4:44:26 PM' };
    },
    callback: function (state) {
    // Pick submissions out in order to avoid `post` overwriting `response`.
    var submissions = state.response.body;
    // return submissions
    return submissions
    .reduce(function (acc, item) {
    // tag submissions as part of the "someForm" form
    item.formId = 'someForm';
    return acc.then(
    post('https://www.openfn.org/inbox/some-inbox-uuid', { body: item })
    );
    }, Promise.resolve(state))
    .then(function (state) {
    if (submissions.length) {
    state.lastSubmissionDate =
    submissions[submissions.length - 1].SubmissionDate;
    }
    return state;
    })
    .then(function (state) {
    delete state.response;
    return state;
    });
    },
    });
    - + \ No newline at end of file diff --git a/documentation/roadmap.html b/documentation/roadmap.html index 430f6956a8a..56c53d0b188 100644 --- a/documentation/roadmap.html +++ b/documentation/roadmap.html @@ -22,7 +22,7 @@ - + @@ -44,7 +44,7 @@ walkthrough

    Creation of documentation/tutorial “pathways”

    Presenting guides and for new users and new devs from existing documentation resources to flatten the learning curve

    Quickstart

    Rewrite to be dev-centered; should read as a page for users who understand the above already and are ready to dive into technical setup

    Project walk-through

    Revise to incorporate the below app-specific tutorials in a cohesive manner

    How to integrate CommCare with Salesforce

    The Project walkthrough, but specific to these two tools.

    How to integrate DHIS2 and CommCare

    How to integrate Kobo Toolbox and a custom Postgres database

    - + \ No newline at end of file diff --git a/documentation/source-apps.html b/documentation/source-apps.html index d3a904c0695..d2a7805de68 100644 --- a/documentation/source-apps.html +++ b/documentation/source-apps.html @@ -22,7 +22,7 @@ - + @@ -55,7 +55,7 @@ the user to control which fields (and even which related resources) are sent in a given payload, but often the default is to send everything and let them pick and choose what they want to use.

    - + \ No newline at end of file diff --git a/documentation/standards/digital-public-goods.html b/documentation/standards/digital-public-goods.html index 259dc4266c0..a430f980afb 100644 --- a/documentation/standards/digital-public-goods.html +++ b/documentation/standards/digital-public-goods.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ by design and are of high relevance for attainment of the United Nations 2030 Sustainable Development Goals (SDGs)

    You can read more about the DPG standard here.

    - + \ No newline at end of file diff --git a/documentation/standards/global-goods.html b/documentation/standards/global-goods.html index 1e2b6ecb709..a57812848f1 100644 --- a/documentation/standards/global-goods.html +++ b/documentation/standards/global-goods.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ effectiveness, is designed to be interoperable, and is an emergent standard application.

    You can read more about Global Goods for Health here.

    - + \ No newline at end of file diff --git a/documentation/standards/openhie.html b/documentation/standards/openhie.html index ffc942136c8..bb316c74716 100644 --- a/documentation/standards/openhie.html +++ b/documentation/standards/openhie.html @@ -22,7 +22,7 @@ - + @@ -61,7 +61,7 @@ leveraging OpenFn’s out-of-box DHIS2 adaptor and reusable workflow templates to quickly develop automation that reformats data received from CommCare and maps it to the DHIS2 data model.

    swisstph

    - + \ No newline at end of file diff --git a/documentation/style-guide.html b/documentation/style-guide.html index c6d545c27e6..e4646f98427 100644 --- a/documentation/style-guide.html +++ b/documentation/style-guide.html @@ -22,7 +22,7 @@ - + @@ -43,7 +43,7 @@ everyone. Oh, you can put Markdown into a blockquote.


    Inline HTML

    Definition list
    Is something people use sometimes.
    Markdown in HTML
    Does *not* work **very** well. Use HTML tags.

    Line Breaks

    Here's a line for us to start with.

    This line is separated from the one above by two newlines, so it will be a separate paragraph.

    This line is also a separate paragraph, but... This line is only separated by a single newline, so it's a separate line in the same paragraph.


    Admonitions

    note

    This is a note

    tip

    This is a tip

    info

    This is important

    caution

    This is a caution

    danger

    This is a warning

    Tabs

    Note how we import tabs first, then use them as below:

    import Tabs from '@theme/Tabs';
    import TabItem from '@theme/TabItem';

    <Tabs
    defaultValue="apple"
    values={[
    { label: 'Apple', value: 'apple' },
    { label: 'Orange', value: 'orange' },
    { label: 'Banana', value: 'banana' },
    ]}
    >
    <TabItem value="apple">This is an apple 🍎</TabItem>
    <TabItem value="orange">This is an orange 🍊</TabItem>
    <TabItem value="banana">This is a banana 🍌</TabItem>
    </Tabs>;
    This is an apple 🍎
    - + \ No newline at end of file diff --git a/documentation/writing-code.html b/documentation/writing-code.html index f74df7e8972..684aaca663d 100644 --- a/documentation/writing-code.html +++ b/documentation/writing-code.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ tools themselves. (The more feedback the better!). If you want to propose some new language for the documentation, you can make those changes by clicking the "Edit this page" link at the bottom of any page and submit a pull request!

    - + \ No newline at end of file diff --git a/documentation/writing-docs.html b/documentation/writing-docs.html index 1d05ffe760c..bec5014a160 100644 --- a/documentation/writing-docs.html +++ b/documentation/writing-docs.html @@ -22,7 +22,7 @@ - + @@ -46,7 +46,7 @@ reviewers judge whether the doc fix solves the stated problem.

    Get prompt and good quality reviews from team members

    Trust team members to value docs, ensure technical accuracy and consistency, respect end users’ needs, and advocate for the best doc deliverables for consumers.

    Make beautiful docs

    Design is important. Create beautiful and modern looking docs.

    Use developer tools and workflows

    Automate the process as much as possible, so we can focus on content creation.

    - + \ No newline at end of file diff --git a/fr/404.html b/fr/404.html index 3f4e6762001..1c2ad27d03f 100644 --- a/fr/404.html +++ b/fr/404.html @@ -22,13 +22,13 @@ - +

    Page introuvable

    Nous n'avons pas trouvé ce que vous recherchez.

    Veuillez contacter le propriétaire du site qui vous a lié à l'URL d'origine et leur faire savoir que leur lien ne fonctionne pas.

    - + \ No newline at end of file diff --git a/fr/adaptors.html b/fr/adaptors.html index 7684a281dc8..b06373b9f53 100644 --- a/fr/adaptors.html +++ b/fr/adaptors.html @@ -22,7 +22,7 @@ - + @@ -39,7 +39,7 @@ packages" and the two terms are sometimes used interchangeably, but the preferred way of communicating about adaptors is as follows:

    • "What adaptor is that job using?" ("That job is using language-dhis2.")
    • "The DHIS2 adaptor is called language-dhis2."
    • "I don't have the right adaptor for this job, let me install it by -running npm install @openfn/language-dhis2.

    In short, most adaptors follow the naming convention @openfn/language-xyz.

    Where to find them

    Here's a list of the 46 publicly supported OpenFn adaptors. Note that only some have been migrated to our new and have their docs sites served here. For the rest, you can view the docs and source by clicking into the adaptor and choosing your version.

    asana (docs)
    The current API docs, changelog, and developer readme for asana are available here. You can view the source & documentation via these links:
    beyonic (docs)
    The current API docs, changelog, and developer readme for beyonic are available here. You can view the source & documentation via these links:
    bigquery (docs)
    The current API docs, changelog, and developer readme for bigquery are available here. You can view the source & documentation via these links:
    cartodb
    This adaptor hasn't been migrated yet, but it still works just fine and you can view the source & documentation via these links:
    commcare (docs)
    The current API docs, changelog, and developer readme for commcare are available here. You can view the source & documentation via these links:
    common (docs)
    The current API docs, changelog, and developer readme for common are available here. You can view the source & documentation via these links:
    dhis2 (docs)
    The current API docs, changelog, and developer readme for dhis2 are available here. You can view the source & documentation via these links:
    dynamics (docs)
    The current API docs, changelog, and developer readme for dynamics are available here. You can view the source & documentation via these links:
    facebook (docs)
    The current API docs, changelog, and developer readme for facebook are available here. You can view the source & documentation via these links:
    fhir (docs)
    The current API docs, changelog, and developer readme for fhir are available here. You can view the source & documentation via these links:
    godata (docs)
    The current API docs, changelog, and developer readme for godata are available here. You can view the source & documentation via these links:
    googlehealthcare (docs)
    The current API docs, changelog, and developer readme for googlehealthcare are available here. You can view the source & documentation via these links:
    googlesheets (docs)
    The current API docs, changelog, and developer readme for googlesheets are available here. You can view the source & documentation via these links:
    hive (docs)
    The current API docs, changelog, and developer readme for hive are available here. You can view the source & documentation via these links:
    http (docs)
    The current API docs, changelog, and developer readme for http are available here. You can view the source & documentation via these links:
    khanacademy (docs)
    The current API docs, changelog, and developer readme for khanacademy are available here. You can view the source & documentation via these links:
    kobotoolbox (docs)
    The current API docs, changelog, and developer readme for kobotoolbox are available here. You can view the source & documentation via these links:
    magpi (docs)
    The current API docs, changelog, and developer readme for magpi are available here. You can view the source & documentation via these links:
    mailchimp (docs)
    The current API docs, changelog, and developer readme for mailchimp are available here. You can view the source & documentation via these links:
    mailgun (docs)
    The current API docs, changelog, and developer readme for mailgun are available here. You can view the source & documentation via these links:
    maximo (docs)
    The current API docs, changelog, and developer readme for maximo are available here. You can view the source & documentation via these links:
    medicmobile (docs)
    The current API docs, changelog, and developer readme for medicmobile are available here. You can view the source & documentation via these links:
    mogli (docs)
    The current API docs, changelog, and developer readme for mogli are available here. You can view the source & documentation via these links:
    mongodb (docs)
    The current API docs, changelog, and developer readme for mongodb are available here. You can view the source & documentation via these links:
    msgraph (docs)
    The current API docs, changelog, and developer readme for msgraph are available here. You can view the source & documentation via these links:
    mssql (docs)
    The current API docs, changelog, and developer readme for mssql are available here. You can view the source & documentation via these links:
    mysql (docs)
    The current API docs, changelog, and developer readme for mysql are available here. You can view the source & documentation via these links:
    nexmo (docs)
    The current API docs, changelog, and developer readme for nexmo are available here. You can view the source & documentation via these links:
    ocl (docs)
    The current API docs, changelog, and developer readme for ocl are available here. You can view the source & documentation via these links:
    openfn (docs)
    The current API docs, changelog, and developer readme for openfn are available here. You can view the source & documentation via these links:
    openhim (docs)
    The current API docs, changelog, and developer readme for openhim are available here. You can view the source & documentation via these links:
    openmrs (docs)
    The current API docs, changelog, and developer readme for openmrs are available here. You can view the source & documentation via these links:
    postgresql (docs)
    The current API docs, changelog, and developer readme for postgresql are available here. You can view the source & documentation via these links:
    primero (docs)
    progres (docs)
    The current API docs, changelog, and developer readme for progres are available here. You can view the source & documentation via these links:
    rapidpro (docs)
    The current API docs, changelog, and developer readme for rapidpro are available here. You can view the source & documentation via these links:
    resourcemap (docs)
    The current API docs, changelog, and developer readme for resourcemap are available here. You can view the source & documentation via these links:
    salesforce (docs)
    sftp (docs)
    The current API docs, changelog, and developer readme for sftp are available here. You can view the source & documentation via these links:
    smpp (docs)
    The current API docs, changelog, and developer readme for smpp are available here. You can view the source & documentation via these links:
    surveycto (docs)
    The current API docs, changelog, and developer readme for surveycto are available here. You can view the source & documentation via these links:
    telerivet (docs)
    The current API docs, changelog, and developer readme for telerivet are available here. You can view the source & documentation via these links:
    template (docs)
    The current API docs, changelog, and developer readme for template are available here. You can view the source & documentation via these links:
    twilio (docs)
    The current API docs, changelog, and developer readme for twilio are available here. You can view the source & documentation via these links:
    vtiger (docs)
    The current API docs, changelog, and developer readme for vtiger are available here. You can view the source & documentation via these links:
    zoho (docs)
    The current API docs, changelog, and developer readme for zoho are available here. You can view the source & documentation via these links:

    On the OpenFn platform

    When creating or editing a job on platform, you can choose the adaptor to run +running npm install @openfn/language-dhis2.

    In short, most adaptors follow the naming convention @openfn/language-xyz.

    Where to find them

    Here's a list of the 46 publicly supported OpenFn adaptors. Note that only some have been migrated to our new and have their docs sites served here. For the rest, you can view the docs and source by clicking into the adaptor and choosing your version.

    asana (docs)
    The current API docs, changelog, and developer readme for asana are available here. You can view the source & documentation via these links:
    beyonic (docs)
    The current API docs, changelog, and developer readme for beyonic are available here. You can view the source & documentation via these links:
    bigquery (docs)
    The current API docs, changelog, and developer readme for bigquery are available here. You can view the source & documentation via these links:
    cartodb
    This adaptor hasn't been migrated yet, but it still works just fine and you can view the source & documentation via these links:
    commcare (docs)
    The current API docs, changelog, and developer readme for commcare are available here. You can view the source & documentation via these links:
    common (docs)
    The current API docs, changelog, and developer readme for common are available here. You can view the source & documentation via these links:
    dhis2 (docs)
    The current API docs, changelog, and developer readme for dhis2 are available here. You can view the source & documentation via these links:
    dynamics (docs)
    The current API docs, changelog, and developer readme for dynamics are available here. You can view the source & documentation via these links:
    facebook (docs)
    The current API docs, changelog, and developer readme for facebook are available here. You can view the source & documentation via these links:
    fhir (docs)
    The current API docs, changelog, and developer readme for fhir are available here. You can view the source & documentation via these links:
    godata (docs)
    The current API docs, changelog, and developer readme for godata are available here. You can view the source & documentation via these links:
    googlehealthcare (docs)
    The current API docs, changelog, and developer readme for googlehealthcare are available here. You can view the source & documentation via these links:
    googlesheets (docs)
    The current API docs, changelog, and developer readme for googlesheets are available here. You can view the source & documentation via these links:
    hive (docs)
    The current API docs, changelog, and developer readme for hive are available here. You can view the source & documentation via these links:
    http (docs)
    The current API docs, changelog, and developer readme for http are available here. You can view the source & documentation via these links:
    khanacademy (docs)
    The current API docs, changelog, and developer readme for khanacademy are available here. You can view the source & documentation via these links:
    kobotoolbox (docs)
    The current API docs, changelog, and developer readme for kobotoolbox are available here. You can view the source & documentation via these links:
    magpi (docs)
    The current API docs, changelog, and developer readme for magpi are available here. You can view the source & documentation via these links:
    mailchimp (docs)
    The current API docs, changelog, and developer readme for mailchimp are available here. You can view the source & documentation via these links:
    mailgun (docs)
    The current API docs, changelog, and developer readme for mailgun are available here. You can view the source & documentation via these links:
    maximo (docs)
    The current API docs, changelog, and developer readme for maximo are available here. You can view the source & documentation via these links:
    medicmobile (docs)
    The current API docs, changelog, and developer readme for medicmobile are available here. You can view the source & documentation via these links:
    mogli (docs)
    The current API docs, changelog, and developer readme for mogli are available here. You can view the source & documentation via these links:
    mongodb (docs)
    The current API docs, changelog, and developer readme for mongodb are available here. You can view the source & documentation via these links:
    msgraph (docs)
    The current API docs, changelog, and developer readme for msgraph are available here. You can view the source & documentation via these links:
    mssql (docs)
    The current API docs, changelog, and developer readme for mssql are available here. You can view the source & documentation via these links:
    mysql (docs)
    The current API docs, changelog, and developer readme for mysql are available here. You can view the source & documentation via these links:
    nexmo (docs)
    The current API docs, changelog, and developer readme for nexmo are available here. You can view the source & documentation via these links:
    ocl (docs)
    The current API docs, changelog, and developer readme for ocl are available here. You can view the source & documentation via these links:
    openfn (docs)
    The current API docs, changelog, and developer readme for openfn are available here. You can view the source & documentation via these links:
    openhim (docs)
    The current API docs, changelog, and developer readme for openhim are available here. You can view the source & documentation via these links:
    openmrs (docs)
    The current API docs, changelog, and developer readme for openmrs are available here. You can view the source & documentation via these links:
    postgresql (docs)
    The current API docs, changelog, and developer readme for postgresql are available here. You can view the source & documentation via these links:
    primero (docs)
    progres (docs)
    The current API docs, changelog, and developer readme for progres are available here. You can view the source & documentation via these links:
    rapidpro (docs)
    The current API docs, changelog, and developer readme for rapidpro are available here. You can view the source & documentation via these links:
    resourcemap (docs)
    The current API docs, changelog, and developer readme for resourcemap are available here. You can view the source & documentation via these links:
    salesforce (docs)
    sftp (docs)
    The current API docs, changelog, and developer readme for sftp are available here. You can view the source & documentation via these links:
    smpp (docs)
    The current API docs, changelog, and developer readme for smpp are available here. You can view the source & documentation via these links:
    surveycto (docs)
    The current API docs, changelog, and developer readme for surveycto are available here. You can view the source & documentation via these links:
    telerivet (docs)
    The current API docs, changelog, and developer readme for telerivet are available here. You can view the source & documentation via these links:
    template (docs)
    The current API docs, changelog, and developer readme for template are available here. You can view the source & documentation via these links:
    twilio (docs)
    The current API docs, changelog, and developer readme for twilio are available here. You can view the source & documentation via these links:
    vtiger (docs)
    The current API docs, changelog, and developer readme for vtiger are available here. You can view the source & documentation via these links:
    zoho (docs)
    The current API docs, changelog, and developer readme for zoho are available here. You can view the source & documentation via these links:

    On the OpenFn platform

    When creating or editing a job on platform, you can choose the adaptor to run the job. This way you "import" the needed operations. Simply open the dropdown list of adaptors, and click on one.

    On npm

    Most of our adaptors are also available on npmjs.

    Adaptors list in npm

    Install on platform via npm

    When using platform, you can install adaptors that are not part of the @@ -57,7 +57,7 @@ via the Select Unreleased Adaptor dialog.

    Building and extending adaptors

    The source code and technical documentation for developing or extending existing adaptors can be found here.

    - + \ No newline at end of file diff --git a/fr/adaptors/cht.html b/fr/adaptors/cht.html index 2db14356a6a..e7f40679541 100644 --- a/fr/adaptors/cht.html +++ b/fr/adaptors/cht.html @@ -22,7 +22,7 @@ - + @@ -37,7 +37,7 @@ property. This will structure the payload that is sent to your OpenFn Inbox as a "Message".

    To send data to CHT applications, check out the CHT API.

    - + \ No newline at end of file diff --git a/fr/adaptors/ckan.html b/fr/adaptors/ckan.html index 18c93a2e583..c5b8a640c2f 100644 --- a/fr/adaptors/ckan.html +++ b/fr/adaptors/ckan.html @@ -22,7 +22,7 @@ - + @@ -91,7 +91,7 @@ to access the web API.

    Implementation Examples

    CKAN has been implemented in catalog.data.gov, open.canada.ca/data, and data.humdata.org.

    - + \ No newline at end of file diff --git a/fr/adaptors/commcare.html b/fr/adaptors/commcare.html index b80b7fbec92..b1053f0701b 100644 --- a/fr/adaptors/commcare.html +++ b/fr/adaptors/commcare.html @@ -22,7 +22,7 @@ - + @@ -83,7 +83,7 @@ with the CommCare API.

    Implementation Examples

    - + \ No newline at end of file diff --git a/fr/adaptors/dhis2.html b/fr/adaptors/dhis2.html index 5cf0833889f..1a442a9d277 100644 --- a/fr/adaptors/dhis2.html +++ b/fr/adaptors/dhis2.html @@ -22,7 +22,7 @@ - + @@ -64,7 +64,7 @@ DHIS2 Integration Scenarios

    4 Interoperable DHIS2-LMIS in Senegal, Tanzania and Ghana

    5 CRVS Fellowship report SmartVA and DHIS2 integration in Sri Lanka

    Integration Options

    1. Data integration via DHIS2 Web API: https://docs.dhis2.org/en/develop/using-the-api/dhis-core-version-235/web-api.html

    2. Metadata integration via DHIS2 Web API. OpenFn implementations can leverage the DHIS2 adaptor.

    Integration Examples

    1. DHIS2 Demo Implementations: https://github.com/OpenFn/dhis2-demo
    2. Lesotho Integration connecting two DHIS2 instances: https://github.com/OpenFn/lesotho-dhis2
    - + \ No newline at end of file diff --git a/fr/adaptors/godata.html b/fr/adaptors/godata.html index e9a69019150..3888a8e3bea 100644 --- a/fr/adaptors/godata.html +++ b/fr/adaptors/godata.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ language-http can be used to make HTTP requests to the Go.Data API and can perform any operations not supported by language-godata.

    Implementation Examples

    See Go.Data docs site: https://worldhealthorganization.github.io/godata/integration-scripts/

    - + \ No newline at end of file diff --git a/fr/adaptors/googlesheets.html b/fr/adaptors/googlesheets.html index 2e1fcf45415..cf7f717b0db 100644 --- a/fr/adaptors/googlesheets.html +++ b/fr/adaptors/googlesheets.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ example when a new submission is made to a Google Form. Below is some sample code you may add to your Google Sheet to make it push data to OpenFn whenever new rows are added.

    function sendToOpenFn(e) {
    var payload = JSON.stringify(e);
    var url = 'https://www.openfn.org/inbox/your-id-here';
    var options = {
    method: 'post',
    contentType: 'application/json',
    payload: payload,
    };
    var response = UrlFetchApp.fetch(url, options);
    }

    function isDate(v) {
    if (Object.prototype.toString.call(v) === '[object Date]') {
    if (isNaN(v.getTime())) {
    return false;
    } else {
    return true;
    }
    } else {
    return false;
    }
    }

    function isNumber(v) {
    if (Object.prototype.toString.call(v) === '[object Number]') {
    return true;
    } else {
    return false;
    }
    }

    function getReportData() {
    var bookReportData = { formId: 'bookReport', data: [] };
    var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();

    var pageCount = 0;
    var bookRating = 0;

    for (i in data) {
    if (isDate(data[i][0])) {
    // ignore header line
    if (isNumber(data[i][3])) {
    pageCount = data[i][3];
    }

    if (isNumber(data[i][6])) {
    bookRating = data[i][6];
    }

    bookReportData.data.push({
    Timestamp: data[i][0],
    Title: data[i][1],
    Author: data[i][2],
    NumberOfPages: pageCount,
    Summary: data[i][4],
    Protagonist: data[i][5],
    Rating: bookRating,
    EmailTeacher: data[i][7],
    EmailStudent: data[i][8],
    SendStatus: data[i][9],
    });
    }
    }

    // Logger.log(bookReportData);

    sendToOpenFn(bookReportData);
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/kobotoolbox.html b/fr/adaptors/kobotoolbox.html index a25ad9921d4..24c2c93dbd6 100644 --- a/fr/adaptors/kobotoolbox.html +++ b/fr/adaptors/kobotoolbox.html @@ -22,7 +22,7 @@ - + @@ -89,7 +89,7 @@ requirements, language-http may also be implemented to send GET/POST/PUT requests to the Kobo APIs.

    Integration Examples

    See the ConSoSci Github repo for several example Kobo-to-database jobs: https://github.com/OpenFn/consosci

    - + \ No newline at end of file diff --git a/fr/adaptors/library.html b/fr/adaptors/library.html index b0e561f92de..271497fe023 100644 --- a/fr/adaptors/library.html +++ b/fr/adaptors/library.html @@ -22,7 +22,7 @@ - + @@ -61,7 +61,7 @@ experience in the future. We'd like to provide a way for users to "upvote" or "downvote" certain jobs (think: StackOverflow) which they found useful. Get in touch if you're interested in helping out!

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/0-Get-TEI-data-2021-06-02.html b/fr/adaptors/library/jobs/auto/0-Get-TEI-data-2021-06-02.html index 0e4c7eb2d1f..bdf1b800f90 100644 --- a/fr/adaptors/library/jobs/auto/0-Get-TEI-data-2021-06-02.html +++ b/fr/adaptors/library/jobs/auto/0-Get-TEI-data-2021-06-02.html @@ -22,13 +22,13 @@ - +

    0 - Get TEI data

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    alterState, dataValue, getData

    Expression

    // TODO: get all TEIs with vaccination state 'NOT YET REQUESTED' via save filter from Austin.


    // NOTE: if we can get a webhook with the desired info, let's drop this job!

    getData('trackedEntityInstances', {
    fields: '*',
    ou: 'V5XvX1wr1kF', // traningland?
    program: 'EZkN8vYZwjR', //
    trackedEntityInstance: dataValue('id'), // the value from the post
    });

    alterState(state => {
    console.log('The response from DHIS2', state.data);
    console.log('Only pass necessary data to the DIVOC job.');
    const necessary = state.data.trackedEntityInstances[0];
    console.log(necessary);
    return { ...state, data: necessary };
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/01-send-mailgun-email-2018-12-04.html b/fr/adaptors/library/jobs/auto/01-send-mailgun-email-2018-12-04.html index 91b3fd179cc..42b2c9c000d 100644 --- a/fr/adaptors/library/jobs/auto/01-send-mailgun-email-2018-12-04.html +++ b/fr/adaptors/library/jobs/auto/01-send-mailgun-email-2018-12-04.html @@ -22,13 +22,13 @@ - +

    01 send mailgun email

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, send

    Expression

    send(
    fields(
    field('from', 'aleksa@openfn.org'),
    field('to', 'aleksa@openfn.org, aleksa@verasolutions.org'),
    field('subject', 'Kobo: New Form Submitted'),
    //You can write your own custom, anonymous functions to do whatever you desire - see function(state)
    field('text', function(state) {
    const msgText = "A form was submitted by "+ dataValue("_submitted_by")(state) + ". Please login to review!"
    return msgText
    //result will be an email with body text "A form was submitted by [Kobo Submitted By User]. Please login to review!"

    })
    )
    )
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/01a-Create-Registrants-2019-11-19.html b/fr/adaptors/library/jobs/auto/01a-Create-Registrants-2019-11-19.html index 5b14cc8b78c..3017216ca81 100644 --- a/fr/adaptors/library/jobs/auto/01a-Create-Registrants-2019-11-19.html +++ b/fr/adaptors/library/jobs/auto/01a-Create-Registrants-2019-11-19.html @@ -22,13 +22,13 @@ - +

    01a/ Create Registrants

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: 01a/ Create Registrants
    • Adaptor: @openfn/language-http
    • Adaptor Version: latest
    • Created almost 4 years ago
    • Updated over 3 years ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    alterState, post, JSON

    Expression

    // @trigger 'odk submission' either via Aggregate JSON Forwarding or via direct
    // submission to OpenFn.org/inbox
    // @credential 'ihris'
    // @adaptor 'http'
    // -----------------------------------------------------------------------------

    // =============================================================================
    // Pluck out parts of the ODK submission and prepare our 'person' object that we
    // will use in multiple requests to iHRIS. =====================================
    console.log(JSON.stringify(state.data))
    alterState(state => {
    state.person = {
    'form[person][0][0][fields][id]': 'person|0',
    'form[person][0][0][fields][surname]': state.data.RegistrationForm.last_name,
    'form[person][0][0][fields][firstname]': state.data.RegistrationForm.first_name,
    'form[person][0][0][fields][nationality]': `country|${state.data.RegistrationForm.country}`,
    'form[person][0][0][fields][residence]': 'district|3',
    };
    return state;
    });

    // =============================================================================
    // Create records via iHRIS api, with the hostUrl, port, and authentication
    // handled by the credential ===================================================
    post(
    '/manage/person',
    {
    formData: state => {
    state.person.submit_type = 'confirm';
    return state.person;
    },
    },
    post('/manage/person', {
    formData: state => {
    state.person.submit_type = 'save';
    return state.person;
    },
    options: {
    successCodes: [302],
    },
    })
    );


    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/01b-Query-new-person-record-2019-12-13.html b/fr/adaptors/library/jobs/auto/01b-Query-new-person-record-2019-12-13.html index 555a7a41f53..6fd63f54f11 100644 --- a/fr/adaptors/library/jobs/auto/01b-Query-new-person-record-2019-12-13.html +++ b/fr/adaptors/library/jobs/auto/01b-Query-new-person-record-2019-12-13.html @@ -22,13 +22,13 @@ - +

    01b/ Query new person record

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: 01b/ Query new person record
    • Adaptor: @openfn/language-mysql
    • Adaptor Version: latest
    • Created almost 4 years ago
    • Updated over 3 years ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    alterState

    Expression

    sqlString(state => {
    // The person information is in state from the previous operation
    console.log(state.references[0].RegistrationForm)
    return (
    `SELECT id FROM hippo_person WHERE firstname='` +
    state.references[0].RegistrationForm.first_name +
    `' AND surname='` +
    state.references[0].RegistrationForm.last_name +
    `'`
    );
    });

    alterState(state => {
    // Note: we pluck out on the 'RowDataResponses' from the SQL server.
    const personData = state.response.body;
    console.log(personData);
    // Get the first record
    state.data.person_id = personData[0] && personData[0].id
    return state;
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/01c-Create-person_position-record-2019-12-13.html b/fr/adaptors/library/jobs/auto/01c-Create-person_position-record-2019-12-13.html index 5b8810295cc..274e7f092d5 100644 --- a/fr/adaptors/library/jobs/auto/01c-Create-person_position-record-2019-12-13.html +++ b/fr/adaptors/library/jobs/auto/01c-Create-person_position-record-2019-12-13.html @@ -22,13 +22,13 @@ - +

    01c/ Create person_position record

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: 01c/ Create person_position record
    • Adaptor: @openfn/language-http
    • Adaptor Version: latest
    • Created almost 4 years ago
    • Updated over 3 years ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    alterState, post

    Expression

    // Pluck out parts of the ODK submission and prepare our 'person_postion' object that we
    // will use in multiple requests to iHRIS. =====================================
    alterState(state => {
    console.log(state);
    // The position field in the form holds the position ID and the salary
    const positionData = state.references[0].RegistrationForm.position.split('_');
    const startDateComponents = state.references[0].RegistrationForm.start_date.split('-')
    state.person_position = {
    'form[person_position][0][0][fields][id]': 'person_position|0',
    'form[person_position][0][0][fields][parent]': state.data.person_id,
    'form[person_position][0][0][fields][position]': 'position|'+positionData[0],
    'form[person_position][0][0][fields][start_date][day]': startDateComponents[2],
    'form[person_position][0][0][fields][start_date][month]': startDateComponents[1],
    'form[person_position][0][0][fields][start_date][year]': startDateComponents[0],
    'form[salary][0][0][fields][salary]': 'currency|3='+positionData[1],
    'can_edit_position': '1'
    };
    state.person_contact = {
    'form[person_contact_personal][0][0][fields][id]': 'person_contact_personal|0',
    'form[person_contact_personal][0][0][fields][parent]': state.data.person_id,
    'form[person_contact_personal][0][0][fields][mobile_phone]': state.references[0].RegistrationForm.phone_number,
    'contact_type': 'personal',
    };
    return state;
    });

    // =============================================================================
    // Create records via iHRIS api, with the hostUrl, port, and authentication
    // handled by the credential ===================================================
    post(
    '/manage/make_offer',
    {
    formData: state => {
    state.person_position.submit_type = 'confirm';
    return state.person_position;
    },
    },
    post('/manage/make_offer', {
    formData: state => {
    state.person_position.submit_type = 'save';
    return state.person_position;
    },
    options: {
    successCodes: [302],
    },
    })
    );

    post(
    '/manage/contact?contact_type=personal',
    {
    formData: state => {
    state.person_contact.submit_type = 'confirm';
    return state.person_contact;
    },
    },
    post('/manage/contact?contact_type=personal', {
    formData: state => {
    state.person_contact.submit_type = 'save';
    return state.person_contact;
    },
    options: {
    successCodes: [302],
    },
    })
    );


    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11.html b/fr/adaptors/library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11.html index d0d236ce53c..b63dce8f4bf 100644 --- a/fr/adaptors/library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11.html +++ b/fr/adaptors/library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11.html @@ -22,13 +22,13 @@ - +

    02a/ Query DB for people to pay

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: 02a/ Query DB for people to pay
    • Adaptor: @openfn/language-mysql
    • Adaptor Version: latest
    • Created almost 4 years ago
    • Updated over 3 years ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    alterState

    Expression


    sqlString(state => {
    // stored procedure will return a list of names, phone numbers (MSISDN), and salary info for employees that should be paid today
    return 'CALL get_employees_to_pay();';
    });

    //alterState(state => {
    // Note: we pluck out on the 'RowDataResponses' from the SQL server.
    // state.data.records = state.response.body[0];
    // return state;
    //});
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/02b-Initiate-Payments-2019-11-19.html b/fr/adaptors/library/jobs/auto/02b-Initiate-Payments-2019-11-19.html index 07af7db5bb1..aa27c740875 100644 --- a/fr/adaptors/library/jobs/auto/02b-Initiate-Payments-2019-11-19.html +++ b/fr/adaptors/library/jobs/auto/02b-Initiate-Payments-2019-11-19.html @@ -22,13 +22,13 @@ - +

    02b/ Initiate Payments

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: 02b/ Initiate Payments
    • Adaptor: @openfn/language-http
    • Adaptor Version: latest
    • Created almost 4 years ago
    • Updated over 3 years ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    alterState, dataPath, each, map, post

    Expression

    // @trigger 'when 2a succeeds'
    // @credential 'ihris-mifos-combined'
    // @adaptor 'http'
    // -----------------------------------------------------------------------------

    // Hang 'payees' on state so that operations which replace "response" don't
    // overwrite these data. QUESTION: Why pluck body[0] instead of body[*]? What
    // happens if there are multiple payees? Is that first item in the body array an
    // array itself?
    alterState(state => {
    state.data = { payees: state.response.body[0] };
    state.saved_config = state.configuration;
    return state;
    });

    // ===========================================================================
    // Make payment requests in Mifos with the reponse, either in bulk or by
    // iterating through the array of registrants and making a separate request
    // for each one ==============================================================
    each(
    dataPath('payees[*]'),
    post(
    `${state.configuration.mifosUrl}/channel/transactions`,
    {
    authentication: state.configuration.mifosAuth,
    headers: {
    'content-type': 'application/json',
    'X-Tenant-Identifier': 'tn07',
    },
    // Can we send an array of payments to make in a single request?
    // body: state.data.registrants.map(r => {
    // console.log(`Initiating payment for ${r.name}.`);
    // return {
    // payer: { msisdn: state.configuration.mifosAcct },
    // payee: { msisdn: r.phone },
    // amount: r.amount,
    // };
    // }),
    body: state => {
    return {
    payer: {
    partyIdInfo: {
    partyIdType: 'MSISDN',
    partyIdentifier: '27710203999',
    },
    },
    payee: {
    partyIdInfo: {
    partyIdType: 'MSISDN',
    partyIdentifier: state.data.msisdn,
    },
    },
    amountType: 'SEND',
    transactionType: {
    scenario: 'PAYMENT',
    initiator: 'PAYER',
    initiatorType: 'CONSUMER',
    },
    amount: {
    currency: 'USD',
    amount: state.data.salary / 52,
    },
    };
    },
    },
    state => {
    const today = new Date();
    const currPayee = state.references[0];
    state.data.person_payment = {
    'form[person_payments][0][0][fields][id]': 'person_payments|0',
    'form[person_payments][0][0][fields][parent]':
    'person|' + currPayee.person_id,
    'form[person_payments][0][0][fields][date][day]': today.getDate(),
    'form[person_payments][0][0][fields][date][month]':
    today.getMonth() + 1,
    'form[person_payments][0][0][fields][date][year]': today.getFullYear(),
    'form[person_payments][0][0][fields][amount]': currPayee.salary / 52,
    'form[person_payments][0][0][fields][transactionId]':
    state.data.body.transactionId,
    'form[person_payments][0][0][fields][status]':
    state.data.body.transactionId ? 'initiated' : 'failed',
    };
    // =====================================================================
    // Create "initiated" payments in iHRIS with their mifos external IDs ==
    post(
    `${state.saved_config.ihrisUrl}/manage/person_payments`,
    {
    authentication: state.configuration.ihrisAuth,
    formData: state => {
    state.data.person_payment.submit_type = 'confirm';
    console.log('PaymentData: ' + state.data.person_payment);
    return state.data.person_payment;
    },
    },
    post(`${state.saved_config.ihrisUrl}/manage/person_payments`, {
    authentication: state.configuration.ihrisAuth,
    formData: state => {
    state.references[1].person_payment.submit_type = 'save';
    return state.references[1].person_payment;
    },
    options: {
    successCodes: [302],
    },
    })
    )(state);
    }
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/03-Update-Payment-Status-2019-11-19.html b/fr/adaptors/library/jobs/auto/03-Update-Payment-Status-2019-11-19.html index 96999d0948a..88b74224c5e 100644 --- a/fr/adaptors/library/jobs/auto/03-Update-Payment-Status-2019-11-19.html +++ b/fr/adaptors/library/jobs/auto/03-Update-Payment-Status-2019-11-19.html @@ -22,13 +22,13 @@ - +

    03/ Update Payment Status

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: 03/ Update Payment Status
    • Adaptor: @openfn/language-mysql
    • Adaptor Version: latest
    • Created almost 4 years ago
    • Updated over 3 years ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    alterState

    Expression

    sqlString(state => {
    console.log(state.data.transactionCode);
    return `SELECT record FROM entry WHERE string_value='${state.data.transactionCode}'`;
    });

    alterState(state => {
    // Note: we pluck out on the 'RowDataResponses' from the SQL server.
    const recordData = state.response.body.filter(x => x.record !== undefined);
    // Get the first record
    state.data.record = recordData[0] && recordData[0].record;
    return state;
    });

    sqlString(state => {
    return `UPDATE entry SET string_value='completed' where record=${state.data.record} and string_value='initiated'`;
    });

    sqlString(state => {
    return `UPDATE last_entry SET string_value='completed' where record=${state.data.record} and string_value='initiated'`;
    });

    sqlString(state => {
    return `UPDATE hippo_person_payments SET status='completed' where id='person_payments|${state.data.record}'`;
    });
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/04a-Query-for-job-changes-2019-12-12.html b/fr/adaptors/library/jobs/auto/04a-Query-for-job-changes-2019-12-12.html index 96be203db49..ca2bcf8bf7b 100644 --- a/fr/adaptors/library/jobs/auto/04a-Query-for-job-changes-2019-12-12.html +++ b/fr/adaptors/library/jobs/auto/04a-Query-for-job-changes-2019-12-12.html @@ -22,13 +22,13 @@ - +

    04a/Query for job changes

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: 04a/Query for job changes
    • Adaptor: @openfn/language-mysql
    • Adaptor Version: latest
    • Created almost 4 years ago
    • Updated over 3 years ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    alterState

    Expression

    sqlString(state => {
    return "SELECT position_id, position_name, salary, facility_id, facility_name, status \
    FROM position_updates WHERE status in ('NEW', 'CLOSED');";
    });

    alterState(state => {
    state.new_jobs = state.response.body;
    console.log(state.new_jobs);
    return state;
    })

    sqlString(state => {
    return `UPDATE position_updates SET status='PROCESSED' WHERE status in ('NEW','CLOSED')`;
    });
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/04b-Update-ODK-form-2019-12-03.html b/fr/adaptors/library/jobs/auto/04b-Update-ODK-form-2019-12-03.html index ef6bec57d26..bf552f4876d 100644 --- a/fr/adaptors/library/jobs/auto/04b-Update-ODK-form-2019-12-03.html +++ b/fr/adaptors/library/jobs/auto/04b-Update-ODK-form-2019-12-03.html @@ -22,13 +22,13 @@ - +

    04b/ Update ODK form

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: 04b/ Update ODK form
    • Adaptor: @openfn/language-http
    • Adaptor Version: latest
    • Created almost 4 years ago
    • Updated over 3 years ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    get, post, Number

    Expression

    // Your job goes here.
    get(
    'http://165.227.185.106/formXml',
    {
    query: {
    formId: 'registration_form',
    },
    },
    state => {
    console.log('Start processing state and form template!');

    let template = state.data.body;
    let templateUpdated = false;

    const itemEx = /<item>\s?<label>[^<>]*<\/label>\s?<value>[^<>]*<\/value>\s?<\/item>/gi;
    const itemMatches = template.match(itemEx);

    const selectFacilityEx = /<select1\s+ref="\/RegistrationForm\/position_facility">/gi;
    //const selectFacilityEx = /<select1\s+ref="\/data\/position_facility">/gi;
    const selectPositionEx = /<select1\s+ref="\/RegistrationForm\/position">/gi;
    //const selectPositionEx = /<select1\s+ref="\/data\/position">/gi;

    console.log(`Received ${state.new_jobs.length} new data!`);

    for(let j = 0; j < state.new_jobs.length; j ++) {
    let facilityExists = false;
    let positionExists = false;

    let facilityId = state.new_jobs[j].facility_id;
    console.log(`Processing facility: ${facilityId}.`);

    const positions = state.new_jobs[j].position_id.split('|');
    const salaries = state.new_jobs[j].salary.split('=');

    let positionId = `${positions[1]}_${salaries[1]}`;
    console.log(`Processing position: ${positionId}.`);
    for(let i = 0; i < itemMatches.length; i ++) {
    if (itemMatches[i].indexOf(facilityId) >= 0) {
    facilityExists = true;
    }
    if (itemMatches[i].indexOf(positionId) >= 0) {
    if (state.new_jobs[j].status === 'CLOSED') {
    console.log(`Removing closed position: ${positionId}.`);
    template = template.replace(itemMatches[i], '');
    templateUpdated = true;
    }
    positionExists = true;
    }
    }

    if (!facilityExists) {
    const selectFacilityMatches = template.match(selectFacilityEx);
    console.log("Facility matches: "+selectFacilityMatches)
    const facilityItem =
    `<item><label>${state.new_jobs[j].facility_name}</label><value>${facilityId}</value></item>`;
    console.log(`Adding facility: ${facilityItem}.`);
    template = template.replace(
    selectFacilityEx,
    selectFacilityMatches[0] + facilityItem
    );
    templateUpdated = true;
    } else {
    console.log('Not seeing any facility to add. Moving along!');
    }

    if (!positionExists && state.new_jobs[j].status === 'NEW') {
    const selectPositionMatches = template.match(selectPositionEx);
    const positionItem =
    `<item><label>${state.new_jobs[j].position_name}</label><value>${positionId}</value></item>`;
    console.log(`Adding position: ${positionItem}.`);
    template = template.replace(
    selectPositionEx,
    selectPositionMatches[0] + positionItem
    );
    templateUpdated = true;
    } else {
    console.log('Not seeing any position to add. Moving along!');
    }
    }

    if (templateUpdated) {
    const versionEx = /id="\S+"\s+version="(\S+)"/;
    const versionMatches = template.match(versionEx);
    const currentVersion = Number.parseInt(versionMatches[1]);
    console.log(`Updating form version from: ${currentVersion}`);
    template = template.replace(currentVersion, currentVersion + 1);
    }

    state.template = template;
    return state;
    }
    );

    post('http://165.227.185.106/formUpload', {
    formData: state => {
    return {
    form_def_file: {
    value: state.template,
    options: {
    filename: 'registration_form.xml'
    }
    }
    };
    },
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/05-Submit-employee-evaluation-2019-12-03.html b/fr/adaptors/library/jobs/auto/05-Submit-employee-evaluation-2019-12-03.html index 541de3493bb..ed420274d66 100644 --- a/fr/adaptors/library/jobs/auto/05-Submit-employee-evaluation-2019-12-03.html +++ b/fr/adaptors/library/jobs/auto/05-Submit-employee-evaluation-2019-12-03.html @@ -22,13 +22,13 @@ - +

    05/ Submit employee evaluation

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: 05/ Submit employee evaluation
    • Adaptor: @openfn/language-http
    • Adaptor Version: latest
    • Created almost 4 years ago
    • Updated over 3 years ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    alterState, post

    Expression

    // @trigger 'when employee evaluation form arrives'
    // @credential 'ihris-mifos-combined'
    // @adaptor 'http'
    // -----------------------------------------------------------------------------

    alterState(state => {
    state.payee = state.data.EvaluationForm;
    state.saved_config = state.configuration;
    return state;
    });

    post(
    `${state.configuration.mifosUrl}/channel/transactions`,
    {
    authentication: state.configuration.mifosAuth,
    headers: {
    'content-type': 'application/json',
    'X-Tenant-Identifier': 'tn07',
    },
    body: state => {
    return {
    payer: {
    partyIdInfo: {
    partyIdType: 'MSISDN',
    partyIdentifier: '27710407990',
    },
    },
    payee: {
    partyIdInfo: {
    partyIdType: 'MSISDN',
    partyIdentifier: state.payee.social_worker_id.split('_')[1],
    },
    },
    amountType: 'SEND',
    transactionType: {
    scenario: 'PAYMENT',
    initiator: 'PAYER',
    initiatorType: 'CONSUMER',
    },
    amount: {
    currency: 'USD',
    // Calculate the bonus amount - for now just use number of clients seen * 100
    amount: state.payee.client_counts*100,
    },
    };
    },
    },
    state => {
    const today = new Date();
    state.data.person_payment = {
    'form[person_payments][0][0][fields][id]': 'person_payments|0',
    'form[person_payments][0][0][fields][parent]':
    'person|' + state.payee.social_worker_id.split('_')[0],
    'form[person_payments][0][0][fields][date][day]': today.getDate(),
    'form[person_payments][0][0][fields][date][month]':
    today.getMonth() + 1,
    'form[person_payments][0][0][fields][date][year]': today.getFullYear(),
    'form[person_payments][0][0][fields][amount]': state.payee.client_counts*100,
    'form[person_payments][0][0][fields][transactionId]':
    state.data.body.transactionId,
    'form[person_payments][0][0][fields][status]':
    state.data.body.transactionId ? 'initiated' : 'failed',
    };
    // =====================================================================
    // Create "initiated" payments in iHRIS with their mifos external IDs ==
    post(
    `${state.saved_config.ihrisUrl}/manage/person_payments`,
    {
    authentication: state.configuration.ihrisAuth,
    formData: state => {
    state.data.person_payment.submit_type = 'confirm';
    console.log('PaymentData: ' + state.data.person_payment);
    return state.data.person_payment;
    },
    },
    post(`${state.saved_config.ihrisUrl}/manage/person_payments`, {
    authentication: state.configuration.ihrisAuth,
    formData: state => {
    state.references[1].person_payment.submit_type = 'save';
    return state.references[1].person_payment;
    },
    options: {
    successCodes: [302],
    },
    })
    )(state);
    }
    );


    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/05a-Query-for-new-employees-2019-12-19.html b/fr/adaptors/library/jobs/auto/05a-Query-for-new-employees-2019-12-19.html index 577cb886982..a4aa7a855db 100644 --- a/fr/adaptors/library/jobs/auto/05a-Query-for-new-employees-2019-12-19.html +++ b/fr/adaptors/library/jobs/auto/05a-Query-for-new-employees-2019-12-19.html @@ -22,13 +22,13 @@ - +

    05a/Query for new employees

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: 05a/Query for new employees
    • Adaptor: @openfn/language-mysql
    • Adaptor Version: latest
    • Created almost 4 years ago
    • Updated over 3 years ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    alterState

    Expression

    sqlString(state => {
    return "SELECT person_id, person_name, msisdn, status FROM employee_updates WHERE status='NEW';";
    });

    alterState(state => {
    state.new_employees = state.response.body;
    console.log(state.new_employees);
    return state;
    })

    sqlString(state => {
    return `UPDATE employee_updates SET status='PROCESSED' WHERE status='NEW'`;
    });
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19.html b/fr/adaptors/library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19.html index e9a61c703da..a3ec5e85171 100644 --- a/fr/adaptors/library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19.html +++ b/fr/adaptors/library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19.html @@ -22,13 +22,13 @@ - +

    05b/Update ODK eval form

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: 05b/Update ODK eval form
    • Adaptor: @openfn/language-http
    • Adaptor Version: latest
    • Created almost 4 years ago
    • Updated over 3 years ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    get, post, Number

    Expression

    // Your job goes here.
    get(
    'http://165.227.185.106/formXml',
    {
    query: {
    formId: 'evaluation_form',
    },
    },
    state => {
    let template = state.data.body;
    let templateUpdated = false;

    const itemEx = /<item>\s?<label>[^<>]*<\/label>\s?<value>[^<>]*<\/value>\s?<\/item>/gi;
    const itemMatches = template.match(itemEx);

    const selectUserEx = /<select1\s+ref="\/EvaluationForm\/social_worker_id">/gi;

    console.log(`Receiving ${state.new_employees.length} new data!`);

    for (let j = 0; j < state.new_employees.length; j++) {
    let userExists = false;

    let userId = state.new_employees[j].person_id.split('|')[1];
    console.log(`Processing user: ${userId}.`);

    for (let i = 0; i < itemMatches.length; i++) {
    if (itemMatches[i].indexOf(userId) >= 0) {
    userExists = true;
    }
    }

    if (!userExists) {
    const selectUserMatches = template.match(selectUserEx);
    const msisdn = state.new_employees[j].msisdn;
    const userItem =
    `<item><label>${state.new_employees[j].person_name}</label><value>${userId}_${msisdn}</value></item>`;
    console.log(`Adding user: ${userItem}.`);
    template = template.replace(
    selectUserEx,
    selectUserMatches[0] + userItem
    );
    templateUpdated = true;
    } else {
    console.log('Not seeing any user to add. Moving along!');
    }
    }

    if (templateUpdated) {
    const versionEx = /id="\S+"\s+version="(\S+)"/;
    const versionMatches = template.match(versionEx);
    const currentVersion = Number.parseInt(versionMatches[1]);
    console.log(`Updating form version from: ${currentVersion}`);
    template = template.replace(currentVersion, currentVersion + 1);
    }

    state.template = template;
    return state;
    }
    );

    post('http://165.227.185.106/formUpload', {
    formData: state => {
    return {
    form_def_file: {
    value: state.template,
    options: {
    filename: 'evaluation_form.xml'
    }
    }
    };
    },
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/1-Create-Payment-in-SF-2018-09-03.html b/fr/adaptors/library/jobs/auto/1-Create-Payment-in-SF-2018-09-03.html index 564d3088ccc..bb2ccc201a5 100644 --- a/fr/adaptors/library/jobs/auto/1-Create-Payment-in-SF-2018-09-03.html +++ b/fr/adaptors/library/jobs/auto/1-Create-Payment-in-SF-2018-09-03.html @@ -22,13 +22,13 @@ - +

    1. Create Payment in SF

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    create, dataValue, field, fields, relationship

    Expression

    create('Payment__c', fields(
    field('Name', dataValue('reference_number')),
    field('Amount__c', dataValue('amount')),
    field('Phone_Number__c', dataValue('sender_number')),
    relationship('Contract__r', 'ContractNumber', dataValue('contract_number'))
    ));
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08.html b/fr/adaptors/library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08.html index 32b8b92d9f3..402ffc83bfc 100644 --- a/fr/adaptors/library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08.html +++ b/fr/adaptors/library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08.html @@ -22,13 +22,13 @@ - +

    1. Get CommCare Forms (Bulk Extract)

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: 1. Get CommCare Forms (Bulk Extract)
    • Adaptor: @openfn/language-http
    • Adaptor Version: v3.1.7
    • Created over 2 years ago
    • Updated over 1 year ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    each, get, post

    Expression

    get(
    'https://www.commcarehq.org/a/grassrootsoccertrial/api/v0.5/form/',
    {
    query: {
    limit: 1000, //max limit: 1000
    offset: state.meta && state.meta.next ? state.meta.limit + state.meta.offset : 0,
    received_on_start: '2022-02-16',
    received_on_end: '2022-02-18',
    xmlns: 'http://openrosa.org/formdesigner/D771417E-354E-4906-A686-DF0BA230F16A',
    },
    },
    state => {
    const { meta, objects } = state.data;
    const { openfnInboxUrl } = state.configuration;
    const xmlnsList = [
    // 'http://openrosa.org/formdesigner/40BBC9E3-C650-4F72-A027-235BF33D87AB', //Create Intervention form
    // 'http://openrosa.org/formdesigner/D50A9A33-B1B4-41B2-9ACA-15DBBDFBCF8C', // My Team/Group Name form
    //'http://openrosa.org/formdesigner/D771417E-354E-4906-A686-DF0BA230F16A', // Register Participant form
    // 'http://openrosa.org/formdesigner/2B9F69A2-7E51-49F6-9FF9-F72F3EC14A9E', // Register Participant skillz
    // 'http://openrosa.org/formdesigner/304CABA9-C8A8-4360-83C6-5E2EC1D2C2AC', // Intervention notes
    //'http://openrosa.org/formdesigner/56DB98AC-67EC-4BBA-91FC-9443E84E43CE', //PHQ9
    // 'http://openrosa.org/formdesigner/5E2E3990-2C3C-42F5-BE0B-922ED29939C4', // ART Adherence Self-Reporting Tool
    // 'http://openrosa.org/formdesigner/4CFAC371-88F7-4349-BEB2-3DA2BDE445EA', //Malaria Testing Event Snapshot
    // 'http://openrosa.org/formdesigner/FAF8F169-0FF1-4DE4-98B7-E4450BECBC84', //Malaria Testing Event Statistics
    // 'http://openrosa.org/formdesigner/E31B9126-1DCA-4603-AD57-271A843448B3', //Register Skillz Plus Club
    //'http://openrosa.org/formdesigner/5D8455CE-6044-471D-83BB-131A3D52794B', // Service Referral Followup -> confirm services received
    // 'http://openrosa.org/formdesigner/0B3DD3B4-A767-4671-A63C-8A352DAA8E2D', // service referral followup
    //'http://openrosa.org/formdesigner/59E1207B-969F-402D-9EEE-675504036F78', //Home Visit log form
    // 'http://openrosa.org/formdesigner/3B4B1C64-092A-4922-B033-94D80A11D960', // Coach Session Register form
    // 'http://openrosa.org/formdesigner/41DF97A0-0E4B-460D-B983-13D404565009', //HIV Testing Event Snapshot
    // 'http://openrosa.org/formdesigner/EAA0ABBB-C517-4E7F-82A9-5799E944FE52', //HIV Testing Event Statistics
    // 'http://openrosa.org/formdesigner/EA6C0348-91F7-44FC-8786-B34F50B0CB62', //Register Event
    // 'http://openrosa.org/formdesigner/34DD6DFD-13E7-4E19-8A27-F18B6D39E12E', //Attendance
    //'http://openrosa.org/formdesigner/F55C4DF9-0CCD-4AED-A5C4-1E39ED2E45C4', //Attendance skillz plus club
    // 'http://openrosa.org/formdesigner/A3AF9DA6-1D57-46E4-8431-A5C262DC2DBA', // Pre Challenges
    // 'http://openrosa.org/formdesigner/D2F0F23F-9C0E-41E7-9C46-7553F8B5DCC8', // Post Challenges
    //'http://openrosa.org/formdesigner/0DAB6FD9-A7C1-4F56-A1C8-794B7C123F95', // Service Referral
    // 'http://openrosa.org/formdesigner/98041DA3-B37D-4E8E-A9B9-29EDC036A46A', // Aggregate Service Referrals
    // 'http://openrosa.org/formdesigner/50A337EB-FBD8-4607-A664-21AAE51DFCD1', // Coach Support Visit form
    // 'http://openrosa.org/formdesigner/AA396157-EBF9-4B51-B25A-D5BDA4F3DF73', // Coach Support Visit form Zambia
    // 'http://openrosa.org/formdesigner/3FFDCE4F-35A9-4FA9-971F-EFFDC94E597F', //Risk & vulnerability assessment
    //'http://openrosa.org/formdesigner/3DAF13EC-FA77-4480-8946-667D841B439A', //risk & vulnerability assessment | new Referrals
    ];

    // const forms = objects.filter(obj => xmlnsList.includes(obj.form['@xmlns']));
    const forms = objects;

    state.configuration = { baseUrl: 'https://www.openfn.org' };
    console.log('Posting form submissions to OpenFn Inbox...');

    return each(forms, state => {
    return post(`/inbox/${openfnInboxUrl}`, { body: state.data }, state => ({
    ...state,
    data: {},
    references: [],
    }))(state);
    })(state);
    }
    );
    //ALL form xmlns codes
    //xmlns: 'http://openrosa.org/formdesigner/D50A9A33-B1B4-41B2-9ACA-15DBBDFBCF8C', // My Team/Group Name form
    //xmlns: 'http://openrosa.org/formdesigner/D771417E-354E-4906-A686-DF0BA230F16A', // Register Participant form
    //xmlns: 'http://openrosa.org/formdesigner/2B9F69A2-7E51-49F6-9FF9-F72F3EC14A9E', // Register Participant skillz
    //xmlns: 'http://openrosa.org/formdesigner/304CABA9-C8A8-4360-83C6-5E2EC1D2C2AC', // Intervention notes
    //xmlns: 'http://openrosa.org/formdesigner/304CABA9-C8A8-4360-83C6-5E2EC1D2C2AC', // Intervention Notes form
    //xmlns: 'http://openrosa.org/formdesigner/AA396157-EBF9-4B51-B25A-D5BDA4F3DF73', // Coach Support Visit form Zambia
    //xmlns: 'http://openrosa.org/formdesigner/50A337EB-FBD8-4607-A664-21AAE51DFCD1', // Coach Support Visit form
    //xmlns: 'http://openrosa.org/formdesigner/3B4B1C64-092A-4922-B033-94D80A11D960', // Coach Session Register form
    //xmlns: 'http://openrosa.org/formdesigner/34DD6DFD-13E7-4E19-8A27-F18B6D39E12E', //Attendance
    //xmlns: 'http://openrosa.org/formdesigner/4CFAC371-88F7-4349-BEB2-3DA2BDE445EA', //Malaria Testing Event Snapshot
    //xmlns: 'http://openrosa.org/formdesigner/59E1207B-969F-402D-9EEE-675504036F78', //Home Visit log form
    //xmlns: 'http://openrosa.org/formdesigner/41DF97A0-0E4B-460D-B983-13D404565009', //HIV Testing Event Snapshot
    //xmlns: 'http://openrosa.org/formdesigner/551BCED9-077B-40EE-849D-0416756B9A75', // PHQ9
    //xmlns: 'http://openrosa.org/formdesigner/0DAB6FD9-A7C1-4F56-A1C8-794B7C123F95', // Service Referral
    //xmlns: 'http://openrosa.org/formdesigner/0B3DD3B4-A767-4671-A63C-8A352DAA8E2D', // Service Referral Followup
    //xmlns: 'http://openrosa.org/formdesigner/98041DA3-B37D-4E8E-A9B9-29EDC036A46A', // Aggregate Service Referrals
    //xmlns: 'http://openrosa.org/formdesigner/5E2E3990-2C3C-42F5-BE0B-922ED29939C4', // ART Adherence Self-Reporting Tool
    //xmlns: 'http://openrosa.org/formdesigner/A3AF9DA6-1D57-46E4-8431-A5C262DC2DBA', // Pre Challenges
    //xmlns: 'http://openrosa.org/formdesigner/D2F0F23F-9C0E-41E7-9C46-7553F8B5DCC8', // Post Challenges
    //xmlns: 'http://openrosa.org/formdesigner/FAF8F169-0FF1-4DE4-98B7-E4450BECBC84', // Malaria Testing Event Statistics
    //xmlns: 'http://openrosa.org/formdesigner/EA6C0348-91F7-44FC-8786-B34F50B0CB62', //Register Event
    //xmlns: 'http://openrosa.org/formdesigner/EAA0ABBB-C517-4E7F-82A9-5799E944FE52', //HIV Testing Event Statistics

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08.html b/fr/adaptors/library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08.html index e3df89c451c..25badee7206 100644 --- a/fr/adaptors/library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08.html +++ b/fr/adaptors/library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14.html b/fr/adaptors/library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14.html index 1a89623b618..ba569bcee5f 100644 --- a/fr/adaptors/library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14.html +++ b/fr/adaptors/library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14.html @@ -22,13 +22,13 @@ - +

    2. SMS Balance Update to Customer

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, send

    Expression

    send(
    fields(
    field('to_number',
    dataValue('Envelope.Body.notification.Phone_Number__c')
    ),
    field('message_type', 'sms'),
    field('route_id', 'PN5d224d8136086997'),
    field('content',
    'Payment successful! Your updated contract balance is '
    + state.data.Envelope.Body.notification.AmountDue__c
    )
    )
    );
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28.html b/fr/adaptors/library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28.html index 570d4635506..4f2990b02d5 100644 --- a/fr/adaptors/library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28.html +++ b/fr/adaptors/library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28.html @@ -22,13 +22,13 @@ - +

    Add DHIS2 Data Value Sets

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: Add DHIS2 Data Value Sets
    • Adaptor: @openfn/language-dhis2
    • Adaptor Version: v0.1.0
    • Created over 7 years ago
    • Updated about 6 years ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    dataPath, dataValue, each, field, fields

    Expression

    each(
    dataPath("data[*]"),
    // Use our system specific helper functions...
    dataValueSet(
    fields(
    field("dataSet", "pBOMPrpg1QX"),
    field("orgUnit", "DiszpKrYNg8"),
    field("period", "201401"),
    field("completeData", dataValue("today")),
    field("dataValues", function(state) {
    // Or write your own JS...
    console.log("Do anything you want in here.");
    return [
    dataElement("qrur9Dvnyt5", state.data.site_school_number),
    dataElement("oZg33kd9taw", state.data.light_source),
    dataElement("msodh3rEMJa", state.data.number_of_children)
    ];
    })
    )
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Attendance-Non-Skillz-2021-06-14.html b/fr/adaptors/library/jobs/auto/Attendance-Non-Skillz-2021-06-14.html index 54ff0e2629a..2c86a7d7a1b 100644 --- a/fr/adaptors/library/jobs/auto/Attendance-Non-Skillz-2021-06-14.html +++ b/fr/adaptors/library/jobs/auto/Attendance-Non-Skillz-2021-06-14.html @@ -22,13 +22,13 @@ - +

    Attendance Non Skillz

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataPath, dataValue, each, field, fields, lastReferenceValue, map, merge, query, relationship, upsert, Array

    Expression

    fn(state => {
    if (!state.data.form.attendance_list.update_participant_cases.item) {
    console.log('No participant attendance data was provided, not upserting to Salesforce.');
    return state;
    } else {
    // query(
    // `SELECT Id, Name, CommCare_Ext_ID__c FROM Event__c WHERE CommCare_Case_ID__c = '${state.data.form.attendance_list.update_participant_cases.item[0]['@id']}'`
    // );

    // fn(state => {
    const records = lastReferenceValue('records')(state);
    const eventName = lastReferenceValue('records[0].CommCare_Ext_ID__c')(state);

    function replaceAccents(input) {
    return input
    .replace(/á|â|ã|à/, 'a')
    .replace(/Á|Â|Ã|À/, 'A')
    .replace(/ç/, 'c')
    .replace(/é|ê/, 'e')
    .replace(/É|Ê/, 'E')
    .replace(/í/, 'i')
    .replace(/Í/, 'I')
    .replace(/ó|ô|õ/, 'o')
    .replace(/Ó|Ô|Õ/, 'O')
    .replace(/ú/, 'u')
    .replace(/Ú/, 'u');
    }
    // if (!eventName) {
    // console.log(
    // `Participant not found with CommCare_Case_ID__c: ${state.data.form.attendance_list.update_participant_cases.item[0]['@id']}`
    // );
    // return state;
    // }

    return execute(
    fn(state => {
    // Note: lastReferenceValue selects the first item in the references array.
    state.data.eventName = eventName ? eventName.replace(/\//gi, '') : null;

    function getSessionValue(present) {
    switch (present.toString().toLowerCase()) {
    case 'yes':
    return 'X';
    case 'no':
    return 'A';
    case '':
    return 'N';
    default:
    return 'U';
    }
    }

    function getSessionId(session_text) {
    return session_text.toString().trim().slice(0, session_text.indexOf(' ')).slice(1);
    }

    function objectToArray(object) {
    if (!object) return [];
    return !Array.isArray(object) ? [object] : object;
    }

    state.data.form.attendance_list.update_participant_cases.item = objectToArray(
    state.data.form.attendance_list.update_participant_cases.item
    );

    const sessionText = dataValue('form.attendance_list.session')(state);
    const sessionId = getSessionId(sessionText);

    // @aleksa-krolls confirm the path for the session date
    const sessionDate = dataValue("form.case['@date_modified']")(state);

    state.data.form.attendance_list.update_participant_cases.item =
    state.data.form.attendance_list.update_participant_cases.item.map(item => {
    const sessionValue = getSessionValue(item.attendance_session);
    return {
    ...item,
    dynamicFields: {
    [`Session_${sessionId}__c`]: sessionValue,
    [`Session_${sessionId}_Date__c`]: sessionDate,
    },
    };
    });

    return state;
    }),

    each(
    merge(
    dataPath('form.attendance_list.update_participant_cases.item[*]'),
    fields(
    field('intervention_name', dataValue('form.intervention_name')),
    field('eventName', dataValue('eventName')),
    field('caseid', dataValue('form.case.@case_id'))
    )
    ),
    upsert('Attendance__c', 'CommCare_Ext_ID__c', state => ({
    ...fields(
    relationship('Event__r', 'CommCare_Case_ID__c', dataValue('caseid')),
    field(
    'CommCare_Ext_ID__c',
    state => `${state.data['@id']}-${replaceAccents(state.data.intervention_name)}`
    ),
    relationship('Person_Attendance__r', 'Participant_Identification_Number_PID__c', dataValue('@id'))
    ),
    ...state.data.dynamicFields,
    }))
    )
    )(state);
    }
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/CHW-case-to-DHIS2-2023-04-27.html b/fr/adaptors/library/jobs/auto/CHW-case-to-DHIS2-2023-04-27.html index ba3121d307a..ab495f069ff 100644 --- a/fr/adaptors/library/jobs/auto/CHW-case-to-DHIS2-2023-04-27.html +++ b/fr/adaptors/library/jobs/auto/CHW-case-to-DHIS2-2023-04-27.html @@ -22,13 +22,13 @@ - +

    CHW case to DHIS2

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    create, dataValue

    Expression

    create('trackedEntityInstances', {
    trackedEntityType: 'nEenWmSyUEp', // a person
    orgUnit: 'DiszpKrYNg8',
    attributes: [
    {
    attribute: 'w75KJ2mc4zz', // attribute id for first name
    value: dataValue('case.firstName')(state) // data from submission
    },
    {
    attribute: 'zDhUuAYrxNC', // attribute id for last name
    value: dataValue('case.lastName')(state) // data from another submission field
    }
    ]
    });
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26.html b/fr/adaptors/library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26.html index f8fb755e100..1d776c88564 100644 --- a/fr/adaptors/library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26.html +++ b/fr/adaptors/library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26.html @@ -22,13 +22,13 @@ - +

    Catch Error in HTTP Request

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: Catch Error in HTTP Request
    • Adaptor: @openfn/language-http
    • Adaptor Version: latest
    • Created about 7 years ago
    • Updated about 1 year ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    get, JSON

    Expression

    get(
    'https://jsonplaceholder.typicode.com/wrongUrl', // the url
    {
    transformResponse: [
    data => {
    console.log("The data from the response, BEFORE the error is thrown");
    console.log(JSON.stringify(data, null, 2))
    return data;
    }
    ],
    }, // no additional options
    state => { // the callback
    console.log('the data', state.data)
    return state;
    }
    );
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Coach-Session-Register-2021-05-03.html b/fr/adaptors/library/jobs/auto/Coach-Session-Register-2021-05-03.html index 9bfeeaf7750..86faf52b433 100644 --- a/fr/adaptors/library/jobs/auto/Coach-Session-Register-2021-05-03.html +++ b/fr/adaptors/library/jobs/auto/Coach-Session-Register-2021-05-03.html @@ -22,13 +22,13 @@ - +

    Coach Session Register

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, each, field, fields, query, relationship, upsert

    Expression

    // push to production
    query(
    `SELECT Coach_A__c, Coach_A__r.Name from Event__c where CommCare_Case_ID__c = '${state.data.form.case['@case_id']}'`
    );

    fn(state => {
    const present = dataValue('form.present')(state).toLowerCase();

    function getSessionValue() {
    let value;
    switch (present) {
    case 'yes':
    value = 'X';
    break;
    case 'no':
    value = 'A';
    break;
    case '':
    value = 'N';
    break;
    default:
    value = 'U';
    break;
    }
    return value;
    }

    const session_text = dataValue('form.session')(state);

    const session_id = session_text.trim().slice(0, session_text.indexOf(' ')).slice(1);

    const coachname = dataValue('form.coach_name')(state)
    ? dataValue('form.coach_name')(state)
    : state.references[0].records[0].Coach_A__r.Name;

    let external_id = `${dataValue('form.case.@case_id')(state)}
    ${coachname}`; //case_id + coach_name for external Id

    state.data.commcare_external_id = external_id.toLowerCase().replace(/\s/g, '').trim();

    state.data.dynamicFields = [
    field(`Session_${session_id}__c`, getSessionValue()),
    field(`Session_${session_id}_Date__c`, dataValue('form.date')(state)),
    //field(`Session_${session_id}_Duration__c`, dataValue('form.duration')(state)), //NOTE: Duration fields don't exist in SF?
    ];

    state.data.durationFields = [field(`Session_${session_id}_Duration__c`, dataValue('form.duration')(state))];

    return state;
    });

    upsert('Event__c', 'CommCare_Case_ID__c', state => ({
    ...fields(field('CommCare_Case_ID__c', dataValue('form.case.@case_id'))),
    ...fields(...state.data.durationFields),
    }));

    query(
    `SELECT Coach_A__c, Coach_A__r.CommCare_Ext_ID__c from Event__c where CommCare_Case_ID__c = '${state.data.form.case['@case_id']}'`
    );

    fn(state => {
    const coaches = dataValue('form.coach_name')(state).split(' ');
    const dynamicFields = state.data.dynamicFields;
    const commcare_external_id = state.data.commcare_external_id;
    const caseid = state.data.form.case['@case_id'];
    return each(
    coaches,
    upsert('Attendance__c', 'CommCare_Ext_ID__c', state => ({
    ...fields(
    //relationship('RecordType', 'Name', 'Coach Development'),
    field('RecordTypeId', '012500000009jqaAAA'),
    relationship('Event__r', 'CommCare_Case_ID__c', caseid),
    relationship('Person_Attendance__r', 'CommCare_Ext_ID__c', state => {
    const coach_name = state.data;
    return coach_name;
    }),
    field('CommCare_Ext_ID__c', commcare_external_id)
    ),
    ...fields(...dynamicFields),
    }))
    )(state);
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/CommCare-FHIR.html b/fr/adaptors/library/jobs/auto/CommCare-FHIR.html index 89237a0d6f4..7aa666322c8 100644 --- a/fr/adaptors/library/jobs/auto/CommCare-FHIR.html +++ b/fr/adaptors/library/jobs/auto/CommCare-FHIR.html @@ -22,13 +22,13 @@ - +

    Create encounter in OpenHIM

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    dataValue, field, fields

    Expression

    // CommCare form submission mapped to the FHIR patient encounter standard,
    // submitted by Simon Kelly @ Dimagi.
    encounter(
    fields(
    field('resourceType', 'Encounter'),
    field('status', 'finished'),
    field('type', function (state) {
    return [
    {
    coding: [
    {
    system: 'momconnect:type',
    code: '8',
    },
    ],
    },
    ];
    }),
    field('contained', function (state) {
    return [
    {
    resourceType: 'Patient',
    id: 'patient',
    identifier: [
    {
    use: 'official',
    system: 'momconnect:sanid',
    value: dataValue('properties.id_number')(state),
    },
    ],
    name: [
    {
    use: 'official',
    family: [dataValue('properties.family_name')(state)],
    given: [dataValue('properties.given_name')(state)],
    text: dataValue('properties.given_name')(state).concat(
    ' ',
    dataValue('properties.family_name')(state)
    ),
    },
    ],
    gender: 'female',
    birthDate: dataValue('properties.dob')(state),
    telecom: [
    {
    system: 'phone',
    value: dataValue('properties.msisdn')(state),
    },
    ],
    communication: [
    {
    language: {
    coding: [
    {
    system: 'urn:ietf:bcp:47',
    code: dataValue('properties.language_code')(state),
    },
    ],
    },
    preferred: true,
    },
    ],
    },
    {
    resourceType: 'Observation',
    id: 'edd',
    code: {
    coding: [
    {
    system: 'http://loinc.org',
    code: '11778-8',
    display: 'Delivery date Estimated',
    },
    ],
    },
    valueDateTime: dataValue('properties.edd')(state),
    status: 'preliminary',
    },
    ];
    }),
    field('patient', function (state) {
    return {
    reference: '#patient',
    };
    }),
    field('period', function (state) {
    return {
    start: dataValue('properties.visit_date')(state),
    };
    }),
    field('extension', function (state) {
    return [
    {
    url: 'momconnect:mha',
    valueInteger: 2,
    },
    {
    url: 'momconnect:swt',
    valueInteger: 3,
    },
    {
    url: 'momconnect:dmsisdn',
    valueString: '+27831111111',
    },
    ];
    })
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27.html b/fr/adaptors/library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27.html index cd93bc1bb6c..b2f271343d4 100644 --- a/fr/adaptors/library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27.html +++ b/fr/adaptors/library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27.html @@ -22,13 +22,13 @@ - +

    CommCare to Azure Sql

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    alterState, join, map, sql

    Expression

    // Insert household, fail on duplicate (consider upsert strategy, if you want!)
    sql({
    query:
    'INSERT INTO Household (' +
    [
    'commcare_id',
    'is_head',
    'total_members',
    'head_name',
    'date_registered',
    'village',
    'new_thing',
    ].join(', ') +
    `) VALUES ('` +
    [
    state.data.metadata.instanceID,
    state.data.form.head_of_household === 'yes' ? 1 : 0,
    state.data.form.hh_members,
    state.data.form.individual_name,
    state.data.form.registration_date,
    state.data.form.village_name,
    state.data.form.new_q,
    ].join(`', '`) +
    `');`,
    });

    // Prepare a string to be used for VALUES (...) in our member insert.
    alterState(state => {
    const data = state.references[0];
    const form = data.form;
    const parentId = data.metadata.instanceID;
    const memArr = form.register_hh_members.map((m, i) => {
    return `('${parentId}-${i}', '${parentId}', '${m.hh_member_name}', '${m.age}')`;
    });

    state.members = memArr.join(', ');
    return state;
    });

    // Insert members, fail on duplicate
    sql({
    query: state =>
    `INSERT INTO HouseholdMember (commcare_id, parent, name, age) VALUES ${state.members}`,
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Create-Intervention-2021-04-08.html b/fr/adaptors/library/jobs/auto/Create-Intervention-2021-04-08.html index 536dd46bb38..bf7cf020821 100644 --- a/fr/adaptors/library/jobs/auto/Create-Intervention-2021-04-08.html +++ b/fr/adaptors/library/jobs/auto/Create-Intervention-2021-04-08.html @@ -22,13 +22,13 @@ - +

    Create Intervention

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    alterState, dataValue, field, fields, join, map, relationship, upsert

    Expression

    alterState((state) => {

    function clean(str) {
    if (!!str)
    return str
    .split('_')
    .map(word => {
    let new_word = word.toString().toLowerCase();
    return new_word.slice(0, 1).toUpperCase() + new_word.slice(1);
    })
    .join(' ');
    }

    state.data.form.delivery_method = clean(state.data.form.delivery_method);

    const coachFieldNames = ['Coach_A__r','Coach_B__r','Coach_C__r','Coach_D__r']

    state.data.destinationCoachFields = state.data.form.coaches
    .split(' ')
    .reduce(
    (accumulator, currentValue, currentIndex) => [
    ...accumulator,
    (currentIndex < coachFieldNames.length && !!currentValue
    ? relationship(coachFieldNames[currentIndex], 'CommCare_Ext_ID__c', currentValue)
    : []),
    ],
    []
    );

    return state;
    });

    upsert(
    'Event__c',
    'CommCare_Case_ID__c',
    state=>({
    ...fields(
    field('Name', dataValue('form.name_of_intervention')),
    field('CommCare_Ext_ID__c', state => {
    return dataValue('form.name_of_intervention')(state).replace(/\//gi, '');
    }),
    field('CommCare_Case_ID__c', dataValue('form.case.@case_id')),
    relationship('RecordType', 'Name', 'Intervention'),
    field('Business_Unit__c', state => {
    const bu = dataValue('form.business_unit')(state);
    return bu==='65680f0c4c144b03ad0f86bdc46c1ebc' ? 'GRS Zambia' :
    bu==='04d98397e28046118fade28ced6b65cb' ? 'GRS Zimbabwe' :
    bu==='ed125ab19ec34aacab79585e59eb76f4' ? 'GRS Partnerships': undefined ;
    }),
    relationship(
    'Site__r',
    'CommCare_Ext_ID__c',
    dataValue('form.site')
    ),
    relationship(
    'Venue__r',
    'CommCare_Ext_ID__c',
    dataValue('form.Venue')

    ),
    relationship(
    'Curriculum__r',
    'CommCare_Ext_ID__c',
    dataValue('form.curriculum_selection.curriculum')
    ),
    field('Delivery_Method__c', dataValue('form.delivery_method')),
    field('Class_Group_Team__c', dataValue('form.class_grade')),
    field('Pre_Post_Administered__c', dataValue('form.prepost_administered')),
    field('Start_Date__c', dataValue('form.intervention_dates.start_date')),
    field('End_Date__c', dataValue('form.intervention_dates.end_date'))
    ),
    ...fields(...state.data.destinationCoachFields)
    })
    );
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24.html b/fr/adaptors/library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24.html index 343b89b2b28..86c57c627b7 100644 --- a/fr/adaptors/library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24.html +++ b/fr/adaptors/library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24.html @@ -22,13 +22,13 @@ - +

    Create Patient in OpenMRS

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields

    Expression

    //Job to create patient in OpenMRS 
    patient(
    fields(
    field("gender", dataValue("form.gender")), //map values from CommCare forms
    field("names", function(state) {
    return [{
    "patient_id": dataValue("form.case.@case_id")(state),
    "creator": dataValue("form.user")(state)
    }]
    })
    )
    )





    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12.html b/fr/adaptors/library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12.html index 1a614b60b25..cd742d6f3c3 100644 --- a/fr/adaptors/library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12.html +++ b/fr/adaptors/library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12.html @@ -22,13 +22,13 @@ - +

    Create Person in OpenMRS

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields

    Expression

    person(
    fields(
    field("gender", "M"),
    field("names", function(state) {
    return [{
    "givenName": dataValue("form.first_name")(state),
    "familyName": "Sports_Music_Field_Day"
    }]
    })
    )
    )
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Create-Person-in-SF-2019-02-25.html b/fr/adaptors/library/jobs/auto/Create-Person-in-SF-2019-02-25.html index b03f44b796a..36da4933914 100644 --- a/fr/adaptors/library/jobs/auto/Create-Person-in-SF-2019-02-25.html +++ b/fr/adaptors/library/jobs/auto/Create-Person-in-SF-2019-02-25.html @@ -22,13 +22,13 @@ - +

    Create Person in SF

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, humanProper, relationship, upsert

    Expression

    upsert("Patient__c", "CommCare_Case_ID__c", fields(
    field('CommCare_Case_ID__c', dataValue("form.case.@case_id")),
    relationship('Clinic__r', 'Location_ID__c', dataValue('form.case.create.owner_id')),
    field('First_Name__c', humanProper(state.data.form.case.update.patient_first_name)),
    field('Last_Name__c', humanProper(state.data.form.case.update.patient_last_name)),
    field('Patient_ID__c', dataValue('form.case.update.patient_id')),
    field('Age_Months_Started_Treatment__c', dataValue('form.case.update.age_months_start_treatment_rounded')),
    field('Registration_Date__c', (state) => {
    const validDate = state.data.form.case.update.registration_date
    return ( validDate ? new Date(validDate).toISOString() : null )
    })
    ))
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF.html b/fr/adaptors/library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF.html index ca2d6026641..1dea3f32dfc 100644 --- a/fr/adaptors/library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF.html +++ b/fr/adaptors/library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF.html @@ -22,13 +22,13 @@ - +

    Create SMS linked to contact

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    create, dataValue, field, fields, relationship

    Expression

    create(
    'SMS__c',
    fields(
    field('text__c', dataValue('message_text')),
    relationship(
    'Contact__r',
    'Contact_Phone_Number__c',
    dataValue('from_number')
    ),
    field('date__c', dataValue('date'))
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Create-TEI-dhis2-2021-03-22.html b/fr/adaptors/library/jobs/auto/Create-TEI-dhis2-2021-03-22.html index 97dbe31bffd..ebe2058c632 100644 --- a/fr/adaptors/library/jobs/auto/Create-TEI-dhis2-2021-03-22.html +++ b/fr/adaptors/library/jobs/auto/Create-TEI-dhis2-2021-03-22.html @@ -22,13 +22,13 @@ - +

    Create TEI (dhis2)

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    create, dataValue

    Expression

    create('trackedEntityInstances', {
    orgUnit: 'g8upMTyEZGZ',
    trackedEntityType: 'nEenWmSyUEp',
    program: 'IpHINAT79UW',
    attributes: [
    { attribute: 'zDhUuAYrxNC', value: dataValue('body.Patient_name') },
    { attribute: 'w75KJ2mc4zz', value: dataValue('body.Last_Name_of_Patient') },
    ],
    enrollments: [
    {
    orgUnit: 'g8upMTyEZGZ',
    program: 'IpHINAT79UW',
    programState: 'oRySG82BKE6', // active
    enrollmentDate: dataValue('body.Date'),
    incidentDate: dataValue('body.Date'),
    },
    ],
    });
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Create-contact-2021-03-01.html b/fr/adaptors/library/jobs/auto/Create-contact-2021-03-01.html index c36ee804d21..e2b8dce4504 100644 --- a/fr/adaptors/library/jobs/auto/Create-contact-2021-03-01.html +++ b/fr/adaptors/library/jobs/auto/Create-contact-2021-03-01.html @@ -22,13 +22,13 @@ - +

    Create contact

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    create, dataValue

    Expression

    create('Contact', {
    FirstName: dataValue("body.Patient_name"),
    LastName: dataValue('body.Last_Name_of_Patient'),
    Age__c: dataValue("body.Age"),
    Sex__c: dataValue('body.Sex'),
    Case_ID__c: dataValue("body.National_ID"),
    Comments__c: dataValue("body.Comments")
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/DHIS2-DataValues-API.html b/fr/adaptors/library/jobs/auto/DHIS2-DataValues-API.html index 04b826c61b3..ee15f18324f 100644 --- a/fr/adaptors/library/jobs/auto/DHIS2-DataValues-API.html +++ b/fr/adaptors/library/jobs/auto/DHIS2-DataValues-API.html @@ -22,13 +22,13 @@ - +

    Add data values

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    dataValue, field, fields

    Expression

    // ----
    // Add data to data value sets in DHIS2 using a generic JSON message, submitted
    // by Taylor Downs @ OpenFn.
    // ---

    dataValueSet(
    fields(
    field('dataSet', 'pBOMPrpg1QX'),
    field('orgUnit', 'DiszpKrYNg8'),
    field('period', '201401'),
    field('completeData', dataValue('form.date')),
    field('dataValues', function (state) {
    return [
    dataElement('qrur9Dvnyt5', dataValue('form.prop_a')(state)),
    dataElement('oZg33kd9taw', dataValue('form.prop_b')(state)),
    dataElement('msodh3rEMJa', dataValue('form.prop_c')(state)),
    ];
    })
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/DHIS2-Events-2016-01-27.html b/fr/adaptors/library/jobs/auto/DHIS2-Events-2016-01-27.html index beb46967865..5e8ccfa8654 100644 --- a/fr/adaptors/library/jobs/auto/DHIS2-Events-2016-01-27.html +++ b/fr/adaptors/library/jobs/auto/DHIS2-Events-2016-01-27.html @@ -22,13 +22,13 @@ - +

    DHIS2 Events

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    create, dataValue, Math

    Expression

    create('trackedEntityInstances', {
    orgUnit: 'DiszpKrYNg8',
    trackedEntityType: 'Zy2SEgA61ys',
    attributes: [
    {
    attribute: 'flGbXLXCrEo', // system case ID
    value: Math.random(),
    },
    ],
    });

    // create('trackedEntityInstances', {
    // trackedEntityType: 'nEenWmSyUEp', // a person
    // orgUnit: 'g8upMTyEZGZ', // Njandama MCHP
    // attributes: [
    // {
    // attribute: 'w75KJ2mc4zz', // attribute id for first name
    // value: dataValue('case.firstName')(state), // data from submission
    // },
    // {
    // attribute: 'zDhUuAYrxNC', // attribute id for last name
    // value: dataValue('case.lastName')(state), // data from another submission field
    // },
    // ],
    // enrollments: [
    // {
    // orgUnit: 'g8upMTyEZGZ', // Njandama MCHP
    // program: 'IpHINAT79UW', // enroll in Child Program
    // enrollmentDate: new Date().toISOString().slice(0, 10), // some custom javascript
    // incidentDate: state.data.metadata.timeStart.slice(0, 10), // more custom javascript
    // },
    // ],
    // });
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/DHIS2-Events-API.html b/fr/adaptors/library/jobs/auto/DHIS2-Events-API.html index bdc91f84fb0..93f65628026 100644 --- a/fr/adaptors/library/jobs/auto/DHIS2-Events-API.html +++ b/fr/adaptors/library/jobs/auto/DHIS2-Events-API.html @@ -22,13 +22,13 @@ - +

    Add events

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    dataValue, field, fields

    Expression

    // ----
    // Create new events in DHIS2 using a generic JSON message, submitted by
    // Taylor Downs @ OpenFn for demonstration porpoises.
    // ---

    event(
    fields(
    field('program', 'eBAyeGv0exc'),
    field('orgUnit', 'DiszpKrYNg8'),
    field('eventDate', dataValue('meta.date')),
    field('status', 'COMPLETED'),
    field('storedBy', 'admin'),
    field('coordinate', {
    latitude: '59.8',
    longitude: '10.9',
    }),
    field('dataValues', function (state) {
    return [
    dataElement('qrur9Dvnyt5', dataValue('form.prop_a')(state)),
    dataElement('oZg33kd9taw', dataValue('form.prop_b')(state)),
    dataElement('msodh3rEMJa', dataValue('form.prop_c')(state)),
    ];
    })
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Extract-Vitas-Data-2021-05-11.html b/fr/adaptors/library/jobs/auto/Extract-Vitas-Data-2021-05-11.html index f46d0e95c79..3b77b2e8b1c 100644 --- a/fr/adaptors/library/jobs/auto/Extract-Vitas-Data-2021-05-11.html +++ b/fr/adaptors/library/jobs/auto/Extract-Vitas-Data-2021-05-11.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Failed-Payment-Notification-2021-04-23.html b/fr/adaptors/library/jobs/auto/Failed-Payment-Notification-2021-04-23.html index a066eaea860..1163a6251fb 100644 --- a/fr/adaptors/library/jobs/auto/Failed-Payment-Notification-2021-04-23.html +++ b/fr/adaptors/library/jobs/auto/Failed-Payment-Notification-2021-04-23.html @@ -22,13 +22,13 @@ - +

    Failed Payment Notification

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: Failed Payment Notification
    • Adaptor: @openfn/language-http
    • Adaptor Version: v3.1.7
    • Created over 2 years ago
    • Updated over 2 years ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    alterState

    Expression

    alterState(state => {
    console.log("We have notified the administrator to manually initiate payment.");
    console.log("We have notified the CHW that payment is pending.");
    return state;
    })
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Fetch-Claims-2023-07-17.html b/fr/adaptors/library/jobs/auto/Fetch-Claims-2023-07-17.html index 5044769718e..b89a4228824 100644 --- a/fr/adaptors/library/jobs/auto/Fetch-Claims-2023-07-17.html +++ b/fr/adaptors/library/jobs/auto/Fetch-Claims-2023-07-17.html @@ -22,13 +22,13 @@ - +

    Fetch Claims

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    create, get, map, JSON

    Expression

    // establish a baseline for the cursor
    fn(state => {
    const today = new Date().toISOString().split('T')[0];
    console.log(
    `Fetching all claims updated on or after ${state.cursor || '2023-07-19'}`
    );
    return { ...state, today };
    });

    // Get claims and related patients from HAPI, updated since cursor date
    get(
    'Claim',
    {
    query: {
    _lastUpdated: `ge${state.cursor || '2023-07-19'}`,
    _include: 'Claim:patient',
    _sort: '-_lastUpdated',
    _count: 200,
    },
    },
    next => {
    if (next.data.total == 0)
    return { ...next, data: { claims: [], patients: [] } };

    const byType = next.data.entry.reduce((r, a) => {
    r[a.resource.resourceType] = r[a.resource.resourceType] || [];
    r[a.resource.resourceType].push(a);
    return r;
    }, Object.create(null));

    return {
    ...next,
    data: {
    claims: byType.Claim,
    patients: byType.Patient,
    },
    };
    }
    );

    // clean and merge data
    fn(state => {
    const { claims, patients } = state.data;

    // Noisy logs to help debug data quality issues
    claims.forEach(c => {
    const { resource } = c;
    if (!resource.id) console.log('claim', resource.id, 'has no id');
    if (!resource.item) {
    console.log('claim', resource.id, 'has no item');
    } else if (!resource.item[0].productOrService.coding) {
    console.log('claim', resource.id, 'has no coding');
    }

    if (!resource.patient.reference.split('/')[1])
    console.log('claim', resource.id, 'has no patient');
    });

    const patientsWithClaims = patients
    // drop all patients without identifiers
    .filter(p => p.resource.identifier)
    .map(p => ({
    ...p,
    claims: claims.filter(c => {
    return (
    // has item
    c.resource.item &&
    // has coding
    c.resource.item[0].productOrService.coding &&
    // for this patient
    p.resource.id == c.resource.patient.reference.split('/')[1]
    );
    }),
    }));

    return { ...state, data: { patientsWithClaims } };
    });

    // print some logs and update the cursor for next time
    fn(state => {
    const { data, today } = state;

    console.log('Found the following patients and claims in FHIR:');
    console.log(
    JSON.stringify(
    data.patientsWithClaims.map(p => ({
    patient: p.resource.id,
    claims: p.claims.map(c => c.resource.id),
    })),
    null,
    2
    )
    );

    return { data: state.data, cursor: today };
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22.html b/fr/adaptors/library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22.html index e1d2ec6ab3b..41d46c297c0 100644 --- a/fr/adaptors/library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22.html +++ b/fr/adaptors/library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16.html b/fr/adaptors/library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16.html index 7bc192c62e5..0fd9e2081a7 100644 --- a/fr/adaptors/library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16.html +++ b/fr/adaptors/library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16.html @@ -22,13 +22,13 @@ - +

    Get CommCare Forms (Bulk Extract)

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: Get CommCare Forms (Bulk Extract)
    • Adaptor: @openfn/language-http
    • Adaptor Version: v3.1.7
    • Created over 1 year ago
    • Updated over 1 year ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    each, get, post

    Expression

    // Your job goes here.
    get(
    'https://www.commcarehq.org/a/commcare-demo-2035/api/v0.5/form/',
    {
    query: {
    limit: 1000, //max limit: 1000
    offset: state.meta && state.meta.next ? state.meta.limit + state.meta.offset : 0,
    received_on_start: '2022-05-16',
    received_on_end: '2022-05-18',
    xmlns: 'http://openrosa.org/formdesigner/C87A7E2A-D98D-4E2C-9F0B-997E0AE635C6',
    },
    },
    state => {
    const { meta, objects } = state.data;
    const { openfnInboxUrl } = state.configuration;
    const xmlnsList = [
    'http://openrosa.org/formdesigner/C87A7E2A-D98D-4E2C-9F0B-997E0AE635C6'

    ];

    // const forms = objects.filter(obj => xmlnsList.includes(obj.form['@xmlns']));
    const forms = objects;

    state.configuration = { baseUrl: 'https://www.openfn.org' };
    console.log('Posting form submissions to OpenFn Inbox...');

    return each(forms, state => {
    return post(`/inbox/${openfnInboxUrl}`, { body: state.data }, state => ({
    ...state,
    data: {},
    references: [],
    }))(state);
    })(state);
    }
    );
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Get-cases-from-Primero-2021-09-23.html b/fr/adaptors/library/jobs/auto/Get-cases-from-Primero-2021-09-23.html index 1338c495789..f82d9802166 100644 --- a/fr/adaptors/library/jobs/auto/Get-cases-from-Primero-2021-09-23.html +++ b/fr/adaptors/library/jobs/auto/Get-cases-from-Primero-2021-09-23.html @@ -22,13 +22,13 @@ - +

    Get cases from Primero

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    getCases, JSON

    Expression

    getCases({
    remote: true,
    case_id: "234bbac3-7278-430a-98b5-1abc460671ec" //extract 1 case using case id
    //query: //...or use 'query' to filter by other criteria to get many cases
    }, state => {
    console.log(`Primero cases extracted: ${JSON.stringify(state.data)}`); //logging Primero response
    return { ...state, data: {}, references: [] }
    })
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03.html b/fr/adaptors/library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03.html index f75cb4bdb35..a0fc9b0d9ba 100644 --- a/fr/adaptors/library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03.html +++ b/fr/adaptors/library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03.html @@ -22,13 +22,13 @@ - +

    HIV Testing Event Snapshot

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, upsert

    Expression

    // push to production
    upsert(
    'Event__c',
    'CommCare_Ext_ID__c',
    fields(
    field('Name', dataValue('form.basic_information.intervention')),
    field('Venue__c', dataValue('form.basic_information.venue')),
    field('Coach_A__c', dataValue('form.hidden_properties.coach_name')),
    field('Date__c', dataValue('form.basic_information.event_date')),
    field('Testing_Partner_Contact_Persion__c', dataValue('form.basic_information.testing_partner__contact_people')),
    field('of_People_in_Attendance_Testing_Events__c', dataValue('form.basic_information.number_in_attendance')),
    field('Event_Type__c', dataValue('form.basic_information.testing_event_type')),
    field('Coordinator__c', dataValue('form.basic_information.event_coordinator')),
    field(
    'What_organization_discussed_VMMC__c',
    dataValue('form.basic_information.question2.what_organisation_discussed_mmc')
    ),
    field(
    'What_organization_s_What_topic_s__c',
    dataValue(
    'form.basic_information.information_sessions_other.what_organisations_delivered_a_session_and_what_was_the_topic_of_the_sessio'
    )
    ),
    field(
    'How_was_the_information_presented__c',
    dataValue('form.basic_information.question2.how_was_this_information_presented_eg_lecture_individua_sessions_etc')
    ),
    field('how_many_people_attended_the_sessions__c', dataValue('form.basic_information.number_in_attendance')),
    field(
    'How_many_people_attended_the_sessions_oh__c',
    dataValue('form.basic_information.question2.approximately_how_many_people_attended_the_sessions_in_total')
    ),
    field(
    'Did_other_organizations_conduct__c',
    dataValue(
    'form.basic_information.information_sessions_other.did_other_organisations_eg_youth-friendly_clinic_ministry_of_health_etc_con'
    )
    ),
    field(
    'Testing_Key_Lesson_s_Learned__c',
    dataValue('form.basic_information.event_overview.highlights_key_challenges')
    ),
    field(
    'X2_Main_challenges__c',
    dataValue(
    'form.basic_information.event_overview.please_describe_highlights_key_challenges_and_main_lessons_learned_from_thi'
    )
    )
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03.html b/fr/adaptors/library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03.html index 9aec62af953..b74bda7f1f3 100644 --- a/fr/adaptors/library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03.html +++ b/fr/adaptors/library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03.html @@ -22,13 +22,13 @@ - +

    HIV Testing Event Statistics

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, upsert

    Expression

    // push to production
    upsert(
    'Event__c',
    'CommCare_Case_ID__c',
    fields(
    field('Name', dataValue('form.event_name')),
    field('CommCare_Case_ID__c', dataValue('form.case.@case_id')),
    field('Tested_Negative_Males_0_9__c', dataValue('form.table_1_testing_results.male_hiv_negative.question2')),
    field('Tested_Negative_Males_10_14__c', dataValue('form.table_1_testing_results.male_hiv_negative.question7')),
    field('Tested_Negative_Males_15_19__c', dataValue('form.table_1_testing_results.male_hiv_negative.question13')),
    field('Tested_Negative_Males_20_24__c', dataValue('form.table_1_testing_results.male_hiv_negative.question18')),
    field('Tested_Negative_Males_25_49__c', dataValue('form.table_1_testing_results.male_hiv_negative.question28')),
    field('Tested_Negative_Males_50__c', dataValue('form.table_1_testing_results.male_hiv_negative.question32')),
    field('Tested_Positive_Males_0_9__c', dataValue('form.table_1_testing_results.question33.question36')),
    field('Tested_Positive_Males_10_14__c', dataValue('form.table_1_testing_results.question33.question41')),
    field('Tested_Positive_Males_15_19__c', dataValue('form.table_1_testing_results.question33.question45')),
    field('Tested_Positive_Males_20_24__c', dataValue('form.table_1_testing_results.question33.question50')),
    field('Tested_Positive_Males_25_49__c', dataValue('form.table_1_testing_results.question33.question56')),
    field('Tested_Positive_Males_50__c', dataValue('form.table_1_testing_results.question33.question60')),
    field('Tested_Negative_Females_0_9__c', dataValue('form.table_1_testing_results.question61.question65')),
    field('Tested_Negative_Females_10_14__c', dataValue('form.table_1_testing_results.question61.question69')),
    field('Tested_Negative_Females_15_19__c', dataValue('form.table_1_testing_results.question61.question73')),
    field('Tested_Negative_Females_20_24__c', dataValue('form.table_1_testing_results.question61.question78')),
    field('Tested_Negative_Females_25_49__c', dataValue('form.table_1_testing_results.question61.question84')),
    field('Tested_Negative_Females_50__c', dataValue('form.table_1_testing_results.question61.question88')),
    field('Tested_Positive_Females_0_9__c', dataValue('form.table_1_testing_results.question89.question92')),
    field('Tested_Positive_Females_10_14__c', dataValue('form.table_1_testing_results.question89.question97')),
    field('Tested_Positive_Females_15_19__c', dataValue('form.table_1_testing_results.question89.question101')),
    field('Tested_Positive_Females_20_24__c', dataValue('form.table_1_testing_results.question89.question106')),
    field('Tested_Positive_Females_25_49__c', dataValue('form.table_1_testing_results.question89.question112')),
    field('Tested_Positive_Females_50__c', dataValue('form.table_1_testing_results.question89.question116')),
    field(
    'Pregnant_Women_Tested_0_9__c',
    dataValue(
    'form.table_3_pregnant_women_tested.enter_the_number_of_pregnant_women_tested_for_each_following_age_group.question120'
    )
    ),
    field(
    'Pregnant_Women_Tested_10_14__c',
    dataValue(
    'form.table_3_pregnant_women_tested.enter_the_number_of_pregnant_women_tested_for_each_following_age_group.question124'
    )
    ),
    field(
    'Pregnant_Women_Tested_15_19__c',
    dataValue(
    'form.table_3_pregnant_women_tested.enter_the_number_of_pregnant_women_tested_for_each_following_age_group.question129'
    )
    ),
    field(
    'Pregnant_Women_Tested_20_24__c',
    dataValue(
    'form.table_3_pregnant_women_tested.enter_the_number_of_pregnant_women_tested_for_each_following_age_group.question134'
    )
    ),
    field(
    'Pregnant_Women_Tested_25_49__c',
    dataValue(
    'form.table_3_pregnant_women_tested.enter_the_number_of_pregnant_women_tested_for_each_following_age_group.question140'
    )
    ),
    field(
    'Pregnant_Women_Tested_50__c',
    dataValue(
    'form.table_3_pregnant_women_tested.enter_the_number_of_pregnant_women_tested_for_each_following_age_group.question144'
    )
    ),
    //field(
    // 'Total_Pregnant_Women_Tested__c',
    // dataValue(
    // 'form.table_3_pregnant_women_tested.enter_the_number_of_pregnant_women_tested_for_each_following_age_group.total_tested_pregnant'
    // )
    //),
    field(
    'First_Time_Females_0_9__c',
    state =>
    dataValue('form.table_4_first_time_testers.question61.question65')(state) +
    dataValue('form.table_4_first_time_testers.question89.question92')(state)
    ),
    field(
    'First_Time_Females_10_14__c',
    state =>
    dataValue('form.table_4_first_time_testers.question61.question69')(state) +
    dataValue('form.table_4_first_time_testers.question89.question97')(state)
    ),
    field(
    'First_Time_Females_15_19__c',
    state =>
    dataValue('form.table_4_first_time_testers.question61.question73')(state) +
    dataValue('form.table_4_first_time_testers.question89.question101')(state)
    ),
    field(
    'First_Time_Females_20_24__c',
    state =>
    dataValue('form.table_4_first_time_testers.question61.question78')(state) +
    dataValue('form.table_4_first_time_testers.question89.question106')(state)
    ),
    field(
    'First_Time_Females_25_49__c',
    state =>
    dataValue('form.table_4_first_time_testers.question61.question84')(state) +
    dataValue('form.table_4_first_time_testers.question89.question112')(state)
    ),
    field(
    'First_Time_Females_50__c',
    state =>
    dataValue('form.table_4_first_time_testers.question61.question88')(state) +
    dataValue('form.table_4_first_time_testers.question89.question116')(state)
    ),
    field(
    'First_Time_Males_0_9__c',
    state =>
    dataValue('form.table_4_first_time_testers.male_hiv_negative.question2')(state) +
    dataValue('form.table_4_first_time_testers.question33.question36')(state)
    ),
    field(
    'First_Time_Males_10_14__c',
    state =>
    dataValue('form.table_4_first_time_testers.male_hiv_negative.question7')(state) +
    dataValue('form.table_4_first_time_testers.question33.question41')(state)
    ),
    field(
    'First_Time_Males_15_19__c',
    state =>
    dataValue('form.table_4_first_time_testers.male_hiv_negative.question13')(state) +
    dataValue('form.table_4_first_time_testers.question33.question45')(state)
    ),
    field(
    'First_Time_Males_20_24__c',
    state =>
    dataValue('form.table_4_first_time_testers.male_hiv_negative.question18')(state) +
    dataValue('form.table_4_first_time_testers.question33.question50')(state)
    ),
    field(
    'First_Time_Males_25_49__c',
    state =>
    dataValue('form.table_4_first_time_testers.male_hiv_negative.question28')(state) +
    dataValue('form.table_4_first_time_testers.question33.question56')(state)
    ),
    field(
    'First_Time_Males_50__c',
    state =>
    dataValue('form.table_4_first_time_testers.male_hiv_negative.question32')(state) +
    dataValue('form.table_4_first_time_testers.question33.question60')(state)
    ),
    field(
    'of_Males_Referred_to_Sexual_Abuse__c',
    dataValue(
    'form.table5_referrals.enter_the_number_of_men_and_women_referred_for_each_referral_tye_and_the_or.abuseviolence_referral'
    )
    ),
    field(
    'of_Males_Referred_to_Family_Referral__c',
    dataValue(
    'form.table5_referrals.enter_the_number_of_men_and_women_referred_for_each_referral_tye_and_the_or.family_planning_referral'
    )
    ),
    field(
    'of_Males_Referred_for_HIV_Positive__c',
    dataValue(
    'form.table5_referrals.enter_the_number_of_men_and_women_referred_for_each_referral_tye_and_the_or.hiv_positive_referral'
    )
    ),
    field(
    'of_Males_Referred_to_MMC_Referral__c',
    dataValue(
    'form.table5_referrals.enter_the_number_of_men_and_women_referred_for_each_referral_tye_and_the_or.medical_male_circumcision_referral'
    )
    ),
    field(
    'of_Males_Referred_to_STI__c',
    dataValue(
    'form.table5_referrals.enter_the_number_of_men_and_women_referred_for_each_referral_tye_and_the_or.sexually_transmitted_infection_sti_referral'
    )
    ),
    field(
    'of_Males_Referred_to_Tuberculosis__c',
    dataValue(
    'form.table5_referrals.enter_the_number_of_men_and_women_referred_for_each_referral_tye_and_the_or.tuberculosis_tb_referral'
    )
    ),
    field(
    'of_Females_Referred_to_Sexual_Abuse__c',
    dataValue('form.table5_referrals.women_referred_number.abuseviolence_referral_women')
    ),
    field(
    'of_Females_Referred_to_Antenatal_Care__c',
    dataValue('form.table5_referrals.women_referred_number.antenatal_care_anc_referral_women')
    ),
    field(
    'of_Females_Referred_to_Family_Referral__c',
    dataValue('form.table5_referrals.women_referred_number.family_planning_referral_women')
    ),
    field(
    'of_Females_Referred_for_HIV_Positive__c',
    dataValue('form.table5_referrals.women_referred_number.hiv_positive_referral_women')
    ),
    field(
    'of_Females_Referred_to_PMTCT__c',
    dataValue('form.table5_referrals.women_referred_number.prevention_of_mother-to-child_transmission_women')
    ),
    field(
    'of_Females_Referred_to_STI__c',
    dataValue('form.table5_referrals.women_referred_number.sexually_transmitted_infection_sti_referral_women')
    ),
    field(
    'of_Females_Referred_to_Tuberculosis__c',
    dataValue('form.table5_referrals.women_referred_number.tuberculosis_tb_referral_women')
    ),

    field('Community_Members__c', dataValue('form.table_2_tested_profile.enter_the_number_tested_for_each_following_profile.community_members')),
    field('GRS_Coaches__c', dataValue('form.table_2_tested_profile.enter_the_number_tested_for_each_following_profile.skillz_coaches')),
    field('GRS_Participants__c', dataValue('form.table_2_tested_profile.enter_the_number_tested_for_each_following_profile.skillz_participants')),
    field('GRS_Staff__c', dataValue('form.table_2_tested_profile.enter_the_number_tested_for_each_following_profile.staff')),
    //field('Total_Tested__c', dataValue('form.table_2_tested_profile.enter_the_number_tested_for_each_following_profile.total_tested')),
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Kobo-to-sheets-2023-10-13.html b/fr/adaptors/library/jobs/auto/Kobo-to-sheets-2023-10-13.html index be7f3c99fae..9adec111b1f 100644 --- a/fr/adaptors/library/jobs/auto/Kobo-to-sheets-2023-10-13.html +++ b/fr/adaptors/library/jobs/auto/Kobo-to-sheets-2023-10-13.html @@ -22,13 +22,13 @@ - +

    Kobo to sheets

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    appendValues, dataValue

    Expression

    appendValues({
    spreadsheetId: '13JNoH_nzG4x_mwvW83BMrpTWdKt4asBiZiLfQduB7B0',
    range: 'Sheet1!A1:E1',
    values: [
    [
    dataValue('National_ID'),
    dataValue('First_Name_of_Patient'),
    dataValue('Last_Name_of_Patient'),
    ],
    ],
    });
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22.html b/fr/adaptors/library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22.html index 880febb9dcd..18daf5534c3 100644 --- a/fr/adaptors/library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22.html +++ b/fr/adaptors/library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Load-to-DB-2022-05-16.html b/fr/adaptors/library/jobs/auto/Load-to-DB-2022-05-16.html index 9d79ef111d0..ea2d9bf2ff4 100644 --- a/fr/adaptors/library/jobs/auto/Load-to-DB-2022-05-16.html +++ b/fr/adaptors/library/jobs/auto/Load-to-DB-2022-05-16.html @@ -22,13 +22,13 @@ - +

    Load to DB

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, upsert

    Expression

    // Your job goes here.
    upsert('patient', 'ON CONSTRAINT patient_pk', {
    patient_id: dataValue('data.patient_name'),
    patient_name: dataValue('data.patient_name'),
    village_name: dataValue('data.village_name'),
    last_menstrual_period: dataValue('data.last_menstrual_period'),
    expected_delivery_date: dataValue('data.expected_delivery_date'),
    children_alive: dataValue('data.children_alive'),
    living_children: dataValue('data.living_children'),
    feeling_sick: dataValue('data.feeling_sick'),
    total_children: dataValue('data.Total_children'),
    risk_level: dataValue('data.Risk_level')

    });
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Load-to-DHIS2-2023-07-17.html b/fr/adaptors/library/jobs/auto/Load-to-DHIS2-2023-07-17.html index 9f6a35fac44..a8d2c3da8b2 100644 --- a/fr/adaptors/library/jobs/auto/Load-to-DHIS2-2023-07-17.html +++ b/fr/adaptors/library/jobs/auto/Load-to-DHIS2-2023-07-17.html @@ -22,13 +22,13 @@ - +

    Load to DHIS2

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    create, get, join, map, async

    Expression

    // build and log nested dhis2 records
    fn(state => {
    const { patientsWithClaims } = state.data;
    const today = new Date().toISOString().split('T')[0];

    const teis = patientsWithClaims.map(p => {
    const patient = p.resource;
    const claims = p.claims;
    const treatments = claims
    .map(c => c.resource.item[0])
    .map(t => t.productOrService.coding[0].display)
    .join('; ');

    const enrollments = claims.map(c => {
    const claim = c.resource;
    const display = claim.insurance && claim.insurance[0].coverage.display;

    const oclMapping = {
    PARN: 'GMfuAqBFS1g',
    'Programme Vaccination': 'GMfuAqBFS1g',
    'Santé Maternelle': 'wBUDpZSS4Bh',
    };

    console.log(
    `We could use OCL to map "${display}" to "${
    oclMapping[display] || 'q5Qyv66pIAI (mTOMADY Other)'
    }"`
    );

    return {
    orgUnit: 'KUVJPjmUmWc',
    program: oclMapping[display] || 'q5Qyv66pIAI',
    status: 'ACTIVE', // active
    enrolledAt: today,
    occurredAt: today,
    };
    });

    return {
    orgUnit: 'KUVJPjmUmWc', // Madagascar
    trackedEntityType: 'x5fZpgCyv50', // Patient
    attributes: [
    { attribute: 'rDeWj9yYtzv', value: patient.identifier[0].value },
    { attribute: 'E4f4wBsDVgR', value: patient.name[0].family },
    { attribute: 'Fz33peSkK1I', value: patient.name[0].given[0] },
    {
    attribute: 'POCXiJxpYX1',
    value: `${treatments}`,
    },
    { attribute: 'dA6ShmrHmhk', value: patient.birthDate },
    { attribute: 'mWOlfweGigO', value: patient.gender },
    ],
    enrollments: enrollments,
    };
    });

    return { ...state, teis };
    });

    // get current TEIs
    get('tracker/trackedEntities', {
    orgUnit: 'KUVJPjmUmWc',
    trackedEntityType: 'x5fZpgCyv50',
    });

    // create upsertable array
    fn(state => {
    const { configuration, teis } = state;
    const existing = state.data.instances;

    const createable = [];
    const updateable = [];

    teis.forEach(t => {
    const match = existing.find(e => {
    const idAttr = e.attributes.find(a => a.displayName == 'Unique ID');
    return idAttr && idAttr.value == t.attributes[0].value;
    });

    if (match) {
    const enrollments =
    (match.enrollments && match.enrollments.concat(t.enrollments)) ||
    t.enrollments;

    updateable.push({ ...match, ...t, enrollments });
    } else {
    createable.push(t);
    }
    });

    console.log(`${updateable.length} to update; ${createable.length} to create`);
    const trackedEntities = [...createable, ...updateable];

    return { configuration, trackedEntities, references: [] };
    });

    // send data to DHIS2
    create('tracker', state => ({ trackedEntities: state.trackedEntities }), {
    params: {
    importStrategy: 'CREATE_AND_UPDATE',
    atomicMode: 'OBJECT',
    async: 'false',
    },
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03.html b/fr/adaptors/library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03.html index 6053466ef47..0e4056e9608 100644 --- a/fr/adaptors/library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03.html +++ b/fr/adaptors/library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03.html @@ -22,13 +22,13 @@ - +

    Malaria Testing Event Snapshot

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, upsert

    Expression

    // push to production
    upsert(
    'Event__c',
    'CommCare_Case_ID__c',
    fields(
    field('Name', dataValue('form.hidden_properties.event_name')),
    field('Date__c', dataValue('form.basic_information.event_details.event_date')),
    field('Testing_Partner_Contact_Persion__c', dataValue('form.event_information.testing_partner__contact_people')),
    field('of_People_in_Attendance_Testing_Events__c', dataValue('form.event_information.number_in_attendance')),
    field('Coordinator__c', dataValue('form.event_information.event_coordinator')),
    field(
    'Did_an_organization_discuss_Malaria__c',
    dataValue('form.malaria_treatment_prevention.info_malaria_treatment')
    ),
    field('What_organization_s_What_topic_s__c', dataValue('form.malaria_treatment_prevention.which_organizations')),
    field(
    'How_was_the_information_presented__c',
    dataValue('form.malaria_treatment_prevention.how_was_info_presented')
    ),
    //field('of_Participants__c', dataValue('form.malaria_treatment_prevention.how_many_total_participants')),
    field(
    'Did_other_organizations_conduct__c',
    dataValue("form.skills_activities['did_other_organisations_eg_youth-friendly_clinic_ministry_of_health_etc_con']")
    ),
    field(
    'What_organization_s_What_topic_s__c',
    dataValue('form.skills_activities.what_organisations_delivered_a_session_and_what_was_the_topic_of_the_sessio')
    ),
    field('Facilitator_1__c', dataValue('form.skills_activities.facilitators')),
    field(
    'How_many_people_attended_the_sessions__c',
    dataValue('form.skills_activities.how_many_people_attended_the_sessions_in_total')
    ),
    field(
    'How_many_people_attended_the_sessions_oh__c',
    dataValue('form.skills_activities.how_many_people_attended_the_sessions_in_total')
    ),
    field(
    'X2_Main_challenges__c',
    dataValue('form.bed_net_distribution.please_describe_highlights_key_challenges_and_main_lessons_learned_from_thi')
    ),
    field(
    'X1_Main_successes__c',
    dataValue('form.bed_net_distribution.please_describe_highlights_key_challenges_and_main_lessons_learned_from_thi')
    ),
    field(
    'Number_of_Bed_Nets_Distributed__c',
    dataValue('form.bed_net_distribution.total_number_of_bed_nets_distributed')
    ),
    //field('Site__c', dataValue('form.event_information.site')),
    //field('Venue__c', dataValue('form.event_information.venue')),
    //field('Curriculum__c', dataValue('form.event_information.curriculum')),
    field('X1_0_Intervention_Name__c', dataValue('form.event_information.intervention')),
    //field('Coach_1__c', dataValue('form.hidden_properties.coach_name')),
    field('CommCare_Case_ID__c', dataValue('form.case.@case_id')),
    field('Date__c', dataValue('form.event_information.event_date')),
    field('Testing_Partner_Contact_Persion__c', dataValue('form.event_information.testing_partner__contact_people')),
    field('of_People_in_Attendance_Testing_Events__c', dataValue('form.event_information.number_in_attendance')),
    field('Coordinator__c', dataValue('form.event_information.event_coordinator'))
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03.html b/fr/adaptors/library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03.html index c58902063e8..9b35d480475 100644 --- a/fr/adaptors/library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03.html +++ b/fr/adaptors/library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03.html @@ -22,13 +22,13 @@ - +

    Malaria Testing Event Statistics

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, upsert

    Expression

    // push to production
    upsert(
    'Event__c',
    'CommCare_Case_ID__c',
    fields(
    field('Name', dataValue('form.event_information.event_name')),
    field('CommCare_Case_ID__c', dataValue('form.case.@case_id')),
    field(
    'Tested_Negative_Males_0_9__c',
    dataValue('form.table_1_testing_results_malaria.male_malaria_negative.question2')
    ),
    field(
    'Tested_Negative_Males_10_14__c',
    dataValue('form.table_1_testing_results_malaria.male_malaria_negative.question7')
    ),
    field(
    'Tested_Negative_Males_15_19__c',
    dataValue('form.table_1_testing_results_malaria.male_malaria_negative.question13')
    ),
    field(
    'Tested_Negative_Males_20_24__c',
    dataValue('form.table_1_testing_results_malaria.male_malaria_negative.question18')
    ),
    field(
    'Tested_Negative_Males_25_49__c',
    dataValue('form.table_1_testing_results_malaria.male_malaria_negative.question28')
    ),
    field(
    'Tested_Negative_Males_50__c',
    dataValue('form.table_1_testing_results_malaria.male_malaria_negative.question32')
    ),
    field('Tested_Positive_Males_0_9__c', dataValue('form.table_1_testing_results_malaria.question33.question36')),
    field('Tested_Positive_Males_10_14__c', dataValue('form.table_1_testing_results_malaria.question33.question41')),
    field('Tested_Positive_Males_15_19__c', dataValue('form.table_1_testing_results_malaria.question33.question45')),
    field('Tested_Positive_Males_20_24__c', dataValue('form.table_1_testing_results_malaria.question33.question50')),
    field('Tested_Positive_Males_25_49__c', dataValue('form.table_1_testing_results_malaria.question33.question56')),
    field('Tested_Positive_Males_50__c', dataValue('form.table_1_testing_results_malaria.question33.question60')),
    field('Tested_Negative_Females_0_9__c', dataValue('form.table_1_testing_results_malaria.question61.question65')),
    field('Tested_Negative_Females_10_14__c', dataValue('form.table_1_testing_results_malaria.question61.question69')),
    field('Tested_Negative_Females_15_19__c', dataValue('form.table_1_testing_results_malaria.question61.question73')),
    field('Tested_Negative_Females_20_24__c', dataValue('form.table_1_testing_results_malaria.question61.question78')),
    field('Tested_Negative_Females_25_49__c', dataValue('form.table_1_testing_results_malaria.question61.question84')),
    field('Tested_Negative_Females_50__c', dataValue('form.table_1_testing_results_malaria.question61.question88')),
    field('Tested_Positive_Females_0_9__c', dataValue('form.table_1_testing_results_malaria.question89.question92')),
    field('Tested_Positive_Females_10_14__c', dataValue('form.table_1_testing_results_malaria.question89.question97')),
    field('Tested_Positive_Females_15_19__c', dataValue('form.table_1_testing_results_malaria.question89.question101')),
    field('Tested_Positive_Females_20_24__c', dataValue('form.table_1_testing_results_malaria.question89.question106')),
    field('Tested_Positive_Females_25_49__c', dataValue('form.table_1_testing_results_malaria.question89.question112')),
    field('Tested_Positive_Females_50__c', dataValue('form.table_1_testing_results_malaria.question89.question116'))
    ));

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks.html b/fr/adaptors/library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks.html index 0f070144be6..a3a044b0e3f 100644 --- a/fr/adaptors/library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks.html +++ b/fr/adaptors/library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks.html @@ -22,13 +22,13 @@ - +

    Handling multiple ODK repeat groups

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    create, dataPath, dataValue, each, field, fields, lastReferenceValue, merge

    Expression

    /*
    Create many records from an ODK submission, moving in and out of repeat
    blocks, submitted by Taylor Downs @ OpenFn.
    */

    beta.each(
    '$.data.data[*]',
    create(
    'ODK__c',
    fields(
    field('Event_Type__c', dataValue('event_type')),
    field('Training_Type__c', dataValue('training_type')),
    field('Event_Leader_ID__c', dataValue('leader')),
    field('Event_Date__c', dataValue('date')),
    field('metainstanceid__c', dataValue('*meta-instance-id*'))
    )
    )
    );

    beta.each(
    merge(
    dataPath('data[*].attendee_new[*]'),
    fields(field('parentId', lastReferenceValue('id')))
    ),
    create(
    'ODK_Child_2__c',
    fields(
    field('ODK__c', dataValue('parentId')),
    field('Barcode__c', dataValue('new_attendee_id')),
    field('First_Name__c', dataValue('new_attendee_first_name')),
    field('Last_Name__c', dataValue('new_attendee_last_name')),
    field('Phone_Number__c', dataValue('new_attendee_phone'))
    )
    )
    );

    beta.each(
    merge(
    dataPath('data[*].attendee[*]'),
    fields(
    field('parentId', function (state) {
    return state.references[state.references.length - 1].id;
    })
    // ^^ This will get the sfID of the 1st item created.
    )
    ),
    create(
    'ODK_Child_1__c',
    fields(
    field('ODK__c', dataValue('parentId')),
    field('Barcode__c', dataValue('attendee_id')),
    field('Late__c', dataValue('late'))
    )
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/PHQ9-2021-05-03.html b/fr/adaptors/library/jobs/auto/PHQ9-2021-05-03.html index 52fa213b734..150590c0465 100644 --- a/fr/adaptors/library/jobs/auto/PHQ9-2021-05-03.html +++ b/fr/adaptors/library/jobs/auto/PHQ9-2021-05-03.html @@ -22,13 +22,13 @@ - +

    PHQ9

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    alterState, dataValue, field, fields, relationship, upsert

    Expression

    alterState(state => {
    function capitalizeFirstLetter(str) {
    if (!str) return;
    let new_str = str.toString().toLowerCase();
    return new_str.slice(0, 1).toUpperCase() + new_str.slice(1);
    }

    function transform(value) {
    if (!value) return;
    switch (value.toString().trim()) {
    case 'Daughterson':
    return 'Daughter/Son';
    case 'Other_specify':
    return 'Other';
    case 'Single_never_married':
    return 'Single/Never Married';
    case 'Divorced__separated':
    return 'Divorced/separated';
    default:
    return value;
    }
    }

    function getAge(dateString) {
    if (!dateString) return;

    const today = new Date();
    const birthDate = new Date(dateString);
    var age = today.getFullYear() - birthDate.getFullYear();
    var m = today.getMonth() - birthDate.getMonth();
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
    age--;
    }
    return age;
    }

    state.data.form.begin_interview.what_is_your_marital_status = state.data.form.begin_interview && state.data.form.begin_interview.what_is_your_marital_status ? transform(
    capitalizeFirstLetter(state.data.form.begin_interview.what_is_your_marital_status)
    ): undefined;

    state.data.form.begin_interview.position_of_respondent_in_the_household = state.data.form.begin_interview && state.data.form.begin_interview.position_of_respondent_in_the_household ? transform(
    capitalizeFirstLetter(state.data.form.begin_interview.position_of_respondent_in_the_household)
    ): undefined;

    state.helperFunctions = { getAge };
    return state;
    });

    upsert(
    'PHQ_9_Strong_Minds__c',
    'CommCare_Ext_ID__c',
    fields(
    field('CommCare_Ext_ID__c', dataValue('id')),

    // relationship('Intervention_Name__r', 'CommCare_Case_ID__c', state => {
    // if (state.data.form.hidden_properties.intervention_id) return state.data.form.hidden_properties.intervention_id;
    // else return "990221ac-3c05-475d-87c7-24d8a5fcb63e";
    // }),
    relationship('Intervention_Name__r', 'CommCare_Case_ID__c', dataValue('form.hidden_properties.intervention_id')),


    //relationship('Participant__r','CommCare_Ext_ID__c', dataValue('form.hidden_properties.participant_fullname')),
    field('Mobile_Contact_Information__c', dataValue('form.hidden_properties.mobile_number')),
    field('Curriculum__c', dataValue('form.hidden_properties.curriculum')),
    //field('Intervention__c', dataValue('form.hidden_properties.intervention')),
    field('Gender__c', dataValue('form.hidden_properties.gender')),
    field('Participant_Name__c', state => {
    const firstname = state.data.form.hidden_properties.participant_first_name;
    const lastname = state.data.form.hidden_properties.participant_surname;
    return firstname + ' ' + lastname;
    }),

    field('Coach_Name__c', dataValue('form.hidden_properties.coach_name')),
    relationship(
    'Venue2__r',
    'CommCare_Ext_ID__c',
    dataValue('form.hidden_properties.venue')
    ),
    //field('Venue__c', dataValue('form.hidden_properties.venue')), replacing with the lookup
    relationship(
    'Site2__r',
    'CommCare_Ext_ID__c',
    dataValue('form.hidden_properties.site')
    ),
    //field('Site__c', dataValue('form.hidden_properties.site')), replacing with the lookup
    field('Interview_Date__c', dataValue('form.interview_date')),
    field('Resident_not_shifting_in_3_months_time__c', dataValue('form.full_time_resident')),
    field('Participant_DOB__c', state => {
    const dob = dataValue('form.hidden_properties.date_of_birth')(state);
    return dob ? dob : null;
    }),
    //field('Area_Center__c', dataValue('form.hidden_properties.venue')), //Can get from Intervention
    field('Age_of_Participant__c', state => {
    const dob = dataValue('form.hidden_properties.date_of_birth')(state);

    return dob ? state.helperFunctions.getAge(dob) : null;
    }),


    field('Marital_Status__c', dataValue('form.begin_interview.what_is_your_marital_status')),
    field(
    'Position_of_Respondent_in_Household__c',
    dataValue('form.begin_interview.position_of_respondent_in_the_household')
    ),
    field('Q1_Little_interest_pleasure__c', dataValue('form.begin_interview.questions.little_interest')),
    field('Q2_Sad_Down_Depressed_Hopeless__c', dataValue('form.begin_interview.questions.depressed_sad_hopeless')),
    field('Q3_Trouble_sleeping__c', dataValue('form.begin_interview.questions.trouble_sleeping')),
    field('Q4_Feeling_tired__c', dataValue('form.begin_interview.questions.heavy_burden')),
    field('Q5_Appetite_problems__c', dataValue('form.begin_interview.questions.appetite_problems')),
    field('Q6_Failure_Worthless_Guilt__c', dataValue('form.begin_interview.questions.feeling_bad')),
    field('Q7_Trouble_concentrating__c', dataValue('form.begin_interview.questions.trouble_concentrating')),
    field('Q8_Trouble_in_speech__c', dataValue('form.begin_interview.questions.moving_slowly')),
    field('Q9_Suicidal_thoughts__c', dataValue('form.begin_interview.questions.thoughts_suicide'))
    //field('PHQ9_Total_Score__c', dataValue('form.begin_interview.questions.phq9_result.PHQ9_score'))
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Pay-CHW-2021-04-23.html b/fr/adaptors/library/jobs/auto/Pay-CHW-2021-04-23.html index 41ef2dbeef9..617752a4cc0 100644 --- a/fr/adaptors/library/jobs/auto/Pay-CHW-2021-04-23.html +++ b/fr/adaptors/library/jobs/auto/Pay-CHW-2021-04-23.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19.html b/fr/adaptors/library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19.html index bd6fb3ed92f..1b5cb5c48b1 100644 --- a/fr/adaptors/library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19.html +++ b/fr/adaptors/library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19.html @@ -22,13 +22,13 @@ - +

    Q3 2022] Create Distribution & Referral in SF

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, join, map, relationship, upsert

    Expression

    //Job to integrate CommCare 'Distribution & Referrals' form
    upsert(
    'Family_Planning_community_Distribution__c',
    'Commcare_Case_ID__c',
    fields(
    field('Commcare_Case_ID__c', dataValue('id')),
    relationship('RecordType', 'Name', 'FP Community Distribution & Referrals'),
    field('Distribute_Date__c', dataValue('form.date')),
    field('Client_Name__c', dataValue('form.name')),
    field('Client_Gender__c', dataValue('form.gender')),
    field('Client_Age__c', dataValue('form.age')),
    field('Client_currently_on_FP__c', dataValue('form.current_use')),
    field('Referral_Date__c', dataValue('form.Referral_Date')),
    field('Referral_Method__c', state => {
    var method = dataValue('form.referral_method')(state);
    var newMethod = method
    ? method
    .split(/_/g)
    .map(
    word =>
    `${word.substring(0, 1).toUpperCase()}${word.substring(1)}`
    )
    .join(' ')
    : '';
    return newMethod;
    }),
    field('Implant_Type__c', state => {
    var type = dataValue('form.implant_type')(state);
    var newType = '';
    if (type) {
    if (type === 'implanon') {
    newType = '3-year Implanon';
    } else {
    newType = type === 'jadelle' ? '5-year Jadelle' : null;
    }
    }
    return newType;
    }),
    field('Male_Condoms__c', dataValue('form.male_condoms_count')),
    field('Female_Condoms__c', dataValue('form.female_condoms_count')),
    field('POP__c', dataValue('form.POP_count')),
    field('COC__c', dataValue('form.COC_count')),
    field('Emergency_Pills__c', dataValue('form.emergency_pills_count')),
    field(
    'Pregnancy_test_positive__c',
    dataValue('form.positive_pregnancy_tests')
    ),
    field('Pregnancy_referrals__c', dataValue('form.pregnancy_referrals')),
    field(
    'Contraception_referrals__c',
    dataValue('form.family_planning_referrals')
    )
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27.html b/fr/adaptors/library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27.html index 9ec961984f3..e05a02c2298 100644 --- a/fr/adaptors/library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27.html +++ b/fr/adaptors/library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27.html @@ -22,13 +22,13 @@ - +

    Q3 2022] Update HH Name in CommCare

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    map, submitXls, Array

    Expression

    // Update CommCare case
    fn(state => {
    const { Notification } = state.data.Envelope.Body.notifications;

    const Notifications = Array.isArray(Notification)
    ? Notification
    : [Notification];

    const notifications = Notifications.map(notification => {
    console.log(
    `Mapping HH code to CommCare: `,
    notification.sObject.Household_Code_Autonumber__c
    );
    return {
    case_id: notification.sObject.Commcare_Code__c,
    name: notification.sObject.Household_Code_Autonumber__c,
    };
    });

    return { ...state, notifications };
    });

    submitXls(state => state.notifications, {
    case_type: 'Household',
    search_field: 'case_id',
    search_column: 'case_id',
    name_column: 'name',
    create_new_cases: 'off',
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28.html b/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28.html index ea07049ccc3..6bb611de646 100644 --- a/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28.html +++ b/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28.html @@ -22,13 +22,13 @@ - +

    Q3 2022] Upsert Household & Household Visit in SF

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: Q3 2022] Upsert Household & Household Visit in SF
    • Adaptor: @openfn/language-salesforce
    • Adaptor Version: latest
    • Created over 1 year ago
    • Updated 5 months ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    dataValue, field, fields, join, map, query, relationship, upsertIf, Array

    Expression

    query(
    `SELECT Id, Parent_Geographic_Area__c, Parent_Geographic_Area__r.Name, Parent_Geographic_Area__r.Parent_Geographic_Area__c FROM Location__c WHERE CommCare_User_ID__c = '${dataValue(
    'properties.owner_id'
    )(state)}'`
    );

    fn(state => { console.log("query1 done"); return state; });
    fn(state => {
    return new Promise((resolve, reject) => {
    setTimeout(() => {
    console.log('4 second cooldown finished.');
    resolve(state);
    }, 4000);
    });
    });

    fn(state => ({
    ...state,
    data: {
    ...state.data,
    villageNewId:
    state.references[0].records && state.references[0].records.length !== 0
    ? state.references[0].records[0].Id
    : undefined,
    areaNewId:
    state.references[0].records && state.references[0].records.length !== 0
    ? state.references[0].records[0].Parent_Geographic_Area__c
    : undefined,
    catchmentNewId:
    state.references[0].records && state.references[0].records.length !== 0
    ? (state.references[0].records[0].Parent_Geographic_Area__r
    ? state.references[0].records[0].Parent_Geographic_Area__r.Parent_Geographic_Area__c
    : undefined)
    : undefined,
    },
    }));

    upsertIf(
    state.data.properties.commcare_username !== 'openfn.test' &&
    state.data.properties.commcare_username !== 'test.2021' &&
    state.data.properties.test_user !== 'Yes' ,
    'Household__c',
    'CommCare_Code__c',
    fields(
    field('CommCare_Username__c', dataValue('properties.commcare_username')),
    field('MOH_household_code__c', dataValue('properties.moh_code')),
    field('CommCare_Code__c', dataValue('case_id')),
    field('Source__c', true),
    //field('Household_CHW__c', 'a030Q00000A0jeYQAR'), //sandbox hardcoded mapping
    field('Household_CHW__c', state => {
    var chw = dataValue('properties.CHW_ID')(state);
    return chw === 'a030800001zQrk'
    ? 'a030800001zQrk5'
    : chw
    ? chw
    : undefined;
    }),
    //TODO: Prod mapping to add back before go-live
    field('Catchment__c', dataValue('catchmentNewId')),
    field('Area__c', dataValue('areaNewId')),
    field('Village__c', dataValue('villageNewId')),
    field('Household_Village__c', dataValue('properties.village')),
    // relationship('Catchment__r', 'Name', state => {
    // var catchment =
    // state.data.properties.catchement ||
    // state.data.properties.catchment_name;
    // return catchment === '' || catchment === undefined
    // ? 'Unknown Location'
    // : catchment;
    // }), // check
    // field('Area__c', state => {
    // // var area = dataValue('properties.Area_Name')(state);
    // return area === '' || area === undefined ? 'a000Q00000Egmu4' : area;
    // }), // Commented out because it was causing a job error
    // field('Household_village__c', dataValue('properties.village')),//case property, but not in message

    // field('Village__c',dataValue('properties.village_name')), //lookup
    field('Deaths_in_the_last_6_months__c', state => {
    var death = dataValue(
    'properties.deaths_in_past_6_months'
    )(state);
    return death > 0 ? 'Yes' : 'No';
    }),
    field('Access_to_safe_water__c',dataValue('properties.Safe_Water')),//not coming through
    field('Treats_Drinking_Water__c',dataValue('properties.Treats_Drinking_Water')),//not coming through
    field('Tippy_Tap__c',dataValue('properties.Active_Handwashing_Station')),//not coming through
    field('Pit_Latrine__c',dataValue('properties.Functional_Latrine')),//not coming through
    field('Rubbish_Pit__c',dataValue('properties.Rubbish_Pit')),//not coming through
    field('Drying_Rack__c',dataValue('properties.Drying_Rack')),//not coming through
    field('Kitchen_Garden__c',dataValue('properties.Kitchen_Garden')),//not coming through
    field('Cookstove__c',dataValue('properties.Improved_Cooking_Method')),//not coming through
    field('Clothe__c',dataValue('properties.Clothesline')),//not coming through
    field('WASH_Trained__c',dataValue('properties.WASH_Trained')),//not coming through
    field('Uses_ITNs__c',dataValue('properties.ITNs')),
    field(
    'Has_muac_tape__c',
    dataValue('properties.family_muac_tape_available')
    ),
    //field('Total_household_people__c',dataValue('properties.Total_Number_of_Members')), //not coming through
    field('Health_insurance__c', dataValue('properties.health_insurace_cover')),
    field('Health_insurance_active_status__c',dataValue('properties.healthinsurance_active')),
    field('Health_insurance_type__c', state => {
    var status = dataValue('properties.health_insurance')(state);
    return status && status === 'other_please_specify_if_active'
    ? 'Other'
    : status === 'nhif'
    ? 'NHIF'
    : status === 'Linda_mama' || 'linda_mama'
    ? 'Linda mama'
    : status;
    }),
    field('Other_Health_Insurance__c',dataValue('properties.if_other_please_specify')),
    field('Work_with_TBA__c', dataValue('properties.tba')),
    field('TBA_name__c', dataValue('properties.which_tba')),
    field('Last_Modified_Date_CommCare__c', dataValue('server_date_modified')),//Need a case property),
    field('Active_Household__c', state => {
    var status = dataValue('properties.Household_Status')(state);
    return status && status === 'No'
    ? false
    : status === 'Yes'
    ? true
    : status;
    }),
    // relationship('Head_of_Household__r', 'CommCare_ID__c', dataValue('properties.head_of_household_case_id')),
    field('Inactive_Reason__c', state => {
    var reason = dataValue('properties.Reason_for_Inactive')(state);
    return reason ? reason.toString().replace(/_/g, ' ') : null;
    }),
    field(
    'Active_in_Nutrition_Program__c',
    dataValue(
    'properties.enrolled_in_a_lwala_nutrition_program'
    )
    ),
    field(
    'lwala_nutrition_program_enrollment_date__c',
    dataValue(
    'properties.lwala_nutrition_program_enrollment_date'
    )
    ),
    field(
    'Trained_in_gardening__c',
    dataValue('properties.household_trained_on_gardening')
    ),
    field(
    'household_trained_on_gardening_date__c',
    dataValue(
    'properties.when_was_the_household_trained_on_gardening'
    )
    ),
    field(
    'Seed_Input_Support__c',
    dataValue('properties.household_provided_with_seed_input_support'
    )
    ),
    field(
    'household_provided_with_seed_input_suppo__c',
    dataValue(
    'properties.when_was_the_household_provided_with_seed_input_support'
    )
    ),
    field(
    'MIYCN_Trained__c',
    dataValue('properties.household_trained_on_MIYCN')
    ),
    // not in message:
    // field(
    // 'Kitchen_Garden__c',
    // dataValue('properties.nutrition_enrollment.household_has_kitchen_garden')
    // ),

    //field('Case_Closed_Date__c', state => {
    // var closed = dataValue('date_closed')(state);
    // var date = dataValue('server_date_modified')(state);
    // return closed && closed == true ? date : undefined;
    // })
    )
    );

    fn(state => { console.log("upsertIf1 done"); return state; });
    fn(state => {
    return new Promise((resolve, reject) => {
    setTimeout(() => {
    console.log('4 second cooldown finished.');
    resolve(state);
    }, 4000);
    });
    });

    //Household Visit
    query(
    `SELECT Id, Parent_Geographic_Area__c, Parent_Geographic_Area__r.Name, Parent_Geographic_Area__r.Parent_Geographic_Area__c FROM Location__c WHERE CommCare_User_ID__c = '${dataValue(
    'properties.owner_id'
    )(state)}'`
    );

    fn(state => { console.log("query2 done"); return state; });
    fn(state => {
    return new Promise((resolve, reject) => {
    setTimeout(() => {
    console.log('4 second cooldown finished.');
    resolve(state);
    }, 4000);
    });
    });

    fn(state => ({
    ...state,
    data: {
    ...state.data,
    catchmentNewId:
    state.references[0].records && state.references[0].records.length !== 0
    ? (state.references[0].records[0].Parent_Geographic_Area__r
    ? state.references[0].records[0].Parent_Geographic_Area__r.Parent_Geographic_Area__c
    : undefined)
    : undefined,
    },
    }));

    fn(state => {
    /* const deaths = state.data.form.household_deaths
    ? state.data.form.household_deaths.deaths
    : '';
    if (deaths !== '' && !Array.isArray(deaths)) {
    state.data.form.household_deaths.deaths = [deaths];
    }*/

    const supervisorMap = {
    community_health_nurse: 'Community Health Nurse',
    chw_supervisor: 'CHW Supervisor',
    chewschas: 'CHEWs/CHAs',
    other: 'Other',
    none: 'None',
    };

    const insuranceMap = {
    nhif: 'NHIF',
    Linda_mama: 'Linda mama',
    other_please_specify_if_active: 'Other',
    none: 'None',
    };

    return { ...state, supervisorMap, insuranceMap };
    });

    upsertIf(
    // state.data.properties.username !== 'openfn.test' &&
    state.data.properties.username !== 'test.2021' &&
    state.data.properties.test_user !== 'Yes' ,
    'Visit__c',
    'CommCare_Visit_ID__c',
    fields(
    field('CommCare_Username__c', dataValue('properties.commcare_username')),//
    // field('CommCare_Visit_ID__c', dataValue('id')),
    field('CommCare_Visit_ID__c', state => {
    var case_id = dataValue('case_id')(state);
    var submitted = dataValue('properties.last_form_opened_date_and_time')(state);
    return case_id + '_' + submitted;
    }),
    // field('Household_CHW__c', 'a030Q00000A0jeY'),
    // field('Catchment__c', dataValue('a000Q00000Egmtk')),
    field('Catchment__c', dataValue('catchmentNewId')),
    // field('Household__c','a010Q00000BL6lT'),
    // field('Household__c', dataValue('form.case.@case_id')),
    relationship(
    'Household__r',
    'CommCare_Code__c',
    dataValue('case_id')),
    field('Date__c',dataValue('properties.Date')),
    field('Form_Submitted__c', dataValue('properties.last_form_opened_name')),

    //field('MOH_household_code__c', state => {
    // var moh = dataValue('form.Household_Information.moh_code')(state);
    // var mohLinked = dataValue('form.MOH_household_code_linked')(state);
    // return moh ? moh : mohLinked && mohLinked !== '' ? mohLinked : undefined;
    // }),
    field('Active_Household__c', state => {
    var status = dataValue('properties.Household_Status')(state);
    return status && status === 'No'
    ? false
    : status === 'Yes'
    ? true
    : status;
    }),
    //field('Inactive_Reason__c', state => {
    // var reason = dataValue('form.Reason_for_Inactive')(state);
    // return reason ? reason.toString().replace(/_/g, ' ') : null;
    //}),
    //field('Source__c', 1),//
    //relationship(
    // 'Household_CHW__r',
    // 'CommCare_ID__c',
    // dataValue('form.sfid')),TO UPDATE IN PRODUCTION
    // field('Household_village__c', dataValue('form.village')),//
    //New Nutrition Field (MOTG)
    field(
    'Active_in_Nutrition_Program__c',
    dataValue(
    'properties.enrolled_in_a_lwala_nutrition_program'
    )
    ),
    field(
    'lwala_nutrition_program_enrollment_date__c',
    dataValue(
    'properties.lwala_nutrition_program_enrollment_date'
    )
    ),
    field(
    'Trained_in_gardening__c',
    dataValue('properties.household_trained_on_gardening')
    ),
    field(
    'household_trained_on_gardening_date__c',
    dataValue(
    'properties.when_was_the_household_trained_on_gardening'
    )
    ),
    field(
    'Seed_Input_Support__c',
    dataValue(
    'properties.household_provided_with_seed_input_support'
    )
    ),
    field(
    'household_provided_with_seed_input_suppo__c',
    dataValue(
    'properties.when_was_the_household_provided_with_seed_input_support'
    )
    ),
    field(
    'MIYCN_Trained__c',
    dataValue('properties.household_trained_on_MIYCN')
    ),
    field(
    'Kitchen_Garden__c',
    dataValue('properties.Kitchen_Garden')
    ),

    field(
    'Access_to_safe_water__c',
    dataValue('properties.Safe_Water')
    ),
    field(
    'Treats_Drinking_Water__c',
    dataValue('properties.Treats_Drinking_Water')
    ),
    field(
    'Tippy_Tap__c',
    dataValue('properties.Active_Handwashing_Station')
    ),
    field(
    'Pit_Latrine__c',
    dataValue('properties.Functional_Latrine')
    ),
    field(
    'Rubbish_Pit__c',
    dataValue('properties.Rubbish_Pit')
    ),
    field(
    'Drying_Rack__c',
    dataValue('properties.Drying_Rack')
    ),
    field(
    'Kitchen_Garden__c',
    dataValue('properties.Kitchen_Garden')
    ),
    field(
    'Cookstove__c',
    dataValue('properties.Improved_Cooking_Method')
    ),
    field('Clothe__c', dataValue('properties.Clothesline')),
    field(
    'WASH_Trained__c',
    dataValue('properties.WASH_Trained')
    ),
    field(
    'Has_muac_tape__c',
    dataValue('properties.family_muac_tape_available')
    ),
    field('Uses_ITNs__c', dataValue('properties.ITNs')),
    field('Supervisor_Visit__c', state =>
    state.data.properties.supervisor_visit
    ? state.supervisorMap[state.data.properties.supervisor_visit]
    : null
    ),
    field('Health_insurance__c', dataValue('properties.health_insurace_cover')),
    field(
    'Health_insurance_active_status__c',
    dataValue('properties.healthinsurance_active')
    ),
    field('Health_insurance_type__c', state => {
    var status = dataValue('properties.health_insurance')(state);
    var value =
    status && status !== ''
    ? status
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.insuranceMap[value] || value;
    })
    : undefined;
    return value ? value.join(';') : undefined;
    }),
    field(
    'Other_Health_Insurance__c',
    dataValue('properties.if_other_please_specify')
    ),
    //field('Last_Modified_Date_CommCare__c', dataValue('server_modified_on')),
    field('CommCare_Form_Opened__c', state=> {
    var form_opened = dataValue('properties.last_form_opened_date_and_time')(state);
    var value1 = form_opened.split('-').slice(0, 2).join('-');
    var value2 = form_opened.split('-').slice(2).join('-');
    var formattedValue = [value1, value2].join(' ');
    return new Date(formattedValue).toISOString();
    }),
    field('Case_Closed_Date__c', state => {
    var closed = dataValue('date_closed')(state);
    var date = dataValue('server_modified_on')(state);
    return closed && closed == true ? date : undefined;
    })
    )
    );

    fn(state => { console.log("upsertIf2 done"); return state; });
    fn(state => {
    return new Promise((resolve, reject) => {
    setTimeout(() => {
    console.log('Final 4 second cooldown finished.');
    resolve(state);
    }, 4000);
    });
    });


    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21.html b/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21.html index 11c2a21cb74..37c68433aec 100644 --- a/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21.html +++ b/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21.html @@ -22,13 +22,13 @@ - +

    Q3 2022] Upsert Person

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, join, map, query, relationship, upsertIf

    Expression

    // create constants and functions
    fn(state => {
    state.cleanChoice = function (state, choice) {
    if (choice) {
    return choice.charAt(0).toUpperCase() + choice.slice(1).replace('_', ' ');
    } else {
    return '';
    }
    };

    state.handleMultiSelect = function (state, multiField) {
    return multiField
    ? multiField
    .replace(/ /gi, ';')
    .toLowerCase()
    .split(';')
    .map(value => {
    return (
    value.charAt(0).toUpperCase() + value.slice(1).replace('_', ' ')
    );
    })
    .join(';')
    : '';
    };

    const pregDangerMap = {
    Vaginal_Bleeding: 'Vaginal Bleeding',
    Water_Breaks: 'Water Breaks before Time of Delivery',
    Prolonged_Labour: 'Prolonged Labour over 12 Hours',
    Convulsions: 'Convulsions or Fits',
    Abdominal_Pain: 'Severe Abdominal Pain before Delivery',
    High_Fever: 'High Fever',
    Low_Baby_Movement: 'Feeling the Baby move less or not at all',
    Swelling: 'Swelling of Face and Hands',
    Severe_Headache: 'Severe or Continuous Headache for more than 12 hours',
    Severe_Vomiting: 'Severe or Continuous Vomiting',
    none: 'None',
    };

    const counselMap = {
    anc_visits: 'ANC Visits',
    early_initiation_of_anc_less_than_3_months:
    'Early initiation of ANC (less than 3 months)',
    completing_recomended_anc_visits: 'Completing recomended ANC visits',
    danger_signs: 'Danger signs',
    skilled_birth: 'Skilled birth',
    immunization: 'Immunization',
    individual_birth_plan: 'Individual Birth Plan',
    emergency_preparedness: 'Emergency preparedness',
    childcare_and_affection: 'Childcare and affection',
    nutrition_counseling: 'Nutrition counseling',
    growth_monitoring: 'Growth monitoring',
    exclusive_breastfeeding: 'Exclusive breastfeeding',
    complementary_feeding: 'Complementary feeding',
    sleeping_under_llitn: 'Sleeping under LLITN',
    knowing_hiv_status: 'Knowing HIV status',
    indoor_pollution: 'Indoor pollution',
    personal_hygiene: 'Personal Hygiene',
    safe_drinking_water: 'Safe drinking water',
    safe_disposal_of_human_waste: 'Safe disposal of human waste',
    };

    const serviceMap = {
    Scheduled_PSC_Apt: 'Scheduled PSC Apt',
    Adverse_Drug_Reaction_Side_Effect: 'Adverse Drug Reaction/Side Effect',
    Malnutrition: 'Malnutrition',
    Malaria: 'Malaria',
    TB: 'TB',
    Treatment_for_Other_OIs: 'Treatment for other Ols',
    ARI: 'ARI',
    Anemia: 'Anemia',
    Diarrhea: 'Diarrhea',
    Pregnancy_Care: 'Pregnancy Care (ANC)',
    Family_Planning: 'Family Planning (FP)',
    Preconception_Counseling: 'Preconception Counseling',
    Injury: 'Injury',
    Other: 'Other',
    };

    const reasonMapping = {
    lack_of_access_to_fp_information: 'Lack of access to FP information',
    no_access_to_fp_services_hospitals:
    'Lack of hospitals or places where FP services can be accessed',
    not_willing_to_use_fp_due_to_negative_effects_myths_and_misconceptions:
    'Myths and misconceptions',
    barriers_at_service_delivery_points: 'Barriers at service delivery points',
    pregnant: 'The client is pregnant',
    intentions_of_getting_pregnant: 'Intentions of getting pregnant',
    not_sexually_active: 'The client is not sexually active',
    other_barriers_culture_male_partners_parents_etc:
    'Other barriers (culture, male partners, parents, etc)',
    };

    const milestoneTypeMap = {
    cognitive_delays_learning_difficulties:
    'Cognitive Delays Learning Difficulties',
    motor_delays: 'Motor Delays',
    speech_and_language_delay: 'Delay Speech and Language Delay',
    social_and_emotional: 'Social and emotional',
    };

    const milestoneMap = {
    movement: 'Movement',
    hearing: 'Hearing',
    communication: 'Communication',
    seeing: 'Seeing',
    cognitive_delays: 'Cognitive Delays',
    play: 'Play',
    };
    const nutritionMap = {
    severe: 'Severely Malnourished',
    moderate: 'Moderately Malnourished',
    normal: 'Normal',
    };

    const fpMethodMap = {
    male_condoms: 'Male condoms',
    female_condoms: 'Female condoms',
    pop: 'POP',
    coc: 'COC',
    emergency_pills: 'Emergency pills',
    none: 'None',
    };

    return {
    ...state,
    counselMap,
    serviceMap,
    reasonMapping,
    milestoneTypeMap,
    milestoneMap,
    nutritionMap,
    pregDangerMap,
    fpMethodMap,
    };
    });

    // get data from SF
    query(
    `SELECT Id, Parent_Geographic_Area__c, Parent_Geographic_Area__r.Name, Parent_Geographic_Area__r.Parent_Geographic_Area__c FROM Location__c WHERE CommCare_User_ID__c = '${dataValue(
    'properties.owner_id'
    )(state)}'`
    );

    // build IDs from queried SF data
    fn(state => ({
    ...state,
    data: {
    ...state.data,
    villageNewId:
    state.references[0].records && state.references[0].records.length !== 0
    ? state.references[0].records[0].Id
    : undefined,
    areaNewId:
    state.references[0].records && state.references[0].records.length !== 0
    ? state.references[0].records[0].Parent_Geographic_Area__c
    : undefined,
    catchmentNewId:
    state.references[0].records && state.references[0].records.length !== 0
    ? state.references[0].records[0].Parent_Geographic_Area__r
    ? state.references[0].records[0].Parent_Geographic_Area__r
    .Parent_Geographic_Area__c
    : undefined
    : undefined,
    },
    }));

    upsertIf(
    state.data.properties.commcare_username !== 'test.2021' &&
    state.data.properties.test_user !== 'Yes',
    'Household__c',
    'CommCare_Code__c',
    fields(
    field('CommCare_Code__c', state => {
    return (
    dataValue('indices.parent.case_id')(state) ||
    dataValue('properties.parent_id')(state)
    );
    })
    )
    ),

    // build sfRecord before upserting
    fn(state => {
    // This mapping was initially constructed with fields(field(), ...) syntax. We
    // preserve it here and use "expandReferences" but could also refactor this to
    // use standard object syntax, as Salesforce looks for { k: v, ... }.
    const originalMapping = fields(
    /* field(
    'deworming_medication__c',
    dataValue('form.TT5.Child_Information.Deworming')
    ),depracated field*/
    field('Source__c', 1),
    field('CommCare_ID__c', dataValue('case_id')),
    relationship(
    'Household__r',
    'CommCare_Code__c', state => {
    // (dataValue('properties.parent_id') || dataValue('indices.parent.case_id'))
    return (
    dataValue('properties.parent_id')(state) ||
    dataValue('indices.parent.case_id')(state)
    );
    }),
    field('commcare_location_id__c',dataValue('properties.commcare_location_id')),
    field('CommCare_Username__c',dataValue('properties.commcare_username')),
    field('Telephone__c', dataValue('properties.contact_phone_number')),
    field(
    'Consent_for_data_use__c',
    dataValue('properties.data_sharing_consent')
    ),
    field('CommCare_HH_Code__c', dataValue('indices.parent.case_id')),
    field('Client_Status__c', dataValue('properties.Client_Status')),
    field('Catchment__c', dataValue('catchmentNewId')),
    field('Area__c', dataValue('areaNewId')),
    field('Household_Village__c', dataValue('villageNewId')),
    field('Name', state => {
    var name1 = dataValue('properties.Person_Name')(state); //check
    var unborn = dataValue('properties.name')(state); //check
    var name2 =
    name1 === undefined || name1 === '' || name1 === null
    ? unborn
    : name1.replace(/\w\S*/g, function (txt) {
    return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });
    return name1 !== null ? name2 : 'Unborn Child';
    }),
    field('Chronic_illness__c', state => {
    var choice = dataValue(
    'properties.please_specify_which_chronic_illness_the_person_has'
    )(state);
    var choice2 = state.handleMultiSelect(state, choice);
    return choice2 ? choice2.replace(/_/g, ' ') : '';
    }),
    field(
    'Currently_enrolled_in_school__c',
    dataValue('properties.enrolled_in_school')
    ),
    field('Education_Level__c', state => {
    var level = dataValue('properties.Education_Level')(state);
    return level ? level.toString().replace(/_/g, ' ') : null;
    }),
    field('Relation_to_the_head_of_the_household__c', state => {
    var relation = dataValue('properties.relation_to_hh')(state);
    if (relation) {
    relation = relation.toString().replace(/_/g, ' ');
    var toTitleCase = relation.charAt(0).toUpperCase() + relation.slice(1);
    return toTitleCase;
    }

    return null;
    }),
    field('Gender__c',dataValue('properties.Gender')),
    field('Disability__c', state => {
    var disability = dataValue('properties.disability')(state);
    var toTitleCase =
    disability !== undefined
    ? disability
    .toLowerCase()
    .split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
    .join(';')
    : null;
    return toTitleCase;
    }), //need case property
    field('Other_disability__c', state => {
    var disability = dataValue('properties.other_disability')(state);
    var toTitleCase =
    disability !== undefined
    ? disability
    .toLowerCase()
    .split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
    .join(';')
    : null;
    return toTitleCase;
    }), //need case property

    field('Use_mosquito_net__c', dataValue('properties.sleep_under_net')), //need case property
    // field('Birth_Certificate__c',dataValue('properties.birth_certificate')),
    field('Birth_Certificate__c', dataValue('properties.birth_certificate')),
    field('Child_Status__c', state => {
    var status = dataValue('properties.Child_Status')(state);
    var rt = dataValue('properties.Record_Type')(state); //check that this is the right one
    if (status && rt === 'Unborn') {
    status = 'Unborn';
    } else if (status && rt === 'Born') {
    status = 'Born';
    }
    return status;
    }),
    //===================================================//
    relationship('RecordType', 'Name', state => {
    var rt = dataValue('properties.Record_Type')(state);
    return rt === 'Unborn' || rt === ''
    ? 'Child'
    : rt.toString().replace(/_/g, ' '); //convert Unborn children to Child RT
    }),

    //TT5 Mother Information

    field('MCH_booklet__c', dataValue('properties.mch_booklet')), //need to create a case property
    field('Reason_for_not_taking_a_pregnancy_test__c', state => {
    var reason = dataValue('properties.No_Preg_Test')(state);
    return reason ? reason.toString().replace(/_/g, ' ') : undefined;
    }),
    field('Pregnancy_danger_signs__c', state => {
    var signs = dataValue('properties.pregnancy_danger_signs')(state);
    return signs ? state.pregDangerMap[signs] : undefined;
    }),
    field(
    'Individual_birth_plan_counselling__c',
    dataValue('properties.individual_birth_plan')
    ),
    field('Child_Danger_Signs__c', state => {
    var signs = dataValue('properties.Other_Danger_Signs')(state);
    return signs
    ? signs
    .toLowerCase()
    .split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
    .join(';')
    .toString()
    .replace(/_/g, ' ')
    : signs;
    }),

    //HAWI
    field(
    'Unique_Patient_Code__c',
    dataValue('properties.Unique_Patient_Code')
    ),
    field(
    'Active_in_Support_Group__c',
    dataValue('properties.Active_in_Support_Group')
    ),
    field(
    'Preferred_Care_Facility__c',
    dataValue('properties.Preferred_Care_Facility')
    ),
    field('Currently_on_ART_s__c', dataValue('properties.ART')),
    field('ART_Regimen__c', dataValue('properties.ARVs')),
    field('HAWI_Defaulter__c', state => {
    var hawi = dataValue('properties.default')(state);
    return hawi === 'Yes' ? true : false;
    }),
    field('Date_of_Default__c', dataValue('properties.date_of_default')),
    field('Know_HIV_status__c', dataValue('properties.known_hiv_status')),
    field('HIV_Status__c', dataValue('properties.hiv_status')),
    /*field('HIV_Status__c', state => {
    var status = dataValue('properties.hiv_status')(state);
    return status === 'yes'
    ? 'Known'
    : status === 'no'
    ? 'Unknown'
    : undefined;
    }),//CHECK MAPPING ON THIS ONE*/

    //Illness
    field('Persons_temperature__c', dataValue('properties.temperature')),
    field(
    'Days_since_illness_start__c',
    dataValue('properties.duration_of_sickness')
    ),
    field(
    'Current_Malaria_Status__c',
    dataValue('properties.malaria_test_results')
    ),
    field('Malaria_test__c', dataValue('properties.malaria_test')),
    field(
    'Last_Malaria_Home_Test__c',
    dataValue('properties.malaria_test_date')
    ),
    field('Last_Malaria_Home_Treatment__c', state => {
    var choice = dataValue(
    'properties.malaria_test_date'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    /*field('Current_Malaria_Status__c', dataValue('form.Malaria_Status')),//check
    field('Malaria_Facility__c',dataValue('form.treatment_and_tracking.malaria_referral_facility')),
    field('Fever_over_7days__c',dataValue('form.treatment_and_tracking.symptoms_check_fever')),//check*/
    field('Cough_over_14days__c', dataValue('properties.symptoms_check_cough')),
    /*field('Diarrhoea_over_14days__c',dataValue('form.treatment_and_tracking.symptoms_check_diarrhea')),//check
    field('Diarrhoea_less_than_14_days__c',dataValue('form.treatment_and_tracking.mild_symptoms_check_diarrhea')),//check*/
    field(
    'TB_patients_therapy_observed__c',
    dataValue('properties.observed_tb_therapy')
    ),
    field('Injuries_or_wounds__c', dataValue('properties.wounds_or_injuries')),
    field(
    'Pulse_Oximeter__c',
    dataValue('properties.pulse_oximeter_available')
    ),
    field(
    'Heart_Rate_Pulse_Oximeter__c',
    dataValue('properties.heart_rate_pulse_oximeter')
    ),
    field(
    'Oxygen_Concentration_Pulse_Oximeter__c',
    dataValue('properties.oxygen_concentration')
    ),
    field('Can_child_drink__c', dataValue('properties.can_child_drink')),
    // field('Antibiotic_provided_for_fast_breathing__c',dataValue('properties.antibiotic_fast_breathing')),
    field('Antibiotic_provided_for_fast_breathing__c', state => {
    var choice = dataValue('properties.antibiotic_fast_breathing')(state);
    return state.cleanChoice(state, choice);
    }),
    // field('Antibiotic_provided_for_chest_indrawing__c',dataValue('properties.antibiotic_chest_indrawing')),
    field('Antibiotic_provided_for_chest_indrawing__c', state => {
    var choice = dataValue('properties.antibiotic_chest_indrawing')(state);
    return state.cleanChoice(state, choice);
    }),
    /*field('Child_zinc__c',dataValue('form.TT5.Child_Information.Clinical_Services.diarrhea_clinic_treatment_zinc')),//check
    field('Child_ORS__c',dataValue('form.TT5.Child_Information.Clinical_Services.diarrhea_clinic_treatment_ORS')),//check
    field('Childs_breath_per_minute__c',dataValue('form.psbi.breaths_per_minuite')),//check
    field('Child_chest_in_drawing__c',dataValue('form.psbi.Child_chest_in_drawing_c')),//check*/
    field('Default_on_TB_treatment__c', state => {
    var choice = dataValue('properties.default_tb_treatment')(state); //check
    return state.cleanChoice(state, choice);
    }),
    field('Treatment_Distribution__c', state => {
    var choice = dataValue('properties.distributed_treatments')(state);
    return state.cleanChoice(state, choice);
    }), //check

    //Delivery
    field(
    'Immediate_Breastfeeding__c',
    dataValue('properties.Breastfeeding_Delivery')
    ),
    field('Place_of_Delivery__c', state => {
    var facility = dataValue('properties.Delivery_Type')(state);
    return facility === 'Skilled'
    ? 'Facility'
    : facility === 'Unskilled'
    ? 'Home'
    : undefined;
    }),
    field('Delivery_Facility__c', state => {
    var facility = dataValue('properties.Delivery_Facility')(state);
    return facility ? facility.toString().replace(/_/g, ' ') : null;
    }),
    /* field('Delivery_Facility__c', state => {
    //HMN 21//11/2022
    var birthFacility =dataValue('properties.Birth_Facility')(state);
    var deliveryFacility = dataValue('properties.Delivery_Facility')(state);
    var facilityOfBirth = dataValue ('properties.Facility_of_Birth')(state);
    var faciliy_val =
    facilityOfBirth //!== undefined || facilityOfBirth !== '' || facilityOfBirth !== null
    ? facilityOfBirth
    :birthFacility //!== undefined || birthFacility !== '' || birthFacility !== null
    ? birthFacility
    :deliveryFacility //!== undefined || deliveryFacility !== '' || deliveryFacility !== null
    ? deliveryFacility
    :"";
    return faciliy_val.toString().replace(/_/g, ' ');
    //HMN
    }), */
    //field('Delivery_Facility__c', state => {
    // var facility = dataValue('properties.Birth_Facility')(state);
    // return facility ? facility.toString().replace(/_/g, ' ') : null;
    //}),
    field(
    'Delivery_Facility_Other__c',
    dataValue('properties.Delivery_Facility_Other')
    ),

    //Family Planning

    field('LMP__c', dataValue('properties.LMP')),
    field('Family_Planning__c', dataValue('properties.family_planning')),
    field(
    'Family_Planning_Method__c',
    dataValue('properties.family_planning_method')
    ),
    field('FP_Method_Distributed__c', state => {
    var status = dataValue('properties.FP_commodity')(state);
    var value =
    status && status !== ''
    ? status
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.fpMethodMap[value] || value;
    })
    : undefined;
    return value ? value.join(';') : undefined;
    }),
    field('Reasons_for_not_taking_FP_method__c', state => {
    var status = dataValue('properties.No_FPmethod_reason')(state);
    var value =
    status && status !== ''
    ? status
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.reasonMapping[value] || value;
    })
    : undefined;
    return value ? value.join(';') : undefined;
    }),
    field('Pregnant__c', state => {
    var preg = dataValue('properties.Pregnant')(state);
    return preg === 'Yes' ? true : false;
    }),
    field('Date_of_Delivery__c', dataValue('properties.delivery_date')),
    field(
    'Counselled_on_FP_Methods__c',
    dataValue('properties.CounselledFP_methods')
    ),
    field('Client_counselled_on__c', state => {
    var choices =
    dataValue('properties.counsel_topic')(state) ||
    dataValue('properties.counsel_topic')(state); //need to create a case property
    var choiceGroups = choices ? choices.split(' ') : null;
    var choicesMulti = choiceGroups
    ? choiceGroups
    .map(cg => {
    return state.counselMap[cg];
    })
    .join(';')
    : choiceGroups;
    return choicesMulti;
    }), //OpenFn Question - can this be simplified now that this is a case property
    field('Client_provided_with_FP__c', state => {
    var choice = dataValue(
    'properties.was_the_woman_15-49yrs_provided_with_family_planning_commodities_by_chv'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    field(
    'Received_pregnancy_test__c',
    dataValue('properties.did_you_adminsiter_a_pregnancy_test')
    ),
    field(
    'Pregnancy_test_result__c',
    dataValue('properties.pregnancy_test_result')
    ),
    field('Gravida__c', dataValue('properties.Gravida')),
    field('Parity__c', dataValue('properties.Parity')),

    //TT5 Child Information

    field(
    'Exclusive_Breastfeeding__c',
    dataValue('properties.Exclusive_Breastfeeding')
    ),
    field(
    'Counselled_on_Exclusive_Breastfeeding__c',
    dataValue('properties.counseling')
    ),
    field(
    'Newborn_visited_48_hours_of_delivery__c',
    dataValue('properties.newborn_visited_48_hours_of_delivery')
    ),
    field('Newborn_visit_counselling__c', state => {
    var choice = dataValue('properties.did_you_consel_the_mother_on1')(state);
    return state.cleanChoice(state, choice);
    }),
    field(
    'mother_visited_48_hours_of_the_delivery__c',
    dataValue('properties.visit_mother_48')
    ),
    /*
    //HMN -06012023- The object Visit_after_unskilled__c seems to be missing in sfRecord
    //Investigation issue https://lwala.atlassian.net/browse/LWAL-716 raised
    //Meanwhile this is being removed to allow re-processing
    field(
    'Visit_after_unskilled__c',
    dataValue('properties.visit_24hours_after_unskilled_delivery')
    ),
    */
    field('Mother_visit_counselling__c', state => {
    var choice = dataValue('properties.did_you_consel_the_mother_on2')(state);
    return state.cleanChoice(state, choice);
    }),
    /*field('Newborn_visited_48_hours_of_delivery__c',dataValue('properties.newborn_visited_48_hours_of_delivery')), Duplicate Mapping*/
    field(
    'Newborn_visited_by_a_CHW_within_6_days__c',
    dataValue('properties.visit_6_days_from_delivery')
    ),

    //Nutrition

    field(
    'Caretaker_action_after_muac_screening__c',
    dataValue('properties.mother_screened_muac_action')
    ),
    field(
    'Caretaker_muac_findings__c',
    dataValue('properties.mother_screened_child_muac_result')
    ),
    field('Food_groups_3_times_a_day__c',dataValue('properties.food_groups')),
    // field('Caretaker_screened_for_muac_this__c', dataValue('properties.mother_screened_child_muac')),
    field('Caretaker_screened_for_muac_this__c', state => {
    var choice = dataValue('properties.mother_screened_child_muac')(state); //check
    return state.cleanChoice(state, choice);
    }),
    // field('Caretaker_trained_in_muac__c', dataValue('properties.mother_trained_muac')),
    field('Caretaker_trained_in_muac__c', state => {
    var choice = dataValue('properties.mother_trained_muac')(state); //check
    return state.cleanChoice(state, choice);
    }),
    field(
    'of_Caretaker_MUAC_screenings__c',
    dataValue('properties.mother_nb_screening')
    ),
    field('Current_Weight__c', dataValue('properties.Current_Weight')), //Only on task update
    field('Current_Height__c', dataValue('properties.current_height')),
    field('Current_MUAC__c', dataValue('properties.MUAC')),
    field('Current_Nutrition_Status__c', state => {
    var status = dataValue('properties.Nutrition_Status')(state);
    return status ? state.nutritionMap[status] : undefined;
    }),

    //TT5 & HAWI
    field('TT5_Mother_Registrant__c', state => {
    var preg = dataValue('properties.Pregnant')(state);
    return preg == 'Yes' ? 'Yes' : null;
    }),
    field('Enrollment_Date__c', state => {
    var age = dataValue('properties.age')(state);
    var date = dataValue('server_date_modified')(state);
    var preg = dataValue('properties.Pregnant')(state);
    return age < 5 || preg == 'Yes' ? date : null;
    }),
    field('HAWI_Enrollment_Date__c', state => {
    var date = dataValue('server_date_modified')(state);
    var status = dataValue('properties.hiv_status')(state);
    return status == 'positive' ? date : null;
    }),
    field('Thrive_Thru_5_Registrant__c', state => {
    var age = dataValue('properties.age')(state);
    var preg = dataValue('properties.Pregnant')(state);
    return age < 5 || preg == 'Yes' ? 'Yes' : 'No';
    }), //check mapping
    field('HAWI_Registrant__c', state => {
    var status = dataValue('properties.hiv_status')(state);
    return status == 'positive' ? 'Yes' : 'No';
    }),

    //ANC
    field('ANC_1__c', state => {
    var date = dataValue('properties.ANC_1')(state);
    return date && date !== '' ? date : undefined;
    }),
    field('ANC_2__c', state => {
    var date = dataValue('properties.ANC_2')(state);
    return date && date !== '' ? date : undefined;
    }),
    field('ANC_3__c', state => {
    var date = dataValue('properties.ANC_3')(state);
    return date && date !== '' ? date : undefined;
    }),
    field('ANC_4__c', state => {
    var date = dataValue('properties.ANC_4')(state);
    return date && date !== '' ? date : undefined;
    }),
    field('ANC_5__c', state => {
    var date = dataValue('properties.ANC_5')(state);
    return date && date !== '' ? date : undefined;
    }),
    field('Date_of_Birth__c', state => {
    var date = dataValue('properties.DOB')(state);
    return date && date !== '' ? date : undefined;
    }),

    //Immunization

    field(
    'Child_missed_immunization_type__c',
    dataValue('form.TT5.Child_Information.Immunizations.immunization_type')
    ), //check
    field('BCG__c', dataValue('properties.BCG')),
    field('OPV_0__c', dataValue('properties.OPV_0')),
    field('Measles_6__c', dataValue('properties.Measles_6')),
    field('Measles_9__c', dataValue('properties.Measles_9')),
    field('Measles_18__c', dataValue('properties.Measles_18')),
    field('OPV_1__c', dataValue('properties.OPV_PCV_Penta_1')),
    field('OPV_2__c', dataValue('properties.OPV_PCV_Penta_2')),
    field('OPV_3__c', dataValue('properties.OPV_PCV_Penta_3')),
    field('Rotavirus_1__c', dataValue('properties.rotavirus_1')),
    field('Rotavirus_2__c', dataValue('properties.rotavirus_2')),
    field('IPV__c', dataValue('properties.IPV')),
    field('Vitamin_A_12__c', dataValue('properties.Vitamine_A')),
    field('Vitamin_A_18__c', dataValue('properties.Vitamine_A_2')),
    field('Vitamin_A_24__c', dataValue('properties.Vitamine_A_3')),
    field('Deworming_12__c', dataValue('properties.Deworming_1')),
    field('Deworming_18__c', dataValue('properties.Deworming_2')),
    field('Deworming_24__c', dataValue('properties.Deworming_3')),

    //ECD
    // field('Did_you_counsel_caregiver_on__c',dataValue('properties.did_you_counsel_the_caregiver_on_delayed_milestones')),
    field('Did_you_counsel_caregiver_on__c', state => {
    var choice = dataValue(
    'properties.did_you_counsel_the_caregiver_on_delayed_milestones'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    // field('Delayed_Milestone__c',dataValue('properties.does_the_child_has_a_delayed_milestone')),
    field('Delayed_Milestone__c', state => {
    var choice = dataValue(
    'properties.does_the_child_has_a_delayed_milestone'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    // field('Child_has_2_or_more_play_items__c',dataValue('properties.does_the_child_has_2_or_more_play_items_at_home')),
    field('Child_has_2_or_more_play_items__c', state => {
    var choice = dataValue(
    'properties.does_the_child_has_2_or_more_play_items_at_home'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    // field('Child_has_3_or_more_picture_books__c',dataValue('properties.does_the_child_has_3_or_more_picture_books')),
    field('Child_has_3_or_more_picture_books__c', state => {
    var choice = dataValue(
    'properties.does_the_child_has_3_or_more_picture_books'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    field('Delayed_Milestones_Counselled_On__c', state => {
    var ms = dataValue(
    'properties.which_delayed_milestone_area_did_you_counsel_the_caregiver_on'
    )(state);
    return ms ? state.milestoneMap[ms] : undefined;
    }),
    field('Delayed_Milestone_Type__c', state => {
    var ms = dataValue('properties.which_delayed_milestone')(state);
    return ms ? state.milestoneTypeMap[ms] : undefined;
    }),

    //Death
    field('Date_of_Death__c', dataValue('properties.Date_of_Death')),
    field('Cause_of_Death__c', state => {
    var death = dataValue('properties.cause_of_death_dead')(state);
    return death ? death.toString().replace(/_/g, ' ') : death;
    }), //check which case property to use - there are 2
    field('Verbal_autopsy__c', dataValue('properties.verbal_autopsy')),

    //Closing
    field('Last_Modified_Date_CommCare__c', dataValue('date_modified')),
    field('Case_Closed_Date__c',dataValue('date_closed')),
    //field('Case_Closed_Date__c', state => {
    // var closed = dataValue('date_closed')(state);
    // var date = dataValue('date_modified')(state);
    // return closed && closed == true ? date : undefined;
    //}) //need case property
    );

    let sfRecord = expandReferences(originalMapping)(state);

    Object.entries(sfRecord).forEach(([key, value]) => {
    if (value === '') sfRecord[key] = undefined;
    });

    return { ...state, sfRecord };
    });

    // upsert data to SF
    upsertIf(
    state.data.properties.commcare_username !== 'test.2021' &&
    state.data.properties.test_user !== 'Yes' ,
    'Person__c', 'CommCare_ID__c', state => state.sfRecord);

    upsertIf(
    state.data.properties.commcare_username !== 'test.2021' &&
    state.data.properties.test_user !== 'Yes' &&
    state.data.properties.caretaker_case_id !== undefined && state.data.properties.caretaker_case_id !== '',
    'Person__c', 'CommCare_ID__c',
    fields(
    relationship('Primary_Caregiver_Lookup__r', 'CommCare_ID__c', state => {
    return caregiver = dataValue('properties.caretaker_case_id')(state);
    }),
    field('CommCare_ID__c', dataValue('case_id')),
    )
    );

    upsertIf(
    state.data.properties.commcare_username !== 'test.2021' &&
    state.data.properties.test_user !== 'Yes' &&
    state.data.properties.mother_case_id !== undefined && state.data.properties.mother_case_id !== '',
    'Person__c', 'CommCare_ID__c',
    fields(
    relationship('Mother__r', 'CommCare_ID__c', state => {
    return caregiver = dataValue('properties.mother_case_id')(state);
    }),
    field('CommCare_ID__c', dataValue('case_id')),
    )
    );

    upsertIf(
    state.data.properties.commcare_username !== 'test.2021' &&
    state.data.properties.test_user !== 'Yes' &&
    state.data.properties.head_of_household_case_id !== undefined && state.data.properties.head_of_household_case_id !== '',
    'Household__c', 'CommCare_Code__c',
    fields(
    field('CommCare_Code__c', state => {
    return (
    dataValue('indices.parent.case_id')(state) ||
    dataValue('properties.parent_id')(state)
    )
    }),
    relationship('Head_of_Household__r', 'CommCare_ID__c', dataValue('properties.head_of_household_case_id')),
    )
    )

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28.html b/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28.html index a1b36ee6212..09a199fa384 100644 --- a/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28.html +++ b/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28.html @@ -22,13 +22,13 @@ - +

    Q3 2022] Upsert Person Visit

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, join, map, query, relationship, upsertIf

    Expression

    //UPSERT PERSON VISIT
    query(
    `SELECT Id, Parent_Geographic_Area__c, Parent_Geographic_Area__r.Name, Parent_Geographic_Area__r.Parent_Geographic_Area__c FROM Location__c WHERE CommCare_User_ID__c = '${dataValue(
    'properties.owner_id'
    )(state)}'`
    );

    fn(state => {
    state.cleanChoice = function (state, choice) {
    if (choice) {
    return choice.charAt(0).toUpperCase() + choice.slice(1).replace('_', ' ');
    } else {
    return '';
    }
    };

    fn(state => ({
    ...state,
    data: {
    ...state.data,
    catchmentNewId:
    state.references[0].records && state.references[0].records.length !== 0
    ? (state.references[0].records[0].Parent_Geographic_Area__r
    ? state.references[0].records[0].Parent_Geographic_Area__r.Parent_Geographic_Area__c
    : undefined)
    : undefined,
    },
    }));

    state.handleMultiSelect = function (state, multiField) {
    return multiField
    ? multiField
    .replace(/ /gi, ';')
    .toLowerCase()
    .split(';')
    .map(value => {
    return (
    value.charAt(0).toUpperCase() + value.slice(1).replace('_', ' ')
    );
    })
    .join(';')
    : '';
    };

    state.handleMultiSelectOriginal = function (state, multiField) {
    return multiField
    ? multiField
    .replace(/ /gi, ';')
    .toLowerCase()
    .split(';')
    .map(value => {
    return (
    value
    );
    })
    .join(';')
    : '';
    };

    const pregDangerMap = {
    Vaginal_Bleeding: 'Vaginal Bleeding',
    Water_Breaks: 'Water Breaks before Time of Delivery',
    Prolonged_Labour: 'Prolonged Labour over 12 Hours',
    Convulsions: 'Convulsions or Fits',
    Abdominal_Pain: 'Severe Abdominal Pain before Delivery',
    High_Fever: 'High Fever',
    Low_Baby_Movement: 'Feeling the Baby move less or not at all',
    Swelling: 'Swelling of Face and Hands',
    Severe_Headache: 'Severe or Continuous Headache for more than 12 hours',
    Severe_Vomiting: 'Severe or Continuous Vomiting',
    none: 'None',
    };

    const counselMap = {
    anc_visits: 'ANC Visits',
    early_initiation_of_anc_less_than_3_months:
    'Early initiation of ANC (less than 3 months)',
    completing_recomended_anc_visits: 'Completing recomended ANC visits',
    danger_signs: 'Danger signs',
    skilled_birth: 'Skilled birth',
    immunization: 'Immunization',
    individual_birth_plan: 'Individual Birth Plan',
    emergency_preparedness: 'Emergency preparedness',
    childcare_and_affection: 'Childcare and affection',
    nutrition_counseling: 'Nutrition counseling',
    growth_monitoring: 'Growth monitoring',
    exclusive_breastfeeding: 'Exclusive breastfeeding',
    complementary_feeding: 'Complementary feeding',
    sleeping_under_llitn: 'Sleeping under LLITN',
    knowing_hiv_status: 'Knowing HIV status',
    indoor_pollution: 'Indoor pollution',
    personal_hygiene: 'Personal Hygiene',
    safe_drinking_water: 'Safe drinking water',
    safe_disposal_of_human_waste: 'Safe disposal of human waste',
    };

    const serviceMap = {
    Scheduled_PSC_Apt: 'Scheduled PSC Apt',
    Adverse_Drug_Reaction_Side_Effect: 'Adverse Drug Reaction/Side Effect',
    Malnutrition: 'Malnutrition',
    Malaria: 'Malaria',
    TB: 'TB',
    Treatment_for_Other_OIs: 'Treatment for other Ols',
    ARI: 'ARI',
    Anemia: 'Anemia',
    Diarrhea: 'Diarrhea',
    Pregnancy_Care: 'Pregnancy Care (ANC)',
    Family_Planning: 'Family Planning (FP)',
    Preconception_Counseling: 'Preconception Counseling',
    Injury: 'Injury',
    Other: 'Other',
    };

    const reasonMap = {
    lack_of_access_to_fp_information: 'Lack of access to FP information',
    no_access_to_fp_services_hospitals:
    'Lack of hospitals or places where FP services can be accessed',
    not_willing_to_use_fp_due_to_negative_effects_myths_and_misconceptions:
    'Myths and misconceptions',
    barriers_at_service_delivery_points: 'Barriers at service delivery points',
    pregnant: 'The client is pregnant',
    intentions_of_getting_pregnant: 'Intentions of getting pregnant',
    not_sexually_active: 'The client is not sexually active',
    other_barriers_culture_male_partners_parents_etc:
    'Other barriers (culture, male partners, parents, etc)',
    };

    const milestoneTypeMap = {
    cognitive_delays_learning_difficulties:
    'Cognitive Delays Learning Difficulties',
    motor_delays: 'Motor Delays',
    speech_and_language_delay: 'Delay Speech and Language Delay',
    social_and_emotional: 'Social and emotional',
    };

    const milestoneMap = {
    movement: 'Movement',
    hearing: 'Hearing',
    communication: 'Communication',
    seeing: 'Seeing',
    cognitive_delays: 'Cognitive Delays',
    play: 'Play',
    };
    const nutritionMap = {
    severe: 'Severely Malnourished',
    moderate: 'Moderately Malnourished',
    normal: 'Normal',
    };

    const fpMethodMap = {
    male_condoms: "Male condoms",
    female_condoms: "Female condoms",
    pop: "POP",
    coc: "COC",
    emergency_pills: "Emergency pills",
    none: "None",
    //HMN -12/01/2023-
    //adding normalization for the family_planning_method to Family_Planning_Method__c
    iucd: "IUCD",
    condoms: "Condoms",
    depo:"Depo",
    implant: "Implant",
    injection: "Injection",
    pills: "Pills",
    traditional: "Traditional"
    };

    const symptomsMap = {
    convulsions: 'Convulsions',
    not_able_to_eatdrink: 'Not able to drink or feed at all',
    vomits_everything: 'Vomits everything',
    'chest_in-drawing': 'Chest in - drawing',
    unusually_sleepyunconscious: 'Unusually sleepy or unconscious',
    swelling_of_both_feet: 'Swelling of both feet',
    none: "None",
    };

    const supervisorMap ={
    community_health_nurse: "Community_health_nurse",
    chw_supervisor: "CHW_supervisor",
    chewschas: "Chewschas",
    other: "Other",
    none: "None"
    };

    const treatmentDistributionMap = {
    ors_205gltr_sachets: 'ORS (20.5h/ltr): Sachets',
    acts_6s: 'ACTs (6s)',
    acts_12s: 'ACTs (12s)',
    acts_18s: 'ACTs (18s)',
    acts_24s: 'ACTs (24s)',
    albendazole_abz_tabs: 'Albendazole (ABZ): Tabs',
    paracetamol_tabs: 'Tetracycline Eye Ointment (TEO): 1%:tube',
    tetracycline_eye_ointment_teo_1_tube: 'Tetracycline Eye Ointment (TEO): 1%:tube',
    amoxycillin: 'Amoxycillin (125mg/5mls: Bottle',
    none: 'None'
    };

    const childDangerSignsMap = {
    none: 'None',
    Poor_Breastfeeding: 'Poor Breastfeeding',
    not_able_to_feed_since_birth_or_stopped_feeding_well: 'Not able to feed since birth, or stopped feeding well',
    not_able_to_breastfeed: 'Not able to breastfeed',
    Fever: 'Fever',
    very_low_temperature: 'Very low temperature (35.4 C or less)',
    shivering: 'Shivering',
    Fast_Breathing: 'Fast Breathing',
    Very_Sleepy: 'Very Sleepy',
    Convulsions_and_Fits: 'Convulsions and Fits',
    only_moves_when_stimulated_or_does_not_move_even_on_stimulation: 'Only moves when stimulated, or does not move even on stimulation',
    yellow_solebaby_body_turning_yellow_especially_eyes_palms_soles: 'Yellow sole(Baby body turning yellow especially eyes, palms,soles)',
    bleeding_from_the_umbilical_stump: 'Bleeding from the umbilical stump',
    signs_of_local_infection_umbilicus_is_red_or_draining_pus_skin_boils_or_eye: 'Signs of local infection: umbilicus is red or draining pus, skin boils, or eyes draining pus',
    weight_chart_using_color_coded_scales_if_red_or_yellowweight_below_25kg_or_: 'Weight chart using color coded scales if RED or YELLOW(Weight below 2.5kg or born less than 36 weeks of age)',
    unable_to_cry: 'Unable to cry',
    cyanosis: 'Cyanosis',
    bulging_fontanelle: 'Bulging fontanelle'
    }

    return {
    ...state,
    counselMap,
    serviceMap,
    reasonMap,
    milestoneTypeMap,
    milestoneMap,
    nutritionMap,
    pregDangerMap,
    fpMethodMap,
    symptomsMap,
    supervisorMap,
    treatmentDistributionMap,
    childDangerSignsMap
    };
    });

    upsertIf(
    // state.data.properties.username !== 'openfn.test' &&
    state.data.properties.username !== 'test.2021' &&
    state.data.properties.test_user !== 'Yes' ,
    'Person_visit__c',
    'CommCare_ID__c',
    fields(
    //field('CommCare_ID__c', dataValue('form.case.@case_id')),
    // field('CommCare_ID__c', dataValue('id')),
    //field('CommCare_ID__c', state => {
    // var case_id = dataValue('case_id')(state);
    // var submitted = dataValue('properties.last_form_opened_date_and_time')(state);
    // return case_id + '_' + submitted;
    //}),
    field('CommCare_ID__c',dataValue('case_id')),

    relationship(
    'Person__r',
    'CommCare_ID__c',
    dataValue('indices.parent.case_id')
    ),
    /*relationship(
    'Household_CHW__r',
    'CommCare_ID__c',
    dataValue('properties.sfid')),*/
    // field('CommCare_Visit_ID__c',dataValue('metadata.instanceID')),
    field('CommCare_Visit_ID__c', state => {
    var case_id = dataValue('case_id')(state);
    var submitted = dataValue('properties.last_form_opened_date_and_time')(state);
    return case_id + '_' + submitted;
    }),
    field('Date__c',dataValue('properties.Date')),
    field('Form_Submitted__c', dataValue('properties.last_form_opened_name')),
    field('Birth_Status__c',dataValue('properties.child_status')),
    field('Catchment__c', dataValue('catchmentNewId')),
    /*
    //HMN 05/01/2022 Caused alot of failures, removed this RecordType Field
    relationship('RecordType', 'Name', state => {
    var rt = dataValue('properties.RecordType')(state);
    if (rt === 'Unborn' || rt === 'Child') {
    return 'Child Visit';
    };
    if (rt === 'Youth') {
    return 'Youth Visit';
    };
    if (rt === 'Male Adult') {
    return 'Adult Male Visit';
    };
    if (rt === 'Female Adult') {
    return 'Adult Female Visit';
    };
    }),*/
    field('Use_mosquito_net__c', state => {
    var choice = dataValue(
    'properties.sleep_under_net'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    field(
    'Individual_birth_plan_counselling__c',
    dataValue('properties.individual_birth_plan')
    ),
    field('Reason_for_not_taking_a_pregnancy_test__c', state => {
    var reason = dataValue('properties.No_Preg_Test')(state);
    return reason ? reason.toString().replace(/_/g, ' ') : undefined;
    }),
    field('Pregnancy_danger_signs__c', state => {
    var signs = dataValue(
    'properties.No_Preg_Test'
    )(state);
    return signs ? state.pregDangerMap[signs] : undefined;
    }),
    field('Child_Danger_Signs__c', state => {
    var signs = dataValue(
    'properties.Other_Danger_Signs'
    )(state);
    return signs ? state.childDangerSignsMap[signs] : undefined
    }),
    field('Current_Malaria_Status__c', state => {
    var choice = dataValue(
    'properties.malaria_test_results'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    field('Malaria_Home_Test__c', dataValue('properties.malaria_test_date')),
    /*field('Current_Malaria_Status__c', state => {
    var choice = dataValue(
    'properties.Malaria_Status'
    )(state);
    return state.cleanChoice(state, choice);
    }),*/
    // field('Malaria_Home_Treatment__c',dataValue('form.treatment_and_tracking.home_treatment')),
    field('Malaria_Home_Treatment__c', dataValue('properties.malaria_test_date')),
    field('Persons_symptoms__c', state => {
    var check = dataValue('properties.symptoms_check_other')(state);
    var value =
    check && check !== ''
    ? check
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.symptomsMap[value] || value;
    })
    : undefined;
    return value ? value.join(';') : undefined;
    }),
    field('Active_in_Support_Group__c', dataValue('properties.Active_in_Support_Group')),
    field('HAWI_Defaulter__c', state => {
    var hawi = dataValue('properties.default')(state);
    return hawi === 'Yes' ? true : false;
    }),
    field(
    'Date_of_Default__c',
    dataValue('properties.date_of_default')
    ),
    field(
    'Persons_temperature__c',
    dataValue('properties.temperature')
    ),
    field(
    'Days_since_illness_start__c',
    dataValue('properties.duration_of_sickness')
    ),
    field(
    'Newborn_visited_48_hours_of_delivery__c',
    dataValue(
    'properties.newborn_visited_48_hours_of_delivery'
    )
    ),
    field(
    'Newborn_visited_by_a_CHW_within_6_days__c',
    dataValue('properties.visit_6_days_from_delivery')
    ),
    field(
    'Current_Malaria_Status__c',
    dataValue('properties.malaria_test_results')
    ),
    field('Malaria_test__c', state => {
    var choice = dataValue(
    'properties.malaria_test'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    field('Fever__c', state => {
    var choice = dataValue(
    'properties.symptoms_check_fever'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    field('Cough__c', state => {
    var choice = dataValue(
    'properties.symptoms_check_cough'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    field('Diarrhoea__c', state => {
    var choice = dataValue(
    'properties.symptoms_check_diarrhea'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    field(
    'TB_patients_therapy_observed__c',
    dataValue('properties.observed_tb_therapy')
    ),
    field(
    'Injuries_or_wounds__c',
    dataValue('properties.wounds_or_injuries')
    ),
    field('Currently_on_ART_s__c', dataValue('properties.ART')),
    /*field('ART_Regimen__c', state => {
    var choice = dataValue(
    'properties.ARVs'
    )(state);
    return state.cleanChoice(state, choice);
    }),*/
    field(
    'Immediate_Breastfeeding__c',
    dataValue(
    'properties.Breastfeeding_Delivery'
    )
    ),
    field(
    'Exclusive_Breastfeeding__c',
    dataValue(
    'properties.Exclusive_Breastfeeding'
    )
    ),
    field(
    'Counselled_on_Exclusive_Breastfeeding__c',
    dataValue('properties.counseling')
    ),
    field('LMP__c',dataValue('properties.when_was_your_lmp')),
    field('Family_Planning__c', state => {
    var choice = dataValue(
    'properties.family_planning'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    //HMN 12/01/2023 Failures on picklist within Salesforce
    /*
    field(
    'Family_Planning_Method__c',
    dataValue('properties.family_planning_method')
    ),*/
    field('Family_Planning_Method__c', state => {
    //var status = dataValue('form.treatment_and_tracking.distribution.distributed_treatments')(state);
    var status = dataValue('properties.family_planning_method')(state);
    var value =
    status && status !== ''
    ? status
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.fpMethodMap[value] || value;
    })
    : undefined;
    return value ? value.join(';') : undefined;
    }),
    field('FP_Method_Distributed__c', state => {
    //var status = dataValue('form.treatment_and_tracking.distribution.distributed_treatments')(state);
    var status = dataValue('properties.FP_commodity')(state);
    var value =
    status && status !== ''
    ? status
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.fpMethodMap[value] || value;
    })
    : undefined;
    return value ? value.join(';') : undefined;
    }),
    field('Reasons_for_not_taking_FP_method__c', state => {
    // var reason = dataValue('form.TT5.Mother_Information.No_FPmethod_reason')(state);
    // return reason ? state.reasonMap[reason] : undefined;
    var status = dataValue('properties.No_FPmethod_reason')(state);
    var value =
    status && status !== ''
    ? status
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.reasonMap[value] || value;
    })
    : undefined;
    return value ? value.join(';') : undefined;
    }),
    field('Pregnant__c', state => {
    var preg = dataValue('properties.Pregnant')(state);
    return preg === 'Yes' ? true : false;
    }),
    field('Counselled_on_FP_Methods__c', state => {
    var choice = dataValue(
    'properties.CounselledFP_methods'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    field('Client_counselled_on__c', state => {
    var choices =
    dataValue('properties.counsel_topic')(
    state
    ) || dataValue('properties.counsel_topic')(state);
    var choiceGroups = choices ? choices.split(' ') : null;
    var choicesMulti = choiceGroups
    ? choiceGroups
    .map(cg => {
    return state.counselMap[cg];
    })
    .join(';')
    : choiceGroups;
    return choicesMulti;
    }),
    field('Client_provided_with_FP__c', state => {
    var choice = dataValue(
    'properties.was_the_woman_15-49yrs_provided_with_family_planning_commodities_by_chv'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    field(
    'Newborn_visited_48_hours_of_delivery__c',
    dataValue(
    'properties.newborn_visited_48_hours_of_delivery'
    )
    ),
    field('Mother_visit_counselling__c', state => {
    var choice = dataValue(
    'properties.did_you_consel_the_mother_on1'
    )(state);
    return state.handleMultiSelectOriginal(state, choice);
    }),
    field(
    'mother_visited_48_hours_of_the_delivery__c',
    dataValue('properties.visit_mother_48')
    ),
    field('Newborn_visit_counselling__c', state => {
    var choice = dataValue(
    'properties.did_you_consel_the_mother_on2'
    )(state);
    return state.handleMultiSelectOriginal(state, choice);
    }),
    field('Know_HIV_status__c', state => {
    var choice = dataValue(
    'properties.known_hiv_status'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    field('HIV_Status__c', dataValue('properties.hiv_status')),
    field('Treatment_Distribution__c', state => {
    //var status = dataValue('form.treatment_and_tracking.distribution.distributed_treatments')(state);
    var status = dataValue('properties.distributed_treatments')(state);
    var value =
    status && status !== ''
    ? status
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.treatmentDistributionMap[value] || value;
    })
    : undefined;
    return value ? value.join(';') : undefined;
    }),
    field(
    'Current_Weight__c',
    dataValue('properties.Current_Weight')
    ),
    field(
    'Current_Height__c',
    dataValue('properties.current_height')
    ),
    field(
    'Current_MUAC__c',
    dataValue('properties.MUAC')
    ),
    field('Food_groups_3_times_a_day__c',dataValue('properties.food_groups')),
    field('Nutrition_Case_Managed__c',dataValue('properties.nutrition_case_managed')),
    field('Nutrition_Danger_Signs__c',state => {
    var choice = dataValue(
    'properties.nutrition_danger_signs'
    )(state);
    return state.handleMultiSelectOriginal(state, choice);

    }),
    field('Why_was_nutrition_case_not_managed__c',dataValue('properties.nutrition_case_not_managed_why')),
    field('Community_Nutrition_Treatment__c',dataValue('properties.nutrition_treatment_severe')),
    field('Community_Nutrition_Treatment__c',dataValue('properties.nutrition_treatment_moderate')),
    field('Why_was_nutrition_treatment_not_given__c',dataValue('properties.nutrition_treatment_not_given')),
    field('Current_Nutrition_Status__c', state => {
    var status = dataValue(
    'properties.Nutrition_Status'
    )(state);
    return status ? state.nutritionMap[status] : undefined;
    }),
    field('Default_on_TB_treatment__c', state => {
    var choice = dataValue(
    'properties.default_tb_treatment'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    field('Received_pregnancy_test__c', state => {
    var choice = dataValue(
    'properties.did_you_adminsiter_a_pregnancy_test'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    field('Pregnancy_test_result__c', state => {
    var choice = dataValue(
    'properties.pregnancy_test_result'
    )(state);
    return state.cleanChoice(state, choice);
    }),
    field('Chronic_illness__c', state => {
    var choice = dataValue(
    'properties.please_specify_which_chronic_illness_the_person_has'
    )(state);
    var choice2 = state.handleMultiSelect(state, choice);
    return choice2 ? choice2.replace(/_/g, ' ') : '';
    }),
    /*field(
    'Birth_Certificate__c',
    dataValue('form.Status.birth_certificate')
    ),
    field(
    'Child_zinc__c',
    dataValue(
    'form.TT5.Child_Information.Clinical_Services.diarrhea_clinic_treatment_zinc'
    )
    ),
    field(
    'Child_ORS__c',
    dataValue(
    'form.TT5.Child_Information.Clinical_Services.diarrhea_clinic_treatment_ORS'
    )
    ),*/
    field(
    'Childs_breath_per_minute__c',
    dataValue('properties.breaths_per_minuite')
    ),
    field(
    'Child_chest_in_drawing__c',
    dataValue('properties.Child_chest_in_drawing_c')
    ),
    field(
    'Caregiver_counseled_on_delayed_milestone__c',
    dataValue(
    'properties.did_you_counsel_the_caregiver_on_delayed_milestones'
    )
    ),
    field(
    'Delayed_Milestone__c',
    dataValue(
    'properties.does_the_child_has_a_delayed_milestone'
    )
    ),
    field(
    'Child_has_2_or_more_play_items__c',
    dataValue(
    'properties.does_the_child_has_2_or_more_play_items_at_home'
    )
    ),
    field(
    'Child_has_3_more_picture_books__c',
    dataValue(
    'properties.does_the_child_has_3_or_more_picture_books'
    )
    ),
    field('Delayed_Milestones_Counselled_On__c', state => {
    var ms = dataValue(
    'properties.which_delayed_milestone_area_did_you_counsel_the_caregiver_on'
    )(state);
    return ms ? state.milestoneMap[ms] : undefined;
    }),
    field('Delayed_Milestone_Type__c', state => {
    var ms = dataValue('properties.which_delayed_milestone')(
    state
    );
    return ms ? state.milestoneTypeMap[ms] : undefined;
    }),
    field(
    'Caretaker_trained_in_muac__c',
    dataValue('properties.mother_trained_muac')
    ),
    field(
    'Caretaker_screened_for_muac_this__c',
    dataValue(
    'properties.mother_screened_child_muac'
    )
    ),
    field(
    'Caretaker_muac_findings__c',
    dataValue(
    'properties.mother_screened_child_muac_result'
    )
    ),
    field(
    'Caretaker_action_after_muac_screening__c',
    dataValue(
    'properties.mother_screened_muac_action'
    )
    ),
    field(
    'of_Caretaker_MUAC_screenings__c',
    dataValue('properties.mother_nb_screening')
    ),
    field('Pulse_Oximeter__c', dataValue('properties.pulse_oximeter_available')),
    field(
    'Heart_Rate_Pulse_Oximeter__c',
    dataValue('properties.heart_rate_pulse_oximeter')
    ),
    field(
    'Oxygen_Concentration_Pulse_Oximeter__c',
    dataValue('properties.oxygen_concentration')
    ),
    field('Can_child_drink__c', dataValue('properties.can_child_drink')),
    field(
    'Antibiotic_provided_for_fast_breathing__c',
    dataValue('properties.antibiotic_fast_breathing')
    ),
    field(
    'Antibiotic_provided_for_chest_indrawing__c',
    dataValue('properties.antibiotic_chest_indrawing')
    ),
    field('Supervisor_Visit__c', state => {
    var check = dataValue('properties.supervisor_visit')(state);
    var value =
    check && check !== ''
    ? check
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.supervisorMap[value] || value;
    })
    : undefined;
    return value ? value.join(';') : undefined;
    }),
    /*
    //HMN- 05012023 - Removed field('Visit_Closed_Date__c', dataValue('date_closed')),
    //Because I could not find it in Salesforce. It was causing errors on staging
    field('Visit_Closed_Date__c', dataValue('date_closed')),
    */
    //field('Case_Closed_Date__c', state => {
    // var closed = dataValue('date_closed')(state);
    // var date = dataValue('date_modified')(state);
    // return closed && closed == true ? date : undefined;
    // })
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22.html b/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22.html index fce6b1ef200..c805497e005 100644 --- a/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22.html +++ b/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22.html @@ -22,13 +22,13 @@ - +

    Q4 2022] Upsert Supervision - Accompaniment

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, relationship, upsert, upsertIf

    Expression

    //Job to integrate CommCare 'Accompaniement' form from the Supervision App
    fn(state => {
    state.handleMultiSelect = function (state, multiField) {
    return multiField
    ? multiField
    .replace(/ /g, ';')
    : '';
    };

    state.cleanChoice = function (state, choice) {
    if (choice) {
    return choice.charAt(0).toUpperCase() + choice.slice(1).replace('_', ' ');
    } else {
    return '';
    }
    }

    return {
    ...state
    };

    });


    upsert(
    'Supervision_Forms__c',
    'CommCare_Form_ID__c',
    fields(
    field('CommCare_Form_ID__c', dataValue('id')),
    relationship('RecordType', 'Name', 'Accompanient Form'),
    field('Supervisor_Name__c', dataValue('form.prologue.supervisor_sfid')),
    field('CHW_Name__c', dataValue('form.prologue.chw_sfid')),
    relationship(
    'Village__r',
    'CommCare_User_ID__c',
    dataValue('form.prologue.chw_village')
    ),
    field('Form_Date__c',dataValue('form.Date')),
    field('Fertile_Women_in_Household__c',dataValue('form.WRA_check')),
    field('CHW_Asked_About_Family_Planning__c',dataValue('form.women_of_reproductive_age.fp_check')),
    field('Contraception_Distributed__c', state => {
    var choice = dataValue(
    'form.women_of_reproductive_age.fp_resources_check'
    )(state);
    return state.handleMultiSelect(state, choice);
    }),


    field('Household_members_aware_of_CHW_SRH__c',dataValue('form.women_of_reproductive_age.srh_awareness_check')),
    field('Pregnant_Women_in_HH__c',dataValue('form.pregnancy_check')),
    field('CHW_Asked_About_ANC_Visits__c',dataValue('form.pregnant_women.anc_check')),
    field('CHW_Counseled_On_Value_of_ANC_Visits__c',dataValue('form.pregnant_women.anc_counsel_check')),
    field('CHW_Read_Each_Pregnancy_Danger_Sign__c',dataValue('form.pregnant_women.danger_sign_check')),
    field('Household_aware_of_CHW_MCH_Services__c',dataValue('form.pregnant_women.pregnancy_support_awareness_check')),
    field('Pregnant_Woman_Delivered__c',dataValue('form.pregnant_women.delivery_check')),
    field('Used_MCH_Booklet__c',dataValue('form.delivery.vaccination_check')),
    field('Counsel_on_vaccination_schedule__c',dataValue('form.delivery.vaccination_counsel_check')),
    field('Counselled_on_Exclusive_Breastfeeding__c',dataValue('form.delivery.ebf_check')),
    field('Children_Under_5_in_Household__c',dataValue('form.cu5_check')),
    field('All_children_under_5_registered__c',dataValue('form.children_under_5.cu5_enrollment_check')),
    field('MUAC_taken_for_all_children__c',dataValue('form.children_under_5.muac_check')),
    field('Measured_MUAC_circumference_properly__c',dataValue('form.children_under_5.muac_method_check')),
    // field('Measured_MUAC_circumference_properly__c', state => {
    // var choice = dataValue(
    // 'form.children_under_5.muac_method_check'
    // )(state);
    // return state.cleanChoice(state, choice);
    // }),
    field('HIV_Members_in_the_Household__c',dataValue('form.hiv_check')),
    field('Recorded_HIV_Status_Information__c',dataValue('form.hiv_clients.hiv_info_check')),
    field('Counselled_on_ART_Adherence_HIV_Services__c',dataValue('form.hiv_clients.hiv_counsel_check')),
    field('Sick_Household_Members_at_Visit__c',dataValue('form.illness_check')),
    field('Household_member_reported_fever__c',dataValue('form.illness_referrals.fever_check')),
    field('Conducted_malaria_home_test__c', dataValue('form.illness_referrals.malaria_test_check')),
    field('Malaria_test_protocol_followed__c',dataValue('form.illness_referrals.malaria_test_method_check')),
    field('Sick_person_referred__c',dataValue('form.illness_referrals.referral_accompaniment_check')),
    field('Referral_discussed_with_family__c',dataValue('form.illness_referrals.referral_followup_check')),
    field('Distributed_treatments_medications__c',dataValue('form.distribution_check')),
    field('Stock_is_full__c',dataValue('form.stocks_check')),
    field('Missing_Stock__c', state => {
    var choice = dataValue(
    'form.missing_stocks_details'
    )(state);
    return state.handleMultiSelect(state, choice);
    }),
    field('Other_Missing_Stock__c',dataValue('form.missing_stocks_details_other')),
    field('Demonstrated_active_listening__c',dataValue('form.chw_behavior.active_listening_check')),
    field('Acted_with_respect_courtesy__c',dataValue('form.chw_behavior.respect_check')),
    field('CHW_Rating__c',dataValue('form.chw_behavior.interview_technique_check')),
    field('Tablet_used__c',dataValue('form.chw_behavior.tablet_use_check')),
    field('Tablet_used_effectively__c',dataValue('form.chw_behavior.tablet_competency_check')),
    field('Tablet_problem_observed__c', state => {
    var choice = dataValue(
    'form.chw_behavior.tablet_issues'
    )(state);
    return state.handleMultiSelect(state, choice);
    }),
    field('Visit_Length_Mins__c',dataValue('form.visit_length')),
    field('Accompanient_components_covered__c', state => {
    var choice = dataValue(
    'form.feedback_type'
    )(state);
    return state.handleMultiSelect(state, choice);
    }),
    field('Other_comments__c',dataValue('form.supervisor_comments')),
    field('Contraception_Distributed__c', state => {
    var choice = dataValue(
    'form.women_of_reproductive_age.fp_resources_check'
    )(state);
    return state.handleMultiSelect(state, choice);
    }),
    )
    );

    upsertIf(
    state.data.form.prologue.hh_code !== '' &&
    state.data.form.prologue.hh_code !== null,
    'Supervision_Forms__c',
    'CommCare_Form_ID__c',
    relationship('Household_Code__r',
    'Name',
    dataValue('form.prologue.hh_code')
    )
    );
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19.html b/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19.html index dac99f57fbb..6ec46a980d0 100644 --- a/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19.html +++ b/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19.html @@ -22,13 +22,13 @@ - +

    Q4 2022] Upsert Supervision - Feedback

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, relationship, upsert

    Expression

    //Job to integrate CommCare 'Feedback' form from the Supervision App

    upsert(
    'Supervision_Forms__c',
    'CommCare_Form_ID__c',
    fields(
    field('CommCare_Form_ID__c', dataValue('id')),
    relationship('RecordType', 'Name', 'Feedback Form'),
    field('Supervisor_Name__c', dataValue('form.prologue.supervisor_sfid')),
    field('CHW_Name__c', dataValue('form.prologue.chw_sfid')),
    relationship(
    'Village__r',
    'CommCare_User_ID__c',
    dataValue('form.prologue.chw_village')
    ),
    relationship('Catchment__r',
    'Name',
    dataValue('form.prologue.catchment')
    ),
    field('Form_Date__c',dataValue('form.Date')),
    field('Strengths__c', dataValue('form.chw_perspectives_and_reflections.chw_strengths')),
    field('Weaknesses__c', dataValue('form.chw_perspectives_and_reflections.chw_improvement_areas')),
    field('Challenges__c', dataValue('form.chw_perspectives_and_reflections.chw_challenges')),
    field('Solutions__c', dataValue('form.chw_perspectives_and_reflections.chw_improvement_areas')),
    field('of_Household_Visit_As_Expected__c', dataValue('form.supervision_dashboard_feedback.hh_visits_check')),
    field('of_Household_Visit_Explanation__c',dataValue('form.supervision_dashboard_feedback.hh_visits_explanation')),
    field('of_Priority_Clients_as_Expected__c', dataValue('form.supervision_dashboard_feedback.priority_hh_visits_check')),
    field('of_Priority_Clients_Explanation__c',dataValue('form.supervision_dashboard_feedback.priority_hh_visits_explanation')),
    field('Feedback_on_Indicators__c',dataValue('form.supervision_dashboard_feedback.chw_sd_feedback')),
    field('CHW_Strengths__c',dataValue('form.supervisor_perspectives_and_reflections.chw_strengths_supervisor')),
    field('CHW_Areas_for_Improvement__c',dataValue('form.supervisor_perspectives_and_reflections.chw_improvement_areas_supervisor')),
    field('CHW_Immediate_Solutions__c',dataValue('form.supervisor_perspectives_and_reflections.chw_solutions_supervisor')),
    field('Other_Recommendations__c',dataValue('form.supervisor_perspectives_and_reflections.chw_recommendation_other_supervisor')),
    )
    );
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24.html b/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24.html index 379d6a725de..9ba6917856d 100644 --- a/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24.html +++ b/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24.html @@ -22,13 +22,13 @@ - +

    Q4 2022] Upsert Supervision - Household Spot Check

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: Q4 2022] Upsert Supervision - Household Spot Check
    • Adaptor: @openfn/language-salesforce
    • Adaptor Version: latest
    • Created about 1 year ago
    • Updated 4 months ago
    • Score: 18 (an indicator of how useful this job may be)

    Key Functions

    dataValue, field, fields, relationship, upsert, upsertIf

    Expression

    //Job to integrate CommCare 'Household Spotcheck' form from the Supervision App
    fn(state => {
    state.handleMultiSelect = function (state, multiField) {
    return multiField
    ? multiField
    .replace(/ /g, ';')
    : '';
    };
    return {
    ...state
    };
    });


    upsert(
    'Supervision_Forms__c',
    'CommCare_Form_ID__c',
    fields(
    field('CommCare_Form_ID__c', dataValue('id')),
    relationship('RecordType', 'Name', 'Household Spotcheck Form'),
    // relationship('Household_Code__r',
    //'Name',
    //dataValue('form.prologue.hh_code')
    // ),
    field('Supervisor_Name__c', dataValue('form.prologue.spot_checker_sfid')),
    field('CHW_Name__c', dataValue('form.prologue.chw_sfid')),
    relationship(
    'Village__r',
    'CommCare_User_ID__c',
    dataValue('form.prologue.village')
    ),
    relationship('Catchment__r',
    'Name',
    dataValue('form.prologue.catchment')
    ),
    field('Form_Date__c',dataValue('form.Date')),
    field('CHW_Name_Identified__c',dataValue('form.chw_awareness.chw_name_reported')),
    field('Knows_where_CHW_lives__c',dataValue('form.chw_awareness.chw_location_confirmation')),
    field('Knows_CHW_contact_number__c',dataValue('form.chw_awareness.chw_contact_number')),
    field('CHW_paid_for_services__c',dataValue('form.chw_awareness.service_fee')),
    field('CHW_Visit_Frequency__c',dataValue('form.chw_awareness.chw_visit_frequency')),
    field('Household_member_reported_fever__c',dataValue('form.iccm.fever_management')),
    field('details_on_chw_conduct__c',dataValue('form.chw_behavior.chw_conduct_detail')),
    field('Tablet_used__c',dataValue('form.chw_behavior.tablet_use_check')),
    field('Other_Recommendations__c',dataValue('form.community_comments.community_recommendations_detail')),
    field('Other_comments__c',dataValue('form.community_comments.do_you_have_any_other_comments_at_this_time')),
    field('CHW_tested_treated_child_for_malaria__c',dataValue('form.iccm.malaria_management')),
    field('If_so_when_Within_the__c',dataValue('form.iccm.malaria_management_timeline')),
    field('CHW_ever_managed_your_child_for_diarrhea__c',dataValue('form.iccm.diarrhea_management')),
    field('CHW_measured_child_s_arm_past_90_days__c',dataValue('form.iccm.muac_check')),
    field('CHW_ever_managed_child_for__c',dataValue('form.iccm.pneumonia_management')),
    field('rate_the_quality_of_services__c',dataValue('form.iccm.chw_service_quality')),
    field('CHW_revisit__c',dataValue('form.referrals_and_follow-up_visits.follow_up_check_1')),
    field('follow_up_within_3_days_of_initial_visit__c',dataValue('form.referrals_and_follow-up_visits.follow_up_check_2')),
    field('does_CHW_revisit_child_for_follow_up__c',dataValue('form.referrals_and_follow-up_visits.follow_up_check_3')),
    field('when_child_is_sick__c',dataValue('form.referrals_and_follow-up_visits.follow_up_check_4')),
    field('CHW_conduct__c',dataValue('form.chw_behavior.chw_conduct_check')),
    field('comfortable_sharing_sensitive_info__c',dataValue('form.chw_behavior.sensitive_info_check')),
    field('Please_explain__c',dataValue('form.chw_behavior.sensitive_info_detail')),
    field('Does_your_CHW_listen_to_your_perspective__c',dataValue('form.chw_behavior.listening_check')),
    field('ever_experienced_a_problem_with_CHW__c', dataValue('form.chw_behavior.problem_check')),
    field('describe_problem_experienced_with_CHW__c',dataValue('form.chw_behavior.problem_detail')),
    field('any_recommendations_for_impr__c',dataValue('form.community_comments.community_recommendations')),
    field('How_was_the_fever_managed__c', state => {
    var choice = dataValue(
    'form.iccm.fever_management_detail'
    )(state);
    return state.handleMultiSelect(state, choice);
    }),
    field('How_was_the_malaria_managed__c', state => {
    var choice = dataValue(
    'form.iccm.malaria_management_detail'
    )(state);
    return state.handleMultiSelect(state, choice);
    }),
    field('How_did_she_he_manage_the_diarrhea__c', state => {
    var choice = dataValue(
    'form.iccm.malaria_management_detail'
    )(state);
    return state.handleMultiSelect(state, choice);
    }),
    field('How_did_she_he_manage_the_pneumonia__c', state => {
    var choice = dataValue(
    'form.iccm.pneumonia_managemnt_detail'
    )(state);
    return state.handleMultiSelect(state, choice);
    }),
    field('COHORT_ONE_Maternal_and_Child_Health__c', state => {
    var choice = dataValue(
    'form.chw_service_provision.cohort_one'
    )(state);
    return state.handleMultiSelect(state, choice);
    }),
    field('COHORT_TWO_Childcare__c', state => {
    var choice = dataValue(
    'form.chw_service_provision.cohort_two'
    )(state);
    return state.handleMultiSelect(state, choice);
    }),
    field('COHORT_THREE_WASH_and_Nutrition__c', state => {
    var choice = dataValue(
    'form.chw_service_provision.cohort_three'
    )(state);
    return state.handleMultiSelect(state, choice);
    }),
    field('COHORT_FOUR_FIVE_Sexual_Reproductive__c', state => {
    var choice = dataValue(
    'form.chw_service_provision.cohort_four_-_five'
    )(state);
    return state.handleMultiSelect(state, choice);
    }),
    )
    );

    upsertIf(
    state.data.form.prologue.hh_code !== '' &&
    state.data.form.prologue.hh_code !== null,
    'Supervision_Forms__c',
    'CommCare_Form_ID__c',
    relationship('Household_Code__r',
    'Name',
    dataValue('form.prologue.hh_code')
    )
    );
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02.html b/fr/adaptors/library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02.html index 6d3aa873768..480492b130a 100644 --- a/fr/adaptors/library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02.html +++ b/fr/adaptors/library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02.html @@ -22,13 +22,13 @@ - +

    Register Participant - V2 Skillz

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    alterState, dataPath, dataValue, each, field, fields, lastReferenceValue, map, merge, query, relationship, upsert, Array

    Expression

    query(`SELECT Id, Name, CommCare_Ext_ID__c FROM Event__c WHERE CommCare_Case_ID__c = '${state.data.form.case['@case_id']}'`);

    alterState(state => {
    // Note: lastReferenceValue selects the first item in the references array.
    state.data.eventName = lastReferenceValue('records[0].CommCare_Ext_ID__c')(state);

    function objectToArray(object) {
    return !Array.isArray(object) ? [object] : object;
    }

    // if (state.data.form.question1) {
    // console.log('Ensuring that "question1" is an array.');
    // state.data.form.question1 = objectToArray(state.data.form.question1);
    // } else {
    // console.log('Shifting "new_participants" to "question1" array.');
    // state.data.form.question1 = objectToArray(state.data.form.new_participants);
    // console.log('Creating a "case" object inside each item in that array.');
    // state.data.form.question1 = state.data.form.question1.map(item => ({
    // ...item,
    // case: item.create_skillz_plus_participant.case,
    // }));
    // }

    console.log('Done with initial data manipulation.');

    return state;
    });

    // beta.each(
    // merge(
    // dataPath('form.question1[*]'),
    // fields(
    // field('intervention_notes_to_save', dataValue('form.intervention_notes_to_save')))
    // ),

    upsert(
    'Person__c',
    'Participant_Identification_Number_PID__c',
    fields(
    field('Notes__c', dataValue('form.intervention_notes_to_save')),
    field('First_Name__c', dataValue('form.new_participants.participant_first_name')),
    field('Surname__c', dataValue('form.new_participants.participant_surname')),
    relationship('RecordType', 'Name', 'Participant'),
    field('Participant_Identification_Number_PID__c', state => state.data.form.new_participants.create_skillz_plus_participant.case['@case_id']),
    field('Sex__c', dataValue('gender')),
    field('Mobile_Number_1__c', dataValue('form.new_participants.mobile_number')), //QUESTION: In CommCare, phone doesn't look like it's saving?
    field('School_name_person__c', dataValue('form.new_participants.school_name')),
    field('Date_of_Birth__c', dataValue('date_of_birth')),
    field('School_name_person__c', dataValue('form.new_participants.school_name')),
    field('Physical_Address__c', dataValue('form.new_participants.participants_home_address'))
    //field('Age__c', dataValue('form.question1.age_in_years')), //This is a SF formula field, cannot map
    )
    )
    //);

    // each(
    // merge(dataPath('form.question1[*]'), fields(
    // field('intervention_name', dataValue('form.intervention_name')),
    // field('eventName', dataValue('eventName')))),
    upsert(
    'Attendance__c',
    'CommCare_Ext_ID__c',
    fields(
    field('CommCare_Ext_ID__c', state => {
    var eventid = `${state.data.eventName}` || dataValue('form.intervention_name')(state);
    var personid = state.data.form.new_participants.create_skillz_plus_participant.case['case_id'];//state.data.case['@case_id'];
    return personid + '-' + eventid;
    }),
    relationship(
    //Attendance looks up to Persn via the case_id
    'Person_Attendance__r',
    'Participant_Identification_Number_PID__c',
    state => state.data.case['@case_id']
    ),
    relationship(
    //Attendance looks up to Event via the intervention_name
    'Event__r',
    'CommCare_Case_ID__c',
    state.data.form.new_participants.create_skillz_plus_participant.case.index.parent['#text']
    ),
    field('Date_of_Birth__c', dataValue('form.new_participants.date_of_birth'))
    )
    )
    //);
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Register-Patient-2021-03-02.html b/fr/adaptors/library/jobs/auto/Register-Patient-2021-03-02.html index 6a17b24a852..84825b69c3e 100644 --- a/fr/adaptors/library/jobs/auto/Register-Patient-2021-03-02.html +++ b/fr/adaptors/library/jobs/auto/Register-Patient-2021-03-02.html @@ -22,13 +22,13 @@ - +

    Register Patient

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    appendValues, JSON

    Expression

    appendValues({
    spreadsheetId: '1EFkY4zD4qqxnJdH-QaeasKd1zXC-1sNKpEg08W-3sT0',
    range: 'COVID-19 Cases!A2',
    values: state => {
    const kobo = state.data.body;

    console.log('Submission data: ' + JSON.stringify(kobo, null, 2));

    return [
    [
    kobo['National_ID'],
    kobo['Patient_name'],
    kobo['Last_Name_of_Patient'],
    kobo['Sex'],
    kobo['Age'],
    kobo['Comments'],
    Date(),
    ],
    ];
    },
    });
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Registration-forms-new-case-2023-06-22.html b/fr/adaptors/library/jobs/auto/Registration-forms-new-case-2023-06-22.html index 6f0fd95bdd6..f8ba48d7868 100644 --- a/fr/adaptors/library/jobs/auto/Registration-forms-new-case-2023-06-22.html +++ b/fr/adaptors/library/jobs/auto/Registration-forms-new-case-2023-06-22.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Request-Vitas-Sync-2021-05-11.html b/fr/adaptors/library/jobs/auto/Request-Vitas-Sync-2021-05-11.html index 28111a54437..04855f6ed6f 100644 --- a/fr/adaptors/library/jobs/auto/Request-Vitas-Sync-2021-05-11.html +++ b/fr/adaptors/library/jobs/auto/Request-Vitas-Sync-2021-05-11.html @@ -22,13 +22,13 @@ - +

    Request Vitas Sync

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    alterState, dataPath, dataValue, each, post

    Expression

    alterState(state => {
    const vitasSystemsToCheck = [
    'vitas-1',
    'thatMinistry-vitas-7',
    '3',
    '4',
    '5',
    ]
    return { ...state, data: { vitasSystemsToCheck } };
    });

    each(
    dataPath('vitasSystemsToCheck[*]'),
    post(state.configuration.inboxUrl, {
    body: { "db": dataValue('database-id') },
    })
    );
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27.html b/fr/adaptors/library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27.html index 67bde4f5e88..a9af9bad07c 100644 --- a/fr/adaptors/library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27.html +++ b/fr/adaptors/library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27.html @@ -22,13 +22,13 @@ - +

    Risk and Vulnerability Assessment

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    alterState, dataValue, field, fields, join, map, upsert

    Expression

    // Your job goes here. Testing github
    alterState(state => {
    function checked(key, str) {
    if (!str) return false;
    return str.toString().split(' ').indexOf(key) >= 0;
    }

    function capitalizeFirstLetter(str) {
    if (!str) return;
    let new_str = str.toString().toLowerCase();
    return new_str.slice(0, 1).toUpperCase() + new_str.slice(1);
    }

    function transformDont(str) {
    if (!str) return str;
    return str
    .toString()
    .split('_')
    .map(word => word.replace(/dont/i, "don't"))
    .join('_')
    .toString()
    .trim();
    }

    function transformCant(str) {
    if (!str) return str;
    return str
    .toString()
    .split('_')
    .map(word => word.replace(/cant/i, "can't"))
    .join('_')
    .toString()
    .trim();
    }

    function splitAndJoin(str, splitDelimiter, joinDelimiter) {
    if (!str) return;

    return str.toString().split(splitDelimiter).join(joinDelimiter).toString().trim();
    }

    function transformHowOften(str) {
    if (!str) return;
    if (str === 'special_occasions') return 'Special Occasions';
    return transformGenericText(str).toString().trim();
    }

    function transformHIVStatus(status) {
    switch (status) {
    case 'yes_negative':
    return 'Yes,Negative';
    case 'yes_positive':
    return 'Yes,Positive';
    case 'no_i_dont':
    return "No,I don't know";
    case 'yes_dont_want_to_disclose':
    return "Yes, don't want to disclose";
    default:
    return;
    }
    }

    function transformLastTested(str) {
    if (!str) return;
    switch (str.toString()) {
    case 'yes_negative':
    return 'Yes,Negative';
    case 'yes_positive':
    return 'Yes,Positive';
    case 'no_i_dont':
    return "No,I don't know";
    case 'yes_dont_want_to_disclose':
    return "Yes, don't want to disclose";
    default:
    return;
    }
    }

    function transformMonthAgo(str) {
    if (!str) return;
    switch (str) {
    case 'month_ago':
    return '1 month ago';
    case 'months_ago':
    return '3 months ago';
    case 'month_ago':
    return 'copy-1-of-months_ago ';
    case 'month_ago':
    return '6 months ago';
    case 'a_year_or_more_ago':
    return 'A year or more';
    default:
    return;
    }
    }

    function transformGenericText(str) {
    if (!str) return;
    return capitalizeFirstLetter(splitAndJoin(transformDont(str), '_', ' '))
    .toString()
    .trim();
    }

    function transformRange(range) {
    if (!range) return;
    return range
    .toString()
    .replace(/\d_\d/i, match => match.replace('_', '-'))
    .toString()
    .trim();
    }

    function transformAgeRange(range) {
    if (!range) return;
    if (range === '10_years') return '< 10 years';
    if (range === 'greater_than_19') return '> 19 years';
    return capitalizeFirstLetter(transformDont(transformCant(splitAndJoin(transformRange(range), '_', ' '))))
    .toString()
    .trim();
    }

    function transformAbuseExperienced(str) {
    if (!str) return;
    return str
    .split(' ')
    .map(word => capitalizeFirstLetter(word))
    .join(' ')
    .toString()
    .trim();
    }

    function getAge(dateString) {
    if (!dateString) return;

    const today = new Date();
    const birthDate = new Date(dateString);
    var age = today.getFullYear() - birthDate.getFullYear();
    var m = today.getMonth() - birthDate.getMonth();
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
    age--;
    }
    return age;
    }

    state.data.perform_a_risk_assessment = state.data.form.do_you_want_to_perform_a_risk_assessment === 'yes';

    state.data.complete_service_referrals = state.data.form.referral_services ? true : false;

    state.data.form.hidden_properties.gender =
    capitalizeFirstLetter(state.data.form.hidden_properties.gender);

    state.helperFunctions = {
    checked,
    transformAgeRange,
    transformHIVStatus,
    transformLastTested,
    transformMonthAgo,
    transformGenericText,
    transformDont,
    splitAndJoin,
    transformHowOften,
    transformAbuseExperienced,
    getAge,
    };
    return state;
    });

    upsert(
    'Risk_Assessment__c',
    'CommCare_Ext_ID__c',
    fields(
    field('CommCare_Ext_ID__c', dataValue('id')),
    field('Date__c', dataValue('form.date')),
    field('Participant_Name__c', state => {
    var firstname = state.data.form.hidden_properties.praticipant_first_name;
    var lastname = state.data.form.hidden_properties.participant_surname;
    return firstname + ' ' + lastname;
    }),
    field('Participant_Age__c', state => {
    const dob = dataValue('form.hidden_properties.date_of_birth')(state);

    return state.helperFunctions.getAge(dob);
    }),
    field('Participant_Sex__c', dataValue('form.hidden_properties.gender')),
    field('X1_0_Sexually_Active_past_12_month__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.sexual_risk_and_pregnancy.sexually_active_12_months')(state)
    )
    ),
    field('X1_1_Age_at_first_sex__c', state =>
    state.helperFunctions.transformAgeRange(
    dataValue('form.sexual_risk_and_pregnancy.age_at_first_sex')(state)
    )
    ),
    field('X1_2_Have_you_ever_had_unprotected_sex__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.sexual_risk_and_pregnancy.have_you_ever_had_unprotected_sex')(state)
    )
    ),
    field('X1_3_Sex_for_monetary_or_material_benefi__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.sexual_risk_and_pregnancy.sex_monetary_material')(state)
    )
    ),
    field('Do_you_know_your_HIV_status__c', state =>
    state.helperFunctions.transformHIVStatus(
    dataValue('form.sexual_risk_and_pregnancy.hiv_status.do_you_know_your_hiv_status')(state)
    )
    ),
    field('X2_1_When_last_did_you_test_for_HIV__c', state =>
    state.helperFunctions.transformMonthAgo(
    dataValue('form.sexual_risk_and_pregnancy.hiv_status.when_last_did_you_test_for_hiv')(state)
    )
    ),
    field('X2_2_Are_you_on_treatment_ART__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.sexual_risk_and_pregnancy.hiv_status.are_you_on_treatment_art')(state)
    )
    ),
    field('X3_0_Had_an_STI_in_the_last_12months_yea__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.hiv_last_12_months')(state)
    )
    ),
    field('X3_1_Past_12_months_sex_HIV_status_part__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.knowing_partners_hiv_status')(state)
    )
    ),
    //PENDING Donny change data type in SF
    // field('X4_0_Forms_of_abuse_experienced_before__c', state =>
    // state.helperFunctions.transformAbuseExperienced(
    // dataValue('form.risk_assessment.gender_based_violence.abuse_experienced')(state)
    // )
    // ),
    field('X4_1_Feel_unsafe_any1_interact_with_ofte__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.gender_based_violence.unsafe_with_others')(state)
    )
    ),
    field('X4_2_Of_what_relationship_person_to_you__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.gender_based_violence.relationship_of_abuser')(state)
    )
    ),
    field('X5_0_Do_you_take_alcohol_or_drugs__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.gender_based_violence.drugs_and_alcohol_use.do_you_take_alcohol_andor_drugs')(state)
    )
    ),
    field('X5_1_On_average_how_often_drink_alcohol__c', state =>
    state.helperFunctions.transformHowOften(
    dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.gender_based_violence.drugs_and_alcohol_use.how_often_alcohol')(state)
    )
    ),
    field('X5_2_On_average_how_often_take_drugs__c', state =>
    state.helperFunctions.transformHowOften(
    dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.gender_based_violence.drugs_and_alcohol_use.how_often_drugs')(state)
    )
    ),
    field('X5_3_Easy_for_teens_to_obtain_alcohol__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.gender_based_violence.drugs_and_alcohol_use.alcohol_19')(state)
    )
    ),
    field('X5_4__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.sexual_risk_and_pregnancy.hiv_status.sti_and_pep.gender_based_violence.drugs_and_alcohol_use.illegal_drugs_19')(state)
    )
    )
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30.html b/fr/adaptors/library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30.html index 1f2a6f900fb..d3fac0a357b 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30.html +++ b/fr/adaptors/library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30.html @@ -22,13 +22,13 @@ - +

    Upsert ART Adherence Self-Reporting Tool

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    alterState, dataValue, field, fields, upsert

    Expression

    // Push to production
    alterState(state => {

    function getAge(dateString) {
    if (!dateString) return;

    const today = new Date();
    const birthDate = new Date(dateString);
    var age = today.getFullYear() - birthDate.getFullYear();
    var m = today.getMonth() - birthDate.getMonth();
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
    age--;
    }
    return age;
    }

    function transform(value) {
    if (!value) return;
    switch (value.toString().trim()) {
    case 'i_dont_know__i_dont_recall':
    return "I don't know/I don't recall";
    case 'i_dont_recall':
    return "I don't know/I don't recall";
    case 'no':
    return 'No';
    case 'yes':
    return 'Yes';
    case 'na':
    return 'NA';
    case 'disagree':
    return '2 (Disagree)';
    case 'agree':
    return '4 (Agree)';
    case 'neither_agree_or_disagree':
    return '3 (Neither Agree or Disagree)';
    case 'strongly_agree':
    return '5 (Strongly Agree)';
    case 'strongly_disagree':
    return '1 (Strongly Disagree)';
    case 'sure':
    return '4 (Agree)';
    case 'very_sure':
    return '5 (Strongly Agree)';
    case 'i_dont_know':
    return 'I dont know';
    case 'suppressed':
    return 'Suppressed';
    case 'unsuppressed':
    return 'Unsuppressed';
    default:
    return value;
    }
    }

    state.helperFunctions = { getAge };

    state.data.form.behavioural.are_you_taking_any_other_religious_treatment_ie_holy_water_anointing_oilwat =
    transform(state.data.form.behavioural.are_you_taking_any_other_religious_treatment_ie_holy_water_anointing_oilwat)

    state.data.form.behavioural.are_you_taking_any_traditional_medicine_as_a_supplement_to_the_arvs =
    transform(state.data.form.behavioural.are_you_taking_any_traditional_medicine_as_a_supplement_to_the_arvs)

    state.data.form.behavioural.if_yes_to_any_of_the_above_did_it_affect_your_taking_of_medication_treatmen =
    transform(state.data.form.behavioural.if_yes_to_any_of_the_above_did_it_affect_your_taking_of_medication_treatmen)

    state.data.form.behavioural.in_the_past_month_did_you_go_for_a_party_or_other_leisure_activities =
    transform(state.data.form.behavioural.in_the_past_month_did_you_go_for_a_party_or_other_leisure_activities)

    state.data.form.behavioural.in_the_past_month_did_you_sleep_away_from_home =
    transform(state.data.form.behavioural.in_the_past_month_did_you_sleep_away_from_home)

    state.data.form.clinical_knowledge.do_you_know_your_cd4_count =
    transform(state.data.form.clinical_knowledge.do_you_know_your_cd4_count)

    state.data.form.clinical_knowledge.question16 =
    transform(state.data.form.clinical_knowledge.question16)

    state.data.form.clinical_knowledge.do_you_know_your_viral_load =
    transform(state.data.form.clinical_knowledge.do_you_know_your_viral_load)

    state.data.form.clinical_knowledge.when_did_you_last_go_for_these_two_clinical_tests =
    transform(state.data.form.clinical_knowledge.when_did_you_last_go_for_these_two_clinical_tests)

    state.data.form.treatment_adherence.did_you_encounter_any_challenges_in_taking_your_medication_as_prescribed_in =
    transform(state.data.form.treatment_adherence.did_you_encounter_any_challenges_in_taking_your_medication_as_prescribed_in)

    state.data.form.treatment_adherence.in_the_past_month_have_you_failed_to_take_any_of_your_art_treatment =
    transform(state.data.form.treatment_adherence.in_the_past_month_have_you_failed_to_take_any_of_your_art_treatment)

    state.data.form.treatment_adherence.in_the_past_month_have_you_taken_any_of_your_art_treatment_at_times_other_t =
    transform(state.data.form.treatment_adherence.in_the_past_month_have_you_taken_any_of_your_art_treatment_at_times_other_t)

    state.data.form.treatment_adherence.in_the_past_month_have_you_taken_less_or_more_pills_of_any_of_your_art_trea =
    transform(state.data.form.treatment_adherence.in_the_past_month_have_you_taken_less_or_more_pills_of_any_of_your_art_trea)

    state.data.form['treatment_self-efficacy'].how_sure_are_you_that_you_will_be_taking_your_medication_as_are_directed = how_sure_are_you_that_you_will_be_taking_your_medication_as_are_directed =
    transform(state.data.form['treatment_self-efficacy'].how_sure_are_you_that_you_will_be_taking_your_medication_as_are_directed)

    state.data.form['treatment_self-efficacy'].how_sure_are_you_that_your_medication_will_have_a_positive_effect_on_your_h =
    transform(state.data.form['treatment_self-efficacy'].how_sure_are_you_that_your_medication_will_have_a_positive_effect_on_your_h)

    state.data.form['treatment_self-efficacy'].how_sure_are_you_that_your_medication_will_help_you_live_a_longer_and_healt =
    transform(state.data.form['treatment_self-efficacy'].how_sure_are_you_that_your_medication_will_help_you_live_a_longer_and_healt)

    state.data.form.clinical_knowledge.question16 =
    transform(state.data.form.clinical_knowledge.question16)

    state.data.form.clinical_knowledge.when_did_you_last_have_your_clinical_test =
    state.data.form.clinical_knowledge.when_did_you_last_have_your_clinical_test ? transform(state.data.form.clinical_knowledge.when_did_you_last_have_your_clinical_test)
    : transform(state.data.form.clinical_knowledge.when_did_you_last_go_for_these_two_clinical_tests);

    return state;
    });



    upsert(
    'ART_ADHERENCE_SELF_SELF_REPORTING_TOOL__c',
    'CommCare_Ext_ID__c',
    fields(
    field('CommCare_Ext_ID__c', dataValue('id')),
    field('Date__c', dataValue('form.demographic_information.date')),
    field('Sex__c', dataValue('form.gender')),
    field('Facility_Name__c', dataValue('form.school')),
    field('Patient_ID_or_Facility_File_Number__c', dataValue('form.skillz_lplus_number')),
    //field('Business_Unit__c', 'GRS Zambia'),
    field('Captured_By__c', dataValue('form.coach_name')),
    field('Verified_By__c', dataValue('form.coach_name')),
    field('Captured_Date__c', dataValue('form.demographic_information.date')),
    field('Verified_Date__c', dataValue('form.demographic_information.date')),
    field('Age__c', state => {
    const dob = dataValue('form.date_of_birth')(state);
    return state.helperFunctions.getAge(dob);
    }),
    field(
    'Treatment_Adherence_3__c',
    dataValue('form.treatment_adherence.in_the_past_month_have_you_taken_any_of_your_art_treatment_at_times_other_t')
    ),
    field(
    'Treatment_Adherence_2__c',
    dataValue('form.treatment_adherence.in_the_past_month_have_you_failed_to_take_any_of_your_art_treatment')
    ),
    field(
    'Treatment_Adherence_4__c',
    dataValue('form.treatment_adherence.in_the_past_month_have_you_taken_less_or_more_pills_of_any_of_your_art_trea')
    ),
    field(
    'Treatment_Adherence_5_a__c',
    dataValue('form.treatment_adherence.did_you_encounter_any_challenges_in_taking_your_medication_as_prescribed_in')
    ),


    field('Clinical_Knowledge_2__c', dataValue('form.clinical_knowledge.question16')),
    field(
    'Clinical_Knowledge_1__c',
    dataValue('form.clinical_knowledge.when_did_you_last_have_your_clinical_test')
    ),
    field(
    'Treatment_Self_Efficacy__c',
    dataValue('form.treatment_self-efficacy.how_sure_are_you_that_you_will_be_taking_your_medication_as_are_directed')
    ),
    field(
    'Treatment_Self_Efficacy_10__c',
    dataValue(
    'form.treatment_self-efficacy.how_sure_are_you_that_your_medication_will_have_a_positive_effect_on_your_h'
    )
    ),
    field(
    'Treatment_Self_Efficacy_11__c',
    dataValue(
    'form.treatment_self-efficacy.how_sure_are_you_that_your_medication_will_help_you_live_a_longer_and_healt'
    )
    ),
    field(
    'Behavioural_Factors_12__c',
    dataValue('form.behavioural.in_the_past_month_did_you_go_for_a_party_or_other_leisure_activities')
    ),
    field('Behavioural_Factors_13__c', dataValue('form.behavioural.in_the_past_month_did_you_sleep_away_from_home')),
    field(
    'Behavioural_Factors_14__c',
    dataValue('form.behavioural.are_you_taking_any_traditional_medicine_as_a_supplement_to_the_arvs')
    ),
    field(
    'Behavioural_Factors_14__c',
    dataValue('form.behavioural.are_you_taking_any_other_religious_treatment_ie_holy_water_anointing_oilwat')
    ),
    field(
    'Behavioural_Factors_15__c',
    dataValue('form.behavioural.if_yes_to_any_of_the_above_did_it_affect_your_taking_of_medication_treatmen')
    )
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30.html b/fr/adaptors/library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30.html index e64acde58ad..c7d8117cc5e 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30.html @@ -22,13 +22,13 @@ - +

    Upsert Aggregate Service Referrals

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, relationship, upsert

    Expression

    // Push to production
    upsert(
    'GRS_Referral_Agg__c',
    'CommCare_Ext_ID__c',
    fields(
    relationship(
    'SiteName__r',
    'CommCare_Ext_ID__c',
    dataValue('form.general_referral_information.event_information.site')
    ),
    field('CommCare_Ext_ID__c', dataValue('form.general_referral_information.event_information.site')),
    //TO DO
    //field('Business_Unit__c', dataValue('form.general_referral_information.event_information.business_unit')),
    field('Business_Unit__c', state => {
    const bu = dataValue('form.general_referral_information.event_information.business_unit')(state);
    return bu==='65680f0c4c144b03ad0f86bdc46c1ebc' ? 'GRS Zambia' :
    bu==='04d98397e28046118fade28ced6b65cb' ? 'GRS Zimbabwe' :
    bu==='ed125ab19ec34aacab79585e59eb76f4' ? 'GRS Partnerships': undefined ;
    }),
    relationship(
    //Attendance looks up to Event via the intervention_name
    'Events__r',
    'CommCare_Ext_ID__c',
    dataValue('form.general_referral_information.event_information.event_name')
    ),
    field('Type_of_Referral__c', dataValue('form.general_referral_information.type_of_referral')),
    field(
    'Enter_Partner_s_Name__c',
    dataValue('form.general_referral_information.partner_or_organization_referred_to')
    ),
    field('Males_Referred_HIV_Testing__c', dataValue('form.hivsti_services.males_referred_for_hiv_testing')),
    field('Males_referred_for_STI_Screening__c', dataValue('form.hivsti_services.males_referred_for_sti_screening')),
    field('Males_Referred_for_PEP__c', dataValue('form.hivsti_services.males_referred_for_pep')),
    field('Males_Referred_for_PrEP__c', dataValue('form.hivsti_services.males_referred_for_prep')),
    field('Males_Referred_for_VMMC__c', dataValue('form.hivsti_services.males_referred_for_vmmc')),
    field('Females_Referred_for_HIV_Testing__c', dataValue('form.hivsti_services.females_referred_for_hiv_testing')),
    field(
    'Females_Referred_for_STI_Screening__c',
    dataValue('form.hivsti_services.females_referred_for_sti_screening')
    ),
    field('Date_Referred__c', dataValue('form.general_referral_information.date_referred')),
    field('Females_Referred_for_PEP__c', dataValue('form.hivsti_services.females_referred_for_pep')),
    field('Females_Referred_for_PrEP__c', dataValue('form.hivsti_services.females_referred_for_prep')),
    field('Males_Referred_for_ART__c', dataValue('form.art_services.males_referred_for_art')),
    field('Males_Referred_for_SKILLZ_Club__c', dataValue('form.art_services.males_referred_for_skillz__club')),
    field('Females_Referred_for_ART__c', dataValue('form.art_services.females_referred_for_art')),
    field('Females_Referred_SKILLZ_Club__c', dataValue('form.art_services.females_referred_for_skillz__club')),
    field('Females_Referred_for_PMTCT__c', dataValue('form.art_services.females_referred_for_pmtct')),

    field(
    'Males_Referred_for_Psycho_Social_Support__c',
    dataValue('form.psycho_-_social_services.males_referred_for_psycho-social_support')
    ),
    field(
    'Females_Referred_Psycho_Social_Support__c',
    dataValue('form.psycho_-_social_services.females_referred_for_psycho-social_support')
    ),
    field('Males_Referred_for_TB_Screening__c', dataValue('form.tb_services.males_referred_for_tb_screening')),
    field('Females_Referred_for_TB_Screening__c', dataValue('form.tb_services.females_referred_for_rb_screening')),
    field(
    'Number_of_Male_Condoms_distributed__c',
    dataValue('form.condom_distributions.number_of_male_condoms_distributed')
    ),
    field('Number_of_Male_Condoms_Accessed__c', dataValue('form.condom_distributions.number_of_male_condoms_accessed')),
    field(
    'Number_of_Female_Condoms_distributed__c',
    dataValue('form.condom_distributions.number_of_female_condoms_distributed')
    ),
    field(
    'Number_of_Female_Condoms_Accessedx__c',
    dataValue('form.condom_distributions.number_of_female_condoms_accessed')
    ),
    field(
    'Females_Referred_for_Family_Planning__c',
    dataValue('form.other_srhr_services.females_referred_for_family_planning')
    ),
    field(
    'Females_Referred_for_Cervical_Cancer__c',
    dataValue('form.other_srhr_services.females_referred_for_cervical_cancer')
    ),
    field('Females_Referred_for_Antenatal__c', dataValue('form.other_srhr_services.females_referred_for_antenatal')),
    field(
    'Males_Referred_for_Malaria_Testing__c',
    dataValue('form.other_referral_services.males_referred_for_malaria_testing')
    ),
    field('Males_Referred_for_GBV__c', dataValue('form.other_referral_services.males_referred_for_gbv')),
    field(
    'Females_Referred_for_Malaria_Testing__c',
    dataValue('form.other_referral_services.females_referred_for_malaria_testing')
    ),
    field('Females_Referred_for_GBV__c', dataValue('form.other_referral_services.females_referred_for_gbv')),
    field(
    'Females_Referred_for_HPV_Vaccine__c',
    dataValue('form.other_referral_services.females_referred_for_hpv_vaccine')
    )
    )
    );
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24.html b/fr/adaptors/library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24.html index d175dca052f..f2791ce7366 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24.html @@ -22,13 +22,13 @@ - +

    Upsert Attendance Skillz Plus Club

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, each, field, fields, lastReferenceValue, map, query, relationship, upsert, Array

    Expression

    query(
    `SELECT Participant_Identification_Number_PID__c from Person__c where Participant_Identification_Number_PID__c = '${state.data.form.attendance_list.update_participant_cases.item[0]['@id']}'`
    );

    fn(state => {
    const PID = lastReferenceValue('records[0].Participant_Identification_Number_PID__c')(state);

    if (!PID) {
    console.log(
    `Participant not found with Participant_Identification_Number_PID__c: ${state.data.form.attendance_list.update_participant_cases.item[0]['@id']}`
    );
    return state;
    }
    return execute(
    // Set state.references to event record
    query(
    `SELECT Id, Name, CommCare_Ext_ID__c FROM Event__c WHERE CommCare_Case_ID__c = '${state.data.form.case['@case_id']}'`
    ),
    // Organise data and keep it safe
    fn(state => {
    function objectToArray(object) {
    if (!object) return [];
    return !Array.isArray(object) ? [object] : object;
    }

    const eventName = lastReferenceValue('records[0].CommCare_Ext_ID__c')(state);
    state.data.eventName = eventName;

    state.data.form.attendance_list.update_participant_cases.item = objectToArray(
    state.data.form.attendance_list.update_participant_cases.item
    );

    state.data.form.attendance_list.update_participant_cases.item =
    state.data.form.attendance_list.update_participant_cases.item.map(item => ({
    ...item,
    CommCare_Ext_ID__c: `${item['@id']}-${eventName}`,
    event_case_id: state.data.form.case['@case_id'],
    }));

    // Keep our data safe
    state.items = state.data.form.attendance_list.update_participant_cases.item;

    // Reset references
    state.references = [];

    return state;
    }),
    // Set state.references to an array of attendance records for each participant
    beta.each(
    '$.items[*]',
    query(
    state => `SELECT CommCare_Ext_ID__c, Session_1__c, Session_2__c, Session_3__c, Session_4__c, Session_5__c, Session_6__c, Session_7__c, Session_8__c, Session_9__c, Session_10__c, Session_11__c, Session_12__c, Session_13__c, Session_14__c, Session_15__c, Session_16__c, Session_17__c, Session_18__c, Session_19__c, Session_20__c, Session_21__c, Session_22__c, Session_23__c,Session_24__c, Session_25__c, Session_26__c, Session_27__c, Session_28__c
    FROM Attendance__c
    WHERE CommCare_Ext_ID__c = '${state.data.CommCare_Ext_ID__c}'
    `
    )
    ),
    // Calculate dynamic fields
    fn(state => {
    state.items = state.items.map(item => {
    const record = state.references.find(rec =>
    rec.records[0] ? rec.records[0].CommCare_Ext_ID__c === item.CommCare_Ext_ID__c : true
    ).records[0];

    function getSessionValue(present) {
    if (!present) return 'U';
    switch (present.toString().toLowerCase()) {
    case 'yes':
    return 'X';
    case 'no':
    return 'A';
    case '':
    return 'N';
    default:
    return 'U';
    }
    }

    function getSessionFieldName(record) {
    if (!record || Object.keys(record).length === 0) {
    return 'Session_1__c';
    }

    const fieldName = Object.entries(record)
    .filter(rec => rec[1] === null && rec[0] !== 'CommCare_Ext_ID__c')
    .sort(function (a, b) {
    return a[0].split('_')[1] - b[0].split('_')[1];
    })[0][0];

    return fieldName;
    }

    const sessionValue = getSessionValue(item.attendance_session);
    const sessionDate = item.date;
    const sessionFieldName = getSessionFieldName(record);
    const sessionDateFieldName = `Session_${sessionFieldName.split('_')[1]}_Date__c`;

    return {
    ...item,
    dynamicFields: {
    [sessionFieldName]: sessionValue,
    [sessionDateFieldName]: sessionDate,
    },
    };
    });

    // Reset state.references
    state.references = [];

    return state;
    }),

    // Upsert
    beta.each(
    '$.items[*]',
    upsert('Attendance__c', 'CommCare_Ext_ID__c', state => ({
    ...fields(
    field('CommCare_Ext_ID__c', dataValue('CommCare_Ext_ID__c')),
    relationship('Person_Attendance__r', 'Participant_Identification_Number_PID__c', dataValue('@id')),
    relationship('Event__r', 'CommCare_Case_ID__c', dataValue('event_case_id'))
    ),
    ...state.data.dynamicFields,
    }))
    )
    )(state);
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28.html b/fr/adaptors/library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28.html index 2ad5f159dff..1ff5095383b 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28.html @@ -22,13 +22,13 @@ - +

    Upsert Coach Support Visit (CSV)

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    alterState, dataValue, field, fields, join, map, relationship, upsert

    Expression

    //openfn.org source
    alterState(state => {
    function clean(str) {
    console.log('str', str);

    if (!str) return '';

    return str
    .split('_')
    .map(word => {
    let new_word = word.toString().toLowerCase();
    return new_word.slice(0, 1).toUpperCase() + new_word.slice(1);
    })
    .join(' ');
    }

    if (state.data.form['step_3_-_the_big_5'] !== undefined ){
    state.data.form['step_3_-_the_big_5'].faciliation = clean(state.data.form['step_3_-_the_big_5'].faciliation);
    }
    else{
    state.data.form.step_4_comments.for_each_practice_component_describe_what_the_coach_did_well_and_how_the_co.faciliation =
    clean(state.data.form.step_4_comments.for_each_practice_component_describe_what_the_coach_did_well_and_how_the_co.faciliation);
    }

    function transform(value) {
    if (!value) return;
    switch (value.toString().trim()) {
    case 'copy-1-of-excellent':
    return 'Excellent';
    case 'needs_improvement':
    return 'Needs Improvement';
    case 'meets_expectations':
    return 'Meets Expectations';
    case 'excellent':
    return 'Excellent';
    case 'unsatisfactory':
    return 'Unsatisfactory';
    case 'exceeds_expectations':
    return 'Exceeds Expectations';
    default:
    return value;
    }
    }

    state.data.form['step_3_-_the_big_5'].builds_personal_connections =
    transform(state.data.form['step_3_-_the_big_5'].builds_personal_connections)

    state.data.form['step_3_-_the_big_5'].cool_down =
    transform(state.data.form['step_3_-_the_big_5'].cool_down)

    state.data.form['step_3_-_the_big_5'].creates_safe_space =
    transform(state.data.form['step_3_-_the_big_5'].creates_safe_space)

    state.data.form['step_3_-_the_big_5'].faciliation =
    transform(state.data.form['step_3_-_the_big_5'].faciliation)

    state.data.form['step_3_-_the_big_5'].gives_praise =
    transform(state.data.form['step_3_-_the_big_5'].gives_praise)

    state.data.form['step_3_-_the_big_5'].praise =
    transform(state.data.form['step_3_-_the_big_5'].praise)

    state.data.form['step_3_-_the_big_5'].preparation =
    transform(state.data.form['step_3_-_the_big_5'].preparation)

    state.data.form['step_3_-_the_big_5'].shares_accurate_information_about_hivaids_sexual_reproductive_health_and_ri =
    transform(state.data.form['step_3_-_the_big_5'].shares_accurate_information_about_hivaids_sexual_reproductive_health_and_ri)

    state.data.form['step_3_-_the_big_5'].sparks_vital_conversations =
    transform(state.data.form['step_3_-_the_big_5'].sparks_vital_conversations)

    state.data.form['step_3_-_the_big_5'].time_management =
    transform(state.data.form['step_3_-_the_big_5'].time_management)

    state.data.form['step_3_-_the_big_5'].warm_up =
    transform(state.data.form['step_3_-_the_big_5'].warm_up)


    return state;
    });

    upsert(
    'Coach_Support_Visit__c',
    'CommCare_Ext_ID__c',
    fields(
    field('CommCare_Ext_ID__c', dataValue('id')),
    relationship('Coach_Person__r', 'CommCare_Ext_ID__c', state => {
    return dataValue('form.step_1_basic_information.select_coach')(state) ||
    dataValue('form.step_1_csv_information.select_coach')(state);
    }),
    relationship('Venue__r', 'CommCare_Ext_ID__c', state => {
    return dataValue('form.hidden_properties.venue')(state) ||
    dataValue('form.step_1_csv_information.venue')(state);
    }),
    relationship('Event__r', 'CommCare_Ext_ID__c', state => {
    return dataValue('form.hidden_properties.intervention')(state) ||
    dataValue('form.step_1_csv_information.intervention')(state);
    }),
    relationship('Curriculum_Aggregate__r', 'CommCare_Ext_ID__c', state => {
    return dataValue('form.hidden_properties.curriculum')(state) ||
    dataValue('form.step_1_csv_information.curriculum')(state);
    }),
    relationship('Site_Lookup__r', 'CommCare_Ext_ID__c', state => {
    return dataValue('form.hidden_properties.site')(state) ||
    dataValue('form.step_1_csv_information.site')(state);
    }),
    field('Date__c', dataValue('form.step_2_practice_information.date_of_csv')),
    //== TODO: FIx repeated mappings to only reference destination field 1 time ===//
    field(
    'Accurate_Information__c', state => {
    return dataValue('form.step_3_-_the_big_5.shares_accurate_information_about_hivaids_sexual_reproductive_health_and_ri')(state) ||
    dataValue(
    'form.step_3_the_big_five.question1.shares_accurate_information_about_hivaids_sexual_reproductive_health_and_ri'
    )(state);
    }),
    field('Creates_safe_space__c', state => {
    return dataValue('form.step_3_-_the_big_5.creates_safe_space')(state) ||
    dataValue('form.step_3_the_big_five.question1.creates_safe_space')(state);

    }),
    field('Builds_personal_connections__c', state => {
    return dataValue('form.step_3_-_the_big_5.builds_personal_connections')(state) ||
    dataValue('form.step_3_the_big_five.question1.builds_personal_connections')(state);
    }),
    field('Gives_praise__c', state => {
    return dataValue('form.step_3_-_the_big_5.gives_praise')(state) ||
    dataValue('form.step_3_the_big_five.question1.gives_powerful_praise')(state);
    }),
    field('Sparks_vital_conversations__c', state => {
    return dataValue('form.step_3_-_the_big_5.sparks_vital_conversations')(state) ||
    dataValue('form.step_3_the_big_five.question1.sparks_vital_conversations')(state);
    }),
    field('X2_Warm_Up__c', state => {
    return dataValue('form.step_3_-_the_big_5.warm_up')(state) ||
    dataValue(
    'form.step_4_comments.for_each_practice_component_describe_what_the_coach_did_well_and_how_the_co.warm_up'
    )(state);
    }),
    field('X3_Activity__c', state => {
    return dataValue('form.step_3_-_the_big_5.activity')(state) || dataValue(
    'form.step_4_comments.for_each_practice_component_describe_what_the_coach_did_well_and_how_the_co.activity'
    )(state);
    }),
    field('X4_Cool_Down__c', state => {
    return dataValue('form.step_3_-_the_big_5.cool_down')(state) || dataValue(
    'form.step_4_comments.for_each_practice_component_describe_what_the_coach_did_well_and_how_the_co.cool_down'
    )(state);
    }),
    field('X5_Facilitation__c', state => {
    return dataValue('form.step_3_-_the_big_5.faciliation')(state) ||
    dataValue(
    'form.step_4_comments.for_each_practice_component_describe_what_the_coach_did_well_and_how_the_co.faciliation'
    )(state);
    }),
    field(
    'X6_Time_Management__c',
    dataValue('form.step_3_-_the_big_5.time_management')
    ),
    field(
    'X1_Preparation__c',
    dataValue('form.step_3_-_the_big_5.preparation')
    ),
    field('Introduces_micromove__c', state => {
    return //dataValue('form.step_3_-_the_big_5.faciliation')(state) ||
    dataValue(
    'form.step_4_comments.for_each_practice_component_describe_what_the_coach_did_well_and_how_the_co.micromove'
    )(state);
    }),
    field(
    'Notes__c',
    dataValue(
    'form.step_3_-_the_big_5.additional_notes.include_your_obsevations_related_to_preparation_punctuality_process'
    )
    )
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14.html b/fr/adaptors/library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14.html index 9a5b1ab3a0d..521bf102f54 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14.html @@ -22,13 +22,13 @@ - +

    Upsert Confirm Services Received

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    alterState, dataValue, field, fields, upsert

    Expression

    // Your job goes here.
    alterState(state => {
    state.data.external_commcare_id = (
    dataValue('form.hidden_properties.intervention_name')(state) +
    dataValue('form.hidden_properties.participant_first_name')(state) +
    dataValue('form.hidden_properties.participant_surname')(state)
    )
    .toString()
    .toLowerCase()
    .replace(/\s/g, '')
    .trim();

    return state;
    });

    upsert(
    'NewReferral__c',
    'CommCare_Ext_ID__c',
    fields(
    field('Business_Unit_Site__c', state => {
    const bu = dataValue('form.business_unit')(state);
    return bu === 'X' ? 'GRS Zambia' : bu;
    }),
    field('CommCare_Ext_ID__c', dataValue('form.case.@case_id')),
    field('HIV_Testing_Services_Service_Provider__c', state =>
    Boolean(
    dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option1')(state)
    )
    ),
    field('TB_Screening_Service_Provider__c', state =>
    Boolean(
    dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option2')(state)
    )
    ),
    field('VMMC_Service_Provider__c', state =>
    Boolean(
    dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option3')(state)
    )
    ),
    field('Post_Exposure_Prophylaxis_Service_Provid__c', state =>
    Boolean(
    dataValue(
    'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option4'
    )(state)
    )
    ),
    field('PrEP_Service_Provider__c', state =>
    Boolean(
    dataValue(
    'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option5'
    )(state)
    )
    ),
    field('HIV_STI_PREVENTION_Other_Service_Provid__c', state =>
    Boolean(
    dataValue(
    'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option6'
    )(state)
    )
    ),
    field('ART_Initiation_Service_Provider__c', state =>
    Boolean(
    dataValue('form.referral_services.art_support_services.art_services_group.art_services_option1')(
    state
    )
    )
    ),
    field('SKILLZ_Plus_Club_Support_Service_Provid__c', state =>
    Boolean(
    dataValue('form.referral_services.art_support_services.art_services_group.art_services_option2')(
    state
    )
    )
    ),

    field(
    'PMTCT_Service_Provider__c',
    state =>
    Boolean(
    dataValue('form.referral_services.art_support_services.art_services_group.art_services_option3')(
    state
    )
    )
    ),
    field('IPTG_Health_Facility__c', state =>
    Boolean(
    dataValue('form.referral_services.mental_health_services.confirmation_of_services_provided_label.mental_health_select_services_option1')(
    state
    )
    )
    ),
    field('IPTG_Specialized_to_SMZ__c', state =>
    Boolean(
    dataValue('form.referral_services.mental_health_services.confirmation_of_services_provided_label.mental_health_select_services_option2')(
    state
    )
    )
    ),

    field('ART_Services_Other_Service_Provider__c', state =>
    Boolean(
    dataValue('form.referral_services.art_support_services.referred_art_support_services')(state)
    )
    ),
    field(
    'Victim_Friendly_Services_Service_Provide__c',
    state =>
    Boolean(
    dataValue(
    'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option1'
    )(state)
    ) ||
    Boolean(
    dataValue(
    'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option2'
    )(state)
    ) ||
    Boolean(
    dataValue(
    'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option3'
    )(state)
    )
    ),
    field('Legal_Services_Other_Service_Provider__c', state =>
    Boolean(
    dataValue(
    'form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option3'
    )(state)
    )
    ),

    field('STI_Screen_Testing_Service_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option1')(state))
    ),

    field('Contraception_Family_Plan_Servi_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option2')(state))
    ),
    field('Cervical_Cancer_Screen_Servi_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option3')(state))
    ),
    field('HPV_vaccine_Service_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option4')(state))
    ),
    field('Antenatal_Care_ANC_Service_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option5')(state))
    ),
    field('Sexual_and_GBV_Abuse_Servi_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option6')(state))
    ),
    field(
    'Psycho_Social_Support_Service_Provider__c',
    state =>
    Boolean(
    dataValue(
    'form.referral_services.other_srhr_services.service_label.srhr_option9'
    )(state)
    ) ||
    Boolean(
    dataValue(
    'form.referral_services.other_srhr_services.service_label.srhr_option8'
    )(state)
    ) ||
    Boolean(
    dataValue(
    'form.referral_services.other_srhr_services.service_label.srhr_option7'
    )(state)
    )
    ),
    field('Psycho_Social_Services_Other_Service_Pro__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option10')(state))
    ),
    field(
    'Legal_Services_Other_Service_Provider__c',
    state =>
    Boolean(
    dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_referral_services')(state)
    ) ||
    Boolean(
    dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option1')(state)
    ) ||
    Boolean(
    dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option2')(state)
    )
    ),

    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03.html b/fr/adaptors/library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03.html index b12f4fcf305..f17f9f586fb 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03.html @@ -22,13 +22,13 @@ - +

    Upsert Home Visit Log Form

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, lastReferenceValue, query, relationship, upsert

    Expression

    // push to production

    query(
    `SELECT Participant_Identification_Number_PID__c from Person__c where Participant_Identification_Number_PID__c = '${state.data.form.case['@case_id']}'`
    );

    fn(state => {
    const PID = lastReferenceValue('records[0].Participant_Identification_Number_PID__c')(state);
    if (!PID) {
    console.log(
    `Participant not found with Participant_Identification_Number_PID__c: ${state.data.form.case['@case_id']}`
    );
    return state;
    }

    return execute(
    fn(state => {
    const { form } = state.data;
    const { basic_information } = form;
    if (basic_information.intervention_hidden) {
    return query(
    `SELECT Id, Event__c, CreatedDate, Person_Attendance__c
    FROM Attendance__c
    WHERE Person_Attendance__r.Participant_Identification_Number_PID__c = '${form.case['@case_id']}'
    ORDER BY CreatedDate DESC LIMIT 1`
    )(state).then(state => {
    const { records } = state.references[0];
    const eventId = records[0].Event__c;
    state.data.eventField = [field('Event__c', eventId)];
    return state;
    });
    // state.data.eventField = [
    // relationship('Event__r', 'CommCare_Ext_ID__c', dataValue('form.basic_information.intervention_hidden')(state)),
    // ];
    // return state;
    } else {
    return query(
    `SELECT Id, Event__c, CreatedDate, Person_Attendance__c
    FROM Attendance__c
    WHERE Person_Attendance__r.Participant_Identification_Number_PID__c = '${form.case['@case_id']}'
    ORDER BY CreatedDate DESC LIMIT 1`
    )(state).then(state => {
    const { records } = state.references[0];
    const eventId = records[0].Event__c;
    state.data.eventField = [field('Event__c', eventId)];
    return state;
    });
    }
    }),

    upsert('Home_Visit__c', 'CommCare_Ext_ID__c', state => ({
    ...fields(
    field('CommCare_Ext_ID__c', dataValue('id')),
    // relationship('Event__r', 'CommCare_Ext_ID__c', dataValue('form.basic_information.intervention_hidden')),
    relationship('Person_visiting__r', 'Participant_Identification_Number_PID__c', dataValue('form.case.@case_id')),
    //=== NOTE: We do not need to map People information because Home Visit is related to Person. ======//
    //This info already lives on the Person-level.
    // field('First_Name__c', dataValue('form.basic_information.participant_first_name')),
    // field('Surname__c', dataValue('form.basic_information.participant_surname')),
    // field('Sex__c', dataValue('form.basic_information.gender')),
    // field('Date_of_Birth__c', dataValue('form.basic_information.date_of_birth')),
    // field('Physical Address Community City', dataValue('form.basic_information.participant_address')),
    //================
    field('Consent_Given__c', dataValue('form.basic_information.consent_received')),
    //field('Consent_Given__c', dataValue('form.participant_infomation.visit_information.consent_given')) //Repeated mapping
    //field('From_Venue__c', dataValue('form.basic_information.venue_hidden')),
    field('Reason_for_Home_Visit__c', dataValue('form.participant_infomation.reason_for_home_visit')),
    field('Visit_Date__c', dataValue('form.participant_infomation.visit_information.visit_date')),
    field('Additional_Comments__c', dataValue('form.administrative.visit_notes'))
    ),
    ...fields(...state.data.eventField),
    }))
    )(state);
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Intervention-Notes-2021-04-28.html b/fr/adaptors/library/jobs/auto/Upsert-Intervention-Notes-2021-04-28.html index b0af9b1bbb9..c124568a8aa 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Intervention-Notes-2021-04-28.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Intervention-Notes-2021-04-28.html @@ -22,13 +22,13 @@ - +

    Upsert Intervention Notes

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, relationship, upsert

    Expression

    //openfn.org source 
    upsert(
    'Event__c',
    'CommCare_Case_ID__c',
    fields(
    field('CommCare_Case_ID__c', dataValue('form.case.@case_id')),
    //field('Name', dataValue('form.intervention_name')),
    field('Notes__c', dataValue('form.intervention_notes_to_save')),
    relationship('RecordType', 'Name', 'Intervention')
    )
    );
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Post-Challenges-2021-04-30.html b/fr/adaptors/library/jobs/auto/Upsert-Post-Challenges-2021-04-30.html index 4985824a4cb..3ed7bdab46c 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Post-Challenges-2021-04-30.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Post-Challenges-2021-04-30.html @@ -22,13 +22,13 @@ - +

    Upsert Post Challenges

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, lastReferenceValue, query, relationship, upsert

    Expression

    fn(state => {
    function transform(value) {
    if (!value) return;
    switch (value.toString().trim().toLowerCase()) {
    case 'true':
    case 'yes':
    case 'agree':
    case 'concordo':
    case 'verdade':
    case 'copy-1-of-yes':
    return 1;
    case 'false':
    case 'no':
    case 'disagree':
    case 'discordo':
    case 'falso':
    case 'copy-1-of-no':
    return 2;
    case 'i_dont_know':
    return 3;
    case 'unanswered':
    case `not_sexually_active`:
    return 4;
    case 'not_applicable':
    return 5;
    default:
    return value;
    }
    }

    state.helperFunctions = { transform };

    return query(
    `SELECT Participant_Identification_Number_PID__c from Person__c where Participant_Identification_Number_PID__c = '${state.data.form.case['@case_id']}'`
    )(state);
    });

    fn(state => {
    const { form } = state.data;

    const formVersion = Object.keys(form).find(key => key.includes('challenge'));
    if (formVersion == 'post_challenge_ecap_-_post_-_season_survey_for_athletes') {
    console.log('Skipping upsert for ECAP data');
    return { ...state, formVersion };
    }
    console.log('form version', formVersion);

    const sfFieldMapping = {
    'portuguese_pre_challenge_gcr_-_skillz_malaria': {
    Post_1__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_malaria.dormir_dentro_da_rede_mosquiteira_tratada_todas_as_noites_pode_proteger_me_',
    Post_2__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_malaria.posso_esperar_uns_dias_antes_de_fazer_o_teste_de_malria_se_tiver_febres',
    Post_3__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_malaria.um_mdico_tradicionalcurandeiro_pode_me_dar_um_tratamento_para_curar_a_malri',
    Post_4__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_malaria.se_tiver_malria_e_no_for_tratado_posso_transmitir_a_malria_a_algum',
    Post_5__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_malaria.somente_as_mulheres_grvidas_e_as_crianas_menores_de_5_anos__que_precisam_de',
    Post_6__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.a_malria_pode_matar_se_no_fr_tratada',
    Post_7__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.a_febre__um_sintoma_da_malria',
    Post_8__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.eu_me_sinto_bem_conmigo_mesmo',
    Post_9__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_malaria.tenho_algum_na_minha_vida_que_pode_me_dar_bons_conselhos_quando_preciso_de_',
    Post_10__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_malaria.eu_sei_onde_posso_ter_tratamento_para_malria_na_minha_comunidade',
    Post_11__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.posso_proteger-me_da_malria',
    },

    'post_challenge_south_africa_-_skillz_girl': {
    Post_1__c:
    'form.post_challenge_south_africa_-_skillz_girl.i_have_an_older_person_in_my_life_i_can_go_to_for_advice_i_have_an_older_pe',
    Post_2__c:
    'form.post_challenge_south_africa_-_skillz_girl.i_know_how_to_make_a_plan_to_deal_with_the_challenges_i_may_face_in_reachin',
    Post_3__c:
    'form.post_challenge_south_africa_-_skillz_girl.i_can_identify_my_strengths_or_things_that_i_am_good_at_in_life',
    Post_4__c: 'form.post_challenge_south_africa_-_skillz_girl.every_day_i_can_find_something_to_be_grateful_for',
    Post_5__c:
    'form.post_challenge_south_africa_-_skillz_girl.having_more_than_one_sexual_partner_increases_my_risk_of_getting_hiv',
    Post_6__c:
    'form.post_challenge_south_africa_-_skillz_girl.i_can_say_no_to_sex_even_if_my_partner_or_friends_pressure_me_to_have_sex',
    Post_7__c:
    'form.post_challenge_south_africa_-_skillz_girl.girls_have_a_greater_risk_of_contracting_hiv_than_boys',
    Post_8__c:
    'form.post_challenge_south_africa_-_skillz_girl.if_i_am_sexually_active_i_go_to_a_clinic_to_get_protection_from_hivstis_and',
    Post_9__c: 'form.post_challenge_south_africa_-_skillz_girl.like_physical_health_we_all_have_mental_health',
    Post_10__c:
    'form.post_challenge_south_africa_-_skillz_girl.i_know_where_to_go_for_support_if_i_or_someone_i_know_drinks_too_much_alcoh',
    Post_11__c:
    'form.post_challenge_south_africa_-_skillz_girl.it_is_the_males_responsibility_to_make_decisions_in_a_relationship',
    Post_12__c:
    'form.post_challenge_south_africa_-_skillz_girl.if_a_girl_is_sexually_abused_she_can_reduce_her_risk_of_getting_hiv_by_goin',
    Post_13__c:
    'form.post_challenge_south_africa_-_skillz_girl.sometimes_a_man_may_have_a_good_reason_to_hit_his_partner',
    Post_14__c:
    'form.post_challenge_south_africa_-_skillz_girl.i_know_where_to_get_contraception_to_prevent_unwanted_pregnancy',
    Post_15__c:
    'form.post_challenge_south_africa_-_skillz_girl.drinking_too_much_alcohol_can_have_serious_negative_consequences_for_mental',
    Post_16__c:
    'form.post_challenge_south_africa_-_skillz_girl.if_sexually_active_i_or_my_partner_is_using_a_prevention_method_to_protect_',
    Post_17__c:
    'form.post_challenge_south_africa_-_skillz_girl.i_know_where_to_go_to_receive_counselling_for_mental_health_challenges',
    Post_18__c:
    'form.post_challenge_south_africa_-_skillz_girl.loss_of_interest_in_funenjoyable_activities_is_a_common_sign_of_depression',
    Post_19__c:
    'form.post_challenge_south_africa_-_skillz_girl.i_know_at_least_three_methods_to_prevent_an_unwanted_pregnancy',
    },
    'portuguese_post_challenge_gcr_-_skillz_girl': {
    Post_1__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.falei_sobre_o_hiv_com_uma_pessoa_adulta_nos_ltimos_2_meses_fora_do_skillz',
    Post_2__c: 'form.portuguese_post_challenge_gcr_-_skillz_girl.sei_como_expressar_a_minha_raiva_sem_ser_violento',
    Post_3__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.sei_como_superar_os_desafios_que_possa_enfrentar_na_minha_vida',
    Post_4__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.sei_quais_as_decises_a_tomar_para_alcanar_os_meus_objectivos',
    Post_5__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.os_rapazes_correm_um_risco_mais_elevado_de_serem_vtimas_de_violncia_do_que_',
    Post_6__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.conheco_que_mudanas_ocorrem_no_meu_corpo_durante_a_puberdade',
    Post_7__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.conheo_pelo_menos_trs_mtodos_para_evitar_uma_gravidez_indesejada',
    Post_8__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.os_preservativos_so_o_nico_mtodo_contraceptivo_que_protege_contra_a_gravide',
    Post_9__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.conheco_onde_obter_servios_de_apoio_para_mim_ou_outra_pessoa_para_casos_de_',
    Post_10__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.se_uma_rapariga_inicia_seu_perodo_menstrual_significa_que_est_pronta_para_c',
    Post_11__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.caso_eu_seja_abusada_sexualmente_prefiro_guard-lo_para_mim_para_evitar_que_',
    Post_12__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.um_homem_tem_o_direito_de_ter_sexo_com_a_sua_namorada_mesmo_que_ela_no_o_qu',
    Post_13__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.pessoas_com_problemas_de_sade_mental_so_apenas_confusas_ou_loucas',
    Post_14__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.pessoas_com_problemas_de_sade_mental_so_apenas_confusas_ou_loucas',
    Post_15__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.informaria_a_algum_caso_fosse_tocada_por_alguem_de_uma_forma_que_me_deixass',
    Post_16__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.uma_filha_deve_sempre_respeitar_a_deciso_dos_seus_pais_para_se_casar',
    Post_17__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.um_casamento_bem_sucedido__mais_importante_para_as_raparigas_do_que_termina',
    Post_18__c: 'form.portuguese_post_challenge_gcr_-_skillz_girl.eu_no_praticaria_desporto_com_algum_que_tem_hiv',
    Post_19__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.um_namorado_pode_ter_boas_razes_para_bater_na_sua_namorada',
    Post_20__c:
    'form.portuguese_post_challenge_gcr_-_skillz_girl.no_faz_mal_que_um_rapaz_ameace_bater_na_sua_namorada_se_nunca_a_bater_fisic',
    },
    'post_challenge_zambia_-_plus_mh_enhanced_zambia': {
    Post_1__c: 'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.in_general_i_feel_good_about_myself',
    Post_2__c:
    'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.i_have_the_skills_and_knowledge_to_avoid_getting_infected_with_another_kind',
    Post_3__c:
    'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.it_is_important_to_know_why_and_how_i_want_to_tell_someone_my_hiv_status',
    Post_4__c: 'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.i_accept_myself_and_my_hiv_status',
    Post_5__c:
    'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.i_can_make_my_own_informed_decisions_about_my_sexual_healthcare',
    Post_6__c:
    'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.are_you_or_have_you_been_past_12_months_in_a_sexual_relationship_na_if_not_',
    Post_7__c:
    'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.are_you_or_your_boyfriendgirlfriend_currently_using_any_contraceptive_or_pr',
    Post_8__c:
    'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.i_have_an_older_person_in_my_life_i_can_go_to_for_advice',
    Post_9__c:
    'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.there_are_people_i_trust_with_whom_i_can_talk_about_my_status',
    Post_10__c:
    'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.it_is_okay_for_two_people_with_hiv_to_have_unprotected_sex_with_each_other',
    Post_11__c:
    'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.it_is_okay_for_someone_with_hiv_to_stop_taking_their_arv_as_soon_as_they_st',
    Post_12__c:
    'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.when_i_have_a_choice_it_is_important_to_eat_a_variety_of_foods_including_gr',
    Post_13__c:
    'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.mental_health_problems_have_nothing_to_do_with_being_lazy_or_weak_and_many_',
    Post_14__c:
    'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.art_adherence_is_an_important_part_of_my_overall_health_and_well-being',
    Post_15__c:
    'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.the_most_common_illnesses_of_mental_health_are_depression_and_anxiety',
    Post_16__c:
    'form.post_challenge_zambia_-_plus_mh_enhanced_zambia.biological_and_social_factors_contribute_to_females_and_males_experiencing_',
    },
    'post_challenge_nigeria_-_advanced_skills': {
    Post_1__c:
    'form.post_challenge_nigeria_-_advanced_skills.i_have_talked_about_hiv_with_an_adult_in_the_past_two_months_outside_skillz',
    Post_2__c:
    'form.post_challenge_nigeria_-_advanced_skills.i_have_talked_about_malaria_with_an_adult_in_the_past_two_months_outside_sk',
    Post_3__c:
    'form.post_challenge_nigeria_-_advanced_skills.unequal_power_in_relationships_can_contribute_to_the_spread_of_hiv',
    Post_4__c:
    'form.post_challenge_nigeria_-_advanced_skills.the_most_effective_way_to_avoid_getting_hiv_is_to_abstain_from_sex',
    Post_5__c: 'form.post_challenge_nigeria_-_advanced_skills.malaria_is_spread_by_standing_under_the_hot_sun',
    Post_6__c: 'form.post_challenge_nigeria_-_advanced_skills.drinking_alcohol_can_increase_my_risk_of_getting_hiv',
    Post_7__c:
    'form.post_challenge_nigeria_-_advanced_skills.sleeping_under_a_mosquito_net_every_night_can_help_protect_me_from_malaria',
    Post_8__c:
    'form.post_challenge_nigeria_-_advanced_skills.having_more_than_one_sexual_partner_over_the_same_time_period_increases_my_',
    Post_9__c:
    'form.post_challenge_nigeria_-_advanced_skills.it_is_okay_for_someone_with_malaria_to_stop_taking_their_medication_as_soon',
    Post_10__c:
    'form.post_challenge_nigeria_-_advanced_skills.i_can_abstain_from_sex_until_i_am_older_even_if_it_is_difficult',
    Post_11__c:
    'form.post_challenge_nigeria_-_advanced_skills.i_would_say_no_to_playing_sport_with_someone_who_has_hiv',
    Post_12__c:
    'form.post_challenge_nigeria_-_advanced_skills.men_should_share_the_work_around_the_house_such_as_cleaning',
    Post_13__c:
    'form.post_challenge_nigeria_-_advanced_skills.it_is_the_males_responsibilty_to_make_decisions_in_a_relationship',
    Post_14__c:
    'form.post_challenge_nigeria_-_advanced_skills.i_can_use_drugs_and_still_easily_reach_my_goals_in_life',
    Post_15__c:
    'form.post_challenge_nigeria_-_advanced_skills.when_sick_it_is_better_to_visit_the_herb_seller_than_to_visit_a_doctor_or_a',
    Post_16__c:
    'form.post_challenge_nigeria_-_advanced_skills.it_is_okay_to_use_violence_with_my_partner_if_he_or_she_makes_me_angry',
    Post_17__c:
    'form.post_challenge_nigeria_-_advanced_skills.i_have_the_power_to_change_gender_expectations_that_i_do_not_agree_with',
    },
    'post_challenge_zimbabwe_-_skillz_core_zimbabwe': {
    Post_1__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_know_what_decisions_to_make_to_achieve_my_goals',
    Post_2__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_dont_always_have_to_do_what_people_expect_just_because_i_am_a_girlboy',
    Post_3__c: 'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_what_i_am_good_at',
    Post_4__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_can_make_my_own_decisions_no_matter_how_much_pressure_i_get_from_others',
    Post_5__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_have_the_right_to_say_no_to_sex_no_matter_who_asks_me',
    Post_6__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_can_make_my_own_informed_decisions_about_my_sexual_healthcare',
    Post_7__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_have_the_right_to_access_sexual_health_services_such_as_sti_and_hiv_testi',
    Post_8__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.it_is_the_mans_responsibility_to_make_decisions_in_a_relationship',
    Post_9__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.a_man_has_the_right_to_have_sex_with_his_girlfriend_even_if_she_doesnt_want',
    Post_10__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.girls_should_be_obedient_and_should_not_disagree_with_boys',
    Post_11__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.if_a_girl_gets_pregnant_she_should_drop_out_of_school',
    Post_12__c: 'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.my_skillz_coach_helps_me_to_be_a_better_person',
    Post_13__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_have_someone_in_my_life_i_can_turn_to_when_i_need_advice_or_when_i_have_a',
    Post_14__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.if_i_test_positive_for_hiv_there_will_be_someone_who_will_help_and_support_',
    Post_15__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_who_to_go_to_if_i_amsomeone_i_know_is_abused_sexually_physically_and',
    Post_16__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_who_to_go_to_if_someone_touches_me_in_a_way_that_makes_me_uncomforta',
    Post_17__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_where_to_get_support_services_for_me_or_someone_else_for_hiv-related',
    Post_18__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_would_say_no_to_playing_sport_with_someone_who_has_hiv',
    Post_19__c:
    'form.post_challenge_zimbabwe_-_skillz_core_zimbabwe.i_can_tell_whether_someone_has_hiv_by_looking_at_him_or_her',
    },
    'copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe': {
    Post_1__c:
    'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.copy-1-of-i_know_what_decisions_to_make_to_achieve_my_goals',
    Post_2__c:
    'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.i_dont_always_have_to_do_what_people_expect_just_because_i_am_girlboy',
    Post_3__c:
    'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.copy-1-of-i_have_the_right_to_say_no_to_sex_no_matter_who_asks_me',
    Post_4__c:
    'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.i_can_make_my_own_informed_decisions_about_my_sexual_health',
    Post_5__c:
    'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.it_is_the_mans_responsibility_to_make_decisions_in_a_relationship',
    Post_6__c:
    'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.a_man_has_the_right_to_have_sex_with_his_girlfriend_even_if_she_doesnt_want',
    Post_7__c:
    'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.my_skillz_coach_helps_me_to_be_a_better_person',
    Post_8__c:
    'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.i_have_someone_in_my_life_i_can_turn_to_when_i_need_advise_or_when_i_have_a',
    Post_9__c:
    'form.copy-1-of-post_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.copy-1-of-i_know_where_to_get_support_services_for_me_or_someone_else_for_hiv-related',
    },
    };

    const pluckSfValue = val => {
    // if sfFieldMapping[formVersion][val] == undefined
    return sfFieldMapping[formVersion][val];
    };

    return { ...state, formVersion, pluckSfValue };
    });

    fn(state => {
    if (state.formVersion == 'post_challenge_ecap_-_post_-_season_survey_for_athletes') {
    return state;
    }
    const PID = lastReferenceValue('records[0].Participant_Identification_Number_PID__c')(state);

    if (!PID) {
    console.log(
    `Participant not found with Participant_Identification_Number_PID__c: ${state.data.form.case['@case_id']}`
    );
    return state;
    }

    function replaceAccents(input) {
    return input
    .replace(/á|â|ã|à/, 'a')
    .replace(/Á|Â|Ã|À/, 'A')
    .replace(/ç/, 'c')
    .replace(/é|ê/, 'e')
    .replace(/É|Ê/, 'E')
    .replace(/í/, 'i')
    .replace(/Í/, 'I')
    .replace(/ó|ô|õ/, 'o')
    .replace(/Ó|Ô|Õ/, 'O')
    .replace(/ú/, 'u')
    .replace(/Ú/, 'u');
    }

    return upsert(
    'Attendance__c',
    'CommCare_Ext_ID__c',
    fields(
    //field('Event__c', dataValue('form.hidden_properties.intervention_name')),

    field('CommCare_Ext_ID__c', state => {
    const value =
    dataValue('form.case.@case_id')(state) +
    '-' +
    replaceAccents(dataValue('form.hidden_properties.intervention_name')(state)).replace(/\//gi, '');
    return scrubEmojis(value, '');
    }),

    //relationship('Event__r', 'CommCare_Ext_ID__c', dataValue('form.hidden_properties.intervention_name')),
    relationship('Person_Attendance__r', 'Participant_Identification_Number_PID__c', dataValue('form.case.@case_id')),
    field('Pre_Post_Completed__c', state => {
    var done = dataValue('form.hidden_properties.post_questionnaire_complete')(state);
    return done === 'Yes' ? true : done === 'No' ? false : undefined;
    }),
    field('Date_Post_Administered__c', dataValue('form.hidden_properties.date')),
    field('Post_1__c', state => {
    const value = dataValue(state.pluckSfValue('Post_1__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_2__c', state => {
    if (state.pluckSfValue('Post_2__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Post_2__c'))(state);
    return state.helperFunctions.transform(value);
    }),

    field('Post_3__c', state => {
    const value = dataValue(state.pluckSfValue('Post_3__c'))(state);
    return state.helperFunctions.transform(value);
    }),

    field('Post_4__c', state => {
    const value = dataValue(state.pluckSfValue('Post_4__c'))(state);
    return state.helperFunctions.transform(value);
    }),

    field('Post_5__c', state => {
    const value = dataValue(state.pluckSfValue('Post_5__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_6__c', state => {
    const value = dataValue(state.pluckSfValue('Post_6__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_7__c', state => {
    const value = dataValue(state.pluckSfValue('Post_7__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_8__c', state => {
    const value = dataValue(state.pluckSfValue('Post_8__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_9__c', state => {
    const value = dataValue(state.pluckSfValue('Post_9__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_10__c', state => {
    if (state.pluckSfValue('Post_10__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Post_10__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_11__c', state => {
    if (state.pluckSfValue('Post_11__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Post_10__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_12__c', state => {
    if (state.pluckSfValue('Post_12__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Post_12__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_13__c', state => {
    if (state.pluckSfValue('Post_13__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Post_13__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_14__c', state => {
    if (state.pluckSfValue('Post_14__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Post_14__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_15__c', state => {
    if (state.pluckSfValue('Post_15__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Post_15__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_16__c', state => {
    if (state.pluckSfValue('Post_16__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Post_16__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_17__c', state => {
    if (state.pluckSfValue('Post_17__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Post_17__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_18__c', state => {
    if (state.pluckSfValue('Post_18__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Post_18__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_19__c', state => {
    if (state.pluckSfValue('Post_19__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Post_19__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Post_20__c', state => {
    if (state.pluckSfValue('Post_20__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Post_20__c'))(state);
    return state.helperFunctions.transform(value);
    })
    )
    )(state);
    });

    //Removing mapping... need case_id to upsert Events. Date_of_Post__c update should be handled on the SF side.
    /*upsert(
    'Event__c',
    'CommCare_Ext_ID__c',
    fields(
    field('CommCare_Ext_ID__c', dataValue('form.hidden_properties.intervention_name')),
    field('Date_of_Post__c', dataValue('form.date')),
    )
    );*/

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Pre-Challenges-2021-04-30.html b/fr/adaptors/library/jobs/auto/Upsert-Pre-Challenges-2021-04-30.html index 8a66c3758a2..1206be3a06e 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Pre-Challenges-2021-04-30.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Pre-Challenges-2021-04-30.html @@ -22,13 +22,13 @@ - +

    Upsert Pre Challenges

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, lastReferenceValue, query, relationship, upsert

    Expression

    fn(state => {
    function transform(value) {
    if (!value) return;
    //console.log("value in switch", value.toString().trim().toLowerCase());
    switch (value.toString().trim().toLowerCase()) {
    case 'true':
    case 'yes':
    case 'agree':
    case 'verdade':
    case 'concorda':
    case 'concordo':
    return 1;
    case 'false':
    case 'no':
    case 'disagree':
    case 'discorda':
    case 'discordo':
    case 'falso':
    return 2;
    case 'i_dont_know':
    case `not_sexually_active`:
    return 3;
    case 'unanswered':
    return 4;
    case 'not_applicable':
    return 5;
    default:
    return value;
    }
    }

    state.helperFunctions = { transform };

    return query(
    `SELECT Participant_Identification_Number_PID__c from Person__c where Participant_Identification_Number_PID__c = '${state.data.form.case['@case_id']}'`
    )(state);
    });

    fn(state => {
    const { form } = state.data;

    const formVersion = Object.keys(form).find(key => key.includes('pre_challenge'));

    if (formVersion == 'pre_challenge_ecap_-_pre_-_season_survey_for_athletes') {
    console.log('Skipping upsert for ECAP data');
    return { ...state, formVersion };
    }

    console.log('form version', formVersion);

    const sfFieldMapping = {
    'pre_challenge_south_africa_-_skillz_girl': {
    Pre_1__c:
    'form.pre_challenge_south_africa_-_skillz_girl.i_have_an_older_person_in_my_life_i_can_go_to_for_advice_i_have_an_older_pe',
    Pre_2__c:
    'form.pre_challenge_south_africa_-_skillz_girl.i_know_how_to_make_a_plan_to_deal_with_the_challenges_i_may_face_in_reachin',
    Pre_3__c:
    'form.pre_challenge_south_africa_-_skillz_girl.i_can_identify_my_strengths_or_things_that_i_am_good_at_in_life',
    Pre_4__c: 'form.pre_challenge_south_africa_-_skillz_girl.every_day_i_can_find_something_to_be_grateful_for',
    Pre_5__c:
    'form.pre_challenge_south_africa_-_skillz_girl.having_more_than_one_sexual_partner_increases_my_risk_of_getting_hiv',
    Pre_6__c:
    'form.pre_challenge_south_africa_-_skillz_girl.i_can_say_no_to_sex_even_if_my_partner_or_friends_pressure_me_to_have_sex',
    Pre_7__c: 'form.pre_challenge_south_africa_-_skillz_girl.girls_have_a_greater_risk_of_contracting_hiv_than_boys',
    Pre_8__c:
    'form.pre_challenge_south_africa_-_skillz_girl.if_i_am_sexually_active_i_go_to_a_clinic_to_get_protection_from_hivstis_and',
    Pre_9__c: 'form.pre_challenge_south_africa_-_skillz_girl.like_physical_health_we_all_have_mental_health',
    Pre_10__c:
    'form.pre_challenge_south_africa_-_skillz_girl.i_know_where_to_go_for_support_if_i_or_someone_i_know_drinks_too_much_alcoh',
    Pre_11__c:
    'form.pre_challenge_south_africa_-_skillz_girl.it_is_the_males_responsibility_to_make_decisions_in_a_relationship',
    Pre_12__c:
    'form.pre_challenge_south_africa_-_skillz_girl.if_a_girl_is_sexually_abused_she_can_reduce_her_risk_of_getting_hiv_by_goin',
    Pre_13__c:
    'form.pre_challenge_south_africa_-_skillz_girl.sometimes_a_man_may_have_a_good_reason_to_hit_his_partner',
    Pre_14__c:
    'form.pre_challenge_south_africa_-_skillz_girl.i_know_where_to_get_contraception_to_prevent_unwanted_pregnancy',
    Pre_15__c:
    'form.pre_challenge_south_africa_-_skillz_girl.drinking_too_much_alcohol_can_have_serious_negative_consequences_for_mental',
    Pre_16__c:
    'form.pre_challenge_south_africa_-_skillz_girl.if_sexually_active_i_or_my_partner_is_using_a_prevention_method_to_protect_',
    Pre_17__c:
    'form.pre_challenge_south_africa_-_skillz_girl.i_know_where_to_go_to_receive_counselling_for_mental_health_challenges',
    Pre_18__c:
    'form.pre_challenge_south_africa_-_skillz_girl.loss_of_interest_in_funenjoyable_activities_is_a_common_sign_of_depression',
    Pre_19__c:
    'form.pre_challenge_south_africa_-_skillz_girl.i_know_at_least_three_methods_to_prevent_an_unwanted_pregnancy',
    },
    'portuguese_pre_challenge_gcr_-_skillz_malaria': {
    Pre_1__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_malaria.dormir_dentro_da_rede_mosquiteira_tratada_todas_as_noites_pode_proteger_me_',
    Pre_2__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_malaria.posso_esperar_uns_dias_antes_de_fazer_o_teste_de_malria_se_tiver_febres',
    Pre_3__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_malaria.um_mdico_tradicionalcurandeiro_pode_me_dar_um_tratamento_para_curar_a_malri',
    Pre_4__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_malaria.se_tiver_malria_e_no_for_tratado_posso_transmitir_a_malria_a_algum',
    Pre_5__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_malaria.somente_as_mulheres_grvidas_e_as_crianas_menores_de_5_anos__que_precisam_de',
    Pre_6__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.a_malria_pode_matar_se_no_fr_tratada',
    Pre_7__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.a_febre__um_sintoma_da_malria',
    Pre_8__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.eu_me_sinto_bem_conmigo_mesmo',
    Pre_9__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_malaria.tenho_algum_na_minha_vida_que_pode_me_dar_bons_conselhos_quando_preciso_de_',
    Pre_10__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_malaria.eu_sei_onde_posso_ter_tratamento_para_malria_na_minha_comunidade',
    Pre_11__c: 'form.portuguese_pre_challenge_gcr_-_skillz_malaria.posso_proteger-me_da_malria',
    },

    'portuguese_pre_challenge_gcr_-_skillz_girl': {
    Pre_1__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.falei_sobre_o_hiv_com_uma_pessoa_adulta_nos_ltimos_2_meses_fora_do_skillz',
    Pre_2__c: 'form.portuguese_pre_challenge_gcr_-_skillz_girl.sei_como_expressar_a_minha_raiva_sem_ser_violento',
    Pre_3__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.sei_como_superar_os_desafios_que_possa_enfrentar_na_minha_vida',
    Pre_4__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.sei_quais_as_decises_a_tomar_para_alcanar_os_meus_objectivos',
    Pre_5__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.os_rapazes_correm_um_risco_mais_elevado_de_serem_vtimas_de_violncia_do_que_',
    Pre_6__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.conheco_que_mudanas_ocorrem_no_meu_corpo_durante_a_puberdade',
    Pre_7__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.conheo_pelo_menos_trs_mtodos_para_evitar_uma_gravidez_indesejada',
    Pre_8__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.os_preservativos_so_o_nico_mtodo_contraceptivo_que_protege_contra_a_gravide',
    Pre_9__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.conheco_onde_obter_servios_de_apoio_para_mim_ou_outra_pessoa_para_casos_de_',
    Pre_10__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.se_uma_rapariga_inicia_seu_perodo_menstrual_significa_que_est_pronta_para_c',
    Pre_11__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.caso_eu_seja_abusada_sexualmente_prefiro_guard-lo_para_mim_para_evitar_que_',
    Pre_12__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.um_homem_tem_o_direito_de_ter_sexo_com_a_sua_namorada_mesmo_que_ela_no_o_qu',
    Pre_13__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.pessoas_com_problemas_de_sade_mental_so_apenas_confusas_ou_loucas',
    Pre_14__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.pessoas_com_problemas_de_sade_mental_so_apenas_confusas_ou_loucas',
    Pre_15__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.informaria_a_algum_caso_fosse_tocada_por_alguem_de_uma_forma_que_me_deixass',
    Pre_16__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.uma_filha_deve_sempre_respeitar_a_deciso_dos_seus_pais_para_se_casar',
    Pre_17__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.um_casamento_bem_sucedido__mais_importante_para_as_raparigas_do_que_termina',
    Pre_18__c: 'form.portuguese_pre_challenge_gcr_-_skillz_girl.eu_no_praticaria_desporto_com_algum_que_tem_hiv',
    Pre_19__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.um_namorado_pode_ter_boas_razes_para_bater_na_sua_namorada',
    Pre_20__c:
    'form.portuguese_pre_challenge_gcr_-_skillz_girl.no_faz_mal_que_um_rapaz_ameace_bater_na_sua_namorada_se_nunca_a_bater_fisic',
    },
    'pre_challenge_zambia_-_plus_mh_enhanced_zambia': {
    Pre_1__c: 'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.in_general_i_feel_good_about_myself',
    Pre_2__c:
    'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.i_have_the_skills_and_knowledge_to_avoid_getting_infected_with_another_kind',
    Pre_3__c:
    'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.it_is_important_to_know_why_and_how_i_want_to_tell_someone_my_hiv_status',
    Pre_4__c: 'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.i_accept_myself_and_my_hiv_status',
    Pre_5__c:
    'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.i_can_make_my_own_informed_decisions_about_my_sexual_healthcare',
    Pre_6__c:
    'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.are_you_or_have_you_been_past_12_months_in_a_sexual_relationship_na_if_not_',
    Pre_7__c:
    'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.are_you_or_your_boyfriendgirlfriend_currently_using_any_contraceptive_or_pr',
    Pre_8__c:
    'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.i_have_an_older_person_in_my_life_i_can_go_to_for_advice',
    Pre_9__c:
    'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.there_are_people_i_trust_with_whom_i_can_talk_about_my_status',
    Pre_10__c:
    'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.it_is_okay_for_two_people_with_hiv_to_have_unprotected_sex_with_each_other',
    Pre_11__c:
    'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.it_is_okay_for_someone_with_hiv_to_stop_taking_their_arv_as_soon_as_they_st',
    Pre_12__c:
    'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.when_i_have_a_choice_it_is_important_to_eat_a_variety_of_foods_including_gr',
    Pre_13__c:
    'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.mental_health_problems_have_nothing_to_do_with_being_lazy_or_weak_and_many_',
    Pre_14__c:
    'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.art_adherence_is_an_important_part_of_my_overall_health_and_well-being',
    Pre_15__c:
    'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.the_most_common_illnesses_of_mental_health_are_depression_and_anxiety',
    Pre_16__c:
    'form.pre_challenge_zambia_-_plus_mh_enhanced_zambia.biological_and_social_factors_contribute_to_females_and_males_experiencing_',
    },
    'pre_challenge_nigeria_-_advanced_skills': {
    Pre_1__c:
    'form.pre_challenge_nigeria_-_advanced_skills.i_have_talked_about_hiv_with_an_adult_in_the_past_two_months_outside_skillz',
    Pre_2__c:
    'form.pre_challenge_nigeria_-_advanced_skills.i_have_talked_about_malaria_with_an_adult_in_the_past_two_months_outside_sk',
    Pre_3__c:
    'form.pre_challenge_nigeria_-_advanced_skills.unequal_power_in_relationships_can_contribute_to_the_spread_of_hiv',
    Pre_4__c:
    'form.pre_challenge_nigeria_-_advanced_skills.the_most_effective_way_to_avoid_getting_hiv_is_to_abstain_from_sex',
    Pre_5__c: 'form.pre_challenge_nigeria_-_advanced_skills.malaria_is_spread_by_standing_under_the_hot_sun',
    Pre_6__c: 'form.pre_challenge_nigeria_-_advanced_skills.drinking_alcohol_can_increase_my_risk_of_getting_hiv',
    Pre_7__c:
    'form.pre_challenge_nigeria_-_advanced_skills.sleeping_under_a_mosquito_net_every_night_can_help_protect_me_from_malaria',
    Pre_8__c:
    'form.pre_challenge_nigeria_-_advanced_skills.having_more_than_one_sexual_partner_over_the_same_time_period_increases_my_',
    Pre_9__c:
    'form.pre_challenge_nigeria_-_advanced_skills.it_is_okay_for_someone_with_malaria_to_stop_taking_their_medication_as_soon',
    Pre_10__c:
    'form.pre_challenge_nigeria_-_advanced_skills.i_can_abstain_from_sex_until_i_am_older_even_if_it_is_difficult',
    Pre_11__c:
    'form.pre_challenge_nigeria_-_advanced_skills.i_would_say_no_to_playing_sport_with_someone_who_has_hiv',
    Pre_12__c:
    'form.pre_challenge_nigeria_-_advanced_skills.men_should_share_the_work_around_the_house_such_as_cleaning',
    Pre_13__c:
    'form.pre_challenge_nigeria_-_advanced_skills.it_is_the_males_responsibilty_to_make_decisions_in_a_relationship',
    Pre_14__c: 'form.pre_challenge_nigeria_-_advanced_skills.i_can_use_drugs_and_still_easily_reach_my_goals_in_life',
    Pre_15__c:
    'form.pre_challenge_nigeria_-_advanced_skills.when_sick_it_is_better_to_visit_the_herb_seller_than_to_visit_a_doctor_or_a',
    Pre_16__c:
    'form.pre_challenge_nigeria_-_advanced_skills.it_is_okay_to_use_violence_with_my_partner_if_he_or_she_makes_me_angry',
    Pre_17__c:
    'form.pre_challenge_nigeria_-_advanced_skills.i_have_the_power_to_change_gender_expectations_that_i_do_not_agree_with',
    },
    'pre_challenge_zimbabwe_-_skillz_core_zimbabwe': {
    Pre_1__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_know_what_decisions_to_make_to_achieve_my_goals',
    Pre_2__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_dont_always_have_to_do_what_people_expect_just_because_i_am_a_girlboy',
    Pre_3__c: 'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_what_i_am_good_at',
    Pre_4__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_can_make_my_own_decisions_no_matter_how_much_pressure_i_get_from_others',
    Pre_5__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_have_the_right_to_say_no_to_sex_no_matter_who_asks_me',
    Pre_6__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_can_make_my_own_informed_decisions_about_my_sexual_healthcare',
    Pre_7__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.copy-1-of-i_have_the_right_to_access_sexual_health_services_such_as_sti_and_hiv_testi',
    Pre_8__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.it_is_the_mans_responsibility_to_make_decisions_in_a_relationship',
    Pre_9__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.a_man_has_the_right_to_have_sex_with_his_girlfriend_even_if_she_doesnt_want',
    Pre_10__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.girls_should_be_obedient_and_should_not_disagree_with_boys',
    Pre_11__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.if_a_girl_gets_pregnant_she_should_drop_out_of_school',
    Pre_12__c: 'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.my_skillz_coach_helps_me_to_be_a_better_person',
    Pre_13__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_have_someone_in_my_life_i_can_turn_to_when_i_need_advice_or_when_i_have_a',
    Pre_14__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.if_i_test_positive_for_hiv_there_will_be_someone_who_will_help_and_support_',
    Pre_15__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_who_to_go_to_if_i_amsomeone_i_know_is_abused_sexually_physically_and',
    Pre_16__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_who_to_go_to_if_someone_touches_me_in_a_way_that_makes_me_uncomforta',
    Pre_17__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_know_where_to_get_support_services_for_me_or_someone_else_for_hiv-related',
    Pre_18__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_would_say_no_to_playing_sport_with_someone_who_has_hiv',
    Pre_19__c:
    'form.pre_challenge_zimbabwe_-_skillz_core_zimbabwe.i_can_tell_whether_someone_has_hiv_by_looking_at_him_or_her',
    },
    'pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe': {
    Pre_1__c:
    'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.copy-1-of-i_know_what_decisions_to_make_to_achieve_my_goals',
    Pre_2__c:
    'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.i_dont_always_have_to_do_what_people_expect_just_because_i_am_girlboy',
    Pre_3__c:
    'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.copy-1-of-i_have_the_right_to_say_no_to_sex_no_matter_who_asks_me',
    Pre_4__c:
    'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.i_can_make_my_own_informed_decisions_about_my_sexual_health',
    Pre_5__c:
    'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.it_is_the_mans_responsibility_to_make_decisions_in_a_relationship',
    Pre_6__c:
    'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.a_man_has_the_right_to_have_sex_with_his_girlfriend_even_if_she_doesnt_want',
    Pre_7__c:
    'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.my_skillz_coach_helps_me_to_be_a_better_person',
    Pre_8__c:
    'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.i_have_someone_in_my_life_i_can_turn_to_when_i_need_advise_or_when_i_have_a',
    Pre_9__c:
    'form.pre_challenge_zimbabwe_-_virtual_skillz_core_zimbabwe.copy-1-of-i_know_where_to_get_support_services_for_me_or_someone_else_for_hiv-related',
    },
    };

    const pluckSfValue = val => {
    return sfFieldMapping[formVersion][val];
    };

    return { ...state, formVersion, pluckSfValue };
    });

    fn(state => {
    console.log('here', state.formVersion);
    if (state.formVersion == 'pre_challenge_ecap_-_pre_-_season_survey_for_athletes') {
    console.log('Skipping upsert for ECAP data');
    return state;
    }
    const PID = lastReferenceValue('records[0].Participant_Identification_Number_PID__c')(state);

    if (!PID) {
    console.log(
    `Participant not found with Participant_Identification_Number_PID__c: ${state.data.form.case['@case_id']}`
    );
    return state;
    }

    function replaceAccents(input) {
    return input
    .replace(/á|â|ã|à/, 'a')
    .replace(/Á|Â|Ã|À/, 'A')
    .replace(/ç/, 'c')
    .replace(/é|ê/, 'e')
    .replace(/É|Ê/, 'E')
    .replace(/í/, 'i')
    .replace(/Í/, 'I')
    .replace(/ó|ô|õ/, 'o')
    .replace(/Ó|Ô|Õ/, 'O')
    .replace(/ú/, 'u')
    .replace(/Ú/, 'u');
    }

    return upsert(
    'Attendance__c',
    'CommCare_Ext_ID__c',
    fields(
    //field('Event__c', replaceAccents(dataValue('form.hidden_properties.intervention_name')(state))),
    relationship('Event__r', 'CommCare_Ext_ID__c', dataValue('form.hidden_properties.intervention_name')),
    relationship('Person_Attendance__r', 'Participant_Identification_Number_PID__c', dataValue('form.case.@case_id')),
    // relationship('Person_Attendance__r','CommCare_Ext_ID__c', state => {
    // return (
    // dataValue('form.hidden_properties.participant_first_name')(state) +
    // dataValue('form.hidden_properties.participant_surname')(state)
    // )
    // }),

    field('CommCare_Ext_ID__c', state => {
    return `${dataValue('form.case.@case_id')(state)}-${scrubEmojis(
    replaceAccents(dataValue('form.hidden_properties.intervention_name')(state)),
    ''
    ).replace(/\//gi, '')}`;
    }),

    //field(
    //'Person_Attendance__c',
    // state =>
    // dataValue('form.hidden_properties.participant_first_name')(state) +
    // ' ' +
    // dataValue('form.hidden_properties.participant_surname')(state)
    //),
    field('Gender__c', dataValue('form.hidden_properties.gender')),
    field('Grade__c', state => {
    const grade = dataValue('form.hidden_properties.grade')(state);
    return grade ? grade.replace(/\D/g, '') : undefined;
    }),
    field('Class__c', dataValue('form.hidden_properties.class')),
    field('Pre_Post_Completed__c', state => {
    var done = dataValue('form.hidden_properties.pre_questionnaire_complete')(state);
    return done === 'Yes' ? true : done === 'No' ? false : undefined;
    }),
    field('Date_Pre_Administered__c', dataValue('form.date')),
    field('Pre_1__c', state => {
    const value = dataValue(state.pluckSfValue('Pre_1__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_2__c', state => {
    if (state.pluckSfValue('Pre_2__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Pre_2__c'))(state);
    return state.helperFunctions.transform(value);
    }),

    field('Pre_3__c', state => {
    const value = dataValue(state.pluckSfValue('Pre_3__c'))(state);
    return state.helperFunctions.transform(value);
    }),

    field('Pre_4__c', state => {
    const value = dataValue(state.pluckSfValue('Pre_4__c'))(state);
    return state.helperFunctions.transform(value);
    }),

    field('Pre_5__c', state => {
    const value = dataValue(state.pluckSfValue('Pre_5__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_6__c', state => {
    const value = dataValue(state.pluckSfValue('Pre_6__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_7__c', state => {
    const value = dataValue(state.pluckSfValue('Pre_7__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_8__c', state => {
    const value = dataValue(state.pluckSfValue('Pre_8__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_9__c', state => {
    const value = dataValue(state.pluckSfValue('Pre_9__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_10__c', state => {
    if (state.pluckSfValue('Pre_10__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Pre_10__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_11__c', state => {
    if (state.pluckSfValue('Pre_11__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Pre_10__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_12__c', state => {
    if (state.pluckSfValue('Pre_12__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Pre_12__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_13__c', state => {
    if (state.pluckSfValue('Pre_13__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Pre_13__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_14__c', state => {
    if (state.pluckSfValue('Pre_14__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Pre_14__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_15__c', state => {
    if (state.pluckSfValue('Pre_15__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Pre_15__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_16__c', state => {
    if (state.pluckSfValue('Pre_16__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Pre_16__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_17__c', state => {
    if (state.pluckSfValue('Pre_17__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Pre_17__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_18__c', state => {
    if (state.pluckSfValue('Pre_18__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Pre_18__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_19__c', state => {
    if (state.pluckSfValue('Pre_19__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Pre_19__c'))(state);
    return state.helperFunctions.transform(value);
    }),
    field('Pre_20__c', state => {
    if (state.pluckSfValue('Pre_20__c') == null) return undefined;
    const value = dataValue(state.pluckSfValue('Pre_20__c'))(state);
    return state.helperFunctions.transform(value);
    })
    )
    )(state);
    });

    //Removing mapping... need case_id to upsert Events. Date_of_Pre__c update should be handled on the SF side.
    // upsert(
    // 'Event__c',
    // 'CommCare_Ext_ID__c',
    // fields(
    // field('CommCare_Ext_ID__c', dataValue('form.hidden_properties.intervention_name')),
    // field('Date_of_Pre__c', dataValue('form.date')),

    // )
    // );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Register-Event-2021-04-30.html b/fr/adaptors/library/jobs/auto/Upsert-Register-Event-2021-04-30.html index f05bf41133d..da1c0910e62 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Register-Event-2021-04-30.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Register-Event-2021-04-30.html @@ -22,13 +22,13 @@ - +

    Upsert Register Event

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    alterState, dataValue, field, fields, join, map, relationship, upsert

    Expression

    alterState((state) => {

    function clean(str) {
    if (!!str)
    return str
    .split('_')
    .map(word => {
    let new_word = word.toString().toLowerCase();
    return new_word.slice(0, 1).toUpperCase() + new_word.slice(1);
    })
    .join(' ');
    }

    const coachFieldNames = ['Coach_A__r','Coach_B__r','Coach_C__r','Coach_D__r']

    state.data.destinationCoachFields = state.data.form.event_information.coaches
    .split(' ')
    .reduce(
    (accumulator, currentValue, currentIndex) => [
    ...accumulator,
    (currentIndex < coachFieldNames.length && !!currentValue
    ? relationship(coachFieldNames[currentIndex], 'CommCare_Ext_ID__c', currentValue)
    : []),
    ],
    []
    );

    const eventtype = state.data.form.event_information.event_type;

    const recordtype = eventtype==='community_health_event' || eventtype==='soccer_tournament' ? 'Testing Event' : 'Malaria Testing Event';
    console.log(recordtype)

    state.data.recordtype = recordtype;

    return state;
    });

    upsert(
    'Event__c',
    'CommCare_Case_ID__c',
    state=>({
    ...fields(
    field('Name', dataValue('form.event_information.Event_Name')),
    relationship('RecordType', 'Name', dataValue('recordtype')),
    field('CommCare_Ext_ID__c', state => {
    var event = dataValue('form.event_information.Event_Name')(state);
    return event ? event.replace(/\//gi, '') : event;
    }),
    field('CommCare_Case_ID__c', dataValue('form.case.@case_id')),
    field('Business_Unit__c', state => {
    const bu = dataValue('form.event_information.business_unit')(state);
    return bu==='65680f0c4c144b03ad0f86bdc46c1ebc' ? 'GRS Zambia' :
    bu==='04d98397e28046118fade28ced6b65cb' ? 'GRS Zimbabwe' :
    bu==='ed125ab19ec34aacab79585e59eb76f4' ? 'GRS Partnerships': undefined ;
    }),
    relationship('Site__r','CommCare_Ext_ID__c', dataValue('form.event_information.site')),
    relationship('Venue__r', 'CommCare_Ext_ID__c',dataValue('form.event_information.Venue')),
    field('Date__c', dataValue('form.event_information.event_date')),
    field('Event_Type__c', dataValue('recordtype')),
    field('Testing_Event_Type__c', state => {
    const type = dataValue('form.event_information.event_type')(state);
    return type.includes('malaria') ? 'Malaria Testing Event (General Event)' : 'Other';
    }),
    field('Coordinator__c', dataValue('form.event_information.event_coordinator')),
    ),
    ...fields(...state.data.destinationCoachFields)
    })
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Register-Participant-2021-04-28.html b/fr/adaptors/library/jobs/auto/Upsert-Register-Participant-2021-04-28.html index 8f10dd24438..1cd6da8a31c 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Register-Participant-2021-04-28.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Register-Participant-2021-04-28.html @@ -22,13 +22,13 @@ - +

    Upsert Register Participant

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataPath, dataValue, each, field, fields, lastReferenceValue, map, merge, query, relationship, upsert, Array

    Expression

    query(
    `SELECT Id, Name, CommCare_Ext_ID__c FROM Event__c WHERE CommCare_Case_ID__c = '${state.data.form.case['@case_id']}'`
    );

    fn(state => {
    // Note: lastReferenceValue selects the first item in the references array.
    state.data.eventName = lastReferenceValue('records[0].CommCare_Ext_ID__c')(state);
    state.data.eventCase = dataValue('form.case.@case_id')(state);

    function replaceAccents(input) {
    return input
    .replace(/á|â|ã|à/, 'a')
    .replace(/Á|Â|Ã|À/, 'A')
    .replace(/ç/, 'c')
    .replace(/é|ê/, 'e')
    .replace(/É|Ê/, 'E')
    .replace(/í/, 'i')
    .replace(/Í/, 'I')
    .replace(/ó|ô|õ/, 'o')
    .replace(/Ó|Ô|Õ/, 'O')
    .replace(/ú/, 'u')
    .replace(/Ú/, 'u');
    }

    function objectToArray(object) {
    return !Array.isArray(object) ? [object] : object;
    }

    const { form } = state.data;
    if (form.question1) {
    console.log('Ensuring that "question1" is an array.');
    form.question1 = objectToArray(form.question1);
    } else if (!form.new_participants) {
    console.log('Nothing to upsert. No participants were registered');
    } else {
    console.log('Shifting "new_participants" to "question1" array.');
    form.question1 = objectToArray(form.new_participants);
    console.log('Creating a "case" object inside each item in that array.');
    form.question1 = form.question1.map(item => ({
    ...item,
    case: item.create_skillz_plus_participant.case,
    }));
    }

    console.log('Done with initial data manipulation.');
    const persons = merge(
    dataPath('form.question1[*]'),
    fields(field('intervention_notes_to_save', dataValue('form.intervention_notes_to_save')))
    )(state);

    const attendances = merge(
    dataPath('form.question1[*]'),
    fields(
    field('intervention_name', dataValue('form.intervention_name')),
    field('eventCase', dataValue('eventCase')),
    field('eventName', dataValue('eventName'))
    )
    )(state);

    return { ...state, persons, attendances, replaceAccents };
    });

    each(
    'persons[*]',
    upsert(
    'Person__c',
    'Participant_Identification_Number_PID__c',
    fields(
    field('Notes__c', dataValue('intervention_notes_to_save')),
    field('First_Name__c', dataValue('participant_first_name')),
    field('Surname__c', dataValue('participant_surname')),
    relationship('RecordType', 'Name', 'Participant'),
    relationship('Site__r', 'CommCare_Ext_ID__c', dataValue('grp_location.site_id')),
    field('Participant_Identification_Number_PID__c', state => state.data.case['@case_id']),
    field('Sex__c', dataValue('gender')),
    field('Mobile_Number_1__c', dataValue('mobile_number')), //QUESTION: In CommCare, phone doesn't look like it's saving?
    field('School_name_person__c', dataValue('school_name')),
    field('Date_of_Birth__c', dataValue('date_of_birth')),
    field('School_name_person__c', dataValue('school_name')),
    field('Physical_Address__c', dataValue('participants_home_address'))
    //field('Age__c', dataValue('form.question1.age_in_years')), //This is a SF formula field, cannot map
    )
    )
    );

    each(
    'attendances[*]',
    upsert(
    'Attendance__c',
    'CommCare_Ext_ID__c',
    fields(
    field('CommCare_Ext_ID__c', state => {
    const eventid = state.replaceAccents(`${state.data.intervention_name}` || `${state.data.eventName}`); //dataValue('intervention_name')(state) || `${state.data.eventName}`;
    const personid = state.data.case['@case_id'];
    const value = personid + '-' + eventid.replace(/\//gi, '');
    return scrubEmojis(value, '');
    }),
    relationship(
    //Attendance looks up to Persn via the case_id
    'Person_Attendance__r',
    'Participant_Identification_Number_PID__c',
    state => state.data.case['@case_id']
    ),
    relationship(
    //Attendance looks up to Event via the Event case_id
    'Event__r',
    'CommCare_Case_ID__c',
    state => `${state.data.eventCase}`
    ),
    // relationship(
    // //Attendance looks up to Event via the intervention_name
    // 'Event__r',
    // 'CommCare_Ext_ID__c',
    // state => `${state.data.intervention_name}` || `${state.data.eventName}`
    // ),
    field('Date_of_Birth__c', dataValue('date_of_birth'))
    )
    )
    );

    //First we insert Person record
    // fn(state => {
    // return upsert(
    // 'Person__c',
    // 'Participant_Identification_Number_PID__c',
    // fields(
    // field('Notes__c', dataValue('form.intervention_notes_to_save')),
    // field('First_Name__c', dataValue('form.question1.participant_first_name')),
    // field('Surname__c', dataValue('form.question1.participant_surname')),
    // relationship('RecordType', 'Name', 'Participant'),
    // field('Participant_Identification_Number_PID__c', state => state.data.case['@case_id']),
    // field('Sex__c', dataValue('form.question1.gender')),
    // //field('Age__c', dataValue('form.question1.age_in_years')), //This is a SF formula field, cannot map
    // field('Mobile_Number_1__c', dataValue('form.question1.mobile_number')),
    // field('School_name_person__c', dataValue('form.question1.school_name'))
    // )
    // )(state);
    // });

    // fn(state => {
    // //Then we upsert related Attendance records
    // return upsert(
    // 'Attendance__c',
    // 'CommCare_Ext_ID__c',
    // fields(
    // field('CommCare_Ext_ID__c', state => {
    // var eventid = dataValue('form.intervention_name')(state);
    // var personid = dataValue('form.case.@case_id')(state);
    // return personid + '-' + eventid;
    // }),
    // relationship(
    // //Attendance looks up to Persn via the case_id
    // 'Person_Attendance__r',
    // 'Participant_Identification_Number_PID__c',
    // dataValue('form.case.@case_id')
    // ),
    // relationship(
    // //Attendance looks up to Event via the intervention_name
    // 'Event__r',
    // 'Name',
    // dataValue('form.intervention_name')
    // ),
    // field('Date_of_Birth__c', dataValue('form.question1.date_of_birth'))
    // )
    // )(state);
    // });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30.html b/fr/adaptors/library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30.html index 2f5abfa12e2..6bf68a0f679 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30.html @@ -22,13 +22,13 @@ - +

    Upsert Register Participant (Skillz)

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataPath, dataValue, each, field, fields, lastReferenceValue, map, merge, query, relationship, upsert, Array

    Expression

    query(
    `SELECT Id, Name, CommCare_Ext_ID__c FROM Event__c WHERE CommCare_Case_ID__c = '${state.data.form.case['@case_id']}'`
    );

    fn(state => {
    // Note: lastReferenceValue selects the first item in the references array.
    state.data.eventName = lastReferenceValue('records[0].CommCare_Ext_ID__c')(state);
    state.data.eventCase = dataValue('form.case.@case_id')(state);

    function replaceAccents(input) {
    return input
    .replace(/á|â|ã|à/, 'a')
    .replace(/Á|Â|Ã|À/, 'A')
    .replace(/ç/, 'c')
    .replace(/é|ê/, 'e')
    .replace(/É|Ê/, 'E')
    .replace(/í/, 'i')
    .replace(/Í/, 'I')
    .replace(/ó|ô|õ/, 'o')
    .replace(/Ó|Ô|Õ/, 'O')
    .replace(/ú/, 'u')
    .replace(/Ú/, 'u');
    }

    function objectToArray(object) {
    return !Array.isArray(object) ? [object] : object;
    }

    const { form } = state.data;
    if (form.question1) {
    console.log('Ensuring that "question1" is an array.');
    form.question1 = objectToArray(form.question1);
    } else if (!form.new_participants) {
    console.log('Nothing to upsert. No participants were registered');
    } else {
    console.log('Shifting "new_participants" to "question1" array.');
    form.question1 = objectToArray(form.new_participants);
    console.log('Creating a "case" object inside each item in that array.');
    form.question1 = form.question1.map(item => ({
    ...item,
    case: item.create_skillz_plus_participant.case,
    }));
    }

    console.log('Done with initial data manipulation.');
    const persons = merge(
    dataPath('form.question1[*]'),
    fields(field('intervention_notes_to_save', dataValue('form.intervention_notes_to_save')))
    )(state);

    const attendances = merge(
    dataPath('form.question1[*]'),
    fields(
    field('intervention_name', dataValue('form.intervention_name')),
    field('eventCase', dataValue('eventCase')),
    field('eventName', dataValue('eventName'))
    )
    )(state);

    return { ...state, persons, attendances, replaceAccents };
    });

    each(
    'persons[*]',
    upsert(
    'Person__c',
    'Participant_Identification_Number_PID__c',
    fields(
    field('Notes__c', dataValue('intervention_notes_to_save')),
    field('First_Name__c', dataValue('participant_first_name')),
    field('Surname__c', dataValue('participant_surname')),
    relationship('RecordType', 'Name', 'Participant'),
    relationship('Site__r', 'CommCare_Ext_ID__c', dataValue('grp_location.site_id')),
    field('Participant_Identification_Number_PID__c', state => state.data.case['@case_id']),
    field('Sex__c', dataValue('gender')),
    field('Mobile_Number_1__c', dataValue('mobile_number')), //QUESTION: In CommCare, phone doesn't look like it's saving?
    field('School_name_person__c', dataValue('school_name')),
    field('Date_of_Birth__c', dataValue('date_of_birth')),
    field('School_name_person__c', dataValue('school_name')),
    field('Physical_Address__c', dataValue('participants_home_address'))
    //field('Age__c', dataValue('form.question1.age_in_years')), //This is a SF formula field, cannot map
    )
    )
    );

    each(
    'attendances[*]',
    upsert(
    'Attendance__c',
    'CommCare_Ext_ID__c',
    fields(
    field('CommCare_Ext_ID__c', state => {
    const eventid = state.replaceAccents(`${state.data.intervention_name}` || `${state.data.eventName}`); //dataValue('intervention_name')(state) || `${state.data.eventName}`;
    const personid = state.data.case['@case_id'];
    const value = personid + '-' + eventid.replace(/\//gi, '');
    return scrubEmojis(value, '');
    }),
    relationship(
    //Attendance looks up to Persn via the case_id
    'Person_Attendance__r',
    'Participant_Identification_Number_PID__c',
    state => state.data.case['@case_id']
    ),
    relationship(
    //Attendance looks up to Event via the Event case_id
    'Event__r',
    'CommCare_Case_ID__c',
    state => `${state.data.eventCase}`
    ),
    // relationship(
    // //Attendance looks up to Event via the intervention_name
    // 'Event__r',
    // 'CommCare_Ext_ID__c',
    // state => `${state.data.intervention_name}` || `${state.data.eventName}`
    // ),
    field('Date_of_Birth__c', dataValue('date_of_birth'))
    )
    )
    );

    //First we insert Person record
    // fn(state => {
    // return upsert(
    // 'Person__c',
    // 'Participant_Identification_Number_PID__c',
    // fields(
    // field('Notes__c', dataValue('form.intervention_notes_to_save')),
    // field('First_Name__c', dataValue('form.question1.participant_first_name')),
    // field('Surname__c', dataValue('form.question1.participant_surname')),
    // relationship('RecordType', 'Name', 'Participant'),
    // field('Participant_Identification_Number_PID__c', state => state.data.case['@case_id']),
    // field('Sex__c', dataValue('form.question1.gender')),
    // //field('Age__c', dataValue('form.question1.age_in_years')), //This is a SF formula field, cannot map
    // field('Mobile_Number_1__c', dataValue('form.question1.mobile_number')),
    // field('School_name_person__c', dataValue('form.question1.school_name'))
    // )
    // )(state);
    // });

    // fn(state => {
    // //Then we upsert related Attendance records
    // return upsert(
    // 'Attendance__c',
    // 'CommCare_Ext_ID__c',
    // fields(
    // field('CommCare_Ext_ID__c', state => {
    // var eventid = dataValue('form.intervention_name')(state);
    // var personid = dataValue('form.case.@case_id')(state);
    // return personid + '-' + eventid;
    // }),
    // relationship(
    // //Attendance looks up to Persn via the case_id
    // 'Person_Attendance__r',
    // 'Participant_Identification_Number_PID__c',
    // dataValue('form.case.@case_id')
    // ),
    // relationship(
    // //Attendance looks up to Event via the intervention_name
    // 'Event__r',
    // 'Name',
    // dataValue('form.intervention_name')
    // ),
    // field('Date_of_Birth__c', dataValue('form.question1.date_of_birth'))
    // )
    // )(state);
    // });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30.html b/fr/adaptors/library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30.html index d5b9c524375..9bde843a7ca 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30.html @@ -22,13 +22,13 @@ - +

    Upsert Register Skills plus Club

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    alterState, dataValue, field, fields, join, map, relationship, upsert

    Expression

    // push to production
    alterState((state) => {

    function clean(str) {
    if (!!str)
    return str
    .split('_')
    .map(word => {
    let new_word = word.toString().toLowerCase();
    return new_word.slice(0, 1).toUpperCase() + new_word.slice(1);
    })
    .join(' ');
    }

    const coachFieldNames = ['Coach_A__r','Coach_B__r','Coach_C__r','Coach_D__r']

    state.data.destinationCoachFields = state.data.form.coaches
    .split(' ')
    .reduce(
    (accumulator, currentValue, currentIndex) => [
    ...accumulator,
    (currentIndex < coachFieldNames.length && !!currentValue
    ? relationship(coachFieldNames[currentIndex], 'CommCare_Ext_ID__c', currentValue)
    : []),
    ],
    []
    );

    return state;
    });



    upsert(
    'Event__c',
    'CommCare_Case_ID__c',
    state=>({
    ...fields(
    field('Name', dataValue('form.name_of_skillz_plus_club')),
    field('CommCare_Ext_ID__c', dataValue('form.name_of_skillz_plus_club')),
    field('CommCare_Case_ID__c', dataValue('form.case.@case_id')),
    relationship('RecordType', 'Name', 'Intervention'),
    relationship('Site__r', 'CommCare_Ext_ID__c', dataValue('form.skillz_plus_site')),
    relationship('Venue__r', 'CommCare_Ext_ID__c', dataValue('form.skillz_plus_venue')),
    ),
    ...fields(...state.data.destinationCoachFields)
    })
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25.html b/fr/adaptors/library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25.html index 7bf00ee6ec5..cecce767b12 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25.html @@ -22,13 +22,13 @@ - +

    Upsert Risk & Vulnerability Assessment | Service Referral

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: Upsert Risk & Vulnerability Assessment | Service Referral
    • Adaptor: @openfn/language-salesforce
    • Adaptor Version: v2.7.4
    • Created over 2 years ago
    • Updated over 1 year ago
    • Score: 78 (an indicator of how useful this job may be)

    Key Functions

    alterState, dataValue, field, fields, join, map, relationship, upsertIf, Array

    Expression

    // Your job goes here.
    alterState(state => {
    function split(str, separator) {
    if (!str) {
    return [];
    } else {
    return str.toString().split(separator);
    }
    }
    function checked(key, str) {
    if (!str) return false;
    return split(str.toString(), ' ').indexOf(key) >= 0;
    }

    function capitalizeFirstLetter(str) {
    if (!str) return;
    let new_str = str.toString().toLowerCase();
    return new_str.slice(0, 1).toUpperCase() + new_str.slice(1);
    }

    function transformDont(str) {
    if (!str) return str;
    return split(str.toString(), '_')
    .map(word => word.replace(/dont/i, "don't"))
    .join('_')
    .toString()
    .trim();
    }

    function transformCant(str) {
    if (!str) return str;
    return split(str.toString(), '_')
    .map(word => word.replace(/cant/i, "can't"))
    .join('_')
    .toString()
    .trim();
    }

    function splitAndJoin(str, splitDelimiter, joinDelimiter) {
    if (!str) return;

    return split(str.toString(), splitDelimiter).join(joinDelimiter).toString().trim();
    }

    function transformHowOften(str) {
    if (!str) return;
    if (str === 'special_occasions') return 'Special Occasions';
    if (str === 'no_dont_want_to_disclose') return "Don't want to disclose";
    if (str === 'dont_want_to_disclose') return "Don't want to disclose";
    return transformGenericText(str).toString().trim();
    }

    function transformHIVStatus(status) {
    switch (status) {
    case 'yes_negative':
    return 'Yes,Negative';
    case 'yes_positive':
    return 'Yes,Positive';
    case 'no_i_dont':
    return "No,I don't know";
    case 'yes_dont_want_to_disclose':
    return "Yes, don't want to disclose";
    default:
    return;
    }
    }

    function transformLastTested(str) {
    if (!str) return;
    switch (str.toString()) {
    case 'yes_negative':
    return 'Yes,Negative';
    case 'yes_positive':
    return 'Yes,Positive';
    case 'no_i_dont':
    return "No,I don't know";
    case 'yes_dont_want_to_disclose':
    return "Yes, don't want to disclose";
    default:
    return;
    }
    }

    function transformMonthAgo(str) {
    if (!str) return;
    switch (str) {
    case 'month_ago':
    return '1 month ago';
    case 'months_ago':
    return '3 months ago';
    case 'month_ago':
    return 'copy-1-of-months_ago ';
    case 'month_ago':
    return '6 months ago';
    case 'a_year_or_more_ago':
    return 'A year or more';
    default:
    return;
    }
    }

    function transformGenericText(str) {
    if (!str) return;
    return capitalizeFirstLetter(splitAndJoin(transformDont(str), '_', ' '))
    .toString()
    .trim();
    }

    function transformRange(range) {
    if (!range) return;
    return range
    .toString()
    .replace(/\d_\d/i, match => match.replace('_', '-'))
    .toString()
    .trim();
    }

    function transformAgeRange(range) {
    if (!range) return;
    if (range === '10_years') return '< 10 years';
    if (range === 'greater_than_19') return '> 19 years';
    return capitalizeFirstLetter(transformDont(transformCant(splitAndJoin(transformRange(range), '_', ' '))))
    .toString()
    .trim();
    }

    function transformAbuseExperienced(str) {
    if (!str) return;
    return split(str, ' ')
    .map(word => capitalizeFirstLetter(word))
    .join(';')
    .toString()
    .trim();
    }

    function getAge(dateString) {
    if (!dateString) return;

    const today = new Date();
    const birthDate = new Date(dateString);
    var age = today.getFullYear() - birthDate.getFullYear();
    var m = today.getMonth() - birthDate.getMonth();
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
    age--;
    }
    return age;
    }

    state.data.perform_a_risk_assessment = state.data.form.do_you_want_to_perform_a_risk_assessment === 'yes';

    state.data.complete_service_referrals = state.data.form.referral_services ? true : false;

    state.data.form.client_information.gender = capitalizeFirstLetter(state.data.form.client_information.gender);

    state.helperFunctions = {
    split,
    checked,
    transformAgeRange,
    transformHIVStatus,
    transformLastTested,
    transformMonthAgo,
    transformGenericText,
    transformDont,
    splitAndJoin,
    transformHowOften,
    transformAbuseExperienced,
    getAge,
    };
    return state;
    });

    upsertIf(
    dataValue('perform_a_risk_assessment'),
    'Risk_Assessment__c',
    'CommCare_Ext_ID__c',
    fields(
    field('CommCare_Ext_ID__c', dataValue('id')),
    field('Date__c', dataValue('form.risk_assessment.date')),
    field('Participant_Name__c', dataValue('form.client_information.participant_full_name')),
    field('Participant_Age__c', state => {
    const dob = dataValue('form.client_information.date_of_birth')(state);

    return state.helperFunctions.getAge(dob);
    }),
    relationship('Site2__r', 'CommCare_Ext_ID__c', dataValue('form.client_information.site')),

    relationship('Venue__r', 'CommCare_Ext_ID__c', dataValue('form.client_information.venue')),

    field('Participant_Sex__c', dataValue('form.client_information.gender')),
    field('X1_0_Sexually_Active_past_12_month__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.risk_assessment.sexual_risk_and_pregnancy.sexually_active_12_months')(state)
    )
    ),
    field('X1_1_Age_at_first_sex__c', state =>
    state.helperFunctions.transformAgeRange(
    dataValue('form.risk_assessment.sexual_risk_and_pregnancy.age_at_first_sex')(state)
    )
    ),
    field('X1_2_Have_you_ever_had_unprotected_sex__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.risk_assessment.sexual_risk_and_pregnancy.have_you_ever_had_unprotected_sex')(state)
    )
    ),
    field('X1_3_Sex_for_monetary_or_material_benefi__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.risk_assessment.sexual_risk_and_pregnancy.sex_monetary_material')(state)
    )
    ),
    field('Do_you_know_your_HIV_status__c', state =>
    state.helperFunctions.transformHIVStatus(
    dataValue('form.risk_assessment.hiv_status.do_you_know_your_hiv_status')(state)
    )
    ),
    field('X2_1_When_last_did_you_test_for_HIV__c', state =>
    state.helperFunctions.transformMonthAgo(
    dataValue('form.risk_assessment.hiv_status.when_last_did_you_test_for_hiv')(state)
    )
    ),
    field('X2_2_Are_you_on_treatment_ART__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.risk_assessment.hiv_status.are_you_on_treatment_art')(state)
    )
    ),
    field('X3_0_Had_an_STI_in_the_last_12months_yea__c', state =>
    state.helperFunctions.transformHowOften(dataValue('form.risk_assessment.sti_and_pep.hiv_last_12_months')(state))
    ),
    field('X3_1_Past_12_months_sex_HIV_status_part__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.risk_assessment.sti_and_pep.knowing_partners_hiv_status')(state)
    )
    ),
    field('X4_0_Forms_of_abuse_experienced_before__c', state => {
    const abusesArray = state.helperFunctions.split(
    dataValue('form.risk_assessment.gender_based_violence.abuse_experienced')(state),
    ' '
    );
    const abuses = [];
    abusesArray.forEach(ab => {
    abuses.push(state.helperFunctions.transformGenericText(ab));
    });
    return abuses.join(';');
    }),
    field('X4_1_Feel_unsafe_any1_interact_with_ofte__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.risk_assessment.gender_based_violence.unsafe_with_others')(state)
    )
    ),
    field('X4_2_Of_what_relationship_person_to_you__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.risk_assessment.gender_based_violence.relationship_of_abuser')(state)
    )
    ),
    field('X5_0_Do_you_take_alcohol_or_drugs__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.risk_assessment.drugs_and_alcohol_use.do_you_take_alcohol_andor_drugs')(state)
    )
    ),
    field('X5_1_On_average_how_often_drink_alcohol__c', state =>
    state.helperFunctions.transformHowOften(
    dataValue('form.risk_assessment.drugs_and_alcohol_use.how_often_alcohol')(state)
    )
    ),
    field('X5_2_On_average_how_often_take_drugs__c', state =>
    state.helperFunctions.transformHowOften(
    dataValue('form.risk_assessment.drugs_and_alcohol_use.how_often_drugs')(state)
    )
    ),
    field('X5_3_Easy_for_teens_to_obtain_alcohol__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.risk_assessment.drugs_and_alcohol_use.alcohol_19')(state)
    )
    ),
    field('X5_4__c', state =>
    state.helperFunctions.transformGenericText(
    dataValue('form.risk_assessment.drugs_and_alcohol_use.illegal_drugs_19')(state)
    )
    )
    )
    );

    fn(state => {
    state.data.intervention_name = state.data.form.client_information.intervention_name
    ? [relationship('Event__r', 'CommCare_Ext_ID__c', dataValue('form.client_information.intervention_name'))]
    : [];

    return state;
    });

    upsertIf(dataValue('complete_service_referrals'), 'NewReferral__c', 'CommCare_Ext_ID__c', state => ({
    ...fields(
    field('CommCare_Ext_ID__c', state => {
    if (state.data.form.subcase_0.case) return state.data.form.subcase_0.case['@case_id'];
    else if (state.data.form.referral_services) {
    if (state.data.form.referral_services.art_support_services.skillz_plus_club_details)
    return state.data.form.referral_services.art_support_services.skillz_plus_club_details
    .create_skillz_plus_club_participant_case.case['@case_id'];
    }
    return undefined;
    }),
    field('Participants_Full_Name__c', dataValue('form.client_information.participant_full_name')),
    field('Service_Provider_Name__c', dataValue('form.client_information.coach_name')),
    field('Parent_Guardian_Full_Name__c', dataValue('form.parent__guardian_information.parent__guardian_full_name')),
    field('Relationship__c', dataValue('form.parent__guardian_information.relationship_to_client')),
    //field('', dataValue('form.parent__guardian_information.please_specify')),
    field('Parent_Guardian_Contact_Number__c', dataValue('form.parent__guardian_information.contact_number')),
    //field('', dataValue('form.parent__guardian_information.guardian_consent')),
    field('Institution_Referred_To_1__c', dataValue('form.referral_information.institution_referred_to')),
    field('Institution_Referred_To_2__c', dataValue('form.referral_information.copy-1-of-institution_referred_to')),
    field('Institution_Referred_To_3__c', dataValue('form.referral_information.copy-2-of-institution_referred_to')),
    field('HIV_Testing_Services_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'hiv_testing_services',
    dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('HIV_Other__c', dataValue('form.referral_services.hiv_support__care.please_specify')),
    field('ART_Initiation_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'art_initiationenrollment',
    dataValue('form.referral_services.art_support_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('SKILLZ_Plus_Club_Support_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'grs_skillz_plus_club',
    dataValue('form.referral_services.art_support_services.skillz_plus_club_option')(state)
    )
    ),
    field('PMTCT_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'pmtct',
    dataValue('form.referral_services.art_support_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('VMMC_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'vmmc',
    dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('TB_Screening_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'tb_screening_treatment_adherence',
    dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('Legal_Other__c', dataValue('form.referral_services.legal_services.please_specify_other_legal')),
    field('Post_Exposure_Prophylaxis_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'post_exposure_prophylaxis',
    dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('PrEP_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'prep',
    dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('HIV_STI_PREVENTION_Other_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'other',
    dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('HIV_Other__c', dataValue('form.referral_services.hiv_support__care.please_specify')),
    field(
    'Victim_Friendly_Services_GRS_Staff__c',
    state =>
    state.helperFunctions.checked(
    'suspected_abuse_reported_police_court_other_authority',
    dataValue(
    'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
    )(state)
    ) ||
    state.helperFunctions.checked(
    'post_violence_care_medical_legal_counseling',
    dataValue(
    'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
    )(state)
    ) ||
    state.helperFunctions.checked(
    'child_support_grant_social_foster_general_support',
    dataValue(
    'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
    )(state)
    ) ||
    state.helperFunctions.checked(
    'other',
    dataValue(
    'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
    )(state)
    )
    ),

    field('Sexual_and_GBV_Abuse_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'sexual__gender-based_violenceabus',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),

    // field('missing in SF', dataValue('form.referral_services.child_protection_support_services.type_of_post_violence_care')),
    // field('missing in SF', dataValue('form.referral_services.child_protection_support_services.child_support_grant_for')),
    field(
    'Legal_Services_Other_GRS_Staff__c',
    state =>
    state.helperFunctions.checked(
    'other',
    dataValue('form.referral_services.legal_services.legal_services')(state)
    ) ||
    state.helperFunctions.checked('id', dataValue('form.referral_services.legal_services.legal_services')(state)) ||
    state.helperFunctions.checked(
    'birth_bertificate',
    dataValue('form.referral_services.legal_services.legal_services')(state)
    )
    ),
    field('Legal_Other__c', dataValue('form.referral_services.legal_services.please_specify_other_legal')),
    field('IPTG_Health_Facility__c', state =>
    state.helperFunctions.checked(
    'iptg_to_health_facility',
    dataValue('form.referral_services.mental_health_services.mental_health_select_services')
    )
    ),
    field('IPTG_Specialized_to_SMZ__c', state =>
    state.helperFunctions.checked(
    'iptg_specialised_to_smz',
    dataValue('form.referral_services.mental_health_services.mental_health_select_services')
    )
    ),
    field('STI_Screen_Testing_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'sti_screening_diagnosis_treatment',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('Contraception_Family_Plan_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'contraceptivesfamily_planning',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('Cervical_Cancer_Screening_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'cervical_cancer_screening',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('HPV_vaccine_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'hpv',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('Antenatal_Care_ANC_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'antenatal_care_anc',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),

    field(
    'Psycho_Social_Support_GRS_Staff__c',
    state =>
    state.helperFunctions.checked(
    'drug_or_alcohol_abuse',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    ) ||
    state.helperFunctions.checked(
    'psychiatric_careintensive_counseling',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    ) ||
    state.helperFunctions.checked(
    'psychosocial_support',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('Psycho_Social_Services_Other_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'other',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('Psycho_Other__c', dataValue('form.referral_services.other_srhr_services.please_specify_srhr_referred')),

    field('Date_Referred__c', dataValue('form.follow-up.date_referred')),
    field('Expected_Visit_Date__c', dataValue('form.follow-up.expected_visit_date')),
    field('Client_Follow_up_Consent_given__c', state =>
    state.helperFunctions.checked('client_follow-up_consent_given', dataValue('form.follow-up.select')(state))
    ),
    field('Client_Linked_to_care__c', state =>
    state.helperFunctions.checked('client_linked_to_care', dataValue('form.follow-up.select')(state))
    ),

    field('Business_Unit_Site__c', state => {
    const bu = dataValue('form.client_information.business_unit')(state);
    return bu === '65680f0c4c144b03ad0f86bdc46c1ebc'
    ? 'GRS Zambia'
    : bu === '04d98397e28046118fade28ced6b65cb'
    ? 'GRS Zimbabwe'
    : bu === 'ed125ab19ec34aacab79585e59eb76f4'
    ? 'GRS Partnerships'
    : undefined;
    })
    ),
    ...fields(...state.data.intervention_name),
    }));

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-2-2021-06-14.html b/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-2-2021-06-14.html index b0cb168efbe..67bf9962750 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-2-2021-06-14.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-2-2021-06-14.html @@ -22,13 +22,13 @@ - +

    Upsert Service Referral 2

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    alterState, dataValue, field, fields, upsert

    Expression

    // push to production
    alterState(state => {
    state.data.external_commcare_id = (
    dataValue('form.hidden_properties.intervention_name')(state) +
    dataValue('form.hidden_properties.participant_first_name')(state) +
    dataValue('form.hidden_properties.participant_surname')(state)
    )
    .toString()
    .toLowerCase()
    .replace(/\s/g, '')
    .trim();

    return state;
    });

    upsert(
    'NewReferral__c',
    'CommCare_Ext_ID__c',
    fields(
    field('Business_Unit_Site__c', state => {
    const bu = dataValue('form.business_unit')(state);
    return bu === 'X' ? 'GRS Zambia' : bu;
    }),
    field('CommCare_Ext_ID__c', dataValue('form.case.@case_id')),
    field('HIV_Testing_Services_Service_Provider__c', state =>
    Boolean(
    dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option1')(state)
    )
    ),
    field('TB_Screening_Service_Provider__c', state =>
    Boolean(
    dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option2')(state)
    )
    ),
    field('VMMC_Service_Provider__c', state =>
    Boolean(
    dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option3')(state)
    )
    ),
    field('Post_Exposure_Prophylaxis_Service_Provid__c', state =>
    Boolean(
    dataValue(
    'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option4'
    )(state)
    )
    ),
    field('PrEP_Service_Provider__c', state =>
    Boolean(
    dataValue(
    'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option5'
    )(state)
    )
    ),
    field('HIV_STI_PREVENTION_Other_Service_Provid__c', state =>
    Boolean(
    dataValue(
    'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option6'
    )(state)
    )
    ),
    field('ART_Initiation_Service_Provider__c', state =>
    Boolean(
    dataValue('form.referral_services.art_support_services.art_services_group.art_services_option1')(
    state
    )
    )
    ),
    field('SKILLZ_Plus_Club_Support_Service_Provid__c', state =>
    Boolean(
    dataValue('form.referral_services.art_support_services.art_services_group.art_services_option2')(
    state
    )
    )
    ),

    field(
    'PMTCT_Service_Provider__c',
    state =>
    Boolean(
    dataValue('form.referral_services.art_support_services.art_services_group.art_services_option3')(
    state
    )
    )
    ),
    field('IPTG_Health_Facility__c', state =>
    Boolean(
    dataValue('form.referral_services.mental_health_services.confirmation_of_services_provided_label.mental_health_select_services_option1')(
    state
    )
    )
    ),
    field('IPTG_Specialized_to_SMZ__c', state =>
    Boolean(
    dataValue('form.referral_services.mental_health_services.confirmation_of_services_provided_label.mental_health_select_services_option2')(
    state
    )
    )
    ),

    field('ART_Services_Other_Service_Provider__c', state =>
    Boolean(
    dataValue('form.referral_services.art_support_services.referred_art_support_services')(state)
    )
    ),
    field(
    'Victim_Friendly_Services_Service_Provide__c',
    state =>
    Boolean(
    dataValue(
    'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option1'
    )(state)
    ) ||
    Boolean(
    dataValue(
    'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option2'
    )(state)
    ) ||
    Boolean(
    dataValue(
    'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option3'
    )(state)
    )
    ),
    field('Legal_Services_Other_Service_Provider__c', state =>
    Boolean(
    dataValue(
    'form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option3'
    )(state)
    )
    ),

    field('STI_Screen_Testing_Service_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option1')(state))
    ),

    field('Contraception_Family_Plan_Servi_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option2')(state))
    ),
    field('Cervical_Cancer_Screen_Servi_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option3')(state))
    ),
    field('HPV_vaccine_Service_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option4')(state))
    ),
    field('Antenatal_Care_ANC_Service_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option5')(state))
    ),
    field('Sexual_and_GBV_Abuse_Servi_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option6')(state))
    ),
    field(
    'Psycho_Social_Support_Service_Provider__c',
    state =>
    Boolean(
    dataValue(
    'form.referral_services.other_srhr_services.service_label.srhr_option9'
    )(state)
    ) ||
    Boolean(
    dataValue(
    'form.referral_services.other_srhr_services.service_label.srhr_option8'
    )(state)
    ) ||
    Boolean(
    dataValue(
    'form.referral_services.other_srhr_services.service_label.srhr_option7'
    )(state)
    )
    ),
    field('Psycho_Social_Services_Other_Service_Pro__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option10')(state))
    ),
    field(
    'Legal_Services_Other_Service_Provider__c',
    state =>
    Boolean(
    dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_referral_services')(state)
    ) ||
    Boolean(
    dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option1')(state)
    ) ||
    Boolean(
    dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option2')(state)
    )
    ),

    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-2021-04-30.html b/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-2021-04-30.html index ea5ed4ea047..06dd25dac8e 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-2021-04-30.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-2021-04-30.html @@ -22,13 +22,13 @@ - +

    Upsert Service Referral

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    alterState, dataValue, field, fields, relationship, upsert

    Expression

    alterState(state => {
    function checked(key, str) {
    if (!str) return false;
    return str.split(' ').indexOf(key) >= 0;
    }

    state.helperFunctions = { checked };

    function capitalizeFirstLetter(str) {
    if (!str) return;
    let new_str = str.toString().toLowerCase();
    return new_str.slice(0, 1).toUpperCase() + new_str.slice(1);
    }

    function transform(value) {
    if (!value) return;
    switch (value.toString().trim()) {
    case 'Daughterson':
    return 'Daughter/Son';
    case 'Other_specify':
    return 'Other';
    case 'Single_never_married':
    return 'Single/Never Married';
    case 'Divorced__separated':
    return 'Divorced/separated';
    default:
    return value;
    }
    }

    state.data.form.parent__guardian_information.relationship_to_client = transform(
    capitalizeFirstLetter(state.data.form.parent__guardian_information.relationship_to_client)
    );

    return state;
    });

    alterState(state => {
    if (!state.data.form.subcase_0) {
    console.log('No referral services to upsert');
    return state;
    }
    return upsert(
    'NewReferral__c',
    'CommCare_Ext_ID__c',
    fields(
    // field('Enter_Partner_s_Name__c', dataValue('form.referral_information.institution_referred_to')),
    // field('Type_of_Referral__c', dataValue('form.referral_information.type_of_referral')),
    field('Participants_Full_Name__c', dataValue('form.client_registration.participant_full_name')),
    //field('Parent_Guardian_Contact_Number__c', dataValue('form.client_registration.mobile_number')),
    relationship('Event__r', 'CommCare_Case_ID__c', dataValue('form.event_name')),
    field('CommCare_Ext_ID__c', state => {
    var subid = state.data.form.subcase_0;
    return subid && subid !== '' ? state.data.form.subcase_0.case['@case_id'] : dataValue('id')(state); //Set external id to 'service' subcase if available, otherwise use formid
    }),
    //field('Venue__c', dataValue('form.client_registration.school_name')),
    //field('Grade__c', dataValue('form.client_registration.grade')),
    //field('Class__c', dataValue('form.client_registration.class')),
    field('Parent_Guardian_Full_Name__c', dataValue('form.parent__guardian_information.parent__guardian_full_name')),
    field('Relationship_To_Client__c', dataValue('form.parent__guardian_information.relationship_to_client')),
    field('Parent_Guardian_Contact_Number__c', dataValue('form.parent__guardian_information.contact_number')),
    field('Institution_Referred_To_1__c', dataValue('form.referral_information.institution_referred_to')),
    field('Institution_Referred_To_2__c', dataValue('form.referral_information.copy-1-of-institution_referred_to')),
    field('Institution_Referred_To_3__c', dataValue('form.referral_information.copy-2-of-institution_referred_to')),
    field('Service_Provider_Name__c', dataValue('form.hidden_props.coach_name')),
    field('HIV_Testing_Services_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'hiv_testing_services',
    dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('VMMC_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'vmmc',
    dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('TB_Screening_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'tb_screening_treatment_adherence',
    dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('Post_Exposure_Prophylaxis_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'post_exposure_prophylaxis',
    dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('PrEP_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'prep',
    dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('HIV_STI_PREVENTION_Other_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'other',
    dataValue('form.referral_services.hiv_support__care.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('HIV_Other__c', dataValue('form.referral_services.hiv_support__care.please_specify')),
    field('ART_Initiation_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'art_initiationenrollment',
    dataValue('form.referral_services.art_support_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('PMTCT_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'pmtct',
    dataValue('form.referral_services.art_support_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('SKILLZ_Plus_Club_Support_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'grs_skillz_plus_club',
    dataValue('form.referral_services.art_support_services.skillz_plus_club_option')(state)
    )
    ),
    field(
    'Victim_Friendly_Services_GRS_Staff__c',
    state =>
    state.helperFunctions.checked(
    'suspected_abuse_reported_police_court_other_authority',
    dataValue(
    'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
    )(state)
    ) ||
    state.helperFunctions.checked(
    'post_violence_care_medical_legal_counseling',
    dataValue(
    'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
    )(state)
    ) ||
    state.helperFunctions.checked(
    'child_support_grant_social_foster_general_support',
    dataValue(
    'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
    )(state)
    ) ||
    state.helperFunctions.checked(
    'other',
    dataValue(
    'form.referral_services.child_protection_support_services.check_the_services_that_client_was_referred_to'
    )(state)
    )
    ),
    field('Business_Unit_Site__c', state => {
    const bu = dataValue('form.business_unit')(state);
    return bu === '65680f0c4c144b03ad0f86bdc46c1ebc'
    ? 'GRS Zambia'
    : bu === '04d98397e28046118fade28ced6b65cb'
    ? 'GRS Zimbabwe'
    : bu === 'ed125ab19ec34aacab79585e59eb76f4'
    ? 'GRS Partnerships'
    : undefined;
    }),
    field(
    'Sexual_and_GBV_Abuse_GRS_Staff__c',
    dataValue('form.referral_services.child_protection_support_services.abuse_reported_to')
    ),

    field('Legal_Other__c', dataValue('form.referral_services.legal_services.please_specify_other_legal')),
    field(
    'Legal_Services_Other_GRS_Staff__c',
    state =>
    state.helperFunctions.checked(
    'other',
    dataValue('form.referral_services.legal_services.legal_services')(state)
    ) ||
    state.helperFunctions.checked(
    'id',
    dataValue('form.referral_services.legal_services.legal_services')(state)
    ) ||
    state.helperFunctions.checked(
    'birth_bertificate',
    dataValue('form.referral_services.legal_services.legal_services')(state)
    )
    ),
    field('STI_Screen_Testing_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'sti_screening_diagnosis_treatment',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('Contraception_Family_Plan_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'contraceptivesfamily_planning',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('Cervical_Cancer_Screening_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'cervical_cancer_screening',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('HPV_vaccine_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'hpv',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('Antenatal_Care_ANC_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'antenatal_care_anc',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('Sexual_and_GBV_Abuse_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'based_violenceabus',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field(
    'Psycho_Social_Support_GRS_Staff__c',
    state =>
    state.helperFunctions.checked(
    'drug_or_alcohol_abuse',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(
    state
    )
    ) ||
    state.helperFunctions.checked(
    'psychiatric_careintensive_counseling',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(
    state
    )
    ) ||
    state.helperFunctions.checked(
    'psychosocial_support',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(
    state
    )
    )
    ),
    field('Psycho_Social_Services_Other_GRS_Staff__c', state =>
    state.helperFunctions.checked(
    'other',
    dataValue('form.referral_services.other_srhr_services.check_the_services_that_client_was_referred_to')(state)
    )
    ),
    field('Psycho_Other__c', dataValue('form.referral_services.other_srhr_services.please_specify_srhr_referred')),
    field('Date_Referred__c', dataValue('form.follow-up.date_referred')),
    field('Expected_Visit_Date__c', dataValue('form.follow-up.expected_visit_date')),
    field('Client_Follow_up_Consent_given__c', state =>
    state.helperFunctions.checked('client_follow-up_consent_given', dataValue('form.follow-up.select')(state))
    ),
    field('Client_Linked_to_care__c', state =>
    state.helperFunctions.checked('client_linked_to_care', dataValue('form.follow-up.select')(state))
    )
    )
    )(state);
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30.html b/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30.html index a90ca7b44b8..b0ec9b402c0 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30.html @@ -22,13 +22,13 @@ - +

    Upsert Service Referral Followup

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    alterState, dataValue, field, fields, upsert

    Expression

    // push to production
    alterState(state => {
    state.data.external_commcare_id = (
    dataValue('form.hidden_properties.intervention_name')(state) +
    dataValue('form.hidden_properties.participant_first_name')(state) +
    dataValue('form.hidden_properties.participant_surname')(state)
    )
    .toString()
    .toLowerCase()
    .replace(/\s/g, '')
    .trim();

    return state;
    });

    upsert(
    'NewReferral__c',
    'CommCare_Ext_ID__c',
    fields(
    field('Business_Unit_Site__c', state => {
    const bu = dataValue('form.business_unit')(state);
    return bu === 'X' ? 'GRS Zambia' : bu;
    }),
    field('CommCare_Ext_ID__c', dataValue('form.case.@case_id')),
    field('HIV_Testing_Services_Service_Provider__c', state =>
    Boolean(
    dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option1')(state)
    )
    ),
    field('TB_Screening_Service_Provider__c', state =>
    Boolean(
    dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option2')(state)
    )
    ),
    field('VMMC_Service_Provider__c', state =>
    Boolean(
    dataValue('form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option3')(state)
    )
    ),
    field('Post_Exposure_Prophylaxis_Service_Provid__c', state =>
    Boolean(
    dataValue(
    'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option4'
    )(state)
    )
    ),
    field('PrEP_Service_Provider__c', state =>
    Boolean(
    dataValue(
    'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option5'
    )(state)
    )
    ),
    field('HIV_STI_PREVENTION_Other_Service_Provid__c', state =>
    Boolean(
    dataValue(
    'form.referral_services.hiv_support__care.check_services_label.hiv_support_care_option6'
    )(state)
    )
    ),
    field('ART_Initiation_Service_Provider__c', state =>
    Boolean(
    dataValue('form.referral_services.art_support_services.art_services_group.art_services_option1')(
    state
    )
    )
    ),
    field('SKILLZ_Plus_Club_Support_Service_Provid__c', state =>
    Boolean(
    dataValue('form.referral_services.art_support_services.art_services_group.art_services_option2')(
    state
    )
    )
    ),

    field(
    'PMTCT_Service_Provider__c',
    state =>
    Boolean(
    dataValue('form.referral_services.art_support_services.art_services_group.art_services_option3')(
    state
    )
    )
    ),
    field('IPTG_Health_Facility__c', state =>
    Boolean(
    dataValue('form.referral_services.mental_health_services.confirmation_of_services_provided_label.mental_health_select_services_option1')(
    state
    )
    )
    ),
    field('IPTG_Specialized_to_SMZ__c', state =>
    Boolean(
    dataValue('form.referral_services.mental_health_services.confirmation_of_services_provided_label.mental_health_select_services_option2')(
    state
    )
    )
    ),

    field('ART_Services_Other_Service_Provider__c', state =>
    Boolean(
    dataValue('form.referral_services.art_support_services.referred_art_support_services')(state)
    )
    ),
    field(
    'Victim_Friendly_Services_Service_Provide__c',
    state =>
    Boolean(
    dataValue(
    'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option1'
    )(state)
    ) ||
    Boolean(
    dataValue(
    'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option2'
    )(state)
    ) ||
    Boolean(
    dataValue(
    'form.referral_services.child_protection_support_services.copy-1-of-check_the_services_that_were_provided.child_protection_option3'
    )(state)
    )
    ),
    field('Legal_Services_Other_Service_Provider__c', state =>
    Boolean(
    dataValue(
    'form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option3'
    )(state)
    )
    ),

    field('STI_Screen_Testing_Service_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option1')(state))
    ),

    field('Contraception_Family_Plan_Servi_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option2')(state))
    ),
    field('Cervical_Cancer_Screen_Servi_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option3')(state))
    ),
    field('HPV_vaccine_Service_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option4')(state))
    ),
    field('Antenatal_Care_ANC_Service_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option5')(state))
    ),
    field('Sexual_and_GBV_Abuse_Servi_Provider__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option6')(state))
    ),
    field(
    'Psycho_Social_Support_Service_Provider__c',
    state =>
    Boolean(
    dataValue(
    'form.referral_services.other_srhr_services.service_label.srhr_option9'
    )(state)
    ) ||
    Boolean(
    dataValue(
    'form.referral_services.other_srhr_services.service_label.srhr_option8'
    )(state)
    ) ||
    Boolean(
    dataValue(
    'form.referral_services.other_srhr_services.service_label.srhr_option7'
    )(state)
    )
    ),
    field('Psycho_Social_Services_Other_Service_Pro__c', state =>
    Boolean(dataValue('form.referral_services.other_srhr_services.service_label.srhr_option10')(state))
    ),
    field(
    'Legal_Services_Other_Service_Provider__c',
    state =>
    Boolean(
    dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_referral_services')(state)
    ) ||
    Boolean(
    dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option1')(state)
    ) ||
    Boolean(
    dataValue('form.referral_services.other_legal_services.confirmation_of_services_provided_label.legal_services_option2')(state)
    )
    ),

    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-Team-Group-Name-2021-04-28.html b/fr/adaptors/library/jobs/auto/Upsert-Team-Group-Name-2021-04-28.html index 0fe12528b10..539f6dfe11a 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-Team-Group-Name-2021-04-28.html +++ b/fr/adaptors/library/jobs/auto/Upsert-Team-Group-Name-2021-04-28.html @@ -22,13 +22,13 @@ - +

    Upsert Team/Group Name

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataValue, field, fields, relationship, upsert

    Expression

    // Upsert event by unique 'Name'
    upsert(
    'Event__c',
    'CommCare_Case_ID__c',
    fields(
    field(
    'Class_Group_Team__c',
    dataValue('form.question_group.group__team_name')
    ),
    relationship('RecordType', 'Name', 'Intervention'),
    field(
    'CommCare_Case_ID__c',
    dataValue('form.case.@case_id')
    ),
    )
    );
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16.html b/fr/adaptors/library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16.html index 91d6ae11227..68044c74127 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16.html +++ b/fr/adaptors/library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16.html @@ -22,13 +22,13 @@ - +

    Upsert User in Salesforce

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    dataPath, dataValue, each, field, fields, upsert

    Expression

    //Example job to upsert Users in Salesforce
    each('$.users[*]',
    dataPath('state.data.users'),
    upsert('User', 'Email', fields(
    field('Email', dataValue('email')),
    field('FirstName', dataValue('firstName')),
    field('LastName', dataValue('surname')),
    field('Active', 'true')
    ))
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/Upsert-to-mBrana-2021-05-11.html b/fr/adaptors/library/jobs/auto/Upsert-to-mBrana-2021-05-11.html index 720e0558648..b32bc043af6 100644 --- a/fr/adaptors/library/jobs/auto/Upsert-to-mBrana-2021-05-11.html +++ b/fr/adaptors/library/jobs/auto/Upsert-to-mBrana-2021-05-11.html @@ -22,13 +22,13 @@ - +

    Upsert to mBrana

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    upsert

    Expression

    // Your job goes here.
    upsert(
    'users', // the DB table
    'ON CONSTRAINT users_pkey', // a DB column with a unique constraint OR a CONSTRAINT NAME
    { name: 'Elodie', id: 7 },
    { writeSql:true, execute: true }
    );
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19.html b/fr/adaptors/library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19.html index e61b7a78493..56f52b3a3ec 100644 --- a/fr/adaptors/library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19.html +++ b/fr/adaptors/library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19.html @@ -22,13 +22,13 @@ - +

    WF1-1. Bulk get HH cases

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    each, get, map

    Expression

    fn(state => {
    const { baseUrl } = state.configuration;

    const caseTypes = ['Household'];

    //NOTE: You can use 'limit' to modify this batch size as desired
    const limit = 1000;

    //NOTE: indexedOnStart is the default sync start data the FIRST time the job runs
    const indexedOnStart = '2023-10-22T11:00:00';

    //NOTE: After first job run, OpenFn will check the job sync data ("lastRunAt") to set as the indexedOnStart
    const lastRunAt =
    typeof state.lastRunAt !== 'undefined' ? state.lastRunAt : indexedOnStart;
    console.log('Filtering cases with indexed_on_start > than ::', lastRunAt);
    //May 31st, 2023 at 3:00:13 PM.
    const queries = caseTypes.map(
    t => `?type=${t}&indexed_on_start=${lastRunAt}&limit=${limit}`
    //NOTE: If for testing, you want to fetch data for a specific historical range (e.g., between April 23 and 24)...
    //...then use the query string below instead of the one above on L16, and custom adjust the index_on start/end dates
    //t => `?type=${t}&indexed_on_start=2023-03-03T00:00:00&limit=${limit}&indexed_on_end=2023-03-06T00:00:00` //returns 14 records
    //t => `?type=${t}&indexed_on_start=2023-07-06T16:00:00&limit=${limit}&indexed_on_end=2023-07-06T16:30:00`
    );

    return { ...state, queries, baseUrl, payloads: [] };
    });

    // create a "recursiveGet" which will call itself if CommCare tells us there's
    // more data to fetch for the same form
    fn(state => {
    const recursiveGet = url =>
    get(
    url,
    {
    headers: { 'content-type': 'application/json' },
    },
    nextState => {
    const now = new Date();
    const { baseUrl, data, payloads } = nextState;

    const { meta, objects } = data;
    console.log('Metadata in CommCare response:', meta);

    const finalState = {
    ...nextState,
    payloads: [...payloads, ...objects],
    };

    if (meta.next) {
    console.log('Next query detected, recursing...');
    return recursiveGet(`${baseUrl}${meta.next}`)(finalState);
    }
    finalState.lastRunAt = now.toISOString().slice(0, 19);
    return finalState;
    }
    );

    return { ...state, recursiveGet };
    });

    // for each initial query, fetch data recursively
    each(
    '$.queries[*]',
    fn(state => {
    return state.recursiveGet(`${state.baseUrl}${state.data}`)(state);
    })
    );
    // log the total number of payloads returned
    fn(state => {
    console.log('Count of payloads', state.payloads.length);

    return { ...state, references: [], data: {} };
    });
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19.html b/fr/adaptors/library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19.html index 7d32586c48c..0f3a7eb9349 100644 --- a/fr/adaptors/library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19.html +++ b/fr/adaptors/library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19.html @@ -22,13 +22,13 @@ - +

    WF1-2. Bulk upsert HHs and HH Visits

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    bulk, join, map, query, JSON

    Expression

    fn(state => {
    if (state.payloads.length == 0)
    return { ...state, housevisits: [], households: [] };

    const owner_ids = state.payloads.map(data => data.properties.owner_id);
    const uniq_owner_ids = [...new Set(owner_ids)];

    return { ...state, uniq_owner_ids };
    });

    fn(state => {
    if (state.payloads.length == 0) return state;

    return query(
    `SELECT CommCare_User_ID__c, Id village, Parent_Geographic_Area__c area, Parent_Geographic_Area__r.Name name, Parent_Geographic_Area__r.Parent_Geographic_Area__c catchment FROM Location__c catchment WHERE CommCare_User_ID__c IN ('${state.uniq_owner_ids.join(
    "','"
    )}') GROUP BY Id, CommCare_User_ID__c, Parent_Geographic_Area__c, Parent_Geographic_Area__r.Name, Parent_Geographic_Area__r.Parent_Geographic_Area__c`
    )(state);
    });

    fn(state => {
    if (state.payloads.length == 0) return state;

    console.log('Done querying ✅');

    return state;
    });

    fn(state => {
    if (state.payloads.length == 0) return state;

    console.log(
    'Filtering out unwanted users and applying mapping for households and housevisits'
    );

    const [reference] = state.references;

    // console.log(JSON.stringify(reference.records, null, 2));

    const records = reference.records;
    const fetchReference = (owner_id, arg) => {
    const result =
    records && records.length > 0
    ? records.filter(record => record.CommCare_User_ID__c === owner_id)
    : 0;

    //TODO: Update default value for 'unknown location' before go-live
    return result.length > 0
    ? result[0][arg]
    : 'a000800001tMobaAAC' /*unknown location*/;
    };

    const supervisorMap = {
    community_health_nurse: 'Community Health Nurse',
    chw_supervisor: 'CHW Supervisor',
    chewschas: 'CHEWs/CHAs',
    other: 'Other',
    none: 'None',
    };

    const insuranceMap = {
    nhif: 'NHIF',
    Linda_mama: 'Linda mama',
    other_please_specify_if_active: 'Other',
    none: 'None',
    };

    const households = state.payloads
    /* HMN 050723
    .filter(
    h =>
    h.properties.commcare_username !== 'openfn.test' &&
    h.properties.commcare_username !== 'test.2021' &&
    h.properties.test_user !== 'Yes'
    )
    */
    .map(h => {
    // Special calculations ==================================================
    const insuranceStatus = h.properties.health_insurance;
    const Health_insurance_type__c =
    insuranceStatus && insuranceStatus === 'other_please_specify_if_active'
    ? 'Other'
    : insuranceStatus === 'nhif'
    ? 'NHIF'
    : insuranceStatus === 'Linda_mama' || 'linda_mama'
    ? 'Linda mama'
    : insuranceStatus;

    const hhStatus = h.properties.Household_Status;
    const Active_Household__c =
    hhStatus && hhStatus === 'No'
    ? false
    : hhStatus === 'Yes'
    ? true
    : hhStatus;

    const reason = h.properties.Reason_for_Inactive;
    const Inactive_Reason__c = reason
    ? reason.toString().replace(/_/g, ' ')
    : null;

    /*HMN remove this dependancy 07/07/2023
    const chw = h.properties.CHW_ID;
    const Household_CHW__c =
    chw === 'a030800001zQrk' ? 'a030800001zQrk5' : chw ? chw : undefined;
    // =======================================================================
    */
    return {
    CommCare_Username__c: h.properties.commcare_username,
    MOH_household_code__c: h.properties.moh_code,
    CommCare_Code__c: h.case_id,
    Source__c: true,
    // TODO: Prod mapping to add back before go-live =======================
    Household_CHW__c: h.properties.CHW_ID, // Uncomment me to go live!
    //Household_CHW__c: 'a032400000GHpdsAAD', // Comment me OUT to go live!
    // Household_CHW__c: 'a03AW00000643nLYAQ',
    // =====================================================================
    Catchment__c: fetchReference(h.properties.owner_id, 'catchment'),
    Area__c: fetchReference(h.properties.owner_id, 'area'),
    Village__c: fetchReference(h.properties.owner_id, 'village'),
    Household_Village__c: h.properties.village,
    Deaths_in_the_last_6_months__c:
    h.properties.deaths_in_past_6_months > 0 ? 'Yes' : 'No',
    Access_to_safe_water__c: h.properties.Safe_Water,
    Treats_Drinking_Water__c: h.properties.Treats_Drinking_Water,
    Tippy_Tap__c: h.properties.Active_Handwashing_Station,
    Pit_Latrine__c: h.properties.Functional_Latrine,
    Rubbish_Pit__c: h.properties.Rubbish_Pit,
    Drying_Rack__c: h.properties.Drying_Rack,
    Kitchen_Garden__c: h.properties.Kitchen_Garden,
    Cookstove__c: h.properties.Improved_Cooking_Method,
    Clothe__c: h.properties.Clothesline,
    WASH_Trained__c: h.properties.WASH_Trained,
    Uses_ITNs__c: h.properties.ITNs,
    Has_muac_tape__c: h.properties.family_muac_tape_available,
    Health_insurance__c: h.properties.health_insurace_cover,
    Health_insurance_active_status__c: h.properties.healthinsurance_active,
    Health_insurance_type__c,
    Other_Health_Insurance__c: h.properties.if_other_please_specify,
    Work_with_TBA__c: h.properties.tba,
    TBA_name__c: h.properties.which_tba,
    Last_Modified_Date_CommCare__c: h.server_date_modified, //Need a case property,
    Active_Household__c,
    Inactive_Reason__c,
    Active_in_Nutrition_Program__c:
    h.properties.enrolled_in_a_lwala_nutrition_program,
    lwala_nutrition_program_enrollment_date__c:
    h.properties.lwala_nutrition_program_enrollment_date,
    Trained_in_gardening__c: h.properties.household_trained_on_gardening,
    household_trained_on_gardening_date__c:
    h.properties.when_was_the_household_trained_on_gardening,
    Seed_Input_Support__c:
    h.properties.household_provided_with_seed_input_support,
    household_provided_with_seed_input_suppo__c:
    h.properties.when_was_the_household_provided_with_seed_input_support,
    MIYCN_Trained__c: h.properties.household_trained_on_MIYC,
    // TODO: @Aleksa to find out if Case_Closed_Date__c still exist
    Case_Closed_Date__c: h.date_closed && h.date_closed == true
    ? h.server_modified_on
    : undefined
    };
    });

    const housevisits = state.payloads
    //HMN remove test user filters
    /*
    .filter(
    h =>
    h.properties.commcare_username !== 'openfn.test' &&
    h.properties.commcare_username !== 'test.2021' &&
    h.properties.test_user !== 'Yes'
    )*/
    .map(h => {
    // Special calculations ==================================================
    const visitIdC =
    h.case_id + '_' + h.properties.last_form_opened_date_and_time;

    const hVstatus = h.properties.Household_Status;
    const Active_Household__c =
    hVstatus === 'No' ? false : hVstatus === 'Yes' ? true : hVstatus;

    const insuranceTypeC = () => {
    let status = h.properties.health_insurance;

    let value =
    status && status !== ''
    ? status
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return insuranceMap[value] || value;
    })
    : undefined;
    return value ? value.join(';') : undefined;
    };

    const openedC = () => {
    const form_opened = h.properties.last_form_opened_date_and_time;

    if (form_opened) {
    const value1 = form_opened.split('-').slice(0, 2).join('-');
    const value2 = form_opened.split('-').slice(2).join('-');
    const formattedValue = [value1, value2].join(' ');
    return new Date(formattedValue).toISOString();
    }
    return undefined;
    };

    return {
    CommCare_Username__c: h.properties.commcare_username,
    CommCare_Visit_ID__c: visitIdC,
    Catchment__c: fetchReference(h.properties.owner_id, 'catchment'),
    'Household__r.CommCare_Code__c': h.case_id,
    Date__c: h.properties.Date,
    Form_Submitted__c: h.properties.last_form_opened_name,
    Active_Household__c: Active_Household__c,
    Active_in_Nutrition_Program__c:
    h.properties.enrolled_in_a_lwala_nutrition_program,
    lwala_nutrition_program_enrollment_date__c:
    h.properties.lwala_nutrition_program_enrollment_date,
    Trained_in_gardening__c: h.properties.household_trained_on_gardening,
    household_trained_on_gardening_date__c:
    h.properties.when_was_the_household_trained_on_gardening,
    Seed_Input_Support__c:
    h.properties.household_provided_with_seed_input_support,
    household_provided_with_seed_input_suppo__c:
    h.properties.when_was_the_household_provided_with_seed_input_support,
    MIYCN_Trained__c: h.properties.household_trained_on_MIYCN,
    Kitchen_Garden__c: h.properties.Kitchen_Garden,
    Access_to_safe_water__c: h.properties.Safe_Water,
    Treats_Drinking_Water__c: h.properties.Treats_Drinking_Water,
    Tippy_Tap__c: h.properties.Active_Handwashing_Station,
    Pit_Latrine__c: h.properties.Functional_Latrine,
    Rubbish_Pit__c: h.properties.Rubbish_Pit,
    Drying_Rack__c: h.properties.Drying_Rack,
    Cookstove__c: h.properties.Improved_Cooking_Method,
    Clothe__c: h.properties.Clothesline,
    WASH_Trained__c: h.properties.WASH_Trained,
    Has_muac_tape__c: h.properties.family_muac_tape_available,
    Uses_ITNs__c: h.properties.ITNs,
    Supervisor_Visit__c: h.properties.supervisor_visit
    ? supervisorMap[h.properties.supervisor_visit]
    : null,
    Health_insurance__c: h.properties.health_insurace_cover,
    Health_insurance_active_status__c: h.properties.healthinsurance_active,
    Health_insurance_type__c: insuranceTypeC(),

    Other_Health_Insurance__c: h.properties.if_other_please_specify,
    CommCare_Form_Opened__c: openedC(),

    };
    });

    return { ...state, households, housevisits, fetchReference };
    });

    /* JSON logging of records
    fn(state => {
    console.log('HHs to upsert ::', JSON.stringify(state.households));
    return state;
    });
    */

    bulk(
    'Household__c',
    'upsert',
    {
    extIdField: 'CommCare_Code__c',
    failOnError: true,
    allowNoOp: true,
    },
    state => {
    console.log('Bulk upserting households...');
    return state.households;
    }
    );

    fn(state => {
    if (state.payloads.length == 0) return state;

    console.log('house holds bulk upsert done');
    return state;
    });

    // TODO clean up in QA used for troubleshooting
    // Uncomment this block to add cooldown
    // fn(state => {
    // return new Promise((resolve, reject) => {
    // setTimeout(() => {
    // console.log('4 second cooldown finished.');
    // resolve(state);
    // }, 4000);
    // });
    // });

    bulk(
    'Visit__c',
    'upsert',
    {
    extIdField: 'CommCare_Visit_ID__c',
    failOnError: true,
    allowNoOp: true,
    },
    state => {
    console.log('Bulk upserting housevisits...');
    return state.housevisits;
    }
    );

    fn(state => {
    if (state.payloads.length == 0) return state;
    console.log('house visits bulk upsert done');
    return state;
    });

    // TODO clean up in QA for troubleshooting
    // Uncomment this block to add cooldown
    // fn(state => {
    // return new Promise((resolve, reject) => {
    // setTimeout(() => {
    // console.log('Final 4 second cooldown finished.');
    // resolve(state);
    // }, 4000);
    // });
    // });
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19.html b/fr/adaptors/library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19.html index eee421cc2f8..eda16dc87e3 100644 --- a/fr/adaptors/library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19.html +++ b/fr/adaptors/library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19.html @@ -22,13 +22,13 @@ - +

    WF2-1. Bulk get Person cases

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    each, get, map, JSON

    Expression

    fn(state => {
    const { baseUrl } = state.configuration;

    const caseTypes = ['Person'];

    //NOTE: You can use 'limit' to modify this batch size as desired
    const limit = 1000; //E.g., change to 10 to process records in smaller batch sizes

    //NOTE: indexedOnStart is the default sync start data the FIRST time the job runs
    const indexedOnStart = '2023-10-22T17:00:00';


    //NOTE: After first job run, OpenFn will check the job sync data ("lastRunAt") to set as the indexedOnStart
    const lastRunAt =
    typeof state.lastRunAt !== 'undefined' ? state.lastRunAt : indexedOnStart;
    console.log('Filtering cases with indexed_on_start > than ::', lastRunAt);

    const queries = caseTypes.map(
    t => `?type=${t}&indexed_on_start=${lastRunAt}&limit=${limit}`
    //NOTE: If for testing, you want to fetch data for a specific historical range (e.g., between April 23 and 24)...
    //...then use the query string below instead of the one above on L16, and custom adjust the index_on start/end dates
    // t => `?type=${t}&indexed_on_start=2023-08-07T00:00:00&limit=${limit}&indexed_on_end=2023-08-07T10:00:00`
    );

    return { ...state, queries, baseUrl, payloads: [] };
    });

    // create a "recursiveGet" which will call itself if CommCare tells us there's
    // more data to fetch for the same form
    fn(state => {
    const recursiveGet = url =>
    get(
    url,
    {
    headers: { 'content-type': 'application/json' },
    },
    nextState => {
    const now = new Date();
    const { baseUrl, data, payloads } = nextState;

    const { meta, objects } = data;
    console.log('Metadata in CommCare response:', meta);

    const finalState = {
    ...nextState,
    payloads: [...payloads, ...objects],
    };

    if (meta.next) {
    console.log('Next query detected, recursing...');
    return recursiveGet(`${baseUrl}${meta.next}`)(finalState);
    }
    finalState.lastRunAt = now.toISOString().slice(0, 19);
    return finalState;
    }
    );

    return { ...state, recursiveGet };
    });

    // for each initial query, fetch data recursively
    each(
    '$.queries[*]',
    fn(state => {
    return state.recursiveGet(`${state.baseUrl}${state.data}`)(state);
    })
    );
    // log the total number of payloads returned
    fn(state => {
    console.log('Count of payloads', state.payloads.length);
    //HMN 11072023
    // console.log(JSON.stringify(state.payloads, null, 2));

    return { ...state, references: [], data: {} };
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19.html b/fr/adaptors/library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19.html index c1db006bb22..9a47bbf383f 100644 --- a/fr/adaptors/library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19.html +++ b/fr/adaptors/library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19.html @@ -22,13 +22,13 @@ - +

    WF2-2. Bulk upsert Persons

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    bulk, dataValue, field, fields, join, map, query, relationship, upsertIf, JSON

    Expression

    fn(state => {
    if (state.payloads.length == 0)
    return {
    ...state,
    householdMapping: [],
    headOfHouseholdMapping: [],
    motherMapping: [],
    caregiverMapping: [],
    sfRecordMapping: [],
    };
    // JSON logging of records
    //HMN debug
    //console.log('cases before query :: ', JSON.stringify(state.payloads, null, 2));
    const owner_ids = state.payloads.map(data => data.properties.owner_id);
    const uniq_owner_ids = [...new Set(owner_ids)];

    return { ...state, uniq_owner_ids };
    });

    // get data from SF
    fn(state => {
    if (state.payloads.length == 0) return state;

    return query(
    `SELECT CommCare_User_ID__c, Id village, Parent_Geographic_Area__c area, Parent_Geographic_Area__r.Name name, Parent_Geographic_Area__r.Parent_Geographic_Area__c catchment FROM Location__c WHERE CommCare_User_ID__c IN ('${state.uniq_owner_ids.join(
    "','"
    )}') GROUP BY Id, CommCare_User_ID__c, Parent_Geographic_Area__c, Parent_Geographic_Area__r.Name, Parent_Geographic_Area__r.Parent_Geographic_Area__c`
    )(state);
    });

    fn(state => {
    if (state.payloads.length == 0) return state;

    const [reference] = state.references;

    // console.log(JSON.stringify(reference.records, null, 2));

    const records = reference.records;
    const fetchReference = (owner_id, arg) => {
    const result =
    records && records.length > 0
    ? records.filter(record => record.CommCare_User_ID__c === owner_id)
    : 0;

    //TODO: Update default value for 'unknown location' before go-live
    return result.length > 0 ? result[0][arg]
    : 'a000800001tMobaAAC' /*unknown location*/;

    };

    const cleanChoice = choice => {
    if (choice) {
    return choice.charAt(0).toUpperCase() + choice.slice(1).replace('_', ' ');
    } else {
    return '';
    }
    };

    const handleMultiSelect = multiField => {
    return multiField
    ? multiField
    .replace(/ /gi, ';')
    .toLowerCase()
    .split(';')
    .map(value => {
    return (
    value.charAt(0).toUpperCase() + value.slice(1).replace('_', ' ')
    );
    })
    .join(';')
    : '';
    };

    const pregDangerMap = {
    Vaginal_Bleeding: 'Vaginal Bleeding',
    Water_Breaks: 'Water Breaks before Time of Delivery',
    Prolonged_Labour: 'Prolonged Labour over 12 Hours',
    Convulsions: 'Convulsions or Fits',
    Abdominal_Pain: 'Severe Abdominal Pain before Delivery',
    High_Fever: 'High Fever',
    Low_Baby_Movement: 'Feeling the Baby move less or not at all',
    Swelling: 'Swelling of Face and Hands',
    Severe_Headache: 'Severe or Continuous Headache for more than 12 hours',
    Severe_Vomiting: 'Severe or Continuous Vomiting',
    none: 'None',
    };

    const counselMap = {
    anc_visits: 'ANC Visits',
    early_initiation_of_anc_less_than_3_months:
    'Early initiation of ANC (less than 3 months)',
    completing_recomended_anc_visits: 'Completing recomended ANC visits',
    danger_signs: 'Danger signs',
    skilled_birth: 'Skilled birth',
    immunization: 'Immunization',
    individual_birth_plan: 'Individual Birth Plan',
    emergency_preparedness: 'Emergency preparedness',
    childcare_and_affection: 'Childcare and affection',
    nutrition_counseling: 'Nutrition counseling',
    growth_monitoring: 'Growth monitoring',
    exclusive_breastfeeding: 'Exclusive breastfeeding',
    complementary_feeding: 'Complementary feeding',
    sleeping_under_llitn: 'Sleeping under LLITN',
    knowing_hiv_status: 'Knowing HIV status',
    indoor_pollution: 'Indoor pollution',
    personal_hygiene: 'Personal Hygiene',
    safe_drinking_water: 'Safe drinking water',
    safe_disposal_of_human_waste: 'Safe disposal of human waste',
    };

    const serviceMap = {
    Scheduled_PSC_Apt: 'Scheduled PSC Apt',
    Adverse_Drug_Reaction_Side_Effect: 'Adverse Drug Reaction/Side Effect',
    Malnutrition: 'Malnutrition',
    Malaria: 'Malaria',
    TB: 'TB',
    Treatment_for_Other_OIs: 'Treatment for other Ols',
    ARI: 'ARI',
    Anemia: 'Anemia',
    Diarrhea: 'Diarrhea',
    Pregnancy_Care: 'Pregnancy Care (ANC)',
    Family_Planning: 'Family Planning (FP)',
    Preconception_Counseling: 'Preconception Counseling',
    Injury: 'Injury',
    Other: 'Other',
    };

    const reasonMapping = {
    lack_of_access_to_fp_information: 'Lack of access to FP information',
    no_access_to_fp_services_hospitals:
    'Lack of hospitals or places where FP services can be accessed',
    not_willing_to_use_fp_due_to_negative_effects_myths_and_misconceptions:
    'Myths and misconceptions',
    barriers_at_service_delivery_points: 'Barriers at service delivery points',
    pregnant: 'The client is pregnant',
    intentions_of_getting_pregnant: 'Intentions of getting pregnant',
    not_sexually_active: 'The client is not sexually active',
    other_barriers_culture_male_partners_parents_etc:
    'Other barriers (culture, male partners, parents, etc)',
    };

    const milestoneTypeMap = {
    cognitive_delays_learning_difficulties:
    'Cognitive Delays Learning Difficulties',
    motor_delays: 'Motor Delays',
    speech_and_language_delay: 'Delay Speech and Language Delay',
    social_and_emotional: 'Social and emotional',
    };

    const milestoneMap = {
    movement: 'Movement',
    hearing: 'Hearing',
    communication: 'Communication',
    seeing: 'Seeing',
    cognitive_delays: 'Cognitive Delays',
    play: 'Play',
    };
    const nutritionMap = {
    severe: 'Severely Malnourished',
    moderate: 'Moderately Malnourished',
    normal: 'Normal',
    };

    const fpMethodMap = {
    male_condoms: 'Male condoms',
    female_condoms: 'Female condoms',
    pop: 'POP',
    coc: 'COC',
    emergency_pills: 'Emergency pills',
    none: 'None',
    };

    return {
    ...state,
    counselMap,
    serviceMap,
    reasonMapping,
    milestoneTypeMap,
    milestoneMap,
    nutritionMap,
    pregDangerMap,
    fpMethodMap,
    cleanChoice,
    handleMultiSelect,
    fetchReference,
    };
    });

    // build sfRecord before upserting
    fn(state => {
    if (state.payloads.length == 0) return state;

    const {
    counselMap,
    reasonMapping,
    milestoneTypeMap,
    milestoneMap,
    nutritionMap,
    pregDangerMap,
    fpMethodMap,
    cleanChoice,
    handleMultiSelect,
    fetchReference,
    } = state;

    const householdMapping = [
    ...new Map(
    state.payloads
    .filter(
    p =>
    p.indices.parent.case_id !== undefined &&
    p.indices.parent.case_id !== ''
    )
    .map(p => {
    return {
    CommCare_Code__c:
    p.indices.parent.case_id || p.properties.parent_id,
    };
    })
    .map(h => [h.CommCare_Code__c, h])
    ).values(),
    ];

    const headOfHouseholdMapping = state.payloads
    .filter(
    p =>
    p.properties.head_of_household_case_id !== undefined &&
    p.properties.head_of_household_case_id !== ''
    )
    .map(p => {
    return {
    CommCare_Code__c: p.indices.parent.case_id || p.properties.parent_id,
    'Head_of_Household__r.CommCare_ID__c':
    p.properties.head_of_household_case_id,
    };
    });

    const motherMapping = state.payloads
    .filter(
    p =>
    /*HMN 050723 p.properties.commcare_username !== 'test.2021' &&
    p.properties.test_user !== 'Yes' &&
    */
    p.properties.mother_case_id !== undefined &&
    p.properties.mother_case_id !== '' &&
    p.case_id!== undefined
    )
    .map(p => {
    return {
    'Mother__r.CommCare_ID__c': p.properties.mother_case_id,
    CommCare_ID__c: p.case_id,
    };
    });

    const caregiverMapping = state.payloads
    .filter(
    p =>
    /*HMN 070523 p.properties.commcare_username !== 'test.2021' &&
    p.properties.test_user !== 'Yes' &&
    */
    p.properties.caretaker_case_id !== undefined &&
    p.properties.caretaker_case_id !== '' &&
    p.case_id!== undefined
    )
    .map(p => {
    return {
    'Primary_Caregiver_Lookup__r.CommCare_ID__c':
    p.properties.caretaker_case_id,
    CommCare_ID__c: p.case_id,
    };
    });

    const sfRecordMapping = state.payloads
    .filter(
    p =>
    /*HMN 050723
    p.properties.commcare_username !== 'test.2021' &&
    p.properties.test_user !== 'Yes'
    */
    p.case_id !== undefined &&
    p.case_id !== ''
    )
    .map(p => {
    // For unbornOrName
    const name1 = p.properties.Person_Name || p.properties.case_name;
    const unborn = p.properties.name;

    const name2 =
    name1 === undefined || name1 === '' || name1 === null
    ? unborn
    : name1.replace(/\w\S*/g, function (txt) {
    return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });
    const unbornOrName = name1 !== null ? name2 : 'Unborn Child';
    // console.log('Person Name ::', unbornOrName);

    // For chronicIllness
    const chronicChoice =p.properties.please_specify_which_chronic_illness_the_person_has;
    const choice2 = handleMultiSelect(chronicChoice);
    const chronicIllness = choice2 ? choice2.replace(/_/g, ' ') : '';

    const disabilityC =
    p.properties.disability !== undefined && p.properties.disability !=='---' && p.properties.disability !== null
    ? p.properties.disability
    .toLowerCase()
    .split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
    .join(';')
    : null;
    //HMN remove
    console.log(p.case_id)
    //console.log(disabilityC)
    //
    const otherDisability =
    p.properties.other_disability !== undefined && p.properties.other_disability !=='---' && p.properties.other_disability !== null
    ? p.properties.other_disability
    .toLowerCase()
    .split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
    .join(';')
    : null;
    //HMN remove
    //console.log(otherDisability)
    //HMN
    const hh_relation = p.properties.relation_to_hh;

    const relationToTheHead = hh_relation !== undefined && hh_relation !== null
    ? hh_relation.toString().replace(/_/g, ' ').charAt(0).toUpperCase() +
    hh_relation.toString().replace(/_/g, ' ').slice(1)
    : null;

    const childStatus =
    p.properties.Child_Status && p.properties.Record_Type === 'Unborn'
    ? (p.properties.Child_Status = 'Unborn')
    : p.properties.Child_Status && p.properties.Record_Type === 'Born'
    ? (p.properties.Child_Status = 'Born')
    : p.properties.Child_Status;

    const childDangerSigns = p.properties.Other_Danger_Signs !== undefined && p.properties.Other_Danger_Signs !== null
    ? p.properties.Other_Danger_Signs.toLowerCase()
    .split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
    .join(';')
    .toString()
    .replace(/_/g, ' ')
    : p.properties.Other_Danger_Signs;

    //clientCounselled
    const clientChoices = p.properties.counsel_topic;
    const choiceGroups = clientChoices ? clientChoices.split(' ') : null;
    const clientCounselled = choiceGroups
    ? choiceGroups
    .map(cg => {
    return counselMap[cg];
    })
    .join(';')
    : choiceGroups;

    // fpMethodDistributed
    const fpStatus = p.properties.FP_commodity;
    const fpValue =
    fpStatus && fpStatus !== ''
    ? fpStatus
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return fpMethodMap[value] || value;
    })
    : undefined;
    const fpMethodDistributed = fpValue ? fpValue.join(';') : undefined;

    // placeOfDelivery
    const pFacility = p.properties.Delivery_Type;
    const placeOfDelivery =
    pFacility === 'Skilled'
    ? 'Facility'
    : pFacility === 'Unskilled'
    ? 'Home'
    : undefined;

    // reasonForNotTakingFP
    const rStatus = p.properties.No_FPmethod_reason;
    const rValue =
    rStatus && rStatus !== ''
    ? rStatus
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return reasonMapping[value] || value;
    })
    : undefined;
    const reasonForNotTakingFP = rValue ? rValue.join(';') : undefined;

    const recordType = p.properties.Record_Type;


    return {
    // TODO @aleksa, Source__c is causing an error
    Source__c: true,
    CommCare_ID__c: p.case_id,

    //HMN 05072023 'Primary_Caregiver_Lookup__r.CommCare_ID__c':p.properties.caretaker_case_id,
    //HMN 05072023 'Mother__r.CommCare_ID__c': p.properties.mother_case_id,
    'Household__r.CommCare_Code__c':
    p.properties.parent_id || p.indices.parent.case_id,
    commcare_location_id__c: p.properties.commcare_location_id,
    CommCare_Username__c: p.properties.commcare_username,
    Telephone__c: p.properties.contact_phone_number,

    Consent_for_data_use__c: p.properties.data_sharing_consent,
    CommCare_HH_Code__c: p.indices.parent.case_id,
    Client_Status__c: p.properties.Client_Status,
    Catchment__c: fetchReference(p.properties.owner_id, 'catchment'),
    Area__c: fetchReference(p.properties.owner_id, 'area'),
    Household_Village__c: fetchReference(p.properties.owner_id, 'village'),
    Name: unbornOrName,
    Chronic_illness__c: chronicIllness,
    Currently_enrolled_in_school__c: p.properties.enrolled_in_school,
    Education_Level__c: p.properties.Education_Level !== null && p.properties.Education_Level !== undefined
    ? p.properties.Education_Level.toString().replace(/_/g, ' ')
    : null,
    Relation_to_the_head_of_the_household__c: relationToTheHead,
    Gender__c: p.properties.Gender !== undefined ? p.properties.Gender : null,
    Disability__c: disabilityC,
    Other_disability__c: otherDisability,
    Use_mosquito_net__c: p.properties.sleep_under_net,
    Birth_Certificate__c: p.properties.birth_certificate,
    Child_Status__c: childStatus,
    'RecordType.Name': recordType === 'Unborn' || recordType === ''
    ? 'Child'
    : recordType.toString().replace(/_/g, ' '), //convert Unborn children to Child RT
    //TT5 Mother Information =====================//
    MCH_booklet__c: p.properties.mch_booklet,
    Reason_for_not_taking_a_pregnancy_test__c: p.properties.No_Preg_Test
    ? p.properties.No_Preg_Test.toString().replace(/_/g, ' ')
    : undefined,
    Pregnancy_danger_signs__c: p.properties.pregnancy_danger_signs
    ? pregDangerMap[p.properties.pregnancy_danger_signs]
    : undefined,
    Individual_birth_plan_counselling__c:
    p.properties.individual_birth_plan,
    Child_Danger_Signs__c: childDangerSigns,
    //HAWI =====================//

    Unique_Patient_Code__c: p.properties.Unique_Patient_Code,
    Active_in_Support_Group__c: p.properties.Active_in_Support_Group,
    Preferred_Care_Facility__c: p.properties.Preferred_Care_Facility,
    Currently_on_ART_s__c: p.properties.ART,
    ART_Regimen__c: p.properties.ARVs,
    HAWI_Defaulter__c: p.properties.default === 'Yes' ? true : false,
    Date_of_Default__c: p.properties.date_of_default,
    Know_HIV_status__c: p.properties.known_hiv_status,
    HIV_Status__c: p.properties.hiv_status,
    //Illness ========================//
    Persons_temperature__c: p.properties.temperature,
    Days_since_illness_start__c: p.properties.duration_of_sickness,
    Current_Malaria_Status__c: p.properties.malaria_test_results,
    Malaria_test__c: p.properties.malaria_test,
    Last_Malaria_Home_Test__c: p.properties.malaria_test_date,
    Last_Malaria_Home_Treatment__c: cleanChoice(
    p.properties.malaria_test_date
    ),
    Cough_over_14days__c: p.properties.symptoms_check_cough,
    TB_patients_therapy_observed__c: p.properties.observed_tb_therapy,
    Injuries_or_wounds__c: p.properties.wounds_or_injuries,
    Pulse_Oximeter__c: p.properties.pulse_oximeter_available,
    Heart_Rate_Pulse_Oximeter__c: p.properties.heart_rate_pulse_oximeter,
    Oxygen_Concentration_Pulse_Oximeter__c:
    p.properties.oxygen_concentration,
    Can_child_drink__c: p.properties.can_child_drink,
    Antibiotic_provided_for_fast_breathing__c: cleanChoice(
    p.properties.antibiotic_fast_breathing
    ),
    Antibiotic_provided_for_chest_indrawing__c: cleanChoice(
    p.properties.antibiotic_chest_indrawing
    ),
    Default_on_TB_treatment__c: cleanChoice(
    p.properties.default_tb_treatment
    ),
    Treatment_Distribution__c: cleanChoice(
    p.properties.distributed_treatments
    ),
    //Delivery =====================//
    Immediate_Breastfeeding__c: p.properties.Breastfeeding_Delivery,
    Place_of_Delivery__c: placeOfDelivery,
    Delivery_Facility__c: p.properties.Delivery_Facility
    ? p.properties.Delivery_Facility.toString().replace(/_/g, ' ')
    : null,
    Delivery_Facility_Other__c: p.properties.Delivery_Facility_Other,
    //Family Planning =====================//
    LMP__c: p.properties.LMP,
    Family_Planning__c: p.properties.family_planning,
    Family_Planning_Method__c: p.properties.family_planning_method,
    FP_Method_Distributed__c: fpMethodDistributed,
    Reasons_for_not_taking_FP_method__c: reasonForNotTakingFP,
    Pregnant__c: p.properties.Pregnant === 'Yes' ? true : false,
    Date_of_Delivery__c: p.properties.delivery_date,
    Counselled_on_FP_Methods__c: p.properties.CounselledFP_methods,
    Client_counselled_on__c: clientCounselled,
    Client_provided_with_FP__c: cleanChoice(
    p.properties[
    'was_the_woman_15-49yrs_provided_with_family_planning_commodities_by_chv'
    ]
    ),
    Received_pregnancy_test__c:
    p.properties.did_you_adminsiter_a_pregnancy_test,
    Pregnancy_test_result__c: p.properties.pregnancy_test_result,
    Gravida__c: p.properties.Gravida,
    Parity__c: p.properties.Parity,
    //TT5 Child Information =====================//
    Exclusive_Breastfeeding__c: p.properties.Exclusive_Breastfeeding,
    Counselled_on_Exclusive_Breastfeeding__c: p.properties.counseling,
    Newborn_visited_48_hours_of_delivery__c:
    p.properties.newborn_visited_48_hours_of_delivery,
    Newborn_visit_counselling__c: cleanChoice(
    p.properties.did_you_consel_the_mother_on1
    ),
    mother_visited_48_hours_of_the_delivery__c:
    p.properties.visit_mother_48,
    Mother_visit_counselling__c: cleanChoice(
    p.properties.did_you_consel_the_mother_on2
    ),
    Newborn_visited_by_a_CHW_within_6_days__c:
    p.properties.visit_6_days_from_delivery,
    //Nutrition =====================//
    Caretaker_action_after_muac_screening__c:
    p.properties.mother_screened_muac_action,
    Caretaker_muac_findings__c:
    p.properties.mother_screened_child_muac_result,
    Food_groups_3_times_a_day__c: p.properties.food_groups,
    Caretaker_screened_for_muac_this__c: cleanChoice(
    p.properties.mother_screened_child_muac
    ),
    Caretaker_trained_in_muac__c: cleanChoice(
    p.properties.mother_trained_muac
    ),
    of_Caretaker_MUAC_screenings__c: p.properties.mother_nb_screening,
    Current_Height__c: p.properties.current_height,
    Current_MUAC__c: p.properties.MUAC,
    Current_Nutrition_Status__c: p.properties.Nutrition_Status
    ? nutritionMap[p.properties.Nutrition_Status]
    : undefined,
    //TT5 & HAWI =====================//
    TT5_Mother_Registrant__c: p.properties.Pregnant == 'Yes' ? 'Yes' : null,
    Enrollment_Date__c:
    p.properties.age < 5 || p.properties.Pregnant == 'Yes'
    ? p.server_date_modified
    : null,
    HAWI_Enrollment_Date__c:
    p.properties.hiv_status == 'positive' ? p.server_date_modified : null,
    Thrive_Thru_5_Registrant__c:
    p.properties.age < 5 || p.properties.Pregnant == 'Yes' ? 'Yes' : 'No',
    HAWI_Registrant__c:
    p.properties.hiv_status == 'positive' ? 'Yes' : 'No',
    //ANC =====================//
    ANC_1__c:
    p.properties.ANC_1 && p.properties.ANC_1 !== ''
    ? p.properties.ANC_1
    : undefined,
    ANC_2__c:
    p.properties.ANC_2 && p.properties.ANC_2 !== ''
    ? p.properties.ANC_2
    : undefined,
    ANC_3__c:
    p.properties.ANC_3 && p.properties.ANC_3 !== ''
    ? p.properties.ANC_3
    : undefined,
    ANC_4__c:
    p.properties.ANC_4 && p.properties.ANC_4 !== ''
    ? p.properties.ANC_4
    : undefined,
    ANC_5__c:
    p.properties.ANC_5 && p.properties.ANC_5 !== ''
    ? p.properties.ANC_5
    : undefined,
    Date_of_Birth__c:
    p.properties.DOB && p.properties.DOB !== ''
    ? p.properties.DOB.replace(/\\/g, '-')
    : undefined,
    //Immunization =====================//
    // Child_missed_immunization_type__c:
    // p.form.TT5.Child_Information.Immunizations.immunization_type,
    BCG__c: p.properties.BCG,
    OPV_0__c: p.properties.OPV_0,
    Measles_6__c: p.properties.Measles_6,
    Measles_9__c: p.properties.Measles_9,
    Measles_18__c: p.properties.Measles_18,
    OPV_1__c: p.properties.OPV_PCV_Penta_1,
    OPV_2__c: p.properties.OPV_PCV_Penta_2,
    OPV_3__c: p.properties.OPV_PCV_Penta_3,
    Rotavirus_1__c: p.properties.rotavirus_1,
    Rotavirus_2__c: p.properties.rotavirus_2,
    IPV__c: p.properties.IPV,
    Vitamin_A_12__c: p.properties.Vitamine_A,
    Vitamin_A_18__c: p.properties.Vitamine_A_2,
    Vitamin_A_24__c: p.properties.Vitamine_A_3,
    Deworming_12__c: p.properties.Deworming_1,
    Deworming_18__c: p.properties.Deworming_2,
    Deworming_24__c: p.properties.Deworming_3,
    //ECD =====================//
    Did_you_counsel_caregiver_on__c: cleanChoice(
    p.properties.did_you_counsel_the_caregiver_on_delayed_milestones
    ),
    Delayed_Milestone__c: cleanChoice(
    p.properties.does_the_child_has_a_delayed_milestone
    ),
    Child_has_2_or_more_play_items__c: cleanChoice(
    p.properties.does_the_child_has_2_or_more_play_items_at_home
    ),
    Child_has_3_or_more_picture_books__c: cleanChoice(
    p.properties.does_the_child_has_3_or_more_picture_books
    ),
    Delayed_Milestones_Counselled_On__c: p.properties
    .which_delayed_milestone_area_did_you_counsel_the_caregiver_on
    ? milestoneMap[
    p.properties
    .which_delayed_milestone_area_did_you_counsel_the_caregiver_on
    ]
    : undefined,
    Delayed_Milestone_Type__c: p.properties.which_delayed_milestone
    ? milestoneTypeMap[p.properties.which_delayed_milestone]
    : undefined,
    //Death =====================//
    Date_of_Death__c: p.properties.Date_of_Death,
    Cause_of_Death__c: p.properties.cause_of_death_dead
    ? p.properties.cause_of_death_dead.toString().replace(/_/g, ' ')
    : p.properties.cause_of_death_dead,
    Verbal_autopsy__c: p.properties.verbal_autopsy,
    //Closing =====================//
    Last_Modified_Date_CommCare__c: p.date_modified,
    Case_Closed_Date__c: p.date_closed,
    };
    });

    sfRecordMapping.forEach(rec => {
    Object.entries(rec).forEach(([key, value]) => {
    if (value === '' || value === null) rec[key] = undefined;
    });
    });

    // TODO clean up after QA
    // console.log(JSON.stringify(caregiverMapping, null, 2), 'careGiver');
    // console.log(JSON.stringify(motherMapping, null, 2), 'Mother');
    //console.log(JSON.stringify(sfRecordMapping, null, 2), 'sfRecordMapping');
    // console.log(JSON.stringify(householdMapping, null, 2), 'householdMapping');
    // console.log(
    // JSON.stringify(headOfHouseholdMapping, null, 2),
    // 'headOfHouseholdMapping'
    // );

    return {
    ...state,
    motherMapping,
    sfRecordMapping,
    caregiverMapping,
    householdMapping,
    headOfHouseholdMapping,
    };
    });


    // TODO, Clean up when pass QA
    /*fn(state => {
    state.sfRecordMapping.forEach(rec => {
    Object.entries(rec).forEach(([key, value]) => {
    if (typeof key !== 'string') throw `${key} is not a string`;
    });
    });
    return state;
    });
    */
    // bulk(
    // 'Household__c',
    // 'upsert',
    // {
    // extIdField: 'CommCare_Code__c',
    // failOnError: true,
    // allowNoOp: true,
    // },
    // state => {
    // console.log('Bulk upserting...');
    // return state.householdMapping;
    // }
    // );

    // TODO, Clean up when pass QA
    // upsert data to SF
    // upsertIf(
    // state.data.properties.commcare_username !== 'test.2021' &&
    // state.data.properties.test_user !== 'Yes',
    // 'Person__c',
    // 'CommCare_ID__c',
    // state => state.sfRecord
    // );

    bulk(
    'Person__c',
    'upsert',
    {
    extIdField: 'CommCare_ID__c',
    failOnError: true,
    allowNoOp: true,
    },
    state => {
    console.log('Bulk upserting persons ::');
    //HMN commented this
    //console.log(JSON.stringify(state.sfRecordMapping, null, 2));
    return state.sfRecordMapping;
    }
    );
    // TODO, Clean up when pass QA
    // upsertIf(
    // state.data.properties.commcare_username !== 'test.2021' &&
    // state.data.properties.test_user !== 'Yes' &&
    // state.data.properties.caretaker_case_id !== undefined &&
    // state.data.properties.caretaker_case_id !== '',
    // 'Person__c',
    // 'CommCare_ID__c',
    // fields(
    // relationship('Primary_Caregiver_Lookup__r', 'CommCare_ID__c', state => {
    // return (caregiver = dataValue('properties.caretaker_case_id')(state));
    // }),
    // field('CommCare_ID__c', dataValue('case_id'))
    // )
    // );

    bulk(
    'Person__c',
    'upsert',
    {
    extIdField: 'CommCare_ID__c',
    failOnError: true,
    allowNoOp: true,
    },
    state => {
    console.log('Bulk upserting primary caregiver Persons ::');
    //console.log(JSON.stringify(state.caregiverMapping, null, 2));
    return state.caregiverMapping;
    }
    );

    // TODO, Clean up when pass QA
    // upsertIf(
    // state.data.properties.commcare_username !== 'test.2021' &&
    // state.data.properties.test_user !== 'Yes' &&
    // state.data.properties.mother_case_id !== undefined &&
    // state.data.properties.mother_case_id !== '',
    // 'Person__c',
    // 'CommCare_ID__c',
    // fields(
    // relationship('Mother__r', 'CommCare_ID__c', state => {
    // return (caregiver = dataValue('properties.mother_case_id')(state));
    // }),
    // field('CommCare_ID__c', dataValue('case_id'))
    // )
    // );
    bulk(
    'Person__c',
    'upsert',
    {
    extIdField: 'CommCare_ID__c',
    failOnError: true,
    allowNoOp: true,
    },
    state => {
    console.log('Bulk upserting mother Person::');
    // console.log(JSON.stringify(state.motherMapping, null, 2));
    return state.motherMapping;
    }
    );

    // TODO, Clean up when pass QA
    // upsertIf(
    // state.data.properties.commcare_username !== 'test.2021' &&
    // state.data.properties.test_user !== 'Yes' &&
    // state.data.properties.head_of_household_case_id !== undefined &&
    // state.data.properties.head_of_household_case_id !== '',
    // 'Household__c',
    // 'CommCare_Code__c',
    // fields(
    // field('CommCare_Code__c', dataValue('indices.parent.case_id')),
    // relationship(
    // 'Head_of_Household__r',
    // 'CommCare_ID__c',
    // dataValue('properties.head_of_household_case_id')
    // )
    // )
    // );

    bulk(
    'Household__c',
    'upsert',
    {
    extIdField: 'CommCare_Code__c',
    failOnError: true,
    allowNoOp: true,
    },
    state => {
    console.log('Bulk upserting head of household field on HH ::');
    // console.log(JSON.stringify(state.headOfHouseholdMapping, null, 2));
    return state.headOfHouseholdMapping;
    }
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19.html b/fr/adaptors/library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19.html index 1ecafa65944..51066fc01be 100644 --- a/fr/adaptors/library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19.html +++ b/fr/adaptors/library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19.html @@ -22,13 +22,13 @@ - +

    WF3-1. Bulk get Person Visit cases

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: WF3-1. Bulk get Person Visit cases
    • Adaptor: @openfn/language-http
    • Adaptor Version: v4.2.8
    • Created 5 months ago
    • Updated 8 days ago
    • Score: 92 (an indicator of how useful this job may be)

    Key Functions

    each, get, map

    Expression

    fn(state => {
    const { baseUrl } = state.configuration;

    const caseTypes = ['visite'];

    //NOTE: You can use 'limit' to modify this batch size as desired
    const limit = 1000; //E.g., change to 10 to process records in smaller batch sizes

    //NOTE: indexedOnStart is the default sync start data the FIRST time the job runs
    const indexedOnStart = '2023-10-19T06:00:00';

    //NOTE: After first job run, OpenFn will check the job sync data ("lastRunAt") to set as the indexedOnStart
    const lastRunAt =
    typeof state.lastRunAt !== 'undefined' ? state.lastRunAt : indexedOnStart;
    console.log('Filtering cases with indexed_on_start > than ::', lastRunAt);

    const aMinuteAgo = new Date( Date.now() - 1000 * 60 );
    console.log(aMinuteAgo);

    const queries = caseTypes.map(
    t => `?type=${t}&indexed_on_start=${lastRunAt}&limit=${limit}`
    //NOTE: If for testing, you want to fetch data for a specific historical range (e.g., between April 23 and 24)...
    //...then use the query string below instead of the one above on L16, and custom adjust the index_on start/end dates
    // t => `?type=${t}&indexed_on_start=2023-10-19T07:00:00&limit=${limit}&indexed_on_end=2023-10-19T09:59:59`
    );

    return { ...state, queries, baseUrl, payloads: [] };
    });

    // create a "recursiveGet" which will call itself if CommCare tells us there's
    // more data to fetch for the same form

    fn(state => {
    const recursiveGet = url =>
    get(
    url,
    {
    headers: { 'content-type': 'application/json' },
    },
    nextState => {
    const now = new Date();
    const { baseUrl, data, payloads } = nextState;

    const { meta, objects } = data;
    console.log('Metadata in CommCare response:', meta);

    const finalState = {
    ...nextState,
    payloads: [...payloads, ...objects],
    };

    if (meta.next) {
    console.log('Next query detected, recursing...');
    return recursiveGet(`${baseUrl}${meta.next}`)(finalState);
    }
    finalState.lastRunAt = now.toISOString().slice(0, 19);
    return finalState;
    }
    );

    return { ...state, recursiveGet };
    });

    // for each initial query, fetch data recursively
    each(
    '$.queries[*]',
    fn(state => {
    return state.recursiveGet(`${state.baseUrl}${state.data}`)(state);
    })
    );
    // log the total number of payloads returned
    fn(state => {
    console.log('Count of payloads', state.payloads.length);

    return { ...state, references: [], data: {} };
    });
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19.html b/fr/adaptors/library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19.html index 5cfdfe85687..e8f54bd7e96 100644 --- a/fr/adaptors/library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19.html +++ b/fr/adaptors/library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19.html @@ -22,13 +22,13 @@ - +

    WF3-2. Bulk upsert Person Visits

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    bulk, dataValue, join, map, query, JSON

    Expression

    fn(state => {
    if (state.payloads.length == 0) return { ...state, personVisits: [] };

    const owner_ids = state.payloads.map(data => data.properties.owner_id);
    const uniq_owner_ids = [...new Set(owner_ids)];

    return { ...state, uniq_owner_ids };
    });

    fn(state => {
    if (state.payloads.length == 0) return state;
    return query(
    `SELECT CommCare_User_ID__c, Id village, Parent_Geographic_Area__c area, Parent_Geographic_Area__r.Name name, Parent_Geographic_Area__r.Parent_Geographic_Area__c catchment FROM Location__c WHERE CommCare_User_ID__c IN ('${state.uniq_owner_ids.join(
    "','"
    )}') GROUP BY Id, CommCare_User_ID__c, Parent_Geographic_Area__c, Parent_Geographic_Area__r.Name, Parent_Geographic_Area__r.Parent_Geographic_Area__c`
    )(state);
    });

    fn(state => {
    if (state.payloads.length == 0) return state;
    const [reference] = state.references;


    // console.log(JSON.stringify(reference, null, 2));
    const records = reference.records;
    const fetchReference = (owner_id, arg) => {
    const result =
    records && records.length > 0
    ? records.filter(record => record.CommCare_User_ID__c === owner_id)
    : 0;

    return result.length > 0 ? result[0][arg] : undefined;
    };
    const cleanChoice = choice => {
    if (choice) {
    return choice.charAt(0).toUpperCase() + choice.slice(1).replace('_', ' ');
    } else {
    return '';
    }
    };

    const handleMultiSelect = multiField => {
    return multiField
    ? multiField
    .replace(/ /gi, ';')
    .toLowerCase()
    .split(';')
    .map(value => {
    return (
    value.charAt(0).toUpperCase() + value.slice(1).replace('_', ' ')
    );
    })
    .join(';')
    : '';
    };

    const handleMultiSelectOriginal = multiField => {
    return multiField
    ? multiField
    .replace(/ /gi, ';')
    .toLowerCase()
    .split(';')
    .map(value => {
    return value;
    })
    .join(';')
    : '';
    };

    const pregDangerMap = {
    Vaginal_Bleeding: 'Vaginal Bleeding',
    Water_Breaks: 'Water Breaks before Time of Delivery',
    Prolonged_Labour: 'Prolonged Labour over 12 Hours',
    Convulsions: 'Convulsions or Fits',
    Abdominal_Pain: 'Severe Abdominal Pain before Delivery',
    High_Fever: 'High Fever',
    Low_Baby_Movement: 'Feeling the Baby move less or not at all',
    Swelling: 'Swelling of Face and Hands',
    Severe_Headache: 'Severe or Continuous Headache for more than 12 hours',
    Severe_Vomiting: 'Severe or Continuous Vomiting',
    none: 'None',
    };

    const counselMap = {
    anc_visits: 'ANC Visits',
    early_initiation_of_anc_less_than_3_months:
    'Early initiation of ANC (less than 3 months)',
    completing_recomended_anc_visits: 'Completing recomended ANC visits',
    danger_signs: 'Danger signs',
    skilled_birth: 'Skilled birth',
    immunization: 'Immunization',
    individual_birth_plan: 'Individual Birth Plan',
    emergency_preparedness: 'Emergency preparedness',
    childcare_and_affection: 'Childcare and affection',
    nutrition_counseling: 'Nutrition counseling',
    growth_monitoring: 'Growth monitoring',
    exclusive_breastfeeding: 'Exclusive breastfeeding',
    complementary_feeding: 'Complementary feeding',
    sleeping_under_llitn: 'Sleeping under LLITN',
    knowing_hiv_status: 'Knowing HIV status',
    indoor_pollution: 'Indoor pollution',
    personal_hygiene: 'Personal Hygiene',
    safe_drinking_water: 'Safe drinking water',
    safe_disposal_of_human_waste: 'Safe disposal of human waste',
    };

    const serviceMap = {
    Scheduled_PSC_Apt: 'Scheduled PSC Apt',
    Adverse_Drug_Reaction_Side_Effect: 'Adverse Drug Reaction/Side Effect',
    Malnutrition: 'Malnutrition',
    Malaria: 'Malaria',
    TB: 'TB',
    Treatment_for_Other_OIs: 'Treatment for other Ols',
    ARI: 'ARI',
    Anemia: 'Anemia',
    Diarrhea: 'Diarrhea',
    Pregnancy_Care: 'Pregnancy Care (ANC)',
    Family_Planning: 'Family Planning (FP)',
    Preconception_Counseling: 'Preconception Counseling',
    Injury: 'Injury',
    Other: 'Other',
    };

    const reasonMap = {
    lack_of_access_to_fp_information: 'Lack of access to FP information',
    no_access_to_fp_services_hospitals:
    'Lack of hospitals or places where FP services can be accessed',
    not_willing_to_use_fp_due_to_negative_effects_myths_and_misconceptions:
    'Myths and misconceptions',
    barriers_at_service_delivery_points: 'Barriers at service delivery points',
    pregnant: 'The client is pregnant',
    intentions_of_getting_pregnant: 'Intentions of getting pregnant',
    not_sexually_active: 'The client is not sexually active',
    other_barriers_culture_male_partners_parents_etc:
    'Other barriers (culture, male partners, parents, etc)',
    };

    const milestoneTypeMap = {
    cognitive_delays_learning_difficulties:
    'Cognitive Delays Learning Difficulties',
    motor_delays: 'Motor Delays',
    speech_and_language_delay: 'Delay Speech and Language Delay',
    social_and_emotional: 'Social and emotional',
    };

    const milestoneMap = {
    movement: 'Movement',
    hearing: 'Hearing',
    communication: 'Communication',
    seeing: 'Seeing',
    cognitive_delays: 'Cognitive Delays',
    play: 'Play',
    };
    const nutritionMap = {
    severe: 'Severely Malnourished',
    moderate: 'Moderately Malnourished',
    normal: 'Normal',
    };

    const fpMethodMap = {
    male_condoms: 'Male condoms',
    female_condoms: 'Female condoms',
    pop: 'POP',
    coc: 'COC',
    emergency_pills: 'Emergency pills',
    none: 'None',
    //HMN -12/01/2023-
    //adding normalization for the family_planning_method to Family_Planning_Method__c
    iucd: 'IUCD',
    condoms: 'Condoms',
    depo: 'Depo',
    implant: 'Implant',
    injection: 'Injection',
    pills: 'Pills',
    traditional: 'Traditional',
    };

    const symptomsMap = {
    convulsions: 'Convulsions',
    not_able_to_eatdrink: 'Not able to drink or feed at all',
    vomits_everything: 'Vomits everything',
    'chest_in-drawing': 'Chest in - drawing',
    unusually_sleepyunconscious: 'Unusually sleepy or unconscious',
    swelling_of_both_feet: 'Swelling of both feet',
    none: 'None',
    };

    const supervisorMap = {
    community_health_nurse: 'Community_health_nurse',
    chw_supervisor: 'CHW_supervisor',
    chewschas: 'Chewschas',
    other: 'Other',
    none: 'None',
    };

    const treatmentDistributionMap = {
    ors_205gltr_sachets: 'ORS (20.5h/ltr): Sachets',
    acts_6s: 'ACTs (6s)',
    acts_12s: 'ACTs (12s)',
    acts_18s: 'ACTs (18s)',
    acts_24s: 'ACTs (24s)',
    albendazole_abz_tabs: 'Albendazole (ABZ): Tabs',
    paracetamol_tabs: 'Tetracycline Eye Ointment (TEO): 1%:tube',
    tetracycline_eye_ointment_teo_1_tube:
    'Tetracycline Eye Ointment (TEO): 1%:tube',
    amoxycillin: 'Amoxycillin (125mg/5mls: Bottle',
    none: 'None',
    };

    const childDangerSignsMap = {
    none: 'None',
    Poor_Breastfeeding: 'Poor Breastfeeding',
    not_able_to_feed_since_birth_or_stopped_feeding_well:
    'Not able to feed since birth, or stopped feeding well',
    not_able_to_breastfeed: 'Not able to breastfeed',
    Fever: 'Fever',
    very_low_temperature: 'Very low temperature (35.4 C or less)',
    shivering: 'Shivering',
    Fast_Breathing: 'Fast Breathing',
    Very_Sleepy: 'Very Sleepy',
    Convulsions_and_Fits: 'Convulsions and Fits',
    only_moves_when_stimulated_or_does_not_move_even_on_stimulation:
    'Only moves when stimulated, or does not move even on stimulation',
    yellow_solebaby_body_turning_yellow_especially_eyes_palms_soles:
    'Yellow sole(Baby body turning yellow especially eyes, palms,soles)',
    bleeding_from_the_umbilical_stump: 'Bleeding from the umbilical stump',
    signs_of_local_infection_umbilicus_is_red_or_draining_pus_skin_boils_or_eye:
    'Signs of local infection: umbilicus is red or draining pus, skin boils, or eyes draining pus',
    weight_chart_using_color_coded_scales_if_red_or_yellowweight_below_25kg_or_:
    'Weight chart using color coded scales if RED or YELLOW(Weight below 2.5kg or born less than 36 weeks of age)',
    unable_to_cry: 'Unable to cry',
    cyanosis: 'Cyanosis',
    bulging_fontanelle: 'Bulging fontanelle',
    };

    return {
    ...state,
    counselMap,
    serviceMap,
    reasonMap,
    milestoneTypeMap,
    milestoneMap,
    nutritionMap,
    pregDangerMap,
    fpMethodMap,
    symptomsMap,
    supervisorMap,
    treatmentDistributionMap,
    childDangerSignsMap,
    fetchReference,
    cleanChoice,
    handleMultiSelect,
    handleMultiSelectOriginal,
    };
    });

    fn(state => {
    if (state.payloads.length == 0) return state;
    const {
    counselMap,
    serviceMap,
    reasonMap,
    milestoneTypeMap,
    milestoneMap,
    nutritionMap,
    pregDangerMap,
    fpMethodMap,
    symptomsMap,
    supervisorMap,
    treatmentDistributionMap,
    childDangerSignsMap,
    fetchReference,
    cleanChoice,
    handleMultiSelect,
    handleMultiSelectOriginal,
    } = state;

    const personVisits = state.payloads
    //HMN 30/06/2023 Allow test user to post
    /*
    .filter(
    p =>
    p.properties.username !== 'test.2021' &&
    p.properties.test_user !== 'Yes'
    )*/
    .map(p => {
    // commCareVisitID
    const commCareCase_id = p.case_id;
    const dateVisit = p.properties.date_opened;
    const commCareVisitID = commCareCase_id + '_' + dateVisit;

    // personsSymptoms
    const psCheck = p.properties.symptoms_check_other;
    const psValue =
    psCheck && psCheck !== ''
    ? psCheck
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return symptomsMap[value] || value;
    })
    : undefined;
    const personsSymptoms = psValue ? psValue.join(';') : undefined;

    // familyPlanningMethod
    const fpmStatus = p.properties.family_planning_method;
    const fpmValue =
    fpmStatus && fpmStatus !== ''
    ? fpmStatus
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return fpMethodMap[value] || value;
    })
    : undefined;
    const familyPlanningMethod = fpmValue ? fpmValue.join(';') : undefined;

    // fpMethodDistributed
    const fpmdStatus = p.properties.FP_commodity;
    const fpmdValue =
    fpmdStatus && fpmdStatus !== ''
    ? fpmdStatus
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return fpMethodMap[value] || value;
    })
    : undefined;
    const fpMethodDistributed = fpmdValue ? fpmdValue.join(';') : undefined;

    // reasonForNotTakingFPMethod
    const rfntStatus = p.properties.No_FPmethod_reason;
    const rfntValue =
    rfntStatus && rfntStatus !== ''
    ? rfntStatus
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return reasonMap[value] || value;
    })
    : undefined;
    const reasonForNotTakingFPMethod = rfntValue
    ? rfntValue.join(';')
    : undefined;

    // clientCounselledOnC
    const ccocChoices =
    p.properties.counsel_topic || p.properties.counsel_topic;
    const ccocVhoiceGroups = ccocChoices ? ccocChoices.split(' ') : null;
    const clientCounselledOnC = ccocVhoiceGroups
    ? ccocVhoiceGroups
    .map(cg => {
    return counselMap[cg];
    })
    .join(';')
    : ccocVhoiceGroups;

    // treatmentDistributionC
    //const tdcStatus = p.form.treatment_and_tracking.distribution.distributed_treatments;
    const tdcStatus = p.properties.distributed_treatments;
    const tdcValue =
    tdcStatus && tdcStatus !== ''
    ? tdcStatus
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return treatmentDistributionMap[value] || value;
    })
    : undefined;
    const treatmentDistributionC = tdcValue ? tdcValue.join(';') : undefined;

    // chronicIllnesC
    const ciChoice =
    p.properties.please_specify_which_chronic_illness_the_person_has;
    const ciChoice2 = handleMultiSelect(ciChoice);
    const chronicIllnesC = ciChoice2 ? ciChoice2.replace(/_/g, ' ') : '';

    // supervisorVisit
    const svCheck = p.properties.supervisor_visit;
    const svValue =
    svCheck && svCheck !== ''
    ? svCheck
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return supervisorMap[value] || value;
    })
    : undefined;
    const supervisorVisit = svValue ? svValue.join(';') : undefined;
    const recordType = p.properties.RecordType;

    return {
    CommCare_ID__c: p.case_id, //'visit' case_id
    'Person__r.CommCare_ID__c':
    p.indices.parent.case_id || p.properties.parent_id,
    CommCare_Visit_ID__c: commCareVisitID,
    Date__c: p.properties.Date,
    Birth_Status__c: p.properties.child_status,
    Catchment__c: fetchReference(p.properties.owner_id, 'catchment'),
    //HMN Accommodating Record Type in Visit
    'RecordType.Name': recordType === 'Unborn' || recordType === 'Child'
    ? 'Child Visit'
    :recordType === 'Youth'
    ? 'Youth Visit'
    :recordType === 'Male Adult'
    ? 'Adult Male Visit'
    : recordType === 'Female Adult'
    ? 'Adult Female Visit'
    :undefined,
    Use_mosquito_net__c: cleanChoice(p.properties.sleep_under_net),
    Individual_birth_plan_counselling__c:
    p.properties.individual_birth_plan,
    Reason_for_not_taking_a_pregnancy_test__c: p.properties.No_Preg_Test
    ? p.properties.No_Preg_Test.toString().replace(/_/g, ' ')
    : undefined,
    Pregnancy_danger_signs__c: p.properties.No_Preg_Test
    ? pregDangerMap[p.properties.No_Preg_Test]
    : undefined,
    Child_Danger_Signs__c: p.properties.Other_Danger_Signs
    ? childDangerSignsMap[p.properties.Other_Danger_Signs]
    : undefined,
    Current_Malaria_Status__c: cleanChoice(
    p.properties.malaria_test_results
    ),
    Malaria_Home_Test__c: p.properties.malaria_test_date,
    Malaria_Home_Treatment__c: p.properties.malaria_test_date,
    Persons_symptoms__c: personsSymptoms,
    Active_in_Support_Group__c: p.properties.Active_in_Support_Group,
    HAWI_Defaulter__c: p.properties.default === 'Yes' ? true : false,
    Date_of_Default__c: p.properties.date_of_default,
    Persons_temperature__c: p.properties.temperature,
    Days_since_illness_start__c: p.properties.duration_of_sickness,
    Newborn_visited_48_hours_of_delivery__c:
    p.properties.newborn_visited_48_hours_of_delivery,
    Newborn_visited_by_a_CHW_within_6_days__c:
    p.properties.visit_6_days_from_delivery,
    Current_Malaria_Status__c: p.properties.malaria_test_results,
    Malaria_test__c: cleanChoice(p.properties.malaria_test),
    Fever__c: cleanChoice(p.properties.symptoms_check_fever),
    Cough__c: cleanChoice(p.properties.symptoms_check_cough),
    Diarrhoea__c: cleanChoice(p.properties.symptoms_check_diarrhea),
    TB_patients_therapy_observed__c: p.properties.observed_tb_therapy,
    Injuries_or_wounds__c: p.properties.wounds_or_injuries,
    Currently_on_ART_s__c: p.properties.ART,
    // ART_Regimen__c: () => {
    // const choice = dataValue(
    // 'properties.ARVs;
    // return cleanChoice(choice);
    // },
    Immediate_Breastfeeding__c: p.properties.Breastfeeding_Delivery,
    Exclusive_Breastfeeding__c: p.properties.Exclusive_Breastfeeding,
    Counselled_on_Exclusive_Breastfeeding__c: p.properties.counseling,
    LMP__c: p.properties.when_was_your_lmp,
    Family_Planning__c: cleanChoice(p.properties.family_planning),
    Family_Planning_Method__c: p.properties.family_planning_method,
    Family_Planning_Method__c: familyPlanningMethod,
    FP_Method_Distributed__c: fpMethodDistributed,
    Reasons_for_not_taking_FP_method__c: reasonForNotTakingFPMethod,
    Pregnant__c: p.properties.Pregnant === 'Yes' ? true : false,
    Counselled_on_FP_Methods__c: cleanChoice(
    p.properties.CounselledFP_methods
    ),
    Client_counselled_on__c: clientCounselledOnC,
    Client_provided_with_FP__c: cleanChoice(
    p.properties[
    'was_the_woman_15-49yrs_provided_with_family_planning_commodities_by_chv'
    ]
    ),
    Newborn_visited_48_hours_of_delivery__c:
    p.properties.newborn_visited_48_hours_of_delivery,
    Mother_visit_counselling__c: cleanChoice(
    p.properties.did_you_consel_the_mother_on1
    ),
    mother_visited_48_hours_of_the_delivery__c:
    p.properties.visit_mother_48,
    Newborn_visit_counselling__c: cleanChoice(
    p.properties.did_you_consel_the_mother_on2
    ),
    Know_HIV_status__c: cleanChoice(p.properties.known_hiv_status),
    HIV_Status__c: p.properties.hiv_status,
    Treatment_Distribution__c: treatmentDistributionC,
    // QUESTION: Field name not found : Current_Weight__c
    // Current_Weight__c: p.properties.Current_Weight,
    Current_Height__c: p.properties.current_height,
    Current_MUAC__c: p.properties.MUAC,
    Food_groups_3_times_a_day__c: p.properties.food_groups,
    Nutrition_Case_Managed__c: p.properties.nutrition_case_managed,
    Nutrition_Danger_Signs__c: handleMultiSelectOriginal(
    p.properties.nutrition_danger_signs
    ),
    Why_was_nutrition_case_not_managed__c:
    p.properties.nutrition_case_not_managed_why,
    Community_Nutrition_Treatment__c:
    p.properties.nutrition_treatment_severe,
    Community_Nutrition_Treatment__c:
    p.properties.nutrition_treatment_moderate,
    Why_was_nutrition_treatment_not_given__c:
    p.properties.nutrition_treatment_not_given,
    Current_Nutrition_Status__c: p.properties.Nutrition_Status
    ? nutritionMap[p.properties.Nutrition_Status]
    : undefined,
    Default_on_TB_treatment__c: cleanChoice(
    p.properties.default_tb_treatment
    ),
    Received_pregnancy_test__c: cleanChoice(
    p.properties.did_you_adminsiter_a_pregnancy_test
    ),
    Pregnancy_test_result__c: cleanChoice(
    p.properties.pregnancy_test_result
    ),
    Chronic_illness__c: chronicIllnesC,
    Childs_breath_per_minute__c: p.properties.breaths_per_minuite,
    Child_chest_in_drawing__c: p.properties.Child_chest_in_drawing_c,
    Caregiver_counseled_on_delayed_milestone__c:
    p.properties.did_you_counsel_the_caregiver_on_delayed_milestones,
    Delayed_Milestone__c:
    p.properties.does_the_child_has_a_delayed_milestone,
    Child_has_2_or_more_play_items__c:
    p.properties.does_the_child_has_2_or_more_play_items_at_home,
    Child_has_3_more_picture_books__c:
    p.properties.does_the_child_has_3_or_more_picture_books,
    Delayed_Milestones_Counselled_On__c: p.properties
    .which_delayed_milestone_area_did_you_counsel_the_caregiver_on
    ? milestoneMap[
    p.properties
    .which_delayed_milestone_area_did_you_counsel_the_caregiver_on
    ]
    : undefined,
    Delayed_Milestone_Type__c: p.properties.which_delayed_milestone
    ? milestoneMap[p.properties.which_delayed_milestone]
    : undefined,
    Caretaker_trained_in_muac__c: p.properties.mother_trained_muac,
    Caretaker_screened_for_muac_this__c:
    p.properties.mother_screened_child_muac,
    Caretaker_muac_findings__c:
    p.properties.mother_screened_child_muac_result,
    Caretaker_action_after_muac_screening__c:
    p.properties.mother_screened_muac_action,
    of_Caretaker_MUAC_screenings__c: p.properties.mother_nb_screening,
    Pulse_Oximeter__c: p.properties.pulse_oximeter_available,
    Heart_Rate_Pulse_Oximeter__c: p.properties.heart_rate_pulse_oximeter,
    Oxygen_Concentration_Pulse_Oximeter__c:
    p.properties.oxygen_concentration,
    Can_child_drink__c: p.properties.can_child_drink,
    Antibiotic_provided_for_fast_breathing__c:
    p.properties.antibiotic_fast_breathing,
    Antibiotic_provided_for_chest_indrawing__c:
    p.properties.antibiotic_chest_indrawing,
    Supervisor_Visit__c: supervisorVisit,
    //HMN commented this one due to error "Error: InvalidBatch : Field name not found : Visit_Closed_Date__c"
    //Visit_Closed_Date__c: p.properties.date_closed,
    //29/06/2023 Added Malaria Vaccine mapping
    malaria_vaccine_received__c:
    p.properties.malaria_vaccine_received,
    rts_s_1_date__c:
    p.properties.rts_s_1_date,
    rts_s_2_date__c:
    p.properties.rts_s_2_date,
    rts_s_3_date__c:
    p.properties.rts_s_3_date,
    rts_s_4_date__c:
    p.properties.rts_s_4_date,

    //HMN 29/06/2023
    };
    });

    personVisits.forEach(person => {
    Object.entries(person).forEach(([key, value]) => {
    if (value === '' || value === null) person[key] = undefined;
    });
    });

    // JSON logging of records
    //HMN debugger 19/10/2023
    // console.log(JSON.stringify(personVisits, null, 2));

    return { ...state, personVisits };
    });

    bulk(
    'Person_visit__c',
    'upsert',
    {
    extIdField: 'CommCare_ID__c',
    failOnError: true,
    allowNoOp: true,
    },
    state => {
    console.log('Bulk upserting person visit...');
    return state.personVisits;
    }
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31.html b/fr/adaptors/library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31.html index 1077454077b..08dc1bd4461 100644 --- a/fr/adaptors/library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31.html +++ b/fr/adaptors/library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31.html @@ -22,13 +22,13 @@ - +

    WF3-2a/ Repeat Failed Person Visits

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    each, get, map

    Expression

    fn(state => {
    const { baseUrl } = state.configuration;

    const caseTypes = ['visite'];

    //NOTE: You can use 'limit' to modify this batch size as desired
    const limit = 1000; //E.g., change to 10 to process records in smaller batch sizes

    //NOTE: indexedOnStart is the default sync start data the FIRST time the job runs
    const indexedOnStart = '2023-10-19T06:00:00';

    //NOTE: After first job run, OpenFn will check the job sync data ("lastRunAt") to set as the indexedOnStart
    const lastRunAt =
    typeof state.lastRunAt !== 'undefined' ? state.lastRunAt : indexedOnStart;
    console.log('Filtering cases with indexed_on_start > than ::', lastRunAt);

    const aMinuteAgo = new Date( Date.now() - 1000 * 60 );
    console.log(aMinuteAgo);

    const queries = caseTypes.map(
    t => `?type=${t}&indexed_on_start=${lastRunAt}&limit=${limit}`
    //NOTE: If for testing, you want to fetch data for a specific historical range (e.g., between April 23 and 24)...
    //...then use the query string below instead of the one above on L16, and custom adjust the index_on start/end dates
    // t => `?type=${t}&indexed_on_start=2023-10-19T07:00:00&limit=${limit}&indexed_on_end=2023-10-19T09:59:59`
    );

    return { ...state, queries, baseUrl, payloads: [] };
    });

    // create a "recursiveGet" which will call itself if CommCare tells us there's
    // more data to fetch for the same form

    fn(state => {
    const recursiveGet = url =>
    get(
    url,
    {
    headers: { 'content-type': 'application/json' },
    },
    nextState => {
    const now = new Date();
    const { baseUrl, data, payloads } = nextState;

    const { meta, objects } = data;
    console.log('Metadata in CommCare response:', meta);

    const finalState = {
    ...nextState,
    payloads: [...payloads, ...objects],
    };

    if (meta.next) {
    console.log('Next query detected, recursing...');
    return recursiveGet(`${baseUrl}${meta.next}`)(finalState);
    }
    finalState.lastRunAt = now.toISOString().slice(0, 19);
    return finalState;
    }
    );

    return { ...state, recursiveGet };
    });

    // for each initial query, fetch data recursively
    each(
    '$.queries[*]',
    fn(state => {
    return state.recursiveGet(`${state.baseUrl}${state.data}`)(state);
    })
    );
    // log the total number of payloads returned
    fn(state => {
    console.log('Count of payloads', state.payloads.length);

    return { ...state, references: [], data: {} };
    });
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19.html b/fr/adaptors/library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19.html index fafbbb818b4..08a63e19356 100644 --- a/fr/adaptors/library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19.html +++ b/fr/adaptors/library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19.html @@ -22,13 +22,13 @@ - +

    WF4-1. Bulk get Referral Cases

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: WF4-1. Bulk get Referral Cases
    • Adaptor: @openfn/language-http
    • Adaptor Version: v4.2.8
    • Created 5 months ago
    • Updated 4 days ago
    • Score: 92 (an indicator of how useful this job may be)

    Key Functions

    each, get, map

    Expression

    fn(state => {
    const { baseUrl } = state.configuration;

    const caseTypes = ['Case'];

    //NOTE: You can use 'limit' to modify this batch size as desired
    const limit = 1000; //E.g., change to 10 to process records in smaller batch sizes

    //NOTE: indexedOnStart is the default sync start data the FIRST time the job runs
    const indexedOnStart = '2023-10-23T07:00:00';

    //NOTE: After first job run, OpenFn will check the job sync data ("lastRunAt") to set as the indexedOnStart
    const lastRunAt =
    typeof state.lastRunAt !== 'undefined' ? state.lastRunAt : indexedOnStart;
    console.log('Filtering cases with indexed_on_start > than ::', lastRunAt);

    const queries = caseTypes.map(
    t => `?type=${t}&indexed_on_start=${lastRunAt}&limit=${limit}`
    //NOTE: If for testing, you want to fetch data for a specific historical range (e.g., between April 23 and 24)...
    //...then use the query string below instead of the one above on L16, and custom adjust the index_on start/end dates
    // t => `?type=${t}&indexed_on_start=2023-10-20T03:00:00&limit=${limit}&indexed_on_end=2023-10-20T19:59:59`
    );

    return { ...state, queries, baseUrl, payloads: [] };
    });

    // create a "recursiveGet" which will call itself if CommCare tells us there's
    // more data to fetch for the same form
    fn(state => {
    const recursiveGet = url =>
    get(
    url,
    {
    headers: { 'content-type': 'application/json' },
    },
    nextState => {
    const now = new Date();
    const { baseUrl, data, payloads } = nextState;

    const { meta, objects } = data;
    console.log('Metadata in CommCare response:', meta);

    const finalState = {
    ...nextState,
    payloads: [...payloads, ...objects],
    };

    if (meta.next) {
    console.log('Next query detected, recursing...');
    return recursiveGet(`${baseUrl}${meta.next}`)(finalState);
    }
    finalState.lastRunAt = now.toISOString().slice(0, 19);
    return finalState;
    }
    );

    return { ...state, recursiveGet };
    });

    // for each initial query, fetch data recursively
    each(
    '$.queries[*]',
    fn(state => {
    return state.recursiveGet(`${state.baseUrl}${state.data}`)(state);
    })
    );
    // log the total number of payloads returned
    fn(state => {
    console.log('Count of payloads', state.payloads.length);
    return { ...state, references: [], data: {} };
    });
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19.html b/fr/adaptors/library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19.html index ec7daea009a..fae93665e87 100644 --- a/fr/adaptors/library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19.html +++ b/fr/adaptors/library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19.html @@ -22,13 +22,13 @@ - +

    WF4-2. Bulk upsert Services

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    bulk, join, map, query, JSON

    Expression

    // NOTE: We perform a query before anything else if this is a 'Case'
    fn(state => {
    // state.type = state.data.indices.parent.case_type;
    if (state.payloads.length == 0) return { ...state, services: [] };

    const caseType = state.payloads
    .filter(c => c.indices.parent.case_type === 'Case')
    .map(c => c.indices.parent.case_id);

    console.log(JSON.stringify(caseType, null, 2));

    if (caseType.length > 0)
    return query(
    `SELECT Person__r.CommCare_ID__c FROM Service__c WHERE Service_UID__c IN ('${caseType.join(
    "','"
    )}')`
    )(state).then(state => {
    const { records } = state.references[0];
    const ccId =
    records.length == 1 ? records[0].Person__r.CommCare_ID__c : null;
    return { ...state, ccId };
    });

    return state;
    });

    // NOTE: We construct a facilityMap and populate some conditional relationships
    fn(state => {
    if (state.payloads.length == 0) return state;
    const facilityMap = {
    Lwala_Hospital: 'Lwala Hospital',
    Minyenya_Dispensary: 'Minyenya Dispensary',
    Ndege_Oriedo_Dispensary: 'Ndege Oriedo Dispensary',
    'Rongo_Sub-District_Hospital': 'Rongo Sub-District Hospital',
    Kangeso_Dispensary: 'Kangeso Dispensary',
    Ngodhe_Dispensary: 'Ngodhe Dispensary',
    Ngere_Dispensary: 'Ngere Dispensary',
    Verna_Health_Center: 'Verna Health Center',
    Kochola_Dispensary: 'Kochola Dispensary',
    Ongo_Health_Center: 'Ongo Health Center',
    Royal_Medical_Center: 'Royal Medical Center',
    Rosewood_Facility: 'Rosewood Facility',
    Other: 'Other',
    };

    const pregDangerMap = {
    Vaginal_Bleeding: 'Vaginal Bleeding',
    Water_Breaks: 'Water Breaks before Time of Delivery',
    Prolonged_Labour: 'Prolonged Labour over 12 Hours',
    Convulsions: 'Convulsions or Fits',
    Abdominal_Pain: 'Severe Abdominal Pain before Delivery',
    High_Fever: 'High Fever',
    Low_Baby_Movement: 'Feeling the Baby move less or not at all',
    Swelling: 'Swelling of Face and Hands',
    Severe_Headache: 'Severe or Continuous Headache for more than 12 hours',
    Severe_Vomiting: 'Severe or Continuous Vomiting',
    none: 'None',
    };

    const serviceMap = {
    Scheduled_PSC_Apt: 'Scheduled PSC Apt',
    Adverse_Drug_Reaction_Side_Effect: 'Adverse Drug Reaction/Side Effect',
    Malnutrition: 'Malnutrition',
    Malaria: 'Malaria',
    TB: 'TB',
    Treatment_for_Other_OIs: 'Treatment for Other OIs',
    ARI: 'ARI',
    Anemia: 'Anemia',
    Diarrhea: 'Diarrhea',
    Pregnancy_Care: 'Pregnancy Care (ANC)',
    Family_Planning: 'Family Planning (FP)',
    Preconception_Counseling: 'Preconception Counseling',
    Injury: 'Injury',
    Other: 'Other',
    };

    const milestoneTypeMap = {
    cognitive_delays_learning_difficulties:
    'Cognitive Delays (Learning Difficulties)',
    motor_delays: 'Motor Delays',
    speech_and_language_delay: 'Speech and language Delay',
    social_and_emotional: 'Social and emotional',
    };

    const symptomsMap = {
    convulsions: 'Convulsions',
    not_able_to_eatdrink: 'Not able to eat/drink',
    vomits_everything: 'Vomits everything',
    'chest_in-drawing': 'Chest in-drawing',
    unusually_sleepyunconscious: 'Unusually sleepy/unconscious',
    swelling_of_both_feet: 'Swelling of both feet',
    };

    const childSignMap = {
    Poor_Breastfeeding: 'Poor Breastfeeding (under 6 months old child)',
    not_able_to_feed_since_birth_or_stopped_feeding_well:
    'Not able to feed since birth, or stopped feeding well',
    not_able_to_breastfeed: 'Not able to breastfeed',
    Fever: 'Fever (37.5 C or more)',
    very_low_temperature: 'Very low temperature (35.4 C or less)',
    shivering: 'Shivering',
    Fast_Breathing: 'Fast Breathing',
    Very_Sleepy: 'Very Sleepy',
    Convulsions_and_Fits: 'Convulsions and Fits',
    only_moves_when_stimulated_or_does_not_move_even_on_stimulation:
    'Only moves when stimulated, or does not move even on stimulation',
    yellow_solebaby_body_turning_yellow_especially_eyes_palms_soles:
    'Yellow sole(Baby body turning yellow especially eyes, palms, soles)',
    bleeding_from_the_umbilical_stump: 'Bleeding from the umbilical stump',
    signs_of_local_infection_umbilicus_is_red_or_draining_pus_skin_boils_or_eye:
    'Signs of local infection: umbilicus is red or draining pus, skin boils, or eyes draining pus',
    weight_chart_using_color_coded_scales_if_red_or_yellowweight_below_25kg_or_:
    'Weight chart using color coded scales if RED or YELLOW(Weight below 2.5kg or born less than 36 weeks of age)',
    unable_to_cry: 'Unable to cry',
    cyanosis: 'Cyanosis',
    bulging_fontanelle: 'Bulging fontanelle',
    };

    const otherReferralMap = {
    HIV_Testing_and_Counseling: 'HIV Testing and Counseling',
    Visit_to_Clinician: 'Visit to Clinician',
    Adverse_Drug_Reaction_Side_Effect: 'Adverse Drug Reaction Side Effect',
    Malnutrition: 'Malnutrition',
    Malaria: 'Malaria',
    PMTCT: 'PMTCT',
    TB: 'TB',
    Treatment_for_other_OIs: 'Treatment for other OIs',
    ARI: 'ARI',
    Anemia: 'Anemia',
    Diarrhea: 'Diarrhea',
    Pregnancy_Care_ANCE: 'Pregnancy Care (ANC)',
    Family_Planning_FP: 'Family Planning (FP)',
    Preconception_Counseling: 'Preconception Counseling',
    Injury: 'Injury',
    blood_in_stool: 'Blood in Stool',
    Blood_in_Stool: 'Blood in Stool',
    Immunization: 'Immunization',
    Routine_Health_Check_ups: 'Routine Health Check ups',
    routine_health_check_ups: 'Routine Health Check ups',
    Other: 'Other',
    Poor_Breastfeeding: 'Poor Breastfeeding (under 6 months old child)',
    not_able_to_feed_since_birth_or_stopped_feeding_well:
    'Not able to feed since birth, or stopped feeding well',
    not_able_to_breastfeed: 'Not able to breastfeed',
    Fever: 'Fever (37.5 C or more)',
    very_low_temperature: 'Very low temperature (35.4 C or less)',
    shivering: 'Shivering',
    Fast_Breathing: 'Fast Breathing',
    Very_Sleepy: 'Very Sleepy',
    Convulsions_and_Fits: 'Convulsions and Fits',
    only_moves_when_stimulated_or_does_not_move_even_on_stimulation:
    'Only moves when stimulated, or does not move even on stimulation',
    yellow_solebaby_body_turning_yellow_especially_eyes_palms_soles:
    'Yellow sole(Baby body turning yellow especially eyes, palms, soles)',
    bleeding_from_the_umbilical_stump: 'Bleeding from the umbilical stump',
    signs_of_local_infection_umbilicus_is_red_or_draining_pus_skin_boils_or_eye:
    'Signs of local infection: umbilicus is red or draining pus, skin boils, or eyes draining pus',
    weight_chart_using_color_coded_scales_if_red_or_yellowweight_below_25kg_or_:
    'Weight chart using color coded scales if RED or YELLOW(Weight below 2.5kg or born less than 36 weeks of age)',
    unable_to_cry: 'Unable to cry',
    cyanosis: 'Cyanosis',
    bulging_fontanelle: 'Bulging fontanelle',
    };

    const homeCareMap = {
    Adherence_Counseling: 'Adherence Counseling',
    Pill_Count_Monitoring: 'Pill Count Monitoring',
    Nutrition_Assessment_and_Counseling: 'Nutrition Assessment and Counseling',
    WASH_Counseling: 'WASH Counseling',
    Prevention_Counseling: 'Prevention Counseling',
    Psychosocial_Support: 'Psychosocial Support',
    Provision_of_Supplies: 'Provision of Supplies',
    OI_Management_Support: 'OI Management Support',
    };

    const ecdMap = {
    physiotherapy: 'Physiotherapy',
    speech_therapy: 'Speech Therapy',
    nutrition_education: 'Nutrition Education',
    play_therapy: 'Play Therapy',
    assessment: 'Assessment',
    counselling: 'Counselling',
    other: 'Other',
    };

    const clinicalMap = {
    diarrhea: 'Diarrhea',
    malnutrition: 'Malnutrition',
    malaria: 'Malaria',
    acute_respiratory_infection: 'Acute Respiratoy Infection (ARI)',
    accident_injury: 'Accident/Injury',
    other: 'Other',
    };

    const caseType = state.payloads
    .filter(c => c.indices.parent.case_type === 'Case')
    .map(c => c.indices.parent.case_id);

    const personType = state.payloads
    .filter(c => c.indices.parent.case_type === 'Person')
    .map(c => c.indices.parent.case_id);

    let relationships = [];

    // If it's a person, add the person relationship
    if (personType.length > 0) {
    personType.forEach(case_id => {
    relationships.push({ 'Person__r.CommCare_ID__c': case_id });
    });
    }

    // If it's a service, add the service rship AND a different person rship
    if (caseType.length > 0) {
    caseType.forEach(case_id => {
    relationships.push({ 'Parent_Service__r.Service_UID__c': case_id });
    });

    relationships.push({ 'Person__r.CommCare_ID__c': state.ccId });
    }

    return {
    ...state,
    facilityMap,
    relationships,
    serviceMap,
    pregDangerMap,
    milestoneTypeMap,
    symptomsMap,
    childSignMap,
    otherReferralMap,
    homeCareMap,
    clinicalMap,
    ecdMap,
    };
    });

    // NOTE: We finally upsert to the Service__c object in Salesforce
    fn(state => {
    if (state.payloads.length == 0) return state;
    const services = state.payloads
    .filter(r => r.properties.owner_id !== '8e725928e3ce43d19b390dd604097069')
    .map(r => {
    // pregnancyDangerSigns
    const pCheck = r.properties.pregnancy_danger_signs;
    const pValue =
    pCheck && pCheck !== ''
    ? pCheck
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.pregDangerMap[value] || value;
    })
    : undefined;
    const pregnancyDangerSigns = pValue ? pValue.join(';') : undefined;

    // childDangerSigns
    const cCheck = r.properties.Other_Danger_Signs;
    const cValue =
    cCheck && cCheck !== ''
    ? cCheck
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.childSignMap[value] || value;
    })
    : undefined;
    const childDangerSigns = cValue ? cValue.join(';') : undefined;

    // delayedMilestone
    const dCheck = r.properties.which_delayed_milestone;
    const dValue =
    dCheck && dCheck !== ''
    ? dCheck
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.milestoneTypeMap[value] || value;
    })
    : undefined;
    const delayedMilestone = dValue ? dValue.join(';') : undefined;

    // seriousSymptoms
    const sCheck = r.properties.symptoms_check_other;
    const sValue =
    sCheck && sCheck !== ''
    ? sCheck
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.symptomsMap[value] || value;
    })
    : undefined;
    const seriousSymptoms = sValue ? sValue.join(';') : undefined;

    // otherReferralReason
    const otCheck = r.properties.Other_Referral_Reasons;
    const otValue =
    otCheck && otCheck !== ''
    ? otCheck
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.otherReferralMap[value] || value;
    })
    : undefined;
    const otherReferralReason = otValue ? otValue.join(';') : undefined;

    // homeBasedCareRendered
    const homeCheck = r.properties.Home_Based_Care_Provided;
    const homeValue =
    homeCheck && homeCheck !== ''
    ? homeCheck
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.homeCareMap[value] || value;
    })
    : undefined;
    const homeBasedCareRendered = homeValue ? homeValue.join(';') : undefined;

    // ecdClinicalService
    const ecdCheck = r.properties.ECD_Clinical_Service;
    const ecdValue =
    ecdCheck && ecdCheck !== ''
    ? ecdCheck
    .replace(/ /gi, ';')
    .split(';')
    .map(value => {
    return state.ecdMap[value] || value;
    })
    : undefined;
    const ecdClinicalService = ecdValue ? ecdValue.join(';') : undefined;

    return {
    'Person__r.CommCare_ID__c':
    r.indices.parent.case_type === 'Person'
    ? r.indices.parent.case_id
    : r.indices.parent.case_type === 'Case'
    ? state.ccId
    : undefined,
    Service_UID__c: r.case_id,
    CommCare_Code__c: r.case_id,
    RecordTypeID: '01224000000YAuK',
    'Household_CHW__r.CommCare_ID__c': r.properties.CHW_ID,
    Open_Case__c: r.closed === false ? true : false,
    Case_Closed_Date__c: r.properties.date_closed,
    Age_Time_of_Service__c: r.properties.age,
    Source__c: r.properties.Source === '1',
    Clinical_facility__c: r.properties.Facility_Visited
    ? state.facilityMap[r.properties.Facility_Visited]
    : undefined,
    Client_Received_Services_at_Facility2__c: r.properties.Facility_Visit,
    Clinical_Visit_Date__c:
    r.properties.Facility_Date === '' ||
    r.properties.Facility_Date === undefined
    ? undefined
    : r.properties.Facility_Date,
    CHW_Followed_Up_with_the_Client__c: r['properties.Follow-Up']!== ''
    ? r['properties.Follow-Up']
    : undefined,
    Follow_Up_Date__c: r['properties.Follow-Up_Date'],

    Person_Complied_w_Referral_in_24_hrs__c:r.properties.referral_compliance,
    Skillled_Delivery__c: r.properties.skilled_delivery,
    Child_received_immunizations__c: r.properties.immunization,
    Received_a_diagnosis_for_PSBI__c: r.properties.psbi_diagnosis !== ''
    ? r.properties.psbi_diagnosis
    : undefined, //Form: CHW.Follow-Up.PSBI.psbi_diagnosis
    Received_antibiotics_per_protocol__c: r.properties.antibiotic_8days, //Form: CHW.Follow-Up.PSBI.antibiotic_8day

    Distributed_Treatment_on_Last_Visit__c:
    r.properties.distribute_treatment, //Form: CHW.Follow-Up.distribute_treatment
    Person_had_an_adverse_drug_reaction__c:
    r.properties.adverse_drug_reaction,
    Defaulted__c:
    r.properties.date_of_default && r.properties.date_of_default !== ''
    ? true
    : false,
    Date_of_Default__c: r.properties.date_of_default,
    Client_s_Symptoms_Improved__c: r.properties.Client_Improved,
    Case_Type__c: r.properties.Case_Type,
    Follow_Up_By_Date__c:
    r.properties['Follow-Up_By_Date'] &&
    r.properties['Follow-Up_By_Date'] !== ''
    ? r.properties['Follow-Up_By_Date']
    : undefined,
    Date__c: new Date(r.properties.date_opened).toISOString(),
    Reason_for_Service__c: r.properties.Reason_for_Service,
    Type_of_Service__c: r.properties.Type_of_Service,
    Malaria_Status__c: r.properties.Malaria_Status,
    Home_Treatment_Date__c: r.properties.home_treatment_date,
    Malaria_Home_Test_Date__c: r.properties.malaria_test_date,
    Home_ORS__c: r.properties.clinic_ors,
    Home_Zinc__c: r.properties.clinic_zinc,
    Height__c: r.properties.height,
    Weight__c: r.properties.weight,
    MUAC__c: r.properties.muac,
    Nutrition_Status__c: r.properties.Nutrition_Status,

    //===== NEW MAPPINGS - JAN 14 ===========================//
    Pregnancy_Danger_Signs__c: pregnancyDangerSigns,
    Child_Danger_Signs__c: childDangerSigns,
    Delayed_Milestone__c: delayedMilestone,
    Serious_Symptoms__c: seriousSymptoms,
    Other_Referral_Reasons__c: otherReferralReason,
    Home_Based_Care_Rendered__c: homeBasedCareRendered,
    PSBI_Visit__c:
    r.properties.psbi_task && r.properties.psbi_task !== ''
    ? `Day ${r.properties.psbi_task}`
    : undefined,
    Clinical_Services__c: r.properties.TT5_Clinical_Service
    ? state.clinicalMap[r.properties.TT5_Clinical_Service]
    : r.properties.TT5_Clinical_Service,
    Referred_Facility__c: r.properties.referred_facility
    ? state.facilityMap[r.properties.referred_facility]
    : r.properties.referred_facility,
    HAWI_Clinical_Services__c: r.properties.HAWI_Clinical_Service
    ? state.serviceMap[r.properties.HAWI_Clinical_Service]
    : r.properties.HAWI_Clinical_Service,
    ECD_Clinical_Services__c: ecdClinicalService,

    };
    });

    return { ...state, services };
    });
    /* JSON logging of records
    fn(state => {
    console.log('Services to upsert ::', JSON.stringify(state.services));
    return state;
    });
    */

    bulk(
    'Service__c',
    'upsert',
    {
    extIdField: 'Service_UID__c',
    failOnError: true,
    allowNoOp: true,
    },
    state => {
    console.log('Bulk upserting service...');
    return state.services;
    }
    );
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/aleksa-cron-2022-04-29.html b/fr/adaptors/library/jobs/auto/aleksa-cron-2022-04-29.html index 8719d412ff8..093222f90aa 100644 --- a/fr/adaptors/library/jobs/auto/aleksa-cron-2022-04-29.html +++ b/fr/adaptors/library/jobs/auto/aleksa-cron-2022-04-29.html @@ -22,13 +22,13 @@ - +

    aleksa cron

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    Expression

    fn(state => {
    console.log(state);
    return state;
    })
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/alter-state-before-operations.html b/fr/adaptors/library/jobs/auto/alter-state-before-operations.html index b4637531ea3..048359ce7f1 100644 --- a/fr/adaptors/library/jobs/auto/alter-state-before-operations.html +++ b/fr/adaptors/library/jobs/auto/alter-state-before-operations.html @@ -22,13 +22,13 @@ - +

    Pre-processing data

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    dataPath, dataValue, each, field, fields, merge, relationship, upsert, Array

    Expression

    // Here, we make sure CommCare gives us an array to use in each(merge(...), ...)
    fn(state => {
    const idCards = state.data.form.ID_cards_given_to_vendor;
    if (!Array.isArray(idCards)) {
    state.data.form.ID_cards_given_to_vendor = [idCards];
    }
    return state;
    });

    // Now state has been changed, and we carry on...
    each(
    merge(
    dataPath('form.ID_cards_given_to_vendor[*]'),
    fields(
    field('Vendor_Id', dataValue('form.ID_vendor')),
    field('form_finished_time', dataValue('form.meta.timeEnd'))
    )
    ),
    upsert(
    'Small_Packet__c',
    'sp_id__c',
    fields(
    field('sp_id__c', dataValue('ID_cards_given_to_vendor')),
    relationship('Vendor__r', 'Badge_Code__c', dataValue('Vendor_Id')),
    field(
    'Small_Packet_Distribution_Date__c',
    dataValue('form_finished_time')
    )
    )
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/async-and-array-dot-map.html b/fr/adaptors/library/jobs/auto/async-and-array-dot-map.html index a9c900b12d0..fd2d2e56ce2 100644 --- a/fr/adaptors/library/jobs/auto/async-and-array-dot-map.html +++ b/fr/adaptors/library/jobs/auto/async-and-array-dot-map.html @@ -22,13 +22,13 @@ - +

    Using async and array.map

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    map, post, async, await, Promise

    Expression

    fn(state => {
    console.log('Here we will await the result of a LOT of async operations.');

    console.log('First we needed to break large arrays into smaller chunks.');
    function chunk(arr, chunkSize) {
    var R = [];
    for (var i = 0, len = arr.length; i < len; i += chunkSize)
    R.push(arr.slice(i, i + chunkSize));
    return R;
    }

    const clinicSets = chunk(state.data.Clinic, 10);
    const patientSets = chunk(state.data.Patient, 10);
    const visitSets = chunk(state.data.Visit, 10);
    const deletedVisitSets = chunk(state.data.VisitDeleted, 10);

    console.log('Then we define a bunch of different async functions.');
    const postClinics = async cs => {
    return post(state.configuration.inboxUrl, {
    body: { clinics: cs },
    })(state);
    };

    const postPatients = async ps => {
    return post(state.configuration.inboxUrl, {
    body: { patients: ps },
    })(state);
    };

    const postVisits = async vs => {
    return post(state.configuration.inboxUrl, {
    body: { visits: vs },
    })(state);
    };

    const postDeletedVisits = async dvs => {
    return post(state.configuration.inboxUrl, {
    body: { deletedVisits: dvs },
    })(state);
    };

    console.log(
    'Then we define a single function that wraps them all up and waits for all the individual functions to resolve.'
    );
    async function makePosts() {
    return Promise.all([
    ...clinicSets.map(item => postClinics(item)),
    ...patientSets.map(item => postPatients(item)),
    ...visitSets.map(item => postVisits(item)),
    ...deletedVisitSets.map(item => postDeletedVisits(item)),
    ]);
    }

    console.log(
    'Then we return that function, forcing our next operation to await the result of this one.'
    );
    return makePosts();
    });

    fn(state => {
    console.log('I show up AFTER those async functions are resolved.');
    return state;
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/async-findValue.html b/fr/adaptors/library/jobs/auto/async-findValue.html index 60b333826f1..ef3c70ddf9a 100644 --- a/fr/adaptors/library/jobs/auto/async-findValue.html +++ b/fr/adaptors/library/jobs/auto/async-findValue.html @@ -22,13 +22,13 @@ - +

    Using findValue with an array of data

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    findValue, upsertMany, async, await

    Expression

    fn(async state => {
    const dataArray =
    state.data.body.st_grass_repeat ||
    state.data.body["plot_forest_area/st_grass_repeat"] ||
    [];
    const dataGrass = [];
    const path = state.data.body.st_grass_repeat
    ? "st_grass_repeat"
    : "plot_forest_area/st_grass_repeat";

    for (let data of uniqueGrass) {
    dataGrass.push({
    WCSPROGRAMS_TaxaID: await findValue({
    uuid: "WCSPROGRAMS_TaxaID",
    relation: "WCSPROGRAMS_Taxa",
    where: {
    ScientificName: `%${state.handleValue(
    data["st_grass_repeat/grass_species"]
    )}%`,
    },
    operator: { ScientificName: "like" },
    })(state),
    UnknownSpeciesImage: data[`${path}/noknown`],
    GrassPercent: data[`${path}/grass_perc`],
    GrassHeight: data[`${path}/grass_height`],
    AnswerId: state.data.body._id,
    });
    }

    return upsertMany(
    "WCSPROGRAMS_VegetationGrass",
    "WCSPROGRAMS_VegetationGrassCode",
    () => dataGrass
    )(state);
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce.html b/fr/adaptors/library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce.html index d062bd76120..80b374fb02d 100644 --- a/fr/adaptors/library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce.html +++ b/fr/adaptors/library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce.html @@ -22,13 +22,13 @@ - +

    Using merge and each

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    create, dataPath, dataValue, each, field, fields, index, join, lastReferenceValue, merge, relationship

    Expression

    each(
    join('$.data.data[*]', '$.data.formId', 'formId'),
    create(
    'ODK_Submission__c',
    fields(
    //bridgetest sandbox record type, comment out when not in use
    field('RecordTypeId', '012J00000005hlb'),
    //prduction record type, comment out when not in use
    //field("RecordType", "XXXXXXXXXXXXXXXX"),
    // or
    //relationship("RecordType", "name", dataValue("recort_type_name")),
    field('Record_Type_Name__c', dataValue('record_type_id')),
    field('ODK_Form_Name__c', dataValue('formId')),
    field('Site_School_ID_Number__c', dataValue('site')),
    field('BT_Staff_ID__c', dataValue('recorded_by')),
    field('Date__c', dataValue('today')),
    field('Head_of_Household__c', dataValue('head_of_household')),
    field(
    'Head_of_Household_Gender__c',
    dataValue('head_of_household_gender')
    ),
    field('Head_of_Household_age__c', dataValue('head_of_household_age')),
    field('Light_Source__c', dataValue('light_source')),
    field('communication__c', dataValue('communication')),
    field('transport__c', dataValue('transport')),
    field(
    'number_of_children_in_household__c',
    dataValue('number_of_children')
    ),
    field('school_visits__c', dataValue('school_visits')),
    field('school_visit_reason__c', dataValue('school_visit_reason')),
    field('Village__c', dataValue('village')),
    field('ODK_Key__c', dataValue('*meta-instance-id*'))
    )
    )
    ),
    each(
    merge(
    dataPath('individual_na[*]'),
    fields(
    field('metaId', dataValue('*meta-instance-id*')),
    field('parentId', lastReferenceValue('id')),
    field('village', dataValue('$data.village'))
    )
    ),
    create(
    'ODK_Submission__c',
    fields(
    //bridgetest sandbox record type, comment out when not in use
    field('RecordTypeId', '012J00000005hla'),
    //prduction record type, comment out when not in use
    //field("RecordType", "XXXXXXXXXXXXXXXX"),
    // or
    //relationship("RecordType", "name", dataValue("recort_type_name")),
    field('Related_ODK_Submission__c', dataValue('parentId')),
    field('family_name__c', dataValue('given_name')),
    field('school_coded__c', dataValue('school_coded')),
    field('school_type__c', dataValue('school_type')),
    field('gender__c', dataValue('gender')),
    field('Pays_School_Fees__c', dataValue('school_fees_yes_no')),
    field('in_primary_school__c', dataValue('in_primary_school')),
    field('School_Fee_Amount__c', dataValue('school_fees')),
    field('Age__c', dataValue('age')),
    field('surname__c', dataValue('surname')),
    field('out_of_school_reason__c', dataValue('out_of_school_reason')),
    field('class_level__c', dataValue('class_level')),
    field(
    'other_out_of_school_reason__c',
    dataValue('other_out_of_school_reason')
    ),
    field('Village__c', dataValue('village')),
    // This is a concatenation, adding the unique child ID.
    field('ODK_Key__c', function (state) {
    return dataValue('metaId')(state).concat('(', index()(state), ')');
    })
    )
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/commcare-reports-api-2016-08-29.html b/fr/adaptors/library/jobs/auto/commcare-reports-api-2016-08-29.html index e329675f44f..e8cc86b3989 100644 --- a/fr/adaptors/library/jobs/auto/commcare-reports-api-2016-08-29.html +++ b/fr/adaptors/library/jobs/auto/commcare-reports-api-2016-08-29.html @@ -22,13 +22,13 @@ - +

    commcare reports api

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    • Name: commcare reports api
    • Adaptor: @openfn/language-http
    • Adaptor Version: v0.0.9
    • Created about 7 years ago
    • Updated about 7 years ago
    • Score: 0 (an indicator of how useful this job may be)

    Key Functions

    get, post, Promise

    Expression

    get("api/v0.5/configurablereportdata/daily_form_stats", {
    query: function(state) {
    return { date: state.lastSubmissionDate || "Aug 29, 2016 4:44:26 PM" }
    },
    callback: function(state) {
    // Pick submissions out in order to avoid `post` overwriting `response`.
    var submissions = state.response.body;
    // Use .slice to limit how much you send to the server for testing
    // return submissions
    return submissions.reduce(function(acc, item) {
    return acc.then(
    post(
    "http://localhost:4000/inbox/8ad63a29-5c25-4d8d-ba2c-fe6274dcfbab",
    { body: item }
    )
    )
    }, Promise.resolve(state))
    .then(function(state) {
    console.log(submissions.length)
    if (submissions.length) {
    state.lastSubmissionDate = submissions[submissions.length-1].SubmissionDate
    }
    return state;
    })
    .then(function(state) {
    delete state.response
    return state;
    })
    }
    })
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/complex-http-request-chains.html b/fr/adaptors/library/jobs/auto/complex-http-request-chains.html index a827823caec..a4f78c26ba8 100644 --- a/fr/adaptors/library/jobs/auto/complex-http-request-chains.html +++ b/fr/adaptors/library/jobs/auto/complex-http-request-chains.html @@ -22,13 +22,13 @@ - +

    Chaining HTTP Requests

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    dataPath, each, get, post, put

    Expression

    each(
    dataPath('someArray[*]'),
    post(
    'https://en7a5l7u3izq6.x.pipedream.net/',
    {
    body: state => {
    return { name: state.data.surname, age: state.data.age };
    },
    },
    state => {
    console.log('in the callback');
    console.log(state.data);
    get(
    'https://en7a5l7u3izq6.x.pipedream.net/',
    {},
    // Note how we don't use: `put(args)(state)` because state is already
    // provided by the parent operation, get(), to its callback...
    put('https://en7a5l7u3izq6.x.pipedream.net/')
    // ...but since we've called get() INSIDE an anonymous function, we'll
    // need to pass state to it manually: get(args)(state)...
    )(state);
    return state;
    }
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/complex-state-control.html b/fr/adaptors/library/jobs/auto/complex-state-control.html index fb148b1c255..4f70cdad878 100644 --- a/fr/adaptors/library/jobs/auto/complex-state-control.html +++ b/fr/adaptors/library/jobs/auto/complex-state-control.html @@ -22,13 +22,13 @@ - +

    Using promises

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    query

    Expression

    // Example with language-salesforce
    fn(state => {
    // return state => {
    return new Promise((resolve, reject) => {
    query('SELECT Name FROM Account')(state)
    .then(state => {
    console.log(state.references[0].records);
    console.log('doing stuff here');
    return state;
    })
    .then(state => {
    console.log('and in here');
    resolve(state);
    });
    });
    // };
    });

    fn(state => {
    console.log('and also in here!');
    console.log(state.references);
    return state;
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/concatenate-many-fields-with-nulls.html b/fr/adaptors/library/jobs/auto/concatenate-many-fields-with-nulls.html index 0f9837f4ff6..20d6da59228 100644 --- a/fr/adaptors/library/jobs/auto/concatenate-many-fields-with-nulls.html +++ b/fr/adaptors/library/jobs/auto/concatenate-many-fields-with-nulls.html @@ -22,13 +22,13 @@ - +

    Concat fields with nulls

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    arrayToString, create, dataValue, each, field, fields, relationship

    Expression

    each(
    '$.data.data[*]',
    create(
    'Verification__c',
    fields(
    field('RecordTypeId', '01236000000Q6PT'),
    relationship(
    'Supplier__r',
    'Unique_Entity_ID__c',
    dataValue('Unique_Entity_ID')
    ),
    field('Currency_ISO_Code__c', dataValue('Currency_ISO_Code')),
    field('Date_Conducted__c', dataValue('Date_Conducted')),
    field('ODK_Key__c', dataValue('*meta-instance-id*')),
    field('Unique_Entity_ID__c', dataValue('Unique_Entity_ID')),
    field('Interviewee__c', dataValue('Interviewee')),
    field('Interviewee_Role__c', dataValue('Interviewee_Role')),
    field(
    'Interviewee_Primary_Phone__c',
    dataValue('Interviewee_Primary_Phone')
    ),
    field('Interviewee_Phone_2__c', dataValue('Interviewee_Phone_2')),
    field('Interviewee_Phone_3__c', dataValue('Interviewee_Phone_3')),
    field(
    'Interviewee_Primary_Email__c',
    dataValue('Interviewee_Primary_Email')
    ),
    field('Trade_Name__c', dataValue('Trade_Name')),
    field('Registered_Name__c', dataValue('Registered_Name')),
    field('Location_Description__c', dataValue('Location_Description')),
    field('Main_Office_Country__c', dataValue('Main_Office_Country')),
    field('Main_Office_Region_Province_or_County__c', function (state) {
    return arrayToString(
    [
    dataValue('Main_Office_Region_Province_or_County_a')(state),
    dataValue('Main_Office_Region_Province_or_County_b')(state),
    dataValue('Main_Office_Region_Province_or_County_c')(state),
    dataValue('Main_Office_Region_Province_or_County_d')(state),
    ].filter(Boolean),
    ','
    );
    }),
    field('Main_Office_City__c', function (state) {
    return arrayToString(
    [
    dataValue('Main_Office_City_a')(state),
    dataValue('Main_Office_City_b')(state),
    dataValue('Main_Office_City_c')(state),
    dataValue('Main_Office_City_d')(state),
    ].filter(Boolean),
    ','
    );
    }),
    field(
    'Main_Office_Street_Address__c',
    dataValue('Main_Office_Street_Address')
    ),
    field('Geolocation__Latitude__s', dataValue('gps:Latitude')),
    field('Geolocation__Longitude__s', dataValue('gps:Longitude')),
    field('Main_Contact_First__c', dataValue('Main_Contact_First')),
    field('Main_Contact_Last__c', dataValue('Main_Contact_Last')),
    field('Main_Contact_Role__c', dataValue('Main_Contact_Role')),
    field('Main_Contact_Role_Other__c', dataValue('Main_Contact_Role_Other')),
    field(
    'Main_Contact_Phone_Mobile__c',
    dataValue('Main_Contact_Phone_Mobile')
    ),
    field('Main_Contact_Phone_Work__c', dataValue('Main_Contact_Phone_Work')),
    field(
    'Main_Contact_Phone_Other__c',
    dataValue('Main_Contact_Phone_Other')
    ),
    field('Main_Contact_Email_Work__c', dataValue('Main_Contact_Email_Work')),
    field('General_Phone__c', dataValue('General_Phone')),
    field('General_Email__c', dataValue('General_Email')),
    field('Website__c', dataValue('Website')),
    field('Interest_in_Website__c', dataValue('Interest_in_Website')),
    field(
    'Hours_of_Operation_Start__c',
    dataValue('Hours_of_Operation_Start')
    ),
    field('Hours_of_Operation_End__c', dataValue('Hours_of_Operation_End')),
    field(
    'Hours_of_Operation_Other__c',
    dataValue('Hours_of_Operation_Other')
    ),
    field(
    'Hours_of_Operation_Other_Start__c',
    dataValue('Hours_of_Operation_Other_Start')
    ),
    field(
    'Hours_of_Operation_Other_End__c',
    dataValue('Hours_of_Operation_Other_End')
    ),
    field(
    'Goods_and_Services_Description__c',
    dataValue('Goods_and_Services_Description')
    ),
    field('Primary_Sector__c', dataValue('Primary_Sector')),
    field('Primary_Subsectors__c', function (state) {
    return arrayToString(
    [
    dataValue('Primary_Subsectors_1')(state),
    dataValue('Primary_Subsectors_2')(state),
    dataValue('Primary_Subsectors_3')(state),
    dataValue('Primary_Subsectors_4')(state),
    dataValue('Primary_Subsectors_5')(state),
    dataValue('Primary_Subsectors_6')(state),
    dataValue('Primary_Subsectors_7')(state),
    dataValue('Primary_Subsectors_8')(state),
    dataValue('Primary_Subsectors_9')(state),
    dataValue('Primary_Subsectors_10')(state),
    dataValue('Primary_Subsectors_l1')(state),
    dataValue('Primary_Subsectors_12')(state),
    dataValue('Primary_Subsectors_13')(state),
    dataValue('Primary_Subsectors_14')(state),
    dataValue('Primary_Subsectors_15')(state),
    dataValue('Primary_Subsectors_16')(state),
    dataValue('Primary_Subsectors_17')(state),
    dataValue('Primary_Subsectors_18')(state),
    dataValue('Primary_Subsectors_19')(state),
    dataValue('Primary_Subsectors_20')(state),
    dataValue('Primary_Subsectors_21')(state),
    ].filter(Boolean),
    ','
    );
    }),
    field('Other_Sectors__c', function (state) {
    return arrayToString(dataValue('Other_Sectors')(state), ',');
    }),
    field('Other_Subsectors__c', function (state) {
    return arrayToString(
    [
    dataValue('Other_Subsectors_1')(state),
    dataValue('Other_Subsectors_2')(state),
    dataValue('Other_Subsectors_3')(state),
    dataValue('Other_Subsectors_4')(state),
    dataValue('Other_Subsectors_5')(state),
    dataValue('Other_Subsectors_6')(state),
    dataValue('Other_Subsectors_7')(state),
    dataValue('Other_Subsectors_8')(state),
    dataValue('Other_Subsectors_9')(state),
    dataValue('Other_Subsectors_10')(state),
    dataValue('Other_Subsectors_l1')(state),
    dataValue('Other_Subsectors_12')(state),
    dataValue('Other_Subsectors_13')(state),
    dataValue('Other_Subsectors_14')(state),
    dataValue('Other_Subsectors_15')(state),
    dataValue('Other_Subsectors_16')(state),
    dataValue('Other_Subsectors_17')(state),
    dataValue('Other_Subsectors_18')(state),
    dataValue('Other_Subsectors_19')(state),
    dataValue('Other_Subsectors_20')(state),
    dataValue('Other_Subsectors_21')(state),
    ].filter(Boolean),
    ','
    );
    }),
    field(
    'Entity_and_Registration_1__c',
    dataValue('Entity_and_Registration_1')
    ),
    field(
    'Entity_and_Registration_2__c',
    dataValue('Entity_and_Registration_2')
    ),
    field(
    'Entity_and_Registration_3__c',
    dataValue('Entity_and_Registration_3')
    ),
    field('Registration_Date__c', dataValue('Registration_Date')),
    field('Registration_Active__c', dataValue('Registration_Active')),
    field(
    'Business_Operation_Licenses__c',
    dataValue('Business_Operation_Licenses')
    ),
    field(
    'Business_Operation_Certificates__c',
    dataValue('Business_Operation_Certificates')
    ),
    field('Association_Memberships__c', dataValue('Association_Memberships')),
    field('Vendor_List_Memberships__c', dataValue('Vendor_List_Memberships')),
    field('Has_Marketing_Plan__c', dataValue('Has_Marketing_Plan')),
    field('Number_of_Competitors__c', dataValue('Number_of_Competitors')),
    field('Start_of_Operations__c', dataValue('Start_of_Operations')),
    field('Primary_Language__c', dataValue('Primary_Language')),
    field('Primary_Language_Other__c', dataValue('Primary_Language_Other')),
    field('English_Speakers__c', dataValue('English_Speakers')),
    field('Other_Languages__c', dataValue('Other_Languages')),
    field(
    'Frequency_of_Internet_Access__c',
    dataValue('Frequency_of_Internet_Access')
    ),
    field(
    'Method_of_Internet_Access__c',
    dataValue('Method_of_Internet_Access')
    ),
    field(
    'Method_of_Internet_Access_Other__c',
    dataValue('Method_of_Internet_Access_Other')
    ),
    field('Frequency_of_Email_Use__c', dataValue('Frequency_of_Email_Use')),
    field('Type_of_Email_Use__c', dataValue('Type_of_Email_Use')),
    field('Counties_Regions_Serviced__c', function (state) {
    return arrayToString(
    [
    dataValue('Counties_Regions_Serviced_a')(state),
    dataValue('Counties_Regions_Serviced_b')(state),
    dataValue('Counties_Regions_Serviced_c')(state),
    dataValue('Counties_Regions_Serviced_d')(state),
    ].filter(Boolean),
    ','
    );
    }),
    field('Additional_Branches__c', dataValue('Additional_Branches')),
    field('Branch_Locations__c', function (state) {
    return arrayToString(
    [
    dataValue('Branch_Locations_a')(state),
    dataValue('Branch_Locations_b')(state),
    dataValue('Branch_Locations_c')(state),
    dataValue('Branch_Locations_d')(state),
    ].filter(Boolean),
    ','
    );
    }),
    field(
    'Majority_Local_or_Foreign__c',
    dataValue('Majority_Local_or_Foreign')
    ),
    field('Num_of_Owners__c', dataValue('Num_of_Owners')),
    field('Num_of_Female_Owners__c', dataValue('Num_of_Female_Owners')),
    field('Num_of_Male_Owners__c', dataValue('Num_of_Male_Owners')),
    field(
    'Primary_Owner_is_Same_as_Main_Contact__c',
    dataValue('Primary_Owner_is_Same_as_Main_Contact')
    ),
    field('Primary_Owner__c', dataValue('Primary_Owner')),
    field('Primary_Owner_Gender__c', dataValue('Primary_Owner_Gender')),
    field(
    'Primary_Owner_Gender_Other__c',
    dataValue('Primary_Owner_Gender_Other')
    ),
    field(
    'Primary_Owner_Nationality__c',
    dataValue('Primary_Owner_Nationality')
    ),
    field(
    'Primary_Owner_Phone_Mobile__c',
    dataValue('Primary_Owner_Phone_Mobile')
    ),
    field(
    'Primary_Owner_Phone_Work__c',
    dataValue('Primary_Owner_Phone_Work')
    ),
    field(
    'Primary_Owner_Phone_Other__c',
    dataValue('Primary_Owner_Phone_Other')
    ),
    field('Primary_Owner_Email__c', dataValue('Primary_Owner_Email')),
    field('Num_of_Businesses_Owned__c', dataValue('Num_of_Businesses_Owned')),
    field(
    'Names_of_Businesses_Owned__c',
    dataValue('Names_of_Businesses_Owned')
    ),
    field('Num_of_Managers__c', dataValue('Num_of_Managers')),
    field('Num_of_Female_Managers__c', dataValue('Num_of_Female_Managers')),
    field('Num_of_Male_Managers__c', dataValue('Num_of_Male_Managers')),
    field('Finance_Management__c', dataValue('Finance_Management')),
    field(
    'Finance_Management_Other__c',
    dataValue('Finance_Management_Other')
    ),
    field('Dedicated_HR_Manager__c', dataValue('Dedicated_HR_Manager')),
    field(
    'Num_of_Permanent_Full_Time_Employees__c',
    dataValue('Num_of_Permanent_Full_Time_Employees')
    ),
    field(
    'Num_of_Perm_Full_Time_Female_Employees__c',
    dataValue('Num_of_Perm_Full_Time_Female_Employees')
    ),
    field(
    'Num_of_Perm_Full_Time_Male_Employees__c',
    dataValue('Num_of_Perm_Full_Time_Male_Employees')
    ),
    field(
    'Num_of_Full_Time_Temporary_Employees__c',
    dataValue('Num_of_Full_Time_Temporary_Employees')
    ),
    field(
    'Num_of_Full_Time_Temp_Female_Employees__c',
    dataValue('Num_of_Full_Time_Temp_Female_Employees')
    ),
    field(
    'Num_of_Full_Time_Temp_Male_Employees__c',
    dataValue('Num_of_Full_Time_Temp_Male_Employees')
    ),
    field(
    'Num_of_Local_Staff_Full_Part_Time__c',
    dataValue('Num_of_Local_Staff_Full_Part_Time')
    ),
    field(
    'Num_of_Expatriate_Staff_Full_Part_Time__c',
    dataValue('Num_of_Expatriate_Staff_Full_Part_Time')
    ),
    field(
    'International_Client_in_Past_Six_Months__c',
    dataValue('International_Client_in_Past_Six_Months')
    ),
    field('Principal_Client_Name__c', dataValue('Principal_Client_Name')),
    field(
    'Foreign_or_Domestic_Principal_Client__c',
    dataValue('Foreign_or_Domestic_Principal_Client')
    ),
    field('Principal_Client_Sector__c', dataValue('Principal_Client_Sector')),
    field(
    'Goods_Services_Provided_to_this_Client__c',
    dataValue('Goods_Services_Provided_to_this_Client')
    ),
    field(
    'End_of_Last_Contract_with_this_Client__c',
    dataValue('End_of_Last_Contract_with_this_Client')
    ),
    field(
    'Value_Goods_Services_Sold_Last_6_Months__c',
    dataValue('Value_Goods_Services_Sold_Last_6_Months')
    ),
    field(
    'Value_Goods_Sold_Last_6_Months_USD__c',
    dataValue('Value_Goods_Sold_Last_6_Months_USD')
    ),
    field(
    'Access_to_Finance_Constraint_Ranking__c',
    dataValue('Access_to_Finance_Constraint_Ranking')
    ),
    field('Bank_Account__c', dataValue('Bank_Account')),
    field('Bank_Guarantee__c', dataValue('Bank_Guarantee')),
    field(
    'Satisfied_with_Current_Bank__c',
    dataValue('Satisfied_with_Current_Bank')
    ),
    field(
    'Describe_Satisfaction_with_Current_Bank__c',
    dataValue('Describe_Satisfaction_with_Current_Bank')
    ),
    field(
    'Has_Received_a_Formal_Loan__c',
    dataValue('Has_Received_a_Formal_Loan')
    ),
    field('Formal_Loan_Provider__c', dataValue('Formal_Loan_Provider')),
    field(
    'Formal_Loan_Amount_Received__c',
    dataValue('Formal_Loan_Amount_Received')
    ),
    field(
    'Formal_Loan_Amount_Received_USD__c',
    dataValue('Formal_Loan_Amount_Received_USD')
    ),
    field(
    'Date_Formal_Loan_Received__c',
    dataValue('Date_Formal_Loan_Received')
    ),
    field('Formal_Loan_Purpose__c', dataValue('Formal_Loan_Purpose')),
    field(
    'Formal_Loan_Purpose_Other__c',
    dataValue('Formal_Loan_Purpose_Other')
    ),
    field('Formal_Loan_Repaid__c', dataValue('Formal_Loan_Repaid')),
    field('Interested_in_Loan__c', dataValue('Interested_in_Loan')),
    field('Interested_Loan_Amount__c', dataValue('Interested_Loan_Amount')),
    field(
    'Interested_Loan_Amount_USD__c',
    dataValue('Interested_Loan_Amount_USD')
    ),
    field(
    'Interested_Loan_Duration__c',
    dataValue('Interested_Loan_Duration')
    ),
    field('Interested_Loan_Purpose__c', dataValue('Interested_Loan_Purpose')),
    field(
    'Interested_Loan_Purpose_Other__c',
    dataValue('Interested_Loan_Purpose_Other')
    ),
    field(
    'Formal_Loan_Confidence_Ranking__c',
    dataValue('Formal_Loan_Confidence_Ranking')
    ),
    field(
    'Received_Loan_from_Family_Friends__c',
    dataValue('Received_Loan_from_Family_Friends')
    ),
    field(
    'Family_Friend_Loan_Amount__c',
    dataValue('Family_Friend_Loan_Amount')
    ),
    field(
    'Family_Friend_Loan_Amount_USD__c',
    dataValue('Family_Friend_Loan_Amount_USD')
    ),
    field(
    'Received_Loan_from_Informal_Lenders__c',
    dataValue('Received_Loan_from_Informal_Lenders')
    ),
    field(
    'Informal_Lender_Loan_Amount__c',
    dataValue('Informal_Lender_Loan_Amount')
    ),
    field(
    'Informal_Lender_Loan_Amount_USD__c',
    dataValue('Informal_Lender_Loan_Amount_USD')
    ),
    field(
    'Interested_in_Investor_Business_Partner__c',
    dataValue('Interested_in_Investor_Business_Partner')
    ),
    field(
    'Total_Turnover_Previous_Month__c',
    dataValue('Total_Turnover_Previous_Month')
    ),
    field(
    'Total_Turnover_Previous_Month_USD__c',
    dataValue('Total_Turnover_Previous_Month_USD')
    ),
    field(
    'Total_Turnover_Previous_Fiscal_Year__c',
    dataValue('Total_Turnover_Previous_Fiscal_Year')
    ),
    field(
    'Total_Turnover_Previous_Fiscal_Yr_USD__c',
    dataValue('Total_Turnover_Previous_Fiscal_Yr_USD')
    ),
    field(
    'Total_Profit_Previous_Fiscal_Year__c',
    dataValue('Total_Profit_Previous_Fiscal_Year')
    ),
    field(
    'Total_Profit_Previous_Fiscal_Year_USD__c',
    dataValue('Total_Profit_Previous_Fiscal_Year_USD')
    ),
    field(
    'Accepted_Modes_of_Payment__c',
    dataValue('Accepted_Modes_of_Payment')
    ),
    field(
    'Accepted_Modes_of_Payment_Other__c',
    dataValue('Accepted_Modes_of_Payment_Other')
    ),
    field(
    'Avg_Expen_Spent_on_Imported_Goods_Year__c',
    dataValue('Avg_Expen_Spent_on_Imported_Goods_Year')
    ),
    field(
    'Avg_Expen_Spent_on_Domestic_Goods_Year__c',
    dataValue('Avg_Expen_Spent_on_Domestic_Goods_Year')
    ),
    field(
    'Avg_Expen_on_Domestic_Suppliers_Year__c',
    dataValue('Avg_Expen_on_Domestic_Suppliers_Year')
    ),
    field(
    'Avg_Expen_on_Intl_Suppliers_Year__c',
    dataValue('Avg_Expen_on_Intl_Suppliers_Year')
    ),
    field(
    'Avg_Expen_Spent_on_Salaries_Year__c',
    dataValue('Avg_Expen_Spent_on_Salaries_Year')
    ),
    field(
    'Balance_Sheet_Statement_Available__c',
    dataValue('Balance_Sheet_Statement_Available')
    ),
    field('Profit_Loss_Statement__c', dataValue('Profit_Loss_Statement')),
    field('Directly_Imports_Goods__c', dataValue('Directly_Imports_Goods')),
    field(
    'Avg_of_Total_Costs_from_Imports__c',
    dataValue('Avg_of_Total_Costs_from_Imports')
    ),
    field('Highest_Costing_Import__c', dataValue('Highest_Costing_Import')),
    field(
    'Origin_Country_of_Highest_Costing_Import__c',
    dataValue('Origin_Country_of_Highest_Costing_Import')
    ),
    field('Other_Import_Countries__c', dataValue('Other_Import_Countries')),
    field('Exports_Products__c', dataValue('Exports_Products')),
    field(
    'Avg_of_Total_Revenue_from_Exports__c',
    dataValue('Avg_of_Total_Revenue_from_Exports')
    ),
    field('Primary_Export__c', dataValue('Primary_Export')),
    field('Destination_of_Exports__c', dataValue('Destination_of_Exports')),
    field(
    'Profits_Expectation_Next_Six_Months__c',
    dataValue('Profits_Expectation_Next_Six_Months')
    ),
    field(
    'Staff_Expectation_Next_Six_Months__c',
    dataValue('Staff_Expectation_Next_Six_Months')
    ),
    field(
    'Int_l_Entities_Represent_Good_Opp__c',
    dataValue('Int_l_Entities_Represent_Good_Opp')
    ),
    field(
    'Int_l_Concessionaires_Represent_Good_Opp__c',
    dataValue('Int_l_Concessionaires_Represent_Good_Opp')
    ),
    field(
    'Sectors_Representing_Best_Local_Opps__c',
    dataValue('Sectors_Presenting_Best_Local_Opps')
    ),
    field(
    'Obstacle_Working_with_Intl_Entities__c',
    dataValue('Obstacle_Working_with_Intl_Entities')
    ),
    field(
    'Biggest_Challenge_Next_6_Months__c',
    dataValue('Biggest_Challenge_Next_6_Months')
    ),
    field(
    'Second_Biggest_Challenge_Next_6_Months__c',
    dataValue('Second_Biggest_Challenge_Next_6_Months')
    ),
    field(
    'Financial_Management_Ranking__c',
    dataValue('Financial_Management_Ranking')
    ),
    field(
    'Access_to_Finance_Ranking__c',
    dataValue('Access_to_Finance_Ranking')
    ),
    field('Administration_Ranking__c', dataValue('Administration_Ranking')),
    field('Human_Resources_Ranking__c', dataValue('Human_Resources_Ranking')),
    field(
    'Technical_Expertise_Ranking__c',
    dataValue('Technical_Expertise_Ranking')
    ),
    field(
    'Training_Helps_Efficiency__c',
    dataValue('Training_Helps_Efficiency')
    ),
    field(
    'Capacity_Building_Activities_Offered__c',
    dataValue('Capacity_Building_Activities_Offered')
    ),
    field(
    'Capacity_Building_Offered_Other__c',
    dataValue('Capacity_Building_Offered_Other')
    ),
    field(
    'Can_Provide_Quotations_WP_on_Request__c',
    dataValue('Can_Provide_Quotations_WP_on_Request')
    ),
    field('Knows_What_a_Tender_is__c', dataValue('Knows_What_a_Tender_is')),
    field(
    'Frequency_Checking_for_Tenders__c',
    dataValue('Frequency_Checking_for_Tenders')
    ),
    field(
    'Has_Submitted_a_Tender_Bid__c',
    dataValue('Has_Submitted_a_Tender_Bid')
    ),
    field(
    'Has_Won_Tenders_in_Past_Six_Months__c',
    dataValue('Has_Won_Tenders_in_Past_Six_Months')
    ),
    field(
    'Details_of_Recently_Won_Tenders__c',
    dataValue('Details_of_Recently_Won_Tenders')
    ),
    field(
    'Num_of_Gov_t_Bids_in_Last_Six_Months__c',
    dataValue('Num_of_Govt_Bids_in_Last_Six_Months')
    ),
    field(
    'Num_of_Private_Bids_in_Last_Six_Months__c',
    dataValue('Num_of_Private_Bids_in_Last_Six_Months')
    ),
    field(
    'Num_of_NGO_INGO_IO_Bids_Last_Six_Months__c',
    dataValue('Num_of_NGO_INGO_IO_Bids_Last_Six_Months')
    ),
    field(
    'Main_Reason_for_Lost_Bids__c',
    dataValue('Main_Reason_for_Lost_Bids')
    ),
    field(
    'Main_Reason_for_Lost_Bids_Other__c',
    dataValue('Main_Reason_for_Lost_Bids_Other__c')
    ),
    field(
    'Main_Reason_for_Not_Bidding_on_Tenders__c',
    dataValue('Main_Reason_for_Not_Bidding_on_Tenders')
    ),
    field(
    'Main_Reason_Not_Bidding_Tenders_Others__c',
    dataValue('Main_Reason_Not_Bidding_Tenders_Others__c')
    ),
    field(
    'Planning_to_Bid_on_Future_Tenders__c',
    dataValue('Planning_to_Bid_on_Tenders_in_the_Future')
    ),
    field(
    'Services_That_Would_Help_to_Win_Tenders__c',
    dataValue('Services_That_Would_Help_to_Win_Tenders')
    ),
    field(
    'Interested_in_Future_BM_Communications__c',
    dataValue('Interested_in_Future_BM_Communications')
    ),
    field(
    'Future_BM_Communications__c',
    dataValue('Future_BM_Communications')
    ),
    field(
    'Interested_in_Attending_Future_Training__c',
    dataValue('Interested_in_Attending_Future_Training')
    ),
    field(
    'Training_Most_Interested_in_Attending__c',
    dataValue('Training_Most_Interested_in_Attending')
    ),
    field(
    'Training_Most_Interested_in_Other__c',
    dataValue('Training_Most_Interested_in_Other')
    ),
    field(
    'Amount_Willing_to_Pay_for_Training__c',
    dataValue('Amount_Willing_to_Pay_for_Training')
    ),
    field(
    'Amount_Willing_to_Pay_for_Training__c',
    dataValue('Amount_Willing_to_Pay_for_Training')
    ),
    field(
    'Training_Interested_In_but_Not_Offered__c',
    dataValue('Training_Interested_In_but_Not_Offered')
    ),
    field(
    'Advice_to_Entrepreneurs_in_your_Country__c',
    dataValue('Advice_to_Entrepreneurs_in_your_Country')
    ),
    field('Interviewer_Comments__c', dataValue('Interviewer_Comments'))
    )
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/create-if-proposal.html b/fr/adaptors/library/jobs/auto/create-if-proposal.html index 09e19592c34..dec48cd8e35 100644 --- a/fr/adaptors/library/jobs/auto/create-if-proposal.html +++ b/fr/adaptors/library/jobs/auto/create-if-proposal.html @@ -22,13 +22,13 @@ - +

    Create/update records if...

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    createIf, dataValue, field, fields, relationship, upsertIf

    Expression

    // Using upsertIf and createIf we can conditionally create or update records if
    // some condition in the source data is met.

    upsertIf(
    // a path which resolves to true/false
    dataValue('form.legal.allowedToSync'),
    'Patient__c',
    'Patient_ID__c',
    fields(
    field('Name__c', dataValue('form.name')),
    field('Patient_ID__c', dataValue('form.identification.govId'))
    )
    );

    createIf(
    // or a function which returns true/false
    state => state.data.form.completedVisit === 'yes',
    'Visit__c',
    fields(
    field('Date__c', dataValue('form.visit.visit_date')),
    field('Type__c', 'checkup'),
    relationship(
    'Patient__r',
    'Patient_ID__c',
    dataValue('form.identification.govId')
    )
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/getKoboData.html b/fr/adaptors/library/jobs/auto/getKoboData.html index 8820f71deef..81311d3157d 100644 --- a/fr/adaptors/library/jobs/auto/getKoboData.html +++ b/fr/adaptors/library/jobs/auto/getKoboData.html @@ -22,13 +22,13 @@ - +

    Extract Kobo data from API to send to OpenFn Inbox

    📜 This job is an official example from OpenFn.

    Metadata

    • Name: Extract Kobo data from API to send to OpenFn Inbox
    • Adaptor: @openfn/language-http
    • Adaptor Version: v3.1.7
    • Created date unknown
    • Updated date unknown
    • Score: 100 (an indicator of how useful this job may be)

    Key Functions

    dataPath, each, get, map, post

    Expression

    //Sample job to get Kobo data and post back to OpenFn Inbox
    fn(state => {
    console.log(`Started at: ${new Date().toISOString()}`);
    state.submissions = [];
    state.data = {
    surveys: [
    // =========================================================================
    //== TODO: Specify new forms to fetch here, including the Kobo form id, tag, name, and owner ==//
    { id: 'aijj9FSpuCzMTRnMPGike8', tag: 'nrgt_historical', name: 'NRGT Makira 2017 - Test OpenFn', owner: 'bns' }, // example
    //consider listing multiple forms
    // =========================================================================

    ].map(survey => ({
    formId: survey.id,
    tag: survey.tag,
    name: survey.name,
    owner: survey.owner,
    url: `https://kf.kobotoolbox.org/api/v2/assets/${survey.id}/data/?format=json`,
    })),
    };
    console.log(`Fetching data for ${state.data.surveys.length} surveys.`);
    return state;
    });

    each(dataPath('surveys[*]'), state => {
    const { url, tag, formId, name, owner } = state.data;
    return get(url, {}, state => {
    state.data.submissions = state.data.results.map((submission, i) => {
    return {
    i,
    // Here we append the tags defined above to the Kobo form submission data
    form: tag,
    formName: name,
    formOwner: owner,
    body: submission,
    };
    });
    const count = state.data.submissions.length;
    console.log(`Fetched ${count} submissions from ${formId} (${tag}).`);
    //Once we fetch the data, we want to post each individual Kobo survey
    //back to the OpenFn inbox to run through the jobs
    return each(dataPath('submissions[*]'), state => {
    console.log(`Posting ${state.data.i + 1} of ${count}...`);
    // =========================================================================
    //== TODO: replace openfnInboxUrl with your OpenFn Project Inbox URL ====//
    return post(openfnInboxUrl, { body: state => state.data })(state);
    })(state);
    // =========================================================================
    })(state);
    });

    fn(state => {
    console.log(`Finished at: ${new Date().toISOString()}`);
    return {
    data: {
    message: "No cursor required. Job fetches all submission for given forms."
    },
    references: []
    };
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/nawiri-2023-05-03.html b/fr/adaptors/library/jobs/auto/nawiri-2023-05-03.html index 3ccd981c833..50521333045 100644 --- a/fr/adaptors/library/jobs/auto/nawiri-2023-05-03.html +++ b/fr/adaptors/library/jobs/auto/nawiri-2023-05-03.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/no-return-2023-01-06.html b/fr/adaptors/library/jobs/auto/no-return-2023-01-06.html index 39d3ab04311..8206ba78a39 100644 --- a/fr/adaptors/library/jobs/auto/no-return-2023-01-06.html +++ b/fr/adaptors/library/jobs/auto/no-return-2023-01-06.html @@ -22,13 +22,13 @@ - +

    no return

    This job was provided by an OpenFn.org user via the job library API.

    Metadata

    Key Functions

    Expression

    fn(state => {
    console.log("no return");
    });
    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/promise-all-nested-requests.html b/fr/adaptors/library/jobs/auto/promise-all-nested-requests.html index 06d26f44425..f74185fa227 100644 --- a/fr/adaptors/library/jobs/auto/promise-all-nested-requests.html +++ b/fr/adaptors/library/jobs/auto/promise-all-nested-requests.html @@ -22,13 +22,13 @@ - +

    Promises and nested requests

    📜 This job is an official example from OpenFn.

    Metadata

    • Name: Promises and nested requests
    • Adaptor: @openfn/language-http
    • Adaptor Version: latest
    • Created date unknown
    • Updated date unknown
    • Score: 100 (an indicator of how useful this job may be)

    Key Functions

    each, get, Promise

    Expression

    each(
    '$.enrolledUsers[10]',
    fn(state => {
    const { host } = state.configuration;
    const { id } = state.data;
    const usersfields = [];
    return get(
    host,
    {
    query: {
    wstoken: state.token,
    wsfunction: 'core_user_get_users_by_field',
    field: 'id',
    'values[]': id,
    moodlewsrestformat: 'json',
    },
    },
    state => {
    const { id, phone1, address } = state.data[0];
    const fields = [
    { id, 'Teléfono móvil': phone1, Dirección: address, grades: [] },
    ];
    console.log(state.courseIds);
    let promises = [];
    state.courseIds.forEach(courseid => {
    promises.push(
    get(
    host,
    {
    query: {
    wstoken: state.token,
    wsfunction: 'gradereport_user_get_grade_items',
    userid: id,
    courseid,
    moodlewsrestformat: 'json',
    },
    },
    state => {
    console.log('fetched');
    const { graderaw } = state.data.usergrades[0].gradeitems[0];
    const grades = [{ courseid, graderaw }];
    fields[0].grades.push(...grades);
    }
    )(state)
    );
    });

    return Promise.all(promises).then(() => {
    usersfields.push(...fields);
    return {
    ...state,
    usersfields,
    enrolledUsers: [],
    response: [],
    };
    });
    }
    )(state);
    })
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/send-mail-in-mailgun.html b/fr/adaptors/library/jobs/auto/send-mail-in-mailgun.html index 29caa693697..b2862fa3bcf 100644 --- a/fr/adaptors/library/jobs/auto/send-mail-in-mailgun.html +++ b/fr/adaptors/library/jobs/auto/send-mail-in-mailgun.html @@ -22,13 +22,13 @@ - +

    send email

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    dataValue, field, fields, send

    Expression

    send(
    fields(
    field('from', 'you@domain.com'),
    field('to', dataValue('form.submission.respondantEmail')),
    field('subject', 'Thanks for completing our survey.'),
    field('text', 'Your message goes here.')
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/send-sms-from-salesforce-workflow.html b/fr/adaptors/library/jobs/auto/send-sms-from-salesforce-workflow.html index 1d72aecc3e3..4dc22d06c92 100644 --- a/fr/adaptors/library/jobs/auto/send-sms-from-salesforce-workflow.html +++ b/fr/adaptors/library/jobs/auto/send-sms-from-salesforce-workflow.html @@ -22,13 +22,13 @@ - +

    Send sms from Salesforce workflow action

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    dataValue, field, fields, send

    Expression

    send(
    fields(
    field(
    'to_number',
    dataValue(
    'Envelope.Body.notifications.Notification.sObject.phone_number__c'
    )
    ),
    field('message_type', 'sms'),
    field('route_id', ''),
    field('content', function (state) {
    return 'Hey there. Your name is '.concat(
    dataValue('Envelope.Body.notifications.Notification.sObject.name__c')(
    state
    ),
    '.'
    );
    })
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/synchronous-http-request.html b/fr/adaptors/library/jobs/auto/synchronous-http-request.html index 86f46b7d9bc..ad28540ab00 100644 --- a/fr/adaptors/library/jobs/auto/synchronous-http-request.html +++ b/fr/adaptors/library/jobs/auto/synchronous-http-request.html @@ -22,13 +22,13 @@ - +

    Chaining synchronous http requests

    📜 This job is an official example from OpenFn.

    Metadata

    • Name: Chaining synchronous http requests
    • Adaptor: @openfn/language-http
    • Adaptor Version: latest
    • Created date unknown
    • Updated date unknown
    • Score: 100 (an indicator of how useful this job may be)

    Key Functions

    post, async, await

    Expression

    fn(async state => {
    const { Patient, Visit } = state.data;

    console.log('Here we break large arrays into smaller chunks.');
    const chunk = (arr, chunkSize) => {
    var R = [];
    for (var i = 0, len = arr.length; i < len; i += chunkSize) R.push(arr.slice(i, i + chunkSize));
    return R;
    };

    const patientSets = chunk(Patient, 10);
    const visitSets = chunk(Visit, 10);

    console.log('Patient sets:', patientSets.length);
    console.log('Visit sets:', visitSets.length);

    const visitChunks = [];
    const patientChunks = [];

    patientSets.forEach(sets => {
    const data = {
    Visit: [],
    Patient: sets,
    };
    patientChunks.push(data);
    });

    visitSets.forEach(sets => {
    const data = {
    Visit: sets,
    Patient: [],
    };
    visitChunks.push(data);
    });

    let countInbox = 0;
    console.log('Then we define our async function that make multiple posts requests,');
    console.log('each after a fix period of time.');
    const postToInbox = async data => {
    countInbox++;
    console.log(`${countInbox} request to inbox`);

    await new Promise(resolve => setTimeout(resolve, 2000));
    await post(state.configuration.inboxUrl, { body: data })(state);
    };

    console.log('For each one of our chunks, we send one by one awaiting response.');
    for (const patient of patientChunks) {
    await postToInbox(patient);
    }
    for (const visit of visitChunks) {
    await postToInbox(visit);
    }

    return { ...state, patientChunks, visitChunks };
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/timeout.html b/fr/adaptors/library/jobs/auto/timeout.html index 6db1c2689b8..84085ed70e9 100644 --- a/fr/adaptors/library/jobs/auto/timeout.html +++ b/fr/adaptors/library/jobs/auto/timeout.html @@ -22,13 +22,13 @@ - +

    Timeout to create a delay

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    get

    Expression

    // To properly use a timeout, wrap it in a promise. This job has two operations
    // and it executes the get(...) operation after the fn(...) operation
    // waits for 4000ms.
    fn(state => {
    return new Promise((resolve, reject) => {
    setTimeout(() => {
    console.log('wait, and then resolve');
    resolve(state);
    }, 4000);
    });
    });

    get('https://jsonplaceholder.typicode.com/todos/1');

    - + \ No newline at end of file diff --git a/fr/adaptors/library/jobs/auto/upsert-many-items-in-array-with-value-outside-array.html b/fr/adaptors/library/jobs/auto/upsert-many-items-in-array-with-value-outside-array.html index 87edd0b090f..912c9f03f28 100644 --- a/fr/adaptors/library/jobs/auto/upsert-many-items-in-array-with-value-outside-array.html +++ b/fr/adaptors/library/jobs/auto/upsert-many-items-in-array-with-value-outside-array.html @@ -22,13 +22,13 @@ - +

    Merge data into child array then upsert

    📜 This job is an official example from OpenFn.

    Metadata

    Key Functions

    dataPath, dataValue, each, field, fields, merge, relationship, upsert

    Expression

    each(
    merge(
    dataPath('form.ID_cards_given_to_vendor[*]'),
    fields(
    field('Vendor_Id', dataValue('form.ID_vendor')),
    field('form_finished_time', dataValue('form.meta.timeEnd'))
    )
    ),
    upsert(
    'Small_Packet__c',
    'sp_id__c',
    fields(
    field('sp_id__c', dataValue('ID_cards_given_to_vendor')),
    relationship('Vendor__r', 'Badge_Code__c', dataValue('Vendor_Id')),
    field(
    'Small_Packet_Distribution_Date__c',
    dataValue('form_finished_time')
    )
    )
    )
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/library/triggers/xmlns.html b/fr/adaptors/library/triggers/xmlns.html index 7e568264481..26d7ce99cdb 100644 --- a/fr/adaptors/library/triggers/xmlns.html +++ b/fr/adaptors/library/triggers/xmlns.html @@ -22,13 +22,13 @@ - +

    Match a message with a fragment inside another object called `form`

    {
    "form": {
    "@xmlns": "http://openrosa.org/formdesigner/F732194-3278-nota-ReAL-one"
    }
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/magpi.html b/fr/adaptors/magpi.html index 88a326cfbd1..c79bc02d1be 100644 --- a/fr/adaptors/magpi.html +++ b/fr/adaptors/magpi.html @@ -22,14 +22,14 @@ - +

    Magpi

    Magpi is not able to push data to external URLs. In order to fetch data from Magpi, you must run a scheduled job with a cron trigger using language-magpi:

    fetchSurveyData({
    surveyId: 37479, // the survey id
    afterDate: '2016-05-31', // the initial "after" date
    // after the first run, OpenFn will only fetch new submissions
    postUrl: 'https://www.openfn.org/inbox/secret-5c25-inbox-ba2c-url', // the inbox to post form data to.
    });

    Every time this job runs it will only fetch new data, by default.

    - + \ No newline at end of file diff --git a/fr/adaptors/moodle.html b/fr/adaptors/moodle.html index 12e3facb1ce..61b59d0ccbc 100644 --- a/fr/adaptors/moodle.html +++ b/fr/adaptors/moodle.html @@ -22,7 +22,7 @@ - + @@ -48,7 +48,7 @@ reflected in my mobile app so that I can follow-up with the relevant support to ensure they perform well.

    Example job to get enrolled users via the Moodle API endpoint (aka web service function): core_enrol_get_enrolled_users

    fn(state => {
    const { loginUrl, username, password, host } = state.configuration;
    return get(
    `${loginUrl}&username=${username}&password=${password}`,
    {},
    state => {
    const { token } = state.data;
    const courseIds = [224, 225];
    const enrolledUsers = [];
    return each(
    courseIds,
    fn(state => {
    let courseid = state.data;
    return get(
    `${host}`,
    {
    query: {
    wstoken: token,
    wsfunction: 'core_enrol_get_enrolled_users',
    courseid,
    moodlewsrestformat: 'json',
    },
    headers: { 'content-type': 'application/json' },
    },
    state => {
    console.log(
    `Getting users enrolled in the course with ${courseid}...`
    );
    enrolledUsers.push(state.data);
    return { ...state, enrolledUsers };
    }
    )(state);
    })
    )(state);
    }
    )(state);
    });
    - + \ No newline at end of file diff --git a/fr/adaptors/odk.html b/fr/adaptors/odk.html index 3966fc2f7ed..e51191e65f9 100644 --- a/fr/adaptors/odk.html +++ b/fr/adaptors/odk.html @@ -22,7 +22,7 @@ - + @@ -44,7 +44,7 @@ https://www.openfn.org/inbox/8ad63a29-mUCh-sEcRET-cODes-wOW)
  • Leave "Authorization token:" blank.
  • Leave "Include Media as:" set to "Links(URLs) to Media".
  • Click "Publish" and enter your email address in the dialogue box.
  • Click the "Published Data" tab under "Form Management" and select your form to view the status of your publisher. You can also now check your OpenFn inbox to see ODK submissions arrive.
  • - + \ No newline at end of file diff --git a/fr/adaptors/ona.html b/fr/adaptors/ona.html index 6d24e88d972..4100ce0d3b9 100644 --- a/fr/adaptors/ona.html +++ b/fr/adaptors/ona.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ and select Settings.
  • On the left-side menu, select Webhooks.
  • Paste your OpenFn inbox URL into the URL input field.
  • Click "Add webhook".
  • Ensure that the webhook is now listed with the JSON tag, indicating that it will forward data as JSON.
  • Check to see that, once a form is submitted, it is forwarded to your OpenFn inbox.
  • - + \ No newline at end of file diff --git a/fr/adaptors/packages/asana-changelog.html b/fr/adaptors/packages/asana-changelog.html index 7131a50845b..71a0388ef49 100644 --- a/fr/adaptors/packages/asana-changelog.html +++ b/fr/adaptors/packages/asana-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    2.1.6

    Patch Changes

    2.1.5

    Patch Changes

    • f7ebd3c: remove sample configuration

    2.1.4

    Patch Changes

    • f2aed32: add examples

    2.1.3

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    2.1.2

    Patch Changes

    2.1.1

    Patch Changes

    • 8566b26: Fix typings
    • b3d45ff: Fix CJS export of npm package.
    • ecf5d30: remove sinon since it was not being used
    • Updated dependencies [8566b26]
    • Updated dependencies [b3d45ff]
    • Updated dependencies [b5eb665]
    • Updated dependencies [ecf5d30]

    2.1.0

    Minor Changes

    • 5f40dcf: Migrated language-asana

    Patch Changes

    • e04aa28: Rename credential-schema to configuration-schema, update descriptions
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/asana-configuration-schema.html b/fr/adaptors/packages/asana-configuration-schema.html index 21e078da44b..8ff23193a24 100644 --- a/fr/adaptors/packages/asana-configuration-schema.html +++ b/fr/adaptors/packages/asana-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "apiVersion": "1.0",
    "token": "sample-tokenyWSJdXBACMLLWMNGgADFA"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "apiVersion": {
    "title": "API Version",
    "type": "string",
    "description": "The API version",
    "examples": [
    "1.0"
    ]
    },
    "token": {
    "title": "Token",
    "type": "string",
    "description": "The API token",
    "examples": [
    "sample-tokenyWSJdXBACMLLWMNGgADFA"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "apiVersion",
    "token"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/asana-docs.html b/fr/adaptors/packages/asana-docs.html index b2ae775fe4c..aa63f08de27 100644 --- a/fr/adaptors/packages/asana-docs.html +++ b/fr/adaptors/packages/asana-docs.html @@ -22,7 +22,7 @@ - + @@ -38,7 +38,7 @@ Access: public

    ParamTypeDescription
    taskGidstringGlobally unique identifier for the task
    paramsobjectBody parameters
    callbackfunction(Optional) callback function

    Example

    updateTask("taskGid",
    {
    name: 'test', "approval_status": "pending", "assignee": "12345"
    }
    )

    upsertTask

    upsertTask(projectGid, params, callback) ⇒ Operation Update or create a task.

    Kind: global function
    Access: public

    ParamTypeDescription
    projectGidstringGlobally unique identifier for the project
    paramsobjectan object with an externalId and some task data.
    callbackfunction(Optional) callback function

    Example

    upsertTask(
    "1201382240880",
    {
    "externalId": "name",
    "data": {
    name: 'test', "approval_status": "pending", "assignee": "12345"
    }

    }
    )

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/asana-readme.html b/fr/adaptors/packages/asana-readme.html index 58d33c7d6dd..ef195aa3352 100644 --- a/fr/adaptors/packages/asana-readme.html +++ b/fr/adaptors/packages/asana-readme.html @@ -22,7 +22,7 @@ - + @@ -38,7 +38,7 @@ the task does not exist, a new one will be created. The first parameter in this function should be the project_id.

    upsertTask('12344', {
    externalId: 'name',
    data: {
    name: 'A new task',
    projects: ['12344'],
    notes: 'This is a new task',
    },
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/beyonic-changelog.html b/fr/adaptors/packages/beyonic-changelog.html index 50e30cf37d9..2a1464ac0f2 100644 --- a/fr/adaptors/packages/beyonic-changelog.html +++ b/fr/adaptors/packages/beyonic-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.1.9

    Patch Changes

    0.1.8

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.1.7

    Patch Changes

    • f2aed32: add examples

    0.1.6

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    0.1.5

    Patch Changes

    0.1.4

    Patch Changes

    • 8566b26: Fix typings
    • b3d45ff: Fix CJS export of npm package.
    • ecf5d30: remove sinon since it was not being used
    • Updated dependencies [8566b26]
    • Updated dependencies [b3d45ff]
    • Updated dependencies [b5eb665]
    • Updated dependencies [ecf5d30]

    0.1.3

    Patch Changes

    • 63080d0: Update common for build

    0.1.2

    Patch Changes

    • 0d358b6: Add ast.json for beyonic

    0.1.1

    Patch Changes

    • 06ff25f: Update superagent to v8

    0.1.0

    Minor Changes

    • 28ceb1f: Moving language-beyonic to adaptors/packages/beyonic

    Patch Changes

    • e04aa28: Rename credential-schema to configuration-schema, update descriptions
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/beyonic-configuration-schema.html b/fr/adaptors/packages/beyonic-configuration-schema.html index adf31be283d..57694ee92c9 100644 --- a/fr/adaptors/packages/beyonic-configuration-schema.html +++ b/fr/adaptors/packages/beyonic-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "apiUrl": "https://beyonic.com/api",
    "apiToken": "cdjhiooiSIUJHDYSYUIHASIOHKAANOAJJjsiujhaka"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "apiUrl": {
    "title": "API URL",
    "type": "string",
    "description": "API URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://beyonic.com/api"
    ]
    },
    "apiToken": {
    "title": "API Token",
    "type": "string",
    "description": "API token",
    "minLength": 1,
    "examples": [
    "cdjhiooiSIUJHDYSYUIHASIOHKAANOAJJjsiujhaka"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "apiUrl",
    "apiToken"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/beyonic-docs.html b/fr/adaptors/packages/beyonic-docs.html index 58eb115d672..bef2364031a 100644 --- a/fr/adaptors/packages/beyonic-docs.html +++ b/fr/adaptors/packages/beyonic-docs.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ Create a collection request

    Kind: global function

    ParamTypeDescription
    dataobjectPayload data for the collection request

    Example

    execute(
    createCollectionRequest(data)
    )(state)

    createContact

    createContact(data) ⇒ Operation Create a contact

    Kind: global function

    ParamTypeDescription
    dataobjectPayload data for the contact

    Example

    execute(
    createContact(data)
    )(state)

    createPayment

    createPayment(data) ⇒ Operation Create a payment

    Kind: global function

    ParamTypeDescription
    dataobjectPayload data for the payment

    Example

    execute(
    createPayment(data)
    )(state)

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/beyonic-readme.html b/fr/adaptors/packages/beyonic-readme.html index fafc8fe2130..8c140090f4e 100644 --- a/fr/adaptors/packages/beyonic-readme.html +++ b/fr/adaptors/packages/beyonic-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Payments API

    createPayment(...)

    createPayment(
    fields(
    field('phonenumber', '+256773712831'),
    field('first_name', 'Gideon'),
    field('last_name', 'Zelalem'),
    field('amount', 100.2),
    field('currency', 'USD'),
    field('account', 1),
    field('description', 'Long-term contract for Arseal'),
    field('payment_type', 'money'),
    field('callback_url', 'https://my.website/payments/callback')
    )
    );

    Collection Requests API

    createCollectionRequest(...)

    createCollectionRequest(
    fields(
    field('instructions', 'Send me some money, please!'),
    field('phonenumber', '+256773712831'),
    field('amount', 5.0),
    field('currency', 'USD')
    )
    );

    Contacts API

    createContact(...)

    createContact(
    fields(
    field('first_name', 'Granit'),
    field('last_name', 'Xhaka'),
    field('phone_number', '+256773712831'),
    field('email', 'granit@arsenal.com')
    )
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/bigquery-changelog.html b/fr/adaptors/packages/bigquery-changelog.html index 14f5c2a9521..b0250143873 100644 --- a/fr/adaptors/packages/bigquery-changelog.html +++ b/fr/adaptors/packages/bigquery-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.1.5

    Patch Changes

    • 5895eb9: update dependencies

    1.1.4

    Patch Changes

    1.1.3

    Patch Changes

    1.1.2

    Patch Changes

    • f2aed32: add examples

    1.1.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /
    • 57f3513: Fix exports in index.js

    1.1.0

    Minor Changes

    • e4c6114: bigquery migration and build

    Patch Changes

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/bigquery-configuration-schema.html b/fr/adaptors/packages/bigquery-configuration-schema.html index 960b60f98e1..c38aff3acc6 100644 --- a/fr/adaptors/packages/bigquery-configuration-schema.html +++ b/fr/adaptors/packages/bigquery-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "type": "service_acconut",
    "project_id": "some-project-id",
    "private_key_id": "670b9e3c8c366e83aa569dd57cbfc5c575b72e42",
    "private_key": "-----BEGIN PRIVATE KEY-----\nblah\nmoreblah=\n-----END PRIVATE KEY-----\n",
    "client_email": "bigquery@some-project.iam.gserviceaccount.com",
    "client_id": "someid",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/bigquery%40some-project.iam.gserviceaccount.com"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "additionalProperties": true,
    "properties": {
    "type": {
    "title": "Type",
    "type": "string",
    "description": "",
    "examples": [
    "service_acconut"
    ]
    },
    "project_id": {
    "title": "Prokect id",
    "type": "string",
    "description": "Project id",
    "examples": [
    "some-project-id"
    ]
    },
    "private_key_id": {
    "title": "Private Key Id",
    "type": "string",
    "description": "Private key id",
    "examples": [
    "670b9e3c8c366e83aa569dd57cbfc5c575b72e42"
    ]
    },
    "private_key": {
    "title": "Private Key",
    "type": "string",
    "description": "Private key",
    "examples": [
    "-----BEGIN PRIVATE KEY-----\nblah\nmoreblah=\n-----END PRIVATE KEY-----\n"
    ]
    },
    "client_email": {
    "title": "Client Email",
    "type": "string",
    "description": "Client email",
    "examples": [
    "bigquery@some-project.iam.gserviceaccount.com"
    ]
    },
    "client_id": {
    "title": "Client Id",
    "type": "string",
    "description": "Client id",
    "examples": [
    "someid"
    ]
    },
    "auth_uri": {
    "title": "Auth Uri",
    "type": "string",
    "description": "Auth Uri",
    "examples": [
    "https://accounts.google.com/o/oauth2/auth"
    ]
    },
    "token_uri": {
    "title": "Token Uri",
    "type": "string",
    "description": "Token Uri",
    "examples": [
    "https://oauth2.googleapis.com/token"
    ]
    },
    "auth_provider_x509_cert_url": {
    "title": "Auth Provider x509 Cert Url",
    "type": "string",
    "description": "",
    "examples": [
    "https://www.googleapis.com/oauth2/v1/certs"
    ]
    },
    "client_x509_cert_url": {
    "title": "Client x509 Cert Url",
    "type": "string",
    "description": "",
    "examples": [
    "https://www.googleapis.com/robot/v1/metadata/x509/bigquery%40some-project.iam.gserviceaccount.com"
    ]
    }
    },
    "required": [
    "type",
    "project_id",
    "private_key_id",
    "private_key",
    "client_email",
    "client_id",
    "auth_uri",
    "token_uri",
    "auth_provider_x509_cert_url",
    "client_x509_cert_url"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/bigquery-docs.html b/fr/adaptors/packages/bigquery-docs.html index f23e85e722a..42f64ec20c4 100644 --- a/fr/adaptors/packages/bigquery-docs.html +++ b/fr/adaptors/packages/bigquery-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    bigquery@2.0.4

    load

    load(dirPath, projectId, datasetId, tableId, loadOptions, callback) ⇒ Operation Load files to BigQuery

    Kind: global function
    Access: public

    ParamTypeDescription
    dirPathstringthe path to your local directory
    projectIdstringyour bigquery project id
    datasetIdstringyour bigquery dataset id
    tableIdstringthe name of the table you'd like to load
    loadOptionsobjectoptions to pass to the bigquery.load() API
    callbackfunctionand optional callback

    Example

    load(
    './tmp/files',
    'my-bg-project',
    'test01',
    'product-codes',
    {
    schema: 'FREQ:STRING,DATATYPE:STRING,PRODUCTCODE:STRING,PARTNER:STRING',
    writeDisposition: 'WRITE_APPEND',
    skipLeadingRows: 1,
    schemaUpdateOptions: ['ALLOW_FIELD_ADDITION'],
    createDisposition: 'CREATE_IF_NEEDED',
    }
    )

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/bigquery-readme.html b/fr/adaptors/packages/bigquery-readme.html index 62a3e1347c7..872bd1ab707 100644 --- a/fr/adaptors/packages/bigquery-readme.html +++ b/fr/adaptors/packages/bigquery-readme.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    bigquery Adaptor developer README.md

    Source: https://github.com/OpenFn/adaptors/tree/main/packages/bigquery

    Language BigQuery

    Language Pack for building expressions and operations to make HTTP calls.

    Documentation

    state.json

    The configuration key must be a valid GCP credential as JSON.

    {
    "configuration": {
    "type": "service_account",
    "project_id": "some-project",
    "private_key_id": "670b9e3c8c366e83aa569dd57cbfc5c575b72e42",
    "private_key": "-----BEGIN PRIVATE KEY-----\nblah\nmoreblah=\n-----END PRIVATE KEY-----\n",
    "client_email": "bigquery@some-project.iam.gserviceaccount.com",
    "client_id": "someid",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/bigquery%40some-project.iam.gserviceaccount.com"
    },
    "data": { "a": 1 }
    }

    operations (expression.js)

    load(...)

    Load data to a table in bigquery from a CSV. See full options here.

    load(
    '/home/taylor/Desktop/type-C_r-ALL_ps-201012_freq-M_px-HS_pub-20200731_fmt-csv_ex-20200818.csv',
    'awesome-solutions-project', // project
    'test01', // dataset
    'mytable', // table
    {
    schema:
    'classification:STRING,year:STRING,period:STRING,period_desc:STRING,aggregate_level:STRING,is_leaf_code:STRING,trade_flow_code:STRING,trade_flow:STRING,reporter_code:STRING,reporter:STRING,reporter_iso:STRING,partner_code:STRING,partner:STRING,partner_iso:STRING,commodity_code:STRING,commodity:STRING,qty_unit_code:STRING,qty_unit:STRING,qty:INTEGER,netweight_kg:INTEGER,trade_value:INTEGER,flag:STRING',
    schemaUpdateOptions: ['ALLOW_FIELD_ADDITION'],
    // createDisposition: 'CREATE_IF_NEEDED',
    writeDisposition: 'WRITE_APPEND',
    skipLeadingRows: 1,
    } // loadOptions
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/commcare-changelog.html b/fr/adaptors/packages/commcare-changelog.html index de52d1f5b39..146a40014b4 100644 --- a/fr/adaptors/packages/commcare-changelog.html +++ b/fr/adaptors/packages/commcare-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.5.6

    Patch Changes

    • e0406fa: update dependencies

    1.5.5

    Patch Changes

    1.5.4

    Patch Changes

    1.5.3

    Patch Changes

    1.5.2

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /
    • 57f3513: Fix exports in index.js
    • Updated dependencies [6d8de03]

    1.5.1

    Patch Changes

    1.5.0

    Minor Changes

    • 5c050ed: Migrate CommCare

    Patch Changes

    • 8566b26: Fix typings
    • b3d45ff: Fix CJS export of npm package.
    • 94076b9: update dependency xlsx to ^0.18.0
    • ecf5d30: remove sinon since it was not being used
    • Updated dependencies [9a2755e]
    • Updated dependencies [8566b26]
    • Updated dependencies [b3d45ff]
    • Updated dependencies [b5eb665]
    • Updated dependencies [ecf5d30]
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/commcare-configuration-schema.html b/fr/adaptors/packages/commcare-configuration-schema.html index 77f586bdf24..a80b8827bde 100644 --- a/fr/adaptors/packages/commcare-configuration-schema.html +++ b/fr/adaptors/packages/commcare-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "hostUrl": "https://www.commcarehq.org",
    "applicationName": "some-proof-of-concept",
    "appId": "the-long-uuid-in-the-url-that-designates-a-unique-commcare-project",
    "username": "test@openfn.org",
    "password": "superscretepassword"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "hostUrl": {
    "title": "Host URL",
    "type": "string",
    "description": "The CommCare host url",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://www.commcarehq.org"
    ]
    },
    "applicationName": {
    "title": "Application Name",
    "type": "string",
    "description": "The CommCare application name",
    "minLength": 1,
    "examples": [
    "some-proof-of-concept"
    ]
    },
    "appId": {
    "title": "App ID",
    "type": "string",
    "description": "Your CommCare project UUID",
    "minLength": 1,
    "examples": [
    "the-long-uuid-in-the-url-that-designates-a-unique-commcare-project"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in to CommCare",
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in to CommCare",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "superscretepassword"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "hostUrl",
    "applicationName",
    "appId"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/commcare-docs.html b/fr/adaptors/packages/commcare-docs.html index 86a7e8bd182..8aef20184f4 100644 --- a/fr/adaptors/packages/commcare-docs.html +++ b/fr/adaptors/packages/commcare-docs.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ Access: public

    ParamTypeDescription
    formDataObjectObject including form data.

    Example

    submit(
    fields(
    field("@", function(state) {
    return {
    "xmlns": "http://openrosa.org/formdesigner/form-id-here"
    };
    }),
    field("question1", dataValue("answer1")),
    field("question2", "Some answer here.")
    )
    )

    submitXls

    submitXls(formData, params) ⇒ Operation Convert form data to xls then submit.

    Kind: global function
    Access: public

    ParamTypeDescription
    formDataObjectObject including form data.
    paramsObjectRequest params including case type and external id.

    Example

    submitXls(
    [
    {name: 'Mamadou', phone: '000000'},
    ],
    {
    case_type: 'student',
    search_field: 'external_id',
    create_new_cases: 'on',
    }
    )

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/commcare-readme.html b/fr/adaptors/packages/commcare-readme.html index 5354544ee3b..48d3fde83aa 100644 --- a/fr/adaptors/packages/commcare-readme.html +++ b/fr/adaptors/packages/commcare-readme.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ https://www.commcarehq.org/a/YOUR_PROJECT/apps/view/YOUR_APP_ID/

  • Note that the username is your full email address.

  • fetchReportData to pull aggregate data from CommCare

    It takes 3 arguments: reportId, params, and postUrl.

    fetchReportData(
    'reportId',
    { limit: 10, offset: 2, state: 'Vermont' },
    'http://www.openfn.org/inbox/secret-uuid'
    );

    simple body target:

    <data xmlns="http://openrosa.org/formdesigner/39A2CA97-2EB8-4A9C-A0D1-6AA666666A66">
    <firstname>Something</firstname>
    <lastname>Else</lastname>
    <age>29</age>
    </data>

    complex body target:

    <?xml version='1.0' ?>
    <data uiVersion="1" version="17" name="New Form" xmlns:jrm="http://dev.commcarehq.org/jr/xforms" xmlns="http://openrosa.org/formdesigner/1DFD8610-91E3-4409-BF8B-02D3B4FF3530">
    <foo>bar</foo>
    <n0:case case_id="ddb8e2b3-7ce0-43e4-ad45-d7a2eebe9169" user_id="user-xxx-eve" date_modified="2013-04-19T16:53:02.799-04" xmlns:n0="http://commcarehq.org/case/transaction/v2">
    <n0:create>
    <n0:case_name>bar</n0:case_name>
    <n0:owner_id>user-xxx-eve</n0:owner_id>
    <n0:case_type>member</n0:case_type>
    </n0:create>
    </n0:case>
    <n1:meta xmlns:n1="http://openrosa.org/jr/xforms">
    <n1:deviceID>A00000245706EE</n1:deviceID>
    <n1:timeStart>2013-04-19T16:52:41.000-04</n1:timeStart>
    <n1:timeEnd>2013-04-19T16:53:02.799-04</n1:timeEnd>
    <n1:username>eve</n1:username>
    <n1:userID>user-xxx-eve</n1:userID>
    <n1:instanceID>b58df19c-efd5-4ecf-9581-65dda8b8787c</n1:instanceID>
    <n2:appVersion xmlns:n2="http://commcarehq.org/xforms">CommCare ODK, version "2.4.1"(10083). App v19. CommCare Version 2.4. Build 10083, built on: March-12-2013</n2:appVersion>
    </n1:meta>
    </data>

    Submitting data to CommCare HQ

    Submit an XLS file

    This function bulk submit a JSON object as xls file to CommCare HQ

    submitXls([{ name: 'Mamadou', phone: '000000' }], {
    case_type: 'student',
    search_field: 'external_id',
    create_new_cases: 'on',
    });

    submit

    Here we're just building the most basic JSON object, that will be converted to an XML object and posted as the element.

    submit(
    fields(
    field('@', function (state) {
    return {
    xmlns:
    'http://openrosa.org/formdesigner/2BCC3E88-2D0D-4C07-8D4A-6B372F3799D9',
    };
    }),
    field('paitent_namentosh', dataValue('first_name')),
    field('question2', 'Some answer here.'),
    field('question3', 'HKS'),
    field('question4', 'item1'),
    field('question5', 69855),
    field('question6', 12)
    )
    );

    An open rosa form submission body should look like this:

    <?xml version="1.0" ?>
    <data name="Patient Registration" uiVersion="1" version="9" xmlns="http://openrosa.org/formdesigner/2BCC3E88-2D0D-4C07-8D4A-6B372F3799D9" xmlns:jrm="http://dev.commcarehq.org/jr/xforms">
    <paitent_namentosh>Taylor</paitent_namentosh>
    <question2>Moruki</question2>
    <question3>Hks</question3>
    <question4>item1</question4>
    <question5>69855</question5>
    <question6>12</question6>
    <n0:meta xmlns:n0="http://openrosa.org/jr/xforms">
    <n0:deviceID>358239055789384</n0:deviceID>
    <n0:timeStart>2015-08-21T16:21:59.807+02</n0:timeStart>
    <n0:timeEnd>2015-08-21T16:22:15.987+02</n0:timeEnd>
    <n0:username>openfn</n0:username>
    <n0:userID>5fe615b3af2834cb5dca59f7466d6174</n0:userID>
    <n0:instanceID>195e79eb-d823-46fe-9e4f-59b8327d5db2</n0:instanceID>
    <n1:appVersion xmlns:n1="http://commcarehq.org/xforms">CommCare ODK, version &quot;2.22.0&quot;(370023). App v9. CommCare Version 2.22. Build 370023, built on: July-22-2015</n1:appVersion>
    </n0:meta>
    </data>

    So the JSON emitted by your expression should look like this:

    {
    "data": {
    "name": "Patient Registration",
    "uiVersion": "1",
    "version": "9",
    "xmlns": "http://openrosa.org/formdesigner/2BCC3E88-2D0D-4C07-8D4A-6B372F3799D9",
    "xmlns:jrm": "http://dev.commcarehq.org/jr/xforms",
    "paitent_namentosh": "Taylor",
    "question2": " Moruki",
    "question3": "Hks",
    "question4": "item1",
    "question5": "69855",
    "question6": "12",
    "n0:meta": {
    "xmlns:n0": "http://openrosa.org/jr/xforms",
    "n0:deviceID": "358239055789384",
    "n0:timeStart": "2015-08-21T16:21:59.807+02",
    "n0:timeEnd": "2015-08-21T16:22:15.987+02",
    "n0:username": "openfn",
    "n0:userID": "5fe615b3af2834cb5dca59f7466d6174",
    "n0:instanceID": "195e79eb-d823-46fe-9e4f-59b8327d5db2",
    "n1:appVersion": {
    "xmlns:n1": "http://commcarehq.org/xforms",
    "$t": "CommCare ODK, version \"2.22.0\"(370023). App v9. CommCare Version 2.22. Build 370023, built on: July-22-2015"
    }
    }
    }
    }

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/common-changelog.html b/fr/adaptors/packages/common-changelog.html index 9b72dafa3b7..21c95a1f8fe 100644 --- a/fr/adaptors/packages/common-changelog.html +++ b/fr/adaptors/packages/common-changelog.html @@ -22,7 +22,7 @@ - + @@ -38,7 +38,7 @@ in the data may have an object as it's value (when there is only one item), and an array of objects when there is more than one. toArray can be used to reconcile this inconsistency. - + \ No newline at end of file diff --git a/fr/adaptors/packages/common-configuration-schema.html b/fr/adaptors/packages/common-configuration-schema.html index 12b62deb269..6010d3cf696 100644 --- a/fr/adaptors/packages/common-configuration-schema.html +++ b/fr/adaptors/packages/common-configuration-schema.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/packages/common-docs.html b/fr/adaptors/packages/common-docs.html index 0ba57033766..7e0a43b58fa 100644 --- a/fr/adaptors/packages/common-docs.html +++ b/fr/adaptors/packages/common-docs.html @@ -22,7 +22,7 @@ - + @@ -146,7 +146,7 @@ Data can be passed directly or loaded as a JSON path from state. By default, schema is loaded from state.schema and data from state.data.

    Kind: global function

    ParamTypeDescription
    schemastring | objectThe schema, path or URL to validate against
    datastring | objectThe data or path to validate

    Example (Validate `state.data` with `state.schema`)

    validate()

    Example (Validate form data at `state.form` with a schema from a URL)

    validate("https://www.example.com/schema/record", "form")

    Example (Validate the each item in `state.records` with a schema from a URL)

    each("records[*]", validate("https://www.example.com/schema/record"))

    withAgent

    withAgent(params) ⇒ Operation Creates an https agent for axios from the agentOptions key passed in params.

    Kind: global function

    ParamTypeDescription
    paramsobjectdata

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/common-readme.html b/fr/adaptors/packages/common-readme.html index 5cd79742dd7..1b38a9f0231 100644 --- a/fr/adaptors/packages/common-readme.html +++ b/fr/adaptors/packages/common-readme.html @@ -22,14 +22,14 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/packages/dhis2-changelog.html b/fr/adaptors/packages/dhis2-changelog.html index 994848d0d7d..4a80146aef0 100644 --- a/fr/adaptors/packages/dhis2-changelog.html +++ b/fr/adaptors/packages/dhis2-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    3.2.12

    Patch Changes

    • 57742d1: improve logs output

    3.2.11

    Patch Changes

    • 705caab: Remove tools as devdependencies

    3.2.10

    Patch Changes

    • 929bca6: Use metadata helper function from common
    • Updated dependencies [929bca6]

    3.2.9

    Patch Changes

    3.2.8

    Patch Changes

    • Fix metadata function export

    3.2.7

    Patch Changes

    • c09b821: Add @magic annotations

    3.2.6

    Patch Changes

    • df6098d: replace sample state with configuration

    3.2.5

    Patch Changes

    • f2aed32: add examples

    3.2.4

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    3.2.3

    Patch Changes

    3.2.2

    Patch Changes

    • 9a2755e: Update dependency on language-common
    • 8566b26: Fix typings
    • b3d45ff: Fix CJS export of npm package.
    • ecf5d30: remove sinon since it was not being used
    • Updated dependencies [8566b26]
    • Updated dependencies [b3d45ff]
    • Updated dependencies [b5eb665]
    • Updated dependencies [ecf5d30]

    3.2.1

    Patch Changes

    • e04aa28: Rename credential-schema to configuration-schema, update descriptions

    3.2.0

    Minor Changes

    • f670bf8: Added credential schema to enable new ui

    3.1.0

    Minor Changes

    • 8d6e8ce: Migrate dhis2 into repo

    Patch Changes

    • Updated dependencies [4671e89]
    • Updated dependencies [8d6e8ce]
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/dhis2-configuration-schema.html b/fr/adaptors/packages/dhis2-configuration-schema.html index a0174afcd4b..c121ac99b25 100644 --- a/fr/adaptors/packages/dhis2-configuration-schema.html +++ b/fr/adaptors/packages/dhis2-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "hostUrl": "https://play.dhis2.org/2.36.6",
    "username": "admin",
    "password": "@some(!)Password",
    "apiVersion": "v2"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "hostUrl": {
    "title": "Host URL",
    "type": "string",
    "description": "The base DHIS2 instance URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://play.dhis2.org/2.36.6"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)Password"
    ]
    },
    "apiVersion": {
    "title": "API Version",
    "anyOf": [
    {
    "type": "string"
    },
    {
    "type": "null"
    }
    ],
    "placeholder": "38",
    "description": "DHIS2 api version",
    "minLength": 1,
    "examples": [
    "v2"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "hostUrl",
    "password",
    "username"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/dhis2-docs.html b/fr/adaptors/packages/dhis2-docs.html index d0a64f5dc0d..fd602c813ea 100644 --- a/fr/adaptors/packages/dhis2-docs.html +++ b/fr/adaptors/packages/dhis2-docs.html @@ -22,7 +22,7 @@ - + @@ -59,7 +59,7 @@ Access: public

    ParamTypeDescription
    resourceTypestringThe type of resource to be updated. E.g. dataElements, organisationUnits, etc.
    pathstringThe id or path to the object to be updated. E.g. FTRrcoaog83 or FTRrcoaog83/{collection-name}/{object-id}
    dataObjectData to update. It requires to send all required fields or the full body. If you want partial updates, use patch operation.
    [options]ObjectOptional options to define URL parameters via params (E.g. filter, dimension and other import parameters), request config (E.g. auth) and the DHIS2 apiVersion.
    [callback]functionOptional callback to handle the response

    Example (a program)

    update('programs', 'qAZJCrNJK8H', {
    name: '14e1aa02c3f0a31618e096f2c6d03bed',
    shortName: '14e1aa02',
    programType: 'WITHOUT_REGISTRATION',
    });

    Example (an event)

    update('events', 'PVqUD2hvU4E', {
    program: 'eBAyeGv0exc',
    orgUnit: 'Ngelehun CHC',
    status: 'COMPLETED',
    storedBy: 'admin',
    dataValues: [],
    });

    Example (a trackedEntityInstance)

    update('trackedEntityInstances', 'IeQfgUtGPq2', {
    created: '2015-08-06T21:12:37.256',
    orgUnit: 'TSyzvBiovKh',
    createdAtClient: '2015-08-06T21:12:37.256',
    trackedEntityInstance: 'IeQfgUtGPq2',
    lastUpdated: '2015-08-06T21:12:37.257',
    trackedEntityType: 'nEenWmSyUEp',
    inactive: false,
    deleted: false,
    featureType: 'NONE',
    programOwners: [
    {
    ownerOrgUnit: 'TSyzvBiovKh',
    program: 'IpHINAT79UW',
    trackedEntityInstance: 'IeQfgUtGPq2',
    },
    ],
    enrollments: [],
    relationships: [],
    attributes: [
    {
    lastUpdated: '2016-01-12T00:00:00.000',
    displayName: 'Last name',
    created: '2016-01-12T00:00:00.000',
    valueType: 'TEXT',
    attribute: 'zDhUuAYrxNC',
    value: 'Russell',
    },
    {
    lastUpdated: '2016-01-12T00:00:00.000',
    code: 'MMD_PER_NAM',
    displayName: 'First name',
    created: '2016-01-12T00:00:00.000',
    valueType: 'TEXT',
    attribute: 'w75KJ2mc4zz',
    value: 'Catherine',
    },
    ],
    });

    Example (a dataSet)

    update('dataSets', 'lyLU2wR22tC', { name: 'OpenFN Data Set', periodType: 'Weekly' });

    Example (a dataSetNotification)

    update('dataSetNotificationTemplates', 'VbQBwdm1wVP', {
    dataSetNotificationTrigger: 'DATA_SET_COMPLETION',
    notificationRecipient: 'ORGANISATION_UNIT_CONTACT',
    name: 'Notification',
    messageTemplate: 'Hello Updated,
    deliveryChannels: ['SMS'],
    dataSets: [],
    });

    Example (a dataElement)

    update('dataElements', 'FTRrcoaog83', {
    aggregationType: 'SUM',
    domainType: 'AGGREGATE',
    valueType: 'NUMBER',
    name: 'Paracetamol',
    shortName: 'Para',
    });

    Example (a dataElementGroup)

    update('dataElementGroups', 'QrprHT61XFk', {
    name: 'Data Element Group 1',
    dataElements: [],
    });

    Example (a dataElementGroupSet)

    update('dataElementGroupSets', 'VxWloRvAze8', {
    name: 'Data Element Group Set 4',
    dataDimension: true,
    shortName: 'DEGS4',
    dataElementGroups: [],
    });

    Example (a dataValueSet)

    update('dataValueSets', 'AsQj6cDsUq4', {
    dataElement: 'f7n9E0hX8qk',
    period: '201401',
    orgUnit: 'DiszpKrYNg8',
    value: '12',
    });

    Example (a dataValueSet with related dataValues)

    update('dataValueSets', 'Ix2HsbDMLea', {
    dataSet: 'pBOMPrpg1QX',
    completeDate: '2014-02-03',
    period: '201401',
    orgUnit: 'DiszpKrYNg8',
    dataValues: [
    {
    dataElement: 'f7n9E0hX8qk',
    value: '1',
    },
    {
    dataElement: 'Ix2HsbDMLea',
    value: '2',
    },
    {
    dataElement: 'eY5ehpbEsB7',
    value: '3',
    },
    ],
    });

    Example (a single enrollment)

    update('enrollments', 'CmsHzercTBa' {
    trackedEntityInstance: 'bmshzEacgxa',
    orgUnit: 'TSyzvBiovKh',
    program: 'gZBxv9Ujxg0',
    enrollmentDate: '2013-10-17',
    incidentDate: '2013-10-17',
    });

    upsert

    upsert(resourceType, query, data, [options], [callback]) ⇒ Operation Upsert a record. A generic helper function used to atomically either insert a row, or on the basis of the row already existing, UPDATE that existing row instead.

    Kind: global function
    Throws:

    • RangeError - Throws range error

    Access: public

    ParamTypeDescription
    resourceTypestringThe type of a resource to upsert. E.g. trackedEntityInstances
    queryObjectA query object that allows to uniquely identify the resource to update. If no matches found, then the resource will be created.
    dataObjectThe data to use for update or create depending on the result of the query.
    [options]ObjectOptional configuration that will be applied to both the get and the create or update operations.
    [callback]functionOptional callback to handle the response

    Example (Example `expression.js` of upsert)

    upsert('trackedEntityInstances', {
    ou: 'TSyzvBiovKh',
    filter: ['w75KJ2mc4zz:Eq:Qassim'],
    }, {
    orgUnit: 'TSyzvBiovKh',
    trackedEntityType: 'nEenWmSyUEp',
    attributes: [
    {
    attribute: 'w75KJ2mc4zz',
    value: 'Qassim',
    },
    ],
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/dhis2-readme.html b/fr/adaptors/packages/dhis2-readme.html index 41431e2eae2..9fcab0e4d11 100644 --- a/fr/adaptors/packages/dhis2-readme.html +++ b/fr/adaptors/packages/dhis2-readme.html @@ -22,7 +22,7 @@ - + @@ -65,7 +65,7 @@ required. Otherwise the create integration tests would be broken again; and that's an endless faillure loop :(

    Anytime a new example is added in the documentation of a helper function, a new integration test should be built.

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/dynamics-changelog.html b/fr/adaptors/packages/dynamics-changelog.html index 9fe1443c294..81131e81c32 100644 --- a/fr/adaptors/packages/dynamics-changelog.html +++ b/fr/adaptors/packages/dynamics-changelog.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.5

    Patch Changes

    0.3.4

    Patch Changes

    0.3.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.3.2

    Patch Changes

    • f2aed32: add examples

    0.3.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    0.3.0

    Minor Changes

    • b032b9c: Migrate Dynamics

    Patch Changes

    • e81561f: Updated ast and package.json
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/dynamics-configuration-schema.html b/fr/adaptors/packages/dynamics-configuration-schema.html index d04cbdbe555..a6feb88fd8f 100644 --- a/fr/adaptors/packages/dynamics-configuration-schema.html +++ b/fr/adaptors/packages/dynamics-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "resource": "https://openfn.crm2.dynamics.com",
    "apiVersion": "8.2.0",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRlQyU3ZRdVhoODQ2WVR3RUlCdyIsI"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$comment": "OAuth2",
    "properties": {
    "resource": {
    "title": "Resource",
    "type": "string",
    "description": "Dynamics resource URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://openfn.crm2.dynamics.com"
    ]
    },
    "apiVersion": {
    "title": "API Version",
    "type": "string",
    "default": "8.2.0",
    "description": "Dynamics API version to use",
    "minLength": 1,
    "examples": [
    "8.2.0"
    ]
    },
    "access_token": {
    "title": "Access Token",
    "type": "string",
    "description": "Dynamics API access token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRlQyU3ZRdVhoODQ2WVR3RUlCdyIsI"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "resource",
    "apiVersion",
    "access_token"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/dynamics-docs.html b/fr/adaptors/packages/dynamics-docs.html index 2d8324bdb3c..d0db1be4700 100644 --- a/fr/adaptors/packages/dynamics-docs.html +++ b/fr/adaptors/packages/dynamics-docs.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/packages/dynamics-readme.html b/fr/adaptors/packages/dynamics-readme.html index c514b2aacd1..f142085f3e5 100644 --- a/fr/adaptors/packages/dynamics-readme.html +++ b/fr/adaptors/packages/dynamics-readme.html @@ -22,7 +22,7 @@ - + @@ -38,7 +38,7 @@ in the expression. Otherwise it will perform a query on all data with the defined Entity Name

    query({
    entityName: 'contacts',
    entityId: '51a0e5b9-88df-e311-b8e5-6c3be5a8b200',
    query: {
    fields: ['fullname', 'birthdate'],
    limit: 10,
    orderBy: {
    field: 'lastname',
    direction: 'asc',
    },
    filter: "firstname eq 'Cat'",
    },
    });

    sample update expression

    updateEntity({
    entityName: 'accounts',
    entityId: 'f4301865-c64a-e711-80f3-e0071b6fd061',
    body: {
    name: 'wilder 2',
    creditonhold: true,
    address1_latitude: 47.639583,
    description: 'This is the description of the sample account',
    revenue: 5000000,
    accountcategorycode: 1,
    },
    });

    sample delete expression

    deleteEntity({
    entityName: 'accounts',
    entityId: 'aeef941b-254a-e711-80f1-e0071b685921',
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/facebook-changelog.html b/fr/adaptors/packages/facebook-changelog.html index 3101355203c..7bd6ee22b52 100644 --- a/fr/adaptors/packages/facebook-changelog.html +++ b/fr/adaptors/packages/facebook-changelog.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.2.3

    Patch Changes

    0.2.2

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.2.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    0.2.0

    Minor Changes

    • f7669d2: migrate facebook
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/facebook-configuration-schema.html b/fr/adaptors/packages/facebook-configuration-schema.html index 12730092a34..e1aeded27f7 100644 --- a/fr/adaptors/packages/facebook-configuration-schema.html +++ b/fr/adaptors/packages/facebook-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "access_token": false
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$comment": "OAuth2",
    "properties": {
    "access_token": {
    "title": "Access Token",
    "type": "string",
    "description": "Your Facebook API access token",
    "writeOnly": true,
    "minLength": 1
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "access_token"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/facebook-docs.html b/fr/adaptors/packages/facebook-docs.html index 461dd89d446..54f6fbc63e0 100644 --- a/fr/adaptors/packages/facebook-docs.html +++ b/fr/adaptors/packages/facebook-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/fr/adaptors/packages/facebook-readme.html b/fr/adaptors/packages/facebook-readme.html index b5c72158fb6..ffd19b8f7e4 100644 --- a/fr/adaptors/packages/facebook-readme.html +++ b/fr/adaptors/packages/facebook-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    postMessage

    sample expression using operation

    postMessage({
    recipient: {
    id: '<PSID>',
    },
    message: {
    text: '<YOUR MESSAGE GOES HERE>',
    },
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/fhir-changelog.html b/fr/adaptors/packages/fhir-changelog.html index 5750d7d4c0c..795905f0407 100644 --- a/fr/adaptors/packages/fhir-changelog.html +++ b/fr/adaptors/packages/fhir-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    2.0.0

    Major Changes

    • d4b4094: - Update configuration schema,
      • Add get() function
      • Fix create() axios config
      • Remove unused code
      • Improve error handling
      • Improve response handling

    1.1.5

    Patch Changes

    1.1.4

    Patch Changes

    • f7ebd3c: remove sample configuration

    1.1.3

    Patch Changes

    • f2aed32: add examples

    1.1.2

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    1.1.1

    Patch Changes

    1.1.0

    Minor Changes

    • fee607e: Migrate FHIR, update package export

    Patch Changes

    • cb5d0ed: Updated to @openfn/simple-ast v0.4.1
    • 8566b26: Fix typings
    • b3d45ff: Fix CJS export of npm package.
    • ecf5d30: remove sinon since it was not being used
    • Updated dependencies [8566b26]
    • Updated dependencies [b3d45ff]
    • Updated dependencies [b5eb665]
    • Updated dependencies [ecf5d30]
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/fhir-configuration-schema.html b/fr/adaptors/packages/fhir-configuration-schema.html index 769d4574272..52aabf254ff 100644 --- a/fr/adaptors/packages/fhir-configuration-schema.html +++ b/fr/adaptors/packages/fhir-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "baseUrl": "https://hapi.fhir.org/baseR4",
    "apiPath": "baseR4",
    "authType": "Basic",
    "token": "@super!scretetoken"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
    "baseUrl": {
    "title": "Base Url",
    "type": "string",
    "description": "The baseUrl",
    "examples": [
    "https://hapi.fhir.org/baseR4"
    ]
    },
    "apiPath": {
    "title": "API Path",
    "anyOf": [
    {
    "type": "string"
    },
    {
    "type": "null"
    }
    ],
    "placeholder": "R4",
    "description": "FHIR api path",
    "minLength": 1,
    "examples": [
    "baseR4",
    "R3",
    "R4"
    ]
    },
    "authType": {
    "title": "Auth Type",
    "type": "string",
    "description": "The type of authentication used to authenticate into the destination system",
    "examples": [
    "Basic"
    ]
    },
    "token": {
    "title": "Token",
    "type": "string",
    "description": "The token used to authenticate into the destination system",
    "examples": [
    "@super!scretetoken"
    ]
    }
    },
    "required": [
    "resource",
    "authType",
    "token"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/fhir-docs.html b/fr/adaptors/packages/fhir-docs.html index 03c8f6ffe8c..f8eb48723c3 100644 --- a/fr/adaptors/packages/fhir-docs.html +++ b/fr/adaptors/packages/fhir-docs.html @@ -22,7 +22,7 @@ - + @@ -41,7 +41,7 @@ Returns: The request function is returning the parsed JSON data from the response of the HTTP request made to the specified url with the given params and method. If there is an error in the response, the function will throw an error.

    ParamTypeDefaultDescription
    urlstringThe URL of the API endpoint that the request is being made to.
    [params]objectAn object containing any additional parameters to be sent with the request, such as query parameters or request body data. It is an optional parameter and defaults to an empty object if not provided.
    [method]string"GET"The HTTP method to be used for the request. It defaults to 'GET' if not specified.

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/fhir-readme.html b/fr/adaptors/packages/fhir-readme.html index 1771f7b38b2..7e3bdc98c63 100644 --- a/fr/adaptors/packages/fhir-readme.html +++ b/fr/adaptors/packages/fhir-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Creates a resource in a destination system using a POST request

    create('/endpoint', { foo: 'bar' });

    Creates a transactionBundle for HAPI FHIR

    createTransactionBundle({
    entry: [transactionBundle],
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/godata-changelog.html b/fr/adaptors/packages/godata-changelog.html index 84e96740341..336d5b3649e 100644 --- a/fr/adaptors/packages/godata-changelog.html +++ b/fr/adaptors/packages/godata-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    3.2.4

    Patch Changes

    • ef828e7: update old urls in readme
    • 14f481e: mark execute as private
    • Updated dependencies [2b4c61a]

    3.2.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    3.2.2

    Patch Changes

    • f2aed32: add examples

    3.2.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    3.2.0

    Minor Changes

    • 8e7a79e: Migrate Godata

    Patch Changes

    • cbb8968: Fix axios Inefficient Regular Expression Complexity vulnerability
    • e81561f: Updated ast and package.json
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/godata-configuration-schema.html b/fr/adaptors/packages/godata-configuration-schema.html index d6bd85e9800..ad4be37518a 100644 --- a/fr/adaptors/packages/godata-configuration-schema.html +++ b/fr/adaptors/packages/godata-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "apiUrl": "https://www.who-godata.com/api",
    "email": "test@openfn.org",
    "password": "@some(!)Strongpassword"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "apiUrl": {
    "title": "API URL",
    "type": "string",
    "description": "Godata API URL",
    "default": "https://www.who-godata.com/api",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://www.who-godata.com/api"
    ]
    },
    "email": {
    "title": "Email",
    "type": "string",
    "description": "Your Godata login email",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Your Godata login password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)Strongpassword"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "apiUrl",
    "email",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/godata-docs.html b/fr/adaptors/packages/godata-docs.html index b5b62ea3d30..30ecd9395a0 100644 --- a/fr/adaptors/packages/godata-docs.html +++ b/fr/adaptors/packages/godata-docs.html @@ -22,7 +22,7 @@ - + @@ -58,7 +58,7 @@ Access: public

    ParamTypeDescription
    outbreakobjectan object with an externalId and some outbreak data.
    callbackfunction(Optional) Callback function

    Example

    upsertOutbreak({externalId: "3dec33-ede3", data: {...}})

    upsertReferenceData

    upsertReferenceData(externalId, goDataReferenceData, callback) ⇒ Operation Upsert reference data to godata

    Kind: global function
    Access: public

    ParamTypeDescription
    externalIdstringExternal Id to match
    goDataReferenceDataobjectan object with some reference data.
    callbackfunction(Optional) Callback function

    Example

    upsertReferenceData('id', {...})

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/godata-readme.html b/fr/adaptors/packages/godata-readme.html index b8fa19b1a14..88a11f5bc60 100644 --- a/fr/adaptors/packages/godata-readme.html +++ b/fr/adaptors/packages/godata-readme.html @@ -22,7 +22,7 @@ - + @@ -54,7 +54,7 @@ mechanism can specify a criteria to match.

    getReferenceData(
    { where: { categoryId: 'LNG_REFERENCE_DATA_CATEGORY_CENTRE_NAME' } },
    state => {
    console.log(state.data);
    return state;
    }
    );

    Insert or Update a reference data using a unique id as a key

    This function is used to either update a location if matched or insert a new. A custom externalId can be provided.

    upsertReferenceData('id', {
    categoryId: 'CATEGORY',
    value: 'VALUE',
    readOnly: false,
    active: true,
    id: 'ID',
    createdAt: '2020-10-01T18:48:31.784Z',
    createdBy: '95d31ea9',
    updatedAt: '2020-10-01T18:48:31.784Z',
    updatedBy: '95d31ea9',
    createdOn: 'API',
    deleted: false,
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/googlehealthcare-changelog.html b/fr/adaptors/packages/googlehealthcare-changelog.html index ed9e7e6ed1b..0292e183f91 100644 --- a/fr/adaptors/packages/googlehealthcare-changelog.html +++ b/fr/adaptors/packages/googlehealthcare-changelog.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ information ({cloudRegion: string, projectId: string, datasetId: string, fhirStoreId: string}).

    0.1.0

    Minor Changes

    • 861d774: add createFhirResource function

    Patch Changes

    • aad9549: Ensure that standard OAuth2 credentials with snake-cased "access_token" keys can be used for OAuth2-reliant adaptors
    • Updated dependencies [aad9549]
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/googlehealthcare-configuration-schema.html b/fr/adaptors/packages/googlehealthcare-configuration-schema.html index eae8dcfe6c8..bb2ce5012de 100644 --- a/fr/adaptors/packages/googlehealthcare-configuration-schema.html +++ b/fr/adaptors/packages/googlehealthcare-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRlQyU3ZRdVhoODQ2WVR3RUlCdyIsI",
    "apiVersion": "v1"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$comment": "OAuth2",
    "type": "object",
    "properties": {
    "access_token": {
    "title": "Access Token",
    "type": "string",
    "description": "Your Google Cloud Healthcare access token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRlQyU3ZRdVhoODQ2WVR3RUlCdyIsI"
    ]
    },
    "apiVersion": {
    "title": "API Version",
    "type": "string",
    "description": "The API version",
    "default": "v1",
    "examples": [
    "v1",
    "v1beta1"
    ]
    }
    },
    "required": [
    "access_token"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/googlehealthcare-docs.html b/fr/adaptors/packages/googlehealthcare-docs.html index 6fc566e9477..1ec249f6a87 100644 --- a/fr/adaptors/packages/googlehealthcare-docs.html +++ b/fr/adaptors/packages/googlehealthcare-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    googlehealthcare@1.0.0

    createFhirResource

    createFhirResource([fhirStore], resource, callback) ⇒ Operation Create some resource in Google Cloud Healthcare

    Kind: global function
    Access: public

    ParamTypeDescription
    [fhirStore]ObjectThe FHIR store information. - cloudRegion (string): The cloud region where the FHIR store is located. - projectId (string): The ID of the project that contains the FHIR store. - datasetId (string): The ID of the dataset that contains the FHIR store. - fhirStoreId (string): The ID of the FHIR store.
    resourceobjectThe FHIR resource data to be created
    callbackfunctionAn optional callback function

    Example

    createFhirResource(
    {
    cloudRegion: "us-central1",
    projectId: "adjective-noun-123",
    datasetId: "my-dataset",
    fhirStoreId: "my-fhir-store",
    },
    {
    resourceType: "Patient",
    name: [{ use: "official", family: "Smith", given: ["Darcy"] }],
    gender: "female",
    birthDate: "1970-01-01",
    }
    );

    Example

    createFhirResource(
    {
    cloudRegion: "us-central1",
    projectId: "adjective-noun-123",
    datasetId: "my-dataset",
    fhirStoreId: "my-fhir-store",
    },
    (state) => ({
    resourceType: "Encounter",
    status: "finished",
    class: {
    system: "http://hl7.org/fhir/v3/ActCode",
    code: "IMP",
    display: "inpatient encounter",
    },
    reasonCode: [
    {
    text: "The patient had an abnormal heart rate. She was concerned about this.",
    },
    ],
    subject: {
    reference: `Patient/${state.data.id}`,
    },
    })
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/googlehealthcare-readme.html b/fr/adaptors/packages/googlehealthcare-readme.html index 4c76eeb611c..6c4da8e2b86 100644 --- a/fr/adaptors/packages/googlehealthcare-readme.html +++ b/fr/adaptors/packages/googlehealthcare-readme.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ configuration-schema for required and optional configuration properties.

    Development

    Clone the adaptors monorepo. Follow the "Getting Started" guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To build only the docs run pnpm build docs.

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/googlesheets-changelog.html b/fr/adaptors/packages/googlesheets-changelog.html index 9cfb6fe1d78..956eb155bff 100644 --- a/fr/adaptors/packages/googlesheets-changelog.html +++ b/fr/adaptors/packages/googlesheets-changelog.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    2.1.6

    Patch Changes

    2.1.5

    Patch Changes

    • f7ebd3c: remove sample configuration

    2.1.4

    Patch Changes

    • f2aed32: add examples

    2.1.3

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    2.1.2

    Patch Changes

    2.1.1

    Patch Changes

    • 9a2755e: Update dependency on language-common
    • 8566b26: Fix typings
    • b3d45ff: Fix CJS export of npm package.
    • ecf5d30: remove sinon since it was not being used
    • Updated dependencies [8566b26]
    • Updated dependencies [b3d45ff]
    • Updated dependencies [b5eb665]
    • Updated dependencies [ecf5d30]

    2.1.0

    Minor Changes

    • 9e7d458: Migrate googlesheets
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/googlesheets-configuration-schema.html b/fr/adaptors/packages/googlesheets-configuration-schema.html index f2e8b23ed22..4ab63d41a44 100644 --- a/fr/adaptors/packages/googlesheets-configuration-schema.html +++ b/fr/adaptors/packages/googlesheets-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRlQyU3ZRdVhoODQ2WVR3RUlCdyIsI"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$comment": "OAuth2",
    "properties": {
    "access_token": {
    "title": "Access Token",
    "type": "string",
    "description": "Your Google Sheets access token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRlQyU3ZRdVhoODQ2WVR3RUlCdyIsI"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "access_token"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/googlesheets-docs.html b/fr/adaptors/packages/googlesheets-docs.html index 73551ff90f4..6e93267dd30 100644 --- a/fr/adaptors/packages/googlesheets-docs.html +++ b/fr/adaptors/packages/googlesheets-docs.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ Add an array of rows to the spreadsheet. https://developers.google.com/sheets/api/samples/writing#append_values

    Kind: global function
    Access: public

    ParamTypeDescription
    paramsObjectData object to add to the spreadsheet.

    Example

    appendValues({
    spreadsheetId: '1O-a4_RgPF_p8W3I6b5M9wobA3-CBW8hLClZfUik5sos',
    range: 'Sheet1!A1:E1',
    values: [
    ['From expression', '$15', '2', '3/15/2016'],
    ['Really now!', '$100', '1', '3/20/2016'],
    ],
    })

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/googlesheets-readme.html b/fr/adaptors/packages/googlesheets-readme.html index e9ab00a6844..653a5324fc5 100644 --- a/fr/adaptors/packages/googlesheets-readme.html +++ b/fr/adaptors/packages/googlesheets-readme.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ definition.

    appendValues()

    Add rows to an existing sheet: https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/values/Sheet1!A1:E1:append?valueInputOption=USER_ENTERED

    appendValues({
    spreadsheetId: '1O-a4_RgPF_p8W3I6b5M9wobA3-CBW8hLClZfUik5sos',
    range: 'Sheet1!A1:E1',
    values: [
    ['From expression', '$15', '2', '3/15/2016'],
    ['Really now!', '$100', '1', '3/20/2016'],
    ],
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/hive-changelog.html b/fr/adaptors/packages/hive-changelog.html index cd7ef182942..927a3f58747 100644 --- a/fr/adaptors/packages/hive-changelog.html +++ b/fr/adaptors/packages/hive-changelog.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/packages/hive-configuration-schema.html b/fr/adaptors/packages/hive-configuration-schema.html index b6825453870..f1a87f5bc24 100644 --- a/fr/adaptors/packages/hive-configuration-schema.html +++ b/fr/adaptors/packages/hive-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "host": "some-host-url.compute-1.amazonaws.com",
    "port": "10001",
    "database": "demo-db",
    "username": "admin-demo",
    "password": "@super(!)Secretpass"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "host": {
    "title": "Host URL",
    "type": "string",
    "description": "The database instance host URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "some-host-url.compute-1.amazonaws.com"
    ]
    },
    "port": {
    "title": "Port",
    "type": "integer",
    "default": 10001,
    "description": "Database instance port",
    "minLength": 1,
    "examples": [
    10001
    ]
    },
    "database": {
    "title": "Database",
    "type": "string",
    "description": "The database name",
    "minLength": 1,
    "examples": [
    "demo-db"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in the database",
    "minLength": 1,
    "examples": [
    "admin-demo"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in the database",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secretpass"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "host",
    "port",
    "username",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/hive-docs.html b/fr/adaptors/packages/hive-docs.html index c32afd306fa..b950419bc00 100644 --- a/fr/adaptors/packages/hive-docs.html +++ b/fr/adaptors/packages/hive-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    hive@0.2.0

    query

    query(qs, options, callback) ⇒ Operation Execute an SQL statement

    Kind: global function
    Access: public

    ParamTypeDescription
    qsstringSQL statement
    optionsobject(Optional) options for executing sql statement
    callbackfunctionAn optional callback function

    Example (Get patient count from hive database)

    query("select count(*) from patient");

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/hive-readme.html b/fr/adaptors/packages/hive-readme.html index 6476b8ce89a..15c6fb0aa75 100644 --- a/fr/adaptors/packages/hive-readme.html +++ b/fr/adaptors/packages/hive-readme.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ configuration-schema for required and optional configuration properties.

    A example expression using the query function

    query('select count(*) from patient');

    Development

    Clone the adaptors monorepo. Follow the "Getting Started" guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To build only the docs run pnpm build docs.

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/http-changelog.html b/fr/adaptors/packages/http-changelog.html index ea04f07a8e6..9703c4f0740 100644 --- a/fr/adaptors/packages/http-changelog.html +++ b/fr/adaptors/packages/http-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    4.2.8

    Patch Changes

    4.2.7

    Patch Changes

    4.2.6

    Patch Changes

    • f7ebd3c: remove sample configuration

    4.2.5

    Patch Changes

    • f2aed32: add examples

    4.2.4

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    4.2.3

    Patch Changes

    4.2.2

    Patch Changes

    • 9a2755e: Update dependency on language-common
    • 8566b26: Fix typings
    • b3d45ff: Fix CJS export of npm package.
    • ecf5d30: remove sinon since it was not being used
    • Updated dependencies [8566b26]
    • Updated dependencies [b3d45ff]
    • Updated dependencies [b5eb665]
    • Updated dependencies [ecf5d30]

    4.2.1

    Patch Changes

    • e04aa28: Rename credential-schema to configuration-schema, update descriptions

    4.2.0

    Minor Changes

    • f670bf8: Added credential schema to enable new ui

    4.1.0

    Minor Changes

    • 8e1b86d: update http to new format

    4.0.1

    Patch Changes

    • 4671e89: Migrate language-http
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/http-configuration-schema.html b/fr/adaptors/packages/http-configuration-schema.html index c158c41005b..1a67c850a57 100644 --- a/fr/adaptors/packages/http-configuration-schema.html +++ b/fr/adaptors/packages/http-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "username": "test@openfn.org",
    "password": "@some(!)Password",
    "baseUrl": "https://instance_name.surveycto.com"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Username",
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "examples": [
    "@some(!)Password"
    ]
    },
    "baseUrl": {
    "title": "Base URL",
    "anyOf": [
    {
    "type": "string"
    },
    {
    "type": "null"
    }
    ],
    "description": "The base URL (http://www.example.com)",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://instance_name.surveycto.com"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "password",
    "username"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/http-docs.html b/fr/adaptors/packages/http-docs.html index 19c12ce871a..7f61357ae25 100644 --- a/fr/adaptors/packages/http-docs.html +++ b/fr/adaptors/packages/http-docs.html @@ -22,7 +22,7 @@ - + @@ -41,7 +41,7 @@ Make a PUT request

    Kind: global function
    Access: public

    ParamTypeDescription
    pathstringPath to resource
    paramsobjectBody, Query, Headers and Auth parameters
    callbackfunction(Optional) Callback function

    Example

    put('/myEndpoint', {
    body: {'foo': 'bar'},
    headers: {'content-type': 'application/json'},
    authentication: {username: 'user', password: 'pass'}
    })

    request

    request(params) ⇒ Operation Make a request using the 'request' node module. This module is deprecated.

    Kind: global function

    ParamTypeDescription
    paramsobjectQuery, Headers and Authentication parameters

    Example

    request(params);

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/http-readme.html b/fr/adaptors/packages/http-readme.html index 7b52f39ac03..da726c19e10 100644 --- a/fr/adaptors/packages/http-readme.html +++ b/fr/adaptors/packages/http-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ definition.

    Get data

    This helper function allows the use of a get method to fetch data. You can specify a query string for filter.

    get(
    '/myendpoint',
    {
    query: { foo: 'bar', a: 1 },
    headers: { 'content-type': 'application/json' },
    authentication: { username: 'taylor', password: 'somethingsecret' },
    },
    state => {
    return state;
    }
    );

    Post existing data

    Send some data to an existing endpoint.

    post('/endpoint', {
    body: state => {
    return {
    field_1: 'some_data',
    field_2: 'some_more_data',
    field_id: dataValue('Some.Json.Object.Id')(state),
    };
    },
    headers: {
    Authorization: 'AUTH_KEY',
    'Content-Type': 'application/json',
    },
    });

    Update existing data with PUT or PATCH

    put(
    '/myendpoint',
    {
    body: { firstname: 'taylor', lastname: 'downs' },
    headers: { 'content-type': 'application/json' },
    authentication: { username: 'user', password: 'pass' },
    },
    state => {
    return state;
    }
    );
    patch(
    '/myendpoint',
    {
    body: { firstname: 'taylor', lastname: 'downs' },
    headers: { 'content-type': 'application/json' },
    authentication: { username: 'user', password: 'pass' },
    },
    state => {
    return state;
    }
    );

    Delete data

    del(
    '/myendpoint',
    {
    query: { id: 'someId' },
    headers: { 'content-type': 'application/json' },
    authentication: { username: 'user', password: 'pass' },
    },
    state => {
    return state;
    }
    );

    Parse XML

    This function allows you to parse some xml data. A callback function can be use to store in a table.

    parseXML(body, function ($) {
    return $('table[class=your_table]').parsetable(true, true, true);
    });

    Parse CSV

    parseCSV('someData.csv', {
    quoteChar: '"',
    header: false,
    });

    Sample parse local CSV file

    parseCSV('PatientsJan2009.csv', {
    quoteChar: '"',
    header: false,
    columns: true,
    skip_empty_lines: true,
    trim: true,
    bom: true,
    });

    Development

    Clone the repo, run pnpm install.

    Run tests using pnpm run test or pnpm run test:watch.

    To build the docs for this repo, run pnpm build:docs.

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/khanacademy-changelog.html b/fr/adaptors/packages/khanacademy-changelog.html index bfae19a8a4c..a7eacd4a438 100644 --- a/fr/adaptors/packages/khanacademy-changelog.html +++ b/fr/adaptors/packages/khanacademy-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.4

    Patch Changes

    0.3.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.3.2

    Patch Changes

    • f2aed32: add examples

    0.3.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    0.3.0

    Minor Changes

    • 9137655: migrate khanacademy
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/khanacademy-configuration-schema.html b/fr/adaptors/packages/khanacademy-configuration-schema.html index bbc8be1ab1f..64d1b99e9d9 100644 --- a/fr/adaptors/packages/khanacademy-configuration-schema.html +++ b/fr/adaptors/packages/khanacademy-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "email": "test@openfn.org",
    "password": "@some(!)Strongpassword",
    "consumerKey": "somEThINGkeyish",
    "secretKey": "otherThiNGfSECret"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "email": {
    "title": "Email",
    "type": "string",
    "description": "Your Khanacademy login email",
    "format": "email",
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Your Khanacademy login password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)Strongpassword"
    ]
    },
    "consumerKey": {
    "title": "Consumer Key",
    "type": "string",
    "description": "Your Khanacademy consumer key",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "somEThINGkeyish"
    ]
    },
    "secretKey": {
    "title": "Secret Key",
    "type": "string",
    "description": "Your Khanacademy secret key",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "otherThiNGfSECret"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "email",
    "password",
    "secretKey",
    "consumerKey"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/khanacademy-docs.html b/fr/adaptors/packages/khanacademy-docs.html index 107f0ba5837..94e302c3fe3 100644 --- a/fr/adaptors/packages/khanacademy-docs.html +++ b/fr/adaptors/packages/khanacademy-docs.html @@ -22,14 +22,14 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/packages/khanacademy-readme.html b/fr/adaptors/packages/khanacademy-readme.html index 2995e70db28..1d54f73dda0 100644 --- a/fr/adaptors/packages/khanacademy-readme.html +++ b/fr/adaptors/packages/khanacademy-readme.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ configuration-schema definition.

    fetch

    sample usage

    fetch({
    getEndpoint: 'user',
    queryParams: {
    email: 'thisoneuser@something.org',
    },
    postUrl: 'https://www.openfn.org/inbox/your-uuid',
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/kobotoolbox-changelog.html b/fr/adaptors/packages/kobotoolbox-changelog.html index 7099a647895..4f7dc5d98bb 100644 --- a/fr/adaptors/packages/kobotoolbox-changelog.html +++ b/fr/adaptors/packages/kobotoolbox-changelog.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.3.3

    Patch Changes

    1.3.2

    Patch Changes

    • f7ebd3c: remove sample configuration

    1.3.1

    Patch Changes

    • f2aed32: add examples

    1.3.0

    Minor Changes

    • e48c30c: add getDeploymentInfo function

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    1.2.0

    Minor Changes

    • 7b5ca3e: add fn and fix adaptors export

    Patch Changes

    • 4067c28: build ast file
    • f2a91a4: Update package exports
    • Updated dependencies [f2a91a4]

    1.1.0

    Minor Changes

    • 7fc47d8: Migrate kobotoolbox

    Patch Changes

    • 8566b26: Fix typings
    • b3d45ff: Fix CJS export of npm package.
    • ecf5d30: remove sinon since it was not being used
    • Updated dependencies [8566b26]
    • Updated dependencies [b3d45ff]
    • Updated dependencies [b5eb665]
    • Updated dependencies [ecf5d30]
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/kobotoolbox-configuration-schema.html b/fr/adaptors/packages/kobotoolbox-configuration-schema.html index ce8361c3f14..493d155cee5 100644 --- a/fr/adaptors/packages/kobotoolbox-configuration-schema.html +++ b/fr/adaptors/packages/kobotoolbox-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "baseURL": "https://kf.kobotoolbox.org",
    "username": "test@openfn.org",
    "password": "@some(!)Strongpassword",
    "apiVersion": "v2"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "baseURL": {
    "title": "Base URL",
    "type": "string",
    "default": "https://kf.kobotoolbox.org",
    "description": "Kobotoolbox URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://kf.kobotoolbox.org"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Kobotoolbox username",
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Kobotoolbox password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)Strongpassword"
    ]
    },
    "apiVersion": {
    "title": "API Version",
    "type": "string",
    "placeholder": "v2",
    "description": "Kobotoolbox API version to use",
    "minLength": 1,
    "examples": [
    "v2"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "username",
    "baseURL",
    "password",
    "apiVersion"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/kobotoolbox-docs.html b/fr/adaptors/packages/kobotoolbox-docs.html index 2c3fcde0963..00659b40091 100644 --- a/fr/adaptors/packages/kobotoolbox-docs.html +++ b/fr/adaptors/packages/kobotoolbox-docs.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ Make a request to get the list of forms

    Kind: global function
    Access: public

    ParamTypeDescription
    paramsobjectQuery, Headers and Authentication parameters
    callbackfunction(Optional) Callback function to execute after fetching form list

    Example

    getForms({}, state => {
    console.log(state.data);
    return state;
    });

    getSubmissions

    getSubmissions(params, callback) ⇒ Operation Get submissions for a specific form

    Kind: global function

    ParamTypeDescription
    paramsobjectForm Id and data to make the fetch or filter
    callbackfunction(Optional) Callback function to execute after fetching form submissions

    Example

    getSubmissions({formId: 'aXecHjmbATuF6iGFmvBLBX'}, state => {
    console.log(state.data);
    return state;
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/kobotoolbox-readme.html b/fr/adaptors/packages/kobotoolbox-readme.html index c07fe01097a..a1b1313ffcf 100644 --- a/fr/adaptors/packages/kobotoolbox-readme.html +++ b/fr/adaptors/packages/kobotoolbox-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Get the list of forms

    getForms({}, state => {
    console.log(state.data);
    return state;
    });

    Get submissions for a specific form

    A query can be used to filter results.

    getSubmissions(
    { formId: 'aXecHjmbATuF6iGFmvBLBX', query: { end: { $gte: '2020-11-20' } } },
    state => {
    console.log(state.data);
    return state;
    }
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/magpi-changelog.html b/fr/adaptors/packages/magpi-changelog.html index f9621c558f4..efd79eb6235 100644 --- a/fr/adaptors/packages/magpi-changelog.html +++ b/fr/adaptors/packages/magpi-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.0.5

    Patch Changes

    • 86fb813: dependencies update

    1.0.4

    Patch Changes

    1.0.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    1.0.2

    Patch Changes

    • f2aed32: add examples

    1.0.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    1.0.0

    Major Changes

    • e6c2b4a: Update xml2js parser

    Minor Changes

    • df5dd2e: migrate magpi
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/magpi-configuration-schema.html b/fr/adaptors/packages/magpi-configuration-schema.html index b128b8d9da7..e62c5e4841f 100644 --- a/fr/adaptors/packages/magpi-configuration-schema.html +++ b/fr/adaptors/packages/magpi-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "username": "test@openfn.org",
    "accessToken": "somEThINGkeyish"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "username": {
    "title": "username",
    "type": "string",
    "description": "Magpi username",
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "accessToken": {
    "title": "Access Token",
    "type": "string",
    "description": "Magpi access token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "somEThINGkeyish"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "username",
    "accessToken"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/magpi-docs.html b/fr/adaptors/packages/magpi-docs.html index 82878dbda07..67465c96469 100644 --- a/fr/adaptors/packages/magpi-docs.html +++ b/fr/adaptors/packages/magpi-docs.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ Access: public

    ParamTypeDescription
    paramsobjectdata to make the fetch

    Example

    fetchSurveyData({
    "surveyId": "37479",
    "afterDate": "2017-09-27",
    "postUrl": "https://www.openfn.org/inbox/your-inbox-url"
    })

    submitRecord

    submitRecord(jsonData) ⇒ Operation Submit a record for a form/survey which already exists in a Magpi user account

    Kind: global function
    Access: public

    ParamTypeDescription
    jsonDataobjectPayload data for the record

    Example

    submitRecord(jsonData)

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/magpi-readme.html b/fr/adaptors/packages/magpi-readme.html index 14f74df1d78..5d928fa688b 100644 --- a/fr/adaptors/packages/magpi-readme.html +++ b/fr/adaptors/packages/magpi-readme.html @@ -22,7 +22,7 @@ - + @@ -42,7 +42,7 @@ one on the data tab
  • enddate: End date of the data to be returned. Filtering is done based on the DateStamp and is inclusive.(Optional)
  • Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mailchimp-changelog.html b/fr/adaptors/packages/mailchimp-changelog.html index e6cc8ad2a1e..3bad46fbeac 100644 --- a/fr/adaptors/packages/mailchimp-changelog.html +++ b/fr/adaptors/packages/mailchimp-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.5

    Patch Changes

    0.3.4

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.3.3

    Patch Changes

    • f2aed32: add examples

    0.3.2

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    0.3.1

    Patch Changes

    • cbb8968: Fix axios Inefficient Regular Expression Complexity vulnerability
    • e81561f: Updated ast and package.json

    0.3.0

    Minor Changes

    • 88fa3b5: migrate mailchimp

    Patch Changes

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mailchimp-configuration-schema.html b/fr/adaptors/packages/mailchimp-configuration-schema.html index f324ef2988d..9e676b3b6c0 100644 --- a/fr/adaptors/packages/mailchimp-configuration-schema.html +++ b/fr/adaptors/packages/mailchimp-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "server": "us11",
    "apiKey": "0eb22c7b4a1c5bcd789379bf8a92902d-us13"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "server": {
    "title": "Data Center",
    "type": "string",
    "description": "Mailchimp Data Center for your account",
    "minLength": 3,
    "examples": [
    "us11",
    "uk8",
    "in10"
    ],
    "pattern": "^[a-zA-Z]{2}\\d{1,2}$"
    },
    "apiKey": {
    "title": "API Key",
    "type": "string",
    "description": "Mailchimp API Key",
    "minLength": 32,
    "examples": [
    "0eb22c7b4a1c5bcd789379bf8a92902d-us13"
    ],
    "pattern": "^[a-zA-Z0-9]{20}-[a-zA-Z]{2}\\d{1,2}$"
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "server",
    "apiKey"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mailchimp-docs.html b/fr/adaptors/packages/mailchimp-docs.html index 893cb10baeb..cb0025456df 100644 --- a/fr/adaptors/packages/mailchimp-docs.html +++ b/fr/adaptors/packages/mailchimp-docs.html @@ -22,7 +22,7 @@ - + @@ -44,7 +44,7 @@ updateMember

    Kind: global function

    ParamTypeDescription
    paramsobjecta listId,subscriberHash and member
    [callback]functionOptional callback to handle the response

    updateMemberTags

    updateMemberTags(params, [callback]) ⇒ Operation updateMemberTags

    Kind: global function

    ParamTypeDescription
    paramsobjecta listId, and options
    [callback]functionOptional callback to handle the response

    upsertMembers

    upsertMembers(params, [callback]) ⇒ Operation Add or update a list members

    Kind: global function

    ParamTypeDescription
    paramsobjecta listId, users, and options
    [callback]functionOptional callback to handle the response

    Example

    upsertMembers((state) => ({
    listId: "someId",
    users: state.response.body.rows.map((u) => ({
    email: u.email,
    status: u.allow_other_emails ? "subscribed" : "unsubscribed",
    mergeFields: { FNAME: u.first_name, LNAME: u.last_name },
    })),
    }));

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mailchimp-readme.html b/fr/adaptors/packages/mailchimp-readme.html index bcb8f14f934..3648276130b 100644 --- a/fr/adaptors/packages/mailchimp-readme.html +++ b/fr/adaptors/packages/mailchimp-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mailgun-changelog.html b/fr/adaptors/packages/mailgun-changelog.html index 5d9a18e3779..9aa9c2bb282 100644 --- a/fr/adaptors/packages/mailgun-changelog.html +++ b/fr/adaptors/packages/mailgun-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.4

    Patch Changes

    0.3.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.3.2

    Patch Changes

    • f2aed32: add examples

    0.3.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    0.3.0

    Minor Changes

    • 9ded25e: Migrate Mailgun
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mailgun-configuration-schema.html b/fr/adaptors/packages/mailgun-configuration-schema.html index 58be3041b01..13ae3e01551 100644 --- a/fr/adaptors/packages/mailgun-configuration-schema.html +++ b/fr/adaptors/packages/mailgun-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "domain": "https://mailgun.com/api/example",
    "apiKey": "otherThiNGfSECret"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "domain": {
    "title": "Domain URL",
    "type": "string",
    "description": "Mailgun API domain URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://mailgun.com/api/example"
    ]
    },
    "apiKey": {
    "title": "API Key",
    "type": "string",
    "description": "Mailgun API Key",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "otherThiNGfSECret"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "domain",
    "apiKey"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mailgun-docs.html b/fr/adaptors/packages/mailgun-docs.html index f4298b649e0..b1293d9a12c 100644 --- a/fr/adaptors/packages/mailgun-docs.html +++ b/fr/adaptors/packages/mailgun-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    mailgun@0.4.3

    send

    send(params) Create an event

    Kind: global function
    Access: public

    ParamTypeDescription
    paramsobjectParams for sending an email

    Example

    send({
    from: 'from_email',
    to: 'to_email',
    subject: 'Your Subject',
    text: 'Your message goes here',
    attachment: {
    url: 'www.google.com/doodle.png',
    filename: 'forYou.png',
    },
    })

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mailgun-readme.html b/fr/adaptors/packages/mailgun-readme.html index edf44083019..3fd04759f39 100644 --- a/fr/adaptors/packages/mailgun-readme.html +++ b/fr/adaptors/packages/mailgun-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    send

    send(
    fields(
    field('from', 'from_email'),
    field('to', 'to_email'),
    field('subject', 'Your Subject'),
    field('text', 'Your message goes here')
    )
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/maximo-changelog.html b/fr/adaptors/packages/maximo-changelog.html index 44aaefab448..32c320f37ba 100644 --- a/fr/adaptors/packages/maximo-changelog.html +++ b/fr/adaptors/packages/maximo-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.5

    Patch Changes

    0.3.4

    Patch Changes

    • aed7e0b: fix required field in configuration schema

    0.3.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.3.2

    Patch Changes

    • f2aed32: add examples

    0.3.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    0.3.0

    Minor Changes

    • 4d4be56: migrate maximo
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/maximo-configuration-schema.html b/fr/adaptors/packages/maximo-configuration-schema.html index e20599dd176..ab109b92f8b 100644 --- a/fr/adaptors/packages/maximo-configuration-schema.html +++ b/fr/adaptors/packages/maximo-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "baseUrl": "https://maximo-demo76.mro.com",
    "username": "test@openfn.org",
    "password": "@some(!)passowrd"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "baseUrl": {
    "title": "Base URL",
    "type": "string",
    "description": "Maximo instance base URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://maximo-demo76.mro.com"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Maximo instance username",
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Maximo instance password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)passowrd"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "baseUrl",
    "username",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/maximo-docs.html b/fr/adaptors/packages/maximo-docs.html index 876153e17ec..e9f35627d47 100644 --- a/fr/adaptors/packages/maximo-docs.html +++ b/fr/adaptors/packages/maximo-docs.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ Make a GET request and POST it somewhere else

    Kind: global function

    ParamTypeDescription
    paramsobjectdata to make the fetch

    Example

    fetch({
    endpoint: 'maxrest/rest/os/mxinventory',
    query: {
    ITEMNUM: '01226',
    _format: 'json',
    },
    postUrl: 'https://www.openfn.org/inbox/not-real',
    });

    update

    update(params) ⇒ Operation Make an update in Maximo 7.6 and beyond

    Kind: global function

    ParamTypeDescription
    paramsobjectdata to make the update

    Example

    execute(
    update(params)
    )(state)

    update75

    update75(params) ⇒ Operation Make an upadte in Maximo 7.5

    Kind: global function

    ParamTypeDescription
    paramsobjectdata to make the update

    Example

    execute(
    update75(params)
    )(state)

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/maximo-readme.html b/fr/adaptors/packages/maximo-readme.html index 52333307abb..c9b24a3ae2e 100644 --- a/fr/adaptors/packages/maximo-readme.html +++ b/fr/adaptors/packages/maximo-readme.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ configuration-schema definition.

    Fetch

    sample 'fetch' expression

    fetch({
    endpoint: 'maxrest/rest/os/mxinventory',
    query: {
    ITEMNUM: '01226',
    _format: 'json',
    },
    postUrl: 'https://www.openfn.org/inbox/not-real',
    });

    sample 'create' expression

    create({
    endpoint: 'maxrest/rest/os/mxinvbal/',
    body: function (state) {
    return {
    ITEMNUM: dataValue('form.ITEMNUM')(state),
    ITEMSETID: dataValue('form.ITEMSETID')(state),
    SITEID: dataValue('form.SITEID')(state),
    LOCATION: dataValue('form.LOCATION')(state),
    ISSUEUNIT: 'FOO',
    PHYSCNT: dataValue('PHYSCNT')(state),
    BINNUM: dataValue('form.BINNUM')(state),
    };
    },
    });

    sample 'update75' expression

    update75({
    endpoint: state => {
    return (
    'maxrest/rest/os/mxinvbal/' +
    dataValue('form.question1.INVBALANCESID')(state)
    );
    },
    body: state => {
    return {
    _action: 'AddChange', //this is required for the old Maximo API!
    ITEMNUM: dataValue('form.ITEMNUM')(state),
    ITEMSETID: dataValue('form.ITEMSETID')(state),
    SITEID: dataValue('form.SITEID')(state),
    LOCATION: dataValue('form.LOCATION')(state),
    PHYSCNT: dataValue('form.PHYSCNT')(state),
    BINNUM: dataValue('form.BINNUM')(state),
    };
    },
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/medicmobile-changelog.html b/fr/adaptors/packages/medicmobile-changelog.html index b1d93f4091a..a85f925b9d5 100644 --- a/fr/adaptors/packages/medicmobile-changelog.html +++ b/fr/adaptors/packages/medicmobile-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.3

    Patch Changes

    0.3.2

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.3.1

    Patch Changes

    • f2aed32: add examples

    0.3.0

    Minor Changes

    • 2cd3236: migrate medicmobile

    Patch Changes

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/medicmobile-configuration-schema.html b/fr/adaptors/packages/medicmobile-configuration-schema.html index e066fd88fc5..b3cda35ba94 100644 --- a/fr/adaptors/packages/medicmobile-configuration-schema.html +++ b/fr/adaptors/packages/medicmobile-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "server": "https://standard.app.medicmobile.org",
    "db": "medic",
    "username": "admin",
    "password": "@super(!)Secret"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "server": {
    "title": "Server URL",
    "type": "string",
    "description": "Medic's CouchDB api URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://standard.app.medicmobile.org"
    ]
    },
    "db": {
    "title": "Database",
    "type": "string",
    "description": "Database name",
    "minLength": 1,
    "examples": [
    "medic"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Medic instance username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Medic instance password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secret"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "server",
    "username",
    "password",
    "db"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/medicmobile-docs.html b/fr/adaptors/packages/medicmobile-docs.html index 420625d195b..e3c4140518a 100644 --- a/fr/adaptors/packages/medicmobile-docs.html +++ b/fr/adaptors/packages/medicmobile-docs.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ Access: public

    ParamTypeDescription
    formIdstringQuery parameters
    paramsobjectStarting sequence id
    postUrlstringInbox to post form data

    Example

    fetchSubmissions(
    "pregnancy", // formId
    { "last-event-id": 334 }, // params
    "http://localhost:4000/inbox/abc-123-xyz" // postUrl
    );

    pickFormData

    pickFormData(formId) ⇒ Operation Select submissions for a specific form

    Kind: global function
    Access: public

    ParamTypeDescription
    formIdstringThe form ID.

    Example

    pickFormData(formId)

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/medicmobile-readme.html b/fr/adaptors/packages/medicmobile-readme.html index b80ceb8b7f3..4ff8ac93605 100644 --- a/fr/adaptors/packages/medicmobile-readme.html +++ b/fr/adaptors/packages/medicmobile-readme.html @@ -22,7 +22,7 @@ - + @@ -39,7 +39,7 @@ configuration-schema definition.

    sample fetchSubmissions expression

    fetchSubmissions(
    'pregnancy', // formId
    { 'last-event-id': 334 }, // params, last-event-id will be replaced by cursor
    'http://localhost:4000/inbox/abc-123-xyz' // postUrl
    );

    sample changesApi and pickFormData usage

    // get all the changes...
    changesApi({
    include_docs: true,
    // This only gets used the first time the job is run.
    // Subsequent runs take the lastSeq value as their cursor.
    // "last-event-id": 789,
    });

    // Picks out the field data for a given formId.
    pickFormData('pregnancy');

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mogli-changelog.html b/fr/adaptors/packages/mogli-changelog.html index cbd6067b112..0b0b0a9ca7f 100644 --- a/fr/adaptors/packages/mogli-changelog.html +++ b/fr/adaptors/packages/mogli-changelog.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.4

    Patch Changes

    • 7cc8efc: remove FakeAdaptor references

    0.3.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.3.2

    Patch Changes

    • f2aed32: add examples

    0.3.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    0.3.0

    Minor Changes

    • c6056e8: migrate mogli

    • State gets cleaned up after the operations are finished. This means that the final state is serializable.

      The JSForce connection object is provided by createConnection, and in turn execute ensures it is run before the user's operations.

      The cleanupState reducer simply deletes the connection key from state.

    v0.1.3

    • Bumped language-common dependency to v0.0.4.
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mogli-configuration-schema.html b/fr/adaptors/packages/mogli-configuration-schema.html index 33424edb291..a19a99683ea 100644 --- a/fr/adaptors/packages/mogli-configuration-schema.html +++ b/fr/adaptors/packages/mogli-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "loginUrl": " https://www.orange-or-airtel-or-vodafone.com/api/",
    "username": "admin",
    "password": "@secret(!)Pass",
    "securityToken": "dGF5bG9yOnNlY3JldA==",
    "secret": "someotherThiNGfSECret"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "loginUrl": {
    "title": "Login URL",
    "type": "string",
    "description": "Mogli instance login URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    " https://www.orange-or-airtel-or-vodafone.com/api/"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Mogli instance username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Mogli instance password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@secret(!)Pass"
    ]
    },
    "securityToken": {
    "title": "Security Token",
    "type": "string",
    "description": "Mogli instance security token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "dGF5bG9yOnNlY3JldA=="
    ]
    },
    "secret": {
    "title": "Secret",
    "type": "string",
    "description": "Mogli instance secret",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "someotherThiNGfSECret"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "loginUrl",
    "username",
    "password",
    "securityToken",
    "secret"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mogli-docs.html b/fr/adaptors/packages/mogli-docs.html index a07984ed205..6b0ff972958 100644 --- a/fr/adaptors/packages/mogli-docs.html +++ b/fr/adaptors/packages/mogli-docs.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ Removes unserializable keys from the state.

    Kind: global function

    ParamType
    stateState

    lookup

    lookup(relationshipName, externalID, path) ⇒ object Adds a lookup or 'dome insert' to a record.

    Kind: global function

    ParamTypeDescription
    relationshipNamestring__r relationship field on the record.
    externalIDstringSalesforce ExternalID field.
    pathstringJSONPath to data source.

    Example (Example)

    lookup("relationship_name__r", "externalID on related object", "$.path")

    relationship

    relationship(relationshipName, externalID, dataSource) ⇒ object Adds a lookup or 'dome insert' to a record.

    Kind: global function

    ParamTypeDescription
    relationshipNamestring__r relationship field on the record.
    externalIDstringSalesforce ExternalID field.
    dataSourcestringresolvable source.

    Example (Data Sourced Value)

    relationship("relationship_name__r", "externalID on related object", dataSource("path"))

    Example (Fixed Value)

    relationship("relationship_name__r", "externalID on related object", "hello world")

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mogli-readme.html b/fr/adaptors/packages/mogli-readme.html index 1b0884a7322..ae31308c02a 100644 --- a/fr/adaptors/packages/mogli-readme.html +++ b/fr/adaptors/packages/mogli-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Create inbound SMS

    createSMS(
    fields(
    field('sender', dataValue('from_number')),
    field('receivedAt', dataValue('timestamp')),
    field('message', dataValue('message'))
    )
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mongodb-changelog.html b/fr/adaptors/packages/mongodb-changelog.html index 7ae8768f92b..930198df299 100644 --- a/fr/adaptors/packages/mongodb-changelog.html +++ b/fr/adaptors/packages/mongodb-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.0.6

    Patch Changes

    • f7ebd3c: remove sample configuration

    1.0.5

    Patch Changes

    • f2aed32: add examples
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mongodb-configuration-schema.html b/fr/adaptors/packages/mongodb-configuration-schema.html index b1fedd80d86..e8b3a0279f1 100644 --- a/fr/adaptors/packages/mongodb-configuration-schema.html +++ b/fr/adaptors/packages/mongodb-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "clusterHostname": "yourCluster-xxxyzzz.mongodb.net",
    "username": "admin",
    "password": "@secret(!)Pass"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "clusterHostname": {
    "title": "Cluster Hostname",
    "type": "string",
    "description": "Your MongoDB cluster hostname",
    "format": "hostname",
    "minLength": 1,
    "examples": [
    "yourCluster-xxxyzzz.mongodb.net"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Your MongoDB instance username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Your MongoDB instance password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@secret(!)Pass"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "clusterHostname",
    "username",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mongodb-docs.html b/fr/adaptors/packages/mongodb-docs.html index d978a55cd49..aaf5293aa64 100644 --- a/fr/adaptors/packages/mongodb-docs.html +++ b/fr/adaptors/packages/mongodb-docs.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ Find documents in a mongoDb collection

    Kind: global function

    ParamTypeDescription
    paramsobjectConfiguration for mongo

    Example

    findDocuments({
    database: 'str',
    collection: 'cases',
    query: {a:3}
    });

    insertDocuments

    insertDocuments(params) ⇒ State Inserts documents into a mongoDb collection

    Kind: global function

    ParamTypeDescription
    paramsobjectConfiguration for mongo

    Example

    insertDocuments({
    database: 'str',
    collection: 'kids',
    documents: [1,2,3]
    });

    updateDocument

    updateDocument(params) ⇒ State Updates document (optionally upserting) into a mongoDb collection

    Kind: global function

    ParamTypeDescription
    paramsobjectConfiguration for mongo

    Example

    updateDocuments({
    database: 'str',
    collection: 'animals',
    filter: { type: 'fuzzy' },
    changes: { kind: 'soft' },
    options: { upsert: true }
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mongodb-readme.html b/fr/adaptors/packages/mongodb-readme.html index 8c316faf678..9c696a16878 100644 --- a/fr/adaptors/packages/mongodb-readme.html +++ b/fr/adaptors/packages/mongodb-readme.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ configuration-schema definition.

    insertDocuments

    insertDocuments({
    database: 'yourDb',
    collection: 'yourCollection',
    documents: state => {
    return state.data.map(item => {
    return { name: item.name, age: item.age };
    });
    },
    // callback: (state) => state, // optional
    });

    findDocuments

    findDocuments({
    database: 'yourDb',
    collection: 'yourCollection',
    query: state => {
    return { name: 'stu' };
    },
    // callback: (state) => state, // optional
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/msgraph-changelog.html b/fr/adaptors/packages/msgraph-changelog.html index 127968758fc..2c5a19cd3e8 100644 --- a/fr/adaptors/packages/msgraph-changelog.html +++ b/fr/adaptors/packages/msgraph-changelog.html @@ -22,14 +22,14 @@ - +

    Changelog for the msgraph adaptor

    @openfn/language-msgraph

    0.4.0

    Minor Changes

    • 4cd6587: Add uploadFile and sheetToBuffer function

    Patch Changes

    0.3.5

    Patch Changes

    0.3.4

    Patch Changes

    • 1c183e9: Fix getFile unit tests

    0.3.3

    Patch Changes

    0.3.2

    Patch Changes

    • 9cc4952: fix url in request util

    0.3.1

    Patch Changes

    • f45f477: Clean-up state before throwing an error

    0.3.0

    Minor Changes

    • 9366e53: - Switch from nodejs default fetch to undici fetch
      • Added the following sharepoint functions
        • getDrive()
        • getFolder()
        • getFile()

    0.2.0

    Minor Changes

    • d33c0ee: export parseCsv from common

    Patch Changes

    0.1.1

    Patch Changes

    • aad9549: Ensure that standard OAuth2 credentials with snake-cased "access_token" keys can be used for OAuth2-reliant adaptors
    • Updated dependencies [aad9549]

    0.1.0

    Minor Changes

    • 93d82a8: Add msgraph adaptor with get() and create() functions

    Patch Changes

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/msgraph-configuration-schema.html b/fr/adaptors/packages/msgraph-configuration-schema.html index 6394480d4b7..a5aac44973e 100644 --- a/fr/adaptors/packages/msgraph-configuration-schema.html +++ b/fr/adaptors/packages/msgraph-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "apiVersion": "v1.0",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRl"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$comment": "OAuth2",
    "properties": {
    "apiVersion": {
    "title": "API Version",
    "anyOf": [
    {
    "type": "string"
    },
    {
    "type": "null"
    }
    ],
    "placeholder": "v1.0",
    "description": "Microsoft Graph api version",
    "minLength": 1,
    "examples": [
    "v1.0",
    "beta"
    ]
    },
    "access_token": {
    "title": "Access Token",
    "type": "string",
    "description": "Your Microsoft Graph access token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjlGWERwYmZNRl"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "access_token"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/msgraph-docs.html b/fr/adaptors/packages/msgraph-docs.html index a348fe4f248..82a7df54850 100644 --- a/fr/adaptors/packages/msgraph-docs.html +++ b/fr/adaptors/packages/msgraph-docs.html @@ -22,7 +22,7 @@ - + @@ -53,7 +53,7 @@ Access: public

    ParamTypeDescription
    rowsThe rows parameter is an array of objects representing the data to be written to the Excel sheet. Each object in the array represents a row in the sheet, and the keys of the object represent the column headers. The values of the object represent the data in each cell of the row.
    optionsThe options parameter is an object that contains additional configuration options
    [options.wsName]StringWorksheet name i.e 32 Characters
    [options.bookType]StringFile format of the exported file, Default is 'xlsx'. See here for the function. It can have the following properties:

    Example (Create a buffer containing excel file with `xlsx` output format )

    sheetToBuffer('$.data[*]', {
    wsName: 'Invalid Grant Codes',
    bookType: 'xlsx',
    });

    uploadFile

    uploadFile(resource, data, callback) ⇒ Operation Upload a file to a drive

    Kind: global function
    Access: public

    ParamTypeDescription
    resourceObjectResource Object
    [resource.driveId]StringDrive Id
    [resource.driveId]StringSite Id
    [resource.folderId]StringParent folder id
    [resource.contentType]StringResource content-type
    [resource.onConflict]StringSpecify conflict behavior if file with the same name exists. Can be "rename
    dataObjectA buffer containing the file.
    callbackfunctionOptional callback function

    Example (Upload Excel file to a drive using `driveId` and `parantItemId`)

    uploadFile(
    state => ({
    driveId: state.driveId,
    folderId: state.folderId,
    fileName: `Tracker.xlsx`,
    }),
    state => state.buffer
    );

    Example (Upload Excel file to a SharePoint drive using `siteId` and `parantItemId`)

    uploadFile(
    state => ({
    siteId: state.siteId,
    folderId: state.folderId,
    fileName: `Report.xlsx`,
    }),
    state => state.buffer
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/msgraph-readme.html b/fr/adaptors/packages/msgraph-readme.html index 62b6ec8923b..9acf48066b0 100644 --- a/fr/adaptors/packages/msgraph-readme.html +++ b/fr/adaptors/packages/msgraph-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema for required and optional configuration properties.

    Development

    Clone the adaptors monorepo. Follow the "Getting Started" guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To build only the docs run pnpm build docs.

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mssql-changelog.html b/fr/adaptors/packages/mssql-changelog.html index 920c57b305d..1ffbbdc7929 100644 --- a/fr/adaptors/packages/mssql-changelog.html +++ b/fr/adaptors/packages/mssql-changelog.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    4.0.8

    Patch Changes

    • 57742d1: remove request dependency

    4.0.7

    Patch Changes

    • 04ed74f: update dependencies

    4.0.6

    Patch Changes

    • 43c3669: patch versions

    4.0.5

    Patch Changes

    4.0.4

    Patch Changes

    4.0.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    4.0.2

    Patch Changes

    • f2aed32: add examples

    4.0.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    4.0.0

    Major Changes

    • 3878624: Modify composeNextState function, to flattern all rows into an array of rows with their corresponding column names

    Patch Changes

    3.1.1

    Patch Changes

    • 8566b26: Fix typings
    • b3d45ff: Fix CJS export of npm package.
    • ecf5d30: remove sinon since it was not being used
    • Updated dependencies [8566b26]
    • Updated dependencies [b3d45ff]
    • Updated dependencies [b5eb665]
    • Updated dependencies [ecf5d30]

    3.1.0

    Minor Changes

    • c9b7ed7: Add language-mssql in monorepo

    Patch Changes

    • e04aa28: Rename credential-schema to configuration-schema, update descriptions
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mssql-configuration-schema.html b/fr/adaptors/packages/mssql-configuration-schema.html index 3285cdfb490..6fdd06197e8 100644 --- a/fr/adaptors/packages/mssql-configuration-schema.html +++ b/fr/adaptors/packages/mssql-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "server": "something.database.windows.net",
    "database": "demo-db",
    "userName": "admin",
    "password": "@super(!)Password"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "server": {
    "title": "Server URL",
    "type": "string",
    "description": "The database instance server URL or IP address",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "something.database.windows.net"
    ]
    },
    "database": {
    "title": "Database",
    "type": "string",
    "description": "The database name",
    "minLength": 1,
    "examples": [
    "demo-db"
    ]
    },
    "userName": {
    "title": "Username",
    "type": "string",
    "description": "Username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Password"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "server",
    "database"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mssql-docs.html b/fr/adaptors/packages/mssql-docs.html index 60eac936fda..23b0b897522 100644 --- a/fr/adaptors/packages/mssql-docs.html +++ b/fr/adaptors/packages/mssql-docs.html @@ -22,7 +22,7 @@ - + @@ -53,7 +53,7 @@ Access: public

    ParamTypeDescription
    logicalstringa data to check existing value for.
    tablestringThe target table
    uuidstringThe uuid column to determine a matching/existing record
    recordobjectPayload data for the record as a JS object or function
    optionsobjectOptional options argument

    Example

    upsertIf(
    dataValue('name'),
    'users', // the DB table
    'uuid', // a DB column with a unique constraint
    { name: 'Elodie', id: 7 },
    { writeSql:true, execute: true, logValues: false }
    )

    upsertMany

    upsertMany(table, uuid, records, options) ⇒ Operation Insert or update multiple records using ON CONFLICT UPDATE and excluded

    Kind: global function
    Access: public

    ParamTypeDescription
    tablestringThe target table
    uuidstringThe uuid column to determine a matching/existing record
    recordsfunctionA function that takes state and returns an array of records
    optionsobjectOptional options argument

    Example

    upsertMany(
    'users', 'email', records, { logValues: false }
    )
    upsertMany(
    'users', ['email', 'phone'], records, { logValues: false }
    )

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mssql-readme.html b/fr/adaptors/packages/mssql-readme.html index f7c3be88c2d..017f8f4913a 100644 --- a/fr/adaptors/packages/mssql-readme.html +++ b/fr/adaptors/packages/mssql-readme.html @@ -22,7 +22,7 @@ - + @@ -42,7 +42,7 @@ columns. The key identity can be use for a column to auto-generate a value.

    insertTable('users', state =>
    state.data.map(column => ({
    name: column.name,
    type: column.type,
    required: true, // optional
    unique: false, // optional - set to true for unique constraint
    }))
    );

    Alter a table in the database

    This function allows to add new columns to a table. Beware of the fact that you cannot add new columns with names that already exist in the table.

    modifyTable(
    'users',
    state =>
    state.data.map(newColumn => ({
    name: newColumn.name,
    type: newColumn.type,
    required: true, // optional
    unique: false, // optional - set to true for unique constraint
    })),
    { writeSql: false, execute: true }
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mysql-changelog.html b/fr/adaptors/packages/mysql-changelog.html index eecd301c1ef..01eb3f888f1 100644 --- a/fr/adaptors/packages/mysql-changelog.html +++ b/fr/adaptors/packages/mysql-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.3.5

    Patch Changes

    1.3.4

    Patch Changes

    • ef828e7: update old urls in readme
    • 14f481e: mark execute as private
    • Updated dependencies [2b4c61a]

    1.3.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    1.3.2

    Patch Changes

    • f2aed32: add examples

    1.3.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    1.3.0

    Minor Changes

    • 9d674c5: Migrate MySQL
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mysql-configuration-schema.html b/fr/adaptors/packages/mysql-configuration-schema.html index 95eb295f8bd..7d8c043738d 100644 --- a/fr/adaptors/packages/mysql-configuration-schema.html +++ b/fr/adaptors/packages/mysql-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "host": "some-host-url.compute-1.amazonaws.com",
    "port": "3306",
    "database": "demo-db",
    "user": "admin-demo",
    "password": "@super(!)Secretpass"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "host": {
    "title": "Host URL",
    "type": "string",
    "description": "The database instance host URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "some-host-url.compute-1.amazonaws.com"
    ]
    },
    "port": {
    "title": "Port",
    "type": "integer",
    "default": 3306,
    "description": "Database instance port",
    "minLength": 1,
    "examples": [
    3306
    ]
    },
    "database": {
    "title": "Database",
    "type": "string",
    "description": "The database name",
    "minLength": 1,
    "examples": [
    "demo-db"
    ]
    },
    "user": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in the database",
    "minLength": 1,
    "examples": [
    "admin-demo"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in the database",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secretpass"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "host",
    "database"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mysql-docs.html b/fr/adaptors/packages/mysql-docs.html index 19d85d8ff0e..9316dc3161d 100644 --- a/fr/adaptors/packages/mysql-docs.html +++ b/fr/adaptors/packages/mysql-docs.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ Insert or Update a record if matched

    Kind: global function

    ParamTypeDescription
    tablestringThe target table
    fieldsobjectA fields object

    Example

    execute(
    upsert('table', fields(
    field('name', dataValue('name'))
    ))
    )(state)

    upsertMany

    upsertMany(table, data) ⇒ Operation Insert or update multiple records using ON DUPLICATE KEY

    Kind: global function
    Access: public

    ParamTypeDescription
    tablestringThe target table
    dataarrayAn array of objects or a function that returns an array

    Example

    upsertMany(
    'users', // the DB table
    [
    { name: 'one', email: 'one@openfn.org' },
    { name: 'two', email: 'two@openfn.org' },
    ]
    )

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/mysql-readme.html b/fr/adaptors/packages/mysql-readme.html index 71a038f53cc..572f656264d 100644 --- a/fr/adaptors/packages/mysql-readme.html +++ b/fr/adaptors/packages/mysql-readme.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ returns a string.

    sqlString(state => {
    return (
    `INSERT INTO untitled_table (name, the_geom) VALUES ('` +
    state.data.version +
    `', ` +
    dataValue('form.Choix_tache')(state) +
    `)`
    );
    });

    Insert a single record

    This function is used to insert a single record in a MySQL database.

    insert(
    'some_table',
    fields(
    field('firstname', dataValue('form.patient_firstname')),
    field('lastname', dataValue('form.patient_lastname'))
    )
    );

    Insert or update a single record

    This function is used to insert a single record in a MySQL database or update it if there is a match.

    upsert(
    'some_table',
    fields(
    field('firstname', dataValue('form.patient_firstname')),
    field('lastname', dataValue('form.patient_lastname'))
    )
    );

    Upsert many records

    This function allows the upsert of a set of records inside a table all at once.

    upsertMany(
    'users', // the DB table
    [
    { name: 'one', email: 'one@openfn.org' },
    { name: 'two', email: 'two@openfn.org' },
    ]
    );

    or

    upsertMany('users', state =>
    state.data.users.map(user => {
    name: user['name'],
    email: user['email']
    })
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/nexmo-changelog.html b/fr/adaptors/packages/nexmo-changelog.html index a53521d2111..5e0b69f7573 100644 --- a/fr/adaptors/packages/nexmo-changelog.html +++ b/fr/adaptors/packages/nexmo-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.2.3

    Patch Changes

    0.2.2

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.2.1

    Patch Changes

    • f2aed32: add examples

    0.2.0

    Minor Changes

    • f0f2495: migrate nexmo
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/nexmo-configuration-schema.html b/fr/adaptors/packages/nexmo-configuration-schema.html index c2efff1c5ef..f94546ef014 100644 --- a/fr/adaptors/packages/nexmo-configuration-schema.html +++ b/fr/adaptors/packages/nexmo-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "apiKey": "mYaP1K3y",
    "apiSecret": "supersecret"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "apiKey": {
    "title": "API Key",
    "type": "string",
    "description": "Your Nexmo API Key",
    "minLength": 1,
    "examples": [
    "mYaP1K3y"
    ]
    },
    "apiSecret": {
    "title": "API Secret",
    "type": "string",
    "description": "Your Nexmo API Secret key",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "supersecret"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "apiKey",
    "apiSecret"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/nexmo-docs.html b/fr/adaptors/packages/nexmo-docs.html index 91df81ca28d..e4d90852bd9 100644 --- a/fr/adaptors/packages/nexmo-docs.html +++ b/fr/adaptors/packages/nexmo-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    nexmo@0.4.3

    sendSMS

    sendSMS(from, toNumber, message) ⇒ Operation Sends an SMS message to a specific phone number

    Kind: global function
    Access: public

    ParamTypeDescription
    fromStringName or number the message should be sent from.
    toNumberStringDestination phone number.
    messageStringText message

    Example

    sendSMS("OpenFn", "phoneNumber", "Hello World!")

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/nexmo-readme.html b/fr/adaptors/packages/nexmo-readme.html index a761659e8ac..ac80c3b9a34 100644 --- a/fr/adaptors/packages/nexmo-readme.html +++ b/fr/adaptors/packages/nexmo-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    sendSMS

    sample expression

    sendSMS('OpenFn', '0123456789', 'HelloWorld!');

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/ocl-changelog.html b/fr/adaptors/packages/ocl-changelog.html index cae4f1eb556..d1610f862d8 100644 --- a/fr/adaptors/packages/ocl-changelog.html +++ b/fr/adaptors/packages/ocl-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.0

    Minor Changes

    • 63232eb: Add get() and getMappings() function

    0.2.6

    Patch Changes

    0.2.5

    Patch Changes

    0.2.4

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.2.3

    Patch Changes

    • f2aed32: add examples

    0.2.2

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    0.2.1

    Patch Changes

    0.2.0

    Minor Changes

    • 5a06d7f: Migrate OCL, update package export

    Patch Changes

    • cb5d0ed: Updated to @openfn/simple-ast v0.4.1
    • 8566b26: Fix typings
    • b3d45ff: Fix CJS export of npm package.
    • ecf5d30: remove sinon since it was not being used
    • Updated dependencies [8566b26]
    • Updated dependencies [b3d45ff]
    • Updated dependencies [b5eb665]
    • Updated dependencies [ecf5d30]
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/ocl-configuration-schema.html b/fr/adaptors/packages/ocl-configuration-schema.html index e2654ac4eaa..7ffa2fe423b 100644 --- a/fr/adaptors/packages/ocl-configuration-schema.html +++ b/fr/adaptors/packages/ocl-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "hostUrl": "https://api.openconceptlab.org/",
    "username": "usernmame",
    "password": "supersecretpassword"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "hostUrl": {
    "title": "Host URL",
    "type": "string",
    "description": "The OCL API URL",
    "default": "https://api.openconceptlab.org/",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://api.openconceptlab.org/"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in to OCL",
    "minLength": 1,
    "examples": [
    "usernmame"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in to OCL",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "supersecretpassword"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "hostUrl",
    "username",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/ocl-docs.html b/fr/adaptors/packages/ocl-docs.html index 1f1e14196a7..9f9e32613ef 100644 --- a/fr/adaptors/packages/ocl-docs.html +++ b/fr/adaptors/packages/ocl-docs.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ Access: public

    ParamTypeDescription
    pathstringPath to resource
    queryobjectA query object that will limit what resources are retrieved when converted into request params.
    callbackfunction(Optional) callback function

    Example

    get(
    "orgs/MSFOCG/collections/lime-demo/HEAD/mappings",
    {
    page: 1,
    exact_match: "off",
    limit: 200,
    verbose: false,
    sortDesc: "_score",
    },
    (state) => {
    // Add state oclMappings
    const oclMappings = state.data;
    return { ...state, data: {}, references: [], response: {}, oclMappings };
    }
    );

    getMappings

    getMappings(ownerId, repositoryId, [options], callback) ⇒ Operation Get a source repository in OCL

    Kind: global function
    Access: public

    ParamTypeDescription
    ownerIdstringAn OCL user or organization
    repositoryIdstringAn OCL collection id or source id
    [options]ObjectOptional. options which can be passed to See more on OCL swagger docs
    callbackfunction(Optional) callback function

    Example

    getMappings(
    "MSFOCG",
    "lime-demo",
    { page: 1, exact_match: "off", verbose: false },
    (state) => {
    // Add state oclMappings
    const oclMappings = state.data;
    return { ...state, data: {}, references: [], response: {}, oclMappings };
    }
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/ocl-readme.html b/fr/adaptors/packages/ocl-readme.html index 3d3a0906b5d..cca26cb31bc 100644 --- a/fr/adaptors/packages/ocl-readme.html +++ b/fr/adaptors/packages/ocl-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Mapping source concepts to destination API

    Recieve form data from source application and convert data element keys to destination application.

    map(  "data": {
    "a": 1,
    "b": 2},
    {users:"haftamuk", sources: "eCHIS-CODES", concepts: "fp_new_at_10_to_14" }
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/openfn-changelog.html b/fr/adaptors/packages/openfn-changelog.html index 8dd02de7dbf..2bb5859f936 100644 --- a/fr/adaptors/packages/openfn-changelog.html +++ b/fr/adaptors/packages/openfn-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.2.6

    Patch Changes

    • 779596f: Use native fetch (undici) in template and add icons in openfn

    1.2.5

    Patch Changes

    1.2.4

    Patch Changes

    1.2.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    1.2.2

    Patch Changes

    • f2aed32: add examples

    1.2.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    1.2.0

    Minor Changes

    • be9d3c6: Migrate OpenFn
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/openfn-configuration-schema.html b/fr/adaptors/packages/openfn-configuration-schema.html index c763091befd..3c90afad72a 100644 --- a/fr/adaptors/packages/openfn-configuration-schema.html +++ b/fr/adaptors/packages/openfn-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "host": "https://www.openfn.org",
    "projectId": "some-id",
    "username": "test@openfn.org",
    "password": "@super(!)Secretpass"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "host": {
    "title": "Host",
    "type": "string",
    "description": "The OpenFn host url",
    "format": "uri",
    "default": "https://www.openfn.org",
    "minLength": 1,
    "examples": [
    "https://www.openfn.org"
    ]
    },
    "projectId": {
    "title": "Project ID",
    "type": "string",
    "description": "Your OpenFn project ID",
    "minLength": 1,
    "examples": [
    "some-id"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in to OpenFn",
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in to OpenFn",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secretpass"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "host",
    "username",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/openfn-docs.html b/fr/adaptors/packages/openfn-docs.html index 17ed5c8590f..48f8993c555 100644 --- a/fr/adaptors/packages/openfn-docs.html +++ b/fr/adaptors/packages/openfn-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    openfn@1.3.8

    request

    request(options, callback) ⇒ Operation Make a POST request

    Kind: global function
    Access: public

    ParamTypeDescription
    optionsobjectBody, Query, Headers and Authentication parameters
    callbackfunction(Optional) Callback function

    Example

    request({method: 'get', path: '/jobs/});

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/openfn-readme.html b/fr/adaptors/packages/openfn-readme.html index c8392e076fc..33df2249a29 100644 --- a/fr/adaptors/packages/openfn-readme.html +++ b/fr/adaptors/packages/openfn-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/openhim-changelog.html b/fr/adaptors/packages/openhim-changelog.html index 553b5e04c8a..1ca31ca331f 100644 --- a/fr/adaptors/packages/openhim-changelog.html +++ b/fr/adaptors/packages/openhim-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.1.4

    Patch Changes

    0.1.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.1.2

    Patch Changes

    • f2aed32: add examples

    0.1.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    0.1.0

    Minor Changes

    • 1fd9b3b: Migrate OpenHIM

    Patch Changes

    • e4ebcb6: Fix Large gzip Denial of Service in superagent
    • e81561f: Updated ast and package.json
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/openhim-configuration-schema.html b/fr/adaptors/packages/openhim-configuration-schema.html index 3c833094acc..9151ae18005 100644 --- a/fr/adaptors/packages/openhim-configuration-schema.html +++ b/fr/adaptors/packages/openhim-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "apiUrl": "http://openhim.com/api",
    "username": "admin@openhim.org",
    "password": "@super(!)Secretpass"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "apiUrl": {
    "title": "API URL",
    "type": "string",
    "description": "The OpenHIM API url",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "http://openhim.com/api"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in to OpenHIM",
    "minLength": 1,
    "examples": [
    "admin@openhim.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in to OpenHIM",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secretpass"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "apiUrl"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/openhim-docs.html b/fr/adaptors/packages/openhim-docs.html index ac66b98a2d1..475ac28b513 100644 --- a/fr/adaptors/packages/openhim-docs.html +++ b/fr/adaptors/packages/openhim-docs.html @@ -22,14 +22,14 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/packages/openhim-readme.html b/fr/adaptors/packages/openhim-readme.html index db0289690ae..0c7c30968af 100644 --- a/fr/adaptors/packages/openhim-readme.html +++ b/fr/adaptors/packages/openhim-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/openmrs-changelog.html b/fr/adaptors/packages/openmrs-changelog.html index aa08d4bb92c..3960e07b33b 100644 --- a/fr/adaptors/packages/openmrs-changelog.html +++ b/fr/adaptors/packages/openmrs-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.1.1

    Patch Changes

    • 2390129: - replace throw new Error with console.log
      • improve Log function

    1.1.0

    Minor Changes

    • d124f67: - Add create, update and upsert function
      • Add callback support and improve examples for
        • get()
        • post()
        • getPatient()
        • searchPerson()
        • getEncounter()
        • searchPatient()
        • createPatient()
        • getEncounters()
        • createEncounter()

    1.0.1

    Patch Changes

    • 97cc7ce: - Fix checking for empty response
      • Style logs output

    1.0.0

    Major Changes

    • b6478c0: - Removed request in favour of superagent
      • Improve error handling
      • Moved login to execute function
      • Added
        • createPatient
        • searchPatient
        • searchPerson
        • getEncounters
        • getEncounter
        • get
        • post

    0.10.5

    Patch Changes

    0.10.4

    Patch Changes

    0.10.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.10.2

    Patch Changes

    • f2aed32: add examples

    0.10.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    0.10.0

    Minor Changes

    • 6786949: Migrate OpenMRS
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/openmrs-configuration-schema.html b/fr/adaptors/packages/openmrs-configuration-schema.html index edc7ea273a7..00631a724c0 100644 --- a/fr/adaptors/packages/openmrs-configuration-schema.html +++ b/fr/adaptors/packages/openmrs-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "instanceUrl": "http://openmrs.com/instance/url",
    "username": "admin@openmrs.org",
    "password": "@super(!)Secretpass"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "instanceUrl": {
    "title": "Instance URL",
    "type": "string",
    "description": "The OpenMRS host url",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "http://openmrs.com/instance/url"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in to OpenMRS",
    "minLength": 1,
    "examples": [
    "admin@openmrs.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in to OpenMRS",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secretpass"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "instanceUrl"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/openmrs-docs.html b/fr/adaptors/packages/openmrs-docs.html index e5bf4d842b1..69e8c45b20f 100644 --- a/fr/adaptors/packages/openmrs-docs.html +++ b/fr/adaptors/packages/openmrs-docs.html @@ -22,7 +22,7 @@ - + @@ -44,7 +44,7 @@ Access: public

    ParamTypeDescription
    resourceTypestringThe type of resource to be updated. E.g. person, patient, etc.
    pathstringThe id or path to the object to be updated. E.g. e739808f-f166-42ae-aaf3-8b3e8fa13fda or e739808f-f166-42ae-aaf3-8b3e8fa13fda/{collection-name}/{object-id}
    dataObjectData to update. It requires to send all required fields or the full body. If you want partial updates, use patch operation.
    [callback]functionOptional callback to handle the response

    Example (a person)

    update("person", '3cad37ad-984d-4c65-a019-3eb120c9c373',{"gender":"M","birthdate":"1997-01-13"})

    upsert

    upsert(resourceType, query, data, [callback]) ⇒ Operation Upsert a record. A generic helper function used to atomically either insert a row, or on the basis of the row already existing, UPDATE that existing row instead.

    Kind: global function
    Throws:

    • RangeError - Throws range error

    Access: public

    ParamTypeDescription
    resourceTypestringThe type of a resource to upsert. E.g. trackedEntityInstances
    queryObjectA query object that allows to uniquely identify the resource to update. If no matches found, then the resource will be created.
    dataObjectThe data to use for update or create depending on the result of the query.
    [callback]functionOptional callback to handle the response

    Example (For an existing patient using upsert)

    upsert('patient', { q: '10007JJ' }, { person: { age: 50 } });

    Example (For non existing patient creating a patient record using upsert )

    upsert(
    "patient",
    { q: "1000EHE" },
    {
    identifiers: [
    {
    identifier: "1000EHE",
    identifierType: "05a29f94-c0ed-11e2-94be-8c13b969e334",
    location: "44c3efb0-2583-4c80-a79e-1f756a03c0a1",
    preferred: true,
    },
    ],
    person: {
    gender: "M",
    age: 42,
    },
    }
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/openmrs-readme.html b/fr/adaptors/packages/openmrs-readme.html index cb95c580077..13e67e9fd20 100644 --- a/fr/adaptors/packages/openmrs-readme.html +++ b/fr/adaptors/packages/openmrs-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Get a patient by some criteria

    // getPatient({ uuid: '516af9aa-0402-4e11-ad79-e394fdec0c91' });
    // getPatient({ uuid: dataValue('patientId')(state) });
    getPatient({
    uuid: state => state.data[0].uuid,
    });

    Example of searching for patients based on their EMR Id

    getPatients(
    {
    identifier: state => state.data.emrId,
    v: 'full',
    },
    {
    exactlyOne: true,
    }
    );

    Create an Encounter

    createEncounter({
    encounterDatetime: dataValue('visit_date'), //dynamically fill with source app data
    patient: dataValue('uuid'),
    encounterType: dataValue('visit_type'),
    location: dataValue('location.uuid'),
    encounterProviders: [
    {
    provider: dataValue('provider_name'),
    encounterRole: '240b26f9-dd88-4172-823d-4a8bfeb7841f', //hardcoded value
    },
    ],
    });

    Make a request to any OpenMRS endpoint

    req({ method: 'GET', url: '/ws/rest/v1/concept' }, state => {
    console.log(JSON.stringify(state, null, 2));
    return state;
    });

    Create new patient

    patient(
    fields(
    field('gender', 'M'),
    field('names', function (state) {
    return [
    {
    patient_id: dataValue('form.patientId')(state),
    creator: dataValue('form.user')(state),
    },
    ];
    })
    )
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/postgresql-changelog.html b/fr/adaptors/packages/postgresql-changelog.html index ffee4078624..2c737a73439 100644 --- a/fr/adaptors/packages/postgresql-changelog.html +++ b/fr/adaptors/packages/postgresql-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    4.0.0

    Major Changes

    • ecd0b53: add optional callback in sql and update response structure

    3.4.6

    Patch Changes

    3.4.5

    Patch Changes

    3.4.4

    Patch Changes

    • f2aed32: add examples

    3.4.3

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    3.4.2

    Patch Changes

    3.4.1

    Patch Changes

    • 8566b26: Fix typings
    • b3d45ff: Fix CJS export of npm package.
    • ecf5d30: remove sinon since it was not being used
    • Updated dependencies [8566b26]
    • Updated dependencies [b3d45ff]
    • Updated dependencies [b5eb665]
    • Updated dependencies [ecf5d30]

    3.4.0

    Minor Changes

    • 44ae341: Migrate postgresql

    Patch Changes

    • e04aa28: Rename credential-schema to configuration-schema, update descriptions
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/postgresql-configuration-schema.html b/fr/adaptors/packages/postgresql-configuration-schema.html index 9fd9cb047a9..7226ee6864c 100644 --- a/fr/adaptors/packages/postgresql-configuration-schema.html +++ b/fr/adaptors/packages/postgresql-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "host": "https://some-host.compute-1.amazonaws.com",
    "port": "5432",
    "database": "demo-db",
    "user": "admin",
    "password": "@super(!)Secretpass",
    "ssl": "true",
    "allowSelfSignedCert": "true"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "host": {
    "title": "Host",
    "type": "string",
    "description": "Postgres instance host URL or IP address",
    "minLength": 1,
    "anyOf": [
    {
    "format": "uri"
    },
    {
    "format": "ipv4"
    }
    ],
    "examples": [
    "https://some-host.compute-1.amazonaws.com",
    "201.220.61.246"
    ]
    },
    "port": {
    "title": "Port",
    "type": "integer",
    "default": 5432,
    "description": "Database instance port",
    "minLength": 1,
    "examples": [
    5432
    ]
    },
    "database": {
    "title": "Database",
    "type": "string",
    "description": "The database name",
    "minLength": 1,
    "examples": [
    "demo-db"
    ]
    },
    "user": {
    "title": "User",
    "type": "string",
    "description": "User name",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secretpass"
    ]
    },
    "ssl": {
    "title": "Use SSL",
    "type": "boolean",
    "examples": [
    true
    ]
    },
    "allowSelfSignedCert": {
    "title": "Allow self-signed certificate",
    "type": "boolean",
    "examples": [
    true
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "host",
    "port",
    "database"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/postgresql-docs.html b/fr/adaptors/packages/postgresql-docs.html index a464ac7849a..03832f6131b 100644 --- a/fr/adaptors/packages/postgresql-docs.html +++ b/fr/adaptors/packages/postgresql-docs.html @@ -22,7 +22,7 @@ - + @@ -48,7 +48,7 @@ Access: public

    ParamTypeDescription
    logicalstringa data to check existing value for.
    tablestringThe target table
    uuidstringThe uuid column to determine a matching/existing record
    recordobjectPayload data for the record as a JS object or function
    [options]objectOptional options argument
    [options.setNull]stringA string value that specifies the behavior for inserting null values.
    [options.writeSql]booleanA boolean value that specifies whether to log the generated SQL statement. Defaults to false.
    [options.execute]booleanA boolean value that specifies whether to execute the generated SQL statement. Defaults to false.
    [options.logValues]booleanA boolean value that specifies whether to log the inserted values to the console. Defaults to false.
    callbackfunction(Optional) callback function

    Example

    upsertIf(
    dataValue('name'),
    'users', // the DB table
    'ON CONSTRAINT users_pkey', // a DB column with a unique constraint OR a CONSTRAINT NAME
    { name: 'Elodie', id: 7 },
    { writeSql:true, execute: true }
    )

    upsertMany

    upsertMany(table, uuid, data, [options], callback) ⇒ Operation Insert or update multiple records using ON CONFLICT UPDATE and excluded

    Kind: global function
    Access: public

    ParamTypeDescription
    tablestringThe target table
    uuidstringThe uuid column to determine a matching/existing record
    dataarrayAn array of objects or a function that returns an array
    [options]objectOptional options argument
    [options.setNull]stringA string value that specifies the behavior for inserting null values.
    [options.writeSql]booleanA boolean value that specifies whether to log the generated SQL statement. Defaults to false.
    [options.execute]booleanA boolean value that specifies whether to execute the generated SQL statement. Defaults to false.
    [options.logValues]booleanA boolean value that specifies whether to log the inserted values to the console. Defaults to false.
    callbackfunction(Optional) callback function

    Example

    upsertMany(
    'users', // the DB table
    'email', // a DB column with a unique constraint OR a CONSTRAINT NAME
    [
    { name: 'one', email: 'one@openfn.org' },
    { name: 'two', email: 'two@openfn.org' },
    ]
    { logValues: true }
    )

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/postgresql-readme.html b/fr/adaptors/packages/postgresql-readme.html index 4b031f2ad0f..d337fe74655 100644 --- a/fr/adaptors/packages/postgresql-readme.html +++ b/fr/adaptors/packages/postgresql-readme.html @@ -22,7 +22,7 @@ - + @@ -39,7 +39,7 @@ columns. The key identity can be use for a column to auto-generate a value.

    insertTable('users', state =>
    state.data.map(column => ({
    name: column.name,
    type: column.type,
    required: true, // optional
    unique: false, // optional - set to true for unique constraint
    }))
    );

    Alter a table in the database

    This function allows to add new columns to a table. Beware of the fact that you cannot add new columns with names that already exist in the table.

    modifyTable(
    'users',
    state =>
    state.data.map(newColumn => ({
    name: newColumn.name,
    type: newColumn.type,
    required: true, // optional
    unique: false, // optional - set to true for unique constraint
    })),
    { writeSql: false, execute: true }
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/primero-changelog.html b/fr/adaptors/packages/primero-changelog.html index bbd8cb13a87..fc45b2a62b2 100644 --- a/fr/adaptors/packages/primero-changelog.html +++ b/fr/adaptors/packages/primero-changelog.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ argument: the metadata from Primero's response.

    getCases will now not only return an array of cases in state.data, but metadata related to pagination in state.metadata.

    Patch Changes

    • 2014694: remove travis url in readme
    • bb764db: Conditionally check for 'withReferrals' in case no options are provided"

    2.9.2

    Patch Changes

    • e04aa28: Rename credential-schema to configuration-schema, update descriptions

    2.9.1

    Patch Changes

    • d4ac748: Skipped failing test until we have a new strat (it's working)

    2.9.0

    Minor Changes

    • b37a4ad: add language primero into monorepo

    Patch Changes

    • adb97a0: Fixed issue where upsertCase always took state.data for main params
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/primero-configuration-schema.html b/fr/adaptors/packages/primero-configuration-schema.html index 8fc85099c61..e8e4dfe0f5d 100644 --- a/fr/adaptors/packages/primero-configuration-schema.html +++ b/fr/adaptors/packages/primero-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "url": "https://primero.org/some-org",
    "user": "admin",
    "password": "@super(!)Superpass",
    "basicAuth": "true"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "url": {
    "title": "URL",
    "type": "string",
    "description": "The Primero host url",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://primero.org/some-org"
    ]
    },
    "user": {
    "title": "User",
    "type": "string",
    "description": "The username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Superpass"
    ]
    },
    "basicAuth": {
    "title": "Use Basic Auth",
    "type": "boolean",
    "examples": [
    true
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "url"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/primero-docs.html b/fr/adaptors/packages/primero-docs.html index fb0331038bf..8c36ab7ae4d 100644 --- a/fr/adaptors/packages/primero-docs.html +++ b/fr/adaptors/packages/primero-docs.html @@ -22,7 +22,7 @@ - + @@ -68,7 +68,7 @@ In this implementation, we first fetch the list of cases, then we check if the case exist before choosing the right operation to do.

    Kind: global function
    Access: public

    ParamTypeDescription
    paramsobjectan object with an externalIds and some case data.
    callbackfunction(Optional) Callback function

    Example (Upsert case for a specific case id)

    upsertCase({
    externalIds: ["case_id"],
    data: state => ({
    age: 20,
    sex: "male",
    name: "Alex",
    status: "open",
    case_id: "6aeaa66a-5a92-4ff5-bf7a-e59cde07eaaz",
    }),
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/primero-readme.html b/fr/adaptors/packages/primero-readme.html index 74604d82088..5777efabd71 100644 --- a/fr/adaptors/packages/primero-readme.html +++ b/fr/adaptors/packages/primero-readme.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ in our Microsoft Dynamics, Github, or Google Sheets adaptors, but we'll need to await final doucmentation for Primero's v2 API before making changes.

    Azure Active Directory B2C

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/progres-changelog.html b/fr/adaptors/packages/progres-changelog.html index ff7a93fabc5..ee33971b322 100644 --- a/fr/adaptors/packages/progres-changelog.html +++ b/fr/adaptors/packages/progres-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.2.5

    Patch Changes

    1.2.4

    Patch Changes

    • ef828e7: update old urls in readme
    • 14f481e: mark execute as private
    • Updated dependencies [2b4c61a]

    1.2.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    1.2.2

    Patch Changes

    • f2aed32: add examples

    1.2.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    1.2.0

    Minor Changes

    • 039ca0b: Migrate Progres

    Patch Changes

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/progres-configuration-schema.html b/fr/adaptors/packages/progres-configuration-schema.html index d767eb94c7e..acf0c88ff52 100644 --- a/fr/adaptors/packages/progres-configuration-schema.html +++ b/fr/adaptors/packages/progres-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "url": "https://endpoint/To/DTP",
    "key": "-----BEGIN PRIVATE KEY-----SOMETYPEOFPRIVATEVALUE-----END PRIVATE KEY-----",
    "cert": "-----BEGIN CERTIFICATE-----SOMETYPEOFVALUE-----END CERTIFICATE-----",
    "token": "[REDACTED]"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "url": {
    "title": "URL",
    "type": "string",
    "description": "The Progres URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://endpoint/To/DTP"
    ]
    },
    "key": {
    "title": "Private Key",
    "type": "string",
    "description": "Your Progres private key",
    "minLength": 1,
    "examples": [
    "-----BEGIN PRIVATE KEY-----SOMETYPEOFPRIVATEVALUE-----END PRIVATE KEY-----"
    ]
    },
    "cert": {
    "title": "Certificate",
    "type": "string",
    "description": "Your Progres certificate",
    "minLength": 1,
    "examples": [
    "-----BEGIN CERTIFICATE-----SOMETYPEOFVALUE-----END CERTIFICATE-----"
    ]
    },
    "token": {
    "title": "Token",
    "type": "string",
    "description": "Your Progres token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "[REDACTED]"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "url",
    "key",
    "cert",
    "token"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/progres-docs.html b/fr/adaptors/packages/progres-docs.html index 134c3a211df..7aa06302a7e 100644 --- a/fr/adaptors/packages/progres-docs.html +++ b/fr/adaptors/packages/progres-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    progres@1.3.8

    postData

    postData(params, callback) ⇒ Operation Make a POST request with a certificate

    Kind: global function
    Access: public

    ParamTypeDescription
    paramsobjectUrl, Headers and Body parameters
    callbackfunction(Optional) A callback function

    Example

    postData({
    url: urlDTP,
    body: obj,
    headers: {
    'Ocp-Apim-Subscription-Key': configuration['Ocp-Apim-Subscription-Key'],
    },
    agentOptions: {
    key,
    cert,
    },
    }, callback)(state)

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/progres-readme.html b/fr/adaptors/packages/progres-readme.html index 33440ad1eae..f0c41560390 100644 --- a/fr/adaptors/packages/progres-readme.html +++ b/fr/adaptors/packages/progres-readme.html @@ -22,7 +22,7 @@ - + @@ -37,7 +37,7 @@ configuration-schema definition.

    Posting data to an endpoint with SSL cert authentication

    postData({
    url: urlDTP,
    body: { a: 1 },
    headers: {
    'Subscription-Key': configuration['token'],
    },
    agentOptions: {
    key,
    cert,
    },
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/rapidpro-changelog.html b/fr/adaptors/packages/rapidpro-changelog.html index ec66c6c2207..5e830795aee 100644 --- a/fr/adaptors/packages/rapidpro-changelog.html +++ b/fr/adaptors/packages/rapidpro-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.5.6

    Patch Changes

    0.5.5

    Patch Changes

    • ef828e7: update old urls in readme
    • 14f481e: mark execute as private
    • Updated dependencies [2b4c61a]

    0.5.4

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.5.3

    Patch Changes

    • f2aed32: add examples

    0.5.2

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    0.5.1

    Patch Changes

    • cbb8968: Fix axios Inefficient Regular Expression Complexity vulnerability

    0.5.0

    Minor Changes

    • 11f83ff: Migrate RapidPro

    Patch Changes

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/rapidpro-configuration-schema.html b/fr/adaptors/packages/rapidpro-configuration-schema.html index 2b7e3e76066..192647d7c23 100644 --- a/fr/adaptors/packages/rapidpro-configuration-schema.html +++ b/fr/adaptors/packages/rapidpro-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "host": "https://app.rapidpro.io/",
    "token": "#Super-sSCrecrete-token",
    "apiVersion": "v2"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "host": {
    "title": "Host",
    "type": "string",
    "default": "https://app.rapidpro.io/",
    "description": "instance host URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://app.rapidpro.io/"
    ]
    },
    "token": {
    "title": "Token",
    "type": "string",
    "description": "instance access token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "#Super-sSCrecrete-token"
    ]
    },
    "apiVersion": {
    "title": "API Version",
    "type": "string",
    "description": "API version to use. Leave this empty to use the default v2",
    "minLength": 1,
    "examples": [
    "v2"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "host",
    "token"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/rapidpro-docs.html b/fr/adaptors/packages/rapidpro-docs.html index a695ee4d9a5..e6a80dcd1cf 100644 --- a/fr/adaptors/packages/rapidpro-docs.html +++ b/fr/adaptors/packages/rapidpro-docs.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ Access: public

    ParamTypeDescription
    paramsobjectdata to create the new resource
    callbackfunction(Optional) callback function

    Example

    startFlow({
    flow: "f5901b62-ba76-4003-9c62-72fdacc1b7b7",
    restart_participants: false,
    contacts: ["a052b00c-15b3-48e6-9771-edbaa277a353"]
    });

    upsertContact

    upsertContact(params, callback) ⇒ Operation Upserts a contact to RapidPro by URN

    Kind: global function
    Access: public

    ParamTypeDescription
    paramsobjectdata to upsert a contact
    callbackfunction(Optional) callback function

    Example

    upsertContact({
    name: "Mamadou",
    language: "ENG",
    urns: ["tel:+250788123123"]
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/rapidpro-readme.html b/fr/adaptors/packages/rapidpro-readme.html index 704e6899e2c..2c3ef36022b 100644 --- a/fr/adaptors/packages/rapidpro-readme.html +++ b/fr/adaptors/packages/rapidpro-readme.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ definition.

    sample job expression using operation

    sendBroadcast({
    "text": "Hello friends.",
    "urns": [],
    "contacts": [],
    "groups", [],
    });

    Key helper functions

    sendBroadcast(...) to send broadcast message to multiple contacts

    sendBroadcast({
    text: 'Hello world',
    urns: ['twitter:sirmixalot'],
    contacts: ['a052b00c-15b3-48e6-9771-edbaa277a353'],
    });

    startFlow(...) to trigger an automation flow in RapidPro

    startFlow({
    flow: 'f5901b62-ba76-4003-9c62-72fdacc1b7b7',
    restart_participants: false,
    contacts: ['a052b00c-15b3-48e6-9771-edbaa277a353'],
    });

    upsertContact(...) to update/insert a Contact (and check if exists using external identifiers)

    upsertContact({
    name: 'Mamadou',
    language: 'ENG',
    urns: ['tel:+250788123123'],
    });

    addContact(...) to insert a Contact

    addContact({
    name: 'Mamadou',
    language: 'ENG',
    urns: ['tel:+250788123123'],
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/resourcemap-changelog.html b/fr/adaptors/packages/resourcemap-changelog.html index 20286d05aeb..3e512e43fbc 100644 --- a/fr/adaptors/packages/resourcemap-changelog.html +++ b/fr/adaptors/packages/resourcemap-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.2.3

    Patch Changes

    0.2.2

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.2.1

    Patch Changes

    • f2aed32: add examples

    0.2.0

    Minor Changes

    • 664dc7f: migrate resourcemap
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/resourcemap-configuration-schema.html b/fr/adaptors/packages/resourcemap-configuration-schema.html index c17a53e6d96..3571d579e31 100644 --- a/fr/adaptors/packages/resourcemap-configuration-schema.html +++ b/fr/adaptors/packages/resourcemap-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "baseUrl": "http://some-site-of-yours.com:8080",
    "username": "admin",
    "password": "@super(!)Secret"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "baseUrl": {
    "title": "Base URL",
    "type": "string",
    "default": "http://some-site-of-yours.com:8080",
    "description": "ResourceMap base URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "http://some-site-of-yours.com:8080"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Your ResourceMap username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Your ResourceMap password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)Secret"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "baseUrl"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/resourcemap-docs.html b/fr/adaptors/packages/resourcemap-docs.html index 1c75bb447c4..6546a16ce18 100644 --- a/fr/adaptors/packages/resourcemap-docs.html +++ b/fr/adaptors/packages/resourcemap-docs.html @@ -22,14 +22,14 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/packages/resourcemap-readme.html b/fr/adaptors/packages/resourcemap-readme.html index badf31fcd06..f1218272454 100644 --- a/fr/adaptors/packages/resourcemap-readme.html +++ b/fr/adaptors/packages/resourcemap-readme.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ configuration-schema definition.

    Expressions

    submitSite(collectionId, fields)

    submitSite(
    303,
    fields(
    field('name', dataValue('sampleText')),
    field('lat', 48.86),
    field('lon', 2.35),
    field('properties', function (state) {
    return {
    Comment: state.data.sampleText,
    phone: '85512345678',
    };
    })
    )
    );

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/salesforce-changelog.html b/fr/adaptors/packages/salesforce-changelog.html index 98af2d40a7c..831a98022b1 100644 --- a/fr/adaptors/packages/salesforce-changelog.html +++ b/fr/adaptors/packages/salesforce-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    3.0.7

    Patch Changes

    • 7cc8efc: remove FakeAdaptor references

    3.0.6

    Patch Changes

    • 705caab: Remove tools as devdependencies

    3.0.5

    Patch Changes

    • 929bca6: Use metadata helper function from common
    • Updated dependencies [929bca6]

    3.0.4

    Patch Changes

    3.0.3

    Patch Changes

    • 06aced8: Fix dependencies

    3.0.2

    Patch Changes

    • aed7e0b: fix required field in configuration schema

    3.0.1

    Patch Changes

    • c09b821: Add @magic annotations

    3.0.0

    Major Changes

    • 190f667: Remove curry from salesforce

    2.12.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    2.12.2

    Patch Changes

    • f2aed32: add examples

    2.12.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    2.12.0

    Minor Changes

    • 5c883c6: Allow expansion for describe(), add describeAll()

    Patch Changes

    2.11.1

    Patch Changes

    • e7bf865: chore(deps): update dependency sinon to v14
    • 8566b26: Fix typings
    • b3d45ff: Fix CJS export of npm package.
    • Updated dependencies [8566b26]
    • Updated dependencies [b3d45ff]
    • Updated dependencies [b5eb665]
    • Updated dependencies [ecf5d30]

    2.11.0

    Minor Changes

    • edff578: Migrate salesforce
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/salesforce-configuration-schema.html b/fr/adaptors/packages/salesforce-configuration-schema.html index e3f49324377..23ad7201e7a 100644 --- a/fr/adaptors/packages/salesforce-configuration-schema.html +++ b/fr/adaptors/packages/salesforce-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "loginUrl": "https://somesalesforcelogin.url",
    "username": "someusername",
    "password": "@super(!)SecretPass",
    "securityToken": "salesforcesecuritytoken",
    "apiVersion": "59.0"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "loginUrl": {
    "title": "Login URL",
    "type": "string",
    "description": "The Salesforce instance login URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://somesalesforcelogin.url"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "The username to log in the Salesforce instance",
    "minLength": 1,
    "examples": [
    "someusername"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "The password to log in the Salesforce instance",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@super(!)SecretPass"
    ]
    },
    "securityToken": {
    "title": "Security Token",
    "type": "string",
    "description": "The security token to access the Salesforce instance",
    "minLength": 1,
    "examples": [
    "salesforcesecuritytoken"
    ]
    },
    "apiVersion": {
    "title": "API Version",
    "type": "string",
    "pattern": "^[0-9]{2}\\.[0-9]$",
    "placeholder": "52.0",
    "description": "Salesforce API Version",
    "minLength": 1,
    "examples": [
    "59.0"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "loginUrl",
    "username",
    "password",
    "securityToken"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/salesforce-docs.html b/fr/adaptors/packages/salesforce-docs.html index 4e0ebd12633..041707a54ca 100644 --- a/fr/adaptors/packages/salesforce-docs.html +++ b/fr/adaptors/packages/salesforce-docs.html @@ -22,7 +22,7 @@ - + @@ -71,7 +71,7 @@ Magic: attrs - $.children[?(@.name=="{{args.sObject}}")].children[?(!@.meta.externalId)]

    ParamTypeDescription
    sObjectStringAPI name of the sObject.
    externalIdStringID.
    attrsObjectField attributes for the new object.

    Example

    upsert('obj_name', 'ext_id', {
    attr1: "foo",
    attr2: "bar"
    })

    upsertIf

    upsertIf(logical, sObject, externalId, attrs) ⇒ Operation Upsert if conditions are met.

    Kind: global function
    Access: public

    ParamTypeDescription
    logicalbooleana logical statement that will be evaluated.
    sObjectStringAPI name of the sObject.
    externalIdStringID.
    attrsObjectField attributes for the new object.

    Example

    upsertIf(true, 'obj_name', 'ext_id', {
    attr1: "foo",
    attr2: "bar"
    })

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/salesforce-readme.html b/fr/adaptors/packages/salesforce-readme.html index 5b9f13ebc80..ed4a9554fda 100644 --- a/fr/adaptors/packages/salesforce-readme.html +++ b/fr/adaptors/packages/salesforce-readme.html @@ -22,7 +22,7 @@ - + @@ -38,8 +38,8 @@ needed to be performed.

    An uncompiled expression has no knowledge of the internals of the adaptor, credentials or runtime environment.

    It's the responsibility of the build process to provide a wrapper that will inject the functions in.

    For example:

    describe('vera__Test_Event__c'),
    create('vera__Test_Event__c', {
    vera__Test_Event_Name_Unique__c: 'hello from jsforce',
    }),
    create('vera__Boat__c', {
    Name: 'Catatafish redux!',
    vera__Test_Event__c: reference(0),
    });

    Development

    Clone the adaptors monorepo. Follow the -Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    ## Other

    Create SOAP session

    curl https://test.salesforce.com/services/Soap/u/47.0 -H "Content-Type: text/xml; charset=UTF-8" -H "SOAPAction: login" -d @tmp/login.txt | xmllint --format -

    Close jobs

    curl
    https://openfn.my.salesforce.com/services/async/47.0/job/some_id -H 'X-SFDC-Session: abc123sessionID456xyz' -H "Content-Type: application/xml; charset=UTF-8" -d @tmp/close_job.txt | xmllint --format -
    - +Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    ## Other

    Create SOAP session

    curl https://test.salesforce.com/services/Soap/u/47.0 -H "Content-Type: text/xml; charset=UTF-8" -H "SOAPAction: login" -d @tmp/login.txt | xmllint --format -

    Close jobs

    curl
    https://openfn.my.salesforce.com/services/async/47.0/job/some_id -H 'X-SFDC-Session: abc123sessionID456xyz' -H "Content-Type: application/xml; charset=UTF-8" -d @tmp/close_job.txt | xmllint --format -
    + \ No newline at end of file diff --git a/fr/adaptors/packages/sftp-changelog.html b/fr/adaptors/packages/sftp-changelog.html index 541eaea8074..da180c1c98d 100644 --- a/fr/adaptors/packages/sftp-changelog.html +++ b/fr/adaptors/packages/sftp-changelog.html @@ -3,7 +3,7 @@ -sftp changelog | OpenFn/docs +sftp changelog | OpenFn/docs @@ -22,17 +22,17 @@ - +
    -

    Changelog for the sftp adaptor

    @openfn/language-sftp

    1.0.1

    Patch Changes

    • 771c814: - Properly disconnect on error
      • Improve operation logs

    1.0.0

    Major Changes

    • e52ba66: add filter option in list() function

    0.8.8

    Patch Changes

    0.8.7

    Patch Changes

    0.8.6

    Patch Changes

    0.8.5

    Patch Changes

    0.8.4

    Patch Changes

    0.8.3

    Patch Changes

    0.8.2

    Patch Changes

    • d2c980e: Use parseCsv from language-common
    • c5d3ce1: improve connection handling
    • Updated dependencies [111807f]

    0.8.1

    Patch Changes

    0.8.0

    Minor Changes

    - +be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.7.3

    Patch Changes

    • 432dd0a: fix sftp connection wqautoclose

    0.7.2

    Patch Changes

    • 205b806: remove asObjects key before parsing

    0.7.1

    Patch Changes

    • 827c627: error handling

    0.7.0

    Minor Changes

    • fa58216: Add csvtojson convertion option

    0.6.9

    Patch Changes

    0.6.8

    Patch Changes

    0.6.7

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.6.6

    Patch Changes

    • f2aed32: add examples

    0.6.5

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    0.6.4

    Patch Changes

    0.6.3

    Patch Changes

    • 8566b26: Fix typings
    • b3d45ff: Fix CJS export of npm package.
    • 4126a62: Fix built bundle
    • ecf5d30: remove sinon since it was not being used
    • Updated dependencies [8566b26]
    • Updated dependencies [b3d45ff]
    • Updated dependencies [b5eb665]
    • Updated dependencies [ecf5d30]

    0.6.2

    Patch Changes

    • e04aa28: Rename credential-schema to configuration-schema, update descriptions

    0.6.1

    Patch Changes

    • 28dfbfa: add todo, fix build pack

    0.6.0

    Minor Changes

    • f294a62: Added credential-schema.json for new ui

    0.5.0

    Minor Changes

    • 2c04894: added sftp package
    + \ No newline at end of file diff --git a/fr/adaptors/packages/sftp-configuration-schema.html b/fr/adaptors/packages/sftp-configuration-schema.html index 01b5cbd6d7b..e6d038f916c 100644 --- a/fr/adaptors/packages/sftp-configuration-schema.html +++ b/fr/adaptors/packages/sftp-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -32,8 +32,8 @@ using the CLI, you can set up your own state.configuration by using the sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "host": "191.173.128.88",
    "port": "22",
    "username": "admin",
    "password": "@some(!)Strongpassword"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and -notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "host": {
    "title": "Host URL",
    "type": "string",
    "description": "The SFTP server host url or ip address",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "191.173.128.88"
    ]
    },
    "port": {
    "title": "Port",
    "type": "integer",
    "default": 21,
    "description": "The SFTP server port",
    "minLength": 1,
    "examples": [
    22
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)Strongpassword"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "host"
    ]
    }
    - +notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "host": {
    "title": "Host URL",
    "type": "string",
    "description": "The SFTP server host url or ip address",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "191.173.128.88"
    ]
    },
    "port": {
    "title": "Port",
    "type": "integer",
    "default": 21,
    "description": "The SFTP server port",
    "minLength": 1,
    "examples": [
    22
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Username",
    "minLength": 1,
    "examples": [
    "admin"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)Strongpassword"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "host"
    ]
    }
    + \ No newline at end of file diff --git a/fr/adaptors/packages/sftp-docs.html b/fr/adaptors/packages/sftp-docs.html index c38573fdddb..eccf77fcefc 100644 --- a/fr/adaptors/packages/sftp-docs.html +++ b/fr/adaptors/packages/sftp-docs.html @@ -3,7 +3,7 @@ -sftp@1.0.1 | OpenFn/docs +sftp@1.0.2 | OpenFn/docs @@ -22,12 +22,12 @@ - +
    -

    sftp@1.0.1

    Functions

    getCSV(filePath, [parsingOptions])
    getJSON(filePath, encoding)
    list(dirPath, filter, [callback])
    normalizeCSVarray(options, callback)
    putCSV(localFilePath, remoteFilePath, parsingOptions)

    getCSV

    getCSV(filePath, [parsingOptions]) ⇒ Operation +

    sftp@1.0.2

    Functions

    getCSV(filePath, [parsingOptions])
    getJSON(filePath, encoding)
    list(dirPath, filter, [callback])
    normalizeCSVarray(options, callback)
    putCSV(localFilePath, remoteFilePath, parsingOptions)

    getCSV

    getCSV(filePath, [parsingOptions]) ⇒ Operation Get a CSV and return a JSON array of strings for each item separated by the delimiter

    Kind: global function
    Access: public

    ParamTypeDescription
    filePathstringPath to resource
    [parsingOptions]ObjectOptional. parsingOptions Parsing options which can be passed to convert csv to json See more on csvtojson docs

    Example

    getCSV(
    '/some/path/to_file.csv',
    {delimiter: ";", flatKeys: true }
    );

    getJSON

    getJSON(filePath, encoding) ⇒ Operation Fetch a json file from an FTP server

    Kind: global function
    @@ -38,7 +38,7 @@ Access: public

    ParamTypeDescription
    optionsoptionsOptions passed to csvtojson parser
    callbackcallbackOptions passed to csvtojson parser

    Example

    normalizeCSVarray({ delimiter: ';', noheader: true });

    putCSV

    putCSV(localFilePath, remoteFilePath, parsingOptions) ⇒ Operation Convert JSON to CSV and upload to an FTP server

    Kind: global function
    Access: public

    ParamTypeDescription
    localFilePathstringData source for data to copy to the remote server.
    remoteFilePathstringPath to the remote file to be created on the server.
    parsingOptionsobjectOptions which can be passed to adjust the read and write stream used in sending the data to the remote server

    Example

    putCSV(
    '/some/path/to_local_file.csv',
    '/some/path/to_remove_file.csv',
    { delimiter: ';', noheader: true }
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/sftp-readme.html b/fr/adaptors/packages/sftp-readme.html index 3701226bc56..be37125a1c3 100644 --- a/fr/adaptors/packages/sftp-readme.html +++ b/fr/adaptors/packages/sftp-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ definition.

    List the content of a directory

    alterState(state => {
    return list('/path/To/Directory')(state).then(response => {
    console.log(`There are ${response.data.length} files.`);
    return response;
    });
    });

    sample getCSV expression

    getCSV('path/to/file.csv', 'utf8', {
    quote: 'off',
    delimiter: ';',
    noheader: true,
    filter: {
    type: 'startsWith',
    key: 'field1',
    value: 'JO',
    },
    });

    A more complex example that breaks up the CSV file into multiple payloads for quicker processing.

    fn(state => {
    return list('/')(state).then(state => {
    const targetNames = [
    'exportContacts', //example fileName
    ];
    console.log(`Fetching files: ${targetNames}`);
    const files = state.data
    .filter(file => file.name.split('.')[1] === 'csv')
    .filter(file =>
    targetNames.some(targetName =>
    file.name.toLowerCase().includes(targetName)
    )
    );

    if (files.length === 0) console.log('No new CSV files found.');
    return { ...state, data: {}, files };
    });
    });

    each(
    '$.files[*]',
    fn(state => {
    const { configuration, data } = state;

    return getCSV(`/${data.name}`)(state).then(async state => {
    const headers = state.data
    .shift()
    .split(';')
    .map(h => (h = h.replace(/"/g, '')));

    function toObject(item) {
    const values = item.split(';');

    return Object.fromEntries(
    headers.map((k, i) => {
    return values[i]
    ? [k, values[i].replace(/"/g, '')]
    : [k, values[i]];
    })
    );
    }

    let countInbox = 0;

    //to post CSV data as individual Messages to OpenFn Inbox
    const postToInbox = async data => {
    countInbox++;

    console.log(`Sending request ${countInbox} to inbox`);

    await new Promise(resolve => setTimeout(resolve, 200));

    await http.post({
    url: configuration.openfnInboxUrl,
    data: data,
    maxContentLength: Infinity,
    maxBodyLength: Infinity,
    })(state);
    };

    //To split up into multiple, smaller payloads before send to OpenFn Inbox
    const chunkSize = 500;

    console.log(
    state.data.length,
    'rows will be sent in',
    Math.ceil(state.data.length / chunkSize),
    'requests of',
    chunkSize,
    'rows each.'
    );

    while (state.data.length > 0) {
    console.log('data.length', state.data.length);
    await postToInbox({
    fileName: data.name,
    fileType: data.name.split('-')[0],
    uploadDate: new Date(data.modifyTime).toISOString(),
    json: state.data.splice(0, chunkSize).map(toObject),
    });
    }

    return { configuration, references: [], data: {} };
    });
    })
    );

    sample putCSV expression

    This function converts JSON to CSV and post to a server

    putCSV('/some/path/to_file.csv', 'utf8', { delimiter: ';', noheader: true });

    Get JSON from FTP server

    getJSON('path/to/file.json', 'utf8');

    Custom request to an http endpoint

    This adaptor exports http from language-common. Here, we outline the usage in order to make custom requests to an endpoint. It returns a promise

    alterState(state => {
    return http
    .post({ url: 'yourURL', data: { name: 'Mamadou' } })(state)
    .then(response => {
    // do something with response;
    return response;
    });
    });

    Development

    Clone the repo, run pnpm install.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To build the docs for this repo, pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/smpp-changelog.html b/fr/adaptors/packages/smpp-changelog.html index 4d9c3df871c..c62aaed8cf6 100644 --- a/fr/adaptors/packages/smpp-changelog.html +++ b/fr/adaptors/packages/smpp-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.2.3

    Patch Changes

    1.2.2

    Patch Changes

    • f7ebd3c: remove sample configuration

    1.2.1

    Patch Changes

    • f2aed32: add examples

    1.2.0

    Minor Changes

    • 3aedd05: migrate smpp
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/smpp-configuration-schema.html b/fr/adaptors/packages/smpp-configuration-schema.html index 85c52ada902..9d7421a8a0a 100644 --- a/fr/adaptors/packages/smpp-configuration-schema.html +++ b/fr/adaptors/packages/smpp-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "clientHost": "https://some-smpp.com:3000",
    "systemId": "some_smpp_client_name",
    "inboxId": "1c908151-8273-431c-b1d4-blah",
    "password": "@some(!)StrongPassword"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "clientHost": {
    "title": "Client host",
    "type": "string",
    "description": "Your SMPP client host URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://some-smpp.com:3000"
    ]
    },
    "systemId": {
    "title": "System ID",
    "type": "string",
    "description": "Your SMPP client name",
    "minLength": 1,
    "examples": [
    "some_smpp_client_name"
    ]
    },
    "inboxId": {
    "title": "Inbox ID",
    "type": "string",
    "description": "Your SMPP client inbox ID",
    "minLength": 1,
    "examples": [
    "1c908151-8273-431c-b1d4-blah"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Your SMPP client password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(!)StrongPassword"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "clientHost",
    "systemId",
    "inboxId",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/smpp-docs.html b/fr/adaptors/packages/smpp-docs.html index ff228aace7b..ffd9f7c7971 100644 --- a/fr/adaptors/packages/smpp-docs.html +++ b/fr/adaptors/packages/smpp-docs.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/packages/smpp-readme.html b/fr/adaptors/packages/smpp-readme.html index 7d9f700d18d..aa09c86fc05 100644 --- a/fr/adaptors/packages/smpp-readme.html +++ b/fr/adaptors/packages/smpp-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    sample send expression

    send({
    text: dataValue('text'),
    smsId: dataValue('messageId'),
    recipient: dataValue('to'),
    sender: dataValue('from'),
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/surveycto-changelog.html b/fr/adaptors/packages/surveycto-changelog.html index 6315a5eaf50..e1b34dc28ca 100644 --- a/fr/adaptors/packages/surveycto-changelog.html +++ b/fr/adaptors/packages/surveycto-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.1.4

    Patch Changes

    1.1.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    1.1.2

    Patch Changes

    • f2aed32: add examples

    1.1.1

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    1.1.0

    Minor Changes

    • 776bb13: migrate surveycto

    Patch Changes

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/surveycto-configuration-schema.html b/fr/adaptors/packages/surveycto-configuration-schema.html index d42cbf7d742..dfe0534f9ee 100644 --- a/fr/adaptors/packages/surveycto-configuration-schema.html +++ b/fr/adaptors/packages/surveycto-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "instanceName": "openfn_test",
    "username": "someusername",
    "password": "@some(%)!Password"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "instanceName": {
    "title": "Instance name",
    "type": "string",
    "description": "Your Surveycto instance name",
    "minLength": 1,
    "examples": [
    "openfn_test"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Your Surveycto instance username",
    "minLength": 1,
    "examples": [
    "someusername"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Your Surveycto instance password",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some(%)!Password"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "instanceName",
    "username",
    "password"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/surveycto-docs.html b/fr/adaptors/packages/surveycto-docs.html index 878e5ec5f28..bc0fe00158f 100644 --- a/fr/adaptors/packages/surveycto-docs.html +++ b/fr/adaptors/packages/surveycto-docs.html @@ -22,14 +22,14 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/packages/surveycto-readme.html b/fr/adaptors/packages/surveycto-readme.html index 38e309b9cf7..bca6e04bf66 100644 --- a/fr/adaptors/packages/surveycto-readme.html +++ b/fr/adaptors/packages/surveycto-readme.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ the job, subsequent runs will only fetch NEW submissions.

  • the postUrl is where the wide-format JSON representation of each form submission should be sent. Note that a formId key will be added to each form submission for later filtering/routing.

  • sample fetchSubmissions expression

    fetchSubmissions(
    // formId on SurveyCTO server
    'household_survey',
    // initialAfterDate: this will only be accessed if "lastSubmissionDate" is empty in your job_state".
    // After the initial run of the job, OpenFn will only pull new submissions from SurveyCTO.
    'Aug 29, 2016 4:44:26 PM',
    // postUrl is where you want to send the JSON submissions, appended with a new "formId" key
    'https://www.openfn.org/inbox/secret-inbox-uuid'
    );

    Development

    Clone the repo, run npm install.

    Run tests using npm run test or npm run test:watch

    Build the project using make.

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/telerivet-changelog.html b/fr/adaptors/packages/telerivet-changelog.html index c4c0658ae90..b81f8aaac04 100644 --- a/fr/adaptors/packages/telerivet-changelog.html +++ b/fr/adaptors/packages/telerivet-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.1.4

    Patch Changes

    0.1.3

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.1.2

    Patch Changes

    • f2aed32: add examples

    0.1.1

    Patch Changes

    • e4ebcb6: Fix Large gzip Denial of Service in superagent

    0.1.0

    Minor Changes

    • 83ede44: migrate telerivet

    Patch Changes

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/telerivet-configuration-schema.html b/fr/adaptors/packages/telerivet-configuration-schema.html index d359cbc068c..91e94aa0be8 100644 --- a/fr/adaptors/packages/telerivet-configuration-schema.html +++ b/fr/adaptors/packages/telerivet-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "projectId": "telerivet_project_id",
    "apiKey": "telerivet_api_key"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "projectId": {
    "title": "Project ID",
    "type": "string",
    "description": "Your Telerivet project id",
    "minLength": 1,
    "examples": [
    "telerivet_project_id"
    ]
    },
    "apiKey": {
    "title": "API Key",
    "type": "string",
    "description": "Your Telerivet API Key",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "telerivet_api_key"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "projectId",
    "apiKey"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/telerivet-docs.html b/fr/adaptors/packages/telerivet-docs.html index e7ebf19dada..91adce9319c 100644 --- a/fr/adaptors/packages/telerivet-docs.html +++ b/fr/adaptors/packages/telerivet-docs.html @@ -22,14 +22,14 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/packages/telerivet-readme.html b/fr/adaptors/packages/telerivet-readme.html index c1c22ca926f..097693561ca 100644 --- a/fr/adaptors/packages/telerivet-readme.html +++ b/fr/adaptors/packages/telerivet-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    Send message

    Current send expression:

    send(
    fields(
    field('to_number', dataValue('recipient_number')),
    field('content', dataValue('recipient_text')),
    // Lots of optional parameters...
    field('message_type', 'sms'),
    field('route_id', dataValue('some_route'))
    )
    );

    sendBulk messages - WIP

    Current sendBulk expression:

    send(fields(
    field("content", dataValue("recipient_text")),
    field("to_numbers", [
    "+14155550123",
    "+14255550234",
    "+16505550345"
    ]
    // Lots of optional parameters...
    field("message_type", "sms"),
    field("route_id", dataValue("some_route"))
    ))

    Note that "recipient_text" may be a concatenation like this:

    field('content', function (state) {
    return dataValue('salutation')(state).concat(
    '. ',
    dataValue('last_name')(state),
    ', )'
    );
    });

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/template-changelog.html b/fr/adaptors/packages/template-changelog.html index 48c838a7487..c512472057d 100644 --- a/fr/adaptors/packages/template-changelog.html +++ b/fr/adaptors/packages/template-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    2.0.0

    Major Changes

    • 779596f: Use native fetch (undici) in template and add icons in openfn

    Minor Changes

    • 1af9cd5: Better docs and resource names

    1.7.8

    Patch Changes

    1.7.7

    Patch Changes

    • f7ebd3c: remove sample configuration

    1.7.6

    Patch Changes

    • f2aed32: add examples

    1.7.5

    Patch Changes

    • 6d8de03: change @constructor to @function and remove /* @module Adaptor /

    1.7.4

    Patch Changes

    1.7.3

    Patch Changes

    • 8566b26: Fix typings
    • b3d45ff: Fix CJS export of npm package.
    • b5eb665: Adjusted docs for common and built to markdown
    • ecf5d30: remove sinon since it was not being used
    • Updated dependencies [8566b26]
    • Updated dependencies [b3d45ff]
    • Updated dependencies [b5eb665]
    • Updated dependencies [ecf5d30]

    1.7.2

    Patch Changes

    • f4b3dd6: remove travis build url

    1.7.1

    Patch Changes

    • Fixed package.json for template adaptor

    1.7.0

    Minor Changes

    • 554e905: Migrated to monorepo
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/template-configuration-schema.html b/fr/adaptors/packages/template-configuration-schema.html index 5b89c8148bb..d86b342a871 100644 --- a/fr/adaptors/packages/template-configuration-schema.html +++ b/fr/adaptors/packages/template-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "baseUrl": "https://example.com",
    "username": "test@openfn.org",
    "password": "@some(!)Str0ngp4ss0w0rd"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "baseUrl": {
    "title": "Base URL",
    "anyOf": [
    {
    "type": "string"
    },
    {
    "type": "null"
    }
    ],
    "description": "The base URL (http://www.example.com)",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://example.com"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "Username",
    "examples": [
    "test@openfn.org"
    ]
    },
    "password": {
    "title": "Password",
    "type": "string",
    "description": "Password",
    "writeOnly": true,
    "examples": [
    "@some(!)Str0ngp4ss0w0rd"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "password",
    "username"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/template-docs.html b/fr/adaptors/packages/template-docs.html index 8f00dadceae..4ff321de599 100644 --- a/fr/adaptors/packages/template-docs.html +++ b/fr/adaptors/packages/template-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    template@3.0.1

    create

    create(resource, data, callback) ⇒ Operation Create some resource in some system

    Kind: global function
    Access: public

    ParamTypeDescription
    resourcestringThe type of entity that will be created
    dataobjectThe data to create the new resource
    callbackfunctionAn optional callback function

    Example

    create("patient", {"name": "Bukayo"})

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/template-readme.html b/fr/adaptors/packages/template-readme.html index 7513c6bbd31..88b9a01ee17 100644 --- a/fr/adaptors/packages/template-readme.html +++ b/fr/adaptors/packages/template-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema for required and optional configuration properties.

    A example expression using the create function

    create('patient', { name: 'Bukayo' });

    Development

    Clone the adaptors monorepo. Follow the "Getting Started" guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To build only the docs run pnpm build docs.

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/twilio-changelog.html b/fr/adaptors/packages/twilio-changelog.html index 9f481d43d9a..81fb9c46cf9 100644 --- a/fr/adaptors/packages/twilio-changelog.html +++ b/fr/adaptors/packages/twilio-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.3.4

    Patch Changes

    • a22daa6: rename credential-schema to configuration-schemawq

    0.3.3

    Patch Changes

    0.3.2

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.3.1

    Patch Changes

    • f2aed32: add examples

    0.3.0

    Minor Changes

    • a36a072: ymigrated twilio to monorepo

    Patch Changes

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/twilio-configuration-schema.html b/fr/adaptors/packages/twilio-configuration-schema.html index db10a46c0fb..c0627db2763 100644 --- a/fr/adaptors/packages/twilio-configuration-schema.html +++ b/fr/adaptors/packages/twilio-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "accountSid": "account_id",
    "authToken": "evenMoreSecret"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "accountSid": {
    "title": "Account ID",
    "type": "string",
    "description": "Your Twilio account id",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "account_id"
    ]
    },
    "authToken": {
    "title": "Auth Token",
    "type": "string",
    "description": "Your Twilio auth token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "evenMoreSecret"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "accountSid",
    "authToken"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/twilio-docs.html b/fr/adaptors/packages/twilio-docs.html index c59853b8df3..446732e1860 100644 --- a/fr/adaptors/packages/twilio-docs.html +++ b/fr/adaptors/packages/twilio-docs.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    twilio@0.4.1

    sendSMS

    sendSMS(params) ⇒ Operation Sends an SMS message to a specific phone number

    Kind: global function
    Access: public

    ParamTypeDescription
    paramsObjectan object containing 'body', 'from', and 'to' keys.

    Example

    sendSMS({
    body: dataValue('sampleText'),
    from: dataValue('myFromNumber'),
    to: dataValue('ukMobile'),
    });

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/twilio-readme.html b/fr/adaptors/packages/twilio-readme.html index a8a8e5f5930..94584ff9f70 100644 --- a/fr/adaptors/packages/twilio-readme.html +++ b/fr/adaptors/packages/twilio-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    sendSMS

    sample expression, sending an sms

    sendSMS({
    body: dataValue('text'),
    from: '+15005550006',
    to: dataValue('recipient'),
    });

    local usage

    ~/devtools/core/bin/core execute \
    -l ~/devtools/adaptors/language-twilio \
    -s ./tmp/state.json \
    -o ./tmp/output.json \
    -e ./tmp/expression.js

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/vtiger-changelog.html b/fr/adaptors/packages/vtiger-changelog.html index 8417dc9d895..7b772cce7a2 100644 --- a/fr/adaptors/packages/vtiger-changelog.html +++ b/fr/adaptors/packages/vtiger-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    1.1.3

    Patch Changes

    1.1.2

    Patch Changes

    • f7ebd3c: remove sample configuration

    1.1.1

    Patch Changes

    • f2aed32: add examples

    1.1.0

    Minor Changes

    • b4a13ff: migrate vtiger
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/vtiger-configuration-schema.html b/fr/adaptors/packages/vtiger-configuration-schema.html index beb55277a00..e640a0b5891 100644 --- a/fr/adaptors/packages/vtiger-configuration-schema.html +++ b/fr/adaptors/packages/vtiger-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "hostUrl": "https://openfunction.od2.vtiger.com",
    "username": "test@openfn.org",
    "accessToken": "@some()!veryHugeToke"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "hostUrl": {
    "title": "Host URL",
    "type": "string",
    "description": "VTiger instance host URL",
    "format": "uri",
    "minLength": 1,
    "examples": [
    "https://openfunction.od2.vtiger.com"
    ]
    },
    "username": {
    "title": "Username",
    "type": "string",
    "description": "VTiger instance username",
    "minLength": 1,
    "examples": [
    "test@openfn.org"
    ]
    },
    "accessToken": {
    "title": "Access Token",
    "type": "string",
    "description": "VTiger instance access token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "@some()!veryHugeToke"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "hostUrl",
    "username",
    "accessToken"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/vtiger-docs.html b/fr/adaptors/packages/vtiger-docs.html index 73433ab40d6..38e62350814 100644 --- a/fr/adaptors/packages/vtiger-docs.html +++ b/fr/adaptors/packages/vtiger-docs.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/adaptors/packages/vtiger-readme.html b/fr/adaptors/packages/vtiger-readme.html index 746a300cfe6..9e383bba1b6 100644 --- a/fr/adaptors/packages/vtiger-readme.html +++ b/fr/adaptors/packages/vtiger-readme.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ configuration-schema definition.

    sample listTypes expression

    listTypes();

    sample postElement expression

    postElement({
    operation: "create"
    elementType: "leads",
    element: {
    "name": dataValue("name")(state),
    "surname": dataValue("surname")(state),
    "email": dataValue("email")(state)
    }
    });


    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/zoho-changelog.html b/fr/adaptors/packages/zoho-changelog.html index 1bb6e76a619..1bd87ea8b20 100644 --- a/fr/adaptors/packages/zoho-changelog.html +++ b/fr/adaptors/packages/zoho-changelog.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ expected inside each blocks. Users were previously wrapping these functions inside their own custom fn blocks, and this change will ensure that they can be used inside a standard each.

    See https://github.com/OpenFn/adaptors/issues/275 for more details.

    Patch Changes

    0.2.3

    Patch Changes

    0.2.2

    Patch Changes

    • f7ebd3c: remove sample configuration

    0.2.1

    Patch Changes

    • f2aed32: add examples

    0.2.0

    Minor Changes

    • f9ac74a: migrate zoho

    Patch Changes

    • e4ebcb6: Fix Large gzip Denial of Service in superagent
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/zoho-configuration-schema.html b/fr/adaptors/packages/zoho-configuration-schema.html index 4eca203b038..c7561f5e3be 100644 --- a/fr/adaptors/packages/zoho-configuration-schema.html +++ b/fr/adaptors/packages/zoho-configuration-schema.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ sample below.

    Sample Configuration

    Paste this into the configuration key of your state.json file and modify the values to run jobs locally.

    {
    "account": "yourzohoaccount",
    "authToken": "secreauthtoken",
    "apiVersion": "v2"
    }

    Full Schema

    The full configuration schema describes each attribute of the credential and notes those that are required.

    {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
    "account": {
    "title": "Account",
    "type": "string",
    "description": "Your Zoho account",
    "minLength": 1,
    "examples": [
    "yourzohoaccount"
    ]
    },
    "authToken": {
    "title": "Auth Token",
    "type": "string",
    "description": "Your Zoho authentication token",
    "writeOnly": true,
    "minLength": 1,
    "examples": [
    "secreauthtoken"
    ]
    },
    "apiVersion": {
    "title": "API Version",
    "type": "string",
    "default": "v2",
    "enum": [
    "v1",
    "v2"
    ],
    "description": "Zoho API version",
    "minLength": 1,
    "examples": [
    "v2",
    "v1"
    ]
    }
    },
    "type": "object",
    "additionalProperties": true,
    "required": [
    "account",
    "authToken",
    "apiVersion"
    ]
    }
    - + \ No newline at end of file diff --git a/fr/adaptors/packages/zoho-docs.html b/fr/adaptors/packages/zoho-docs.html index 1a19857b37b..97a4691150a 100644 --- a/fr/adaptors/packages/zoho-docs.html +++ b/fr/adaptors/packages/zoho-docs.html @@ -22,14 +22,14 @@ - +

    zoho@0.3.1

    addRow

    addRow(db, table, rowData) ⇒ Operation To add a row data to a database table

    Kind: global function

    ParamTypeDescription
    dbstringDatabase
    tablestringDatabase table
    rowDataobjectrow data to be added into the database

    Example

    addRow(
    'testing_openfn',
    'Customers',
    fields(field('Subject', dataValue('formId')), field('Status', 'Closed'))
    );

    - + \ No newline at end of file diff --git a/fr/adaptors/packages/zoho-readme.html b/fr/adaptors/packages/zoho-readme.html index 1fa1ad92408..43669d29c33 100644 --- a/fr/adaptors/packages/zoho-readme.html +++ b/fr/adaptors/packages/zoho-readme.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ following addRow function.

    addRow(
    'testing_openfn',
    'Customers',
    fields(field('Subject', dataValue('formId')), field('Status', 'Closed'))
    );

    updateRow

    Coming soon. Want to help? https://zohoreportsapi.wiki.zoho.com/Updating-Data.html

    Development

    Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

    Run tests using pnpm run test or pnpm run test:watch

    Build the project using pnpm build.

    To just build the docs run pnpm build docs

    - + \ No newline at end of file diff --git a/fr/adaptors/postgresql.html b/fr/adaptors/postgresql.html index de7e4b7c7ee..7dfd4054eff 100644 --- a/fr/adaptors/postgresql.html +++ b/fr/adaptors/postgresql.html @@ -22,7 +22,7 @@ - + @@ -57,7 +57,7 @@ PostgreSQL adaptor.

    Implementation Examples

    1. Wildlife Conservation Society Kobo < > Database: https://github.com/OpenFn/consosci
    2. Cambodia Primero < > ONA Database: https://github.com/OpenFn/primero-ona-dashboard
    - + \ No newline at end of file diff --git a/fr/adaptors/powerbi.html b/fr/adaptors/powerbi.html index 844491c1a1f..7182dedcbcc 100644 --- a/fr/adaptors/powerbi.html +++ b/fr/adaptors/powerbi.html @@ -22,7 +22,7 @@ - + @@ -40,7 +40,7 @@ structured database from it using MySQL. Once the structured database is established, OpenFn assists the iNGO with connecting this data to Power BI.

    Refer to the diagram below for a visualization of the data flow cited in the above use case.

    Tableau Data Flow Visualization

    - + \ No newline at end of file diff --git a/fr/adaptors/primero.html b/fr/adaptors/primero.html index d4f5e7ffcd9..a69ccc11ef0 100644 --- a/fr/adaptors/primero.html +++ b/fr/adaptors/primero.html @@ -22,7 +22,7 @@ - + @@ -63,7 +63,7 @@ https://github.com/OpenFn/primero-ona-dashboard/
  • Gambella: UNICEF Primero < > UNHCR Progres: https://github.com/OpenFn/primero-progres
  • Thailand: UNICEF Primero < > MoPH HIS: https://github.com/OpenFn/primero-thailand
  • - + \ No newline at end of file diff --git a/fr/adaptors/salesforce.html b/fr/adaptors/salesforce.html index 613df671b94..0e44f731a60 100644 --- a/fr/adaptors/salesforce.html +++ b/fr/adaptors/salesforce.html @@ -22,7 +22,7 @@ - + @@ -139,7 +139,7 @@ with a range of helper functions for common CRUD & upsert operations, and for accessing the Salesforce bulk API.

    Example Implementations

    - + \ No newline at end of file diff --git a/fr/adaptors/surveycto.html b/fr/adaptors/surveycto.html index 30a4a3e8272..5d27b28e3ce 100644 --- a/fr/adaptors/surveycto.html +++ b/fr/adaptors/surveycto.html @@ -22,7 +22,7 @@ - + @@ -39,7 +39,7 @@ Configure option for that form, and then click Add Webhook in the panel that appears.

    Periodic

    In order to fetch data from SurveyCTO periodically, you can use language-surveycto:

    fetchSubmissions(
    'form_id', // the form id
    'Sep 1, 2016 3:56:02 PM', // the initial "after" date
    // after the first run, OpenFn will only fetch new submissions
    'https://www.openfn.org/inbox/something-secret' // the inbox to post form data to.
    );

    Every time this job runs it will only fetch new data, by default.

    - + \ No newline at end of file diff --git a/fr/adaptors/tableau.html b/fr/adaptors/tableau.html index 9eeaf22528c..ef8bf7e3d2e 100644 --- a/fr/adaptors/tableau.html +++ b/fr/adaptors/tableau.html @@ -22,7 +22,7 @@ - + @@ -41,7 +41,7 @@ structured database from it using MySQL. Once the structured database is established, OpenFn assists the iNGO with connecting this data to Tableau.

    Refer to the diagram below for a visualization of the data flow cited in the above use case.

    Tableau Data Flow Visualization

    - + \ No newline at end of file diff --git a/fr/articles.html b/fr/articles.html index 5a6e1eeb5e5..cbd27ee9be0 100644 --- a/fr/articles.html +++ b/fr/articles.html @@ -22,7 +22,7 @@ - + @@ -73,7 +73,7 @@ someone else’s servers (SaaS), or on her organization’s own servers (deployed locally). Before making a decision she outlines the basic, non-technical considerations for both options.

    - + \ No newline at end of file diff --git a/fr/articles/2020/06/16/how-information-is-organized.html b/fr/articles/2020/06/16/how-information-is-organized.html index 14ef5787fdc..254f9eb067c 100644 --- a/fr/articles/2020/06/16/how-information-is-organized.html +++ b/fr/articles/2020/06/16/how-information-is-organized.html @@ -22,7 +22,7 @@ - + @@ -102,7 +102,7 @@ might be better off than those operating a well defined assembly-line with interchangeable parts. Alas, the middle way is probably the best.

    That’s all for now. More soon.

    Need help organizing or scaling your organization's information or process flows? Contact our team of ICT4D specialists at support@openfn.org.

    - + \ No newline at end of file diff --git a/fr/articles/2020/06/24/three-questions-to-ask.html b/fr/articles/2020/06/24/three-questions-to-ask.html index 16822bb04bf..f578090b4de 100644 --- a/fr/articles/2020/06/24/three-questions-to-ask.html +++ b/fr/articles/2020/06/24/three-questions-to-ask.html @@ -22,7 +22,7 @@ - + @@ -63,7 +63,7 @@ admin@openfn.org for support. Our team is always happy to assist and help you evaluate the total cost of ownership of automation solutions.

    - + \ No newline at end of file diff --git a/fr/articles/2020/07/02/allow-yourself-to-fail.html b/fr/articles/2020/07/02/allow-yourself-to-fail.html index 88558be17b9..aaad9c144d0 100644 --- a/fr/articles/2020/07/02/allow-yourself-to-fail.html +++ b/fr/articles/2020/07/02/allow-yourself-to-fail.html @@ -22,7 +22,7 @@ - + @@ -52,7 +52,7 @@ design for idempotence. It's common sense when you're passing messages between two different systems that are bound to evolve, go offline, have a bad day, etc

    — Taylor

    Sign up{: .btn} to set up a project today, absolutely free.

    Reach out{: .btn} for more information.

    - + \ No newline at end of file diff --git a/fr/articles/2020/07/14/cron-is-better-than-a-timer.html b/fr/articles/2020/07/14/cron-is-better-than-a-timer.html index 296744f1a8c..b8c481c1c9b 100644 --- a/fr/articles/2020/07/14/cron-is-better-than-a-timer.html +++ b/fr/articles/2020/07/14/cron-is-better-than-a-timer.html @@ -22,7 +22,7 @@ - + @@ -49,7 +49,7 @@ sign up for free or mess around with cron expressions at crontab.guru, a brilliant site to quickly build complex cron expressions.

    That's all from product for today. Speak soon.

    Taylor

    - + \ No newline at end of file diff --git a/fr/articles/2020/12/09/upsert-in-dhis2.html b/fr/articles/2020/12/09/upsert-in-dhis2.html index 82317a66a5a..06bb827fb9c 100644 --- a/fr/articles/2020/12/09/upsert-in-dhis2.html +++ b/fr/articles/2020/12/09/upsert-in-dhis2.html @@ -22,7 +22,7 @@ - + @@ -51,7 +51,7 @@ about it over here.

    Please don’t hesitate to reach out to one of OpenFn’s implementation specialists if you’d like to learn more.

    — Taylor

    Sign up{: .btn} to set up a project today, absolutely free.

    Reach out{: .btn} for more information.

    - + \ No newline at end of file diff --git a/fr/articles/2021/02/03/hosted-or-local-deployment.html b/fr/articles/2021/02/03/hosted-or-local-deployment.html index f812c03e561..8e7af68eb8c 100644 --- a/fr/articles/2021/02/03/hosted-or-local-deployment.html +++ b/fr/articles/2021/02/03/hosted-or-local-deployment.html @@ -22,7 +22,7 @@ - + @@ -87,7 +87,7 @@ likely be in a better position to know if you want to continue using the software for 5-10 years.

    Should you need any help with your decision though please do not hesitate to contact OpenFn.

    - + \ No newline at end of file diff --git a/fr/articles/2021/02/17/syncing-options.html b/fr/articles/2021/02/17/syncing-options.html index 84f31b18f48..621e5be0c85 100644 --- a/fr/articles/2021/02/17/syncing-options.html +++ b/fr/articles/2021/02/17/syncing-options.html @@ -22,7 +22,7 @@ - + @@ -76,7 +76,7 @@ eventual syncing was more important than having real-time syncing.

    Both Sync Options Have Their Pros and Cons

    Both options definitely have their use-cases and OpenFn's platform versatility enables your team to decide which type of sync is right for your project.

    As always, we are here to help with any questions as you think through which sync option makes the most sense for your project.

    - + \ No newline at end of file diff --git a/fr/articles/2021/05/24/commcare-events.html b/fr/articles/2021/05/24/commcare-events.html index ceec84cf217..07751ed4018 100644 --- a/fr/articles/2021/05/24/commcare-events.html +++ b/fr/articles/2021/05/24/commcare-events.html @@ -22,7 +22,7 @@ - + @@ -116,7 +116,7 @@ head directly to the Job Library to see how other OpenFn users are creating their jobs.

    Either way, keep the community posted on your progress in the forum—you'll find lots of helpful folks willing to lend you a hand in your integration journey.

    - + \ No newline at end of file diff --git a/fr/articles/2021/07/05/wrapping-my-head-around-jobs.html b/fr/articles/2021/07/05/wrapping-my-head-around-jobs.html index 297b2c115a3..fc587631e81 100644 --- a/fr/articles/2021/07/05/wrapping-my-head-around-jobs.html +++ b/fr/articles/2021/07/05/wrapping-my-head-around-jobs.html @@ -22,7 +22,7 @@ - + @@ -104,7 +104,7 @@ complex, and are pushing our new documentation regularly, so please do get in touch if you think there are ways we could improve this type of walk-through/helper article.

    Happy integrating,

    Taylor

    - + \ No newline at end of file diff --git a/fr/articles/2021/10/08/improving-multistage-docker-builds-using-buildx.html b/fr/articles/2021/10/08/improving-multistage-docker-builds-using-buildx.html index 8293906f32f..884acb51eb1 100644 --- a/fr/articles/2021/10/08/improving-multistage-docker-builds-using-buildx.html +++ b/fr/articles/2021/10/08/improving-multistage-docker-builds-using-buildx.html @@ -22,7 +22,7 @@ - + @@ -97,7 +97,7 @@ hey!

    Buildx has given me what I 'expected' with docker multi-stage builds, and having the cache in a repository completely side-steps having to attach a shared volume or copying from a storage bucket.

    Resources

    - + \ No newline at end of file diff --git a/fr/articles/2021/10/15/webpack-to-esbuild-part1.html b/fr/articles/2021/10/15/webpack-to-esbuild-part1.html index 238a59a2c08..c2e129770e0 100644 --- a/fr/articles/2021/10/15/webpack-to-esbuild-part1.html +++ b/fr/articles/2021/10/15/webpack-to-esbuild-part1.html @@ -22,7 +22,7 @@ - + @@ -80,7 +80,7 @@ minified and split production build takes about 34s with webpack and that's on my i7 desktop machine, and 197s (3+ mins) on CI/CD.

    What's next?

    So our 'can we actually do this' seems to have gone pretty well so far. I'm really excited about what this will give us in the end.

    But a shell command doth not a replacement for webpack make. We still need to:

    1. Get Phoenix to use esbuild and watch our files as we work.
    2. Ensure that our html templates serve the correct files in dev & production.
      Including our CSS that is no longer injected into the DOM.
    3. Split at least our vendored modules into their own bundle.
    4. Make sure sourcemaps generate correctly for when we upload them to Sentry.
    5. Have some kind of cache-busting naming scheme for production builds.

    Resources

    - + \ No newline at end of file diff --git a/fr/articles/2021/10/22/testing-react-app-with-jest-hound.html b/fr/articles/2021/10/22/testing-react-app-with-jest-hound.html index 8e97c2040dd..961cd1d4280 100644 --- a/fr/articles/2021/10/22/testing-react-app-with-jest-hound.html +++ b/fr/articles/2021/10/22/testing-react-app-with-jest-hound.html @@ -22,7 +22,7 @@ - + @@ -115,7 +115,7 @@ guarantee a maintainable codebase and a progressive software application.
    Still looking for the legend's advice?

    Gotcha, here you go...

    1. Swallow your pride and be humble: always do manual testing!
    2. Click test your way through the manual test cases for every new deployment, catching regressions.
    3. Lock in your fixes and new features as unit tests, integration tests, and end-to-end tests.

    Happy testing,

    Chaiwa

    - + \ No newline at end of file diff --git a/fr/articles/2021/10/29/how-learning-javascript-helped-me-better-understand-jobs.html b/fr/articles/2021/10/29/how-learning-javascript-helped-me-better-understand-jobs.html index 8edeabb663e..f97f749fca9 100644 --- a/fr/articles/2021/10/29/how-learning-javascript-helped-me-better-understand-jobs.html +++ b/fr/articles/2021/10/29/how-learning-javascript-helped-me-better-understand-jobs.html @@ -22,7 +22,7 @@ - + @@ -115,7 +115,7 @@ to store various keyed collections and more complex entities."

    Next steps

    I'm well on my way to becoming a better job reader and writer. Here are some next steps:

    1. Understand fn(state) and how state can be manipulated in OpenFn jobs.

    2. Explore what's available on the JavaScript docs site.

    3. Sign up for the next level JavaScript course.

    - + \ No newline at end of file diff --git a/fr/articles/2022/06/07/workflow-automation.html b/fr/articles/2022/06/07/workflow-automation.html index 2ef418ac6d0..9d77229b536 100644 --- a/fr/articles/2022/06/07/workflow-automation.html +++ b/fr/articles/2022/06/07/workflow-automation.html @@ -22,7 +22,7 @@ - + @@ -113,7 +113,7 @@ DPG, OpenFn’s core technology is free and open-source. If you want more information about the Toolkit or to sign up for a free plan on our associated SaaS application, visit https://www.openfn.org/.

    - + \ No newline at end of file diff --git a/fr/articles/2022/09/19/auth-security.html b/fr/articles/2022/09/19/auth-security.html index 0ae53197ba4..5f1b3b8ec4c 100644 --- a/fr/articles/2022/09/19/auth-security.html +++ b/fr/articles/2022/09/19/auth-security.html @@ -22,7 +22,7 @@ - + @@ -75,7 +75,7 @@ security experts and international standards, including GovStack, OpenHIE, OWASP, NIST, and more.

    The resource can be found here.

    - + \ No newline at end of file diff --git a/fr/articles/archive.html b/fr/articles/archive.html index afc49175932..f0e0108d4fd 100644 --- a/fr/articles/archive.html +++ b/fr/articles/archive.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/articles/page/2.html b/fr/articles/page/2.html index 7120467f285..aa4ff439b03 100644 --- a/fr/articles/page/2.html +++ b/fr/articles/page/2.html @@ -22,7 +22,7 @@ - + @@ -45,7 +45,7 @@ a non-profit is organized. I thought I was getting into a technical discussion—I’ve been doing system architecture discussions for years—but what we ended up talking about was how this NGO thinks.

    - + \ No newline at end of file diff --git a/fr/articles/tags.html b/fr/articles/tags.html index 9212f01c5c7..e494b4a6f6d 100644 --- a/fr/articles/tags.html +++ b/fr/articles/tags.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/articles/tags/annoucement.html b/fr/articles/tags/annoucement.html index 1a24991eb8a..3ad20e6bf67 100644 --- a/fr/articles/tags/annoucement.html +++ b/fr/articles/tags/annoucement.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/fr/articles/tags/authentication.html b/fr/articles/tags/authentication.html index 5e65ad8dc62..9c0b6f5821c 100644 --- a/fr/articles/tags/authentication.html +++ b/fr/articles/tags/authentication.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ Goods achieve just this. You can view and comment on the resource here, or read on to learn why.

    - + \ No newline at end of file diff --git a/fr/articles/tags/authorization.html b/fr/articles/tags/authorization.html index d69685b242e..60222ab657a 100644 --- a/fr/articles/tags/authorization.html +++ b/fr/articles/tags/authorization.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ Goods achieve just this. You can view and comment on the resource here, or read on to learn why.

    - + \ No newline at end of file diff --git a/fr/articles/tags/automation.html b/fr/articles/tags/automation.html index e792808fa39..a662467343f 100644 --- a/fr/articles/tags/automation.html +++ b/fr/articles/tags/automation.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ supply chain systems, tracking clinical visits, and helping plan vaccine rollouts. We support our partners’ work by lifting the burden of manual data transfers between platforms.

    - + \ No newline at end of file diff --git a/fr/articles/tags/browser-testing.html b/fr/articles/tags/browser-testing.html index 5dadc4ccc70..9f1be89460b 100644 --- a/fr/articles/tags/browser-testing.html +++ b/fr/articles/tags/browser-testing.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ React/Redux app with a Phoenix/Elixir backend.

    - + \ No newline at end of file diff --git a/fr/articles/tags/build.html b/fr/articles/tags/build.html index a9cfd753f64..a88d4189e53 100644 --- a/fr/articles/tags/build.html +++ b/fr/articles/tags/build.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ using it continuously for about 6 years - upgrades and all. Our front-end toolchain, albeit far from out of date (Webpack 5.52.1 today) has left some room for improvement.

    - + \ No newline at end of file diff --git a/fr/articles/tags/ci-cd.html b/fr/articles/tags/ci-cd.html index ea1aefcb25d..f13941b3bf1 100644 --- a/fr/articles/tags/ci-cd.html +++ b/fr/articles/tags/ci-cd.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ toolchain, albeit far from out of date (Webpack 5.52.1 today) has left some room for improvement.

    - + \ No newline at end of file diff --git a/fr/articles/tags/docker.html b/fr/articles/tags/docker.html index 21ebad7bef9..61fce702d98 100644 --- a/fr/articles/tags/docker.html +++ b/fr/articles/tags/docker.html @@ -22,14 +22,14 @@ - + - + \ No newline at end of file diff --git a/fr/articles/tags/elixir.html b/fr/articles/tags/elixir.html index 894d5efad61..70c85987777 100644 --- a/fr/articles/tags/elixir.html +++ b/fr/articles/tags/elixir.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ React/Redux app with a Phoenix/Elixir backend.

    - + \ No newline at end of file diff --git a/fr/articles/tags/how-to.html b/fr/articles/tags/how-to.html index 4d316dde8d3..c8ea63b9530 100644 --- a/fr/articles/tags/how-to.html +++ b/fr/articles/tags/how-to.html @@ -22,7 +22,7 @@ - + @@ -67,7 +67,7 @@ a non-profit is organized. I thought I was getting into a technical discussion—I’ve been doing system architecture discussions for years—but what we ended up talking about was how this NGO thinks.

    - + \ No newline at end of file diff --git a/fr/articles/tags/javascript.html b/fr/articles/tags/javascript.html index 6ae76544eb1..21821c00811 100644 --- a/fr/articles/tags/javascript.html +++ b/fr/articles/tags/javascript.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ your job writing on OpenFn to the next level. To improve my limited knowledge of JavaScript, I have been taking Codecademy's Introduction to JavaScript Course.

    - + \ No newline at end of file diff --git a/fr/articles/tags/jobs.html b/fr/articles/tags/jobs.html index cc9f6500bee..af8a498c734 100644 --- a/fr/articles/tags/jobs.html +++ b/fr/articles/tags/jobs.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ JavaScript, I have been taking Codecademy's Introduction to JavaScript Course.

    - + \ No newline at end of file diff --git a/fr/articles/tags/js.html b/fr/articles/tags/js.html index c9f3614b655..58b94c54f9e 100644 --- a/fr/articles/tags/js.html +++ b/fr/articles/tags/js.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ using it continuously for about 6 years - upgrades and all. Our front-end toolchain, albeit far from out of date (Webpack 5.52.1 today) has left some room for improvement.

    - + \ No newline at end of file diff --git a/fr/articles/tags/learning.html b/fr/articles/tags/learning.html index ff15f2fe0f0..1acad37704f 100644 --- a/fr/articles/tags/learning.html +++ b/fr/articles/tags/learning.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ your job writing on OpenFn to the next level. To improve my limited knowledge of JavaScript, I have been taking Codecademy's Introduction to JavaScript Course.

    - + \ No newline at end of file diff --git a/fr/articles/tags/phoenix.html b/fr/articles/tags/phoenix.html index 54401bb0866..00797962187 100644 --- a/fr/articles/tags/phoenix.html +++ b/fr/articles/tags/phoenix.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ using it continuously for about 6 years - upgrades and all. Our front-end toolchain, albeit far from out of date (Webpack 5.52.1 today) has left some room for improvement.

    - + \ No newline at end of file diff --git a/fr/articles/tags/react.html b/fr/articles/tags/react.html index cb3d5b22c02..29bd442030d 100644 --- a/fr/articles/tags/react.html +++ b/fr/articles/tags/react.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ React/Redux app with a Phoenix/Elixir backend.

    - + \ No newline at end of file diff --git a/fr/articles/tags/security.html b/fr/articles/tags/security.html index a8f943f6e67..f96c468648c 100644 --- a/fr/articles/tags/security.html +++ b/fr/articles/tags/security.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ Goods achieve just this. You can view and comment on the resource here, or read on to learn why.

    - + \ No newline at end of file diff --git a/fr/articles/tags/solution.html b/fr/articles/tags/solution.html index e503bfedc5d..fd209446df3 100644 --- a/fr/articles/tags/solution.html +++ b/fr/articles/tags/solution.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ supply chain systems, tracking clinical visits, and helping plan vaccine rollouts. We support our partners’ work by lifting the burden of manual data transfers between platforms.

    - + \ No newline at end of file diff --git a/fr/articles/tags/testing.html b/fr/articles/tags/testing.html index aeb21140898..476562718c3 100644 --- a/fr/articles/tags/testing.html +++ b/fr/articles/tags/testing.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ React/Redux app with a Phoenix/Elixir backend.

    - + \ No newline at end of file diff --git a/fr/articles/tags/tips.html b/fr/articles/tags/tips.html index 7239ace3c21..7775cbebd75 100644 --- a/fr/articles/tags/tips.html +++ b/fr/articles/tags/tips.html @@ -22,7 +22,7 @@ - + @@ -68,7 +68,7 @@ "idempotence."

    - + \ No newline at end of file diff --git a/fr/articles/tags/tips/page/2.html b/fr/articles/tags/tips/page/2.html index c4acb4dfb0a..71c0947dc5d 100644 --- a/fr/articles/tags/tips/page/2.html +++ b/fr/articles/tags/tips/page/2.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ a non-profit is organized. I thought I was getting into a technical discussion—I’ve been doing system architecture discussions for years—but what we ended up talking about was how this NGO thinks.

    - + \ No newline at end of file diff --git a/fr/articles/tags/webpack.html b/fr/articles/tags/webpack.html index ab3a666994e..c054b70a85f 100644 --- a/fr/articles/tags/webpack.html +++ b/fr/articles/tags/webpack.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ using it continuously for about 6 years - upgrades and all. Our front-end toolchain, albeit far from out of date (Webpack 5.52.1 today) has left some room for improvement.

    - + \ No newline at end of file diff --git a/fr/assets/js/09b23959.120657f5.js b/fr/assets/js/09b23959.d4a4d0a1.js similarity index 99% rename from fr/assets/js/09b23959.120657f5.js rename to fr/assets/js/09b23959.d4a4d0a1.js index 46649f44f88..0bf58d6c5ed 100644 --- a/fr/assets/js/09b23959.120657f5.js +++ b/fr/assets/js/09b23959.d4a4d0a1.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[83278],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),i=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=i(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=i(n),m=a,f=d["".concat(p,".").concat(m)]||d[m]||u[m]||o;return n?r.createElement(f,s(s({ref:t},c),{},{components:n})):r.createElement(f,s({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:a,s[1]=l;for(var i=2;i{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>i});var r=n(87462),a=(n(67294),n(3905));const o={title:"salesforce developer readme",id:"salesforce-readme",keywords:["adaptor","readme","salesforce"]},s="salesforce Adaptor developer README.md",l={unversionedId:"packages/salesforce-readme",id:"packages/salesforce-readme",title:"salesforce developer readme",description:"Source//github.com/OpenFn/adaptors/tree/main/packages/salesforce",source:"@site/adaptors/packages/salesforce-readme.md",sourceDirName:"packages",slug:"/packages/salesforce-readme",permalink:"/fr/adaptors/packages/salesforce-readme",draft:!1,tags:[],version:"current",frontMatter:{title:"salesforce developer readme",id:"salesforce-readme",keywords:["adaptor","readme","salesforce"]},sidebar:"adaptors",previous:{title:"salesforce changelog",permalink:"/fr/adaptors/packages/salesforce-changelog"},next:{title:"sftp@1.0.1",permalink:"/fr/adaptors/packages/sftp-docs"}},p={},i=[{value:"Documentation",id:"documentation",level:2},{value:"Release notes and deprecated CHANGELOG.md",id:"release-notes-and-deprecated-changelogmd",level:2},{value:"Configuration",id:"configuration",level:3},{value:"Intent",id:"intent",level:2},{value:"Expressions",id:"expressions",level:2},{value:"Development",id:"development",level:2}],c={toc:i},d="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"salesforce-adaptor-developer-readmemd"},"salesforce Adaptor developer README.md"),(0,a.kt)("p",null,"Source: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors/tree/main/packages/salesforce"},"https://github.com/OpenFn/adaptors/tree/main/packages/salesforce")),(0,a.kt)("h1",{id:"language-salesforce"},"Language Salesforce"),(0,a.kt)("p",null,"An OpenFn ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},"adaptor"))," for building integration jobs for use with the\nSalesforce API."),(0,a.kt)("h2",{id:"documentation"},"Documentation"),(0,a.kt)("p",null,"View the ",(0,a.kt)("a",{parentName:"p",href:"https://docs.openfn.org/adaptors/packages/salesforce-docs"},"docs site"),"\nfor full technical documentation."),(0,a.kt)("h2",{id:"release-notes-and-deprecated-changelogmd"},"Release notes and deprecated CHANGELOG.md"),(0,a.kt)("p",null,"See ",(0,a.kt)("a",{parentName:"p",href:"https://docs.openfn.org/adaptors/packages/salesforce-changelog"},"releases"),"\nfor all changes."),(0,a.kt)("h3",{id:"configuration"},"Configuration"),(0,a.kt)("p",null,"View all the required and optional properties for ",(0,a.kt)("inlineCode",{parentName:"p"},"state.configuration")," in the\nofficial\n",(0,a.kt)("a",{parentName:"p",href:"https://docs.openfn.org/adaptors/packages/saleforce-configuration-schema/"},"configuration-schema"),"\ndefinition."),(0,a.kt)("h2",{id:"intent"},"Intent"),(0,a.kt)("hr",null),(0,a.kt)("p",null,"Allow communication with Salesforce using a set of Lisp compatible expressions."),(0,a.kt)("p",null,"Using simple functions we can create a simplified API, simple enough to generate\ncode from data."),(0,a.kt)("h2",{id:"expressions"},"Expressions"),(0,a.kt)("hr",null),(0,a.kt)("p",null,"Expressions are a simplified set of function calls. Outlining the operations\nneeded to be performed."),(0,a.kt)("p",null,"An uncompiled expression has no knowledge of the internals of the adaptor,\ncredentials or runtime environment."),(0,a.kt)("p",null,"It's the responsibility of the build process to provide a wrapper that will\ninject the functions in."),(0,a.kt)("p",null,"For example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-javascript"},"describe('vera__Test_Event__c'),\n create('vera__Test_Event__c', {\n vera__Test_Event_Name_Unique__c: 'hello from jsforce',\n }),\n create('vera__Boat__c', {\n Name: 'Catatafish redux!',\n vera__Test_Event__c: reference(0),\n });\n")),(0,a.kt)("h2",{id:"development"},"Development"),(0,a.kt)("p",null,"Clone the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors"},"adaptors monorepo"),". Follow the\n",(0,a.kt)("inlineCode",{parentName:"p"},"Getting Started")," guide inside to get set up."),(0,a.kt)("p",null,"Run tests using ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm run test")," or ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm run test:watch")),(0,a.kt)("p",null,"Build the project using ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm build"),"."),(0,a.kt)("p",null,"To just build the docs run ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm build docs")),(0,a.kt)("p",null,"##\xa0Other"),(0,a.kt)("p",null,"Create SOAP session"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},'curl https://test.salesforce.com/services/Soap/u/47.0 -H "Content-Type: text/xml; charset=UTF-8" -H "SOAPAction: login" -d @tmp/login.txt | xmllint --format -\n')),(0,a.kt)("p",null,"Close jobs"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},"curl\nhttps://openfn.my.salesforce.com/services/async/47.0/job/some_id -H 'X-SFDC-Session: abc123sessionID456xyz' -H \"Content-Type: application/xml; charset=UTF-8\" -d @tmp/close_job.txt | xmllint --format -\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[83278],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),i=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=i(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=i(n),m=a,f=d["".concat(p,".").concat(m)]||d[m]||u[m]||o;return n?r.createElement(f,s(s({ref:t},c),{},{components:n})):r.createElement(f,s({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:a,s[1]=l;for(var i=2;i{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>i});var r=n(87462),a=(n(67294),n(3905));const o={title:"salesforce developer readme",id:"salesforce-readme",keywords:["adaptor","readme","salesforce"]},s="salesforce Adaptor developer README.md",l={unversionedId:"packages/salesforce-readme",id:"packages/salesforce-readme",title:"salesforce developer readme",description:"Source//github.com/OpenFn/adaptors/tree/main/packages/salesforce",source:"@site/adaptors/packages/salesforce-readme.md",sourceDirName:"packages",slug:"/packages/salesforce-readme",permalink:"/fr/adaptors/packages/salesforce-readme",draft:!1,tags:[],version:"current",frontMatter:{title:"salesforce developer readme",id:"salesforce-readme",keywords:["adaptor","readme","salesforce"]},sidebar:"adaptors",previous:{title:"salesforce changelog",permalink:"/fr/adaptors/packages/salesforce-changelog"},next:{title:"sftp@1.0.2",permalink:"/fr/adaptors/packages/sftp-docs"}},p={},i=[{value:"Documentation",id:"documentation",level:2},{value:"Release notes and deprecated CHANGELOG.md",id:"release-notes-and-deprecated-changelogmd",level:2},{value:"Configuration",id:"configuration",level:3},{value:"Intent",id:"intent",level:2},{value:"Expressions",id:"expressions",level:2},{value:"Development",id:"development",level:2}],c={toc:i},d="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"salesforce-adaptor-developer-readmemd"},"salesforce Adaptor developer README.md"),(0,a.kt)("p",null,"Source: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors/tree/main/packages/salesforce"},"https://github.com/OpenFn/adaptors/tree/main/packages/salesforce")),(0,a.kt)("h1",{id:"language-salesforce"},"Language Salesforce"),(0,a.kt)("p",null,"An OpenFn ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},"adaptor"))," for building integration jobs for use with the\nSalesforce API."),(0,a.kt)("h2",{id:"documentation"},"Documentation"),(0,a.kt)("p",null,"View the ",(0,a.kt)("a",{parentName:"p",href:"https://docs.openfn.org/adaptors/packages/salesforce-docs"},"docs site"),"\nfor full technical documentation."),(0,a.kt)("h2",{id:"release-notes-and-deprecated-changelogmd"},"Release notes and deprecated CHANGELOG.md"),(0,a.kt)("p",null,"See ",(0,a.kt)("a",{parentName:"p",href:"https://docs.openfn.org/adaptors/packages/salesforce-changelog"},"releases"),"\nfor all changes."),(0,a.kt)("h3",{id:"configuration"},"Configuration"),(0,a.kt)("p",null,"View all the required and optional properties for ",(0,a.kt)("inlineCode",{parentName:"p"},"state.configuration")," in the\nofficial\n",(0,a.kt)("a",{parentName:"p",href:"https://docs.openfn.org/adaptors/packages/saleforce-configuration-schema/"},"configuration-schema"),"\ndefinition."),(0,a.kt)("h2",{id:"intent"},"Intent"),(0,a.kt)("hr",null),(0,a.kt)("p",null,"Allow communication with Salesforce using a set of Lisp compatible expressions."),(0,a.kt)("p",null,"Using simple functions we can create a simplified API, simple enough to generate\ncode from data."),(0,a.kt)("h2",{id:"expressions"},"Expressions"),(0,a.kt)("hr",null),(0,a.kt)("p",null,"Expressions are a simplified set of function calls. Outlining the operations\nneeded to be performed."),(0,a.kt)("p",null,"An uncompiled expression has no knowledge of the internals of the adaptor,\ncredentials or runtime environment."),(0,a.kt)("p",null,"It's the responsibility of the build process to provide a wrapper that will\ninject the functions in."),(0,a.kt)("p",null,"For example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-javascript"},"describe('vera__Test_Event__c'),\n create('vera__Test_Event__c', {\n vera__Test_Event_Name_Unique__c: 'hello from jsforce',\n }),\n create('vera__Boat__c', {\n Name: 'Catatafish redux!',\n vera__Test_Event__c: reference(0),\n });\n")),(0,a.kt)("h2",{id:"development"},"Development"),(0,a.kt)("p",null,"Clone the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors"},"adaptors monorepo"),". Follow the\n",(0,a.kt)("inlineCode",{parentName:"p"},"Getting Started")," guide inside to get set up."),(0,a.kt)("p",null,"Run tests using ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm run test")," or ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm run test:watch")),(0,a.kt)("p",null,"Build the project using ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm build"),"."),(0,a.kt)("p",null,"To just build the docs run ",(0,a.kt)("inlineCode",{parentName:"p"},"pnpm build docs")),(0,a.kt)("p",null,"##\xa0Other"),(0,a.kt)("p",null,"Create SOAP session"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},'curl https://test.salesforce.com/services/Soap/u/47.0 -H "Content-Type: text/xml; charset=UTF-8" -H "SOAPAction: login" -d @tmp/login.txt | xmllint --format -\n')),(0,a.kt)("p",null,"Close jobs"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},"curl\nhttps://openfn.my.salesforce.com/services/async/47.0/job/some_id -H 'X-SFDC-Session: abc123sessionID456xyz' -H \"Content-Type: application/xml; charset=UTF-8\" -d @tmp/close_job.txt | xmllint --format -\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/fr/assets/js/450c527f.08673ad2.js b/fr/assets/js/450c527f.768ba2ea.js similarity index 98% rename from fr/assets/js/450c527f.08673ad2.js rename to fr/assets/js/450c527f.768ba2ea.js index ce8ac120cb9..65b2850c32e 100644 --- a/fr/assets/js/450c527f.08673ad2.js +++ b/fr/assets/js/450c527f.768ba2ea.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[73446],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>d});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),c=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},l=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=c(n),m=a,d=u["".concat(p,".").concat(m)]||u[m]||f[m]||o;return n?r.createElement(d,i(i({ref:t},l),{},{components:n})):r.createElement(d,i({ref:t},l))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>f,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"Config for sftp",id:"sftp-configuration-schema",keywords:["adaptor","configuration-schema","sftp"]},i=void 0,s={unversionedId:"packages/sftp-configuration-schema",id:"packages/sftp-configuration-schema",title:"Config for sftp",description:"Jobs that use the sftp adaptor may require authentication. A",source:"@site/adaptors/packages/sftp-configuration-schema.md",sourceDirName:"packages",slug:"/packages/sftp-configuration-schema",permalink:"/fr/adaptors/packages/sftp-configuration-schema",draft:!1,tags:[],version:"current",frontMatter:{title:"Config for sftp",id:"sftp-configuration-schema",keywords:["adaptor","configuration-schema","sftp"]},sidebar:"adaptors",previous:{title:"sftp@1.0.1",permalink:"/fr/adaptors/packages/sftp-docs"},next:{title:"sftp changelog",permalink:"/fr/adaptors/packages/sftp-changelog"}},p={},c=[{value:"Sample Configuration",id:"sample-configuration",level:2},{value:"Full Schema",id:"full-schema",level:2}],l={toc:c},u="wrapper";function f(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Jobs that use the ",(0,a.kt)("inlineCode",{parentName:"p"},"sftp"),' adaptor may require authentication. A\n"credential" for the ',(0,a.kt)("inlineCode",{parentName:"p"},"sftp")," adaptor will follow the schema below. When\nusing the CLI, you can set up your own ",(0,a.kt)("inlineCode",{parentName:"p"},"state.configuration")," by using the\nsample below."),(0,a.kt)("h2",{id:"sample-configuration"},"Sample Configuration"),(0,a.kt)("p",null," Paste this into the ",(0,a.kt)("inlineCode",{parentName:"p"},"configuration")," key of your ",(0,a.kt)("inlineCode",{parentName:"p"},"state.json")," file and\nmodify the values to run jobs locally."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "host": "191.173.128.88",\n "port": "22",\n "username": "admin",\n "password": "@some(!)Strongpassword"\n}\n')),(0,a.kt)("h2",{id:"full-schema"},"Full Schema"),(0,a.kt)("p",null," The full configuration schema describes each attribute of the credential and\nnotes those that are required."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "$schema": "http://json-schema.org/draft-07/schema#",\n "properties": {\n "host": {\n "title": "Host URL",\n "type": "string",\n "description": "The SFTP server host url or ip address",\n "format": "uri",\n "minLength": 1,\n "examples": [\n "191.173.128.88"\n ]\n },\n "port": {\n "title": "Port",\n "type": "integer",\n "default": 21,\n "description": "The SFTP server port",\n "minLength": 1,\n "examples": [\n 22\n ]\n },\n "username": {\n "title": "Username",\n "type": "string",\n "description": "Username",\n "minLength": 1,\n "examples": [\n "admin"\n ]\n },\n "password": {\n "title": "Password",\n "type": "string",\n "description": "Password",\n "writeOnly": true,\n "minLength": 1,\n "examples": [\n "@some(!)Strongpassword"\n ]\n }\n },\n "type": "object",\n "additionalProperties": true,\n "required": [\n "host"\n ]\n}\n')))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[73446],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>d});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),c=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},l=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=c(n),m=a,d=u["".concat(p,".").concat(m)]||u[m]||f[m]||o;return n?r.createElement(d,i(i({ref:t},l),{},{components:n})):r.createElement(d,i({ref:t},l))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>f,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"Config for sftp",id:"sftp-configuration-schema",keywords:["adaptor","configuration-schema","sftp"]},i=void 0,s={unversionedId:"packages/sftp-configuration-schema",id:"packages/sftp-configuration-schema",title:"Config for sftp",description:"Jobs that use the sftp adaptor may require authentication. A",source:"@site/adaptors/packages/sftp-configuration-schema.md",sourceDirName:"packages",slug:"/packages/sftp-configuration-schema",permalink:"/fr/adaptors/packages/sftp-configuration-schema",draft:!1,tags:[],version:"current",frontMatter:{title:"Config for sftp",id:"sftp-configuration-schema",keywords:["adaptor","configuration-schema","sftp"]},sidebar:"adaptors",previous:{title:"sftp@1.0.2",permalink:"/fr/adaptors/packages/sftp-docs"},next:{title:"sftp changelog",permalink:"/fr/adaptors/packages/sftp-changelog"}},p={},c=[{value:"Sample Configuration",id:"sample-configuration",level:2},{value:"Full Schema",id:"full-schema",level:2}],l={toc:c},u="wrapper";function f(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Jobs that use the ",(0,a.kt)("inlineCode",{parentName:"p"},"sftp"),' adaptor may require authentication. A\n"credential" for the ',(0,a.kt)("inlineCode",{parentName:"p"},"sftp")," adaptor will follow the schema below. When\nusing the CLI, you can set up your own ",(0,a.kt)("inlineCode",{parentName:"p"},"state.configuration")," by using the\nsample below."),(0,a.kt)("h2",{id:"sample-configuration"},"Sample Configuration"),(0,a.kt)("p",null," Paste this into the ",(0,a.kt)("inlineCode",{parentName:"p"},"configuration")," key of your ",(0,a.kt)("inlineCode",{parentName:"p"},"state.json")," file and\nmodify the values to run jobs locally."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "host": "191.173.128.88",\n "port": "22",\n "username": "admin",\n "password": "@some(!)Strongpassword"\n}\n')),(0,a.kt)("h2",{id:"full-schema"},"Full Schema"),(0,a.kt)("p",null," The full configuration schema describes each attribute of the credential and\nnotes those that are required."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "$schema": "http://json-schema.org/draft-07/schema#",\n "properties": {\n "host": {\n "title": "Host URL",\n "type": "string",\n "description": "The SFTP server host url or ip address",\n "format": "uri",\n "minLength": 1,\n "examples": [\n "191.173.128.88"\n ]\n },\n "port": {\n "title": "Port",\n "type": "integer",\n "default": 21,\n "description": "The SFTP server port",\n "minLength": 1,\n "examples": [\n 22\n ]\n },\n "username": {\n "title": "Username",\n "type": "string",\n "description": "Username",\n "minLength": 1,\n "examples": [\n "admin"\n ]\n },\n "password": {\n "title": "Password",\n "type": "string",\n "description": "Password",\n "writeOnly": true,\n "minLength": 1,\n "examples": [\n "@some(!)Strongpassword"\n ]\n }\n },\n "type": "object",\n "additionalProperties": true,\n "required": [\n "host"\n ]\n}\n')))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/fr/assets/js/6cb21577.373bd554.js b/fr/assets/js/6cb21577.373bd554.js new file mode 100644 index 00000000000..6b92b029402 --- /dev/null +++ b/fr/assets/js/6cb21577.373bd554.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[32674],{3905:(a,e,p)=>{p.d(e,{Zo:()=>d,kt:()=>g});var n=p(67294);function t(a,e,p){return e in a?Object.defineProperty(a,e,{value:p,enumerable:!0,configurable:!0,writable:!0}):a[e]=p,a}function o(a,e){var p=Object.keys(a);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(a);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}))),p.push.apply(p,n)}return p}function l(a){for(var e=1;e=0||(t[p]=a[p]);return t}(a,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(a);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(a,p)&&(t[p]=a[p])}return t}var b=n.createContext({}),r=function(a){var e=n.useContext(b),p=e;return a&&(p="function"==typeof a?a(e):l(l({},e),a)),p},d=function(a){var e=r(a.components);return n.createElement(b.Provider,{value:e},a.children)},i="mdxType",m={inlineCode:"code",wrapper:function(a){var e=a.children;return n.createElement(n.Fragment,{},e)}},c=n.forwardRef((function(a,e){var p=a.components,t=a.mdxType,o=a.originalType,b=a.parentName,d=s(a,["components","mdxType","originalType","parentName"]),i=r(p),c=t,g=i["".concat(b,".").concat(c)]||i[c]||m[c]||o;return p?n.createElement(g,l(l({ref:e},d),{},{components:p})):n.createElement(g,l({ref:e},d))}));function g(a,e){var p=arguments,t=e&&e.mdxType;if("string"==typeof a||t){var o=p.length,l=new Array(o);l[0]=c;var s={};for(var b in e)hasOwnProperty.call(e,b)&&(s[b]=e[b]);s.originalType=a,s[i]="string"==typeof a?a:t,l[1]=s;for(var r=2;r{p.r(e),p.d(e,{assets:()=>Z,contentTitle:()=>O,default:()=>z,frontMatter:()=>F,metadata:()=>_,toc:()=>A});var n=p(87462),t=p(67294),o=p(3905);const l=(a,e)=>{const p=b(a),n=b(e),t=p.pop(),o=n.pop(),l=m(p,n);return 0!==l?l:t&&o?m(t.split("."),o.split(".")):t||o?t?-1:1:0},s=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,b=a=>{if("string"!=typeof a)throw new TypeError("Invalid argument expected string");const e=a.match(s);if(!e)throw new Error(`Invalid argument not valid semver ('${a}' received)`);return e.shift(),e},r=a=>"*"===a||"x"===a||"X"===a,d=a=>{const e=parseInt(a,10);return isNaN(e)?a:e},i=(a,e)=>{if(r(a)||r(e))return 0;const[p,n]=((a,e)=>typeof a!=typeof e?[String(a),String(e)]:[a,e])(d(a),d(e));return p>n?1:p{for(let p=0;p":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]},g=(Object.keys(c),JSON.parse('[{"name":"@openfn/migrate-adaptor@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/migrate-adaptor@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/migrate-adaptor@1.0.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL21pZ3JhdGUtYWRhcHRvckAxLjAuMQ"},{"name":"@openfn/language-zoho@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4zLjE"},{"name":"@openfn/language-zoho@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4yLjM"},{"name":"@openfn/language-zoho@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4yLjI"},{"name":"@openfn/language-zoho@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4yLjE"},{"name":"@openfn/language-vtiger@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjIuMQ"},{"name":"@openfn/language-vtiger@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.1.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjEuMw"},{"name":"@openfn/language-vtiger@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.1.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjEuMg"},{"name":"@openfn/language-vtiger@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.1.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjEuMQ"},{"name":"@openfn/language-twilio@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjQuMQ"},{"name":"@openfn/language-twilio@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.4","commit":{"sha":"2426f4c77af264fca6892ee32f77556346ad4e9e","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2426f4c77af264fca6892ee32f77556346ad4e9e"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuNA"},{"name":"@openfn/language-twilio@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMw"},{"name":"@openfn/language-twilio@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMg"},{"name":"@openfn/language-twilio@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMQ"},{"name":"@openfn/language-twilio@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMA"},{"name":"@openfn/language-template@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@3.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDMuMC4x"},{"name":"@openfn/language-template@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@2.0.0","commit":{"sha":"35e92ab1418380e26f36269167fcbb7e8c1f5259","url":"https://api.github.com/repos/OpenFn/adaptors/commits/35e92ab1418380e26f36269167fcbb7e8c1f5259"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDIuMC4w"},{"name":"@openfn/language-template@1.7.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.8","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy44"},{"name":"@openfn/language-template@1.7.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.7","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy43"},{"name":"@openfn/language-template@1.7.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.6","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy42"},{"name":"@openfn/language-template@1.7.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.5","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy41"},{"name":"@openfn/language-template@1.7.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.4","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy40"},{"name":"@openfn/language-template@1.7.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.3","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4z"},{"name":"@openfn/language-template@1.7.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.2","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4y"},{"name":"@openfn/language-template@1.7.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.1","commit":{"sha":"87c52be93bef2fb37a7d6d0df99feab5ed8611f1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/87c52be93bef2fb37a7d6d0df99feab5ed8611f1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4x"},{"name":"@openfn/language-template@1.7.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.0","commit":{"sha":"9b2b65c1a420ce72139677f49033fb4a3de57944","url":"https://api.github.com/repos/OpenFn/adaptors/commits/9b2b65c1a420ce72139677f49033fb4a3de57944"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4w"},{"name":"@openfn/language-telerivet@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjIuMQ"},{"name":"@openfn/language-telerivet@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuNA"},{"name":"@openfn/language-telerivet@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuMw"},{"name":"@openfn/language-telerivet@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuMg"},{"name":"@openfn/language-telerivet@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuMA"},{"name":"@openfn/language-surveycto@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjIuMQ"},{"name":"@openfn/language-surveycto@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuNA"},{"name":"@openfn/language-surveycto@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMw"},{"name":"@openfn/language-surveycto@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMg"},{"name":"@openfn/language-surveycto@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMQ"},{"name":"@openfn/language-surveycto@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMA"},{"name":"@openfn/language-smpp@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4zLjE"},{"name":"@openfn/language-smpp@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4yLjM"},{"name":"@openfn/language-smpp@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4yLjI"},{"name":"@openfn/language-smpp@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4yLjE"},{"name":"@openfn/language-sftp@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@1.0.2","commit":{"sha":"118c64a46f7c79945b2feb5b4cbbbeb6446c6fe1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/118c64a46f7c79945b2feb5b4cbbbeb6446c6fe1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMS4wLjI"},{"name":"@openfn/language-sftp@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@1.0.1","commit":{"sha":"c76ed1c521296b9abc6e9bfea25cfb347c48c642","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c76ed1c521296b9abc6e9bfea25cfb347c48c642"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMS4wLjE"},{"name":"@openfn/language-sftp@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@1.0.0","commit":{"sha":"65243bdaf913bdd5d17cb3984bda594290cd5c58","url":"https://api.github.com/repos/OpenFn/adaptors/commits/65243bdaf913bdd5d17cb3984bda594290cd5c58"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMS4wLjA"},{"name":"@openfn/language-sftp@0.8.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44Ljg"},{"name":"@openfn/language-sftp@0.8.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44Ljc"},{"name":"@openfn/language-sftp@0.8.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjY"},{"name":"@openfn/language-sftp@0.8.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjU"},{"name":"@openfn/language-sftp@0.8.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjQ"},{"name":"@openfn/language-sftp@0.8.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjM"},{"name":"@openfn/language-sftp@0.8.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjI"},{"name":"@openfn/language-sftp@0.8.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjE"},{"name":"@openfn/language-sftp@0.7.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.3","commit":{"sha":"e50ccd9f126ca73a80bc8d0294817ca077398bf1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e50ccd9f126ca73a80bc8d0294817ca077398bf1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjM"},{"name":"@openfn/language-sftp@0.7.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.2","commit":{"sha":"7a6059dc2f1b5f79447adf7f48d36a0b7aeb2372","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7a6059dc2f1b5f79447adf7f48d36a0b7aeb2372"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjI"},{"name":"@openfn/language-sftp@0.7.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.1","commit":{"sha":"eced2b1d8f2a5399e3120ae2a2b092463a1f72f1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/eced2b1d8f2a5399e3120ae2a2b092463a1f72f1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjE"},{"name":"@openfn/language-sftp@0.7.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.0","commit":{"sha":"fdbbfebcabd9df25617801ad6c2147862230efc6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fdbbfebcabd9df25617801ad6c2147862230efc6"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjA"},{"name":"@openfn/language-sftp@0.6.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.9","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42Ljk"},{"name":"@openfn/language-sftp@0.6.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.8","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42Ljg"},{"name":"@openfn/language-sftp@0.6.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.7","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42Ljc"},{"name":"@openfn/language-sftp@0.6.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.6","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjY"},{"name":"@openfn/language-sftp@0.6.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.5","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjU"},{"name":"@openfn/language-sftp@0.6.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.4","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjQ"},{"name":"@openfn/language-sftp@0.6.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.3","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjM"},{"name":"@openfn/language-sftp@0.6.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.2","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjI"},{"name":"@openfn/language-sftp@0.6.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjE"},{"name":"@openfn/language-salesforce@5.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@5.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@5.0.1","commit":{"sha":"ebdd3aacdabcb42e383715e9a22f7525341bf00c","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ebdd3aacdabcb42e383715e9a22f7525341bf00c"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANS4wLjE"},{"name":"@openfn/language-salesforce@5.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@5.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@5.0.0","commit":{"sha":"ebdd3aacdabcb42e383715e9a22f7525341bf00c","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ebdd3aacdabcb42e383715e9a22f7525341bf00c"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANS4wLjA"},{"name":"@openfn/language-salesforce@5.0.0-alpha","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@5.0.0-alpha","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@5.0.0-alpha","commit":{"sha":"ebdd3aacdabcb42e383715e9a22f7525341bf00c","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ebdd3aacdabcb42e383715e9a22f7525341bf00c"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANS4wLjAtYWxwaGE"},{"name":"@openfn/language-salesforce@4.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.2.2","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4yLjI"},{"name":"@openfn/language-salesforce@4.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.2.1","commit":{"sha":"16e1a95db48f32601b277e7ffcd9eb3bcbba85cd","url":"https://api.github.com/repos/OpenFn/adaptors/commits/16e1a95db48f32601b277e7ffcd9eb3bcbba85cd"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4yLjE"},{"name":"@openfn/language-salesforce@4.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.2.0","commit":{"sha":"377c432c960070902b0d686c2502e5d4137bc078","url":"https://api.github.com/repos/OpenFn/adaptors/commits/377c432c960070902b0d686c2502e5d4137bc078"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4yLjA"},{"name":"@openfn/language-salesforce@4.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.1.0","commit":{"sha":"a8df89d8e4537b7c1645f2db2c0f792d49535d50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a8df89d8e4537b7c1645f2db2c0f792d49535d50"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4xLjA"},{"name":"@openfn/language-salesforce@4.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.8","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjg"},{"name":"@openfn/language-salesforce@4.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.7","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjc"},{"name":"@openfn/language-salesforce@4.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.6","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjY"},{"name":"@openfn/language-salesforce@4.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjU"},{"name":"@openfn/language-salesforce@4.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjQ"},{"name":"@openfn/language-salesforce@4.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjM"},{"name":"@openfn/language-salesforce@4.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjI"},{"name":"@openfn/language-salesforce@4.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjE"},{"name":"@openfn/language-salesforce@3.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.7","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjc"},{"name":"@openfn/language-salesforce@3.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.6","commit":{"sha":"0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjY"},{"name":"@openfn/language-salesforce@3.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjU"},{"name":"@openfn/language-salesforce@3.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjQ"},{"name":"@openfn/language-salesforce@3.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.3","commit":{"sha":"1817f08cb8d8d586c710d5ca7e50f2f4230a2d35","url":"https://api.github.com/repos/OpenFn/adaptors/commits/1817f08cb8d8d586c710d5ca7e50f2f4230a2d35"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjM"},{"name":"@openfn/language-salesforce@3.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.2","commit":{"sha":"d6c0c7e39242ffea633e4f5b2569027feeaed2d4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/d6c0c7e39242ffea633e4f5b2569027feeaed2d4"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjI"},{"name":"@openfn/language-salesforce@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.1","commit":{"sha":"f5cf160440f03f0455a0251d8fc8ac6026665e49","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f5cf160440f03f0455a0251d8fc8ac6026665e49"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjE"},{"name":"@openfn/language-salesforce@3.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.0","commit":{"sha":"d7c2816033818da1d83656cea56c4681bf384105","url":"https://api.github.com/repos/OpenFn/adaptors/commits/d7c2816033818da1d83656cea56c4681bf384105"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjA"},{"name":"@openfn/language-salesforce@2.12.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4z"},{"name":"@openfn/language-salesforce@2.12.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4y"},{"name":"@openfn/language-salesforce@2.12.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4x"},{"name":"@openfn/language-salesforce@2.12.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4w"},{"name":"@openfn/language-salesforce@2.11.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.11.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.11.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMS4y"},{"name":"@openfn/language-salesforce@2.11.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.11.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.11.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMS4x"},{"name":"@openfn/language-salesforce@2.11.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.11.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.11.0","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMS4w"},{"name":"@openfn/language-resourcemap@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMy4x"},{"name":"@openfn/language-resourcemap@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMi4z"},{"name":"@openfn/language-resourcemap@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMi4y"},{"name":"@openfn/language-resourcemap@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMi4x"},{"name":"@openfn/language-rapidpro@1.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC44"},{"name":"@openfn/language-rapidpro@1.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC43"},{"name":"@openfn/language-rapidpro@1.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC42"},{"name":"@openfn/language-rapidpro@1.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC41"},{"name":"@openfn/language-rapidpro@1.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC40"},{"name":"@openfn/language-rapidpro@1.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC4z"},{"name":"@openfn/language-rapidpro@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC4y"},{"name":"@openfn/language-rapidpro@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC4x"},{"name":"@openfn/language-rapidpro@0.5.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS42"},{"name":"@openfn/language-rapidpro@0.5.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS41"},{"name":"@openfn/language-rapidpro@0.5.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS40"},{"name":"@openfn/language-rapidpro@0.5.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS4z"},{"name":"@openfn/language-rapidpro@0.5.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS4y"},{"name":"@openfn/language-rapidpro@0.5.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS4w"},{"name":"@openfn/language-progres@1.3.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjg"},{"name":"@openfn/language-progres@1.3.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjc"},{"name":"@openfn/language-progres@1.3.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjY"},{"name":"@openfn/language-progres@1.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjU"},{"name":"@openfn/language-progres@1.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjQ"},{"name":"@openfn/language-progres@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjM"},{"name":"@openfn/language-progres@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjI"},{"name":"@openfn/language-progres@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjE"},{"name":"@openfn/language-progres@1.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjU"},{"name":"@openfn/language-progres@1.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjQ"},{"name":"@openfn/language-progres@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjM"},{"name":"@openfn/language-progres@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjI"},{"name":"@openfn/language-progres@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjE"},{"name":"@openfn/language-progres@1.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjA"},{"name":"@openfn/language-primero@2.11.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS44"},{"name":"@openfn/language-primero@2.11.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS43"},{"name":"@openfn/language-primero@2.11.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS42"},{"name":"@openfn/language-primero@2.11.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS41"},{"name":"@openfn/language-primero@2.11.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS40"},{"name":"@openfn/language-primero@2.11.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS4z"},{"name":"@openfn/language-primero@2.11.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS4y"},{"name":"@openfn/language-primero@2.11.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS4x"},{"name":"@openfn/language-primero@2.10.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC42"},{"name":"@openfn/language-primero@2.10.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC41"},{"name":"@openfn/language-primero@2.10.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC40"},{"name":"@openfn/language-primero@2.10.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4z"},{"name":"@openfn/language-primero@2.10.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4y"},{"name":"@openfn/language-primero@2.10.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4x"},{"name":"@openfn/language-primero@2.10.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.0","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4w"},{"name":"@openfn/language-primero@2.9.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.9.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.9.2","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi45LjI"},{"name":"@openfn/language-primero@2.9.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.9.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.9.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi45LjE"},{"name":"@openfn/language-postgresql@4.1.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjg"},{"name":"@openfn/language-postgresql@4.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjc"},{"name":"@openfn/language-postgresql@4.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjY"},{"name":"@openfn/language-postgresql@4.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjU"},{"name":"@openfn/language-postgresql@4.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjQ"},{"name":"@openfn/language-postgresql@4.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjM"},{"name":"@openfn/language-postgresql@4.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjI"},{"name":"@openfn/language-postgresql@4.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjE"},{"name":"@openfn/language-postgresql@4.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.0.0","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4wLjA"},{"name":"@openfn/language-postgresql@3.4.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjY"},{"name":"@openfn/language-postgresql@3.4.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjU"},{"name":"@openfn/language-postgresql@3.4.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjQ"},{"name":"@openfn/language-postgresql@3.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjM"},{"name":"@openfn/language-postgresql@3.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjI"},{"name":"@openfn/language-postgresql@3.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjE"},{"name":"@openfn/language-postgresql@3.4.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjA"},{"name":"@openfn/language-openmrs@2.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjg"},{"name":"@openfn/language-openmrs@2.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjc"},{"name":"@openfn/language-openmrs@2.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjY"},{"name":"@openfn/language-openmrs@2.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjU"},{"name":"@openfn/language-openmrs@2.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjQ"},{"name":"@openfn/language-openmrs@2.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjM"},{"name":"@openfn/language-openmrs@2.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjI"},{"name":"@openfn/language-openmrs@2.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjE"},{"name":"@openfn/language-openmrs@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.1.1","commit":{"sha":"9909077c42eaeb4231894e5138c23ad33e630c7a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/9909077c42eaeb4231894e5138c23ad33e630c7a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4xLjE"},{"name":"@openfn/language-openmrs@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.1.0","commit":{"sha":"35e92ab1418380e26f36269167fcbb7e8c1f5259","url":"https://api.github.com/repos/OpenFn/adaptors/commits/35e92ab1418380e26f36269167fcbb7e8c1f5259"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4xLjA"},{"name":"@openfn/language-openmrs@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.0.1","commit":{"sha":"a4d370b1d341e1678ccfbb1ff95342fb379a16c6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a4d370b1d341e1678ccfbb1ff95342fb379a16c6"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4wLjE"},{"name":"@openfn/language-openmrs@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.0.0","commit":{"sha":"22ffe402d9d70889a2f5faa22d61d1719d33dd2a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/22ffe402d9d70889a2f5faa22d61d1719d33dd2a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4wLjA"},{"name":"@openfn/language-openmrs@0.10.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC41"},{"name":"@openfn/language-openmrs@0.10.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC40"},{"name":"@openfn/language-openmrs@0.10.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC4z"},{"name":"@openfn/language-openmrs@0.10.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC4y"},{"name":"@openfn/language-openmrs@0.10.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC4x"},{"name":"@openfn/language-openhim@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4yLjE"},{"name":"@openfn/language-openhim@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjQ"},{"name":"@openfn/language-openhim@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjM"},{"name":"@openfn/language-openhim@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjI"},{"name":"@openfn/language-openhim@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjE"},{"name":"@openfn/language-openfn@1.3.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuOA"},{"name":"@openfn/language-openfn@1.3.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNw"},{"name":"@openfn/language-openfn@1.3.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNg"},{"name":"@openfn/language-openfn@1.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNQ"},{"name":"@openfn/language-openfn@1.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNA"},{"name":"@openfn/language-openfn@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuMw"},{"name":"@openfn/language-openfn@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuMg"},{"name":"@openfn/language-openfn@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuMQ"},{"name":"@openfn/language-openfn@1.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.6","commit":{"sha":"35e92ab1418380e26f36269167fcbb7e8c1f5259","url":"https://api.github.com/repos/OpenFn/adaptors/commits/35e92ab1418380e26f36269167fcbb7e8c1f5259"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuNg"},{"name":"@openfn/language-openfn@1.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuNQ"},{"name":"@openfn/language-openfn@1.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuNA"},{"name":"@openfn/language-openfn@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuMw"},{"name":"@openfn/language-openfn@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuMg"},{"name":"@openfn/language-openfn@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuMQ"},{"name":"@openfn/language-ocl@1.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.7","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNw"},{"name":"@openfn/language-ocl@1.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.6","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNg"},{"name":"@openfn/language-ocl@1.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.5","commit":{"sha":"e6778a06c6644e59013a16fb60682e7de1c9ecb5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e6778a06c6644e59013a16fb60682e7de1c9ecb5"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNQ"},{"name":"@openfn/language-ocl@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.4","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNA"},{"name":"@openfn/language-ocl@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.3","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMw"},{"name":"@openfn/language-ocl@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.2","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMg"},{"name":"@openfn/language-ocl@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.1","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMQ"},{"name":"@openfn/language-ocl@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.0","commit":{"sha":"27492e9edf122b2d498820bdb54c3341ab7cf86e","url":"https://api.github.com/repos/OpenFn/adaptors/commits/27492e9edf122b2d498820bdb54c3341ab7cf86e"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMA"},{"name":"@openfn/language-ocl@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjAuMg"},{"name":"@openfn/language-ocl@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjAuMQ"},{"name":"@openfn/language-ocl@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.3.0","commit":{"sha":"9909077c42eaeb4231894e5138c23ad33e630c7a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/9909077c42eaeb4231894e5138c23ad33e630c7a"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjMuMA"},{"name":"@openfn/language-ocl@0.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuNg"},{"name":"@openfn/language-ocl@0.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuNQ"},{"name":"@openfn/language-ocl@0.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuNA"},{"name":"@openfn/language-ocl@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMw"},{"name":"@openfn/language-ocl@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMg"},{"name":"@openfn/language-ocl@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMQ"},{"name":"@openfn/language-ocl@0.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMA"},{"name":"@openfn/language-nexmo@0.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.3","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4z"},{"name":"@openfn/language-nexmo@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.2","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4y"},{"name":"@openfn/language-nexmo@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.1","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4x"},{"name":"@openfn/language-nexmo@0.4.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.0","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4w"},{"name":"@openfn/language-nexmo@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMy4x"},{"name":"@openfn/language-nexmo@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMi4z"},{"name":"@openfn/language-nexmo@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMi4y"},{"name":"@openfn/language-nexmo@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMi4x"},{"name":"@openfn/language-mysql@1.4.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC44"},{"name":"@openfn/language-mysql@1.4.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC43"},{"name":"@openfn/language-mysql@1.4.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC42"},{"name":"@openfn/language-mysql@1.4.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC41"},{"name":"@openfn/language-mysql@1.4.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC40"},{"name":"@openfn/language-mysql@1.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC4z"},{"name":"@openfn/language-mysql@1.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC4y"},{"name":"@openfn/language-mysql@1.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC4x"},{"name":"@openfn/language-mysql@1.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy41"},{"name":"@openfn/language-mysql@1.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy40"},{"name":"@openfn/language-mysql@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy4z"},{"name":"@openfn/language-mysql@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy4y"},{"name":"@openfn/language-mysql@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy4x"},{"name":"@openfn/language-mssql@4.1.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS44"},{"name":"@openfn/language-mssql@4.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS43"},{"name":"@openfn/language-mssql@4.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS42"},{"name":"@openfn/language-mssql@4.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS41"},{"name":"@openfn/language-mssql@4.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS40"},{"name":"@openfn/language-mssql@4.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS4z"},{"name":"@openfn/language-mssql@4.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS4y"},{"name":"@openfn/language-mssql@4.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS4x"},{"name":"@openfn/language-mssql@4.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.8","commit":{"sha":"a4d370b1d341e1678ccfbb1ff95342fb379a16c6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a4d370b1d341e1678ccfbb1ff95342fb379a16c6"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC44"},{"name":"@openfn/language-mssql@4.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.7","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC43"},{"name":"@openfn/language-mssql@4.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.6","commit":{"sha":"2426f4c77af264fca6892ee32f77556346ad4e9e","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2426f4c77af264fca6892ee32f77556346ad4e9e"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC42"},{"name":"@openfn/language-mssql@4.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC41"},{"name":"@openfn/language-mssql@4.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC40"},{"name":"@openfn/language-mssql@4.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4z"},{"name":"@openfn/language-mssql@4.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4y"},{"name":"@openfn/language-mssql@4.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4x"},{"name":"@openfn/language-mssql@4.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4w"},{"name":"@openfn/language-mssql@3.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@3.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@3.1.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDMuMS4y"},{"name":"@openfn/language-mssql@3.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@3.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@3.1.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDMuMS4x"},{"name":"@openfn/language-mssql@3.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@3.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@3.1.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDMuMS4w"},{"name":"@openfn/language-msgraph@0.4.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.4.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.4.0","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC40LjA"},{"name":"@openfn/language-msgraph@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.5","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjU"},{"name":"@openfn/language-msgraph@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.4","commit":{"sha":"dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747","url":"https://api.github.com/repos/OpenFn/adaptors/commits/dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjQ"},{"name":"@openfn/language-msgraph@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.3","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjM"},{"name":"@openfn/language-msgraph@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.2","commit":{"sha":"fa4feaead4b2a6281d1dbb1859b3760314217ca8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fa4feaead4b2a6281d1dbb1859b3760314217ca8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjI"},{"name":"@openfn/language-msgraph@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.1","commit":{"sha":"95da6f2a8492f44a92bdc403f6adc33a76ebe4d6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/95da6f2a8492f44a92bdc403f6adc33a76ebe4d6"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjE"},{"name":"@openfn/language-msgraph@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.0","commit":{"sha":"12faef5ded95acaf0b148aa9a6fdde1c0a4b7111","url":"https://api.github.com/repos/OpenFn/adaptors/commits/12faef5ded95acaf0b148aa9a6fdde1c0a4b7111"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjA"},{"name":"@openfn/language-msgraph@0.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.2.0","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4yLjA"},{"name":"@openfn/language-msgraph@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.1.1","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4xLjE"},{"name":"@openfn/language-msgraph@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.1.0","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4xLjA"},{"name":"@openfn/language-mongodb@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@2.0.0","commit":{"sha":"4aaef4ffa5da2fad3f39866838d1eeff5f7bd546","url":"https://api.github.com/repos/OpenFn/adaptors/commits/4aaef4ffa5da2fad3f39866838d1eeff5f7bd546"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMi4wLjA"},{"name":"@openfn/language-mongodb@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4xLjE"},{"name":"@openfn/language-mongodb@1.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.0.6","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4wLjY"},{"name":"@openfn/language-mongodb@1.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.0.5","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4wLjU"},{"name":"@openfn/language-mongodb@1.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.0.4","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4wLjQ"},{"name":"@openfn/language-mogli@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuNC4x"},{"name":"@openfn/language-mogli@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.4","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy40"},{"name":"@openfn/language-mogli@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy4z"},{"name":"@openfn/language-mogli@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy4y"},{"name":"@openfn/language-mogli@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy4x"},{"name":"@openfn/language-medicmobile@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.4.2","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuNC4y"},{"name":"@openfn/language-medicmobile@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuNC4x"},{"name":"@openfn/language-medicmobile@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4z"},{"name":"@openfn/language-medicmobile@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4y"},{"name":"@openfn/language-medicmobile@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4x"},{"name":"@openfn/language-medicmobile@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4w"},{"name":"@openfn/language-maximo@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjQuMQ"},{"name":"@openfn/language-maximo@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuNQ"},{"name":"@openfn/language-maximo@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.4","commit":{"sha":"d6c0c7e39242ffea633e4f5b2569027feeaed2d4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/d6c0c7e39242ffea633e4f5b2569027feeaed2d4"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuNA"},{"name":"@openfn/language-maximo@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuMw"},{"name":"@openfn/language-maximo@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuMg"},{"name":"@openfn/language-maximo@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuMQ"},{"name":"@openfn/language-mailgun@0.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.4.3","commit":{"sha":"21315b88949b585291213b5959f80eb99a7fc335","url":"https://api.github.com/repos/OpenFn/adaptors/commits/21315b88949b585291213b5959f80eb99a7fc335"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC40LjM"},{"name":"@openfn/language-mailgun@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.4.2","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC40LjI"},{"name":"@openfn/language-mailgun@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC40LjE"},{"name":"@openfn/language-mailgun@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjQ"},{"name":"@openfn/language-mailgun@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjM"},{"name":"@openfn/language-mailgun@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjI"},{"name":"@openfn/language-mailgun@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjE"},{"name":"@openfn/language-mailchimp@0.7.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.7.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.7.1","commit":{"sha":"5452145a3e54e281bd242b87386953f4e4928aae","url":"https://api.github.com/repos/OpenFn/adaptors/commits/5452145a3e54e281bd242b87386953f4e4928aae"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjcuMQ"},{"name":"@openfn/language-mailchimp@0.7.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.7.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.7.0","commit":{"sha":"f88f0ca0b5316015c36f187d9596bd34a7f51944","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f88f0ca0b5316015c36f187d9596bd34a7f51944"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjcuMA"},{"name":"@openfn/language-mailchimp@0.6.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.6.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.6.0","commit":{"sha":"dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747","url":"https://api.github.com/repos/OpenFn/adaptors/commits/dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjYuMA"},{"name":"@openfn/language-mailchimp@0.5.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.5.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.5.0","commit":{"sha":"83e4f65d59c47551e9922a6213c296335c58fdb7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/83e4f65d59c47551e9922a6213c296335c58fdb7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjUuMA"},{"name":"@openfn/language-mailchimp@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjQuMQ"},{"name":"@openfn/language-mailchimp@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuNQ"},{"name":"@openfn/language-mailchimp@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuNA"},{"name":"@openfn/language-mailchimp@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuMw"},{"name":"@openfn/language-mailchimp@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuMg"},{"name":"@openfn/language-mailchimp@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuMA"},{"name":"@openfn/language-magpi@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMS4x"},{"name":"@openfn/language-magpi@1.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.5","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC41"},{"name":"@openfn/language-magpi@1.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC40"},{"name":"@openfn/language-magpi@1.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC4z"},{"name":"@openfn/language-magpi@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC4y"},{"name":"@openfn/language-magpi@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC4x"},{"name":"@openfn/language-kobotoolbox@2.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@2.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@2.1.0","commit":{"sha":"5452145a3e54e281bd242b87386953f4e4928aae","url":"https://api.github.com/repos/OpenFn/adaptors/commits/5452145a3e54e281bd242b87386953f4e4928aae"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDIuMS4w"},{"name":"@openfn/language-kobotoolbox@2.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@2.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@2.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDIuMC4x"},{"name":"@openfn/language-kobotoolbox@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4z"},{"name":"@openfn/language-kobotoolbox@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4y"},{"name":"@openfn/language-kobotoolbox@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4x"},{"name":"@openfn/language-kobotoolbox@1.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.0","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4w"},{"name":"@openfn/language-kobotoolbox@1.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.2.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMi4w"},{"name":"@openfn/language-kobotoolbox@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.1.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMS4x"},{"name":"@openfn/language-kobotoolbox@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.1.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMS4w"},{"name":"@openfn/language-khanacademy@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuNC4x"},{"name":"@openfn/language-khanacademy@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy40"},{"name":"@openfn/language-khanacademy@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy4z"},{"name":"@openfn/language-khanacademy@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy4y"},{"name":"@openfn/language-khanacademy@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy4x"},{"name":"@openfn/language-http@5.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.4","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjQ"},{"name":"@openfn/language-http@5.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.3","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjM"},{"name":"@openfn/language-http@5.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.2","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjI"},{"name":"@openfn/language-http@5.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.1","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjE"},{"name":"@openfn/language-http@5.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.0","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjA"},{"name":"@openfn/language-http@4.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.3.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4zLjM"},{"name":"@openfn/language-http@4.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.3.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4zLjI"},{"name":"@openfn/language-http@4.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4zLjE"},{"name":"@openfn/language-http@4.2.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.8","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjg"},{"name":"@openfn/language-http@4.2.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.7","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjc"},{"name":"@openfn/language-http@4.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.6","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjY"},{"name":"@openfn/language-http@4.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.5","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjU"},{"name":"@openfn/language-http@4.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.4","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjQ"},{"name":"@openfn/language-http@4.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.3","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjM"},{"name":"@openfn/language-http@4.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.2","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjI"},{"name":"@openfn/language-http@4.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.1","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjE"},{"name":"@openfn/language-http@4.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.0","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjA"},{"name":"@openfn/language-hive@0.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-hive@0.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-hive@0.2.0","commit":{"sha":"e8f1b6b8b1b22b7f2111c90b011fef59d61e0720","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e8f1b6b8b1b22b7f2111c90b011fef59d61e0720"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWhpdmVAMC4yLjA"},{"name":"@openfn/language-googlesheets@2.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.2.2","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjIuMg"},{"name":"@openfn/language-googlesheets@2.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjIuMQ"},{"name":"@openfn/language-googlesheets@2.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.6","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuNg"},{"name":"@openfn/language-googlesheets@2.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.5","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuNQ"},{"name":"@openfn/language-googlesheets@2.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuNA"},{"name":"@openfn/language-googlesheets@2.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMw"},{"name":"@openfn/language-googlesheets@2.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMg"},{"name":"@openfn/language-googlesheets@2.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMQ"},{"name":"@openfn/language-googlesheets@2.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.0","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMA"},{"name":"@openfn/language-googlehealthcare@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlehealthcare@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlehealthcare@1.0.0","commit":{"sha":"0a5e39a9c849282bfe5b59578abd71de761a679d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0a5e39a9c849282bfe5b59578abd71de761a679d"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZWhlYWx0aGNhcmVAMS4wLjA"},{"name":"@openfn/language-googlehealthcare@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlehealthcare@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlehealthcare@0.1.0","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZWhlYWx0aGNhcmVAMC4xLjA"},{"name":"@openfn/language-googlehealthcare@0.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlehealthcare@0.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlehealthcare@0.0.1","commit":{"sha":"636d8a7f1ff21d7362cce869e7edb04f72fb1828","url":"https://api.github.com/repos/OpenFn/adaptors/commits/636d8a7f1ff21d7362cce869e7edb04f72fb1828"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZWhlYWx0aGNhcmVAMC4wLjE"},{"name":"@openfn/language-godata@3.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjMuMQ"},{"name":"@openfn/language-godata@3.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuNA"},{"name":"@openfn/language-godata@3.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuMw"},{"name":"@openfn/language-godata@3.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuMg"},{"name":"@openfn/language-godata@3.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuMQ"},{"name":"@openfn/language-fhir@3.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@3.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@3.1.0","commit":{"sha":"70c56c3a0f867754958944a1f4f7608d12ca5047","url":"https://api.github.com/repos/OpenFn/adaptors/commits/70c56c3a0f867754958944a1f4f7608d12ca5047"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMy4xLjA"},{"name":"@openfn/language-fhir@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@3.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMy4wLjE"},{"name":"@openfn/language-fhir@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@2.0.0","commit":{"sha":"00811f8d3f2fd3c58c08e3631b439c467b0fc614","url":"https://api.github.com/repos/OpenFn/adaptors/commits/00811f8d3f2fd3c58c08e3631b439c467b0fc614"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMi4wLjA"},{"name":"@openfn/language-fhir@1.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjU"},{"name":"@openfn/language-fhir@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjQ"},{"name":"@openfn/language-fhir@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjM"},{"name":"@openfn/language-fhir@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjI"},{"name":"@openfn/language-fhir@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjE"},{"name":"@openfn/language-fhir@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjA"},{"name":"@openfn/language-facebook@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.3.2","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMy4y"},{"name":"@openfn/language-facebook@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMy4x"},{"name":"@openfn/language-facebook@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMi4z"},{"name":"@openfn/language-facebook@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMi4y"},{"name":"@openfn/language-facebook@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMi4x"},{"name":"@openfn/language-dynamics@0.4.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC44"},{"name":"@openfn/language-dynamics@0.4.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC43"},{"name":"@openfn/language-dynamics@0.4.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC42"},{"name":"@openfn/language-dynamics@0.4.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC41"},{"name":"@openfn/language-dynamics@0.4.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC40"},{"name":"@openfn/language-dynamics@0.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC4z"},{"name":"@openfn/language-dynamics@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC4y"},{"name":"@openfn/language-dynamics@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC4x"},{"name":"@openfn/language-dynamics@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy41"},{"name":"@openfn/language-dynamics@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy40"},{"name":"@openfn/language-dynamics@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy4z"},{"name":"@openfn/language-dynamics@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy4y"},{"name":"@openfn/language-dynamics@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy4x"},{"name":"@openfn/language-dhis2@4.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@4.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@4.0.3","commit":{"sha":"c76ed1c521296b9abc6e9bfea25cfb347c48c642","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c76ed1c521296b9abc6e9bfea25cfb347c48c642"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDQuMC4z"},{"name":"@openfn/language-dhis2@4.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@4.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@4.0.2","commit":{"sha":"0a5e39a9c849282bfe5b59578abd71de761a679d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0a5e39a9c849282bfe5b59578abd71de761a679d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDQuMC4y"},{"name":"@openfn/language-dhis2@4.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@4.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@4.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDQuMC4x"},{"name":"@openfn/language-dhis2@3.2.12","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.12","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.12","commit":{"sha":"a4d370b1d341e1678ccfbb1ff95342fb379a16c6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a4d370b1d341e1678ccfbb1ff95342fb379a16c6"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4xMg"},{"name":"@openfn/language-dhis2@3.2.11","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.11","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.11","commit":{"sha":"0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4xMQ"},{"name":"@openfn/language-dhis2@3.2.10","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.10","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.10","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4xMA"},{"name":"@openfn/language-dhis2@3.2.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.9","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi45"},{"name":"@openfn/language-dhis2@3.2.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.8","commit":{"sha":"c1fcc05f76fd245b8892091e23385f87f5dff3fd","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c1fcc05f76fd245b8892091e23385f87f5dff3fd"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi44"},{"name":"@openfn/language-dhis2@3.2.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.7","commit":{"sha":"f5cf160440f03f0455a0251d8fc8ac6026665e49","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f5cf160440f03f0455a0251d8fc8ac6026665e49"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi43"},{"name":"@openfn/language-dhis2@3.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.6","commit":{"sha":"3b1a650aacca463493b36fc59fa10050cbec2b41","url":"https://api.github.com/repos/OpenFn/adaptors/commits/3b1a650aacca463493b36fc59fa10050cbec2b41"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi42"},{"name":"@openfn/language-dhis2@3.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.5","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi41"},{"name":"@openfn/language-dhis2@3.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.4","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi40"},{"name":"@openfn/language-dhis2@3.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.3","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4z"},{"name":"@openfn/language-dhis2@3.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.2","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4y"},{"name":"@openfn/language-dhis2@3.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.1","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4x"},{"name":"@openfn/language-dhis2@3.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.0","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4w"},{"name":"@openfn/language-common@1.11.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.11.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.11.1","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjExLjE"},{"name":"@openfn/language-common@1.11.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.11.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.11.0","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjExLjA"},{"name":"@openfn/language-common@1.10.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.3","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjM"},{"name":"@openfn/language-common@1.10.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.2","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjI"},{"name":"@openfn/language-common@1.10.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.1","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjE"},{"name":"@openfn/language-common@1.10.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.0","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjA"},{"name":"@openfn/language-common@1.9.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.9.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.9.0","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjkuMA"},{"name":"@openfn/language-common@1.8.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.8.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.8.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjguMQ"},{"name":"@openfn/language-common@1.7.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.7","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNw"},{"name":"@openfn/language-common@1.7.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.6","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNg"},{"name":"@openfn/language-common@1.7.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.5","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNQ"},{"name":"@openfn/language-common@1.7.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.4","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNA"},{"name":"@openfn/language-commcare@1.6.10","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.10","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.10","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4xMA"},{"name":"@openfn/language-commcare@1.6.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.9","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi45"},{"name":"@openfn/language-commcare@1.6.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.8","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi44"},{"name":"@openfn/language-commcare@1.6.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.7","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi43"},{"name":"@openfn/language-commcare@1.6.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.6","commit":{"sha":"0a5e39a9c849282bfe5b59578abd71de761a679d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0a5e39a9c849282bfe5b59578abd71de761a679d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi42"},{"name":"@openfn/language-commcare@1.6.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi41"},{"name":"@openfn/language-commcare@1.6.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi40"},{"name":"@openfn/language-commcare@1.6.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4z"},{"name":"@openfn/language-commcare@1.6.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4y"},{"name":"@openfn/language-commcare@1.6.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4x"},{"name":"@openfn/language-commcare@1.5.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.6","commit":{"sha":"8e44ede59f7c5ba825414a84c46b1a677b92d7e4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/8e44ede59f7c5ba825414a84c46b1a677b92d7e4"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS42"},{"name":"@openfn/language-commcare@1.5.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS41"},{"name":"@openfn/language-commcare@1.5.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS40"},{"name":"@openfn/language-commcare@1.5.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS4z"},{"name":"@openfn/language-commcare@1.5.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS4x"},{"name":"@openfn/language-commcare@1.5.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS4w"},{"name":"@openfn/language-cartodb@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4yLjE"},{"name":"@openfn/language-cartodb@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjQ"},{"name":"@openfn/language-cartodb@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjM"},{"name":"@openfn/language-cartodb@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjI"},{"name":"@openfn/language-cartodb@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjE"},{"name":"@openfn/language-bigquery@2.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.4","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC40"},{"name":"@openfn/language-bigquery@2.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.3","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4z"},{"name":"@openfn/language-bigquery@2.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.2","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4y"},{"name":"@openfn/language-bigquery@2.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.1","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4x"},{"name":"@openfn/language-bigquery@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.0","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4w"},{"name":"@openfn/language-bigquery@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.2.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMi4z"},{"name":"@openfn/language-bigquery@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.2.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMi4y"},{"name":"@openfn/language-bigquery@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMi4x"},{"name":"@openfn/language-bigquery@1.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.5","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS41"},{"name":"@openfn/language-bigquery@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.4","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS40"},{"name":"@openfn/language-bigquery@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS4z"},{"name":"@openfn/language-bigquery@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS4y"},{"name":"@openfn/language-bigquery@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.0","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS4w"},{"name":"@openfn/language-beyonic@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4yLjE"},{"name":"@openfn/language-beyonic@0.1.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.9","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjk"},{"name":"@openfn/language-beyonic@0.1.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.8","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjg"},{"name":"@openfn/language-beyonic@0.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.7","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjc"},{"name":"@openfn/language-beyonic@0.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.6","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjY"},{"name":"@openfn/language-beyonic@0.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.5","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjU"},{"name":"@openfn/language-beyonic@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.4","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjQ"},{"name":"@openfn/language-beyonic@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.3","commit":{"sha":"2baee4d9ccd7c0df60bb38e83c5d4dbcfebbf775","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2baee4d9ccd7c0df60bb38e83c5d4dbcfebbf775"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjM"},{"name":"@openfn/language-beyonic@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.2","commit":{"sha":"278e3c61a1cdcb14b452d5e7cb613414c68e1dc5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/278e3c61a1cdcb14b452d5e7cb613414c68e1dc5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjI"},{"name":"@openfn/language-beyonic@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.1","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjE"},{"name":"@openfn/language-beyonic@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjA"},{"name":"@openfn/language-asana@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@3.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDMuMC4x"},{"name":"@openfn/language-asana@2.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.6","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS42"},{"name":"@openfn/language-asana@2.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.5","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS41"},{"name":"@openfn/language-asana@2.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS40"},{"name":"@openfn/language-asana@2.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4z"},{"name":"@openfn/language-asana@2.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4y"},{"name":"@openfn/language-asana@2.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4x"},{"name":"@openfn/language-asana@2.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4w"},{"name":"@openfn/buildtools@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/buildtools@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/buildtools@1.0.2","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAInJlZnMvdGFncy9Ab3BlbmZuL2J1aWxkdG9vbHNAMS4wLjI"},{"name":"@openfn/buildtools@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/buildtools@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/buildtools@1.0.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAInJlZnMvdGFncy9Ab3BlbmZuL2J1aWxkdG9vbHNAMS4wLjE"},{"name":"import-tests@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/import-tests@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/import-tests@1.0.0","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZflrxyZWZzL3RhZ3MvaW1wb3J0LXRlc3RzQDEuMC4w"}]')),f=JSON.parse('[{"module":"asana","name":"Asana","versions":["v1.0.1","v2.0.0","v2.1.0"],"npm":"v2.1.0","public":true},{"module":"beyonic","name":"Beyonic","versions":["v0.1.3"],"npm":"v0.1.0","public":true},{"module":"cartodb","name":"Carto","versions":["v0.0.4"],"public":true},{"module":"commcare","name":"CommCareHQ","versions":["v1.2.1","v1.4.1"],"public":true},{"module":"dhis2","name":"DHIS2","versions":["v1.0.1","v1.3.0","v2.0.4","v2.0.8","v2.0.11","v3.0.1","v3.0.4","v3.0.5","v3.2.1"],"npm":"v3.2.1","public":true},{"module":"dynamics","name":"Microsoft Dynamics","versions":["v0.2.0"],"public":true},{"module":"googlesheets","name":"Google Sheets","versions":["v1.0.2","v2.0.0","v2.1.0"],"npm":"v2.1.0","public":true},{"module":"facebook","name":"Facebook Messenger","versions":["v0.1.0"],"public":true},{"module":"godata","name":"Go.Data","versions":["v3.1.0"],"public":true},{"module":"http","name":"HTTP","versions":["v2.4.15","v3.1.7","v3.1.11","v3.1.12","v4.0.0","v4.2.1"],"public":true,"npm":"v4.1.0"},{"module":"khanacademy","name":"Khan Academy","versions":["v0.2.0"],"public":true},{"module":"kobotoolbox","name":"Kobo Toolbox","versions":["v1.0.4"],"public":true},{"module":"magpi","name":"Magpi","versions":["v0.3.2"],"public":true},{"module":"mailchimp","name":"Mailchimp","versions":["v0.2.0"],"public":true},{"module":"mailgun","name":"Mailgun","versions":["v0.2.2"],"public":true},{"module":"maximo","name":"IBM Maximo EAM","versions":["v0.2.0"],"public":true},{"module":"medicmobile","name":"Medic Mobile","versions":["v0.2.0"],"public":true},{"module":"mogli","name":"Mogli SMS","versions":["v0.2.1"],"public":true},{"module":"mongodb","name":"MongoDB","versions":["v1.0.4"],"public":true},{"module":"mssql","name":"Azure/MS SQL","versions":["v2.3.3","v2.6.1","v2.6.4","v2.6.9","v2.6.11","v3.0.0","v3.1.0"],"npm":"v3.1.0","public":true},{"module":"mysql","name":"MySQL","versions":["v1.1.1","v1.2.0"],"public":true},{"module":"nexmo","name":"Nexmo","versions":["v0.1.1"],"public":true},{"module":"openfn","name":"OpenFn","versions":["v1.1.3","v1.1.4"],"public":true},{"module":"openhim","name":"OpenHIM","versions":["v0.0.3"],"public":true},{"module":"openmrs","name":"OpenMRS","versions":["v0.9.2"],"public":true},{"module":"postgresql","name":"PostgreSQL","versions":["v2.4.0","v3.1.4","v3.3.2","v3.3.1","v3.3.3","v3.4.0"],"npm":"v3.4.0","public":true},{"module":"primero","name":"Primero","versions":["v1.2.0","v2.2.3","v2.2.8","v2.3.4","v2.3.5","v2.3.6","v2.4.4","v2.7.0","v2.7.2","v2.8.0","v2.9.1","v2.9.2","v2.10.0"],"npm":"v2.9.1","public":true},{"module":"progres","name":"Progres","versions":["v1.1.0"],"public":true},{"module":"rapidpro","name":"RapidPro","versions":["v0.4.7"],"public":true},{"module":"resourcemap","name":"Resource Map","versions":["v0.1.0"],"public":true},{"module":"salesforce","name":"Salesforce","versions":["v1.3.2","v2.3.2","v2.3.5","v2.4.0","v2.6.3","v2.7.2","v2.7.3","v2.7.4","v2.8.1","v2.9.0","v2.10.0","v2.11.0"],"npm":"v2.11.0","public":true},{"module":"sftp","name":"SFTP","versions":["v0.3.3","v0.4.0","v0.6.1","v0.6.2"],"npm":"v0.6.1","public":true},{"module":"smpp","name":"SMPP","versions":["v1.1.0"],"public":true},{"module":"surveycto","name":"SurveyCTO","versions":["v1.0.0"],"public":true},{"module":"telerivet","name":"Telerivet","versions":["v0.0.2"],"public":true},{"module":"twilio","name":"Twilio","versions":["v0.2.0","v0.2.1"],"public":true},{"module":"vtiger","name":"vtiger CRM","versions":["v1.0.0"],"public":true},{"module":"zoho","name":"Zoho Reports","versions":["v0.0.2","v0.1.0"],"public":true}]');function u(){const a={};g.filter((a=>a.name.includes("language-"))).map((a=>{const e=a.name,p=e.substring(e.indexOf("-")+1,e.lastIndexOf("@")),n=e.split("@")[2];return{module:p,version:n,url:`https://github.com/OpenFn/adaptors/tree/%40openfn/language-${p}%40${n}/packages/${p}`}})).forEach((e=>{a[e.module]={module:e.module,versions:{...a[e.module]?.versions,[e.version]:{version:`v${e.version}`,url:e.url}}}})),f.forEach((e=>{a[e.module]={module:a[e.module]?.module||e.module,versions:{...a[e.module]?.versions}};e.versions.filter((a=>!e.npm||-1==l(a.substring(1),e.npm.substring(1)))).forEach((p=>{a[e.module].versions[p]={version:p,url:`https://www.github.com/openfn/language-${e.module}/tree/${p}`}}))}));return Object.values(a).sort(((a,e)=>a.module>e.module?1:e.module>a.module?-1:0)).map((a=>({...a,versions:Object.values(a.versions)})))}const h=JSON.parse('[{"name":"asana","docsId":"packages/asana-docs","readmeId":"packages/asana-readme","changelogId":"packages/asana-changelog","configurationSchemaId":"packages/asana-configuration-schema"},{"name":"beyonic","docsId":"packages/beyonic-docs","readmeId":"packages/beyonic-readme","changelogId":"packages/beyonic-changelog","configurationSchemaId":"packages/beyonic-configuration-schema"},{"name":"bigquery","docsId":"packages/bigquery-docs","readmeId":"packages/bigquery-readme","changelogId":"packages/bigquery-changelog","configurationSchemaId":"packages/bigquery-configuration-schema"},{"name":"commcare","docsId":"packages/commcare-docs","readmeId":"packages/commcare-readme","changelogId":"packages/commcare-changelog","configurationSchemaId":"packages/commcare-configuration-schema"},{"name":"common","docsId":"packages/common-docs","readmeId":"packages/common-readme","changelogId":"packages/common-changelog","configurationSchemaId":"packages/common-configuration-schema"},{"name":"dhis2","docsId":"packages/dhis2-docs","readmeId":"packages/dhis2-readme","changelogId":"packages/dhis2-changelog","configurationSchemaId":"packages/dhis2-configuration-schema"},{"name":"dynamics","docsId":"packages/dynamics-docs","readmeId":"packages/dynamics-readme","changelogId":"packages/dynamics-changelog","configurationSchemaId":"packages/dynamics-configuration-schema"},{"name":"facebook","docsId":"packages/facebook-docs","readmeId":"packages/facebook-readme","changelogId":"packages/facebook-changelog","configurationSchemaId":"packages/facebook-configuration-schema"},{"name":"fhir","docsId":"packages/fhir-docs","readmeId":"packages/fhir-readme","changelogId":"packages/fhir-changelog","configurationSchemaId":"packages/fhir-configuration-schema"},{"name":"godata","docsId":"packages/godata-docs","readmeId":"packages/godata-readme","changelogId":"packages/godata-changelog","configurationSchemaId":"packages/godata-configuration-schema"},{"name":"googlehealthcare","docsId":"packages/googlehealthcare-docs","readmeId":"packages/googlehealthcare-readme","changelogId":"packages/googlehealthcare-changelog","configurationSchemaId":"packages/googlehealthcare-configuration-schema"},{"name":"googlesheets","docsId":"packages/googlesheets-docs","readmeId":"packages/googlesheets-readme","changelogId":"packages/googlesheets-changelog","configurationSchemaId":"packages/googlesheets-configuration-schema"},{"name":"hive","docsId":"packages/hive-docs","readmeId":"packages/hive-readme","changelogId":"packages/hive-changelog","configurationSchemaId":"packages/hive-configuration-schema"},{"name":"http","docsId":"packages/http-docs","readmeId":"packages/http-readme","changelogId":"packages/http-changelog","configurationSchemaId":"packages/http-configuration-schema"},{"name":"khanacademy","docsId":"packages/khanacademy-docs","readmeId":"packages/khanacademy-readme","changelogId":"packages/khanacademy-changelog","configurationSchemaId":"packages/khanacademy-configuration-schema"},{"name":"kobotoolbox","docsId":"packages/kobotoolbox-docs","readmeId":"packages/kobotoolbox-readme","changelogId":"packages/kobotoolbox-changelog","configurationSchemaId":"packages/kobotoolbox-configuration-schema"},{"name":"magpi","docsId":"packages/magpi-docs","readmeId":"packages/magpi-readme","changelogId":"packages/magpi-changelog","configurationSchemaId":"packages/magpi-configuration-schema"},{"name":"mailchimp","docsId":"packages/mailchimp-docs","readmeId":"packages/mailchimp-readme","changelogId":"packages/mailchimp-changelog","configurationSchemaId":"packages/mailchimp-configuration-schema"},{"name":"mailgun","docsId":"packages/mailgun-docs","readmeId":"packages/mailgun-readme","changelogId":"packages/mailgun-changelog","configurationSchemaId":"packages/mailgun-configuration-schema"},{"name":"maximo","docsId":"packages/maximo-docs","readmeId":"packages/maximo-readme","changelogId":"packages/maximo-changelog","configurationSchemaId":"packages/maximo-configuration-schema"},{"name":"medicmobile","docsId":"packages/medicmobile-docs","readmeId":"packages/medicmobile-readme","changelogId":"packages/medicmobile-changelog","configurationSchemaId":"packages/medicmobile-configuration-schema"},{"name":"mogli","docsId":"packages/mogli-docs","readmeId":"packages/mogli-readme","changelogId":"packages/mogli-changelog","configurationSchemaId":"packages/mogli-configuration-schema"},{"name":"mongodb","docsId":"packages/mongodb-docs","readmeId":"packages/mongodb-readme","changelogId":"packages/mongodb-changelog","configurationSchemaId":"packages/mongodb-configuration-schema"},{"name":"msgraph","docsId":"packages/msgraph-docs","readmeId":"packages/msgraph-readme","changelogId":"packages/msgraph-changelog","configurationSchemaId":"packages/msgraph-configuration-schema"},{"name":"mssql","docsId":"packages/mssql-docs","readmeId":"packages/mssql-readme","changelogId":"packages/mssql-changelog","configurationSchemaId":"packages/mssql-configuration-schema"},{"name":"mysql","docsId":"packages/mysql-docs","readmeId":"packages/mysql-readme","changelogId":"packages/mysql-changelog","configurationSchemaId":"packages/mysql-configuration-schema"},{"name":"nexmo","docsId":"packages/nexmo-docs","readmeId":"packages/nexmo-readme","changelogId":"packages/nexmo-changelog","configurationSchemaId":"packages/nexmo-configuration-schema"},{"name":"ocl","docsId":"packages/ocl-docs","readmeId":"packages/ocl-readme","changelogId":"packages/ocl-changelog","configurationSchemaId":"packages/ocl-configuration-schema"},{"name":"openfn","docsId":"packages/openfn-docs","readmeId":"packages/openfn-readme","changelogId":"packages/openfn-changelog","configurationSchemaId":"packages/openfn-configuration-schema"},{"name":"openhim","docsId":"packages/openhim-docs","readmeId":"packages/openhim-readme","changelogId":"packages/openhim-changelog","configurationSchemaId":"packages/openhim-configuration-schema"},{"name":"openmrs","docsId":"packages/openmrs-docs","readmeId":"packages/openmrs-readme","changelogId":"packages/openmrs-changelog","configurationSchemaId":"packages/openmrs-configuration-schema"},{"name":"postgresql","docsId":"packages/postgresql-docs","readmeId":"packages/postgresql-readme","changelogId":"packages/postgresql-changelog","configurationSchemaId":"packages/postgresql-configuration-schema"},{"name":"primero","docsId":"packages/primero-docs","readmeId":"packages/primero-readme","changelogId":"packages/primero-changelog","configurationSchemaId":"packages/primero-configuration-schema"},{"name":"progres","docsId":"packages/progres-docs","readmeId":"packages/progres-readme","changelogId":"packages/progres-changelog","configurationSchemaId":"packages/progres-configuration-schema"},{"name":"rapidpro","docsId":"packages/rapidpro-docs","readmeId":"packages/rapidpro-readme","changelogId":"packages/rapidpro-changelog","configurationSchemaId":"packages/rapidpro-configuration-schema"},{"name":"resourcemap","docsId":"packages/resourcemap-docs","readmeId":"packages/resourcemap-readme","changelogId":"packages/resourcemap-changelog","configurationSchemaId":"packages/resourcemap-configuration-schema"},{"name":"salesforce","docsId":"packages/salesforce-docs","readmeId":"packages/salesforce-readme","changelogId":"packages/salesforce-changelog","configurationSchemaId":"packages/salesforce-configuration-schema"},{"name":"sftp","docsId":"packages/sftp-docs","readmeId":"packages/sftp-readme","changelogId":"packages/sftp-changelog","configurationSchemaId":"packages/sftp-configuration-schema"},{"name":"smpp","docsId":"packages/smpp-docs","readmeId":"packages/smpp-readme","changelogId":"packages/smpp-changelog","configurationSchemaId":"packages/smpp-configuration-schema"},{"name":"surveycto","docsId":"packages/surveycto-docs","readmeId":"packages/surveycto-readme","changelogId":"packages/surveycto-changelog","configurationSchemaId":"packages/surveycto-configuration-schema"},{"name":"telerivet","docsId":"packages/telerivet-docs","readmeId":"packages/telerivet-readme","changelogId":"packages/telerivet-changelog","configurationSchemaId":"packages/telerivet-configuration-schema"},{"name":"template","docsId":"packages/template-docs","readmeId":"packages/template-readme","changelogId":"packages/template-changelog","configurationSchemaId":"packages/template-configuration-schema"},{"name":"twilio","docsId":"packages/twilio-docs","readmeId":"packages/twilio-readme","changelogId":"packages/twilio-changelog","configurationSchemaId":"packages/twilio-configuration-schema"},{"name":"vtiger","docsId":"packages/vtiger-docs","readmeId":"packages/vtiger-readme","changelogId":"packages/vtiger-changelog","configurationSchemaId":"packages/vtiger-configuration-schema"},{"name":"zoho","docsId":"packages/zoho-docs","readmeId":"packages/zoho-readme","changelogId":"packages/zoho-changelog","configurationSchemaId":"packages/zoho-configuration-schema"}]'),F={id:"adaptors-intro",title:"Adaptors",sidebar_label:"Introduction",slug:"/"},O=void 0,_={unversionedId:"adaptors-intro",id:"adaptors-intro",title:"Adaptors",description:"Connect Anything.",source:"@site/adaptors/intro.mdx",sourceDirName:".",slug:"/",permalink:"/fr/adaptors/",draft:!1,tags:[],version:"current",frontMatter:{id:"adaptors-intro",title:"Adaptors",sidebar_label:"Introduction",slug:"/"},sidebar:"adaptors",next:{title:"Library Examples",permalink:"/fr/adaptors/library"}},Z={},A=[{value:"Connect Anything.",id:"connect-anything",level:2},{value:"What's an adaptor?",id:"whats-an-adaptor",level:2},{value:"Where to find them",id:"where-to-find-them",level:2},{value:"On the OpenFn platform",id:"on-the-openfn-platform",level:3},{value:"On npm",id:"on-npm",level:3},{value:"Install on platform via npm",id:"install-on-platform-via-npm",level:4},{value:"Building and extending adaptors",id:"building-and-extending-adaptors",level:2}],L={toc:A},J="wrapper";function z(a){let{components:e,...s}=a;return(0,o.kt)(J,(0,n.Z)({},L,s,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"connect-anything"},"Connect ",(0,o.kt)("em",{parentName:"h2"},"Anything.")),(0,o.kt)("p",null,"First, it's important to note that OpenFn can connect to ",(0,o.kt)("em",{parentName:"p"},"any system"),' via HTTP,\nbut our community has also built dozens of "adaptors" to save time & money while\nconnecting to most commonly used digital public goods and key ICT4D systems.'),(0,o.kt)("p",null,"You can even run web scraping or browser automation tools with OpenFn. See the\n",(0,o.kt)("a",{parentName:"p",href:"/documentation/faqs#can-openfn-integrate-with-my-custom-app"},"FAQs")," and\n",(0,o.kt)("a",{parentName:"p",href:"/documentation/source-apps"},"Generic Data Sources")," for more info on how to\nconnect to systems without custom adaptors. It's almost like a universal\ntranslator... \ud83d\udd96"),(0,o.kt)("h2",{id:"whats-an-adaptor"},"What's an adaptor?"),(0,o.kt)("p",null,'An adaptor is an open-source Javascript or Typescript module that provides\nOpenFn users with a clean set of helper functions that help communicate with a\nspecific external system. In the past, we often referred to them as "language\npackages" and the two terms are sometimes used interchangeably, but the\npreferred way of communicating about adaptors is as follows:'),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},'"What ',(0,o.kt)("em",{parentName:"li"},(0,o.kt)("strong",{parentName:"em"},"adaptor")),' is that job using?" ("That job is using\n',(0,o.kt)("inlineCode",{parentName:"li"},"language-dhis2"),'.")'),(0,o.kt)("li",{parentName:"ul"},'"The DHIS2 ',(0,o.kt)("em",{parentName:"li"},(0,o.kt)("strong",{parentName:"em"},"adaptor"))," is called ",(0,o.kt)("inlineCode",{parentName:"li"},"language-dhis2"),'."'),(0,o.kt)("li",{parentName:"ul"},"\"I don't have the right ",(0,o.kt)("em",{parentName:"li"},(0,o.kt)("strong",{parentName:"em"},"adaptor"))," for this job, let me install it by\nrunning ",(0,o.kt)("inlineCode",{parentName:"li"},"npm install @openfn/language-dhis2"),".")),(0,o.kt)("p",null,"In short, ",(0,o.kt)("em",{parentName:"p"},"most")," adaptors follow the naming convention ",(0,o.kt)("inlineCode",{parentName:"p"},"@openfn/language-xyz"),"."),(0,o.kt)("h2",{id:"where-to-find-them"},"Where to find them"),(0,o.kt)("div",null,"Here's a list of the ",u().length," publicly supported OpenFn adaptors. Note that only some have been migrated to our new and have their docs sites served here. For the rest, you can view the docs and source by clicking into the adaptor and choosing your version."),(0,o.kt)("br",null),(0,o.kt)("div",null,u().map((a=>(0,o.kt)("details",null,(0,o.kt)("summary",null,(0,o.kt)("b",null,a.module),h.find((e=>e.name==a.module))&&(0,o.kt)(t.Fragment,null," (",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).docsId}`},"docs"),")")),h.find((e=>e.name==a.module))?(0,o.kt)("div",null,"The current"," ",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).docsId}`},"API docs"),", ",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).changelogId}`},"changelog"),", and ",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).readmeId}`},"developer readme")," for ",(0,o.kt)("b",null,a.module)," are available here. You can view the source & documentation via these links:"):(0,o.kt)("div",null,"This adaptor hasn't been migrated yet, but it still works just fine and you can view the source & documentation via these links:"),(0,o.kt)("ul",null,a.versions.sort(((a,e)=>l(e.version,a.version))).map((a=>(0,o.kt)("li",null,(0,o.kt)("a",{href:a.url,target:"_blank"},a.version)," ")))))))),(0,o.kt)("h3",{id:"on-the-openfn-platform"},"On the OpenFn platform"),(0,o.kt)("p",null,'When creating or editing a job on platform, you can choose the adaptor to run\nthe job. This way you "import" the needed operations. Simply open the dropdown\nlist of adaptors, and click on one.'),(0,o.kt)("img",{src:"/img/adaptor_choice_openfn.png",width:"300"}),(0,o.kt)("h3",{id:"on-npm"},"On npm"),(0,o.kt)("p",null,"Most of our adaptors are also available on\n",(0,o.kt)("a",{parentName:"p",href:"https://www.npmjs.com/search?q=%40openfn"},"npmjs"),"."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Adaptors list in npm",src:p(57361).Z,width:"2766",height:"1266"})),(0,o.kt)("h4",{id:"install-on-platform-via-npm"},"Install on platform via npm"),(0,o.kt)("p",null,"When using ",(0,o.kt)("inlineCode",{parentName:"p"},"platform"),", you can install adaptors that are not part of the\nrecommended adaptors picklist directly from\n",(0,o.kt)("a",{parentName:"p",href:"https://www.npmjs.com/search?q=%40openfn"},"npm"),"."),(0,o.kt)("p",null,"To install from npm, click on the ",(0,o.kt)("em",{parentName:"p"},"cloud download icon")," next to the adaptor\nversion picklist. In the ",(0,o.kt)("strong",{parentName:"p"},"Select Unreleased Adaptor")," dialog box, enter the\n",(0,o.kt)("inlineCode",{parentName:"p"},"adaptor name"),"(e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"dhis2")," for ",(0,o.kt)("inlineCode",{parentName:"p"},"language-dhis2"),") and the corresponding\n",(0,o.kt)("inlineCode",{parentName:"p"},"version number"),"(e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"v2.3.4"),"), as listed on\n",(0,o.kt)("a",{parentName:"p",href:"https://www.npmjs.com/search?q=%40openfn"},"npmjs"),", for the adaptor of your\nchoice. The platform will attempt to install the selected adaptor version it can\nbe used to run the specified job."),(0,o.kt)("p",null,"Note that, after this custom installation of the adaptor, ",(0,o.kt)("inlineCode",{parentName:"p"},"platform")," will not\nadd this adaptor version to the picklist of recommended adaptors in\n",(0,o.kt)("a",{parentName:"p",href:"/documentation/jobs/job-studio"},"JobStudio"),", but you are guaranteed that the\nadaptor will be available to use in any of your jobs as long as you specify it\nvia the ",(0,o.kt)("strong",{parentName:"p"},"Select Unreleased Adaptor")," dialog."),(0,o.kt)("h2",{id:"building-and-extending-adaptors"},"Building and extending adaptors"),(0,o.kt)("p",null,"The source code and technical documentation for developing or extending existing\nadaptors can be found\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors#working-with-adaptors"},"here"),"."))}z.isMDXComponent=!0},57361:(a,e,p)=>{p.d(e,{Z:()=>n});const n=p.p+"assets/images/adaptor_npm-1ecb3d844ff20c11d9f7ee009a1d4e9a.png"}}]); \ No newline at end of file diff --git a/fr/assets/js/6cb21577.44910d30.js b/fr/assets/js/6cb21577.44910d30.js deleted file mode 100644 index 06d28c47117..00000000000 --- a/fr/assets/js/6cb21577.44910d30.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[32674],{3905:(a,e,p)=>{p.d(e,{Zo:()=>d,kt:()=>g});var n=p(67294);function t(a,e,p){return e in a?Object.defineProperty(a,e,{value:p,enumerable:!0,configurable:!0,writable:!0}):a[e]=p,a}function o(a,e){var p=Object.keys(a);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(a);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}))),p.push.apply(p,n)}return p}function l(a){for(var e=1;e=0||(t[p]=a[p]);return t}(a,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(a);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(a,p)&&(t[p]=a[p])}return t}var b=n.createContext({}),r=function(a){var e=n.useContext(b),p=e;return a&&(p="function"==typeof a?a(e):l(l({},e),a)),p},d=function(a){var e=r(a.components);return n.createElement(b.Provider,{value:e},a.children)},i="mdxType",m={inlineCode:"code",wrapper:function(a){var e=a.children;return n.createElement(n.Fragment,{},e)}},c=n.forwardRef((function(a,e){var p=a.components,t=a.mdxType,o=a.originalType,b=a.parentName,d=s(a,["components","mdxType","originalType","parentName"]),i=r(p),c=t,g=i["".concat(b,".").concat(c)]||i[c]||m[c]||o;return p?n.createElement(g,l(l({ref:e},d),{},{components:p})):n.createElement(g,l({ref:e},d))}));function g(a,e){var p=arguments,t=e&&e.mdxType;if("string"==typeof a||t){var o=p.length,l=new Array(o);l[0]=c;var s={};for(var b in e)hasOwnProperty.call(e,b)&&(s[b]=e[b]);s.originalType=a,s[i]="string"==typeof a?a:t,l[1]=s;for(var r=2;r{p.r(e),p.d(e,{assets:()=>Z,contentTitle:()=>O,default:()=>z,frontMatter:()=>F,metadata:()=>_,toc:()=>A});var n=p(87462),t=p(67294),o=p(3905);const l=(a,e)=>{const p=b(a),n=b(e),t=p.pop(),o=n.pop(),l=m(p,n);return 0!==l?l:t&&o?m(t.split("."),o.split(".")):t||o?t?-1:1:0},s=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,b=a=>{if("string"!=typeof a)throw new TypeError("Invalid argument expected string");const e=a.match(s);if(!e)throw new Error(`Invalid argument not valid semver ('${a}' received)`);return e.shift(),e},r=a=>"*"===a||"x"===a||"X"===a,d=a=>{const e=parseInt(a,10);return isNaN(e)?a:e},i=(a,e)=>{if(r(a)||r(e))return 0;const[p,n]=((a,e)=>typeof a!=typeof e?[String(a),String(e)]:[a,e])(d(a),d(e));return p>n?1:p{for(let p=0;p":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]},g=(Object.keys(c),JSON.parse('[{"name":"@openfn/migrate-adaptor@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/migrate-adaptor@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/migrate-adaptor@1.0.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL21pZ3JhdGUtYWRhcHRvckAxLjAuMQ"},{"name":"@openfn/language-zoho@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4zLjE"},{"name":"@openfn/language-zoho@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4yLjM"},{"name":"@openfn/language-zoho@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4yLjI"},{"name":"@openfn/language-zoho@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-zoho@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-zoho@0.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXpvaG9AMC4yLjE"},{"name":"@openfn/language-vtiger@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjIuMQ"},{"name":"@openfn/language-vtiger@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.1.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjEuMw"},{"name":"@openfn/language-vtiger@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.1.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjEuMg"},{"name":"@openfn/language-vtiger@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-vtiger@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-vtiger@1.1.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXZ0aWdlckAxLjEuMQ"},{"name":"@openfn/language-twilio@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjQuMQ"},{"name":"@openfn/language-twilio@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.4","commit":{"sha":"2426f4c77af264fca6892ee32f77556346ad4e9e","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2426f4c77af264fca6892ee32f77556346ad4e9e"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuNA"},{"name":"@openfn/language-twilio@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMw"},{"name":"@openfn/language-twilio@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMg"},{"name":"@openfn/language-twilio@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMQ"},{"name":"@openfn/language-twilio@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-twilio@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-twilio@0.3.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXR3aWxpb0AwLjMuMA"},{"name":"@openfn/language-template@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@3.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDMuMC4x"},{"name":"@openfn/language-template@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@2.0.0","commit":{"sha":"35e92ab1418380e26f36269167fcbb7e8c1f5259","url":"https://api.github.com/repos/OpenFn/adaptors/commits/35e92ab1418380e26f36269167fcbb7e8c1f5259"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDIuMC4w"},{"name":"@openfn/language-template@1.7.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.8","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy44"},{"name":"@openfn/language-template@1.7.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.7","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy43"},{"name":"@openfn/language-template@1.7.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.6","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy42"},{"name":"@openfn/language-template@1.7.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.5","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy41"},{"name":"@openfn/language-template@1.7.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.4","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy40"},{"name":"@openfn/language-template@1.7.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.3","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4z"},{"name":"@openfn/language-template@1.7.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.2","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4y"},{"name":"@openfn/language-template@1.7.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.1","commit":{"sha":"87c52be93bef2fb37a7d6d0df99feab5ed8611f1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/87c52be93bef2fb37a7d6d0df99feab5ed8611f1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4x"},{"name":"@openfn/language-template@1.7.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-template@1.7.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-template@1.7.0","commit":{"sha":"9b2b65c1a420ce72139677f49033fb4a3de57944","url":"https://api.github.com/repos/OpenFn/adaptors/commits/9b2b65c1a420ce72139677f49033fb4a3de57944"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbXBsYXRlQDEuNy4w"},{"name":"@openfn/language-telerivet@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjIuMQ"},{"name":"@openfn/language-telerivet@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuNA"},{"name":"@openfn/language-telerivet@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuMw"},{"name":"@openfn/language-telerivet@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuMg"},{"name":"@openfn/language-telerivet@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-telerivet@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-telerivet@0.1.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXRlbGVyaXZldEAwLjEuMA"},{"name":"@openfn/language-surveycto@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjIuMQ"},{"name":"@openfn/language-surveycto@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuNA"},{"name":"@openfn/language-surveycto@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMw"},{"name":"@openfn/language-surveycto@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMg"},{"name":"@openfn/language-surveycto@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMQ"},{"name":"@openfn/language-surveycto@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-surveycto@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-surveycto@1.1.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXN1cnZleWN0b0AxLjEuMA"},{"name":"@openfn/language-smpp@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4zLjE"},{"name":"@openfn/language-smpp@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4yLjM"},{"name":"@openfn/language-smpp@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4yLjI"},{"name":"@openfn/language-smpp@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-smpp@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-smpp@1.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNtcHBAMS4yLjE"},{"name":"@openfn/language-sftp@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@1.0.1","commit":{"sha":"c76ed1c521296b9abc6e9bfea25cfb347c48c642","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c76ed1c521296b9abc6e9bfea25cfb347c48c642"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMS4wLjE"},{"name":"@openfn/language-sftp@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@1.0.0","commit":{"sha":"65243bdaf913bdd5d17cb3984bda594290cd5c58","url":"https://api.github.com/repos/OpenFn/adaptors/commits/65243bdaf913bdd5d17cb3984bda594290cd5c58"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMS4wLjA"},{"name":"@openfn/language-sftp@0.8.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44Ljg"},{"name":"@openfn/language-sftp@0.8.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44Ljc"},{"name":"@openfn/language-sftp@0.8.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjY"},{"name":"@openfn/language-sftp@0.8.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjU"},{"name":"@openfn/language-sftp@0.8.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjQ"},{"name":"@openfn/language-sftp@0.8.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjM"},{"name":"@openfn/language-sftp@0.8.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjI"},{"name":"@openfn/language-sftp@0.8.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.8.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.8.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC44LjE"},{"name":"@openfn/language-sftp@0.7.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.3","commit":{"sha":"e50ccd9f126ca73a80bc8d0294817ca077398bf1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e50ccd9f126ca73a80bc8d0294817ca077398bf1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjM"},{"name":"@openfn/language-sftp@0.7.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.2","commit":{"sha":"7a6059dc2f1b5f79447adf7f48d36a0b7aeb2372","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7a6059dc2f1b5f79447adf7f48d36a0b7aeb2372"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjI"},{"name":"@openfn/language-sftp@0.7.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.1","commit":{"sha":"eced2b1d8f2a5399e3120ae2a2b092463a1f72f1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/eced2b1d8f2a5399e3120ae2a2b092463a1f72f1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjE"},{"name":"@openfn/language-sftp@0.7.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.7.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.7.0","commit":{"sha":"fdbbfebcabd9df25617801ad6c2147862230efc6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fdbbfebcabd9df25617801ad6c2147862230efc6"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC43LjA"},{"name":"@openfn/language-sftp@0.6.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.9","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42Ljk"},{"name":"@openfn/language-sftp@0.6.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.8","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42Ljg"},{"name":"@openfn/language-sftp@0.6.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.7","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42Ljc"},{"name":"@openfn/language-sftp@0.6.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.6","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjY"},{"name":"@openfn/language-sftp@0.6.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.5","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjU"},{"name":"@openfn/language-sftp@0.6.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.4","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjQ"},{"name":"@openfn/language-sftp@0.6.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.3","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjM"},{"name":"@openfn/language-sftp@0.6.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.2","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjI"},{"name":"@openfn/language-sftp@0.6.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-sftp@0.6.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-sftp@0.6.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNmdHBAMC42LjE"},{"name":"@openfn/language-salesforce@5.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@5.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@5.0.1","commit":{"sha":"ebdd3aacdabcb42e383715e9a22f7525341bf00c","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ebdd3aacdabcb42e383715e9a22f7525341bf00c"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANS4wLjE"},{"name":"@openfn/language-salesforce@5.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@5.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@5.0.0","commit":{"sha":"ebdd3aacdabcb42e383715e9a22f7525341bf00c","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ebdd3aacdabcb42e383715e9a22f7525341bf00c"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANS4wLjA"},{"name":"@openfn/language-salesforce@5.0.0-alpha","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@5.0.0-alpha","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@5.0.0-alpha","commit":{"sha":"ebdd3aacdabcb42e383715e9a22f7525341bf00c","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ebdd3aacdabcb42e383715e9a22f7525341bf00c"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANS4wLjAtYWxwaGE"},{"name":"@openfn/language-salesforce@4.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.2.2","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4yLjI"},{"name":"@openfn/language-salesforce@4.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.2.1","commit":{"sha":"16e1a95db48f32601b277e7ffcd9eb3bcbba85cd","url":"https://api.github.com/repos/OpenFn/adaptors/commits/16e1a95db48f32601b277e7ffcd9eb3bcbba85cd"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4yLjE"},{"name":"@openfn/language-salesforce@4.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.2.0","commit":{"sha":"377c432c960070902b0d686c2502e5d4137bc078","url":"https://api.github.com/repos/OpenFn/adaptors/commits/377c432c960070902b0d686c2502e5d4137bc078"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4yLjA"},{"name":"@openfn/language-salesforce@4.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.1.0","commit":{"sha":"a8df89d8e4537b7c1645f2db2c0f792d49535d50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a8df89d8e4537b7c1645f2db2c0f792d49535d50"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4xLjA"},{"name":"@openfn/language-salesforce@4.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.8","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjg"},{"name":"@openfn/language-salesforce@4.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.7","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjc"},{"name":"@openfn/language-salesforce@4.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.6","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjY"},{"name":"@openfn/language-salesforce@4.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjU"},{"name":"@openfn/language-salesforce@4.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjQ"},{"name":"@openfn/language-salesforce@4.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjM"},{"name":"@openfn/language-salesforce@4.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjI"},{"name":"@openfn/language-salesforce@4.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@4.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@4.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VANC4wLjE"},{"name":"@openfn/language-salesforce@3.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.7","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjc"},{"name":"@openfn/language-salesforce@3.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.6","commit":{"sha":"0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjY"},{"name":"@openfn/language-salesforce@3.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjU"},{"name":"@openfn/language-salesforce@3.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjQ"},{"name":"@openfn/language-salesforce@3.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.3","commit":{"sha":"1817f08cb8d8d586c710d5ca7e50f2f4230a2d35","url":"https://api.github.com/repos/OpenFn/adaptors/commits/1817f08cb8d8d586c710d5ca7e50f2f4230a2d35"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjM"},{"name":"@openfn/language-salesforce@3.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.2","commit":{"sha":"d6c0c7e39242ffea633e4f5b2569027feeaed2d4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/d6c0c7e39242ffea633e4f5b2569027feeaed2d4"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjI"},{"name":"@openfn/language-salesforce@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.1","commit":{"sha":"f5cf160440f03f0455a0251d8fc8ac6026665e49","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f5cf160440f03f0455a0251d8fc8ac6026665e49"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjE"},{"name":"@openfn/language-salesforce@3.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@3.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@3.0.0","commit":{"sha":"d7c2816033818da1d83656cea56c4681bf384105","url":"https://api.github.com/repos/OpenFn/adaptors/commits/d7c2816033818da1d83656cea56c4681bf384105"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMy4wLjA"},{"name":"@openfn/language-salesforce@2.12.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4z"},{"name":"@openfn/language-salesforce@2.12.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4y"},{"name":"@openfn/language-salesforce@2.12.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4x"},{"name":"@openfn/language-salesforce@2.12.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.12.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.12.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMi4w"},{"name":"@openfn/language-salesforce@2.11.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.11.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.11.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMS4y"},{"name":"@openfn/language-salesforce@2.11.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.11.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.11.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMS4x"},{"name":"@openfn/language-salesforce@2.11.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-salesforce@2.11.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-salesforce@2.11.0","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXNhbGVzZm9yY2VAMi4xMS4w"},{"name":"@openfn/language-resourcemap@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMy4x"},{"name":"@openfn/language-resourcemap@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMi4z"},{"name":"@openfn/language-resourcemap@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMi4y"},{"name":"@openfn/language-resourcemap@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-resourcemap@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-resourcemap@0.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJlc291cmNlbWFwQDAuMi4x"},{"name":"@openfn/language-rapidpro@1.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC44"},{"name":"@openfn/language-rapidpro@1.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC43"},{"name":"@openfn/language-rapidpro@1.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC42"},{"name":"@openfn/language-rapidpro@1.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC41"},{"name":"@openfn/language-rapidpro@1.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC40"},{"name":"@openfn/language-rapidpro@1.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC4z"},{"name":"@openfn/language-rapidpro@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC4y"},{"name":"@openfn/language-rapidpro@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@1.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDEuMC4x"},{"name":"@openfn/language-rapidpro@0.5.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS42"},{"name":"@openfn/language-rapidpro@0.5.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS41"},{"name":"@openfn/language-rapidpro@0.5.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS40"},{"name":"@openfn/language-rapidpro@0.5.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS4z"},{"name":"@openfn/language-rapidpro@0.5.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS4y"},{"name":"@openfn/language-rapidpro@0.5.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-rapidpro@0.5.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-rapidpro@0.5.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXJhcGlkcHJvQDAuNS4w"},{"name":"@openfn/language-progres@1.3.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjg"},{"name":"@openfn/language-progres@1.3.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjc"},{"name":"@openfn/language-progres@1.3.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjY"},{"name":"@openfn/language-progres@1.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjU"},{"name":"@openfn/language-progres@1.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjQ"},{"name":"@openfn/language-progres@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjM"},{"name":"@openfn/language-progres@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjI"},{"name":"@openfn/language-progres@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4zLjE"},{"name":"@openfn/language-progres@1.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjU"},{"name":"@openfn/language-progres@1.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjQ"},{"name":"@openfn/language-progres@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjM"},{"name":"@openfn/language-progres@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjI"},{"name":"@openfn/language-progres@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjE"},{"name":"@openfn/language-progres@1.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-progres@1.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-progres@1.2.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByb2dyZXNAMS4yLjA"},{"name":"@openfn/language-primero@2.11.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS44"},{"name":"@openfn/language-primero@2.11.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS43"},{"name":"@openfn/language-primero@2.11.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS42"},{"name":"@openfn/language-primero@2.11.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS41"},{"name":"@openfn/language-primero@2.11.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS40"},{"name":"@openfn/language-primero@2.11.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS4z"},{"name":"@openfn/language-primero@2.11.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS4y"},{"name":"@openfn/language-primero@2.11.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.11.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.11.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMS4x"},{"name":"@openfn/language-primero@2.10.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC42"},{"name":"@openfn/language-primero@2.10.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC41"},{"name":"@openfn/language-primero@2.10.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC40"},{"name":"@openfn/language-primero@2.10.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4z"},{"name":"@openfn/language-primero@2.10.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4y"},{"name":"@openfn/language-primero@2.10.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4x"},{"name":"@openfn/language-primero@2.10.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.10.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.10.0","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi4xMC4w"},{"name":"@openfn/language-primero@2.9.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.9.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.9.2","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi45LjI"},{"name":"@openfn/language-primero@2.9.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-primero@2.9.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-primero@2.9.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXByaW1lcm9AMi45LjE"},{"name":"@openfn/language-postgresql@4.1.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjg"},{"name":"@openfn/language-postgresql@4.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjc"},{"name":"@openfn/language-postgresql@4.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjY"},{"name":"@openfn/language-postgresql@4.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjU"},{"name":"@openfn/language-postgresql@4.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjQ"},{"name":"@openfn/language-postgresql@4.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjM"},{"name":"@openfn/language-postgresql@4.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjI"},{"name":"@openfn/language-postgresql@4.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4xLjE"},{"name":"@openfn/language-postgresql@4.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@4.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@4.0.0","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxANC4wLjA"},{"name":"@openfn/language-postgresql@3.4.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjY"},{"name":"@openfn/language-postgresql@3.4.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjU"},{"name":"@openfn/language-postgresql@3.4.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjQ"},{"name":"@openfn/language-postgresql@3.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjM"},{"name":"@openfn/language-postgresql@3.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjI"},{"name":"@openfn/language-postgresql@3.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjE"},{"name":"@openfn/language-postgresql@3.4.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-postgresql@3.4.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-postgresql@3.4.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAK3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLXBvc3RncmVzcWxAMy40LjA"},{"name":"@openfn/language-openmrs@2.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjg"},{"name":"@openfn/language-openmrs@2.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjc"},{"name":"@openfn/language-openmrs@2.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjY"},{"name":"@openfn/language-openmrs@2.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjU"},{"name":"@openfn/language-openmrs@2.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjQ"},{"name":"@openfn/language-openmrs@2.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjM"},{"name":"@openfn/language-openmrs@2.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjI"},{"name":"@openfn/language-openmrs@2.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@2.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@2.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMi4wLjE"},{"name":"@openfn/language-openmrs@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.1.1","commit":{"sha":"9909077c42eaeb4231894e5138c23ad33e630c7a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/9909077c42eaeb4231894e5138c23ad33e630c7a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4xLjE"},{"name":"@openfn/language-openmrs@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.1.0","commit":{"sha":"35e92ab1418380e26f36269167fcbb7e8c1f5259","url":"https://api.github.com/repos/OpenFn/adaptors/commits/35e92ab1418380e26f36269167fcbb7e8c1f5259"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4xLjA"},{"name":"@openfn/language-openmrs@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.0.1","commit":{"sha":"a4d370b1d341e1678ccfbb1ff95342fb379a16c6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a4d370b1d341e1678ccfbb1ff95342fb379a16c6"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4wLjE"},{"name":"@openfn/language-openmrs@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@1.0.0","commit":{"sha":"22ffe402d9d70889a2f5faa22d61d1719d33dd2a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/22ffe402d9d70889a2f5faa22d61d1719d33dd2a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMS4wLjA"},{"name":"@openfn/language-openmrs@0.10.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC41"},{"name":"@openfn/language-openmrs@0.10.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC40"},{"name":"@openfn/language-openmrs@0.10.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC4z"},{"name":"@openfn/language-openmrs@0.10.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC4y"},{"name":"@openfn/language-openmrs@0.10.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openmrs@0.10.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openmrs@0.10.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5tcnNAMC4xMC4x"},{"name":"@openfn/language-openhim@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4yLjE"},{"name":"@openfn/language-openhim@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjQ"},{"name":"@openfn/language-openhim@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjM"},{"name":"@openfn/language-openhim@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjI"},{"name":"@openfn/language-openhim@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openhim@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openhim@0.1.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5oaW1AMC4xLjE"},{"name":"@openfn/language-openfn@1.3.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuOA"},{"name":"@openfn/language-openfn@1.3.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNw"},{"name":"@openfn/language-openfn@1.3.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNg"},{"name":"@openfn/language-openfn@1.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNQ"},{"name":"@openfn/language-openfn@1.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuNA"},{"name":"@openfn/language-openfn@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuMw"},{"name":"@openfn/language-openfn@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuMg"},{"name":"@openfn/language-openfn@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjMuMQ"},{"name":"@openfn/language-openfn@1.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.6","commit":{"sha":"35e92ab1418380e26f36269167fcbb7e8c1f5259","url":"https://api.github.com/repos/OpenFn/adaptors/commits/35e92ab1418380e26f36269167fcbb7e8c1f5259"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuNg"},{"name":"@openfn/language-openfn@1.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuNQ"},{"name":"@openfn/language-openfn@1.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuNA"},{"name":"@openfn/language-openfn@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuMw"},{"name":"@openfn/language-openfn@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuMg"},{"name":"@openfn/language-openfn@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-openfn@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-openfn@1.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9wZW5mbkAxLjIuMQ"},{"name":"@openfn/language-ocl@1.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.7","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNw"},{"name":"@openfn/language-ocl@1.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.6","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNg"},{"name":"@openfn/language-ocl@1.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.5","commit":{"sha":"e6778a06c6644e59013a16fb60682e7de1c9ecb5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e6778a06c6644e59013a16fb60682e7de1c9ecb5"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNQ"},{"name":"@openfn/language-ocl@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.4","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuNA"},{"name":"@openfn/language-ocl@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.3","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMw"},{"name":"@openfn/language-ocl@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.2","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMg"},{"name":"@openfn/language-ocl@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.1","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMQ"},{"name":"@openfn/language-ocl@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.1.0","commit":{"sha":"27492e9edf122b2d498820bdb54c3341ab7cf86e","url":"https://api.github.com/repos/OpenFn/adaptors/commits/27492e9edf122b2d498820bdb54c3341ab7cf86e"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjEuMA"},{"name":"@openfn/language-ocl@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.0.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjAuMg"},{"name":"@openfn/language-ocl@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@1.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAxLjAuMQ"},{"name":"@openfn/language-ocl@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.3.0","commit":{"sha":"9909077c42eaeb4231894e5138c23ad33e630c7a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/9909077c42eaeb4231894e5138c23ad33e630c7a"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjMuMA"},{"name":"@openfn/language-ocl@0.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.6","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuNg"},{"name":"@openfn/language-ocl@0.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuNQ"},{"name":"@openfn/language-ocl@0.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuNA"},{"name":"@openfn/language-ocl@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMw"},{"name":"@openfn/language-ocl@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMg"},{"name":"@openfn/language-ocl@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMQ"},{"name":"@openfn/language-ocl@0.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-ocl@0.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-ocl@0.2.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW9jbEAwLjIuMA"},{"name":"@openfn/language-nexmo@0.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.3","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4z"},{"name":"@openfn/language-nexmo@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.2","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4y"},{"name":"@openfn/language-nexmo@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.1","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4x"},{"name":"@openfn/language-nexmo@0.4.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.4.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.4.0","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuNC4w"},{"name":"@openfn/language-nexmo@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMy4x"},{"name":"@openfn/language-nexmo@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMi4z"},{"name":"@openfn/language-nexmo@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMi4y"},{"name":"@openfn/language-nexmo@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-nexmo@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-nexmo@0.2.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW5leG1vQDAuMi4x"},{"name":"@openfn/language-mysql@1.4.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC44"},{"name":"@openfn/language-mysql@1.4.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC43"},{"name":"@openfn/language-mysql@1.4.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC42"},{"name":"@openfn/language-mysql@1.4.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC41"},{"name":"@openfn/language-mysql@1.4.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC40"},{"name":"@openfn/language-mysql@1.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC4z"},{"name":"@openfn/language-mysql@1.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC4y"},{"name":"@openfn/language-mysql@1.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuNC4x"},{"name":"@openfn/language-mysql@1.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy41"},{"name":"@openfn/language-mysql@1.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy40"},{"name":"@openfn/language-mysql@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy4z"},{"name":"@openfn/language-mysql@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy4y"},{"name":"@openfn/language-mysql@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mysql@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mysql@1.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW15c3FsQDEuMy4x"},{"name":"@openfn/language-mssql@4.1.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS44"},{"name":"@openfn/language-mssql@4.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS43"},{"name":"@openfn/language-mssql@4.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS42"},{"name":"@openfn/language-mssql@4.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS41"},{"name":"@openfn/language-mssql@4.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS40"},{"name":"@openfn/language-mssql@4.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS4z"},{"name":"@openfn/language-mssql@4.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS4y"},{"name":"@openfn/language-mssql@4.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMS4x"},{"name":"@openfn/language-mssql@4.0.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.8","commit":{"sha":"a4d370b1d341e1678ccfbb1ff95342fb379a16c6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a4d370b1d341e1678ccfbb1ff95342fb379a16c6"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC44"},{"name":"@openfn/language-mssql@4.0.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.7","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC43"},{"name":"@openfn/language-mssql@4.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.6","commit":{"sha":"2426f4c77af264fca6892ee32f77556346ad4e9e","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2426f4c77af264fca6892ee32f77556346ad4e9e"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC42"},{"name":"@openfn/language-mssql@4.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC41"},{"name":"@openfn/language-mssql@4.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC40"},{"name":"@openfn/language-mssql@4.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4z"},{"name":"@openfn/language-mssql@4.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4y"},{"name":"@openfn/language-mssql@4.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4x"},{"name":"@openfn/language-mssql@4.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@4.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@4.0.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDQuMC4w"},{"name":"@openfn/language-mssql@3.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@3.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@3.1.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDMuMS4y"},{"name":"@openfn/language-mssql@3.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@3.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@3.1.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDMuMS4x"},{"name":"@openfn/language-mssql@3.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mssql@3.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mssql@3.1.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zc3FsQDMuMS4w"},{"name":"@openfn/language-msgraph@0.4.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.4.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.4.0","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC40LjA"},{"name":"@openfn/language-msgraph@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.5","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjU"},{"name":"@openfn/language-msgraph@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.4","commit":{"sha":"dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747","url":"https://api.github.com/repos/OpenFn/adaptors/commits/dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjQ"},{"name":"@openfn/language-msgraph@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.3","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjM"},{"name":"@openfn/language-msgraph@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.2","commit":{"sha":"fa4feaead4b2a6281d1dbb1859b3760314217ca8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fa4feaead4b2a6281d1dbb1859b3760314217ca8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjI"},{"name":"@openfn/language-msgraph@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.1","commit":{"sha":"95da6f2a8492f44a92bdc403f6adc33a76ebe4d6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/95da6f2a8492f44a92bdc403f6adc33a76ebe4d6"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjE"},{"name":"@openfn/language-msgraph@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.3.0","commit":{"sha":"12faef5ded95acaf0b148aa9a6fdde1c0a4b7111","url":"https://api.github.com/repos/OpenFn/adaptors/commits/12faef5ded95acaf0b148aa9a6fdde1c0a4b7111"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4zLjA"},{"name":"@openfn/language-msgraph@0.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.2.0","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4yLjA"},{"name":"@openfn/language-msgraph@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.1.1","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4xLjE"},{"name":"@openfn/language-msgraph@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-msgraph@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-msgraph@0.1.0","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1zZ3JhcGhAMC4xLjA"},{"name":"@openfn/language-mongodb@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@2.0.0","commit":{"sha":"4aaef4ffa5da2fad3f39866838d1eeff5f7bd546","url":"https://api.github.com/repos/OpenFn/adaptors/commits/4aaef4ffa5da2fad3f39866838d1eeff5f7bd546"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMi4wLjA"},{"name":"@openfn/language-mongodb@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4xLjE"},{"name":"@openfn/language-mongodb@1.0.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.0.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.0.6","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4wLjY"},{"name":"@openfn/language-mongodb@1.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.0.5","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4wLjU"},{"name":"@openfn/language-mongodb@1.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mongodb@1.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mongodb@1.0.4","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vbmdvZGJAMS4wLjQ"},{"name":"@openfn/language-mogli@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuNC4x"},{"name":"@openfn/language-mogli@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.4","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy40"},{"name":"@openfn/language-mogli@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy4z"},{"name":"@openfn/language-mogli@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy4y"},{"name":"@openfn/language-mogli@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mogli@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mogli@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1vZ2xpQDAuMy4x"},{"name":"@openfn/language-medicmobile@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.4.2","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuNC4y"},{"name":"@openfn/language-medicmobile@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuNC4x"},{"name":"@openfn/language-medicmobile@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4z"},{"name":"@openfn/language-medicmobile@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4y"},{"name":"@openfn/language-medicmobile@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4x"},{"name":"@openfn/language-medicmobile@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-medicmobile@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-medicmobile@0.3.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1lZGljbW9iaWxlQDAuMy4w"},{"name":"@openfn/language-maximo@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjQuMQ"},{"name":"@openfn/language-maximo@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuNQ"},{"name":"@openfn/language-maximo@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.4","commit":{"sha":"d6c0c7e39242ffea633e4f5b2569027feeaed2d4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/d6c0c7e39242ffea633e4f5b2569027feeaed2d4"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuNA"},{"name":"@openfn/language-maximo@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuMw"},{"name":"@openfn/language-maximo@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuMg"},{"name":"@openfn/language-maximo@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-maximo@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-maximo@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1heGltb0AwLjMuMQ"},{"name":"@openfn/language-mailgun@0.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.4.3","commit":{"sha":"21315b88949b585291213b5959f80eb99a7fc335","url":"https://api.github.com/repos/OpenFn/adaptors/commits/21315b88949b585291213b5959f80eb99a7fc335"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC40LjM"},{"name":"@openfn/language-mailgun@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.4.2","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC40LjI"},{"name":"@openfn/language-mailgun@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC40LjE"},{"name":"@openfn/language-mailgun@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjQ"},{"name":"@openfn/language-mailgun@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjM"},{"name":"@openfn/language-mailgun@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjI"},{"name":"@openfn/language-mailgun@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailgun@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailgun@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxndW5AMC4zLjE"},{"name":"@openfn/language-mailchimp@0.7.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.7.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.7.1","commit":{"sha":"5452145a3e54e281bd242b87386953f4e4928aae","url":"https://api.github.com/repos/OpenFn/adaptors/commits/5452145a3e54e281bd242b87386953f4e4928aae"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjcuMQ"},{"name":"@openfn/language-mailchimp@0.7.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.7.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.7.0","commit":{"sha":"f88f0ca0b5316015c36f187d9596bd34a7f51944","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f88f0ca0b5316015c36f187d9596bd34a7f51944"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjcuMA"},{"name":"@openfn/language-mailchimp@0.6.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.6.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.6.0","commit":{"sha":"dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747","url":"https://api.github.com/repos/OpenFn/adaptors/commits/dbca3a3b63585eeb8a5ba9d0074dfd9e646d0747"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjYuMA"},{"name":"@openfn/language-mailchimp@0.5.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.5.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.5.0","commit":{"sha":"83e4f65d59c47551e9922a6213c296335c58fdb7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/83e4f65d59c47551e9922a6213c296335c58fdb7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjUuMA"},{"name":"@openfn/language-mailchimp@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjQuMQ"},{"name":"@openfn/language-mailchimp@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuNQ"},{"name":"@openfn/language-mailchimp@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuNA"},{"name":"@openfn/language-mailchimp@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuMw"},{"name":"@openfn/language-mailchimp@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuMg"},{"name":"@openfn/language-mailchimp@0.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-mailchimp@0.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-mailchimp@0.3.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1haWxjaGltcEAwLjMuMA"},{"name":"@openfn/language-magpi@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.1.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMS4x"},{"name":"@openfn/language-magpi@1.0.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.5","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC41"},{"name":"@openfn/language-magpi@1.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC40"},{"name":"@openfn/language-magpi@1.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC4z"},{"name":"@openfn/language-magpi@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC4y"},{"name":"@openfn/language-magpi@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-magpi@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-magpi@1.0.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLW1hZ3BpQDEuMC4x"},{"name":"@openfn/language-kobotoolbox@2.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@2.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@2.1.0","commit":{"sha":"5452145a3e54e281bd242b87386953f4e4928aae","url":"https://api.github.com/repos/OpenFn/adaptors/commits/5452145a3e54e281bd242b87386953f4e4928aae"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDIuMS4w"},{"name":"@openfn/language-kobotoolbox@2.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@2.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@2.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDIuMC4x"},{"name":"@openfn/language-kobotoolbox@1.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4z"},{"name":"@openfn/language-kobotoolbox@1.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4y"},{"name":"@openfn/language-kobotoolbox@1.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.1","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4x"},{"name":"@openfn/language-kobotoolbox@1.3.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.3.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.3.0","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMy4w"},{"name":"@openfn/language-kobotoolbox@1.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.2.0","commit":{"sha":"baf4c44731afd61bceb8496b778b2543973ee6b4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/baf4c44731afd61bceb8496b778b2543973ee6b4"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMi4w"},{"name":"@openfn/language-kobotoolbox@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.1.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMS4x"},{"name":"@openfn/language-kobotoolbox@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-kobotoolbox@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-kobotoolbox@1.1.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtvYm90b29sYm94QDEuMS4w"},{"name":"@openfn/language-khanacademy@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuNC4x"},{"name":"@openfn/language-khanacademy@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy40"},{"name":"@openfn/language-khanacademy@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy4z"},{"name":"@openfn/language-khanacademy@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy4y"},{"name":"@openfn/language-khanacademy@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-khanacademy@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-khanacademy@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWtoYW5hY2FkZW15QDAuMy4x"},{"name":"@openfn/language-http@5.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.4","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjQ"},{"name":"@openfn/language-http@5.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.3","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjM"},{"name":"@openfn/language-http@5.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.2","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjI"},{"name":"@openfn/language-http@5.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.1","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjE"},{"name":"@openfn/language-http@5.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@5.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@5.0.0","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANS4wLjA"},{"name":"@openfn/language-http@4.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.3.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4zLjM"},{"name":"@openfn/language-http@4.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.3.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4zLjI"},{"name":"@openfn/language-http@4.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4zLjE"},{"name":"@openfn/language-http@4.2.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.8","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjg"},{"name":"@openfn/language-http@4.2.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.7","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjc"},{"name":"@openfn/language-http@4.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.6","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjY"},{"name":"@openfn/language-http@4.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.5","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjU"},{"name":"@openfn/language-http@4.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.4","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjQ"},{"name":"@openfn/language-http@4.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.3","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjM"},{"name":"@openfn/language-http@4.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.2","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjI"},{"name":"@openfn/language-http@4.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.1","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjE"},{"name":"@openfn/language-http@4.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-http@4.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-http@4.2.0","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWh0dHBANC4yLjA"},{"name":"@openfn/language-hive@0.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-hive@0.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-hive@0.2.0","commit":{"sha":"e8f1b6b8b1b22b7f2111c90b011fef59d61e0720","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e8f1b6b8b1b22b7f2111c90b011fef59d61e0720"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWhpdmVAMC4yLjA"},{"name":"@openfn/language-googlesheets@2.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.2.2","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjIuMg"},{"name":"@openfn/language-googlesheets@2.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjIuMQ"},{"name":"@openfn/language-googlesheets@2.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.6","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuNg"},{"name":"@openfn/language-googlesheets@2.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.5","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuNQ"},{"name":"@openfn/language-googlesheets@2.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuNA"},{"name":"@openfn/language-googlesheets@2.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMw"},{"name":"@openfn/language-googlesheets@2.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMg"},{"name":"@openfn/language-googlesheets@2.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMQ"},{"name":"@openfn/language-googlesheets@2.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlesheets@2.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlesheets@2.1.0","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoALXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZXNoZWV0c0AyLjEuMA"},{"name":"@openfn/language-googlehealthcare@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlehealthcare@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlehealthcare@1.0.0","commit":{"sha":"0a5e39a9c849282bfe5b59578abd71de761a679d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0a5e39a9c849282bfe5b59578abd71de761a679d"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZWhlYWx0aGNhcmVAMS4wLjA"},{"name":"@openfn/language-googlehealthcare@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlehealthcare@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlehealthcare@0.1.0","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZWhlYWx0aGNhcmVAMC4xLjA"},{"name":"@openfn/language-googlehealthcare@0.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-googlehealthcare@0.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-googlehealthcare@0.0.1","commit":{"sha":"636d8a7f1ff21d7362cce869e7edb04f72fb1828","url":"https://api.github.com/repos/OpenFn/adaptors/commits/636d8a7f1ff21d7362cce869e7edb04f72fb1828"},"node_id":"REF_kwDOIJZfltoAMXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvb2dsZWhlYWx0aGNhcmVAMC4wLjE"},{"name":"@openfn/language-godata@3.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjMuMQ"},{"name":"@openfn/language-godata@3.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuNA"},{"name":"@openfn/language-godata@3.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuMw"},{"name":"@openfn/language-godata@3.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuMg"},{"name":"@openfn/language-godata@3.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-godata@3.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-godata@3.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWdvZGF0YUAzLjIuMQ"},{"name":"@openfn/language-fhir@3.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@3.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@3.1.0","commit":{"sha":"70c56c3a0f867754958944a1f4f7608d12ca5047","url":"https://api.github.com/repos/OpenFn/adaptors/commits/70c56c3a0f867754958944a1f4f7608d12ca5047"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMy4xLjA"},{"name":"@openfn/language-fhir@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@3.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMy4wLjE"},{"name":"@openfn/language-fhir@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@2.0.0","commit":{"sha":"00811f8d3f2fd3c58c08e3631b439c467b0fc614","url":"https://api.github.com/repos/OpenFn/adaptors/commits/00811f8d3f2fd3c58c08e3631b439c467b0fc614"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMi4wLjA"},{"name":"@openfn/language-fhir@1.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.5","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjU"},{"name":"@openfn/language-fhir@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.4","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjQ"},{"name":"@openfn/language-fhir@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjM"},{"name":"@openfn/language-fhir@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.2","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjI"},{"name":"@openfn/language-fhir@1.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjE"},{"name":"@openfn/language-fhir@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-fhir@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-fhir@1.1.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZoaXJAMS4xLjA"},{"name":"@openfn/language-facebook@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.3.2","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMy4y"},{"name":"@openfn/language-facebook@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.3.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMy4x"},{"name":"@openfn/language-facebook@0.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.2.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMi4z"},{"name":"@openfn/language-facebook@0.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.2.2","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMi4y"},{"name":"@openfn/language-facebook@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-facebook@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-facebook@0.2.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWZhY2Vib29rQDAuMi4x"},{"name":"@openfn/language-dynamics@0.4.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.8","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC44"},{"name":"@openfn/language-dynamics@0.4.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.7","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC43"},{"name":"@openfn/language-dynamics@0.4.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.6","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC42"},{"name":"@openfn/language-dynamics@0.4.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC41"},{"name":"@openfn/language-dynamics@0.4.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC40"},{"name":"@openfn/language-dynamics@0.4.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC4z"},{"name":"@openfn/language-dynamics@0.4.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC4y"},{"name":"@openfn/language-dynamics@0.4.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.4.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.4.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuNC4x"},{"name":"@openfn/language-dynamics@0.3.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy41"},{"name":"@openfn/language-dynamics@0.3.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy40"},{"name":"@openfn/language-dynamics@0.3.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy4z"},{"name":"@openfn/language-dynamics@0.3.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy4y"},{"name":"@openfn/language-dynamics@0.3.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dynamics@0.3.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dynamics@0.3.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWR5bmFtaWNzQDAuMy4x"},{"name":"@openfn/language-dhis2@4.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@4.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@4.0.3","commit":{"sha":"c76ed1c521296b9abc6e9bfea25cfb347c48c642","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c76ed1c521296b9abc6e9bfea25cfb347c48c642"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDQuMC4z"},{"name":"@openfn/language-dhis2@4.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@4.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@4.0.2","commit":{"sha":"0a5e39a9c849282bfe5b59578abd71de761a679d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0a5e39a9c849282bfe5b59578abd71de761a679d"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDQuMC4y"},{"name":"@openfn/language-dhis2@4.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@4.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@4.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDQuMC4x"},{"name":"@openfn/language-dhis2@3.2.12","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.12","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.12","commit":{"sha":"a4d370b1d341e1678ccfbb1ff95342fb379a16c6","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a4d370b1d341e1678ccfbb1ff95342fb379a16c6"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4xMg"},{"name":"@openfn/language-dhis2@3.2.11","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.11","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.11","commit":{"sha":"0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0bdc5ee1f7f14ee15bc4614fd6d4f44907e986d1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4xMQ"},{"name":"@openfn/language-dhis2@3.2.10","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.10","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.10","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4xMA"},{"name":"@openfn/language-dhis2@3.2.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.9","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi45"},{"name":"@openfn/language-dhis2@3.2.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.8","commit":{"sha":"c1fcc05f76fd245b8892091e23385f87f5dff3fd","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c1fcc05f76fd245b8892091e23385f87f5dff3fd"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi44"},{"name":"@openfn/language-dhis2@3.2.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.7","commit":{"sha":"f5cf160440f03f0455a0251d8fc8ac6026665e49","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f5cf160440f03f0455a0251d8fc8ac6026665e49"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi43"},{"name":"@openfn/language-dhis2@3.2.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.6","commit":{"sha":"3b1a650aacca463493b36fc59fa10050cbec2b41","url":"https://api.github.com/repos/OpenFn/adaptors/commits/3b1a650aacca463493b36fc59fa10050cbec2b41"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi42"},{"name":"@openfn/language-dhis2@3.2.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.5","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi41"},{"name":"@openfn/language-dhis2@3.2.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.4","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi40"},{"name":"@openfn/language-dhis2@3.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.3","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4z"},{"name":"@openfn/language-dhis2@3.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.2","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4y"},{"name":"@openfn/language-dhis2@3.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.1","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4x"},{"name":"@openfn/language-dhis2@3.2.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-dhis2@3.2.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-dhis2@3.2.0","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWRoaXMyQDMuMi4w"},{"name":"@openfn/language-common@1.11.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.11.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.11.1","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjExLjE"},{"name":"@openfn/language-common@1.11.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.11.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.11.0","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjExLjA"},{"name":"@openfn/language-common@1.10.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.3","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjM"},{"name":"@openfn/language-common@1.10.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.2","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjI"},{"name":"@openfn/language-common@1.10.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.1","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjE"},{"name":"@openfn/language-common@1.10.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.10.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.10.0","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjEwLjA"},{"name":"@openfn/language-common@1.9.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.9.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.9.0","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjkuMA"},{"name":"@openfn/language-common@1.8.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.8.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.8.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjguMQ"},{"name":"@openfn/language-common@1.7.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.7","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNw"},{"name":"@openfn/language-common@1.7.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.6","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNg"},{"name":"@openfn/language-common@1.7.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.5","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNQ"},{"name":"@openfn/language-common@1.7.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-common@1.7.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-common@1.7.4","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJ3JlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1vbkAxLjcuNA"},{"name":"@openfn/language-commcare@1.6.10","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.10","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.10","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4xMA"},{"name":"@openfn/language-commcare@1.6.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.9","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi45"},{"name":"@openfn/language-commcare@1.6.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.8","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi44"},{"name":"@openfn/language-commcare@1.6.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.7","commit":{"sha":"a71941741922908af34c3d6dd7edb744716ce85b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a71941741922908af34c3d6dd7edb744716ce85b"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi43"},{"name":"@openfn/language-commcare@1.6.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.6","commit":{"sha":"0a5e39a9c849282bfe5b59578abd71de761a679d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/0a5e39a9c849282bfe5b59578abd71de761a679d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi42"},{"name":"@openfn/language-commcare@1.6.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.5","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi41"},{"name":"@openfn/language-commcare@1.6.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.4","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi40"},{"name":"@openfn/language-commcare@1.6.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4z"},{"name":"@openfn/language-commcare@1.6.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4y"},{"name":"@openfn/language-commcare@1.6.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.6.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.6.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNi4x"},{"name":"@openfn/language-commcare@1.5.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.6","commit":{"sha":"8e44ede59f7c5ba825414a84c46b1a677b92d7e4","url":"https://api.github.com/repos/OpenFn/adaptors/commits/8e44ede59f7c5ba825414a84c46b1a677b92d7e4"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS42"},{"name":"@openfn/language-commcare@1.5.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.5","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS41"},{"name":"@openfn/language-commcare@1.5.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS40"},{"name":"@openfn/language-commcare@1.5.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.3","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS4z"},{"name":"@openfn/language-commcare@1.5.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.1","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS4x"},{"name":"@openfn/language-commcare@1.5.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-commcare@1.5.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-commcare@1.5.0","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNvbW1jYXJlQDEuNS4w"},{"name":"@openfn/language-cartodb@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4yLjE"},{"name":"@openfn/language-cartodb@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.4","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjQ"},{"name":"@openfn/language-cartodb@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.3","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjM"},{"name":"@openfn/language-cartodb@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjI"},{"name":"@openfn/language-cartodb@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-cartodb@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-cartodb@0.1.1","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWNhcnRvZGJAMC4xLjE"},{"name":"@openfn/language-bigquery@2.0.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.4","commit":{"sha":"fe3789ff8a1bbc7137bef87f3271610e1535b2d9","url":"https://api.github.com/repos/OpenFn/adaptors/commits/fe3789ff8a1bbc7137bef87f3271610e1535b2d9"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC40"},{"name":"@openfn/language-bigquery@2.0.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.3","commit":{"sha":"f4439b104f8a6f9a32386059b8d2562c8efa944a","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f4439b104f8a6f9a32386059b8d2562c8efa944a"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4z"},{"name":"@openfn/language-bigquery@2.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.2","commit":{"sha":"02a36312658530f5f360c6c1de3b5ef4e9ec8c3d","url":"https://api.github.com/repos/OpenFn/adaptors/commits/02a36312658530f5f360c6c1de3b5ef4e9ec8c3d"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4y"},{"name":"@openfn/language-bigquery@2.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.1","commit":{"sha":"e08f827ff06704b59cd6b9f2f900f6fecb769dba","url":"https://api.github.com/repos/OpenFn/adaptors/commits/e08f827ff06704b59cd6b9f2f900f6fecb769dba"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4x"},{"name":"@openfn/language-bigquery@2.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@2.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@2.0.0","commit":{"sha":"33db28cfd5bbd3de34b5fb55b664684ca8262d99","url":"https://api.github.com/repos/OpenFn/adaptors/commits/33db28cfd5bbd3de34b5fb55b664684ca8262d99"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDIuMC4w"},{"name":"@openfn/language-bigquery@1.2.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.2.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.2.3","commit":{"sha":"7034947eded80f6dc69681be3ec61a7dd38dbcd8","url":"https://api.github.com/repos/OpenFn/adaptors/commits/7034947eded80f6dc69681be3ec61a7dd38dbcd8"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMi4z"},{"name":"@openfn/language-bigquery@1.2.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.2.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.2.2","commit":{"sha":"2255f007ec481b8216a57775629951832af7a136","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2255f007ec481b8216a57775629951832af7a136"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMi4y"},{"name":"@openfn/language-bigquery@1.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMi4x"},{"name":"@openfn/language-bigquery@1.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.5","commit":{"sha":"a15f86e741a7b07234af7461f47ae2464bc14f4b","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a15f86e741a7b07234af7461f47ae2464bc14f4b"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS41"},{"name":"@openfn/language-bigquery@1.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.4","commit":{"sha":"88bf938239e5fadb59e03aaab183e629b1b7eed1","url":"https://api.github.com/repos/OpenFn/adaptors/commits/88bf938239e5fadb59e03aaab183e629b1b7eed1"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS40"},{"name":"@openfn/language-bigquery@1.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.3","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS4z"},{"name":"@openfn/language-bigquery@1.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.2","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS4y"},{"name":"@openfn/language-bigquery@1.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-bigquery@1.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-bigquery@1.1.0","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKXJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJpZ3F1ZXJ5QDEuMS4w"},{"name":"@openfn/language-beyonic@0.2.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.2.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.2.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4yLjE"},{"name":"@openfn/language-beyonic@0.1.9","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.9","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.9","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjk"},{"name":"@openfn/language-beyonic@0.1.8","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.8","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.8","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjg"},{"name":"@openfn/language-beyonic@0.1.7","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.7","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.7","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjc"},{"name":"@openfn/language-beyonic@0.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.6","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjY"},{"name":"@openfn/language-beyonic@0.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.5","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjU"},{"name":"@openfn/language-beyonic@0.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.4","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjQ"},{"name":"@openfn/language-beyonic@0.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.3","commit":{"sha":"2baee4d9ccd7c0df60bb38e83c5d4dbcfebbf775","url":"https://api.github.com/repos/OpenFn/adaptors/commits/2baee4d9ccd7c0df60bb38e83c5d4dbcfebbf775"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjM"},{"name":"@openfn/language-beyonic@0.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.2","commit":{"sha":"278e3c61a1cdcb14b452d5e7cb613414c68e1dc5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/278e3c61a1cdcb14b452d5e7cb613414c68e1dc5"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjI"},{"name":"@openfn/language-beyonic@0.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.1","commit":{"sha":"07f0d0452a809c6ea0445af5d32ec1cac0d06a64","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07f0d0452a809c6ea0445af5d32ec1cac0d06a64"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjE"},{"name":"@openfn/language-beyonic@0.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-beyonic@0.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-beyonic@0.1.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAKHJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWJleW9uaWNAMC4xLjA"},{"name":"@openfn/language-asana@3.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@3.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@3.0.1","commit":{"sha":"f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f6c8aa278ae6ebc1a8b38ad1d2732d21c5ff0c50"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDMuMC4x"},{"name":"@openfn/language-asana@2.1.6","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.6","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.6","commit":{"sha":"07100dd92aad7a94d1ca53408111a2af3dd5bd57","url":"https://api.github.com/repos/OpenFn/adaptors/commits/07100dd92aad7a94d1ca53408111a2af3dd5bd57"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS42"},{"name":"@openfn/language-asana@2.1.5","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.5","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.5","commit":{"sha":"a746588bab509b39868d07ac888165646154a0b7","url":"https://api.github.com/repos/OpenFn/adaptors/commits/a746588bab509b39868d07ac888165646154a0b7"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS41"},{"name":"@openfn/language-asana@2.1.4","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.4","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.4","commit":{"sha":"b71a980acddfefff6c09138289ea4c08b84478af","url":"https://api.github.com/repos/OpenFn/adaptors/commits/b71a980acddfefff6c09138289ea4c08b84478af"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS40"},{"name":"@openfn/language-asana@2.1.3","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.3","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.3","commit":{"sha":"f626ab9fd3e0db58822203f969eb1789e0a2b8d5","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f626ab9fd3e0db58822203f969eb1789e0a2b8d5"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4z"},{"name":"@openfn/language-asana@2.1.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.2","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4y"},{"name":"@openfn/language-asana@2.1.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.1","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4x"},{"name":"@openfn/language-asana@2.1.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/language-asana@2.1.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/language-asana@2.1.0","commit":{"sha":"ea3e071eaf01b4bb93482eabb0899575c73db406","url":"https://api.github.com/repos/OpenFn/adaptors/commits/ea3e071eaf01b4bb93482eabb0899575c73db406"},"node_id":"REF_kwDOIJZfltoAJnJlZnMvdGFncy9Ab3BlbmZuL2xhbmd1YWdlLWFzYW5hQDIuMS4w"},{"name":"@openfn/buildtools@1.0.2","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/buildtools@1.0.2","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/buildtools@1.0.2","commit":{"sha":"c614ba7cc6c5ed111dce505da32f6604e50a8008","url":"https://api.github.com/repos/OpenFn/adaptors/commits/c614ba7cc6c5ed111dce505da32f6604e50a8008"},"node_id":"REF_kwDOIJZfltoAInJlZnMvdGFncy9Ab3BlbmZuL2J1aWxkdG9vbHNAMS4wLjI"},{"name":"@openfn/buildtools@1.0.1","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/@openfn/buildtools@1.0.1","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/@openfn/buildtools@1.0.1","commit":{"sha":"864af04f8a0def040b9dc1f7b406bdae6318fb42","url":"https://api.github.com/repos/OpenFn/adaptors/commits/864af04f8a0def040b9dc1f7b406bdae6318fb42"},"node_id":"REF_kwDOIJZfltoAInJlZnMvdGFncy9Ab3BlbmZuL2J1aWxkdG9vbHNAMS4wLjE"},{"name":"import-tests@1.0.0","zipball_url":"https://api.github.com/repos/OpenFn/adaptors/zipball/refs/tags/import-tests@1.0.0","tarball_url":"https://api.github.com/repos/OpenFn/adaptors/tarball/refs/tags/import-tests@1.0.0","commit":{"sha":"f0f34fde0ad12d0fae696475cd3320a57500b2ef","url":"https://api.github.com/repos/OpenFn/adaptors/commits/f0f34fde0ad12d0fae696475cd3320a57500b2ef"},"node_id":"REF_kwDOIJZflrxyZWZzL3RhZ3MvaW1wb3J0LXRlc3RzQDEuMC4w"}]')),f=JSON.parse('[{"module":"asana","name":"Asana","versions":["v1.0.1","v2.0.0","v2.1.0"],"npm":"v2.1.0","public":true},{"module":"beyonic","name":"Beyonic","versions":["v0.1.3"],"npm":"v0.1.0","public":true},{"module":"cartodb","name":"Carto","versions":["v0.0.4"],"public":true},{"module":"commcare","name":"CommCareHQ","versions":["v1.2.1","v1.4.1"],"public":true},{"module":"dhis2","name":"DHIS2","versions":["v1.0.1","v1.3.0","v2.0.4","v2.0.8","v2.0.11","v3.0.1","v3.0.4","v3.0.5","v3.2.1"],"npm":"v3.2.1","public":true},{"module":"dynamics","name":"Microsoft Dynamics","versions":["v0.2.0"],"public":true},{"module":"googlesheets","name":"Google Sheets","versions":["v1.0.2","v2.0.0","v2.1.0"],"npm":"v2.1.0","public":true},{"module":"facebook","name":"Facebook Messenger","versions":["v0.1.0"],"public":true},{"module":"godata","name":"Go.Data","versions":["v3.1.0"],"public":true},{"module":"http","name":"HTTP","versions":["v2.4.15","v3.1.7","v3.1.11","v3.1.12","v4.0.0","v4.2.1"],"public":true,"npm":"v4.1.0"},{"module":"khanacademy","name":"Khan Academy","versions":["v0.2.0"],"public":true},{"module":"kobotoolbox","name":"Kobo Toolbox","versions":["v1.0.4"],"public":true},{"module":"magpi","name":"Magpi","versions":["v0.3.2"],"public":true},{"module":"mailchimp","name":"Mailchimp","versions":["v0.2.0"],"public":true},{"module":"mailgun","name":"Mailgun","versions":["v0.2.2"],"public":true},{"module":"maximo","name":"IBM Maximo EAM","versions":["v0.2.0"],"public":true},{"module":"medicmobile","name":"Medic Mobile","versions":["v0.2.0"],"public":true},{"module":"mogli","name":"Mogli SMS","versions":["v0.2.1"],"public":true},{"module":"mongodb","name":"MongoDB","versions":["v1.0.4"],"public":true},{"module":"mssql","name":"Azure/MS SQL","versions":["v2.3.3","v2.6.1","v2.6.4","v2.6.9","v2.6.11","v3.0.0","v3.1.0"],"npm":"v3.1.0","public":true},{"module":"mysql","name":"MySQL","versions":["v1.1.1","v1.2.0"],"public":true},{"module":"nexmo","name":"Nexmo","versions":["v0.1.1"],"public":true},{"module":"openfn","name":"OpenFn","versions":["v1.1.3","v1.1.4"],"public":true},{"module":"openhim","name":"OpenHIM","versions":["v0.0.3"],"public":true},{"module":"openmrs","name":"OpenMRS","versions":["v0.9.2"],"public":true},{"module":"postgresql","name":"PostgreSQL","versions":["v2.4.0","v3.1.4","v3.3.2","v3.3.1","v3.3.3","v3.4.0"],"npm":"v3.4.0","public":true},{"module":"primero","name":"Primero","versions":["v1.2.0","v2.2.3","v2.2.8","v2.3.4","v2.3.5","v2.3.6","v2.4.4","v2.7.0","v2.7.2","v2.8.0","v2.9.1","v2.9.2","v2.10.0"],"npm":"v2.9.1","public":true},{"module":"progres","name":"Progres","versions":["v1.1.0"],"public":true},{"module":"rapidpro","name":"RapidPro","versions":["v0.4.7"],"public":true},{"module":"resourcemap","name":"Resource Map","versions":["v0.1.0"],"public":true},{"module":"salesforce","name":"Salesforce","versions":["v1.3.2","v2.3.2","v2.3.5","v2.4.0","v2.6.3","v2.7.2","v2.7.3","v2.7.4","v2.8.1","v2.9.0","v2.10.0","v2.11.0"],"npm":"v2.11.0","public":true},{"module":"sftp","name":"SFTP","versions":["v0.3.3","v0.4.0","v0.6.1","v0.6.2"],"npm":"v0.6.1","public":true},{"module":"smpp","name":"SMPP","versions":["v1.1.0"],"public":true},{"module":"surveycto","name":"SurveyCTO","versions":["v1.0.0"],"public":true},{"module":"telerivet","name":"Telerivet","versions":["v0.0.2"],"public":true},{"module":"twilio","name":"Twilio","versions":["v0.2.0","v0.2.1"],"public":true},{"module":"vtiger","name":"vtiger CRM","versions":["v1.0.0"],"public":true},{"module":"zoho","name":"Zoho Reports","versions":["v0.0.2","v0.1.0"],"public":true}]');function u(){const a={};g.filter((a=>a.name.includes("language-"))).map((a=>{const e=a.name,p=e.substring(e.indexOf("-")+1,e.lastIndexOf("@")),n=e.split("@")[2];return{module:p,version:n,url:`https://github.com/OpenFn/adaptors/tree/%40openfn/language-${p}%40${n}/packages/${p}`}})).forEach((e=>{a[e.module]={module:e.module,versions:{...a[e.module]?.versions,[e.version]:{version:`v${e.version}`,url:e.url}}}})),f.forEach((e=>{a[e.module]={module:a[e.module]?.module||e.module,versions:{...a[e.module]?.versions}};e.versions.filter((a=>!e.npm||-1==l(a.substring(1),e.npm.substring(1)))).forEach((p=>{a[e.module].versions[p]={version:p,url:`https://www.github.com/openfn/language-${e.module}/tree/${p}`}}))}));return Object.values(a).sort(((a,e)=>a.module>e.module?1:e.module>a.module?-1:0)).map((a=>({...a,versions:Object.values(a.versions)})))}const h=JSON.parse('[{"name":"asana","docsId":"packages/asana-docs","readmeId":"packages/asana-readme","changelogId":"packages/asana-changelog","configurationSchemaId":"packages/asana-configuration-schema"},{"name":"beyonic","docsId":"packages/beyonic-docs","readmeId":"packages/beyonic-readme","changelogId":"packages/beyonic-changelog","configurationSchemaId":"packages/beyonic-configuration-schema"},{"name":"bigquery","docsId":"packages/bigquery-docs","readmeId":"packages/bigquery-readme","changelogId":"packages/bigquery-changelog","configurationSchemaId":"packages/bigquery-configuration-schema"},{"name":"commcare","docsId":"packages/commcare-docs","readmeId":"packages/commcare-readme","changelogId":"packages/commcare-changelog","configurationSchemaId":"packages/commcare-configuration-schema"},{"name":"common","docsId":"packages/common-docs","readmeId":"packages/common-readme","changelogId":"packages/common-changelog","configurationSchemaId":"packages/common-configuration-schema"},{"name":"dhis2","docsId":"packages/dhis2-docs","readmeId":"packages/dhis2-readme","changelogId":"packages/dhis2-changelog","configurationSchemaId":"packages/dhis2-configuration-schema"},{"name":"dynamics","docsId":"packages/dynamics-docs","readmeId":"packages/dynamics-readme","changelogId":"packages/dynamics-changelog","configurationSchemaId":"packages/dynamics-configuration-schema"},{"name":"facebook","docsId":"packages/facebook-docs","readmeId":"packages/facebook-readme","changelogId":"packages/facebook-changelog","configurationSchemaId":"packages/facebook-configuration-schema"},{"name":"fhir","docsId":"packages/fhir-docs","readmeId":"packages/fhir-readme","changelogId":"packages/fhir-changelog","configurationSchemaId":"packages/fhir-configuration-schema"},{"name":"godata","docsId":"packages/godata-docs","readmeId":"packages/godata-readme","changelogId":"packages/godata-changelog","configurationSchemaId":"packages/godata-configuration-schema"},{"name":"googlehealthcare","docsId":"packages/googlehealthcare-docs","readmeId":"packages/googlehealthcare-readme","changelogId":"packages/googlehealthcare-changelog","configurationSchemaId":"packages/googlehealthcare-configuration-schema"},{"name":"googlesheets","docsId":"packages/googlesheets-docs","readmeId":"packages/googlesheets-readme","changelogId":"packages/googlesheets-changelog","configurationSchemaId":"packages/googlesheets-configuration-schema"},{"name":"hive","docsId":"packages/hive-docs","readmeId":"packages/hive-readme","changelogId":"packages/hive-changelog","configurationSchemaId":"packages/hive-configuration-schema"},{"name":"http","docsId":"packages/http-docs","readmeId":"packages/http-readme","changelogId":"packages/http-changelog","configurationSchemaId":"packages/http-configuration-schema"},{"name":"khanacademy","docsId":"packages/khanacademy-docs","readmeId":"packages/khanacademy-readme","changelogId":"packages/khanacademy-changelog","configurationSchemaId":"packages/khanacademy-configuration-schema"},{"name":"kobotoolbox","docsId":"packages/kobotoolbox-docs","readmeId":"packages/kobotoolbox-readme","changelogId":"packages/kobotoolbox-changelog","configurationSchemaId":"packages/kobotoolbox-configuration-schema"},{"name":"magpi","docsId":"packages/magpi-docs","readmeId":"packages/magpi-readme","changelogId":"packages/magpi-changelog","configurationSchemaId":"packages/magpi-configuration-schema"},{"name":"mailchimp","docsId":"packages/mailchimp-docs","readmeId":"packages/mailchimp-readme","changelogId":"packages/mailchimp-changelog","configurationSchemaId":"packages/mailchimp-configuration-schema"},{"name":"mailgun","docsId":"packages/mailgun-docs","readmeId":"packages/mailgun-readme","changelogId":"packages/mailgun-changelog","configurationSchemaId":"packages/mailgun-configuration-schema"},{"name":"maximo","docsId":"packages/maximo-docs","readmeId":"packages/maximo-readme","changelogId":"packages/maximo-changelog","configurationSchemaId":"packages/maximo-configuration-schema"},{"name":"medicmobile","docsId":"packages/medicmobile-docs","readmeId":"packages/medicmobile-readme","changelogId":"packages/medicmobile-changelog","configurationSchemaId":"packages/medicmobile-configuration-schema"},{"name":"mogli","docsId":"packages/mogli-docs","readmeId":"packages/mogli-readme","changelogId":"packages/mogli-changelog","configurationSchemaId":"packages/mogli-configuration-schema"},{"name":"mongodb","docsId":"packages/mongodb-docs","readmeId":"packages/mongodb-readme","changelogId":"packages/mongodb-changelog","configurationSchemaId":"packages/mongodb-configuration-schema"},{"name":"msgraph","docsId":"packages/msgraph-docs","readmeId":"packages/msgraph-readme","changelogId":"packages/msgraph-changelog","configurationSchemaId":"packages/msgraph-configuration-schema"},{"name":"mssql","docsId":"packages/mssql-docs","readmeId":"packages/mssql-readme","changelogId":"packages/mssql-changelog","configurationSchemaId":"packages/mssql-configuration-schema"},{"name":"mysql","docsId":"packages/mysql-docs","readmeId":"packages/mysql-readme","changelogId":"packages/mysql-changelog","configurationSchemaId":"packages/mysql-configuration-schema"},{"name":"nexmo","docsId":"packages/nexmo-docs","readmeId":"packages/nexmo-readme","changelogId":"packages/nexmo-changelog","configurationSchemaId":"packages/nexmo-configuration-schema"},{"name":"ocl","docsId":"packages/ocl-docs","readmeId":"packages/ocl-readme","changelogId":"packages/ocl-changelog","configurationSchemaId":"packages/ocl-configuration-schema"},{"name":"openfn","docsId":"packages/openfn-docs","readmeId":"packages/openfn-readme","changelogId":"packages/openfn-changelog","configurationSchemaId":"packages/openfn-configuration-schema"},{"name":"openhim","docsId":"packages/openhim-docs","readmeId":"packages/openhim-readme","changelogId":"packages/openhim-changelog","configurationSchemaId":"packages/openhim-configuration-schema"},{"name":"openmrs","docsId":"packages/openmrs-docs","readmeId":"packages/openmrs-readme","changelogId":"packages/openmrs-changelog","configurationSchemaId":"packages/openmrs-configuration-schema"},{"name":"postgresql","docsId":"packages/postgresql-docs","readmeId":"packages/postgresql-readme","changelogId":"packages/postgresql-changelog","configurationSchemaId":"packages/postgresql-configuration-schema"},{"name":"primero","docsId":"packages/primero-docs","readmeId":"packages/primero-readme","changelogId":"packages/primero-changelog","configurationSchemaId":"packages/primero-configuration-schema"},{"name":"progres","docsId":"packages/progres-docs","readmeId":"packages/progres-readme","changelogId":"packages/progres-changelog","configurationSchemaId":"packages/progres-configuration-schema"},{"name":"rapidpro","docsId":"packages/rapidpro-docs","readmeId":"packages/rapidpro-readme","changelogId":"packages/rapidpro-changelog","configurationSchemaId":"packages/rapidpro-configuration-schema"},{"name":"resourcemap","docsId":"packages/resourcemap-docs","readmeId":"packages/resourcemap-readme","changelogId":"packages/resourcemap-changelog","configurationSchemaId":"packages/resourcemap-configuration-schema"},{"name":"salesforce","docsId":"packages/salesforce-docs","readmeId":"packages/salesforce-readme","changelogId":"packages/salesforce-changelog","configurationSchemaId":"packages/salesforce-configuration-schema"},{"name":"sftp","docsId":"packages/sftp-docs","readmeId":"packages/sftp-readme","changelogId":"packages/sftp-changelog","configurationSchemaId":"packages/sftp-configuration-schema"},{"name":"smpp","docsId":"packages/smpp-docs","readmeId":"packages/smpp-readme","changelogId":"packages/smpp-changelog","configurationSchemaId":"packages/smpp-configuration-schema"},{"name":"surveycto","docsId":"packages/surveycto-docs","readmeId":"packages/surveycto-readme","changelogId":"packages/surveycto-changelog","configurationSchemaId":"packages/surveycto-configuration-schema"},{"name":"telerivet","docsId":"packages/telerivet-docs","readmeId":"packages/telerivet-readme","changelogId":"packages/telerivet-changelog","configurationSchemaId":"packages/telerivet-configuration-schema"},{"name":"template","docsId":"packages/template-docs","readmeId":"packages/template-readme","changelogId":"packages/template-changelog","configurationSchemaId":"packages/template-configuration-schema"},{"name":"twilio","docsId":"packages/twilio-docs","readmeId":"packages/twilio-readme","changelogId":"packages/twilio-changelog","configurationSchemaId":"packages/twilio-configuration-schema"},{"name":"vtiger","docsId":"packages/vtiger-docs","readmeId":"packages/vtiger-readme","changelogId":"packages/vtiger-changelog","configurationSchemaId":"packages/vtiger-configuration-schema"},{"name":"zoho","docsId":"packages/zoho-docs","readmeId":"packages/zoho-readme","changelogId":"packages/zoho-changelog","configurationSchemaId":"packages/zoho-configuration-schema"}]'),F={id:"adaptors-intro",title:"Adaptors",sidebar_label:"Introduction",slug:"/"},O=void 0,_={unversionedId:"adaptors-intro",id:"adaptors-intro",title:"Adaptors",description:"Connect Anything.",source:"@site/adaptors/intro.mdx",sourceDirName:".",slug:"/",permalink:"/fr/adaptors/",draft:!1,tags:[],version:"current",frontMatter:{id:"adaptors-intro",title:"Adaptors",sidebar_label:"Introduction",slug:"/"},sidebar:"adaptors",next:{title:"Library Examples",permalink:"/fr/adaptors/library"}},Z={},A=[{value:"Connect Anything.",id:"connect-anything",level:2},{value:"What's an adaptor?",id:"whats-an-adaptor",level:2},{value:"Where to find them",id:"where-to-find-them",level:2},{value:"On the OpenFn platform",id:"on-the-openfn-platform",level:3},{value:"On npm",id:"on-npm",level:3},{value:"Install on platform via npm",id:"install-on-platform-via-npm",level:4},{value:"Building and extending adaptors",id:"building-and-extending-adaptors",level:2}],L={toc:A},J="wrapper";function z(a){let{components:e,...s}=a;return(0,o.kt)(J,(0,n.Z)({},L,s,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"connect-anything"},"Connect ",(0,o.kt)("em",{parentName:"h2"},"Anything.")),(0,o.kt)("p",null,"First, it's important to note that OpenFn can connect to ",(0,o.kt)("em",{parentName:"p"},"any system"),' via HTTP,\nbut our community has also built dozens of "adaptors" to save time & money while\nconnecting to most commonly used digital public goods and key ICT4D systems.'),(0,o.kt)("p",null,"You can even run web scraping or browser automation tools with OpenFn. See the\n",(0,o.kt)("a",{parentName:"p",href:"/documentation/faqs#can-openfn-integrate-with-my-custom-app"},"FAQs")," and\n",(0,o.kt)("a",{parentName:"p",href:"/documentation/source-apps"},"Generic Data Sources")," for more info on how to\nconnect to systems without custom adaptors. It's almost like a universal\ntranslator... \ud83d\udd96"),(0,o.kt)("h2",{id:"whats-an-adaptor"},"What's an adaptor?"),(0,o.kt)("p",null,'An adaptor is an open-source Javascript or Typescript module that provides\nOpenFn users with a clean set of helper functions that help communicate with a\nspecific external system. In the past, we often referred to them as "language\npackages" and the two terms are sometimes used interchangeably, but the\npreferred way of communicating about adaptors is as follows:'),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},'"What ',(0,o.kt)("em",{parentName:"li"},(0,o.kt)("strong",{parentName:"em"},"adaptor")),' is that job using?" ("That job is using\n',(0,o.kt)("inlineCode",{parentName:"li"},"language-dhis2"),'.")'),(0,o.kt)("li",{parentName:"ul"},'"The DHIS2 ',(0,o.kt)("em",{parentName:"li"},(0,o.kt)("strong",{parentName:"em"},"adaptor"))," is called ",(0,o.kt)("inlineCode",{parentName:"li"},"language-dhis2"),'."'),(0,o.kt)("li",{parentName:"ul"},"\"I don't have the right ",(0,o.kt)("em",{parentName:"li"},(0,o.kt)("strong",{parentName:"em"},"adaptor"))," for this job, let me install it by\nrunning ",(0,o.kt)("inlineCode",{parentName:"li"},"npm install @openfn/language-dhis2"),".")),(0,o.kt)("p",null,"In short, ",(0,o.kt)("em",{parentName:"p"},"most")," adaptors follow the naming convention ",(0,o.kt)("inlineCode",{parentName:"p"},"@openfn/language-xyz"),"."),(0,o.kt)("h2",{id:"where-to-find-them"},"Where to find them"),(0,o.kt)("div",null,"Here's a list of the ",u().length," publicly supported OpenFn adaptors. Note that only some have been migrated to our new and have their docs sites served here. For the rest, you can view the docs and source by clicking into the adaptor and choosing your version."),(0,o.kt)("br",null),(0,o.kt)("div",null,u().map((a=>(0,o.kt)("details",null,(0,o.kt)("summary",null,(0,o.kt)("b",null,a.module),h.find((e=>e.name==a.module))&&(0,o.kt)(t.Fragment,null," (",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).docsId}`},"docs"),")")),h.find((e=>e.name==a.module))?(0,o.kt)("div",null,"The current"," ",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).docsId}`},"API docs"),", ",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).changelogId}`},"changelog"),", and ",(0,o.kt)("a",{href:`/adaptors/${h.find((e=>e.name==a.module)).readmeId}`},"developer readme")," for ",(0,o.kt)("b",null,a.module)," are available here. You can view the source & documentation via these links:"):(0,o.kt)("div",null,"This adaptor hasn't been migrated yet, but it still works just fine and you can view the source & documentation via these links:"),(0,o.kt)("ul",null,a.versions.sort(((a,e)=>l(e.version,a.version))).map((a=>(0,o.kt)("li",null,(0,o.kt)("a",{href:a.url,target:"_blank"},a.version)," ")))))))),(0,o.kt)("h3",{id:"on-the-openfn-platform"},"On the OpenFn platform"),(0,o.kt)("p",null,'When creating or editing a job on platform, you can choose the adaptor to run\nthe job. This way you "import" the needed operations. Simply open the dropdown\nlist of adaptors, and click on one.'),(0,o.kt)("img",{src:"/img/adaptor_choice_openfn.png",width:"300"}),(0,o.kt)("h3",{id:"on-npm"},"On npm"),(0,o.kt)("p",null,"Most of our adaptors are also available on\n",(0,o.kt)("a",{parentName:"p",href:"https://www.npmjs.com/search?q=%40openfn"},"npmjs"),"."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Adaptors list in npm",src:p(57361).Z,width:"2766",height:"1266"})),(0,o.kt)("h4",{id:"install-on-platform-via-npm"},"Install on platform via npm"),(0,o.kt)("p",null,"When using ",(0,o.kt)("inlineCode",{parentName:"p"},"platform"),", you can install adaptors that are not part of the\nrecommended adaptors picklist directly from\n",(0,o.kt)("a",{parentName:"p",href:"https://www.npmjs.com/search?q=%40openfn"},"npm"),"."),(0,o.kt)("p",null,"To install from npm, click on the ",(0,o.kt)("em",{parentName:"p"},"cloud download icon")," next to the adaptor\nversion picklist. In the ",(0,o.kt)("strong",{parentName:"p"},"Select Unreleased Adaptor")," dialog box, enter the\n",(0,o.kt)("inlineCode",{parentName:"p"},"adaptor name"),"(e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"dhis2")," for ",(0,o.kt)("inlineCode",{parentName:"p"},"language-dhis2"),") and the corresponding\n",(0,o.kt)("inlineCode",{parentName:"p"},"version number"),"(e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"v2.3.4"),"), as listed on\n",(0,o.kt)("a",{parentName:"p",href:"https://www.npmjs.com/search?q=%40openfn"},"npmjs"),", for the adaptor of your\nchoice. The platform will attempt to install the selected adaptor version it can\nbe used to run the specified job."),(0,o.kt)("p",null,"Note that, after this custom installation of the adaptor, ",(0,o.kt)("inlineCode",{parentName:"p"},"platform")," will not\nadd this adaptor version to the picklist of recommended adaptors in\n",(0,o.kt)("a",{parentName:"p",href:"/documentation/jobs/job-studio"},"JobStudio"),", but you are guaranteed that the\nadaptor will be available to use in any of your jobs as long as you specify it\nvia the ",(0,o.kt)("strong",{parentName:"p"},"Select Unreleased Adaptor")," dialog."),(0,o.kt)("h2",{id:"building-and-extending-adaptors"},"Building and extending adaptors"),(0,o.kt)("p",null,"The source code and technical documentation for developing or extending existing\nadaptors can be found\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors#working-with-adaptors"},"here"),"."))}z.isMDXComponent=!0},57361:(a,e,p)=>{p.d(e,{Z:()=>n});const n=p.p+"assets/images/adaptor_npm-1ecb3d844ff20c11d9f7ee009a1d4e9a.png"}}]); \ No newline at end of file diff --git a/fr/assets/js/771488fd.e44accd8.js b/fr/assets/js/771488fd.e44accd8.js new file mode 100644 index 00000000000..c07bde19ba6 --- /dev/null +++ b/fr/assets/js/771488fd.e44accd8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[76874],{3905:(e,a,t)=>{t.d(a,{Zo:()=>o,kt:()=>g});var n=t(67294);function l(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function i(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function r(e){for(var a=1;a=0||(l[t]=e[t]);return l}(e,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(l[t]=e[t])}return l}var p=n.createContext({}),h=function(e){var a=n.useContext(p),t=a;return e&&(t="function"==typeof e?e(a):r(r({},a),e)),t},o=function(e){var a=h(e.components);return n.createElement(p.Provider,{value:a},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},s=n.forwardRef((function(e,a){var t=e.components,l=e.mdxType,i=e.originalType,p=e.parentName,o=c(e,["components","mdxType","originalType","parentName"]),d=h(t),s=l,g=d["".concat(p,".").concat(s)]||d[s]||u[s]||i;return t?n.createElement(g,r(r({ref:a},o),{},{components:t})):n.createElement(g,r({ref:a},o))}));function g(e,a){var t=arguments,l=a&&a.mdxType;if("string"==typeof e||l){var i=t.length,r=new Array(i);r[0]=s;var c={};for(var p in a)hasOwnProperty.call(a,p)&&(c[p]=a[p]);c.originalType=e,c[d]="string"==typeof e?e:l,r[1]=c;for(var h=2;h{t.r(a),t.d(a,{assets:()=>p,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>c,toc:()=>h});var n=t(87462),l=(t(67294),t(3905));const i={title:"sftp changelog",id:"sftp-changelog",keywords:["adaptor","changelog","sftp"]},r="Changelog for the sftp adaptor",c={unversionedId:"packages/sftp-changelog",id:"packages/sftp-changelog",title:"sftp changelog",description:"1.0.2",source:"@site/adaptors/packages/sftp-changelog.md",sourceDirName:"packages",slug:"/packages/sftp-changelog",permalink:"/fr/adaptors/packages/sftp-changelog",draft:!1,tags:[],version:"current",frontMatter:{title:"sftp changelog",id:"sftp-changelog",keywords:["adaptor","changelog","sftp"]},sidebar:"adaptors",previous:{title:"Config for sftp",permalink:"/fr/adaptors/packages/sftp-configuration-schema"},next:{title:"sftp developer readme",permalink:"/fr/adaptors/packages/sftp-readme"}},p={},h=[{value:"1.0.2",id:"102",level:2},{value:"Patch Changes",id:"patch-changes",level:3},{value:"1.0.1",id:"101",level:2},{value:"Patch Changes",id:"patch-changes-1",level:3},{value:"1.0.0",id:"100",level:2},{value:"Major Changes",id:"major-changes",level:3},{value:"0.8.8",id:"088",level:2},{value:"Patch Changes",id:"patch-changes-2",level:3},{value:"0.8.7",id:"087",level:2},{value:"Patch Changes",id:"patch-changes-3",level:3},{value:"0.8.6",id:"086",level:2},{value:"Patch Changes",id:"patch-changes-4",level:3},{value:"0.8.5",id:"085",level:2},{value:"Patch Changes",id:"patch-changes-5",level:3},{value:"0.8.4",id:"084",level:2},{value:"Patch Changes",id:"patch-changes-6",level:3},{value:"0.8.3",id:"083",level:2},{value:"Patch Changes",id:"patch-changes-7",level:3},{value:"0.8.2",id:"082",level:2},{value:"Patch Changes",id:"patch-changes-8",level:3},{value:"0.8.1",id:"081",level:2},{value:"Patch Changes",id:"patch-changes-9",level:3},{value:"0.8.0",id:"080",level:2},{value:"Minor Changes",id:"minor-changes",level:3},{value:"Patch Changes",id:"patch-changes-10",level:3},{value:"0.7.3",id:"073",level:2},{value:"Patch Changes",id:"patch-changes-11",level:3},{value:"0.7.2",id:"072",level:2},{value:"Patch Changes",id:"patch-changes-12",level:3},{value:"0.7.1",id:"071",level:2},{value:"Patch Changes",id:"patch-changes-13",level:3},{value:"0.7.0",id:"070",level:2},{value:"Minor Changes",id:"minor-changes-1",level:3},{value:"0.6.9",id:"069",level:2},{value:"Patch Changes",id:"patch-changes-14",level:3},{value:"0.6.8",id:"068",level:2},{value:"Patch Changes",id:"patch-changes-15",level:3},{value:"0.6.7",id:"067",level:2},{value:"Patch Changes",id:"patch-changes-16",level:3},{value:"0.6.6",id:"066",level:2},{value:"Patch Changes",id:"patch-changes-17",level:3},{value:"0.6.5",id:"065",level:2},{value:"Patch Changes",id:"patch-changes-18",level:3},{value:"0.6.4",id:"064",level:2},{value:"Patch Changes",id:"patch-changes-19",level:3},{value:"0.6.3",id:"063",level:2},{value:"Patch Changes",id:"patch-changes-20",level:3},{value:"0.6.2",id:"062",level:2},{value:"Patch Changes",id:"patch-changes-21",level:3},{value:"0.6.1",id:"061",level:2},{value:"Patch Changes",id:"patch-changes-22",level:3},{value:"0.6.0",id:"060",level:2},{value:"Minor Changes",id:"minor-changes-2",level:3},{value:"0.5.0",id:"050",level:2},{value:"Minor Changes",id:"minor-changes-3",level:3}],o={toc:h},d="wrapper";function u(e){let{components:a,...t}=e;return(0,l.kt)(d,(0,n.Z)({},o,t,{components:a,mdxType:"MDXLayout"}),(0,l.kt)("h1",{id:"changelog-for-the-sftp-adaptor"},"Changelog for the sftp adaptor"),(0,l.kt)("h1",{id:"openfnlanguage-sftp"},"@openfn/language-sftp"),(0,l.kt)("h2",{id:"102"},"1.0.2"),(0,l.kt)("h3",{id:"patch-changes"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"a666a63: On error disconnect then throw")),(0,l.kt)("h2",{id:"101"},"1.0.1"),(0,l.kt)("h3",{id:"patch-changes-1"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"771c814: - Properly disconnect on error",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Improve operation logs")))),(0,l.kt)("h2",{id:"100"},"1.0.0"),(0,l.kt)("h3",{id:"major-changes"},"Major Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"e52ba66: add ",(0,l.kt)("inlineCode",{parentName:"li"},"filter")," option in ",(0,l.kt)("inlineCode",{parentName:"li"},"list()")," function")),(0,l.kt)("h2",{id:"088"},"0.8.8"),(0,l.kt)("h3",{id:"patch-changes-2"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[c19efbe]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.11.1"},"language-common@1.11.1"))))),(0,l.kt)("h2",{id:"087"},"0.8.7"),(0,l.kt)("h3",{id:"patch-changes-3"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[85c35b8]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.11.0"},"language-common@1.11.0"))))),(0,l.kt)("h2",{id:"086"},"0.8.6"),(0,l.kt)("h3",{id:"patch-changes-4"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[df09270]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.3"},"language-common@1.10.3"))))),(0,l.kt)("h2",{id:"085"},"0.8.5"),(0,l.kt)("h3",{id:"patch-changes-5"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[26a303e]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.2"},"language-common@1.10.2"))))),(0,l.kt)("h2",{id:"084"},"0.8.4"),(0,l.kt)("h3",{id:"patch-changes-6"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[8c32eb3]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.1"},"language-common@1.10.1"))))),(0,l.kt)("h2",{id:"083"},"0.8.3"),(0,l.kt)("h3",{id:"patch-changes-7"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[aad9549]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.0"},"language-common@1.10.0"))))),(0,l.kt)("h2",{id:"082"},"0.8.2"),(0,l.kt)("h3",{id:"patch-changes-8"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"d2c980e: Use ",(0,l.kt)("inlineCode",{parentName:"li"},"parseCsv")," from language-common"),(0,l.kt)("li",{parentName:"ul"},"c5d3ce1: improve connection handling"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[111807f]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.9.0"},"language-common@1.9.0"))))),(0,l.kt)("h2",{id:"081"},"0.8.1"),(0,l.kt)("h3",{id:"patch-changes-9"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Update lock files"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.8.1"},"language-common@1.8.1"))))),(0,l.kt)("h2",{id:"080"},"0.8.0"),(0,l.kt)("h3",{id:"minor-changes"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"2c1d603: Remove parameter reassignment to ensure proper functioning inside an\n",(0,l.kt)("inlineCode",{parentName:"p"},"each")," block; add eslint"),(0,l.kt)("p",{parentName:"li"},"The packages receiving a major bump here exposed functions that didn't work as\nexpected inside ",(0,l.kt)("inlineCode",{parentName:"p"},"each")," blocks. Users were previously wrapping these functions\ninside their own custom ",(0,l.kt)("inlineCode",{parentName:"p"},"fn")," blocks, and this change will ensure that they can\nbe used inside a standard each."),(0,l.kt)("p",{parentName:"li"},"See ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors/issues/275"},"https://github.com/OpenFn/adaptors/issues/275")," for more details."))),(0,l.kt)("h3",{id:"patch-changes-10"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[2c1d603]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.8.0"},"language-common@1.8.0"))))),(0,l.kt)("h2",{id:"073"},"0.7.3"),(0,l.kt)("h3",{id:"patch-changes-11"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"432dd0a: fix sftp connection wqautoclose")),(0,l.kt)("h2",{id:"072"},"0.7.2"),(0,l.kt)("h3",{id:"patch-changes-12"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"205b806: remove asObjects key before parsing")),(0,l.kt)("h2",{id:"071"},"0.7.1"),(0,l.kt)("h3",{id:"patch-changes-13"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"827c627: error handling")),(0,l.kt)("h2",{id:"070"},"0.7.0"),(0,l.kt)("h3",{id:"minor-changes-1"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"fa58216: Add csvtojson convertion option")),(0,l.kt)("h2",{id:"069"},"0.6.9"),(0,l.kt)("h3",{id:"patch-changes-14"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[929bca6]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.7"},"language-common@1.7.7"))))),(0,l.kt)("h2",{id:"068"},"0.6.8"),(0,l.kt)("h3",{id:"patch-changes-15"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"14f481e: mark execute as private"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[2b4c61a]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.6"},"language-common@1.7.6"))))),(0,l.kt)("h2",{id:"067"},"0.6.7"),(0,l.kt)("h3",{id:"patch-changes-16"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f7ebd3c: remove sample configuration")),(0,l.kt)("h2",{id:"066"},"0.6.6"),(0,l.kt)("h3",{id:"patch-changes-17"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f2aed32: add examples")),(0,l.kt)("h2",{id:"065"},"0.6.5"),(0,l.kt)("h3",{id:"patch-changes-18"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"6d8de03: change @constructor to @function and remove /","*",(0,l.kt)("em",{parentName:"li"}," @module Adaptor "),"/")),(0,l.kt)("h2",{id:"064"},"0.6.4"),(0,l.kt)("h3",{id:"patch-changes-19"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f2a91a4: Update package exports"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[f2a91a4]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.5"},"language-common@1.7.5"))))),(0,l.kt)("h2",{id:"063"},"0.6.3"),(0,l.kt)("h3",{id:"patch-changes-20"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"8566b26: Fix typings"),(0,l.kt)("li",{parentName:"ul"},"b3d45ff: Fix CJS export of npm package."),(0,l.kt)("li",{parentName:"ul"},"4126a62: Fix built bundle"),(0,l.kt)("li",{parentName:"ul"},"ecf5d30: remove sinon since it was not being used"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[8566b26]"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[b3d45ff]"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[b5eb665]"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[ecf5d30]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.4"},"language-common@1.7.4"))))),(0,l.kt)("h2",{id:"062"},"0.6.2"),(0,l.kt)("h3",{id:"patch-changes-21"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"e04aa28: Rename credential-schema to configuration-schema, update descriptions")),(0,l.kt)("h2",{id:"061"},"0.6.1"),(0,l.kt)("h3",{id:"patch-changes-22"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"28dfbfa: add todo, fix build pack")),(0,l.kt)("h2",{id:"060"},"0.6.0"),(0,l.kt)("h3",{id:"minor-changes-2"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f294a62: Added credential-schema.json for new ui")),(0,l.kt)("h2",{id:"050"},"0.5.0"),(0,l.kt)("h3",{id:"minor-changes-3"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"2c04894: added sftp package")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/fr/assets/js/771488fd.fb43034d.js b/fr/assets/js/771488fd.fb43034d.js deleted file mode 100644 index 20c67c106f3..00000000000 --- a/fr/assets/js/771488fd.fb43034d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[76874],{3905:(e,a,t)=>{t.d(a,{Zo:()=>o,kt:()=>g});var n=t(67294);function l(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function i(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function r(e){for(var a=1;a=0||(l[t]=e[t]);return l}(e,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(l[t]=e[t])}return l}var p=n.createContext({}),h=function(e){var a=n.useContext(p),t=a;return e&&(t="function"==typeof e?e(a):r(r({},a),e)),t},o=function(e){var a=h(e.components);return n.createElement(p.Provider,{value:a},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},s=n.forwardRef((function(e,a){var t=e.components,l=e.mdxType,i=e.originalType,p=e.parentName,o=c(e,["components","mdxType","originalType","parentName"]),d=h(t),s=l,g=d["".concat(p,".").concat(s)]||d[s]||u[s]||i;return t?n.createElement(g,r(r({ref:a},o),{},{components:t})):n.createElement(g,r({ref:a},o))}));function g(e,a){var t=arguments,l=a&&a.mdxType;if("string"==typeof e||l){var i=t.length,r=new Array(i);r[0]=s;var c={};for(var p in a)hasOwnProperty.call(a,p)&&(c[p]=a[p]);c.originalType=e,c[d]="string"==typeof e?e:l,r[1]=c;for(var h=2;h{t.r(a),t.d(a,{assets:()=>p,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>c,toc:()=>h});var n=t(87462),l=(t(67294),t(3905));const i={title:"sftp changelog",id:"sftp-changelog",keywords:["adaptor","changelog","sftp"]},r="Changelog for the sftp adaptor",c={unversionedId:"packages/sftp-changelog",id:"packages/sftp-changelog",title:"sftp changelog",description:"1.0.1",source:"@site/adaptors/packages/sftp-changelog.md",sourceDirName:"packages",slug:"/packages/sftp-changelog",permalink:"/fr/adaptors/packages/sftp-changelog",draft:!1,tags:[],version:"current",frontMatter:{title:"sftp changelog",id:"sftp-changelog",keywords:["adaptor","changelog","sftp"]},sidebar:"adaptors",previous:{title:"Config for sftp",permalink:"/fr/adaptors/packages/sftp-configuration-schema"},next:{title:"sftp developer readme",permalink:"/fr/adaptors/packages/sftp-readme"}},p={},h=[{value:"1.0.1",id:"101",level:2},{value:"Patch Changes",id:"patch-changes",level:3},{value:"1.0.0",id:"100",level:2},{value:"Major Changes",id:"major-changes",level:3},{value:"0.8.8",id:"088",level:2},{value:"Patch Changes",id:"patch-changes-1",level:3},{value:"0.8.7",id:"087",level:2},{value:"Patch Changes",id:"patch-changes-2",level:3},{value:"0.8.6",id:"086",level:2},{value:"Patch Changes",id:"patch-changes-3",level:3},{value:"0.8.5",id:"085",level:2},{value:"Patch Changes",id:"patch-changes-4",level:3},{value:"0.8.4",id:"084",level:2},{value:"Patch Changes",id:"patch-changes-5",level:3},{value:"0.8.3",id:"083",level:2},{value:"Patch Changes",id:"patch-changes-6",level:3},{value:"0.8.2",id:"082",level:2},{value:"Patch Changes",id:"patch-changes-7",level:3},{value:"0.8.1",id:"081",level:2},{value:"Patch Changes",id:"patch-changes-8",level:3},{value:"0.8.0",id:"080",level:2},{value:"Minor Changes",id:"minor-changes",level:3},{value:"Patch Changes",id:"patch-changes-9",level:3},{value:"0.7.3",id:"073",level:2},{value:"Patch Changes",id:"patch-changes-10",level:3},{value:"0.7.2",id:"072",level:2},{value:"Patch Changes",id:"patch-changes-11",level:3},{value:"0.7.1",id:"071",level:2},{value:"Patch Changes",id:"patch-changes-12",level:3},{value:"0.7.0",id:"070",level:2},{value:"Minor Changes",id:"minor-changes-1",level:3},{value:"0.6.9",id:"069",level:2},{value:"Patch Changes",id:"patch-changes-13",level:3},{value:"0.6.8",id:"068",level:2},{value:"Patch Changes",id:"patch-changes-14",level:3},{value:"0.6.7",id:"067",level:2},{value:"Patch Changes",id:"patch-changes-15",level:3},{value:"0.6.6",id:"066",level:2},{value:"Patch Changes",id:"patch-changes-16",level:3},{value:"0.6.5",id:"065",level:2},{value:"Patch Changes",id:"patch-changes-17",level:3},{value:"0.6.4",id:"064",level:2},{value:"Patch Changes",id:"patch-changes-18",level:3},{value:"0.6.3",id:"063",level:2},{value:"Patch Changes",id:"patch-changes-19",level:3},{value:"0.6.2",id:"062",level:2},{value:"Patch Changes",id:"patch-changes-20",level:3},{value:"0.6.1",id:"061",level:2},{value:"Patch Changes",id:"patch-changes-21",level:3},{value:"0.6.0",id:"060",level:2},{value:"Minor Changes",id:"minor-changes-2",level:3},{value:"0.5.0",id:"050",level:2},{value:"Minor Changes",id:"minor-changes-3",level:3}],o={toc:h},d="wrapper";function u(e){let{components:a,...t}=e;return(0,l.kt)(d,(0,n.Z)({},o,t,{components:a,mdxType:"MDXLayout"}),(0,l.kt)("h1",{id:"changelog-for-the-sftp-adaptor"},"Changelog for the sftp adaptor"),(0,l.kt)("h1",{id:"openfnlanguage-sftp"},"@openfn/language-sftp"),(0,l.kt)("h2",{id:"101"},"1.0.1"),(0,l.kt)("h3",{id:"patch-changes"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"771c814: - Properly disconnect on error",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Improve operation logs")))),(0,l.kt)("h2",{id:"100"},"1.0.0"),(0,l.kt)("h3",{id:"major-changes"},"Major Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"e52ba66: add ",(0,l.kt)("inlineCode",{parentName:"li"},"filter")," option in ",(0,l.kt)("inlineCode",{parentName:"li"},"list()")," function")),(0,l.kt)("h2",{id:"088"},"0.8.8"),(0,l.kt)("h3",{id:"patch-changes-1"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[c19efbe]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.11.1"},"language-common@1.11.1"))))),(0,l.kt)("h2",{id:"087"},"0.8.7"),(0,l.kt)("h3",{id:"patch-changes-2"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[85c35b8]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.11.0"},"language-common@1.11.0"))))),(0,l.kt)("h2",{id:"086"},"0.8.6"),(0,l.kt)("h3",{id:"patch-changes-3"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[df09270]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.3"},"language-common@1.10.3"))))),(0,l.kt)("h2",{id:"085"},"0.8.5"),(0,l.kt)("h3",{id:"patch-changes-4"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[26a303e]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.2"},"language-common@1.10.2"))))),(0,l.kt)("h2",{id:"084"},"0.8.4"),(0,l.kt)("h3",{id:"patch-changes-5"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[8c32eb3]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.1"},"language-common@1.10.1"))))),(0,l.kt)("h2",{id:"083"},"0.8.3"),(0,l.kt)("h3",{id:"patch-changes-6"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[aad9549]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.10.0"},"language-common@1.10.0"))))),(0,l.kt)("h2",{id:"082"},"0.8.2"),(0,l.kt)("h3",{id:"patch-changes-7"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"d2c980e: Use ",(0,l.kt)("inlineCode",{parentName:"li"},"parseCsv")," from language-common"),(0,l.kt)("li",{parentName:"ul"},"c5d3ce1: improve connection handling"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[111807f]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.9.0"},"language-common@1.9.0"))))),(0,l.kt)("h2",{id:"081"},"0.8.1"),(0,l.kt)("h3",{id:"patch-changes-8"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Update lock files"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.8.1"},"language-common@1.8.1"))))),(0,l.kt)("h2",{id:"080"},"0.8.0"),(0,l.kt)("h3",{id:"minor-changes"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"2c1d603: Remove parameter reassignment to ensure proper functioning inside an\n",(0,l.kt)("inlineCode",{parentName:"p"},"each")," block; add eslint"),(0,l.kt)("p",{parentName:"li"},"The packages receiving a major bump here exposed functions that didn't work as\nexpected inside ",(0,l.kt)("inlineCode",{parentName:"p"},"each")," blocks. Users were previously wrapping these functions\ninside their own custom ",(0,l.kt)("inlineCode",{parentName:"p"},"fn")," blocks, and this change will ensure that they can\nbe used inside a standard each."),(0,l.kt)("p",{parentName:"li"},"See ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/OpenFn/adaptors/issues/275"},"https://github.com/OpenFn/adaptors/issues/275")," for more details."))),(0,l.kt)("h3",{id:"patch-changes-9"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[2c1d603]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.8.0"},"language-common@1.8.0"))))),(0,l.kt)("h2",{id:"073"},"0.7.3"),(0,l.kt)("h3",{id:"patch-changes-10"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"432dd0a: fix sftp connection wqautoclose")),(0,l.kt)("h2",{id:"072"},"0.7.2"),(0,l.kt)("h3",{id:"patch-changes-11"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"205b806: remove asObjects key before parsing")),(0,l.kt)("h2",{id:"071"},"0.7.1"),(0,l.kt)("h3",{id:"patch-changes-12"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"827c627: error handling")),(0,l.kt)("h2",{id:"070"},"0.7.0"),(0,l.kt)("h3",{id:"minor-changes-1"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"fa58216: Add csvtojson convertion option")),(0,l.kt)("h2",{id:"069"},"0.6.9"),(0,l.kt)("h3",{id:"patch-changes-13"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[929bca6]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.7"},"language-common@1.7.7"))))),(0,l.kt)("h2",{id:"068"},"0.6.8"),(0,l.kt)("h3",{id:"patch-changes-14"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"14f481e: mark execute as private"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[2b4c61a]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.6"},"language-common@1.7.6"))))),(0,l.kt)("h2",{id:"067"},"0.6.7"),(0,l.kt)("h3",{id:"patch-changes-15"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f7ebd3c: remove sample configuration")),(0,l.kt)("h2",{id:"066"},"0.6.6"),(0,l.kt)("h3",{id:"patch-changes-16"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f2aed32: add examples")),(0,l.kt)("h2",{id:"065"},"0.6.5"),(0,l.kt)("h3",{id:"patch-changes-17"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"6d8de03: change @constructor to @function and remove /","*",(0,l.kt)("em",{parentName:"li"}," @module Adaptor "),"/")),(0,l.kt)("h2",{id:"064"},"0.6.4"),(0,l.kt)("h3",{id:"patch-changes-18"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f2a91a4: Update package exports"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[f2a91a4]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.5"},"language-common@1.7.5"))))),(0,l.kt)("h2",{id:"063"},"0.6.3"),(0,l.kt)("h3",{id:"patch-changes-19"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"8566b26: Fix typings"),(0,l.kt)("li",{parentName:"ul"},"b3d45ff: Fix CJS export of npm package."),(0,l.kt)("li",{parentName:"ul"},"4126a62: Fix built bundle"),(0,l.kt)("li",{parentName:"ul"},"ecf5d30: remove sinon since it was not being used"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[8566b26]"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[b3d45ff]"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[b5eb665]"),(0,l.kt)("li",{parentName:"ul"},"Updated dependencies ","[ecf5d30]",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"@openfn/",(0,l.kt)("a",{parentName:"li",href:"mailto:language-common@1.7.4"},"language-common@1.7.4"))))),(0,l.kt)("h2",{id:"062"},"0.6.2"),(0,l.kt)("h3",{id:"patch-changes-20"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"e04aa28: Rename credential-schema to configuration-schema, update descriptions")),(0,l.kt)("h2",{id:"061"},"0.6.1"),(0,l.kt)("h3",{id:"patch-changes-21"},"Patch Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"28dfbfa: add todo, fix build pack")),(0,l.kt)("h2",{id:"060"},"0.6.0"),(0,l.kt)("h3",{id:"minor-changes-2"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"f294a62: Added credential-schema.json for new ui")),(0,l.kt)("h2",{id:"050"},"0.5.0"),(0,l.kt)("h3",{id:"minor-changes-3"},"Minor Changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"2c04894: added sftp package")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/fr/assets/js/cc826739.4dfa6309.js b/fr/assets/js/cc826739.2058ed5b.js similarity index 99% rename from fr/assets/js/cc826739.4dfa6309.js rename to fr/assets/js/cc826739.2058ed5b.js index 941d4404785..9a30cd3ab25 100644 --- a/fr/assets/js/cc826739.4dfa6309.js +++ b/fr/assets/js/cc826739.2058ed5b.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[85960],{73451:a=>{a.exports=JSON.parse('{"pluginId":"adaptors","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"adaptors":[{"type":"link","label":"Introduction","href":"/fr/adaptors/","docId":"adaptors-intro"},{"type":"link","label":"Library Examples","href":"/fr/adaptors/library","docId":"library-intro"},{"type":"category","label":"asana","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/asana-docs","docId":"packages/asana-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/asana-configuration-schema","docId":"packages/asana-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/asana-changelog","docId":"packages/asana-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/asana-readme","docId":"packages/asana-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"beyonic","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/beyonic-docs","docId":"packages/beyonic-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/beyonic-configuration-schema","docId":"packages/beyonic-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Pay CHW","href":"/fr/adaptors/library/jobs/auto/Pay-CHW-2021-04-23","docId":"library/jobs/auto/Pay-CHW-2021-04-23"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/beyonic-changelog","docId":"packages/beyonic-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/beyonic-readme","docId":"packages/beyonic-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"bigquery","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/bigquery-docs","docId":"packages/bigquery-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/bigquery-configuration-schema","docId":"packages/bigquery-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/bigquery-changelog","docId":"packages/bigquery-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/bigquery-readme","docId":"packages/bigquery-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"cht","href":"/fr/adaptors/cht","docId":"cht"},{"type":"link","label":"ckan","href":"/fr/adaptors/ckan","docId":"ckan"},{"type":"category","label":"commcare","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/commcare","docId":"commcare"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/commcare-docs","docId":"packages/commcare-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/commcare-configuration-schema","docId":"packages/commcare-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Registration forms(new case)","href":"/fr/adaptors/library/jobs/auto/Registration-forms-new-case-2023-06-22","docId":"library/jobs/auto/Registration-forms-new-case-2023-06-22"},{"type":"link","label":"\u2728 Q3 2022] Update HH Name in CommCare","href":"/fr/adaptors/library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27","docId":"library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27"},{"type":"link","label":"nawiri","href":"/fr/adaptors/library/jobs/auto/nawiri-2023-05-03","docId":"library/jobs/auto/nawiri-2023-05-03"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/commcare-changelog","docId":"packages/commcare-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/commcare-readme","docId":"packages/commcare-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"common","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/common-docs","docId":"packages/common-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/common-configuration-schema","docId":"packages/common-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/common-changelog","docId":"packages/common-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/common-readme","docId":"packages/common-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"dhis2","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/dhis2","docId":"dhis2"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/dhis2-docs","docId":"packages/dhis2-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/dhis2-configuration-schema","docId":"packages/dhis2-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Add data values","href":"/fr/adaptors/library/jobs/auto/DHIS2-DataValues-API","docId":"library/jobs/auto/DHIS2-DataValues-API"},{"type":"link","label":"\ud83d\udcdc Add events","href":"/fr/adaptors/library/jobs/auto/DHIS2-Events-API","docId":"library/jobs/auto/DHIS2-Events-API"},{"type":"link","label":"\u2728 Load to DHIS2","href":"/fr/adaptors/library/jobs/auto/Load-to-DHIS2-2023-07-17","docId":"library/jobs/auto/Load-to-DHIS2-2023-07-17"},{"type":"link","label":"Create TEI (dhis2)","href":"/fr/adaptors/library/jobs/auto/Create-TEI-dhis2-2021-03-22","docId":"library/jobs/auto/Create-TEI-dhis2-2021-03-22"},{"type":"link","label":"CHW case to DHIS2","href":"/fr/adaptors/library/jobs/auto/CHW-case-to-DHIS2-2023-04-27","docId":"library/jobs/auto/CHW-case-to-DHIS2-2023-04-27"},{"type":"link","label":"0 - Get TEI data","href":"/fr/adaptors/library/jobs/auto/0-Get-TEI-data-2021-06-02","docId":"library/jobs/auto/0-Get-TEI-data-2021-06-02"},{"type":"link","label":"DHIS2 Events","href":"/fr/adaptors/library/jobs/auto/DHIS2-Events-2016-01-27","docId":"library/jobs/auto/DHIS2-Events-2016-01-27"},{"type":"link","label":"Add DHIS2 Data Value Sets","href":"/fr/adaptors/library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28","docId":"library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/dhis2-changelog","docId":"packages/dhis2-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/dhis2-readme","docId":"packages/dhis2-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"dynamics","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/dynamics-docs","docId":"packages/dynamics-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/dynamics-configuration-schema","docId":"packages/dynamics-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/dynamics-changelog","docId":"packages/dynamics-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/dynamics-readme","docId":"packages/dynamics-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"facebook","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/facebook-docs","docId":"packages/facebook-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/facebook-configuration-schema","docId":"packages/facebook-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/facebook-changelog","docId":"packages/facebook-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/facebook-readme","docId":"packages/facebook-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"fhir","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/fhir-docs","docId":"packages/fhir-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/fhir-configuration-schema","docId":"packages/fhir-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/fhir-changelog","docId":"packages/fhir-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/fhir-readme","docId":"packages/fhir-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"godata","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/godata","docId":"godata"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/godata-docs","docId":"packages/godata-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/godata-configuration-schema","docId":"packages/godata-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/godata-changelog","docId":"packages/godata-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/godata-readme","docId":"packages/godata-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"googlehealthcare","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/googlehealthcare-docs","docId":"packages/googlehealthcare-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/googlehealthcare-configuration-schema","docId":"packages/googlehealthcare-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/googlehealthcare-changelog","docId":"packages/googlehealthcare-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/googlehealthcare-readme","docId":"packages/googlehealthcare-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"googlesheets","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/googlesheets","docId":"googlesheets"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/googlesheets-docs","docId":"packages/googlesheets-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/googlesheets-configuration-schema","docId":"packages/googlesheets-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Kobo to sheets","href":"/fr/adaptors/library/jobs/auto/Kobo-to-sheets-2023-10-13","docId":"library/jobs/auto/Kobo-to-sheets-2023-10-13"},{"type":"link","label":"Register Patient","href":"/fr/adaptors/library/jobs/auto/Register-Patient-2021-03-02","docId":"library/jobs/auto/Register-Patient-2021-03-02"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/googlesheets-changelog","docId":"packages/googlesheets-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/googlesheets-readme","docId":"packages/googlesheets-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"hive","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/hive-docs","docId":"packages/hive-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/hive-configuration-schema","docId":"packages/hive-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/hive-changelog","docId":"packages/hive-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/hive-readme","docId":"packages/hive-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"http","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/http-docs","docId":"packages/http-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/http-configuration-schema","docId":"packages/http-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Extract Kobo data from API to send to OpenFn Inbox","href":"/fr/adaptors/library/jobs/auto/getKoboData","docId":"library/jobs/auto/getKoboData"},{"type":"link","label":"\ud83d\udcdc Using async and array.map","href":"/fr/adaptors/library/jobs/auto/async-and-array-dot-map","docId":"library/jobs/auto/async-and-array-dot-map"},{"type":"link","label":"\ud83d\udcdc Chaining HTTP Requests","href":"/fr/adaptors/library/jobs/auto/complex-http-request-chains","docId":"library/jobs/auto/complex-http-request-chains"},{"type":"link","label":"\ud83d\udcdc Promises and nested requests","href":"/fr/adaptors/library/jobs/auto/promise-all-nested-requests","docId":"library/jobs/auto/promise-all-nested-requests"},{"type":"link","label":"\ud83d\udcdc Timeout to create a delay","href":"/fr/adaptors/library/jobs/auto/timeout","docId":"library/jobs/auto/timeout"},{"type":"link","label":"\ud83d\udcdc Chaining synchronous http requests","href":"/fr/adaptors/library/jobs/auto/synchronous-http-request","docId":"library/jobs/auto/synchronous-http-request"},{"type":"link","label":"\u2728 WF1-1. Bulk get HH cases","href":"/fr/adaptors/library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19","docId":"library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19"},{"type":"link","label":"\u2728 WF2-1. Bulk get Person cases","href":"/fr/adaptors/library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19","docId":"library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19"},{"type":"link","label":"\u2728 WF4-1. Bulk get Referral Cases","href":"/fr/adaptors/library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19","docId":"library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19"},{"type":"link","label":"\u2728 WF3-1. Bulk get Person Visit cases","href":"/fr/adaptors/library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19","docId":"library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19"},{"type":"link","label":"Fetch Claims","href":"/fr/adaptors/library/jobs/auto/Fetch-Claims-2023-07-17","docId":"library/jobs/auto/Fetch-Claims-2023-07-17"},{"type":"link","label":"no return","href":"/fr/adaptors/library/jobs/auto/no-return-2023-01-06","docId":"library/jobs/auto/no-return-2023-01-06"},{"type":"link","label":"Catch Error in HTTP Request","href":"/fr/adaptors/library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26","docId":"library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26"},{"type":"link","label":"Get CommCare Forms (Bulk Extract)","href":"/fr/adaptors/library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16","docId":"library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16"},{"type":"link","label":"aleksa cron","href":"/fr/adaptors/library/jobs/auto/aleksa-cron-2022-04-29","docId":"library/jobs/auto/aleksa-cron-2022-04-29"},{"type":"link","label":"1. Get CommCare Forms (Bulk Extract)","href":"/fr/adaptors/library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08","docId":"library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08"},{"type":"link","label":"Request Vitas Sync","href":"/fr/adaptors/library/jobs/auto/Request-Vitas-Sync-2021-05-11","docId":"library/jobs/auto/Request-Vitas-Sync-2021-05-11"},{"type":"link","label":"Failed Payment Notification","href":"/fr/adaptors/library/jobs/auto/Failed-Payment-Notification-2021-04-23","docId":"library/jobs/auto/Failed-Payment-Notification-2021-04-23"},{"type":"link","label":"02b/ Initiate Payments","href":"/fr/adaptors/library/jobs/auto/02b-Initiate-Payments-2019-11-19","docId":"library/jobs/auto/02b-Initiate-Payments-2019-11-19"},{"type":"link","label":"01c/ Create person_position record","href":"/fr/adaptors/library/jobs/auto/01c-Create-person_position-record-2019-12-13","docId":"library/jobs/auto/01c-Create-person_position-record-2019-12-13"},{"type":"link","label":"01a/ Create Registrants","href":"/fr/adaptors/library/jobs/auto/01a-Create-Registrants-2019-11-19","docId":"library/jobs/auto/01a-Create-Registrants-2019-11-19"},{"type":"link","label":"05b/Update ODK eval form","href":"/fr/adaptors/library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19","docId":"library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19"},{"type":"link","label":"05/ Submit employee evaluation","href":"/fr/adaptors/library/jobs/auto/05-Submit-employee-evaluation-2019-12-03","docId":"library/jobs/auto/05-Submit-employee-evaluation-2019-12-03"},{"type":"link","label":"04b/ Update ODK form","href":"/fr/adaptors/library/jobs/auto/04b-Update-ODK-form-2019-12-03","docId":"library/jobs/auto/04b-Update-ODK-form-2019-12-03"},{"type":"link","label":"commcare reports api","href":"/fr/adaptors/library/jobs/auto/commcare-reports-api-2016-08-29","docId":"library/jobs/auto/commcare-reports-api-2016-08-29"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/http-changelog","docId":"packages/http-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/http-readme","docId":"packages/http-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"khanacademy","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/khanacademy-docs","docId":"packages/khanacademy-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/khanacademy-configuration-schema","docId":"packages/khanacademy-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/khanacademy-changelog","docId":"packages/khanacademy-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/khanacademy-readme","docId":"packages/khanacademy-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"kobotoolbox","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/kobotoolbox","docId":"kobotoolbox"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/kobotoolbox-docs","docId":"packages/kobotoolbox-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/kobotoolbox-configuration-schema","docId":"packages/kobotoolbox-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"GET Data From KoboToolbox","href":"/fr/adaptors/library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22","docId":"library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/kobotoolbox-changelog","docId":"packages/kobotoolbox-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/kobotoolbox-readme","docId":"packages/kobotoolbox-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"magpi","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/magpi","docId":"magpi"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/magpi-docs","docId":"packages/magpi-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/magpi-configuration-schema","docId":"packages/magpi-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/magpi-changelog","docId":"packages/magpi-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/magpi-readme","docId":"packages/magpi-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mailchimp","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/mailchimp-docs","docId":"packages/mailchimp-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/mailchimp-configuration-schema","docId":"packages/mailchimp-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/mailchimp-changelog","docId":"packages/mailchimp-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/mailchimp-readme","docId":"packages/mailchimp-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mailgun","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/mailgun-docs","docId":"packages/mailgun-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/mailgun-configuration-schema","docId":"packages/mailgun-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc send email","href":"/fr/adaptors/library/jobs/auto/send-mail-in-mailgun","docId":"library/jobs/auto/send-mail-in-mailgun"},{"type":"link","label":"01 send mailgun email","href":"/fr/adaptors/library/jobs/auto/01-send-mailgun-email-2018-12-04","docId":"library/jobs/auto/01-send-mailgun-email-2018-12-04"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/mailgun-changelog","docId":"packages/mailgun-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/mailgun-readme","docId":"packages/mailgun-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"maximo","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/maximo-docs","docId":"packages/maximo-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/maximo-configuration-schema","docId":"packages/maximo-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/maximo-changelog","docId":"packages/maximo-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/maximo-readme","docId":"packages/maximo-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"medicmobile","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/medicmobile-docs","docId":"packages/medicmobile-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/medicmobile-configuration-schema","docId":"packages/medicmobile-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/medicmobile-changelog","docId":"packages/medicmobile-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/medicmobile-readme","docId":"packages/medicmobile-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mogli","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/mogli-docs","docId":"packages/mogli-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/mogli-configuration-schema","docId":"packages/mogli-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/mogli-changelog","docId":"packages/mogli-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/mogli-readme","docId":"packages/mogli-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mongodb","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/mongodb-docs","docId":"packages/mongodb-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/mongodb-configuration-schema","docId":"packages/mongodb-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/mongodb-changelog","docId":"packages/mongodb-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/mongodb-readme","docId":"packages/mongodb-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"moodle","href":"/fr/adaptors/moodle","docId":"moodle"},{"type":"category","label":"msgraph","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/msgraph-docs","docId":"packages/msgraph-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/msgraph-configuration-schema","docId":"packages/msgraph-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/msgraph-changelog","docId":"packages/msgraph-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/msgraph-readme","docId":"packages/msgraph-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mssql","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/mssql-docs","docId":"packages/mssql-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/mssql-configuration-schema","docId":"packages/mssql-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Extract Vitas Data","href":"/fr/adaptors/library/jobs/auto/Extract-Vitas-Data-2021-05-11","docId":"library/jobs/auto/Extract-Vitas-Data-2021-05-11"},{"type":"link","label":"CommCare to Azure Sql","href":"/fr/adaptors/library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27","docId":"library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/mssql-changelog","docId":"packages/mssql-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/mssql-readme","docId":"packages/mssql-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mysql","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/mysql-docs","docId":"packages/mysql-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/mysql-configuration-schema","docId":"packages/mysql-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"01b/ Query new person record","href":"/fr/adaptors/library/jobs/auto/01b-Query-new-person-record-2019-12-13","docId":"library/jobs/auto/01b-Query-new-person-record-2019-12-13"},{"type":"link","label":"03/ Update Payment Status","href":"/fr/adaptors/library/jobs/auto/03-Update-Payment-Status-2019-11-19","docId":"library/jobs/auto/03-Update-Payment-Status-2019-11-19"},{"type":"link","label":"05a/Query for new employees","href":"/fr/adaptors/library/jobs/auto/05a-Query-for-new-employees-2019-12-19","docId":"library/jobs/auto/05a-Query-for-new-employees-2019-12-19"},{"type":"link","label":"04a/Query for job changes","href":"/fr/adaptors/library/jobs/auto/04a-Query-for-job-changes-2019-12-12","docId":"library/jobs/auto/04a-Query-for-job-changes-2019-12-12"},{"type":"link","label":"02a/ Query DB for people to pay","href":"/fr/adaptors/library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11","docId":"library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/mysql-changelog","docId":"packages/mysql-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/mysql-readme","docId":"packages/mysql-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"nexmo","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/nexmo-docs","docId":"packages/nexmo-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/nexmo-configuration-schema","docId":"packages/nexmo-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/nexmo-changelog","docId":"packages/nexmo-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/nexmo-readme","docId":"packages/nexmo-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"ocl","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/ocl-docs","docId":"packages/ocl-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/ocl-configuration-schema","docId":"packages/ocl-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/ocl-changelog","docId":"packages/ocl-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/ocl-readme","docId":"packages/ocl-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"odk","href":"/fr/adaptors/odk","docId":"odk"},{"type":"link","label":"ona","href":"/fr/adaptors/ona","docId":"ona"},{"type":"category","label":"openfn","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/openfn-docs","docId":"packages/openfn-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/openfn-configuration-schema","docId":"packages/openfn-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/openfn-changelog","docId":"packages/openfn-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/openfn-readme","docId":"packages/openfn-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"openhim","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/openhim-docs","docId":"packages/openhim-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/openhim-configuration-schema","docId":"packages/openhim-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Create encounter in OpenHIM","href":"/fr/adaptors/library/jobs/auto/CommCare-FHIR","docId":"library/jobs/auto/CommCare-FHIR"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/openhim-changelog","docId":"packages/openhim-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/openhim-readme","docId":"packages/openhim-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"openmrs","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/openmrs-docs","docId":"packages/openmrs-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/openmrs-configuration-schema","docId":"packages/openmrs-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Create Person in OpenMRS","href":"/fr/adaptors/library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12","docId":"library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12"},{"type":"link","label":"Create Patient in OpenMRS","href":"/fr/adaptors/library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24","docId":"library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/openmrs-changelog","docId":"packages/openmrs-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/openmrs-readme","docId":"packages/openmrs-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"postgresql","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/postgresql","docId":"postgresql"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/postgresql-docs","docId":"packages/postgresql-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/postgresql-configuration-schema","docId":"packages/postgresql-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Using findValue with an array of data","href":"/fr/adaptors/library/jobs/auto/async-findValue","docId":"library/jobs/auto/async-findValue"},{"type":"link","label":"1. Get data from SLUHIS","href":"/fr/adaptors/library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08","docId":"library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08"},{"type":"link","label":"Load to DB","href":"/fr/adaptors/library/jobs/auto/Load-to-DB-2022-05-16","docId":"library/jobs/auto/Load-to-DB-2022-05-16"},{"type":"link","label":"Load / Upsert Data into PostgreSQL","href":"/fr/adaptors/library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22","docId":"library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22"},{"type":"link","label":"Upsert to mBrana","href":"/fr/adaptors/library/jobs/auto/Upsert-to-mBrana-2021-05-11","docId":"library/jobs/auto/Upsert-to-mBrana-2021-05-11"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/postgresql-changelog","docId":"packages/postgresql-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/postgresql-readme","docId":"packages/postgresql-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"powerbi","href":"/fr/adaptors/powerbi","docId":"powerbi"},{"type":"category","label":"primero","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/primero","docId":"primero"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/primero-docs","docId":"packages/primero-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/primero-configuration-schema","docId":"packages/primero-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Get cases from Primero","href":"/fr/adaptors/library/jobs/auto/Get-cases-from-Primero-2021-09-23","docId":"library/jobs/auto/Get-cases-from-Primero-2021-09-23"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/primero-changelog","docId":"packages/primero-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/primero-readme","docId":"packages/primero-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"progres","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/progres-docs","docId":"packages/progres-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/progres-configuration-schema","docId":"packages/progres-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/progres-changelog","docId":"packages/progres-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/progres-readme","docId":"packages/progres-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"rapidpro","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/rapidpro-docs","docId":"packages/rapidpro-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/rapidpro-configuration-schema","docId":"packages/rapidpro-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/rapidpro-changelog","docId":"packages/rapidpro-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/rapidpro-readme","docId":"packages/rapidpro-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"resourcemap","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/resourcemap-docs","docId":"packages/resourcemap-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/resourcemap-configuration-schema","docId":"packages/resourcemap-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/resourcemap-changelog","docId":"packages/resourcemap-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/resourcemap-readme","docId":"packages/resourcemap-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"salesforce","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/salesforce","docId":"salesforce"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/salesforce-docs","docId":"packages/salesforce-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/salesforce-configuration-schema","docId":"packages/salesforce-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Pre-processing data","href":"/fr/adaptors/library/jobs/auto/alter-state-before-operations","docId":"library/jobs/auto/alter-state-before-operations"},{"type":"link","label":"\ud83d\udcdc Using merge and each","href":"/fr/adaptors/library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce","docId":"library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce"},{"type":"link","label":"\ud83d\udcdc Using promises","href":"/fr/adaptors/library/jobs/auto/complex-state-control","docId":"library/jobs/auto/complex-state-control"},{"type":"link","label":"\ud83d\udcdc Concat fields with nulls","href":"/fr/adaptors/library/jobs/auto/concatenate-many-fields-with-nulls","docId":"library/jobs/auto/concatenate-many-fields-with-nulls"},{"type":"link","label":"\ud83d\udcdc Create/update records if...","href":"/fr/adaptors/library/jobs/auto/create-if-proposal","docId":"library/jobs/auto/create-if-proposal"},{"type":"link","label":"\ud83d\udcdc Create SMS linked to contact","href":"/fr/adaptors/library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF","docId":"library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF"},{"type":"link","label":"\ud83d\udcdc Handling multiple ODK repeat groups","href":"/fr/adaptors/library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks","docId":"library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks"},{"type":"link","label":"\ud83d\udcdc Merge data into child array then upsert","href":"/fr/adaptors/library/jobs/auto/upsert-many-items-in-array-with-value-outside-array","docId":"library/jobs/auto/upsert-many-items-in-array-with-value-outside-array"},{"type":"link","label":"WF3-2a/ Repeat Failed Person Visits","href":"/fr/adaptors/library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31","docId":"library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31"},{"type":"link","label":"\u2728 WF3-2. Bulk upsert Person Visits","href":"/fr/adaptors/library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19","docId":"library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19"},{"type":"link","label":"\u2728 Upsert Pre Challenges","href":"/fr/adaptors/library/jobs/auto/Upsert-Pre-Challenges-2021-04-30","docId":"library/jobs/auto/Upsert-Pre-Challenges-2021-04-30"},{"type":"link","label":"\u2728 Attendance Non Skillz","href":"/fr/adaptors/library/jobs/auto/Attendance-Non-Skillz-2021-06-14","docId":"library/jobs/auto/Attendance-Non-Skillz-2021-06-14"},{"type":"link","label":"\u2728 Upsert Post Challenges","href":"/fr/adaptors/library/jobs/auto/Upsert-Post-Challenges-2021-04-30","docId":"library/jobs/auto/Upsert-Post-Challenges-2021-04-30"},{"type":"link","label":"\u2728 Upsert Register Participant","href":"/fr/adaptors/library/jobs/auto/Upsert-Register-Participant-2021-04-28","docId":"library/jobs/auto/Upsert-Register-Participant-2021-04-28"},{"type":"link","label":"Upsert Register Participant (Skillz)","href":"/fr/adaptors/library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30","docId":"library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30"},{"type":"link","label":"\u2728 Coach Session Register","href":"/fr/adaptors/library/jobs/auto/Coach-Session-Register-2021-05-03","docId":"library/jobs/auto/Coach-Session-Register-2021-05-03"},{"type":"link","label":"\u2728 WF2-2. Bulk upsert Persons","href":"/fr/adaptors/library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19","docId":"library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19"},{"type":"link","label":"\u2728 Create Intervention","href":"/fr/adaptors/library/jobs/auto/Create-Intervention-2021-04-08","docId":"library/jobs/auto/Create-Intervention-2021-04-08"},{"type":"link","label":"\u2728 WF1-2. Bulk upsert HHs and HH Visits","href":"/fr/adaptors/library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19","docId":"library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19"},{"type":"link","label":"\u2728 WF4-2. Bulk upsert Services","href":"/fr/adaptors/library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19","docId":"library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19"},{"type":"link","label":"Q3 2022] Upsert Person Visit","href":"/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28","docId":"library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28"},{"type":"link","label":"Q4 2022] Upsert Supervision - Accompaniment","href":"/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22","docId":"library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22"},{"type":"link","label":"Q4 2022] Upsert Supervision - Feedback","href":"/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19","docId":"library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19"},{"type":"link","label":"Q4 2022] Upsert Supervision - Household Spot Check","href":"/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24","docId":"library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24"},{"type":"link","label":"\u2728 Q3 2022] Create Distribution & Referral in SF","href":"/fr/adaptors/library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19","docId":"library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19"},{"type":"link","label":"Create contact","href":"/fr/adaptors/library/jobs/auto/Create-contact-2021-03-01","docId":"library/jobs/auto/Create-contact-2021-03-01"},{"type":"link","label":"Q3 2022] Upsert Person","href":"/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21","docId":"library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21"},{"type":"link","label":"Q3 2022] Upsert Household & Household Visit in SF","href":"/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28","docId":"library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28"},{"type":"link","label":"HIV Testing Event Statistics","href":"/fr/adaptors/library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03","docId":"library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03"},{"type":"link","label":"Malaria Testing Event Statistics","href":"/fr/adaptors/library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03","docId":"library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03"},{"type":"link","label":"HIV Testing Event Snapshot","href":"/fr/adaptors/library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03","docId":"library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03"},{"type":"link","label":"Malaria Testing Event Snapshot","href":"/fr/adaptors/library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03","docId":"library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03"},{"type":"link","label":"PHQ9","href":"/fr/adaptors/library/jobs/auto/PHQ9-2021-05-03","docId":"library/jobs/auto/PHQ9-2021-05-03"},{"type":"link","label":"Risk and Vulnerability Assessment","href":"/fr/adaptors/library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27","docId":"library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27"},{"type":"link","label":"Upsert Attendance Skillz Plus Club","href":"/fr/adaptors/library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24","docId":"library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24"},{"type":"link","label":"Upsert ART Adherence Self-Reporting Tool","href":"/fr/adaptors/library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30","docId":"library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30"},{"type":"link","label":"Upsert Aggregate Service Referrals","href":"/fr/adaptors/library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30","docId":"library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30"},{"type":"link","label":"Upsert Coach Support Visit (CSV)","href":"/fr/adaptors/library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28","docId":"library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28"},{"type":"link","label":"Upsert Confirm Services Received","href":"/fr/adaptors/library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14","docId":"library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14"},{"type":"link","label":"Upsert Home Visit Log Form","href":"/fr/adaptors/library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03","docId":"library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03"},{"type":"link","label":"\u2728 Upsert Intervention Notes","href":"/fr/adaptors/library/jobs/auto/Upsert-Intervention-Notes-2021-04-28","docId":"library/jobs/auto/Upsert-Intervention-Notes-2021-04-28"},{"type":"link","label":"\u2728 Upsert Register Event","href":"/fr/adaptors/library/jobs/auto/Upsert-Register-Event-2021-04-30","docId":"library/jobs/auto/Upsert-Register-Event-2021-04-30"},{"type":"link","label":"Upsert Register Skills plus Club","href":"/fr/adaptors/library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30","docId":"library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30"},{"type":"link","label":"\u2728 Upsert Risk & Vulnerability Assessment | Service Referral","href":"/fr/adaptors/library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25","docId":"library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25"},{"type":"link","label":"Upsert Service Referral","href":"/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-2021-04-30","docId":"library/jobs/auto/Upsert-Service-Referral-2021-04-30"},{"type":"link","label":"Upsert Service Referral 2","href":"/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-2-2021-06-14","docId":"library/jobs/auto/Upsert-Service-Referral-2-2021-06-14"},{"type":"link","label":"Upsert Service Referral Followup","href":"/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30","docId":"library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30"},{"type":"link","label":"\u2728 Upsert Team/Group Name","href":"/fr/adaptors/library/jobs/auto/Upsert-Team-Group-Name-2021-04-28","docId":"library/jobs/auto/Upsert-Team-Group-Name-2021-04-28"},{"type":"link","label":"Register Participant - V2 Skillz","href":"/fr/adaptors/library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02","docId":"library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02"},{"type":"link","label":"Upsert User in Salesforce","href":"/fr/adaptors/library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16","docId":"library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16"},{"type":"link","label":"Create Person in SF","href":"/fr/adaptors/library/jobs/auto/Create-Person-in-SF-2019-02-25","docId":"library/jobs/auto/Create-Person-in-SF-2019-02-25"},{"type":"link","label":"1. Create Payment in SF","href":"/fr/adaptors/library/jobs/auto/1-Create-Payment-in-SF-2018-09-03","docId":"library/jobs/auto/1-Create-Payment-in-SF-2018-09-03"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/salesforce-changelog","docId":"packages/salesforce-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/salesforce-readme","docId":"packages/salesforce-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"sftp","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/sftp-docs","docId":"packages/sftp-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/sftp-configuration-schema","docId":"packages/sftp-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/sftp-changelog","docId":"packages/sftp-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/sftp-readme","docId":"packages/sftp-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"smpp","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/smpp-docs","docId":"packages/smpp-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/smpp-configuration-schema","docId":"packages/smpp-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/smpp-changelog","docId":"packages/smpp-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/smpp-readme","docId":"packages/smpp-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"surveycto","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/surveycto","docId":"surveycto"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/surveycto-docs","docId":"packages/surveycto-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/surveycto-configuration-schema","docId":"packages/surveycto-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/surveycto-changelog","docId":"packages/surveycto-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/surveycto-readme","docId":"packages/surveycto-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"tableau","href":"/fr/adaptors/tableau","docId":"tableau"},{"type":"category","label":"telerivet","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/telerivet-docs","docId":"packages/telerivet-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/telerivet-configuration-schema","docId":"packages/telerivet-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Send sms from Salesforce workflow action","href":"/fr/adaptors/library/jobs/auto/send-sms-from-salesforce-workflow","docId":"library/jobs/auto/send-sms-from-salesforce-workflow"},{"type":"link","label":"2. SMS Balance Update to Customer","href":"/fr/adaptors/library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14","docId":"library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/telerivet-changelog","docId":"packages/telerivet-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/telerivet-readme","docId":"packages/telerivet-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"template","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/template-docs","docId":"packages/template-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/template-configuration-schema","docId":"packages/template-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/template-changelog","docId":"packages/template-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/template-readme","docId":"packages/template-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"twilio","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/twilio-docs","docId":"packages/twilio-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/twilio-configuration-schema","docId":"packages/twilio-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/twilio-changelog","docId":"packages/twilio-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/twilio-readme","docId":"packages/twilio-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"vtiger","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/vtiger-docs","docId":"packages/vtiger-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/vtiger-configuration-schema","docId":"packages/vtiger-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/vtiger-changelog","docId":"packages/vtiger-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/vtiger-readme","docId":"packages/vtiger-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"zoho","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/zoho-docs","docId":"packages/zoho-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/zoho-configuration-schema","docId":"packages/zoho-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/zoho-changelog","docId":"packages/zoho-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/zoho-readme","docId":"packages/zoho-readme"}],"collapsed":true,"collapsible":true}]},"docs":{"adaptors-intro":{"id":"adaptors-intro","title":"Adaptors","description":"Connect Anything.","sidebar":"adaptors"},"cht":{"id":"cht","title":"Community Health Toolkit","description":"1. To push data from CHT applications to OpenFn, leverage the","sidebar":"adaptors"},"ckan":{"id":"ckan","title":"CKAN","description":"App Overview","sidebar":"adaptors"},"commcare":{"id":"commcare","title":"CommCare","description":"App Overview","sidebar":"adaptors"},"dhis2":{"id":"dhis2","title":"DHIS2","description":"App Overview","sidebar":"adaptors"},"godata":{"id":"godata","title":"Go.Data","description":"Overview","sidebar":"adaptors"},"googlesheets":{"id":"googlesheets","title":"Google Forms/Google Sheets","description":"Google Forms/Google Sheets","sidebar":"adaptors"},"kobotoolbox":{"id":"kobotoolbox","title":"Kobo Toolbox","description":"App Overview","sidebar":"adaptors"},"library-intro":{"id":"library-intro","title":"The Community Job Library","description":"A growing knowledge base","sidebar":"adaptors"},"library/jobs/auto/0-Get-TEI-data-2021-06-02":{"id":"library/jobs/auto/0-Get-TEI-data-2021-06-02","title":"0 - Get TEI data","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01-send-mailgun-email-2018-12-04":{"id":"library/jobs/auto/01-send-mailgun-email-2018-12-04","title":"01 send mailgun email","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01a-Create-Registrants-2019-11-19":{"id":"library/jobs/auto/01a-Create-Registrants-2019-11-19","title":"01a/ Create Registrants","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01b-Query-new-person-record-2019-12-13":{"id":"library/jobs/auto/01b-Query-new-person-record-2019-12-13","title":"01b/ Query new person record","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01c-Create-person_position-record-2019-12-13":{"id":"library/jobs/auto/01c-Create-person_position-record-2019-12-13","title":"01c/ Create person_position record","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11":{"id":"library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11","title":"02a/ Query DB for people to pay","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/02b-Initiate-Payments-2019-11-19":{"id":"library/jobs/auto/02b-Initiate-Payments-2019-11-19","title":"02b/ Initiate Payments","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/03-Update-Payment-Status-2019-11-19":{"id":"library/jobs/auto/03-Update-Payment-Status-2019-11-19","title":"03/ Update Payment Status","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/04a-Query-for-job-changes-2019-12-12":{"id":"library/jobs/auto/04a-Query-for-job-changes-2019-12-12","title":"04a/Query for job changes","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/04b-Update-ODK-form-2019-12-03":{"id":"library/jobs/auto/04b-Update-ODK-form-2019-12-03","title":"04b/ Update ODK form","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/05-Submit-employee-evaluation-2019-12-03":{"id":"library/jobs/auto/05-Submit-employee-evaluation-2019-12-03","title":"05/ Submit employee evaluation","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/05a-Query-for-new-employees-2019-12-19":{"id":"library/jobs/auto/05a-Query-for-new-employees-2019-12-19","title":"05a/Query for new employees","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19":{"id":"library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19","title":"05b/Update ODK eval form","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/1-Create-Payment-in-SF-2018-09-03":{"id":"library/jobs/auto/1-Create-Payment-in-SF-2018-09-03","title":"1. Create Payment in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08":{"id":"library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08","title":"1. Get CommCare Forms (Bulk Extract)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08":{"id":"library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08","title":"1. Get data from SLUHIS","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14":{"id":"library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14","title":"2. SMS Balance Update to Customer","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28":{"id":"library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28","title":"Add DHIS2 Data Value Sets","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/aleksa-cron-2022-04-29":{"id":"library/jobs/auto/aleksa-cron-2022-04-29","title":"aleksa cron","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/alter-state-before-operations":{"id":"library/jobs/auto/alter-state-before-operations","title":"Pre-processing data","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/async-and-array-dot-map":{"id":"library/jobs/auto/async-and-array-dot-map","title":"Using async and array.map","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/async-findValue":{"id":"library/jobs/auto/async-findValue","title":"Using findValue with an array of data","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Attendance-Non-Skillz-2021-06-14":{"id":"library/jobs/auto/Attendance-Non-Skillz-2021-06-14","title":"Attendance Non Skillz","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce":{"id":"library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce","title":"Using merge and each","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26":{"id":"library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26","title":"Catch Error in HTTP Request","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/CHW-case-to-DHIS2-2023-04-27":{"id":"library/jobs/auto/CHW-case-to-DHIS2-2023-04-27","title":"CHW case to DHIS2","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Coach-Session-Register-2021-05-03":{"id":"library/jobs/auto/Coach-Session-Register-2021-05-03","title":"Coach Session Register","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/CommCare-FHIR":{"id":"library/jobs/auto/CommCare-FHIR","title":"Create encounter in OpenHIM","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/commcare-reports-api-2016-08-29":{"id":"library/jobs/auto/commcare-reports-api-2016-08-29","title":"commcare reports api","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27":{"id":"library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27","title":"CommCare to Azure Sql","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/complex-http-request-chains":{"id":"library/jobs/auto/complex-http-request-chains","title":"Chaining HTTP Requests","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/complex-state-control":{"id":"library/jobs/auto/complex-state-control","title":"Using promises","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/concatenate-many-fields-with-nulls":{"id":"library/jobs/auto/concatenate-many-fields-with-nulls","title":"Concat fields with nulls","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Create-contact-2021-03-01":{"id":"library/jobs/auto/Create-contact-2021-03-01","title":"Create contact","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/create-if-proposal":{"id":"library/jobs/auto/create-if-proposal","title":"Create/update records if...","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Create-Intervention-2021-04-08":{"id":"library/jobs/auto/Create-Intervention-2021-04-08","title":"Create Intervention","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24":{"id":"library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24","title":"Create Patient in OpenMRS","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12":{"id":"library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12","title":"Create Person in OpenMRS","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-Person-in-SF-2019-02-25":{"id":"library/jobs/auto/Create-Person-in-SF-2019-02-25","title":"Create Person in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF":{"id":"library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF","title":"Create SMS linked to contact","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Create-TEI-dhis2-2021-03-22":{"id":"library/jobs/auto/Create-TEI-dhis2-2021-03-22","title":"Create TEI (dhis2)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/DHIS2-DataValues-API":{"id":"library/jobs/auto/DHIS2-DataValues-API","title":"Add data values","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/DHIS2-Events-2016-01-27":{"id":"library/jobs/auto/DHIS2-Events-2016-01-27","title":"DHIS2 Events","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/DHIS2-Events-API":{"id":"library/jobs/auto/DHIS2-Events-API","title":"Add events","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Extract-Vitas-Data-2021-05-11":{"id":"library/jobs/auto/Extract-Vitas-Data-2021-05-11","title":"Extract Vitas Data","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Failed-Payment-Notification-2021-04-23":{"id":"library/jobs/auto/Failed-Payment-Notification-2021-04-23","title":"Failed Payment Notification","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Fetch-Claims-2023-07-17":{"id":"library/jobs/auto/Fetch-Claims-2023-07-17","title":"Fetch Claims","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Get-cases-from-Primero-2021-09-23":{"id":"library/jobs/auto/Get-cases-from-Primero-2021-09-23","title":"Get cases from Primero","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16":{"id":"library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16","title":"Get CommCare Forms (Bulk Extract)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22":{"id":"library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22","title":"GET Data From KoboToolbox","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/getKoboData":{"id":"library/jobs/auto/getKoboData","title":"Extract Kobo data from API to send to OpenFn Inbox","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03":{"id":"library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03","title":"HIV Testing Event Snapshot","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03":{"id":"library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03","title":"HIV Testing Event Statistics","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Kobo-to-sheets-2023-10-13":{"id":"library/jobs/auto/Kobo-to-sheets-2023-10-13","title":"Kobo to sheets","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Load-to-DB-2022-05-16":{"id":"library/jobs/auto/Load-to-DB-2022-05-16","title":"Load to DB","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Load-to-DHIS2-2023-07-17":{"id":"library/jobs/auto/Load-to-DHIS2-2023-07-17","title":"Load to DHIS2","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22":{"id":"library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22","title":"Load / Upsert Data into PostgreSQL","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03":{"id":"library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03","title":"Malaria Testing Event Snapshot","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03":{"id":"library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03","title":"Malaria Testing Event Statistics","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/nawiri-2023-05-03":{"id":"library/jobs/auto/nawiri-2023-05-03","title":"nawiri","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/no-return-2023-01-06":{"id":"library/jobs/auto/no-return-2023-01-06","title":"no return","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks":{"id":"library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks","title":"Handling multiple ODK repeat groups","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Pay-CHW-2021-04-23":{"id":"library/jobs/auto/Pay-CHW-2021-04-23","title":"Pay CHW","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/PHQ9-2021-05-03":{"id":"library/jobs/auto/PHQ9-2021-05-03","title":"PHQ9","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/promise-all-nested-requests":{"id":"library/jobs/auto/promise-all-nested-requests","title":"Promises and nested requests","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19":{"id":"library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19","title":"Q3 2022] Create Distribution & Referral in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27":{"id":"library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27","title":"Q3 2022] Update HH Name in CommCare","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28":{"id":"library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28","title":"Q3 2022] Upsert Household & Household Visit in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21":{"id":"library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21","title":"Q3 2022] Upsert Person","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28":{"id":"library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28","title":"Q3 2022] Upsert Person Visit","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22":{"id":"library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22","title":"Q4 2022] Upsert Supervision - Accompaniment","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19":{"id":"library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19","title":"Q4 2022] Upsert Supervision - Feedback","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24":{"id":"library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24","title":"Q4 2022] Upsert Supervision - Household Spot Check","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02":{"id":"library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02","title":"Register Participant - V2 Skillz","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Register-Patient-2021-03-02":{"id":"library/jobs/auto/Register-Patient-2021-03-02","title":"Register Patient","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Registration-forms-new-case-2023-06-22":{"id":"library/jobs/auto/Registration-forms-new-case-2023-06-22","title":"Registration forms(new case)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Request-Vitas-Sync-2021-05-11":{"id":"library/jobs/auto/Request-Vitas-Sync-2021-05-11","title":"Request Vitas Sync","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27":{"id":"library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27","title":"Risk and Vulnerability Assessment","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/send-mail-in-mailgun":{"id":"library/jobs/auto/send-mail-in-mailgun","title":"send email","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/send-sms-from-salesforce-workflow":{"id":"library/jobs/auto/send-sms-from-salesforce-workflow","title":"Send sms from Salesforce workflow action","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/synchronous-http-request":{"id":"library/jobs/auto/synchronous-http-request","title":"Chaining synchronous http requests","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/timeout":{"id":"library/jobs/auto/timeout","title":"Timeout to create a delay","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30":{"id":"library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30","title":"Upsert Aggregate Service Referrals","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30":{"id":"library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30","title":"Upsert ART Adherence Self-Reporting Tool","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24":{"id":"library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24","title":"Upsert Attendance Skillz Plus Club","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28":{"id":"library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28","title":"Upsert Coach Support Visit (CSV)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14":{"id":"library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14","title":"Upsert Confirm Services Received","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03":{"id":"library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03","title":"Upsert Home Visit Log Form","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Intervention-Notes-2021-04-28":{"id":"library/jobs/auto/Upsert-Intervention-Notes-2021-04-28","title":"Upsert Intervention Notes","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/upsert-many-items-in-array-with-value-outside-array":{"id":"library/jobs/auto/upsert-many-items-in-array-with-value-outside-array","title":"Merge data into child array then upsert","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Post-Challenges-2021-04-30":{"id":"library/jobs/auto/Upsert-Post-Challenges-2021-04-30","title":"Upsert Post Challenges","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Pre-Challenges-2021-04-30":{"id":"library/jobs/auto/Upsert-Pre-Challenges-2021-04-30","title":"Upsert Pre Challenges","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Event-2021-04-30":{"id":"library/jobs/auto/Upsert-Register-Event-2021-04-30","title":"Upsert Register Event","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Participant-2021-04-28":{"id":"library/jobs/auto/Upsert-Register-Participant-2021-04-28","title":"Upsert Register Participant","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30":{"id":"library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30","title":"Upsert Register Participant (Skillz)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30":{"id":"library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30","title":"Upsert Register Skills plus Club","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25":{"id":"library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25","title":"Upsert Risk & Vulnerability Assessment | Service Referral","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Service-Referral-2-2021-06-14":{"id":"library/jobs/auto/Upsert-Service-Referral-2-2021-06-14","title":"Upsert Service Referral 2","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Service-Referral-2021-04-30":{"id":"library/jobs/auto/Upsert-Service-Referral-2021-04-30","title":"Upsert Service Referral","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30":{"id":"library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30","title":"Upsert Service Referral Followup","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Team-Group-Name-2021-04-28":{"id":"library/jobs/auto/Upsert-Team-Group-Name-2021-04-28","title":"Upsert Team/Group Name","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-to-mBrana-2021-05-11":{"id":"library/jobs/auto/Upsert-to-mBrana-2021-05-11","title":"Upsert to mBrana","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16":{"id":"library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16","title":"Upsert User in Salesforce","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19":{"id":"library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19","title":"WF1-1. Bulk get HH cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19":{"id":"library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19","title":"WF1-2. Bulk upsert HHs and HH Visits","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19":{"id":"library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19","title":"WF2-1. Bulk get Person cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19":{"id":"library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19","title":"WF2-2. Bulk upsert Persons","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19":{"id":"library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19","title":"WF3-1. Bulk get Person Visit cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19":{"id":"library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19","title":"WF3-2. Bulk upsert Person Visits","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31":{"id":"library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31","title":"WF3-2a/ Repeat Failed Person Visits","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19":{"id":"library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19","title":"WF4-1. Bulk get Referral Cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19":{"id":"library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19","title":"WF4-2. Bulk upsert Services","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/triggers/xmlns":{"id":"library/triggers/xmlns","title":"Match a message with a fragment inside another object called `form`","description":""},"magpi":{"id":"magpi","title":"Magpi","description":"Magpi is not able to push data to external URLs. In order to fetch data from","sidebar":"adaptors"},"moodle":{"id":"moodle","title":"Moodle","description":"Overview","sidebar":"adaptors"},"odk":{"id":"odk","title":"Open Data Kit (ODK)","description":"Open Data Kit (ODK) Collect","sidebar":"adaptors"},"ona":{"id":"ona","title":"Ona.io","description":"Webhooks to push form data to OpenFn","sidebar":"adaptors"},"packages/asana-changelog":{"id":"packages/asana-changelog","title":"asana changelog","description":"3.0.1","sidebar":"adaptors"},"packages/asana-configuration-schema":{"id":"packages/asana-configuration-schema","title":"Config for asana","description":"Jobs that use the asana adaptor may require authentication. A","sidebar":"adaptors"},"packages/asana-docs":{"id":"packages/asana-docs","title":"asana@3.0.1","description":"Functions","sidebar":"adaptors"},"packages/asana-readme":{"id":"packages/asana-readme","title":"asana developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/asana","sidebar":"adaptors"},"packages/beyonic-changelog":{"id":"packages/beyonic-changelog","title":"beyonic changelog","description":"0.2.1","sidebar":"adaptors"},"packages/beyonic-configuration-schema":{"id":"packages/beyonic-configuration-schema","title":"Config for beyonic","description":"Jobs that use the beyonic adaptor may require authentication. A","sidebar":"adaptors"},"packages/beyonic-docs":{"id":"packages/beyonic-docs","title":"beyonic@0.2.1","description":"Functions","sidebar":"adaptors"},"packages/beyonic-readme":{"id":"packages/beyonic-readme","title":"beyonic developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/beyonic","sidebar":"adaptors"},"packages/bigquery-changelog":{"id":"packages/bigquery-changelog","title":"bigquery changelog","description":"2.0.4","sidebar":"adaptors"},"packages/bigquery-configuration-schema":{"id":"packages/bigquery-configuration-schema","title":"Config for bigquery","description":"Jobs that use the bigquery adaptor may require authentication. A","sidebar":"adaptors"},"packages/bigquery-docs":{"id":"packages/bigquery-docs","title":"bigquery@2.0.4","description":"load","sidebar":"adaptors"},"packages/bigquery-readme":{"id":"packages/bigquery-readme","title":"bigquery developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/bigquery","sidebar":"adaptors"},"packages/commcare-changelog":{"id":"packages/commcare-changelog","title":"commcare changelog","description":"1.6.10","sidebar":"adaptors"},"packages/commcare-configuration-schema":{"id":"packages/commcare-configuration-schema","title":"Config for commcare","description":"Jobs that use the commcare adaptor may require authentication. A","sidebar":"adaptors"},"packages/commcare-docs":{"id":"packages/commcare-docs","title":"commcare@1.6.10","description":"Functions","sidebar":"adaptors"},"packages/commcare-readme":{"id":"packages/commcare-readme","title":"commcare developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/commcare","sidebar":"adaptors"},"packages/common-changelog":{"id":"packages/common-changelog","title":"common changelog","description":"v0.4.0","sidebar":"adaptors"},"packages/common-configuration-schema":{"id":"packages/common-configuration-schema","title":"Config for common","description":"No configuration schema has been defined for the common adaptor.","sidebar":"adaptors"},"packages/common-docs":{"id":"packages/common-docs","title":"common@1.11.1","description":"Functions","sidebar":"adaptors"},"packages/common-readme":{"id":"packages/common-readme","title":"common developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/common","sidebar":"adaptors"},"packages/dhis2-changelog":{"id":"packages/dhis2-changelog","title":"dhis2 changelog","description":"4.0.3","sidebar":"adaptors"},"packages/dhis2-configuration-schema":{"id":"packages/dhis2-configuration-schema","title":"Config for dhis2","description":"Jobs that use the dhis2 adaptor may require authentication. A","sidebar":"adaptors"},"packages/dhis2-docs":{"id":"packages/dhis2-docs","title":"dhis2@4.0.3","description":"Functions","sidebar":"adaptors"},"packages/dhis2-readme":{"id":"packages/dhis2-readme","title":"dhis2 developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/dhis2","sidebar":"adaptors"},"packages/dynamics-changelog":{"id":"packages/dynamics-changelog","title":"dynamics changelog","description":"0.4.8","sidebar":"adaptors"},"packages/dynamics-configuration-schema":{"id":"packages/dynamics-configuration-schema","title":"Config for dynamics","description":"Jobs that use the dynamics adaptor may require authentication. A","sidebar":"adaptors"},"packages/dynamics-docs":{"id":"packages/dynamics-docs","title":"dynamics@0.4.8","description":"","sidebar":"adaptors"},"packages/dynamics-readme":{"id":"packages/dynamics-readme","title":"dynamics developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/dynamics","sidebar":"adaptors"},"packages/facebook-changelog":{"id":"packages/facebook-changelog","title":"facebook changelog","description":"0.3.2","sidebar":"adaptors"},"packages/facebook-configuration-schema":{"id":"packages/facebook-configuration-schema","title":"Config for facebook","description":"Jobs that use the facebook adaptor may require authentication. A","sidebar":"adaptors"},"packages/facebook-docs":{"id":"packages/facebook-docs","title":"facebook@0.3.2","description":"postMessage","sidebar":"adaptors"},"packages/facebook-readme":{"id":"packages/facebook-readme","title":"facebook developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/facebook","sidebar":"adaptors"},"packages/fhir-changelog":{"id":"packages/fhir-changelog","title":"fhir changelog","description":"3.1.0","sidebar":"adaptors"},"packages/fhir-configuration-schema":{"id":"packages/fhir-configuration-schema","title":"Config for fhir","description":"Jobs that use the fhir adaptor may require authentication. A","sidebar":"adaptors"},"packages/fhir-docs":{"id":"packages/fhir-docs","title":"fhir@3.1.0","description":"Functions","sidebar":"adaptors"},"packages/fhir-readme":{"id":"packages/fhir-readme","title":"fhir developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/fhir","sidebar":"adaptors"},"packages/godata-changelog":{"id":"packages/godata-changelog","title":"godata changelog","description":"3.3.1","sidebar":"adaptors"},"packages/godata-configuration-schema":{"id":"packages/godata-configuration-schema","title":"Config for godata","description":"Jobs that use the godata adaptor may require authentication. A","sidebar":"adaptors"},"packages/godata-docs":{"id":"packages/godata-docs","title":"godata@3.3.1","description":"Functions","sidebar":"adaptors"},"packages/godata-readme":{"id":"packages/godata-readme","title":"godata developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/godata","sidebar":"adaptors"},"packages/googlehealthcare-changelog":{"id":"packages/googlehealthcare-changelog","title":"googlehealthcare changelog","description":"1.0.0","sidebar":"adaptors"},"packages/googlehealthcare-configuration-schema":{"id":"packages/googlehealthcare-configuration-schema","title":"Config for googlehealthcare","description":"Jobs that use the googlehealthcare adaptor may require authentication. A","sidebar":"adaptors"},"packages/googlehealthcare-docs":{"id":"packages/googlehealthcare-docs","title":"googlehealthcare@1.0.0","description":"createFhirResource","sidebar":"adaptors"},"packages/googlehealthcare-readme":{"id":"packages/googlehealthcare-readme","title":"googlehealthcare developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/googlehealthcare","sidebar":"adaptors"},"packages/googlesheets-changelog":{"id":"packages/googlesheets-changelog","title":"googlesheets changelog","description":"2.2.2","sidebar":"adaptors"},"packages/googlesheets-configuration-schema":{"id":"packages/googlesheets-configuration-schema","title":"Config for googlesheets","description":"Jobs that use the googlesheets adaptor may require authentication. A","sidebar":"adaptors"},"packages/googlesheets-docs":{"id":"packages/googlesheets-docs","title":"googlesheets@2.2.2","description":"appendValues","sidebar":"adaptors"},"packages/googlesheets-readme":{"id":"packages/googlesheets-readme","title":"googlesheets developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/googlesheets","sidebar":"adaptors"},"packages/hive-changelog":{"id":"packages/hive-changelog","title":"hive changelog","description":"0.2.0","sidebar":"adaptors"},"packages/hive-configuration-schema":{"id":"packages/hive-configuration-schema","title":"Config for hive","description":"Jobs that use the hive adaptor may require authentication. A","sidebar":"adaptors"},"packages/hive-docs":{"id":"packages/hive-docs","title":"hive@0.2.0","description":"query","sidebar":"adaptors"},"packages/hive-readme":{"id":"packages/hive-readme","title":"hive developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/hive","sidebar":"adaptors"},"packages/http-changelog":{"id":"packages/http-changelog","title":"http changelog","description":"5.0.4","sidebar":"adaptors"},"packages/http-configuration-schema":{"id":"packages/http-configuration-schema","title":"Config for http","description":"Jobs that use the http adaptor may require authentication. A","sidebar":"adaptors"},"packages/http-docs":{"id":"packages/http-docs","title":"http@5.0.4","description":"Functions","sidebar":"adaptors"},"packages/http-readme":{"id":"packages/http-readme","title":"http developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/http","sidebar":"adaptors"},"packages/khanacademy-changelog":{"id":"packages/khanacademy-changelog","title":"khanacademy changelog","description":"0.4.1","sidebar":"adaptors"},"packages/khanacademy-configuration-schema":{"id":"packages/khanacademy-configuration-schema","title":"Config for khanacademy","description":"Jobs that use the khanacademy adaptor may require authentication. A","sidebar":"adaptors"},"packages/khanacademy-docs":{"id":"packages/khanacademy-docs","title":"khanacademy@0.4.1","description":"fetch","sidebar":"adaptors"},"packages/khanacademy-readme":{"id":"packages/khanacademy-readme","title":"khanacademy developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/khanacademy","sidebar":"adaptors"},"packages/kobotoolbox-changelog":{"id":"packages/kobotoolbox-changelog","title":"kobotoolbox changelog","description":"2.1.0","sidebar":"adaptors"},"packages/kobotoolbox-configuration-schema":{"id":"packages/kobotoolbox-configuration-schema","title":"Config for kobotoolbox","description":"Jobs that use the kobotoolbox adaptor may require authentication. A","sidebar":"adaptors"},"packages/kobotoolbox-docs":{"id":"packages/kobotoolbox-docs","title":"kobotoolbox@2.1.0","description":"Functions","sidebar":"adaptors"},"packages/kobotoolbox-readme":{"id":"packages/kobotoolbox-readme","title":"kobotoolbox developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/kobotoolbox","sidebar":"adaptors"},"packages/magpi-changelog":{"id":"packages/magpi-changelog","title":"magpi changelog","description":"1.1.1","sidebar":"adaptors"},"packages/magpi-configuration-schema":{"id":"packages/magpi-configuration-schema","title":"Config for magpi","description":"Jobs that use the magpi adaptor may require authentication. A","sidebar":"adaptors"},"packages/magpi-docs":{"id":"packages/magpi-docs","title":"magpi@1.1.1","description":"Functions","sidebar":"adaptors"},"packages/magpi-readme":{"id":"packages/magpi-readme","title":"magpi developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/magpi","sidebar":"adaptors"},"packages/mailchimp-changelog":{"id":"packages/mailchimp-changelog","title":"mailchimp changelog","description":"0.7.1","sidebar":"adaptors"},"packages/mailchimp-configuration-schema":{"id":"packages/mailchimp-configuration-schema","title":"Config for mailchimp","description":"Jobs that use the mailchimp adaptor may require authentication. A","sidebar":"adaptors"},"packages/mailchimp-docs":{"id":"packages/mailchimp-docs","title":"mailchimp@0.7.1","description":"Functions","sidebar":"adaptors"},"packages/mailchimp-readme":{"id":"packages/mailchimp-readme","title":"mailchimp developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mailchimp","sidebar":"adaptors"},"packages/mailgun-changelog":{"id":"packages/mailgun-changelog","title":"mailgun changelog","description":"0.4.3","sidebar":"adaptors"},"packages/mailgun-configuration-schema":{"id":"packages/mailgun-configuration-schema","title":"Config for mailgun","description":"Jobs that use the mailgun adaptor may require authentication. A","sidebar":"adaptors"},"packages/mailgun-docs":{"id":"packages/mailgun-docs","title":"mailgun@0.4.3","description":"send","sidebar":"adaptors"},"packages/mailgun-readme":{"id":"packages/mailgun-readme","title":"mailgun developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mailgun","sidebar":"adaptors"},"packages/maximo-changelog":{"id":"packages/maximo-changelog","title":"maximo changelog","description":"0.4.1","sidebar":"adaptors"},"packages/maximo-configuration-schema":{"id":"packages/maximo-configuration-schema","title":"Config for maximo","description":"Jobs that use the maximo adaptor may require authentication. A","sidebar":"adaptors"},"packages/maximo-docs":{"id":"packages/maximo-docs","title":"maximo@0.4.1","description":"Functions","sidebar":"adaptors"},"packages/maximo-readme":{"id":"packages/maximo-readme","title":"maximo developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/maximo","sidebar":"adaptors"},"packages/medicmobile-changelog":{"id":"packages/medicmobile-changelog","title":"medicmobile changelog","description":"0.4.2","sidebar":"adaptors"},"packages/medicmobile-configuration-schema":{"id":"packages/medicmobile-configuration-schema","title":"Config for medicmobile","description":"Jobs that use the medicmobile adaptor may require authentication. A","sidebar":"adaptors"},"packages/medicmobile-docs":{"id":"packages/medicmobile-docs","title":"medicmobile@0.4.2","description":"Functions","sidebar":"adaptors"},"packages/medicmobile-readme":{"id":"packages/medicmobile-readme","title":"medicmobile developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/medicmobile","sidebar":"adaptors"},"packages/mogli-changelog":{"id":"packages/mogli-changelog","title":"mogli changelog","description":"v0.1.6","sidebar":"adaptors"},"packages/mogli-configuration-schema":{"id":"packages/mogli-configuration-schema","title":"Config for mogli","description":"Jobs that use the mogli adaptor may require authentication. A","sidebar":"adaptors"},"packages/mogli-docs":{"id":"packages/mogli-docs","title":"mogli@0.4.1","description":"Functions","sidebar":"adaptors"},"packages/mogli-readme":{"id":"packages/mogli-readme","title":"mogli developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mogli","sidebar":"adaptors"},"packages/mongodb-changelog":{"id":"packages/mongodb-changelog","title":"mongodb changelog","description":"2.0.0","sidebar":"adaptors"},"packages/mongodb-configuration-schema":{"id":"packages/mongodb-configuration-schema","title":"Config for mongodb","description":"Jobs that use the mongodb adaptor may require authentication. A","sidebar":"adaptors"},"packages/mongodb-docs":{"id":"packages/mongodb-docs","title":"mongodb@2.0.0","description":"Functions","sidebar":"adaptors"},"packages/mongodb-readme":{"id":"packages/mongodb-readme","title":"mongodb developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mongodb","sidebar":"adaptors"},"packages/msgraph-changelog":{"id":"packages/msgraph-changelog","title":"msgraph changelog","description":"0.4.0","sidebar":"adaptors"},"packages/msgraph-configuration-schema":{"id":"packages/msgraph-configuration-schema","title":"Config for msgraph","description":"Jobs that use the msgraph adaptor may require authentication. A","sidebar":"adaptors"},"packages/msgraph-docs":{"id":"packages/msgraph-docs","title":"msgraph@0.4.0","description":"Functions","sidebar":"adaptors"},"packages/msgraph-readme":{"id":"packages/msgraph-readme","title":"msgraph developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/msgraph","sidebar":"adaptors"},"packages/mssql-changelog":{"id":"packages/mssql-changelog","title":"mssql changelog","description":"4.1.8","sidebar":"adaptors"},"packages/mssql-configuration-schema":{"id":"packages/mssql-configuration-schema","title":"Config for mssql","description":"Jobs that use the mssql adaptor may require authentication. A","sidebar":"adaptors"},"packages/mssql-docs":{"id":"packages/mssql-docs","title":"mssql@4.1.8","description":"Functions","sidebar":"adaptors"},"packages/mssql-readme":{"id":"packages/mssql-readme","title":"mssql developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mssql","sidebar":"adaptors"},"packages/mysql-changelog":{"id":"packages/mysql-changelog","title":"mysql changelog","description":"1.4.8","sidebar":"adaptors"},"packages/mysql-configuration-schema":{"id":"packages/mysql-configuration-schema","title":"Config for mysql","description":"Jobs that use the mysql adaptor may require authentication. A","sidebar":"adaptors"},"packages/mysql-docs":{"id":"packages/mysql-docs","title":"mysql@1.4.8","description":"Functions","sidebar":"adaptors"},"packages/mysql-readme":{"id":"packages/mysql-readme","title":"mysql developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mysql","sidebar":"adaptors"},"packages/nexmo-changelog":{"id":"packages/nexmo-changelog","title":"nexmo changelog","description":"0.4.3","sidebar":"adaptors"},"packages/nexmo-configuration-schema":{"id":"packages/nexmo-configuration-schema","title":"Config for nexmo","description":"Jobs that use the nexmo adaptor may require authentication. A","sidebar":"adaptors"},"packages/nexmo-docs":{"id":"packages/nexmo-docs","title":"nexmo@0.4.3","description":"sendSMS","sidebar":"adaptors"},"packages/nexmo-readme":{"id":"packages/nexmo-readme","title":"nexmo developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/nexmo","sidebar":"adaptors"},"packages/ocl-changelog":{"id":"packages/ocl-changelog","title":"ocl changelog","description":"1.1.7","sidebar":"adaptors"},"packages/ocl-configuration-schema":{"id":"packages/ocl-configuration-schema","title":"Config for ocl","description":"Jobs that use the ocl adaptor may require authentication. A","sidebar":"adaptors"},"packages/ocl-docs":{"id":"packages/ocl-docs","title":"ocl@1.1.7","description":"Functions","sidebar":"adaptors"},"packages/ocl-readme":{"id":"packages/ocl-readme","title":"ocl developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/ocl","sidebar":"adaptors"},"packages/openfn-changelog":{"id":"packages/openfn-changelog","title":"openfn changelog","description":"1.3.8","sidebar":"adaptors"},"packages/openfn-configuration-schema":{"id":"packages/openfn-configuration-schema","title":"Config for openfn","description":"Jobs that use the openfn adaptor may require authentication. A","sidebar":"adaptors"},"packages/openfn-docs":{"id":"packages/openfn-docs","title":"openfn@1.3.8","description":"request","sidebar":"adaptors"},"packages/openfn-readme":{"id":"packages/openfn-readme","title":"openfn developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/openfn","sidebar":"adaptors"},"packages/openhim-changelog":{"id":"packages/openhim-changelog","title":"openhim changelog","description":"0.2.1","sidebar":"adaptors"},"packages/openhim-configuration-schema":{"id":"packages/openhim-configuration-schema","title":"Config for openhim","description":"Jobs that use the openhim adaptor may require authentication. A","sidebar":"adaptors"},"packages/openhim-docs":{"id":"packages/openhim-docs","title":"openhim@0.2.1","description":"encounter","sidebar":"adaptors"},"packages/openhim-readme":{"id":"packages/openhim-readme","title":"openhim developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/openhim","sidebar":"adaptors"},"packages/openmrs-changelog":{"id":"packages/openmrs-changelog","title":"openmrs changelog","description":"2.0.8","sidebar":"adaptors"},"packages/openmrs-configuration-schema":{"id":"packages/openmrs-configuration-schema","title":"Config for openmrs","description":"Jobs that use the openmrs adaptor may require authentication. A","sidebar":"adaptors"},"packages/openmrs-docs":{"id":"packages/openmrs-docs","title":"openmrs@2.0.8","description":"Functions","sidebar":"adaptors"},"packages/openmrs-readme":{"id":"packages/openmrs-readme","title":"openmrs developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/openmrs","sidebar":"adaptors"},"packages/postgresql-changelog":{"id":"packages/postgresql-changelog","title":"postgresql changelog","description":"4.1.8","sidebar":"adaptors"},"packages/postgresql-configuration-schema":{"id":"packages/postgresql-configuration-schema","title":"Config for postgresql","description":"Jobs that use the postgresql adaptor may require authentication. A","sidebar":"adaptors"},"packages/postgresql-docs":{"id":"packages/postgresql-docs","title":"postgresql@4.1.8","description":"Functions","sidebar":"adaptors"},"packages/postgresql-readme":{"id":"packages/postgresql-readme","title":"postgresql developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/postgresql","sidebar":"adaptors"},"packages/primero-changelog":{"id":"packages/primero-changelog","title":"primero changelog","description":"2.11.8","sidebar":"adaptors"},"packages/primero-configuration-schema":{"id":"packages/primero-configuration-schema","title":"Config for primero","description":"Jobs that use the primero adaptor may require authentication. A","sidebar":"adaptors"},"packages/primero-docs":{"id":"packages/primero-docs","title":"primero@2.11.8","description":"Functions","sidebar":"adaptors"},"packages/primero-readme":{"id":"packages/primero-readme","title":"primero developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/primero","sidebar":"adaptors"},"packages/progres-changelog":{"id":"packages/progres-changelog","title":"progres changelog","description":"1.3.8","sidebar":"adaptors"},"packages/progres-configuration-schema":{"id":"packages/progres-configuration-schema","title":"Config for progres","description":"Jobs that use the progres adaptor may require authentication. A","sidebar":"adaptors"},"packages/progres-docs":{"id":"packages/progres-docs","title":"progres@1.3.8","description":"postData","sidebar":"adaptors"},"packages/progres-readme":{"id":"packages/progres-readme","title":"progres developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/progres","sidebar":"adaptors"},"packages/rapidpro-changelog":{"id":"packages/rapidpro-changelog","title":"rapidpro changelog","description":"1.0.8","sidebar":"adaptors"},"packages/rapidpro-configuration-schema":{"id":"packages/rapidpro-configuration-schema","title":"Config for rapidpro","description":"Jobs that use the rapidpro adaptor may require authentication. A","sidebar":"adaptors"},"packages/rapidpro-docs":{"id":"packages/rapidpro-docs","title":"rapidpro@1.0.8","description":"Functions","sidebar":"adaptors"},"packages/rapidpro-readme":{"id":"packages/rapidpro-readme","title":"rapidpro developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/rapidpro","sidebar":"adaptors"},"packages/resourcemap-changelog":{"id":"packages/resourcemap-changelog","title":"resourcemap changelog","description":"0.3.1","sidebar":"adaptors"},"packages/resourcemap-configuration-schema":{"id":"packages/resourcemap-configuration-schema","title":"Config for resourcemap","description":"Jobs that use the resourcemap adaptor may require authentication. A","sidebar":"adaptors"},"packages/resourcemap-docs":{"id":"packages/resourcemap-docs","title":"resourcemap@0.3.1","description":"submitSite","sidebar":"adaptors"},"packages/resourcemap-readme":{"id":"packages/resourcemap-readme","title":"resourcemap developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/resourcemap","sidebar":"adaptors"},"packages/salesforce-changelog":{"id":"packages/salesforce-changelog","title":"salesforce changelog","description":"4.2.2","sidebar":"adaptors"},"packages/salesforce-configuration-schema":{"id":"packages/salesforce-configuration-schema","title":"Config for salesforce","description":"Jobs that use the salesforce adaptor may require authentication. A","sidebar":"adaptors"},"packages/salesforce-docs":{"id":"packages/salesforce-docs","title":"salesforce@4.2.2","description":"Functions","sidebar":"adaptors"},"packages/salesforce-readme":{"id":"packages/salesforce-readme","title":"salesforce developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/salesforce","sidebar":"adaptors"},"packages/sftp-changelog":{"id":"packages/sftp-changelog","title":"sftp changelog","description":"1.0.1","sidebar":"adaptors"},"packages/sftp-configuration-schema":{"id":"packages/sftp-configuration-schema","title":"Config for sftp","description":"Jobs that use the sftp adaptor may require authentication. A","sidebar":"adaptors"},"packages/sftp-docs":{"id":"packages/sftp-docs","title":"sftp@1.0.1","description":"Functions","sidebar":"adaptors"},"packages/sftp-readme":{"id":"packages/sftp-readme","title":"sftp developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/sftp","sidebar":"adaptors"},"packages/smpp-changelog":{"id":"packages/smpp-changelog","title":"smpp changelog","description":"1.3.1","sidebar":"adaptors"},"packages/smpp-configuration-schema":{"id":"packages/smpp-configuration-schema","title":"Config for smpp","description":"Jobs that use the smpp adaptor may require authentication. A","sidebar":"adaptors"},"packages/smpp-docs":{"id":"packages/smpp-docs","title":"smpp@1.3.1","description":"","sidebar":"adaptors"},"packages/smpp-readme":{"id":"packages/smpp-readme","title":"smpp developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/smpp","sidebar":"adaptors"},"packages/surveycto-changelog":{"id":"packages/surveycto-changelog","title":"surveycto changelog","description":"1.2.1","sidebar":"adaptors"},"packages/surveycto-configuration-schema":{"id":"packages/surveycto-configuration-schema","title":"Config for surveycto","description":"Jobs that use the surveycto adaptor may require authentication. A","sidebar":"adaptors"},"packages/surveycto-docs":{"id":"packages/surveycto-docs","title":"surveycto@1.2.1","description":"fetchSubmissions","sidebar":"adaptors"},"packages/surveycto-readme":{"id":"packages/surveycto-readme","title":"surveycto developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/surveycto","sidebar":"adaptors"},"packages/telerivet-changelog":{"id":"packages/telerivet-changelog","title":"telerivet changelog","description":"0.2.1","sidebar":"adaptors"},"packages/telerivet-configuration-schema":{"id":"packages/telerivet-configuration-schema","title":"Config for telerivet","description":"Jobs that use the telerivet adaptor may require authentication. A","sidebar":"adaptors"},"packages/telerivet-docs":{"id":"packages/telerivet-docs","title":"telerivet@0.2.1","description":"send","sidebar":"adaptors"},"packages/telerivet-readme":{"id":"packages/telerivet-readme","title":"telerivet developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/telerivet","sidebar":"adaptors"},"packages/template-changelog":{"id":"packages/template-changelog","title":"template changelog","description":"3.0.1","sidebar":"adaptors"},"packages/template-configuration-schema":{"id":"packages/template-configuration-schema","title":"Config for template","description":"Jobs that use the template adaptor may require authentication. A","sidebar":"adaptors"},"packages/template-docs":{"id":"packages/template-docs","title":"template@3.0.1","description":"create","sidebar":"adaptors"},"packages/template-readme":{"id":"packages/template-readme","title":"template developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/template","sidebar":"adaptors"},"packages/twilio-changelog":{"id":"packages/twilio-changelog","title":"twilio changelog","description":"0.4.1","sidebar":"adaptors"},"packages/twilio-configuration-schema":{"id":"packages/twilio-configuration-schema","title":"Config for twilio","description":"Jobs that use the twilio adaptor may require authentication. A","sidebar":"adaptors"},"packages/twilio-docs":{"id":"packages/twilio-docs","title":"twilio@0.4.1","description":"sendSMS","sidebar":"adaptors"},"packages/twilio-readme":{"id":"packages/twilio-readme","title":"twilio developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/twilio","sidebar":"adaptors"},"packages/vtiger-changelog":{"id":"packages/vtiger-changelog","title":"vtiger changelog","description":"1.2.1","sidebar":"adaptors"},"packages/vtiger-configuration-schema":{"id":"packages/vtiger-configuration-schema","title":"Config for vtiger","description":"Jobs that use the vtiger adaptor may require authentication. A","sidebar":"adaptors"},"packages/vtiger-docs":{"id":"packages/vtiger-docs","title":"vtiger@1.2.1","description":"","sidebar":"adaptors"},"packages/vtiger-readme":{"id":"packages/vtiger-readme","title":"vtiger developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/vtiger","sidebar":"adaptors"},"packages/zoho-changelog":{"id":"packages/zoho-changelog","title":"zoho changelog","description":"0.3.1","sidebar":"adaptors"},"packages/zoho-configuration-schema":{"id":"packages/zoho-configuration-schema","title":"Config for zoho","description":"Jobs that use the zoho adaptor may require authentication. A","sidebar":"adaptors"},"packages/zoho-docs":{"id":"packages/zoho-docs","title":"zoho@0.3.1","description":"addRow","sidebar":"adaptors"},"packages/zoho-readme":{"id":"packages/zoho-readme","title":"zoho developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/zoho","sidebar":"adaptors"},"postgresql":{"id":"postgresql","title":"PostgreSQL","description":"Overview","sidebar":"adaptors"},"powerbi":{"id":"powerbi","title":"Power BI","description":"(Work in progress)","sidebar":"adaptors"},"primero":{"id":"primero","title":"Primero","description":"Overview","sidebar":"adaptors"},"salesforce":{"id":"salesforce","title":"Salesforce","description":"App Overview","sidebar":"adaptors"},"surveycto":{"id":"surveycto","title":"SurveyCTO","description":"Real-time (with webhooks)","sidebar":"adaptors"},"tableau":{"id":"tableau","title":"Tableau","description":"(Work in progress)","sidebar":"adaptors"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[85960],{73451:a=>{a.exports=JSON.parse('{"pluginId":"adaptors","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"adaptors":[{"type":"link","label":"Introduction","href":"/fr/adaptors/","docId":"adaptors-intro"},{"type":"link","label":"Library Examples","href":"/fr/adaptors/library","docId":"library-intro"},{"type":"category","label":"asana","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/asana-docs","docId":"packages/asana-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/asana-configuration-schema","docId":"packages/asana-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/asana-changelog","docId":"packages/asana-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/asana-readme","docId":"packages/asana-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"beyonic","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/beyonic-docs","docId":"packages/beyonic-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/beyonic-configuration-schema","docId":"packages/beyonic-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Pay CHW","href":"/fr/adaptors/library/jobs/auto/Pay-CHW-2021-04-23","docId":"library/jobs/auto/Pay-CHW-2021-04-23"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/beyonic-changelog","docId":"packages/beyonic-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/beyonic-readme","docId":"packages/beyonic-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"bigquery","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/bigquery-docs","docId":"packages/bigquery-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/bigquery-configuration-schema","docId":"packages/bigquery-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/bigquery-changelog","docId":"packages/bigquery-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/bigquery-readme","docId":"packages/bigquery-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"cht","href":"/fr/adaptors/cht","docId":"cht"},{"type":"link","label":"ckan","href":"/fr/adaptors/ckan","docId":"ckan"},{"type":"category","label":"commcare","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/commcare","docId":"commcare"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/commcare-docs","docId":"packages/commcare-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/commcare-configuration-schema","docId":"packages/commcare-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Registration forms(new case)","href":"/fr/adaptors/library/jobs/auto/Registration-forms-new-case-2023-06-22","docId":"library/jobs/auto/Registration-forms-new-case-2023-06-22"},{"type":"link","label":"\u2728 Q3 2022] Update HH Name in CommCare","href":"/fr/adaptors/library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27","docId":"library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27"},{"type":"link","label":"nawiri","href":"/fr/adaptors/library/jobs/auto/nawiri-2023-05-03","docId":"library/jobs/auto/nawiri-2023-05-03"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/commcare-changelog","docId":"packages/commcare-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/commcare-readme","docId":"packages/commcare-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"common","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/common-docs","docId":"packages/common-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/common-configuration-schema","docId":"packages/common-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/common-changelog","docId":"packages/common-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/common-readme","docId":"packages/common-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"dhis2","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/dhis2","docId":"dhis2"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/dhis2-docs","docId":"packages/dhis2-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/dhis2-configuration-schema","docId":"packages/dhis2-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Add data values","href":"/fr/adaptors/library/jobs/auto/DHIS2-DataValues-API","docId":"library/jobs/auto/DHIS2-DataValues-API"},{"type":"link","label":"\ud83d\udcdc Add events","href":"/fr/adaptors/library/jobs/auto/DHIS2-Events-API","docId":"library/jobs/auto/DHIS2-Events-API"},{"type":"link","label":"\u2728 Load to DHIS2","href":"/fr/adaptors/library/jobs/auto/Load-to-DHIS2-2023-07-17","docId":"library/jobs/auto/Load-to-DHIS2-2023-07-17"},{"type":"link","label":"Create TEI (dhis2)","href":"/fr/adaptors/library/jobs/auto/Create-TEI-dhis2-2021-03-22","docId":"library/jobs/auto/Create-TEI-dhis2-2021-03-22"},{"type":"link","label":"CHW case to DHIS2","href":"/fr/adaptors/library/jobs/auto/CHW-case-to-DHIS2-2023-04-27","docId":"library/jobs/auto/CHW-case-to-DHIS2-2023-04-27"},{"type":"link","label":"0 - Get TEI data","href":"/fr/adaptors/library/jobs/auto/0-Get-TEI-data-2021-06-02","docId":"library/jobs/auto/0-Get-TEI-data-2021-06-02"},{"type":"link","label":"DHIS2 Events","href":"/fr/adaptors/library/jobs/auto/DHIS2-Events-2016-01-27","docId":"library/jobs/auto/DHIS2-Events-2016-01-27"},{"type":"link","label":"Add DHIS2 Data Value Sets","href":"/fr/adaptors/library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28","docId":"library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/dhis2-changelog","docId":"packages/dhis2-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/dhis2-readme","docId":"packages/dhis2-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"dynamics","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/dynamics-docs","docId":"packages/dynamics-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/dynamics-configuration-schema","docId":"packages/dynamics-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/dynamics-changelog","docId":"packages/dynamics-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/dynamics-readme","docId":"packages/dynamics-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"facebook","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/facebook-docs","docId":"packages/facebook-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/facebook-configuration-schema","docId":"packages/facebook-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/facebook-changelog","docId":"packages/facebook-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/facebook-readme","docId":"packages/facebook-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"fhir","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/fhir-docs","docId":"packages/fhir-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/fhir-configuration-schema","docId":"packages/fhir-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/fhir-changelog","docId":"packages/fhir-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/fhir-readme","docId":"packages/fhir-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"godata","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/godata","docId":"godata"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/godata-docs","docId":"packages/godata-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/godata-configuration-schema","docId":"packages/godata-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/godata-changelog","docId":"packages/godata-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/godata-readme","docId":"packages/godata-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"googlehealthcare","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/googlehealthcare-docs","docId":"packages/googlehealthcare-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/googlehealthcare-configuration-schema","docId":"packages/googlehealthcare-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/googlehealthcare-changelog","docId":"packages/googlehealthcare-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/googlehealthcare-readme","docId":"packages/googlehealthcare-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"googlesheets","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/googlesheets","docId":"googlesheets"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/googlesheets-docs","docId":"packages/googlesheets-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/googlesheets-configuration-schema","docId":"packages/googlesheets-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Kobo to sheets","href":"/fr/adaptors/library/jobs/auto/Kobo-to-sheets-2023-10-13","docId":"library/jobs/auto/Kobo-to-sheets-2023-10-13"},{"type":"link","label":"Register Patient","href":"/fr/adaptors/library/jobs/auto/Register-Patient-2021-03-02","docId":"library/jobs/auto/Register-Patient-2021-03-02"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/googlesheets-changelog","docId":"packages/googlesheets-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/googlesheets-readme","docId":"packages/googlesheets-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"hive","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/hive-docs","docId":"packages/hive-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/hive-configuration-schema","docId":"packages/hive-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/hive-changelog","docId":"packages/hive-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/hive-readme","docId":"packages/hive-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"http","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/http-docs","docId":"packages/http-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/http-configuration-schema","docId":"packages/http-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Extract Kobo data from API to send to OpenFn Inbox","href":"/fr/adaptors/library/jobs/auto/getKoboData","docId":"library/jobs/auto/getKoboData"},{"type":"link","label":"\ud83d\udcdc Using async and array.map","href":"/fr/adaptors/library/jobs/auto/async-and-array-dot-map","docId":"library/jobs/auto/async-and-array-dot-map"},{"type":"link","label":"\ud83d\udcdc Chaining HTTP Requests","href":"/fr/adaptors/library/jobs/auto/complex-http-request-chains","docId":"library/jobs/auto/complex-http-request-chains"},{"type":"link","label":"\ud83d\udcdc Promises and nested requests","href":"/fr/adaptors/library/jobs/auto/promise-all-nested-requests","docId":"library/jobs/auto/promise-all-nested-requests"},{"type":"link","label":"\ud83d\udcdc Timeout to create a delay","href":"/fr/adaptors/library/jobs/auto/timeout","docId":"library/jobs/auto/timeout"},{"type":"link","label":"\ud83d\udcdc Chaining synchronous http requests","href":"/fr/adaptors/library/jobs/auto/synchronous-http-request","docId":"library/jobs/auto/synchronous-http-request"},{"type":"link","label":"\u2728 WF1-1. Bulk get HH cases","href":"/fr/adaptors/library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19","docId":"library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19"},{"type":"link","label":"\u2728 WF2-1. Bulk get Person cases","href":"/fr/adaptors/library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19","docId":"library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19"},{"type":"link","label":"\u2728 WF4-1. Bulk get Referral Cases","href":"/fr/adaptors/library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19","docId":"library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19"},{"type":"link","label":"\u2728 WF3-1. Bulk get Person Visit cases","href":"/fr/adaptors/library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19","docId":"library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19"},{"type":"link","label":"Fetch Claims","href":"/fr/adaptors/library/jobs/auto/Fetch-Claims-2023-07-17","docId":"library/jobs/auto/Fetch-Claims-2023-07-17"},{"type":"link","label":"no return","href":"/fr/adaptors/library/jobs/auto/no-return-2023-01-06","docId":"library/jobs/auto/no-return-2023-01-06"},{"type":"link","label":"Catch Error in HTTP Request","href":"/fr/adaptors/library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26","docId":"library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26"},{"type":"link","label":"Get CommCare Forms (Bulk Extract)","href":"/fr/adaptors/library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16","docId":"library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16"},{"type":"link","label":"aleksa cron","href":"/fr/adaptors/library/jobs/auto/aleksa-cron-2022-04-29","docId":"library/jobs/auto/aleksa-cron-2022-04-29"},{"type":"link","label":"1. Get CommCare Forms (Bulk Extract)","href":"/fr/adaptors/library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08","docId":"library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08"},{"type":"link","label":"Request Vitas Sync","href":"/fr/adaptors/library/jobs/auto/Request-Vitas-Sync-2021-05-11","docId":"library/jobs/auto/Request-Vitas-Sync-2021-05-11"},{"type":"link","label":"Failed Payment Notification","href":"/fr/adaptors/library/jobs/auto/Failed-Payment-Notification-2021-04-23","docId":"library/jobs/auto/Failed-Payment-Notification-2021-04-23"},{"type":"link","label":"02b/ Initiate Payments","href":"/fr/adaptors/library/jobs/auto/02b-Initiate-Payments-2019-11-19","docId":"library/jobs/auto/02b-Initiate-Payments-2019-11-19"},{"type":"link","label":"01c/ Create person_position record","href":"/fr/adaptors/library/jobs/auto/01c-Create-person_position-record-2019-12-13","docId":"library/jobs/auto/01c-Create-person_position-record-2019-12-13"},{"type":"link","label":"01a/ Create Registrants","href":"/fr/adaptors/library/jobs/auto/01a-Create-Registrants-2019-11-19","docId":"library/jobs/auto/01a-Create-Registrants-2019-11-19"},{"type":"link","label":"05b/Update ODK eval form","href":"/fr/adaptors/library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19","docId":"library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19"},{"type":"link","label":"05/ Submit employee evaluation","href":"/fr/adaptors/library/jobs/auto/05-Submit-employee-evaluation-2019-12-03","docId":"library/jobs/auto/05-Submit-employee-evaluation-2019-12-03"},{"type":"link","label":"04b/ Update ODK form","href":"/fr/adaptors/library/jobs/auto/04b-Update-ODK-form-2019-12-03","docId":"library/jobs/auto/04b-Update-ODK-form-2019-12-03"},{"type":"link","label":"commcare reports api","href":"/fr/adaptors/library/jobs/auto/commcare-reports-api-2016-08-29","docId":"library/jobs/auto/commcare-reports-api-2016-08-29"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/http-changelog","docId":"packages/http-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/http-readme","docId":"packages/http-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"khanacademy","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/khanacademy-docs","docId":"packages/khanacademy-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/khanacademy-configuration-schema","docId":"packages/khanacademy-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/khanacademy-changelog","docId":"packages/khanacademy-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/khanacademy-readme","docId":"packages/khanacademy-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"kobotoolbox","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/kobotoolbox","docId":"kobotoolbox"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/kobotoolbox-docs","docId":"packages/kobotoolbox-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/kobotoolbox-configuration-schema","docId":"packages/kobotoolbox-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"GET Data From KoboToolbox","href":"/fr/adaptors/library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22","docId":"library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/kobotoolbox-changelog","docId":"packages/kobotoolbox-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/kobotoolbox-readme","docId":"packages/kobotoolbox-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"magpi","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/magpi","docId":"magpi"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/magpi-docs","docId":"packages/magpi-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/magpi-configuration-schema","docId":"packages/magpi-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/magpi-changelog","docId":"packages/magpi-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/magpi-readme","docId":"packages/magpi-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mailchimp","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/mailchimp-docs","docId":"packages/mailchimp-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/mailchimp-configuration-schema","docId":"packages/mailchimp-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/mailchimp-changelog","docId":"packages/mailchimp-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/mailchimp-readme","docId":"packages/mailchimp-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mailgun","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/mailgun-docs","docId":"packages/mailgun-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/mailgun-configuration-schema","docId":"packages/mailgun-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc send email","href":"/fr/adaptors/library/jobs/auto/send-mail-in-mailgun","docId":"library/jobs/auto/send-mail-in-mailgun"},{"type":"link","label":"01 send mailgun email","href":"/fr/adaptors/library/jobs/auto/01-send-mailgun-email-2018-12-04","docId":"library/jobs/auto/01-send-mailgun-email-2018-12-04"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/mailgun-changelog","docId":"packages/mailgun-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/mailgun-readme","docId":"packages/mailgun-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"maximo","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/maximo-docs","docId":"packages/maximo-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/maximo-configuration-schema","docId":"packages/maximo-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/maximo-changelog","docId":"packages/maximo-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/maximo-readme","docId":"packages/maximo-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"medicmobile","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/medicmobile-docs","docId":"packages/medicmobile-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/medicmobile-configuration-schema","docId":"packages/medicmobile-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/medicmobile-changelog","docId":"packages/medicmobile-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/medicmobile-readme","docId":"packages/medicmobile-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mogli","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/mogli-docs","docId":"packages/mogli-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/mogli-configuration-schema","docId":"packages/mogli-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/mogli-changelog","docId":"packages/mogli-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/mogli-readme","docId":"packages/mogli-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mongodb","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/mongodb-docs","docId":"packages/mongodb-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/mongodb-configuration-schema","docId":"packages/mongodb-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/mongodb-changelog","docId":"packages/mongodb-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/mongodb-readme","docId":"packages/mongodb-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"moodle","href":"/fr/adaptors/moodle","docId":"moodle"},{"type":"category","label":"msgraph","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/msgraph-docs","docId":"packages/msgraph-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/msgraph-configuration-schema","docId":"packages/msgraph-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/msgraph-changelog","docId":"packages/msgraph-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/msgraph-readme","docId":"packages/msgraph-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mssql","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/mssql-docs","docId":"packages/mssql-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/mssql-configuration-schema","docId":"packages/mssql-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Extract Vitas Data","href":"/fr/adaptors/library/jobs/auto/Extract-Vitas-Data-2021-05-11","docId":"library/jobs/auto/Extract-Vitas-Data-2021-05-11"},{"type":"link","label":"CommCare to Azure Sql","href":"/fr/adaptors/library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27","docId":"library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/mssql-changelog","docId":"packages/mssql-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/mssql-readme","docId":"packages/mssql-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"mysql","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/mysql-docs","docId":"packages/mysql-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/mysql-configuration-schema","docId":"packages/mysql-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"01b/ Query new person record","href":"/fr/adaptors/library/jobs/auto/01b-Query-new-person-record-2019-12-13","docId":"library/jobs/auto/01b-Query-new-person-record-2019-12-13"},{"type":"link","label":"03/ Update Payment Status","href":"/fr/adaptors/library/jobs/auto/03-Update-Payment-Status-2019-11-19","docId":"library/jobs/auto/03-Update-Payment-Status-2019-11-19"},{"type":"link","label":"05a/Query for new employees","href":"/fr/adaptors/library/jobs/auto/05a-Query-for-new-employees-2019-12-19","docId":"library/jobs/auto/05a-Query-for-new-employees-2019-12-19"},{"type":"link","label":"04a/Query for job changes","href":"/fr/adaptors/library/jobs/auto/04a-Query-for-job-changes-2019-12-12","docId":"library/jobs/auto/04a-Query-for-job-changes-2019-12-12"},{"type":"link","label":"02a/ Query DB for people to pay","href":"/fr/adaptors/library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11","docId":"library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/mysql-changelog","docId":"packages/mysql-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/mysql-readme","docId":"packages/mysql-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"nexmo","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/nexmo-docs","docId":"packages/nexmo-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/nexmo-configuration-schema","docId":"packages/nexmo-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/nexmo-changelog","docId":"packages/nexmo-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/nexmo-readme","docId":"packages/nexmo-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"ocl","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/ocl-docs","docId":"packages/ocl-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/ocl-configuration-schema","docId":"packages/ocl-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/ocl-changelog","docId":"packages/ocl-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/ocl-readme","docId":"packages/ocl-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"odk","href":"/fr/adaptors/odk","docId":"odk"},{"type":"link","label":"ona","href":"/fr/adaptors/ona","docId":"ona"},{"type":"category","label":"openfn","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/openfn-docs","docId":"packages/openfn-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/openfn-configuration-schema","docId":"packages/openfn-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/openfn-changelog","docId":"packages/openfn-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/openfn-readme","docId":"packages/openfn-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"openhim","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/openhim-docs","docId":"packages/openhim-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/openhim-configuration-schema","docId":"packages/openhim-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Create encounter in OpenHIM","href":"/fr/adaptors/library/jobs/auto/CommCare-FHIR","docId":"library/jobs/auto/CommCare-FHIR"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/openhim-changelog","docId":"packages/openhim-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/openhim-readme","docId":"packages/openhim-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"openmrs","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/openmrs-docs","docId":"packages/openmrs-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/openmrs-configuration-schema","docId":"packages/openmrs-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Create Person in OpenMRS","href":"/fr/adaptors/library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12","docId":"library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12"},{"type":"link","label":"Create Patient in OpenMRS","href":"/fr/adaptors/library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24","docId":"library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/openmrs-changelog","docId":"packages/openmrs-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/openmrs-readme","docId":"packages/openmrs-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"postgresql","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/postgresql","docId":"postgresql"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/postgresql-docs","docId":"packages/postgresql-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/postgresql-configuration-schema","docId":"packages/postgresql-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Using findValue with an array of data","href":"/fr/adaptors/library/jobs/auto/async-findValue","docId":"library/jobs/auto/async-findValue"},{"type":"link","label":"1. Get data from SLUHIS","href":"/fr/adaptors/library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08","docId":"library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08"},{"type":"link","label":"Load to DB","href":"/fr/adaptors/library/jobs/auto/Load-to-DB-2022-05-16","docId":"library/jobs/auto/Load-to-DB-2022-05-16"},{"type":"link","label":"Load / Upsert Data into PostgreSQL","href":"/fr/adaptors/library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22","docId":"library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22"},{"type":"link","label":"Upsert to mBrana","href":"/fr/adaptors/library/jobs/auto/Upsert-to-mBrana-2021-05-11","docId":"library/jobs/auto/Upsert-to-mBrana-2021-05-11"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/postgresql-changelog","docId":"packages/postgresql-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/postgresql-readme","docId":"packages/postgresql-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"powerbi","href":"/fr/adaptors/powerbi","docId":"powerbi"},{"type":"category","label":"primero","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/primero","docId":"primero"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/primero-docs","docId":"packages/primero-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/primero-configuration-schema","docId":"packages/primero-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"Get cases from Primero","href":"/fr/adaptors/library/jobs/auto/Get-cases-from-Primero-2021-09-23","docId":"library/jobs/auto/Get-cases-from-Primero-2021-09-23"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/primero-changelog","docId":"packages/primero-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/primero-readme","docId":"packages/primero-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"progres","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/progres-docs","docId":"packages/progres-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/progres-configuration-schema","docId":"packages/progres-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/progres-changelog","docId":"packages/progres-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/progres-readme","docId":"packages/progres-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"rapidpro","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/rapidpro-docs","docId":"packages/rapidpro-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/rapidpro-configuration-schema","docId":"packages/rapidpro-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/rapidpro-changelog","docId":"packages/rapidpro-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/rapidpro-readme","docId":"packages/rapidpro-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"resourcemap","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/resourcemap-docs","docId":"packages/resourcemap-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/resourcemap-configuration-schema","docId":"packages/resourcemap-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/resourcemap-changelog","docId":"packages/resourcemap-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/resourcemap-readme","docId":"packages/resourcemap-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"salesforce","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/salesforce","docId":"salesforce"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/salesforce-docs","docId":"packages/salesforce-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/salesforce-configuration-schema","docId":"packages/salesforce-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Pre-processing data","href":"/fr/adaptors/library/jobs/auto/alter-state-before-operations","docId":"library/jobs/auto/alter-state-before-operations"},{"type":"link","label":"\ud83d\udcdc Using merge and each","href":"/fr/adaptors/library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce","docId":"library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce"},{"type":"link","label":"\ud83d\udcdc Using promises","href":"/fr/adaptors/library/jobs/auto/complex-state-control","docId":"library/jobs/auto/complex-state-control"},{"type":"link","label":"\ud83d\udcdc Concat fields with nulls","href":"/fr/adaptors/library/jobs/auto/concatenate-many-fields-with-nulls","docId":"library/jobs/auto/concatenate-many-fields-with-nulls"},{"type":"link","label":"\ud83d\udcdc Create/update records if...","href":"/fr/adaptors/library/jobs/auto/create-if-proposal","docId":"library/jobs/auto/create-if-proposal"},{"type":"link","label":"\ud83d\udcdc Create SMS linked to contact","href":"/fr/adaptors/library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF","docId":"library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF"},{"type":"link","label":"\ud83d\udcdc Handling multiple ODK repeat groups","href":"/fr/adaptors/library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks","docId":"library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks"},{"type":"link","label":"\ud83d\udcdc Merge data into child array then upsert","href":"/fr/adaptors/library/jobs/auto/upsert-many-items-in-array-with-value-outside-array","docId":"library/jobs/auto/upsert-many-items-in-array-with-value-outside-array"},{"type":"link","label":"WF3-2a/ Repeat Failed Person Visits","href":"/fr/adaptors/library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31","docId":"library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31"},{"type":"link","label":"\u2728 WF3-2. Bulk upsert Person Visits","href":"/fr/adaptors/library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19","docId":"library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19"},{"type":"link","label":"\u2728 Upsert Pre Challenges","href":"/fr/adaptors/library/jobs/auto/Upsert-Pre-Challenges-2021-04-30","docId":"library/jobs/auto/Upsert-Pre-Challenges-2021-04-30"},{"type":"link","label":"\u2728 Attendance Non Skillz","href":"/fr/adaptors/library/jobs/auto/Attendance-Non-Skillz-2021-06-14","docId":"library/jobs/auto/Attendance-Non-Skillz-2021-06-14"},{"type":"link","label":"\u2728 Upsert Post Challenges","href":"/fr/adaptors/library/jobs/auto/Upsert-Post-Challenges-2021-04-30","docId":"library/jobs/auto/Upsert-Post-Challenges-2021-04-30"},{"type":"link","label":"\u2728 Upsert Register Participant","href":"/fr/adaptors/library/jobs/auto/Upsert-Register-Participant-2021-04-28","docId":"library/jobs/auto/Upsert-Register-Participant-2021-04-28"},{"type":"link","label":"Upsert Register Participant (Skillz)","href":"/fr/adaptors/library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30","docId":"library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30"},{"type":"link","label":"\u2728 Coach Session Register","href":"/fr/adaptors/library/jobs/auto/Coach-Session-Register-2021-05-03","docId":"library/jobs/auto/Coach-Session-Register-2021-05-03"},{"type":"link","label":"\u2728 WF2-2. Bulk upsert Persons","href":"/fr/adaptors/library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19","docId":"library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19"},{"type":"link","label":"\u2728 Create Intervention","href":"/fr/adaptors/library/jobs/auto/Create-Intervention-2021-04-08","docId":"library/jobs/auto/Create-Intervention-2021-04-08"},{"type":"link","label":"\u2728 WF1-2. Bulk upsert HHs and HH Visits","href":"/fr/adaptors/library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19","docId":"library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19"},{"type":"link","label":"\u2728 WF4-2. Bulk upsert Services","href":"/fr/adaptors/library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19","docId":"library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19"},{"type":"link","label":"Q3 2022] Upsert Person Visit","href":"/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28","docId":"library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28"},{"type":"link","label":"Q4 2022] Upsert Supervision - Accompaniment","href":"/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22","docId":"library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22"},{"type":"link","label":"Q4 2022] Upsert Supervision - Feedback","href":"/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19","docId":"library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19"},{"type":"link","label":"Q4 2022] Upsert Supervision - Household Spot Check","href":"/fr/adaptors/library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24","docId":"library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24"},{"type":"link","label":"\u2728 Q3 2022] Create Distribution & Referral in SF","href":"/fr/adaptors/library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19","docId":"library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19"},{"type":"link","label":"Create contact","href":"/fr/adaptors/library/jobs/auto/Create-contact-2021-03-01","docId":"library/jobs/auto/Create-contact-2021-03-01"},{"type":"link","label":"Q3 2022] Upsert Person","href":"/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21","docId":"library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21"},{"type":"link","label":"Q3 2022] Upsert Household & Household Visit in SF","href":"/fr/adaptors/library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28","docId":"library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28"},{"type":"link","label":"HIV Testing Event Statistics","href":"/fr/adaptors/library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03","docId":"library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03"},{"type":"link","label":"Malaria Testing Event Statistics","href":"/fr/adaptors/library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03","docId":"library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03"},{"type":"link","label":"HIV Testing Event Snapshot","href":"/fr/adaptors/library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03","docId":"library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03"},{"type":"link","label":"Malaria Testing Event Snapshot","href":"/fr/adaptors/library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03","docId":"library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03"},{"type":"link","label":"PHQ9","href":"/fr/adaptors/library/jobs/auto/PHQ9-2021-05-03","docId":"library/jobs/auto/PHQ9-2021-05-03"},{"type":"link","label":"Risk and Vulnerability Assessment","href":"/fr/adaptors/library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27","docId":"library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27"},{"type":"link","label":"Upsert Attendance Skillz Plus Club","href":"/fr/adaptors/library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24","docId":"library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24"},{"type":"link","label":"Upsert ART Adherence Self-Reporting Tool","href":"/fr/adaptors/library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30","docId":"library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30"},{"type":"link","label":"Upsert Aggregate Service Referrals","href":"/fr/adaptors/library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30","docId":"library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30"},{"type":"link","label":"Upsert Coach Support Visit (CSV)","href":"/fr/adaptors/library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28","docId":"library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28"},{"type":"link","label":"Upsert Confirm Services Received","href":"/fr/adaptors/library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14","docId":"library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14"},{"type":"link","label":"Upsert Home Visit Log Form","href":"/fr/adaptors/library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03","docId":"library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03"},{"type":"link","label":"\u2728 Upsert Intervention Notes","href":"/fr/adaptors/library/jobs/auto/Upsert-Intervention-Notes-2021-04-28","docId":"library/jobs/auto/Upsert-Intervention-Notes-2021-04-28"},{"type":"link","label":"\u2728 Upsert Register Event","href":"/fr/adaptors/library/jobs/auto/Upsert-Register-Event-2021-04-30","docId":"library/jobs/auto/Upsert-Register-Event-2021-04-30"},{"type":"link","label":"Upsert Register Skills plus Club","href":"/fr/adaptors/library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30","docId":"library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30"},{"type":"link","label":"\u2728 Upsert Risk & Vulnerability Assessment | Service Referral","href":"/fr/adaptors/library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25","docId":"library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25"},{"type":"link","label":"Upsert Service Referral","href":"/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-2021-04-30","docId":"library/jobs/auto/Upsert-Service-Referral-2021-04-30"},{"type":"link","label":"Upsert Service Referral 2","href":"/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-2-2021-06-14","docId":"library/jobs/auto/Upsert-Service-Referral-2-2021-06-14"},{"type":"link","label":"Upsert Service Referral Followup","href":"/fr/adaptors/library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30","docId":"library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30"},{"type":"link","label":"\u2728 Upsert Team/Group Name","href":"/fr/adaptors/library/jobs/auto/Upsert-Team-Group-Name-2021-04-28","docId":"library/jobs/auto/Upsert-Team-Group-Name-2021-04-28"},{"type":"link","label":"Register Participant - V2 Skillz","href":"/fr/adaptors/library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02","docId":"library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02"},{"type":"link","label":"Upsert User in Salesforce","href":"/fr/adaptors/library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16","docId":"library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16"},{"type":"link","label":"Create Person in SF","href":"/fr/adaptors/library/jobs/auto/Create-Person-in-SF-2019-02-25","docId":"library/jobs/auto/Create-Person-in-SF-2019-02-25"},{"type":"link","label":"1. Create Payment in SF","href":"/fr/adaptors/library/jobs/auto/1-Create-Payment-in-SF-2018-09-03","docId":"library/jobs/auto/1-Create-Payment-in-SF-2018-09-03"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/salesforce-changelog","docId":"packages/salesforce-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/salesforce-readme","docId":"packages/salesforce-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"sftp","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/sftp-docs","docId":"packages/sftp-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/sftp-configuration-schema","docId":"packages/sftp-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/sftp-changelog","docId":"packages/sftp-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/sftp-readme","docId":"packages/sftp-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"smpp","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/smpp-docs","docId":"packages/smpp-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/smpp-configuration-schema","docId":"packages/smpp-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/smpp-changelog","docId":"packages/smpp-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/smpp-readme","docId":"packages/smpp-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"surveycto","items":[{"type":"link","label":"Overview","href":"/fr/adaptors/surveycto","docId":"surveycto"},{"type":"link","label":"Functions","href":"/fr/adaptors/packages/surveycto-docs","docId":"packages/surveycto-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/surveycto-configuration-schema","docId":"packages/surveycto-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/surveycto-changelog","docId":"packages/surveycto-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/surveycto-readme","docId":"packages/surveycto-readme"}],"collapsed":true,"collapsible":true},{"type":"link","label":"tableau","href":"/fr/adaptors/tableau","docId":"tableau"},{"type":"category","label":"telerivet","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/telerivet-docs","docId":"packages/telerivet-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/telerivet-configuration-schema","docId":"packages/telerivet-configuration-schema"},{"type":"category","label":"Examples","items":[{"type":"link","label":"\ud83d\udcdc Send sms from Salesforce workflow action","href":"/fr/adaptors/library/jobs/auto/send-sms-from-salesforce-workflow","docId":"library/jobs/auto/send-sms-from-salesforce-workflow"},{"type":"link","label":"2. SMS Balance Update to Customer","href":"/fr/adaptors/library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14","docId":"library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/telerivet-changelog","docId":"packages/telerivet-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/telerivet-readme","docId":"packages/telerivet-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"template","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/template-docs","docId":"packages/template-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/template-configuration-schema","docId":"packages/template-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/template-changelog","docId":"packages/template-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/template-readme","docId":"packages/template-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"twilio","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/twilio-docs","docId":"packages/twilio-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/twilio-configuration-schema","docId":"packages/twilio-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/twilio-changelog","docId":"packages/twilio-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/twilio-readme","docId":"packages/twilio-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"vtiger","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/vtiger-docs","docId":"packages/vtiger-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/vtiger-configuration-schema","docId":"packages/vtiger-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/vtiger-changelog","docId":"packages/vtiger-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/vtiger-readme","docId":"packages/vtiger-readme"}],"collapsed":true,"collapsible":true},{"type":"category","label":"zoho","items":[{"type":"link","label":"Functions","href":"/fr/adaptors/packages/zoho-docs","docId":"packages/zoho-docs"},{"type":"link","label":"Configuration","href":"/fr/adaptors/packages/zoho-configuration-schema","docId":"packages/zoho-configuration-schema"},{"type":"link","label":"Changelog","href":"/fr/adaptors/packages/zoho-changelog","docId":"packages/zoho-changelog"},{"type":"link","label":"README.md","href":"/fr/adaptors/packages/zoho-readme","docId":"packages/zoho-readme"}],"collapsed":true,"collapsible":true}]},"docs":{"adaptors-intro":{"id":"adaptors-intro","title":"Adaptors","description":"Connect Anything.","sidebar":"adaptors"},"cht":{"id":"cht","title":"Community Health Toolkit","description":"1. To push data from CHT applications to OpenFn, leverage the","sidebar":"adaptors"},"ckan":{"id":"ckan","title":"CKAN","description":"App Overview","sidebar":"adaptors"},"commcare":{"id":"commcare","title":"CommCare","description":"App Overview","sidebar":"adaptors"},"dhis2":{"id":"dhis2","title":"DHIS2","description":"App Overview","sidebar":"adaptors"},"godata":{"id":"godata","title":"Go.Data","description":"Overview","sidebar":"adaptors"},"googlesheets":{"id":"googlesheets","title":"Google Forms/Google Sheets","description":"Google Forms/Google Sheets","sidebar":"adaptors"},"kobotoolbox":{"id":"kobotoolbox","title":"Kobo Toolbox","description":"App Overview","sidebar":"adaptors"},"library-intro":{"id":"library-intro","title":"The Community Job Library","description":"A growing knowledge base","sidebar":"adaptors"},"library/jobs/auto/0-Get-TEI-data-2021-06-02":{"id":"library/jobs/auto/0-Get-TEI-data-2021-06-02","title":"0 - Get TEI data","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01-send-mailgun-email-2018-12-04":{"id":"library/jobs/auto/01-send-mailgun-email-2018-12-04","title":"01 send mailgun email","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01a-Create-Registrants-2019-11-19":{"id":"library/jobs/auto/01a-Create-Registrants-2019-11-19","title":"01a/ Create Registrants","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01b-Query-new-person-record-2019-12-13":{"id":"library/jobs/auto/01b-Query-new-person-record-2019-12-13","title":"01b/ Query new person record","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/01c-Create-person_position-record-2019-12-13":{"id":"library/jobs/auto/01c-Create-person_position-record-2019-12-13","title":"01c/ Create person_position record","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11":{"id":"library/jobs/auto/02a-Query-DB-for-people-to-pay-2019-12-11","title":"02a/ Query DB for people to pay","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/02b-Initiate-Payments-2019-11-19":{"id":"library/jobs/auto/02b-Initiate-Payments-2019-11-19","title":"02b/ Initiate Payments","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/03-Update-Payment-Status-2019-11-19":{"id":"library/jobs/auto/03-Update-Payment-Status-2019-11-19","title":"03/ Update Payment Status","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/04a-Query-for-job-changes-2019-12-12":{"id":"library/jobs/auto/04a-Query-for-job-changes-2019-12-12","title":"04a/Query for job changes","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/04b-Update-ODK-form-2019-12-03":{"id":"library/jobs/auto/04b-Update-ODK-form-2019-12-03","title":"04b/ Update ODK form","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/05-Submit-employee-evaluation-2019-12-03":{"id":"library/jobs/auto/05-Submit-employee-evaluation-2019-12-03","title":"05/ Submit employee evaluation","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/05a-Query-for-new-employees-2019-12-19":{"id":"library/jobs/auto/05a-Query-for-new-employees-2019-12-19","title":"05a/Query for new employees","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19":{"id":"library/jobs/auto/05b-Update-ODK-eval-form-2019-12-19","title":"05b/Update ODK eval form","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/1-Create-Payment-in-SF-2018-09-03":{"id":"library/jobs/auto/1-Create-Payment-in-SF-2018-09-03","title":"1. Create Payment in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08":{"id":"library/jobs/auto/1-Get-CommCare-Forms-Bulk-Extract-2021-04-08","title":"1. Get CommCare Forms (Bulk Extract)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08":{"id":"library/jobs/auto/1-Get-data-from-SLUHIS-2023-03-08","title":"1. Get data from SLUHIS","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14":{"id":"library/jobs/auto/2-SMS-Balance-Update-to-Customer-2018-12-14","title":"2. SMS Balance Update to Customer","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28":{"id":"library/jobs/auto/Add-DHIS2-Data-Value-Sets-2016-03-28","title":"Add DHIS2 Data Value Sets","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/aleksa-cron-2022-04-29":{"id":"library/jobs/auto/aleksa-cron-2022-04-29","title":"aleksa cron","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/alter-state-before-operations":{"id":"library/jobs/auto/alter-state-before-operations","title":"Pre-processing data","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/async-and-array-dot-map":{"id":"library/jobs/auto/async-and-array-dot-map","title":"Using async and array.map","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/async-findValue":{"id":"library/jobs/auto/async-findValue","title":"Using findValue with an array of data","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Attendance-Non-Skillz-2021-06-14":{"id":"library/jobs/auto/Attendance-Non-Skillz-2021-06-14","title":"Attendance Non Skillz","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce":{"id":"library/jobs/auto/bring-formId-into-data-array-then-create-parent-and-children-in-salesforce","title":"Using merge and each","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26":{"id":"library/jobs/auto/Catch-Error-in-HTTP-Request-2016-08-26","title":"Catch Error in HTTP Request","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/CHW-case-to-DHIS2-2023-04-27":{"id":"library/jobs/auto/CHW-case-to-DHIS2-2023-04-27","title":"CHW case to DHIS2","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Coach-Session-Register-2021-05-03":{"id":"library/jobs/auto/Coach-Session-Register-2021-05-03","title":"Coach Session Register","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/CommCare-FHIR":{"id":"library/jobs/auto/CommCare-FHIR","title":"Create encounter in OpenHIM","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/commcare-reports-api-2016-08-29":{"id":"library/jobs/auto/commcare-reports-api-2016-08-29","title":"commcare reports api","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27":{"id":"library/jobs/auto/CommCare-to-Azure-Sql-2020-01-27","title":"CommCare to Azure Sql","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/complex-http-request-chains":{"id":"library/jobs/auto/complex-http-request-chains","title":"Chaining HTTP Requests","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/complex-state-control":{"id":"library/jobs/auto/complex-state-control","title":"Using promises","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/concatenate-many-fields-with-nulls":{"id":"library/jobs/auto/concatenate-many-fields-with-nulls","title":"Concat fields with nulls","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Create-contact-2021-03-01":{"id":"library/jobs/auto/Create-contact-2021-03-01","title":"Create contact","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/create-if-proposal":{"id":"library/jobs/auto/create-if-proposal","title":"Create/update records if...","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Create-Intervention-2021-04-08":{"id":"library/jobs/auto/Create-Intervention-2021-04-08","title":"Create Intervention","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24":{"id":"library/jobs/auto/Create-Patient-in-OpenMRS-2019-10-24","title":"Create Patient in OpenMRS","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12":{"id":"library/jobs/auto/Create-Person-in-OpenMRS-2016-02-12","title":"Create Person in OpenMRS","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-Person-in-SF-2019-02-25":{"id":"library/jobs/auto/Create-Person-in-SF-2019-02-25","title":"Create Person in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF":{"id":"library/jobs/auto/Create-SMS-Linked-to-Contact-in-SF","title":"Create SMS linked to contact","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Create-TEI-dhis2-2021-03-22":{"id":"library/jobs/auto/Create-TEI-dhis2-2021-03-22","title":"Create TEI (dhis2)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/DHIS2-DataValues-API":{"id":"library/jobs/auto/DHIS2-DataValues-API","title":"Add data values","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/DHIS2-Events-2016-01-27":{"id":"library/jobs/auto/DHIS2-Events-2016-01-27","title":"DHIS2 Events","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/DHIS2-Events-API":{"id":"library/jobs/auto/DHIS2-Events-API","title":"Add events","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Extract-Vitas-Data-2021-05-11":{"id":"library/jobs/auto/Extract-Vitas-Data-2021-05-11","title":"Extract Vitas Data","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Failed-Payment-Notification-2021-04-23":{"id":"library/jobs/auto/Failed-Payment-Notification-2021-04-23","title":"Failed Payment Notification","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Fetch-Claims-2023-07-17":{"id":"library/jobs/auto/Fetch-Claims-2023-07-17","title":"Fetch Claims","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Get-cases-from-Primero-2021-09-23":{"id":"library/jobs/auto/Get-cases-from-Primero-2021-09-23","title":"Get cases from Primero","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16":{"id":"library/jobs/auto/Get-CommCare-Forms-Bulk-Extract-2022-05-16","title":"Get CommCare Forms (Bulk Extract)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22":{"id":"library/jobs/auto/GET-Data-From-KoboToolbox-2022-03-22","title":"GET Data From KoboToolbox","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/getKoboData":{"id":"library/jobs/auto/getKoboData","title":"Extract Kobo data from API to send to OpenFn Inbox","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03":{"id":"library/jobs/auto/HIV-Testing-Event-Snapshot-2021-05-03","title":"HIV Testing Event Snapshot","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03":{"id":"library/jobs/auto/HIV-Testing-Event-Statistics-2021-05-03","title":"HIV Testing Event Statistics","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Kobo-to-sheets-2023-10-13":{"id":"library/jobs/auto/Kobo-to-sheets-2023-10-13","title":"Kobo to sheets","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Load-to-DB-2022-05-16":{"id":"library/jobs/auto/Load-to-DB-2022-05-16","title":"Load to DB","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Load-to-DHIS2-2023-07-17":{"id":"library/jobs/auto/Load-to-DHIS2-2023-07-17","title":"Load to DHIS2","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22":{"id":"library/jobs/auto/Load-Upsert-Data-into-PostgreSQL-2022-03-22","title":"Load / Upsert Data into PostgreSQL","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03":{"id":"library/jobs/auto/Malaria-Testing-Event-Snapshot-2021-05-03","title":"Malaria Testing Event Snapshot","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03":{"id":"library/jobs/auto/Malaria-Testing-Event-Statistics-2021-05-03","title":"Malaria Testing Event Statistics","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/nawiri-2023-05-03":{"id":"library/jobs/auto/nawiri-2023-05-03","title":"nawiri","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/no-return-2023-01-06":{"id":"library/jobs/auto/no-return-2023-01-06","title":"no return","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks":{"id":"library/jobs/auto/ODK-Create-Many-Records-Moving-In-And-Out-Of-Repeat-Blocks","title":"Handling multiple ODK repeat groups","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Pay-CHW-2021-04-23":{"id":"library/jobs/auto/Pay-CHW-2021-04-23","title":"Pay CHW","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/PHQ9-2021-05-03":{"id":"library/jobs/auto/PHQ9-2021-05-03","title":"PHQ9","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/promise-all-nested-requests":{"id":"library/jobs/auto/promise-all-nested-requests","title":"Promises and nested requests","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19":{"id":"library/jobs/auto/Q3-2022-Create-Distribution-Referral-in-SF-2020-06-19","title":"Q3 2022] Create Distribution & Referral in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27":{"id":"library/jobs/auto/Q3-2022-Update-HH-Name-in-CommCare-2021-09-27","title":"Q3 2022] Update HH Name in CommCare","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28":{"id":"library/jobs/auto/Q3-2022-Upsert-Household-Household-Visit-in-SF-2022-06-28","title":"Q3 2022] Upsert Household & Household Visit in SF","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21":{"id":"library/jobs/auto/Q3-2022-Upsert-Person-2022-04-21","title":"Q3 2022] Upsert Person","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28":{"id":"library/jobs/auto/Q3-2022-Upsert-Person-Visit-2022-06-28","title":"Q3 2022] Upsert Person Visit","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22":{"id":"library/jobs/auto/Q4-2022-Upsert-Supervision-Accompaniment-2022-08-22","title":"Q4 2022] Upsert Supervision - Accompaniment","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19":{"id":"library/jobs/auto/Q4-2022-Upsert-Supervision-Feedback-2022-08-19","title":"Q4 2022] Upsert Supervision - Feedback","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24":{"id":"library/jobs/auto/Q4-2022-Upsert-Supervision-Household-Spot-Check-2022-08-24","title":"Q4 2022] Upsert Supervision - Household Spot Check","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02":{"id":"library/jobs/auto/Register-Participant-V2-Skillz-2021-06-02","title":"Register Participant - V2 Skillz","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Register-Patient-2021-03-02":{"id":"library/jobs/auto/Register-Patient-2021-03-02","title":"Register Patient","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Registration-forms-new-case-2023-06-22":{"id":"library/jobs/auto/Registration-forms-new-case-2023-06-22","title":"Registration forms(new case)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Request-Vitas-Sync-2021-05-11":{"id":"library/jobs/auto/Request-Vitas-Sync-2021-05-11","title":"Request Vitas Sync","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27":{"id":"library/jobs/auto/Risk-and-Vulnerability-Assessment-2021-05-27","title":"Risk and Vulnerability Assessment","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/send-mail-in-mailgun":{"id":"library/jobs/auto/send-mail-in-mailgun","title":"send email","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/send-sms-from-salesforce-workflow":{"id":"library/jobs/auto/send-sms-from-salesforce-workflow","title":"Send sms from Salesforce workflow action","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/synchronous-http-request":{"id":"library/jobs/auto/synchronous-http-request","title":"Chaining synchronous http requests","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/timeout":{"id":"library/jobs/auto/timeout","title":"Timeout to create a delay","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30":{"id":"library/jobs/auto/Upsert-Aggregate-Service-Referrals-2021-04-30","title":"Upsert Aggregate Service Referrals","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30":{"id":"library/jobs/auto/Upsert-ART-Adherence-Self-Reporting-Tool-2021-04-30","title":"Upsert ART Adherence Self-Reporting Tool","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24":{"id":"library/jobs/auto/Upsert-Attendance-Skillz-Plus-Club-2021-05-24","title":"Upsert Attendance Skillz Plus Club","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28":{"id":"library/jobs/auto/Upsert-Coach-Support-Visit-CSV-2021-04-28","title":"Upsert Coach Support Visit (CSV)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14":{"id":"library/jobs/auto/Upsert-Confirm-Services-Received-2021-06-14","title":"Upsert Confirm Services Received","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03":{"id":"library/jobs/auto/Upsert-Home-Visit-Log-Form-2021-05-03","title":"Upsert Home Visit Log Form","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Intervention-Notes-2021-04-28":{"id":"library/jobs/auto/Upsert-Intervention-Notes-2021-04-28","title":"Upsert Intervention Notes","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/upsert-many-items-in-array-with-value-outside-array":{"id":"library/jobs/auto/upsert-many-items-in-array-with-value-outside-array","title":"Merge data into child array then upsert","description":"\ud83d\udcdc This job is an official example from OpenFn.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Post-Challenges-2021-04-30":{"id":"library/jobs/auto/Upsert-Post-Challenges-2021-04-30","title":"Upsert Post Challenges","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Pre-Challenges-2021-04-30":{"id":"library/jobs/auto/Upsert-Pre-Challenges-2021-04-30","title":"Upsert Pre Challenges","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Event-2021-04-30":{"id":"library/jobs/auto/Upsert-Register-Event-2021-04-30","title":"Upsert Register Event","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Participant-2021-04-28":{"id":"library/jobs/auto/Upsert-Register-Participant-2021-04-28","title":"Upsert Register Participant","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30":{"id":"library/jobs/auto/Upsert-Register-Participant-Skillz-2021-08-30","title":"Upsert Register Participant (Skillz)","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30":{"id":"library/jobs/auto/Upsert-Register-Skills-plus-Club-2021-04-30","title":"Upsert Register Skills plus Club","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25":{"id":"library/jobs/auto/Upsert-Risk-Vulnerability-Assessment-Service-Referral-2021-05-25","title":"Upsert Risk & Vulnerability Assessment | Service Referral","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Service-Referral-2-2021-06-14":{"id":"library/jobs/auto/Upsert-Service-Referral-2-2021-06-14","title":"Upsert Service Referral 2","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Service-Referral-2021-04-30":{"id":"library/jobs/auto/Upsert-Service-Referral-2021-04-30","title":"Upsert Service Referral","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30":{"id":"library/jobs/auto/Upsert-Service-Referral-Followup-2021-04-30","title":"Upsert Service Referral Followup","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-Team-Group-Name-2021-04-28":{"id":"library/jobs/auto/Upsert-Team-Group-Name-2021-04-28","title":"Upsert Team/Group Name","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-to-mBrana-2021-05-11":{"id":"library/jobs/auto/Upsert-to-mBrana-2021-05-11","title":"Upsert to mBrana","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16":{"id":"library/jobs/auto/Upsert-User-in-Salesforce-2021-04-16","title":"Upsert User in Salesforce","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19":{"id":"library/jobs/auto/WF1-1-Bulk-get-HH-cases-2023-05-19","title":"WF1-1. Bulk get HH cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19":{"id":"library/jobs/auto/WF1-2-Bulk-upsert-HHs-and-HH-Visits-2023-05-19","title":"WF1-2. Bulk upsert HHs and HH Visits","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19":{"id":"library/jobs/auto/WF2-1-Bulk-get-Person-cases-2023-05-19","title":"WF2-1. Bulk get Person cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19":{"id":"library/jobs/auto/WF2-2-Bulk-upsert-Persons-2023-05-19","title":"WF2-2. Bulk upsert Persons","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19":{"id":"library/jobs/auto/WF3-1-Bulk-get-Person-Visit-cases-2023-05-19","title":"WF3-1. Bulk get Person Visit cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19":{"id":"library/jobs/auto/WF3-2-Bulk-upsert-Person-Visits-2023-05-19","title":"WF3-2. Bulk upsert Person Visits","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31":{"id":"library/jobs/auto/WF3-2a-Repeat-Failed-Person-Visits-2023-05-31","title":"WF3-2a/ Repeat Failed Person Visits","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19":{"id":"library/jobs/auto/WF4-1-Bulk-get-Referral-Cases-2023-05-19","title":"WF4-1. Bulk get Referral Cases","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19":{"id":"library/jobs/auto/WF4-2-Bulk-upsert-Services-2023-05-19","title":"WF4-2. Bulk upsert Services","description":"This job was provided by an OpenFn.org user via the job library API.","sidebar":"adaptors"},"library/triggers/xmlns":{"id":"library/triggers/xmlns","title":"Match a message with a fragment inside another object called `form`","description":""},"magpi":{"id":"magpi","title":"Magpi","description":"Magpi is not able to push data to external URLs. In order to fetch data from","sidebar":"adaptors"},"moodle":{"id":"moodle","title":"Moodle","description":"Overview","sidebar":"adaptors"},"odk":{"id":"odk","title":"Open Data Kit (ODK)","description":"Open Data Kit (ODK) Collect","sidebar":"adaptors"},"ona":{"id":"ona","title":"Ona.io","description":"Webhooks to push form data to OpenFn","sidebar":"adaptors"},"packages/asana-changelog":{"id":"packages/asana-changelog","title":"asana changelog","description":"3.0.1","sidebar":"adaptors"},"packages/asana-configuration-schema":{"id":"packages/asana-configuration-schema","title":"Config for asana","description":"Jobs that use the asana adaptor may require authentication. A","sidebar":"adaptors"},"packages/asana-docs":{"id":"packages/asana-docs","title":"asana@3.0.1","description":"Functions","sidebar":"adaptors"},"packages/asana-readme":{"id":"packages/asana-readme","title":"asana developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/asana","sidebar":"adaptors"},"packages/beyonic-changelog":{"id":"packages/beyonic-changelog","title":"beyonic changelog","description":"0.2.1","sidebar":"adaptors"},"packages/beyonic-configuration-schema":{"id":"packages/beyonic-configuration-schema","title":"Config for beyonic","description":"Jobs that use the beyonic adaptor may require authentication. A","sidebar":"adaptors"},"packages/beyonic-docs":{"id":"packages/beyonic-docs","title":"beyonic@0.2.1","description":"Functions","sidebar":"adaptors"},"packages/beyonic-readme":{"id":"packages/beyonic-readme","title":"beyonic developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/beyonic","sidebar":"adaptors"},"packages/bigquery-changelog":{"id":"packages/bigquery-changelog","title":"bigquery changelog","description":"2.0.4","sidebar":"adaptors"},"packages/bigquery-configuration-schema":{"id":"packages/bigquery-configuration-schema","title":"Config for bigquery","description":"Jobs that use the bigquery adaptor may require authentication. A","sidebar":"adaptors"},"packages/bigquery-docs":{"id":"packages/bigquery-docs","title":"bigquery@2.0.4","description":"load","sidebar":"adaptors"},"packages/bigquery-readme":{"id":"packages/bigquery-readme","title":"bigquery developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/bigquery","sidebar":"adaptors"},"packages/commcare-changelog":{"id":"packages/commcare-changelog","title":"commcare changelog","description":"1.6.10","sidebar":"adaptors"},"packages/commcare-configuration-schema":{"id":"packages/commcare-configuration-schema","title":"Config for commcare","description":"Jobs that use the commcare adaptor may require authentication. A","sidebar":"adaptors"},"packages/commcare-docs":{"id":"packages/commcare-docs","title":"commcare@1.6.10","description":"Functions","sidebar":"adaptors"},"packages/commcare-readme":{"id":"packages/commcare-readme","title":"commcare developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/commcare","sidebar":"adaptors"},"packages/common-changelog":{"id":"packages/common-changelog","title":"common changelog","description":"v0.4.0","sidebar":"adaptors"},"packages/common-configuration-schema":{"id":"packages/common-configuration-schema","title":"Config for common","description":"No configuration schema has been defined for the common adaptor.","sidebar":"adaptors"},"packages/common-docs":{"id":"packages/common-docs","title":"common@1.11.1","description":"Functions","sidebar":"adaptors"},"packages/common-readme":{"id":"packages/common-readme","title":"common developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/common","sidebar":"adaptors"},"packages/dhis2-changelog":{"id":"packages/dhis2-changelog","title":"dhis2 changelog","description":"4.0.3","sidebar":"adaptors"},"packages/dhis2-configuration-schema":{"id":"packages/dhis2-configuration-schema","title":"Config for dhis2","description":"Jobs that use the dhis2 adaptor may require authentication. A","sidebar":"adaptors"},"packages/dhis2-docs":{"id":"packages/dhis2-docs","title":"dhis2@4.0.3","description":"Functions","sidebar":"adaptors"},"packages/dhis2-readme":{"id":"packages/dhis2-readme","title":"dhis2 developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/dhis2","sidebar":"adaptors"},"packages/dynamics-changelog":{"id":"packages/dynamics-changelog","title":"dynamics changelog","description":"0.4.8","sidebar":"adaptors"},"packages/dynamics-configuration-schema":{"id":"packages/dynamics-configuration-schema","title":"Config for dynamics","description":"Jobs that use the dynamics adaptor may require authentication. A","sidebar":"adaptors"},"packages/dynamics-docs":{"id":"packages/dynamics-docs","title":"dynamics@0.4.8","description":"","sidebar":"adaptors"},"packages/dynamics-readme":{"id":"packages/dynamics-readme","title":"dynamics developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/dynamics","sidebar":"adaptors"},"packages/facebook-changelog":{"id":"packages/facebook-changelog","title":"facebook changelog","description":"0.3.2","sidebar":"adaptors"},"packages/facebook-configuration-schema":{"id":"packages/facebook-configuration-schema","title":"Config for facebook","description":"Jobs that use the facebook adaptor may require authentication. A","sidebar":"adaptors"},"packages/facebook-docs":{"id":"packages/facebook-docs","title":"facebook@0.3.2","description":"postMessage","sidebar":"adaptors"},"packages/facebook-readme":{"id":"packages/facebook-readme","title":"facebook developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/facebook","sidebar":"adaptors"},"packages/fhir-changelog":{"id":"packages/fhir-changelog","title":"fhir changelog","description":"3.1.0","sidebar":"adaptors"},"packages/fhir-configuration-schema":{"id":"packages/fhir-configuration-schema","title":"Config for fhir","description":"Jobs that use the fhir adaptor may require authentication. A","sidebar":"adaptors"},"packages/fhir-docs":{"id":"packages/fhir-docs","title":"fhir@3.1.0","description":"Functions","sidebar":"adaptors"},"packages/fhir-readme":{"id":"packages/fhir-readme","title":"fhir developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/fhir","sidebar":"adaptors"},"packages/godata-changelog":{"id":"packages/godata-changelog","title":"godata changelog","description":"3.3.1","sidebar":"adaptors"},"packages/godata-configuration-schema":{"id":"packages/godata-configuration-schema","title":"Config for godata","description":"Jobs that use the godata adaptor may require authentication. A","sidebar":"adaptors"},"packages/godata-docs":{"id":"packages/godata-docs","title":"godata@3.3.1","description":"Functions","sidebar":"adaptors"},"packages/godata-readme":{"id":"packages/godata-readme","title":"godata developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/godata","sidebar":"adaptors"},"packages/googlehealthcare-changelog":{"id":"packages/googlehealthcare-changelog","title":"googlehealthcare changelog","description":"1.0.0","sidebar":"adaptors"},"packages/googlehealthcare-configuration-schema":{"id":"packages/googlehealthcare-configuration-schema","title":"Config for googlehealthcare","description":"Jobs that use the googlehealthcare adaptor may require authentication. A","sidebar":"adaptors"},"packages/googlehealthcare-docs":{"id":"packages/googlehealthcare-docs","title":"googlehealthcare@1.0.0","description":"createFhirResource","sidebar":"adaptors"},"packages/googlehealthcare-readme":{"id":"packages/googlehealthcare-readme","title":"googlehealthcare developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/googlehealthcare","sidebar":"adaptors"},"packages/googlesheets-changelog":{"id":"packages/googlesheets-changelog","title":"googlesheets changelog","description":"2.2.2","sidebar":"adaptors"},"packages/googlesheets-configuration-schema":{"id":"packages/googlesheets-configuration-schema","title":"Config for googlesheets","description":"Jobs that use the googlesheets adaptor may require authentication. A","sidebar":"adaptors"},"packages/googlesheets-docs":{"id":"packages/googlesheets-docs","title":"googlesheets@2.2.2","description":"appendValues","sidebar":"adaptors"},"packages/googlesheets-readme":{"id":"packages/googlesheets-readme","title":"googlesheets developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/googlesheets","sidebar":"adaptors"},"packages/hive-changelog":{"id":"packages/hive-changelog","title":"hive changelog","description":"0.2.0","sidebar":"adaptors"},"packages/hive-configuration-schema":{"id":"packages/hive-configuration-schema","title":"Config for hive","description":"Jobs that use the hive adaptor may require authentication. A","sidebar":"adaptors"},"packages/hive-docs":{"id":"packages/hive-docs","title":"hive@0.2.0","description":"query","sidebar":"adaptors"},"packages/hive-readme":{"id":"packages/hive-readme","title":"hive developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/hive","sidebar":"adaptors"},"packages/http-changelog":{"id":"packages/http-changelog","title":"http changelog","description":"5.0.4","sidebar":"adaptors"},"packages/http-configuration-schema":{"id":"packages/http-configuration-schema","title":"Config for http","description":"Jobs that use the http adaptor may require authentication. A","sidebar":"adaptors"},"packages/http-docs":{"id":"packages/http-docs","title":"http@5.0.4","description":"Functions","sidebar":"adaptors"},"packages/http-readme":{"id":"packages/http-readme","title":"http developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/http","sidebar":"adaptors"},"packages/khanacademy-changelog":{"id":"packages/khanacademy-changelog","title":"khanacademy changelog","description":"0.4.1","sidebar":"adaptors"},"packages/khanacademy-configuration-schema":{"id":"packages/khanacademy-configuration-schema","title":"Config for khanacademy","description":"Jobs that use the khanacademy adaptor may require authentication. A","sidebar":"adaptors"},"packages/khanacademy-docs":{"id":"packages/khanacademy-docs","title":"khanacademy@0.4.1","description":"fetch","sidebar":"adaptors"},"packages/khanacademy-readme":{"id":"packages/khanacademy-readme","title":"khanacademy developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/khanacademy","sidebar":"adaptors"},"packages/kobotoolbox-changelog":{"id":"packages/kobotoolbox-changelog","title":"kobotoolbox changelog","description":"2.1.0","sidebar":"adaptors"},"packages/kobotoolbox-configuration-schema":{"id":"packages/kobotoolbox-configuration-schema","title":"Config for kobotoolbox","description":"Jobs that use the kobotoolbox adaptor may require authentication. A","sidebar":"adaptors"},"packages/kobotoolbox-docs":{"id":"packages/kobotoolbox-docs","title":"kobotoolbox@2.1.0","description":"Functions","sidebar":"adaptors"},"packages/kobotoolbox-readme":{"id":"packages/kobotoolbox-readme","title":"kobotoolbox developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/kobotoolbox","sidebar":"adaptors"},"packages/magpi-changelog":{"id":"packages/magpi-changelog","title":"magpi changelog","description":"1.1.1","sidebar":"adaptors"},"packages/magpi-configuration-schema":{"id":"packages/magpi-configuration-schema","title":"Config for magpi","description":"Jobs that use the magpi adaptor may require authentication. A","sidebar":"adaptors"},"packages/magpi-docs":{"id":"packages/magpi-docs","title":"magpi@1.1.1","description":"Functions","sidebar":"adaptors"},"packages/magpi-readme":{"id":"packages/magpi-readme","title":"magpi developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/magpi","sidebar":"adaptors"},"packages/mailchimp-changelog":{"id":"packages/mailchimp-changelog","title":"mailchimp changelog","description":"0.7.1","sidebar":"adaptors"},"packages/mailchimp-configuration-schema":{"id":"packages/mailchimp-configuration-schema","title":"Config for mailchimp","description":"Jobs that use the mailchimp adaptor may require authentication. A","sidebar":"adaptors"},"packages/mailchimp-docs":{"id":"packages/mailchimp-docs","title":"mailchimp@0.7.1","description":"Functions","sidebar":"adaptors"},"packages/mailchimp-readme":{"id":"packages/mailchimp-readme","title":"mailchimp developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mailchimp","sidebar":"adaptors"},"packages/mailgun-changelog":{"id":"packages/mailgun-changelog","title":"mailgun changelog","description":"0.4.3","sidebar":"adaptors"},"packages/mailgun-configuration-schema":{"id":"packages/mailgun-configuration-schema","title":"Config for mailgun","description":"Jobs that use the mailgun adaptor may require authentication. A","sidebar":"adaptors"},"packages/mailgun-docs":{"id":"packages/mailgun-docs","title":"mailgun@0.4.3","description":"send","sidebar":"adaptors"},"packages/mailgun-readme":{"id":"packages/mailgun-readme","title":"mailgun developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mailgun","sidebar":"adaptors"},"packages/maximo-changelog":{"id":"packages/maximo-changelog","title":"maximo changelog","description":"0.4.1","sidebar":"adaptors"},"packages/maximo-configuration-schema":{"id":"packages/maximo-configuration-schema","title":"Config for maximo","description":"Jobs that use the maximo adaptor may require authentication. A","sidebar":"adaptors"},"packages/maximo-docs":{"id":"packages/maximo-docs","title":"maximo@0.4.1","description":"Functions","sidebar":"adaptors"},"packages/maximo-readme":{"id":"packages/maximo-readme","title":"maximo developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/maximo","sidebar":"adaptors"},"packages/medicmobile-changelog":{"id":"packages/medicmobile-changelog","title":"medicmobile changelog","description":"0.4.2","sidebar":"adaptors"},"packages/medicmobile-configuration-schema":{"id":"packages/medicmobile-configuration-schema","title":"Config for medicmobile","description":"Jobs that use the medicmobile adaptor may require authentication. A","sidebar":"adaptors"},"packages/medicmobile-docs":{"id":"packages/medicmobile-docs","title":"medicmobile@0.4.2","description":"Functions","sidebar":"adaptors"},"packages/medicmobile-readme":{"id":"packages/medicmobile-readme","title":"medicmobile developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/medicmobile","sidebar":"adaptors"},"packages/mogli-changelog":{"id":"packages/mogli-changelog","title":"mogli changelog","description":"v0.1.6","sidebar":"adaptors"},"packages/mogli-configuration-schema":{"id":"packages/mogli-configuration-schema","title":"Config for mogli","description":"Jobs that use the mogli adaptor may require authentication. A","sidebar":"adaptors"},"packages/mogli-docs":{"id":"packages/mogli-docs","title":"mogli@0.4.1","description":"Functions","sidebar":"adaptors"},"packages/mogli-readme":{"id":"packages/mogli-readme","title":"mogli developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mogli","sidebar":"adaptors"},"packages/mongodb-changelog":{"id":"packages/mongodb-changelog","title":"mongodb changelog","description":"2.0.0","sidebar":"adaptors"},"packages/mongodb-configuration-schema":{"id":"packages/mongodb-configuration-schema","title":"Config for mongodb","description":"Jobs that use the mongodb adaptor may require authentication. A","sidebar":"adaptors"},"packages/mongodb-docs":{"id":"packages/mongodb-docs","title":"mongodb@2.0.0","description":"Functions","sidebar":"adaptors"},"packages/mongodb-readme":{"id":"packages/mongodb-readme","title":"mongodb developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mongodb","sidebar":"adaptors"},"packages/msgraph-changelog":{"id":"packages/msgraph-changelog","title":"msgraph changelog","description":"0.4.0","sidebar":"adaptors"},"packages/msgraph-configuration-schema":{"id":"packages/msgraph-configuration-schema","title":"Config for msgraph","description":"Jobs that use the msgraph adaptor may require authentication. A","sidebar":"adaptors"},"packages/msgraph-docs":{"id":"packages/msgraph-docs","title":"msgraph@0.4.0","description":"Functions","sidebar":"adaptors"},"packages/msgraph-readme":{"id":"packages/msgraph-readme","title":"msgraph developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/msgraph","sidebar":"adaptors"},"packages/mssql-changelog":{"id":"packages/mssql-changelog","title":"mssql changelog","description":"4.1.8","sidebar":"adaptors"},"packages/mssql-configuration-schema":{"id":"packages/mssql-configuration-schema","title":"Config for mssql","description":"Jobs that use the mssql adaptor may require authentication. A","sidebar":"adaptors"},"packages/mssql-docs":{"id":"packages/mssql-docs","title":"mssql@4.1.8","description":"Functions","sidebar":"adaptors"},"packages/mssql-readme":{"id":"packages/mssql-readme","title":"mssql developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mssql","sidebar":"adaptors"},"packages/mysql-changelog":{"id":"packages/mysql-changelog","title":"mysql changelog","description":"1.4.8","sidebar":"adaptors"},"packages/mysql-configuration-schema":{"id":"packages/mysql-configuration-schema","title":"Config for mysql","description":"Jobs that use the mysql adaptor may require authentication. A","sidebar":"adaptors"},"packages/mysql-docs":{"id":"packages/mysql-docs","title":"mysql@1.4.8","description":"Functions","sidebar":"adaptors"},"packages/mysql-readme":{"id":"packages/mysql-readme","title":"mysql developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/mysql","sidebar":"adaptors"},"packages/nexmo-changelog":{"id":"packages/nexmo-changelog","title":"nexmo changelog","description":"0.4.3","sidebar":"adaptors"},"packages/nexmo-configuration-schema":{"id":"packages/nexmo-configuration-schema","title":"Config for nexmo","description":"Jobs that use the nexmo adaptor may require authentication. A","sidebar":"adaptors"},"packages/nexmo-docs":{"id":"packages/nexmo-docs","title":"nexmo@0.4.3","description":"sendSMS","sidebar":"adaptors"},"packages/nexmo-readme":{"id":"packages/nexmo-readme","title":"nexmo developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/nexmo","sidebar":"adaptors"},"packages/ocl-changelog":{"id":"packages/ocl-changelog","title":"ocl changelog","description":"1.1.7","sidebar":"adaptors"},"packages/ocl-configuration-schema":{"id":"packages/ocl-configuration-schema","title":"Config for ocl","description":"Jobs that use the ocl adaptor may require authentication. A","sidebar":"adaptors"},"packages/ocl-docs":{"id":"packages/ocl-docs","title":"ocl@1.1.7","description":"Functions","sidebar":"adaptors"},"packages/ocl-readme":{"id":"packages/ocl-readme","title":"ocl developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/ocl","sidebar":"adaptors"},"packages/openfn-changelog":{"id":"packages/openfn-changelog","title":"openfn changelog","description":"1.3.8","sidebar":"adaptors"},"packages/openfn-configuration-schema":{"id":"packages/openfn-configuration-schema","title":"Config for openfn","description":"Jobs that use the openfn adaptor may require authentication. A","sidebar":"adaptors"},"packages/openfn-docs":{"id":"packages/openfn-docs","title":"openfn@1.3.8","description":"request","sidebar":"adaptors"},"packages/openfn-readme":{"id":"packages/openfn-readme","title":"openfn developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/openfn","sidebar":"adaptors"},"packages/openhim-changelog":{"id":"packages/openhim-changelog","title":"openhim changelog","description":"0.2.1","sidebar":"adaptors"},"packages/openhim-configuration-schema":{"id":"packages/openhim-configuration-schema","title":"Config for openhim","description":"Jobs that use the openhim adaptor may require authentication. A","sidebar":"adaptors"},"packages/openhim-docs":{"id":"packages/openhim-docs","title":"openhim@0.2.1","description":"encounter","sidebar":"adaptors"},"packages/openhim-readme":{"id":"packages/openhim-readme","title":"openhim developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/openhim","sidebar":"adaptors"},"packages/openmrs-changelog":{"id":"packages/openmrs-changelog","title":"openmrs changelog","description":"2.0.8","sidebar":"adaptors"},"packages/openmrs-configuration-schema":{"id":"packages/openmrs-configuration-schema","title":"Config for openmrs","description":"Jobs that use the openmrs adaptor may require authentication. A","sidebar":"adaptors"},"packages/openmrs-docs":{"id":"packages/openmrs-docs","title":"openmrs@2.0.8","description":"Functions","sidebar":"adaptors"},"packages/openmrs-readme":{"id":"packages/openmrs-readme","title":"openmrs developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/openmrs","sidebar":"adaptors"},"packages/postgresql-changelog":{"id":"packages/postgresql-changelog","title":"postgresql changelog","description":"4.1.8","sidebar":"adaptors"},"packages/postgresql-configuration-schema":{"id":"packages/postgresql-configuration-schema","title":"Config for postgresql","description":"Jobs that use the postgresql adaptor may require authentication. A","sidebar":"adaptors"},"packages/postgresql-docs":{"id":"packages/postgresql-docs","title":"postgresql@4.1.8","description":"Functions","sidebar":"adaptors"},"packages/postgresql-readme":{"id":"packages/postgresql-readme","title":"postgresql developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/postgresql","sidebar":"adaptors"},"packages/primero-changelog":{"id":"packages/primero-changelog","title":"primero changelog","description":"2.11.8","sidebar":"adaptors"},"packages/primero-configuration-schema":{"id":"packages/primero-configuration-schema","title":"Config for primero","description":"Jobs that use the primero adaptor may require authentication. A","sidebar":"adaptors"},"packages/primero-docs":{"id":"packages/primero-docs","title":"primero@2.11.8","description":"Functions","sidebar":"adaptors"},"packages/primero-readme":{"id":"packages/primero-readme","title":"primero developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/primero","sidebar":"adaptors"},"packages/progres-changelog":{"id":"packages/progres-changelog","title":"progres changelog","description":"1.3.8","sidebar":"adaptors"},"packages/progres-configuration-schema":{"id":"packages/progres-configuration-schema","title":"Config for progres","description":"Jobs that use the progres adaptor may require authentication. A","sidebar":"adaptors"},"packages/progres-docs":{"id":"packages/progres-docs","title":"progres@1.3.8","description":"postData","sidebar":"adaptors"},"packages/progres-readme":{"id":"packages/progres-readme","title":"progres developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/progres","sidebar":"adaptors"},"packages/rapidpro-changelog":{"id":"packages/rapidpro-changelog","title":"rapidpro changelog","description":"1.0.8","sidebar":"adaptors"},"packages/rapidpro-configuration-schema":{"id":"packages/rapidpro-configuration-schema","title":"Config for rapidpro","description":"Jobs that use the rapidpro adaptor may require authentication. A","sidebar":"adaptors"},"packages/rapidpro-docs":{"id":"packages/rapidpro-docs","title":"rapidpro@1.0.8","description":"Functions","sidebar":"adaptors"},"packages/rapidpro-readme":{"id":"packages/rapidpro-readme","title":"rapidpro developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/rapidpro","sidebar":"adaptors"},"packages/resourcemap-changelog":{"id":"packages/resourcemap-changelog","title":"resourcemap changelog","description":"0.3.1","sidebar":"adaptors"},"packages/resourcemap-configuration-schema":{"id":"packages/resourcemap-configuration-schema","title":"Config for resourcemap","description":"Jobs that use the resourcemap adaptor may require authentication. A","sidebar":"adaptors"},"packages/resourcemap-docs":{"id":"packages/resourcemap-docs","title":"resourcemap@0.3.1","description":"submitSite","sidebar":"adaptors"},"packages/resourcemap-readme":{"id":"packages/resourcemap-readme","title":"resourcemap developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/resourcemap","sidebar":"adaptors"},"packages/salesforce-changelog":{"id":"packages/salesforce-changelog","title":"salesforce changelog","description":"4.2.2","sidebar":"adaptors"},"packages/salesforce-configuration-schema":{"id":"packages/salesforce-configuration-schema","title":"Config for salesforce","description":"Jobs that use the salesforce adaptor may require authentication. A","sidebar":"adaptors"},"packages/salesforce-docs":{"id":"packages/salesforce-docs","title":"salesforce@4.2.2","description":"Functions","sidebar":"adaptors"},"packages/salesforce-readme":{"id":"packages/salesforce-readme","title":"salesforce developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/salesforce","sidebar":"adaptors"},"packages/sftp-changelog":{"id":"packages/sftp-changelog","title":"sftp changelog","description":"1.0.2","sidebar":"adaptors"},"packages/sftp-configuration-schema":{"id":"packages/sftp-configuration-schema","title":"Config for sftp","description":"Jobs that use the sftp adaptor may require authentication. A","sidebar":"adaptors"},"packages/sftp-docs":{"id":"packages/sftp-docs","title":"sftp@1.0.2","description":"Functions","sidebar":"adaptors"},"packages/sftp-readme":{"id":"packages/sftp-readme","title":"sftp developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/sftp","sidebar":"adaptors"},"packages/smpp-changelog":{"id":"packages/smpp-changelog","title":"smpp changelog","description":"1.3.1","sidebar":"adaptors"},"packages/smpp-configuration-schema":{"id":"packages/smpp-configuration-schema","title":"Config for smpp","description":"Jobs that use the smpp adaptor may require authentication. A","sidebar":"adaptors"},"packages/smpp-docs":{"id":"packages/smpp-docs","title":"smpp@1.3.1","description":"","sidebar":"adaptors"},"packages/smpp-readme":{"id":"packages/smpp-readme","title":"smpp developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/smpp","sidebar":"adaptors"},"packages/surveycto-changelog":{"id":"packages/surveycto-changelog","title":"surveycto changelog","description":"1.2.1","sidebar":"adaptors"},"packages/surveycto-configuration-schema":{"id":"packages/surveycto-configuration-schema","title":"Config for surveycto","description":"Jobs that use the surveycto adaptor may require authentication. A","sidebar":"adaptors"},"packages/surveycto-docs":{"id":"packages/surveycto-docs","title":"surveycto@1.2.1","description":"fetchSubmissions","sidebar":"adaptors"},"packages/surveycto-readme":{"id":"packages/surveycto-readme","title":"surveycto developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/surveycto","sidebar":"adaptors"},"packages/telerivet-changelog":{"id":"packages/telerivet-changelog","title":"telerivet changelog","description":"0.2.1","sidebar":"adaptors"},"packages/telerivet-configuration-schema":{"id":"packages/telerivet-configuration-schema","title":"Config for telerivet","description":"Jobs that use the telerivet adaptor may require authentication. A","sidebar":"adaptors"},"packages/telerivet-docs":{"id":"packages/telerivet-docs","title":"telerivet@0.2.1","description":"send","sidebar":"adaptors"},"packages/telerivet-readme":{"id":"packages/telerivet-readme","title":"telerivet developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/telerivet","sidebar":"adaptors"},"packages/template-changelog":{"id":"packages/template-changelog","title":"template changelog","description":"3.0.1","sidebar":"adaptors"},"packages/template-configuration-schema":{"id":"packages/template-configuration-schema","title":"Config for template","description":"Jobs that use the template adaptor may require authentication. A","sidebar":"adaptors"},"packages/template-docs":{"id":"packages/template-docs","title":"template@3.0.1","description":"create","sidebar":"adaptors"},"packages/template-readme":{"id":"packages/template-readme","title":"template developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/template","sidebar":"adaptors"},"packages/twilio-changelog":{"id":"packages/twilio-changelog","title":"twilio changelog","description":"0.4.1","sidebar":"adaptors"},"packages/twilio-configuration-schema":{"id":"packages/twilio-configuration-schema","title":"Config for twilio","description":"Jobs that use the twilio adaptor may require authentication. A","sidebar":"adaptors"},"packages/twilio-docs":{"id":"packages/twilio-docs","title":"twilio@0.4.1","description":"sendSMS","sidebar":"adaptors"},"packages/twilio-readme":{"id":"packages/twilio-readme","title":"twilio developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/twilio","sidebar":"adaptors"},"packages/vtiger-changelog":{"id":"packages/vtiger-changelog","title":"vtiger changelog","description":"1.2.1","sidebar":"adaptors"},"packages/vtiger-configuration-schema":{"id":"packages/vtiger-configuration-schema","title":"Config for vtiger","description":"Jobs that use the vtiger adaptor may require authentication. A","sidebar":"adaptors"},"packages/vtiger-docs":{"id":"packages/vtiger-docs","title":"vtiger@1.2.1","description":"","sidebar":"adaptors"},"packages/vtiger-readme":{"id":"packages/vtiger-readme","title":"vtiger developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/vtiger","sidebar":"adaptors"},"packages/zoho-changelog":{"id":"packages/zoho-changelog","title":"zoho changelog","description":"0.3.1","sidebar":"adaptors"},"packages/zoho-configuration-schema":{"id":"packages/zoho-configuration-schema","title":"Config for zoho","description":"Jobs that use the zoho adaptor may require authentication. A","sidebar":"adaptors"},"packages/zoho-docs":{"id":"packages/zoho-docs","title":"zoho@0.3.1","description":"addRow","sidebar":"adaptors"},"packages/zoho-readme":{"id":"packages/zoho-readme","title":"zoho developer readme","description":"Source//github.com/OpenFn/adaptors/tree/main/packages/zoho","sidebar":"adaptors"},"postgresql":{"id":"postgresql","title":"PostgreSQL","description":"Overview","sidebar":"adaptors"},"powerbi":{"id":"powerbi","title":"Power BI","description":"(Work in progress)","sidebar":"adaptors"},"primero":{"id":"primero","title":"Primero","description":"Overview","sidebar":"adaptors"},"salesforce":{"id":"salesforce","title":"Salesforce","description":"App Overview","sidebar":"adaptors"},"surveycto":{"id":"surveycto","title":"SurveyCTO","description":"Real-time (with webhooks)","sidebar":"adaptors"},"tableau":{"id":"tableau","title":"Tableau","description":"(Work in progress)","sidebar":"adaptors"}}}')}}]); \ No newline at end of file diff --git a/fr/assets/js/d9a6c9f9.86b88ed6.js b/fr/assets/js/d9a6c9f9.b30ce16b.js similarity index 98% rename from fr/assets/js/d9a6c9f9.86b88ed6.js rename to fr/assets/js/d9a6c9f9.b30ce16b.js index a76396e6e91..7e2cb70a941 100644 --- a/fr/assets/js/d9a6c9f9.86b88ed6.js +++ b/fr/assets/js/d9a6c9f9.b30ce16b.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[26090],{3905:(t,e,a)=>{a.d(e,{Zo:()=>u,kt:()=>d});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function p(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var i=n.createContext({}),s=function(t){var e=n.useContext(i),a=e;return t&&(a="function"==typeof t?t(e):p(p({},e),t)),a},u=function(t){var e=s(t.components);return n.createElement(i.Provider,{value:e},t.children)},c="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},k=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,i=t.parentName,u=o(t,["components","mdxType","originalType","parentName"]),c=s(a),k=r,d=c["".concat(i,".").concat(k)]||c[k]||m[k]||l;return a?n.createElement(d,p(p({ref:e},u),{},{components:a})):n.createElement(d,p({ref:e},u))}));function d(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,p=new Array(l);p[0]=k;var o={};for(var i in e)hasOwnProperty.call(e,i)&&(o[i]=e[i]);o.originalType=t,o[c]="string"==typeof t?t:r,p[1]=o;for(var s=2;s{a.r(e),a.d(e,{assets:()=>i,contentTitle:()=>p,default:()=>m,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var n=a(87462),r=(a(67294),a(3905));const l={title:"sftp@1.0.1",id:"sftp-docs",keywords:["adaptor","sftp","getCSV","getJSON","list","normalizeCSVarray","putCSV"]},p=void 0,o={unversionedId:"packages/sftp-docs",id:"packages/sftp-docs",title:"sftp@1.0.1",description:"Functions",source:"@site/adaptors/packages/sftp-docs.md",sourceDirName:"packages",slug:"/packages/sftp-docs",permalink:"/fr/adaptors/packages/sftp-docs",draft:!1,tags:[],version:"current",frontMatter:{title:"sftp@1.0.1",id:"sftp-docs",keywords:["adaptor","sftp","getCSV","getJSON","list","normalizeCSVarray","putCSV"]},sidebar:"adaptors",previous:{title:"salesforce developer readme",permalink:"/fr/adaptors/packages/salesforce-readme"},next:{title:"Config for sftp",permalink:"/fr/adaptors/packages/sftp-configuration-schema"}},i={},s=[{value:"Functions",id:"functions",level:2},{value:"getCSV",id:"getcsv",level:2},{value:"getJSON",id:"getjson",level:2},{value:"list",id:"list",level:2},{value:"normalizeCSVarray",id:"normalizecsvarray",level:2},{value:"putCSV",id:"putcsv",level:2}],u={toc:s},c="wrapper";function m(t){let{components:e,...a}=t;return(0,r.kt)(c,(0,n.Z)({},u,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"functions"},"Functions"),(0,r.kt)("dl",null,(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#getCSV"},"getCSV(filePath, [parsingOptions])")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#getJSON"},"getJSON(filePath, encoding)")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#list"},"list(dirPath, filter, [callback])")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#normalizeCSVarray"},"normalizeCSVarray(options, callback)")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#putCSV"},"putCSV(localFilePath, remoteFilePath, parsingOptions)"))),(0,r.kt)("h2",{id:"getcsv"},"getCSV"),(0,r.kt)("p",null,"getCSV(filePath, ","[parsingOptions]",") \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nGet a CSV and return a JSON array of strings for each item separated by the delimiter"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"filePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to resource")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"[parsingOptions]"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"Object")),(0,r.kt)("td",{parentName:"tr",align:null},"Optional. ",(0,r.kt)("inlineCode",{parentName:"td"},"parsingOptions")," Parsing options which can be passed to convert csv to json See more ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/Keyang/node-csvtojson#parameters"},"on csvtojson docs"))))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"getCSV(\n '/some/path/to_file.csv',\n {delimiter: \";\", flatKeys: true }\n);\n")),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"getjson"},"getJSON"),(0,r.kt)("p",null,"getJSON(filePath, encoding) \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nFetch a json file from an FTP server"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"filePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to resource")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"encoding"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Character encoding for the json")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"getJSON(\n '/path/To/File',\n 'utf8',\n);\n")),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"list"},"list"),(0,r.kt)("p",null,"list(dirPath, filter, ","[callback]",") \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nList files present in a directory"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"dirPath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to remote directory")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"filter"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"function")),(0,r.kt)("td",{parentName:"tr",align:null},"a filter function used to select return entries")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"[callback]"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"function")),(0,r.kt)("td",{parentName:"tr",align:null},"Optional callback to handle the response")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," ",(0,r.kt)("em",{parentName:"p"},"(basic files listing)")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"list('/some/path/')\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," ",(0,r.kt)("em",{parentName:"p"},"(list files with filters)")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"list('/some/path/', file=> {\n return /foo.\\.txt/.test(file.name);\n})\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," ",(0,r.kt)("em",{parentName:"p"},"(list files with filters and use callback)")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},'list(\n "/some/path/",\n (file) => /foo.\\.txt/.test(file.name),\n (state) => {\n const latestFile = state.data.filter(\n (file) => file.modifyTime <= new Date()\n );\n return { ...state, latestFile };\n }\n);\n')),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"normalizecsvarray"},"normalizeCSVarray"),(0,r.kt)("p",null,"normalizeCSVarray(options, callback) \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nConvert JSON array of strings into a normalized object"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"options"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"options")),(0,r.kt)("td",{parentName:"tr",align:null},"Options passed to csvtojson parser")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"callback"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"callback")),(0,r.kt)("td",{parentName:"tr",align:null},"Options passed to csvtojson parser")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"normalizeCSVarray({ delimiter: ';', noheader: true });\n")),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"putcsv"},"putCSV"),(0,r.kt)("p",null,"putCSV(localFilePath, remoteFilePath, parsingOptions) \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nConvert JSON to CSV and upload to an FTP server"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"localFilePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Data source for data to copy to the remote server.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"remoteFilePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to the remote file to be created on the server.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"parsingOptions"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"object")),(0,r.kt)("td",{parentName:"tr",align:null},"Options which can be passed to adjust the read and write stream used in sending the data to the remote server")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"putCSV(\n '/some/path/to_local_file.csv',\n '/some/path/to_remove_file.csv',\n { delimiter: ';', noheader: true }\n);\n")),(0,r.kt)("hr",null))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunk_openfn_docs=self.webpackChunk_openfn_docs||[]).push([[26090],{3905:(t,e,a)=>{a.d(e,{Zo:()=>u,kt:()=>d});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function p(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var i=n.createContext({}),s=function(t){var e=n.useContext(i),a=e;return t&&(a="function"==typeof t?t(e):p(p({},e),t)),a},u=function(t){var e=s(t.components);return n.createElement(i.Provider,{value:e},t.children)},c="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},k=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,i=t.parentName,u=o(t,["components","mdxType","originalType","parentName"]),c=s(a),k=r,d=c["".concat(i,".").concat(k)]||c[k]||m[k]||l;return a?n.createElement(d,p(p({ref:e},u),{},{components:a})):n.createElement(d,p({ref:e},u))}));function d(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,p=new Array(l);p[0]=k;var o={};for(var i in e)hasOwnProperty.call(e,i)&&(o[i]=e[i]);o.originalType=t,o[c]="string"==typeof t?t:r,p[1]=o;for(var s=2;s{a.r(e),a.d(e,{assets:()=>i,contentTitle:()=>p,default:()=>m,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var n=a(87462),r=(a(67294),a(3905));const l={title:"sftp@1.0.2",id:"sftp-docs",keywords:["adaptor","sftp","getCSV","getJSON","list","normalizeCSVarray","putCSV"]},p=void 0,o={unversionedId:"packages/sftp-docs",id:"packages/sftp-docs",title:"sftp@1.0.2",description:"Functions",source:"@site/adaptors/packages/sftp-docs.md",sourceDirName:"packages",slug:"/packages/sftp-docs",permalink:"/fr/adaptors/packages/sftp-docs",draft:!1,tags:[],version:"current",frontMatter:{title:"sftp@1.0.2",id:"sftp-docs",keywords:["adaptor","sftp","getCSV","getJSON","list","normalizeCSVarray","putCSV"]},sidebar:"adaptors",previous:{title:"salesforce developer readme",permalink:"/fr/adaptors/packages/salesforce-readme"},next:{title:"Config for sftp",permalink:"/fr/adaptors/packages/sftp-configuration-schema"}},i={},s=[{value:"Functions",id:"functions",level:2},{value:"getCSV",id:"getcsv",level:2},{value:"getJSON",id:"getjson",level:2},{value:"list",id:"list",level:2},{value:"normalizeCSVarray",id:"normalizecsvarray",level:2},{value:"putCSV",id:"putcsv",level:2}],u={toc:s},c="wrapper";function m(t){let{components:e,...a}=t;return(0,r.kt)(c,(0,n.Z)({},u,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"functions"},"Functions"),(0,r.kt)("dl",null,(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#getCSV"},"getCSV(filePath, [parsingOptions])")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#getJSON"},"getJSON(filePath, encoding)")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#list"},"list(dirPath, filter, [callback])")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#normalizeCSVarray"},"normalizeCSVarray(options, callback)")),(0,r.kt)("dt",null,(0,r.kt)("a",{href:"#putCSV"},"putCSV(localFilePath, remoteFilePath, parsingOptions)"))),(0,r.kt)("h2",{id:"getcsv"},"getCSV"),(0,r.kt)("p",null,"getCSV(filePath, ","[parsingOptions]",") \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nGet a CSV and return a JSON array of strings for each item separated by the delimiter"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"filePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to resource")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"[parsingOptions]"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"Object")),(0,r.kt)("td",{parentName:"tr",align:null},"Optional. ",(0,r.kt)("inlineCode",{parentName:"td"},"parsingOptions")," Parsing options which can be passed to convert csv to json See more ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/Keyang/node-csvtojson#parameters"},"on csvtojson docs"))))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"getCSV(\n '/some/path/to_file.csv',\n {delimiter: \";\", flatKeys: true }\n);\n")),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"getjson"},"getJSON"),(0,r.kt)("p",null,"getJSON(filePath, encoding) \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nFetch a json file from an FTP server"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"filePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to resource")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"encoding"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Character encoding for the json")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"getJSON(\n '/path/To/File',\n 'utf8',\n);\n")),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"list"},"list"),(0,r.kt)("p",null,"list(dirPath, filter, ","[callback]",") \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nList files present in a directory"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"dirPath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to remote directory")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"filter"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"function")),(0,r.kt)("td",{parentName:"tr",align:null},"a filter function used to select return entries")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"[callback]"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"function")),(0,r.kt)("td",{parentName:"tr",align:null},"Optional callback to handle the response")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," ",(0,r.kt)("em",{parentName:"p"},"(basic files listing)")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"list('/some/path/')\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," ",(0,r.kt)("em",{parentName:"p"},"(list files with filters)")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"list('/some/path/', file=> {\n return /foo.\\.txt/.test(file.name);\n})\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," ",(0,r.kt)("em",{parentName:"p"},"(list files with filters and use callback)")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},'list(\n "/some/path/",\n (file) => /foo.\\.txt/.test(file.name),\n (state) => {\n const latestFile = state.data.filter(\n (file) => file.modifyTime <= new Date()\n );\n return { ...state, latestFile };\n }\n);\n')),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"normalizecsvarray"},"normalizeCSVarray"),(0,r.kt)("p",null,"normalizeCSVarray(options, callback) \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nConvert JSON array of strings into a normalized object"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"options"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"options")),(0,r.kt)("td",{parentName:"tr",align:null},"Options passed to csvtojson parser")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"callback"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"callback")),(0,r.kt)("td",{parentName:"tr",align:null},"Options passed to csvtojson parser")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"normalizeCSVarray({ delimiter: ';', noheader: true });\n")),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"putcsv"},"putCSV"),(0,r.kt)("p",null,"putCSV(localFilePath, remoteFilePath, parsingOptions) \u21d2 ",(0,r.kt)("code",null,"Operation"),"\nConvert JSON to CSV and upload to an FTP server"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Kind"),": global function",(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},"Access"),": public "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Param"),(0,r.kt)("th",{parentName:"tr",align:null},"Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"localFilePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Data source for data to copy to the remote server.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"remoteFilePath"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to the remote file to be created on the server.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"parsingOptions"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("code",null,"object")),(0,r.kt)("td",{parentName:"tr",align:null},"Options which can be passed to adjust the read and write stream used in sending the data to the remote server")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example")," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"putCSV(\n '/some/path/to_local_file.csv',\n '/some/path/to_remove_file.csv',\n { delimiter: ';', noheader: true }\n);\n")),(0,r.kt)("hr",null))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/fr/assets/js/runtime~main.565f603e.js b/fr/assets/js/runtime~main.78450e1e.js similarity index 98% rename from fr/assets/js/runtime~main.565f603e.js rename to fr/assets/js/runtime~main.78450e1e.js index 0f9bf77c64b..56b7bcddf38 100644 --- a/fr/assets/js/runtime~main.565f603e.js +++ b/fr/assets/js/runtime~main.78450e1e.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,c,d,f,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=b,r.c=t,e=[],r.O=(a,c,d,f)=>{if(!c){var b=1/0;for(i=0;i=f)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[c,d,f]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var b={};a=a||[null,c({}),c([]),c(c)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(f,b),f},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({160:"6f69b847",640:"c85c4b26",740:"fa811662",892:"1155c2d6",977:"b973dcfd",1081:"e6951222",1140:"2bb14bf0",1177:"ceb3f8e5",1589:"3e1cef53",1685:"2f06f2be",1829:"68c257f8",1958:"6479f562",2101:"0bd872d0",2110:"bd16d6fd",2232:"c64ebc62",2365:"f38541c0",2507:"bbcf6861",2890:"6915d488",2920:"a1c489ab",3112:"97bb0f58",3132:"9915a91d",3359:"07518487",3476:"b8f959a4",3812:"9d4548fb",3818:"a22153eb",3976:"87f47d74",4213:"12ebab0f",4310:"6bb2318b",4474:"f615a51d",4804:"60a00565",4825:"2d52fc42",4993:"81c93763",5099:"f30a3d1e",5484:"4cd34504",5547:"da184dc1",5670:"fcdeb347",5815:"24c88117",6136:"9da9a498",6170:"d86d7a0b",6249:"0564f87a",6286:"e19908fc",6293:"d1ebcfaa",6367:"6de65b44",6536:"f2ca2c55",6554:"8c7d7bb0",6792:"13614daa",6895:"dd13b434",6905:"13a70009",6952:"c70366f5",7033:"9785ccb8",7127:"cfc8229c",7330:"d9cb599e",7332:"1a848321",7340:"ba5363a7",7463:"21b56577",7483:"a6a264d3",7567:"f77d5673",7694:"aa1b4e53",7800:"d58f2f6c",7854:"64427c87",7911:"54e91ab5",7931:"cd9a6ef5",8012:"c0f0637e",8097:"20501ae4",8393:"01cf17ec",8507:"ca6559fd",8697:"cb759659",8765:"4aaa0f44",8773:"da6f85e6",9084:"0a6f29e5",9260:"e150ab3e",9562:"45b0764f",9966:"60ab92b2",9985:"237f254e",10099:"f5f1347d",10309:"60f1bcf9",10511:"758bc66d",10660:"437618c4",10887:"ee49404e",10924:"5e450bcf",10996:"caaf01d4",11168:"11e6d144",11198:"469347db",11258:"d40361ad",11293:"6b2906f5",11421:"02034504",11439:"33e1509d",11483:"5b5d0fd6",11509:"d5b44e8d",11702:"ced1473c",11792:"6bc82b6b",11922:"aa668fb3",11953:"1e9ef283",11990:"30ddeb5e",11991:"be916a41",12229:"964386c1",12306:"3d5c28b0",12573:"5dfb628f",12620:"274548c6",13812:"207ee67a",13834:"c4643d70",14074:"bd6858b9",14419:"8c2c25e6",14753:"ce5aebf3",14817:"6aa8733e",14987:"c85e5855",15015:"2158648d",15288:"0452e1bb",15395:"7efa2c08",15543:"8112a505",15847:"f6525c87",15853:"39f62c92",16054:"2de9ac7c",16057:"b083e7a6",16199:"0dcca2b1",16362:"4ad982c0",16549:"9150c915",16699:"4aabe620",16785:"a7ce3f25",16819:"9ee43f4e",17191:"89f741ca",17238:"45b3f811",17388:"97feb4e9",17753:"6680323d",17773:"285ad496",18047:"9997aecf",18073:"92009f0a",18141:"febd0338",18230:"bc5d0bda",18902:"0e04b402",18918:"24a5cb68",18967:"7a801707",19014:"50711b5c",19624:"8f8e3a33",19692:"ea07b8e0",19835:"e202e776",19873:"14ee1fe9",20168:"01a3d143",20396:"7ee80f24",20512:"5f265cf4",20516:"2f0d9976",20593:"cfe04674",20854:"db30e504",20868:"3d8bf3ab",21085:"121b2142",21151:"14ad7d65",21271:"8310c4f6",21356:"0d1eeea0",21481:"919ee986",21599:"b578d62e",21665:"e56b7427",21682:"52244165",22226:"f5466782",22235:"3947b16e",22409:"5e1dea11",22537:"99259033",22605:"55bb925b",22623:"ecfe8209",22740:"e436cfad",22761:"9e9afbd3",22839:"bbd7a71c",23024:"665c23b8",23046:"192eff61",23067:"57fbf2bd",23395:"2a076a79",23698:"2f236184",23872:"b5bd7f9b",23913:"3874af3e",24067:"8660c4b6",24219:"5e95c167",24319:"facd2017",24742:"833f2ec0",24770:"88e27e42",24869:"90d535c2",24883:"9eb4e0db",25035:"1af9c7d3",25048:"a20e070a",25294:"73578edf",25315:"e310b146",25800:"95001b22",25903:"2c828998",25920:"cce9ad1c",26090:"d9a6c9f9",26313:"431913e7",26430:"1edc3b38",26723:"60194cf2",26920:"d98b9f83",27364:"305c1785",27800:"b1ecb9ed",27918:"17896441",28206:"052feb78",28262:"f810cb63",28283:"d776f897",28698:"c77a0576",29278:"d293d3db",29354:"c2d56c21",29514:"1be78505",29655:"8404d93f",29730:"e7761a76",30117:"385718d4",30135:"e87dea31",30583:"f22b5bc0",30620:"77deca26",30636:"747a690f",30674:"1140a058",30697:"27eb0108",31109:"dff30c03",31114:"f13d29f3",31158:"f2b4d23e",31262:"2dcd28d2",31326:"7a35092c",31350:"5fb0ec3e",31552:"4aa43dae",31800:"c1dc13d0",31883:"3c41cfdf",32107:"916b8fda",32661:"e1d93203",32672:"85f847a7",32674:"6cb21577",32681:"7ced0572",32737:"afbc2852",33089:"20a5a532",33122:"9455630c",33133:"e7f68c37",33340:"a67fd46a",33582:"93857d8b",33731:"20f8de15",33806:"57bdafe0",33841:"1203bdae",33926:"c4429c79",33947:"c6dfd94e",34490:"33844ff3",34737:"31b72ec5",35005:"adadeee4",35097:"def6dfb9",35304:"1e26ddab",35477:"c0908e63",35506:"6738a51a",35755:"c275b7b1",35776:"b8df7263",35840:"c9df59dc",35922:"1eb40bba",36048:"24e295df",36249:"05b1a525",36425:"984b8319",36600:"fcde3356",36918:"92293c9c",37120:"669b0b95",37209:"4980c4fa",37274:"02371d76",37388:"5ac6f7de",37737:"2db499ae",37874:"8e97cc15",38276:"43cc1724",38574:"1b3816a8",38887:"e967512d",39210:"75270caf",39527:"afd0cb1b",39626:"8b77e1a5",39799:"330b8ea1",39856:"e0c8a1d6",40054:"9a8f9e52",40195:"1a7f2dde",40280:"07e96687",40332:"cd8c9fbc",40381:"050638ff",40556:"1ee9c635",40597:"2d68e16b",40707:"2a47a07e",40804:"84810683",40984:"e5a64766",41170:"3a0c736b",41191:"c3e27561",41386:"e4071e64",41661:"1280552c",42117:"710be885",42161:"1f7f4c7a",42251:"55ac83aa",42412:"8328e7f1",42531:"4f8f7d74",42958:"14a767b9",43086:"bb40a730",43164:"09eafa5c",43521:"8d1ec4c5",43905:"5653e10f",43996:"277d517a",44369:"0bc95200",44556:"a6a431f9",44911:"677d6777",44953:"78b226dc",44988:"4be7e5d0",44996:"33bf046c",45112:"31d20e13",45119:"c50fc9f4",45190:"1d970e9f",45452:"5bcd0da1",45454:"e5c6d3b2",45702:"1074bb26",45917:"17ca7de3",45939:"b1212599",45977:"acfb9a5e",45980:"ffecbc46",46074:"b198cec2",46103:"ccc49370",46461:"01d69a66",46526:"7f6bbd73",46541:"b8974487",46858:"e2c3bc5f",46989:"e802237a",47036:"377ce957",47077:"554f4bd3",47214:"326c0af7",48104:"c333ed9f",48610:"6875c492",48690:"5ffd6909",48783:"6f9d539f",48947:"a5ba2d12",49517:"6af54863",49792:"b0074edd",49808:"d0ac1c30",49927:"eec5a710",50044:"e4d06512",50098:"3834c837",50103:"65e8e75e",50258:"5575e2a8",50339:"cb128a98",50403:"de387681",50758:"853ddb5d",50988:"186b492d",51149:"cd910537",51161:"2127c55a",51652:"708cde07",51737:"c092a89c",51904:"c260b9a0",51917:"3f2ad086",52475:"d5d95cda",52535:"814f3328",52610:"1d48afb9",52739:"734563d5",52765:"933a49e7",52943:"a9bffa51",53202:"68987ad2",53244:"869c9c27",53608:"9e4087bc",53787:"bc4d6fc9",53869:"72274bd6",53962:"3a574a7f",54246:"c942fcda",55191:"bb8cf488",55221:"cbf34b30",55494:"38eccbde",55606:"b1be30d1",55797:"e4608243",55810:"47f9b594",55851:"cd7342f7",55870:"c302b7f6",56112:"99e8c7ac",56123:"4ef508e9",56147:"92e661e4",56265:"b5e7b216",56295:"e6ec1ffb",56852:"30995fb4",57019:"479e2d15",57463:"f2f7c8b6",57493:"4a77a641",57737:"92f50a66",58193:"aacecf0a",58194:"afa4ac88",58281:"db403cff",58290:"cc8c6322",58530:"e1450e8f",58614:"0d596054",59060:"91b303c9",59092:"9c62a4d6",59139:"5153790b",59334:"247783bb",60330:"13a2a5ae",60379:"271f7228",60507:"6a1cd61c",60595:"a9d6ad8a",60712:"699a47d0",60731:"37a36148",60771:"22ef07eb",60992:"352bf367",61484:"20a7d97c",61877:"7849f6b2",61887:"f9ed4079",62126:"c3a5a911",62127:"1b24f020",62405:"a8faecbd",62650:"0f427d40",63253:"a69ebe5f",63369:"579e663e",63792:"bd83a8c8",63812:"45a8dc52",63870:"0b31129f",63952:"d493c3e8",64013:"01a85c17",64022:"0bddafbe",64098:"b46405e2",64195:"c4f5d8e4",64310:"61fbda8a",64477:"3cf47477",64693:"1e5c0d86",64709:"f3954950",64880:"6a3a4a87",64887:"a8c84974",64947:"460d220e",65017:"f9aec362",65146:"069211c5",65341:"0a451647",65442:"444d5ed4",65675:"54b8d70a",65826:"203262b0",66070:"25057d02",66385:"59b068d1",66526:"e6102057",66608:"b82c8496",66618:"802db911",66744:"821478b8",66863:"1cd349ba",67086:"32507d04",67174:"e508954a",67533:"5c709812",67544:"aea1a378",67560:"36a143db",68021:"64a35041",68175:"c831614b",68271:"1c091541",68532:"ad282cb1",68618:"5f16d91a",68856:"7de666e0",69104:"acd02317",69483:"5c8f7670",69501:"cb189ef9",69962:"8e10bb86",69989:"32a4d0bf",70486:"6d30ac0a",70839:"49959913",70970:"77e868d9",71061:"c968f1a3",71381:"56ece2ab",71467:"57a1d77e",72054:"f64a2f66",72099:"eae3fa10",72514:"6c5c20d6",72543:"61428574",72937:"193bf152",72978:"56b2a431",73011:"1e19f58c",73032:"13c3e084",73446:"450c527f",73623:"d2e8caaf",74002:"9bb632fa",74083:"68cedfd5",74198:"b3198ac5",74300:"419e73d5",74888:"1a43e018",74999:"6a84c208",75878:"c08d79e7",75935:"8dfa1c2e",76227:"37c44782",76307:"6030f184",76575:"6d0c6131",76660:"c76eb7d5",76786:"8e37cc44",76791:"06b1e92d",76874:"771488fd",76967:"e2548c92",77055:"f5d5b73d",77077:"97d209f3",77078:"1ecd7e15",77169:"e4f4dec4",77217:"af1b4014",77645:"a7434565",78046:"2fd22369",78082:"fcfb247d",78314:"10915d97",78436:"c541efc4",78489:"c98ac358",78588:"0a1bb744",78659:"890759ea",78722:"a484f848",78823:"c0daf1e6",78870:"03b60f31",78914:"1a98f2d5",78941:"88b398be",79495:"62b71d38",79559:"7356945f",79597:"b68d77f3",80053:"935f2afb",80163:"28304c62",80448:"d1e2a1e4",80801:"d5694d2b",80806:"9e4491bb",80944:"ead2dbe0",81128:"c38cc3bf",81155:"5f6910fd",81375:"cf23ded0",81475:"1ddde2c7",81487:"70b40441",81511:"208114e0",81639:"0691b308",81649:"92bdb8f4",81938:"6310fd48",81995:"174d08bc",82276:"46bd2088",82306:"9f0de854",82461:"dfd4abb8",82818:"5f1113d5",82863:"eb4eb408",83006:"87d0342b",83054:"b85e9339",83105:"286b008a",83278:"09b23959",83373:"11508eb1",83538:"6a3d0153",83628:"df123296",83834:"07987921",83897:"500fb0e6",83917:"24c7144e",83988:"e0ecd9df",84678:"7c750c8d",84726:"08e43170",84728:"903c4f6f",84761:"ab0b43f0",84784:"f7f75c2e",84935:"bab68f7e",85040:"f5ff4ddf",85367:"2233b4a8",85584:"585fad0f",85586:"5f0cc255",85634:"a6748c3f",85744:"c4816122",85830:"f5d8a8a8",85960:"cc826739",86122:"e958b715",86565:"4224ef00",86575:"54496a4b",86586:"7a719824",86621:"519cbeed",86719:"4256eaf4",86869:"713bf807",86904:"fec351f2",86931:"93dfdea3",86984:"2bf9c0b5",87070:"3bc428dc",87494:"90377122",87557:"4cbb880b",87644:"81e594d4",87746:"6fa39f86",88180:"eec2ee36",88257:"9daf6a80",88322:"eabea829",88652:"39e9cb37",88795:"27e17dc0",89007:"e4a50065",89364:"96781795",89427:"cf910a2e",89501:"f48233a1",89903:"ffc1986f",90007:"6b7f4848",90016:"72e24453",90076:"c5495231",90111:"073713d1",90451:"e7db057b",90500:"cc135780",90558:"a12f1ef9",90560:"5426ac11",90683:"205a84c5",90794:"b5efef1d",91168:"43472ecd",91186:"0f29dfed",91374:"c2be96f9",91552:"b3022338",91637:"a3f9e536",91705:"524c9166",91773:"5ea48c4c",91910:"d879ea04",92133:"bebb13e1",92634:"f753119a",92648:"fca34444",92755:"9d36e504",92827:"6255187c",92948:"e18c3bcf",93068:"56bdb9b2",93089:"a6aa9e1f",93101:"5e018954",93233:"998a3ebe",93412:"c6b7e14c",93575:"758e75ea",94218:"216be533",94322:"bc969ae1",94349:"09a69b27",94573:"a3679423",94610:"dc62dd6c",94831:"4b75119c",95067:"5de57f5f",95160:"7867a357",95697:"c4fd3761",95896:"adc044c3",95997:"8977ff65",96218:"a9808524",96756:"d0b3828a",96857:"5f87d652",96978:"55e11cea",97595:"960d9980",97693:"b423c391",97847:"f7d07906",97901:"60e9e07a",97920:"1a4e3797",97963:"22885a83",98216:"15d749b5",98418:"28411ba4",98470:"0f69f12f",98626:"aecbce6d",98934:"94400f11",99295:"fc5ff77a",99589:"82f88919",99771:"82a6115e",99914:"b37711b1"}[e]||e)+"."+{160:"e533ee10",640:"c81080c8",740:"94d32ba3",892:"d16298b3",977:"b10f3bbd",1081:"6a3d606c",1140:"8fbf1534",1177:"0a96bce7",1589:"91bc0211",1685:"5c4acae9",1829:"c2a3bc49",1958:"6ef0ff1b",2101:"cd1652ae",2110:"39087cba",2232:"0751d7cf",2365:"03b4abe8",2507:"49cb3ffb",2890:"033f78dc",2920:"88e36e38",3112:"e12249c9",3132:"3bc96b60",3359:"05193f5b",3473:"1483dcde",3476:"3663c87c",3812:"129d4adc",3818:"1e194174",3976:"6f17c1d9",4213:"cbac586b",4310:"b6f44ca1",4474:"861bf7cc",4804:"5862df9e",4825:"6782230c",4972:"4be77f28",4993:"6a32d5ed",5099:"d7f1bc49",5484:"0109d8e5",5547:"398989b7",5670:"f6c19870",5815:"022edcbe",6136:"664c7e4c",6170:"12f37f19",6249:"0505e3e4",6286:"d9022d38",6293:"ca90da62",6367:"95df718a",6536:"094f54d0",6554:"bb37d5de",6792:"29a6a6e6",6895:"58479da4",6905:"ff2b1783",6952:"ae73f63f",7033:"41df9c69",7127:"ae80802d",7330:"8c1ab85e",7332:"dc30397f",7340:"76b30ec6",7463:"1557d634",7483:"0ea06136",7567:"f2665b4b",7694:"4e9066f1",7800:"43a3e597",7854:"617d91ce",7911:"126b8c9b",7931:"02ecab0a",8012:"5bd15ab7",8097:"22181fd6",8393:"485d8253",8507:"1a4e4112",8697:"abf2e679",8765:"18776018",8773:"3702f567",9084:"673dcf96",9260:"581208ca",9562:"e0029528",9966:"53c607d0",9985:"4e11283a",10099:"9b64a43b",10309:"293ea1b6",10511:"450f5078",10660:"096678fd",10887:"2b5efd50",10924:"f6230b56",10996:"d00a04bd",11080:"2b32f549",11168:"b383abea",11198:"5abc13a3",11258:"c0aa0b8d",11293:"66bde9d3",11421:"fe0c6970",11439:"9c16cf29",11483:"71978b2c",11509:"0e9b0a28",11702:"6cd9c703",11792:"ea43278f",11922:"4ec14bd4",11953:"a6813036",11990:"5df699bd",11991:"a5aa5627",12229:"f786dce5",12306:"60d9d191",12573:"8a70da3b",12620:"7486974b",13812:"1dc7ee29",13834:"acf298b8",14074:"cb5c9ccc",14419:"2846d483",14753:"f2590de4",14817:"e02a0215",14987:"d2055b8d",15015:"08976991",15288:"6072e0a9",15395:"fe7e016f",15543:"2f32f11a",15847:"1f37a694",15853:"936bda2f",16054:"ffb6d723",16057:"4a565cde",16199:"96b68c1c",16362:"11d46b3d",16549:"45bb894d",16699:"220bbaf0",16785:"27bfaff9",16819:"eb1d715e",17191:"b5294426",17238:"77024627",17388:"b6836a19",17753:"73406bae",17773:"52957923",18047:"3e24d797",18073:"2a60310e",18141:"5d6f838a",18230:"d3b45fd1",18894:"d7313338",18902:"e6a32210",18918:"5a8a7e88",18967:"cd937fbf",19014:"bb29b0b4",19487:"378cff79",19624:"f6f551fa",19692:"548a7562",19835:"b58f9d61",19873:"d59aac15",20168:"095cb275",20396:"016c4778",20512:"c1f23466",20516:"576c3bf7",20593:"2bd2a0ea",20854:"f627559f",20868:"d32d118f",21085:"fa134b25",21151:"7ef7172c",21271:"609592e4",21356:"8fc3d93e",21481:"df2ac216",21599:"9596794f",21665:"2b110678",21682:"09e56930",22004:"8a0a8205",22226:"e467e421",22235:"871d0df8",22409:"adc0d859",22537:"bd4c7b6d",22605:"fc4a5b37",22623:"6c63c0c1",22740:"3edd9d2e",22761:"d73f7a63",22839:"dad5b96a",23024:"327eac94",23046:"b52de81b",23067:"cf315ad5",23395:"f8451f1f",23698:"e52e81fa",23872:"bc956726",23913:"2a68ab4b",24067:"538ea32f",24219:"8f75b6d8",24319:"1f6b472a",24742:"584f3cb6",24770:"e2311c07",24869:"fb2bf1aa",24883:"693085c2",25035:"f81aba89",25048:"83e31772",25294:"1352385f",25315:"6b1b047c",25800:"1c237783",25903:"d49a76ba",25920:"0d59e49f",26090:"86b88ed6",26313:"0f91d71a",26430:"dba6e0b2",26723:"dd43d72c",26920:"ac33bdbd",27364:"bde78aad",27800:"6b7727a4",27918:"3f116c42",28206:"51bea700",28262:"2c8f93ec",28283:"612e8b0d",28698:"1247439c",29278:"79cb3cc8",29354:"51834ebe",29514:"efc67b9d",29655:"94023080",29730:"f2d2be2c",30117:"81886325",30135:"b1c0d25d",30583:"85b007ea",30620:"5f737315",30636:"98c9e464",30674:"5accd556",30697:"2c566a35",31109:"aabee8a8",31114:"6dd245df",31158:"5eeff9f4",31262:"4318f0b1",31326:"2ef76733",31350:"fb2ca18c",31466:"e0bb6215",31552:"78918a78",31800:"7bfbb1b9",31883:"e09d1d11",32107:"1ed69aa9",32661:"3c566504",32672:"522edaa2",32674:"44910d30",32681:"5babaac5",32737:"ae12bb2e",33089:"63f24316",33122:"6da79ae7",33133:"c55c4a16",33340:"7ba1576d",33582:"94ace1ba",33731:"233e0c65",33806:"9adeb9d3",33841:"7d52d73a",33926:"9dd443db",33947:"ec9fbecc",34490:"9fd87839",34737:"1e15a362",35005:"4d84ce5b",35097:"9580dd98",35304:"9acc8476",35477:"87f85792",35506:"aa41a2d8",35755:"5a22ebeb",35776:"3ebf567c",35840:"35bf32cb",35922:"27ceeb9e",36048:"22dedefd",36249:"2784c12a",36425:"72d14c28",36600:"da9761bc",36918:"12c3d3e9",37120:"e17003f0",37209:"cfd13adc",37274:"1d6cc7eb",37388:"dab7f9b0",37737:"d70a9c90",37874:"c0939751",38276:"b8ee3206",38574:"a006e624",38887:"b4dec6ef",39210:"381b9799",39527:"40975dd7",39626:"405bebb7",39799:"57f91a07",39856:"6d4d3ccd",40054:"946bfb23",40195:"72e5304e",40280:"677aee72",40332:"a22f0e6a",40381:"163216d0",40556:"412a3a2c",40597:"f9b8a11c",40707:"be27c051",40804:"a32dc491",40984:"fec98963",41170:"78b96e6e",41191:"5c4394b8",41386:"377bbb2c",41661:"3bb8f8a8",42117:"eb96b581",42161:"abb6d5a9",42251:"000a9876",42412:"4b7597ef",42531:"742b51b2",42958:"ea385372",43086:"5c60d7f5",43164:"931b3c56",43521:"2aa09767",43905:"24fcaf6a",43996:"ba6b3935",44369:"b05c9731",44556:"e285bba1",44911:"f402ce15",44953:"b36278c1",44988:"3f5a38a1",44996:"20f9cf57",45112:"0ac83bbe",45119:"c64544fe",45190:"caef7ffb",45452:"47c667cd",45454:"5b234e24",45702:"01fc8a6b",45917:"cc6ad99e",45939:"d01b57b3",45977:"33b6415f",45980:"07d3de6b",46048:"991a2a40",46074:"4c806fc1",46103:"ffd73f5c",46461:"a687ebb2",46526:"56a7ce41",46541:"668a3222",46858:"5a940755",46945:"a8617603",46989:"cd44e71f",47036:"9e45ed8c",47077:"5b655e4d",47214:"e0ac5586",47724:"885efeb6",48104:"273d40a9",48610:"9abf5873",48690:"64529a67",48783:"d31a07d6",48947:"df248a28",49517:"8c91b347",49792:"8f28c14a",49808:"2ecf26cf",49927:"4be1f0cf",50044:"769f88dd",50098:"32a09af8",50103:"524b7d82",50258:"1eb06564",50339:"f487f1d3",50403:"26a06513",50758:"f5db74e1",50988:"555b72a7",51149:"0b0f72a9",51161:"1442244a",51652:"840d8253",51737:"34548704",51904:"c9b6e7cc",51917:"d06119f7",52475:"e1064b59",52535:"a34b40e3",52610:"cb569fda",52739:"4fead3e5",52765:"3dc50ad1",52943:"10d92ba6",53202:"76f83efe",53244:"553c24b6",53608:"58cce4c5",53787:"d575eaee",53869:"64f13080",53962:"feca1254",54246:"8c770461",55191:"a4f57ce8",55221:"2a2675a7",55494:"0b6900f1",55606:"ea05b2d2",55797:"f86013e8",55810:"62238568",55851:"fe4f0117",55870:"f90b3e38",56112:"1fafed05",56123:"e9951668",56147:"9fd1f127",56265:"e896333d",56295:"5dda1f96",56852:"71541458",57019:"b1bd1ccd",57463:"911dfff2",57493:"2e4aa2d0",57737:"0fde17e2",58193:"609cb23f",58194:"77908c55",58281:"cc234380",58290:"2005e8d5",58530:"435e1494",58614:"1308f65c",59060:"2e3c3d71",59092:"4fc272f9",59139:"56b50ffe",59334:"bc97b4af",60330:"f400640c",60379:"8b7530e9",60507:"9d220312",60595:"864daa5b",60712:"42f4f989",60731:"ccac09ad",60771:"f4aecb26",60992:"305d3dd2",61426:"b005faab",61484:"4f2a13b0",61877:"e5cd3239",61887:"f86c2191",62126:"f982cf21",62127:"00fa0e8f",62405:"6dcf3aea",62650:"8609d459",63253:"d73c1266",63369:"f5505453",63792:"ab192271",63812:"50a4d1f6",63870:"5141ec28",63952:"c9fdd1a8",64013:"599e8d04",64022:"e01324b8",64098:"e7b333e4",64195:"9df9af76",64310:"fc5a1213",64477:"8b9dc15a",64693:"96e12fab",64709:"934a7f65",64880:"a6f281c6",64887:"574f9d35",64947:"af53ee1c",65017:"7f122187",65146:"252a0e1f",65341:"e37aff02",65442:"de0ec1f5",65675:"13f5ef74",65826:"a9936178",66070:"9b1642a8",66385:"a981a7d1",66526:"c970da8b",66608:"34ab5ebd",66618:"ab9a7fd8",66744:"47b5f185",66863:"1f9bfd2b",67086:"9741a963",67174:"577afbd3",67533:"1f5d3f59",67544:"ef1462e3",67560:"cb5a0241",68021:"757909a0",68175:"c47a670d",68271:"b6fb9f60",68532:"642b03f1",68618:"663c7021",68856:"44a5f897",69104:"d30c2e6c",69483:"36864396",69501:"b39b2ebc",69962:"28cf9fed",69989:"60786e70",70486:"215eac65",70839:"2497529c",70970:"d2d045e4",71061:"6793bdd2",71381:"24ac44a0",71467:"e7781a9c",72054:"62df392b",72099:"6a79bec4",72514:"570610e9",72543:"083b6723",72937:"cc6d17bf",72978:"45c1df1d",73011:"60d26744",73032:"125def13",73446:"08673ad2",73623:"e9c66f34",74002:"9f1a321c",74083:"6f1448d7",74198:"ba434f64",74300:"a87045bd",74888:"c9324c85",74999:"b2a23b51",75878:"e453203c",75935:"0689f776",76227:"49d8b4d8",76307:"03d7338e",76575:"afe9bd12",76660:"b7e1f9c6",76786:"7da2cba0",76791:"767633a6",76874:"fb43034d",76967:"416f526e",77055:"85399713",77077:"c3de5036",77078:"31ea1561",77169:"ccaa30f8",77217:"4cd58913",77645:"0d9ea538",78046:"a1d358db",78082:"29e8f8a0",78314:"b587c628",78436:"8e3674c0",78489:"4a8421b3",78588:"2032abf6",78659:"2ee0fdfc",78722:"da67828f",78823:"97f1cf25",78870:"f06041ef",78914:"4c30643a",78941:"f727f82b",79134:"2cb1d474",79495:"3b8a9a4f",79559:"880e3350",79597:"211fa9d7",80053:"2e2fe155",80163:"db49879c",80448:"ca4b7ed5",80801:"f1fc37b9",80806:"fd8f5561",80944:"cfb396fd",81128:"87ad96ce",81155:"171b535f",81375:"c3a458b6",81475:"20ed5745",81487:"2ea83240",81511:"4133a04e",81639:"9f38c6e0",81649:"5a50233e",81938:"a08c8f4b",81995:"34d8b474",82276:"e7728e20",82306:"5c75fdb0",82461:"a5cc92d8",82818:"e3600a48",82863:"868548c5",83006:"c22d78a8",83054:"0743cd33",83105:"aac25f4e",83278:"120657f5",83373:"fd6a6cad",83538:"867e84d8",83628:"8326ae1d",83834:"573e5b32",83897:"5b44733d",83917:"109ff60f",83988:"0de004a3",84678:"baf47767",84726:"5265af3c",84728:"d8c81156",84761:"74ca9cdb",84784:"554a89b1",84935:"8ffc6389",85040:"689bd90b",85367:"9b6607db",85584:"336c3429",85586:"54eaa449",85634:"f63fb5e0",85744:"09ea8cc4",85830:"69f08827",85960:"4dfa6309",86122:"4d82f592",86565:"caa96bf6",86575:"c458acb9",86586:"3aab6cfb",86621:"25af48d8",86719:"a0e3cebc",86869:"7fef65c5",86904:"74f59501",86931:"a37d54bc",86984:"857ceb2f",87070:"503eb93d",87494:"261dd711",87557:"8209bda3",87644:"f8c57f03",87746:"bfef0ac7",88180:"a0e38f90",88257:"5b5c2cfc",88322:"507c787e",88652:"e1cd9bdf",88795:"67c8dce4",89007:"25311230",89364:"cf9534a8",89427:"31fa1dab",89501:"ce97e557",89903:"a40feb08",90007:"9a01e996",90016:"4a7c51eb",90076:"a9a9f3c8",90111:"fb2bda3a",90451:"ca7192e4",90500:"c763dd26",90558:"2fd856a3",90560:"0c79e5f0",90683:"a48a4272",90794:"9cde58dc",91168:"35eef097",91186:"3bd78110",91374:"425a462c",91552:"b6ceb4bc",91637:"1a09794d",91705:"55ed004d",91773:"ae95cf94",91910:"af5c7bed",92133:"ef662b33",92634:"2ffccdd6",92648:"656a5b10",92755:"e86661dd",92827:"e340bd5c",92948:"580fdeaf",93068:"f370b464",93089:"65e2c549",93101:"867f0dd2",93233:"8b6fee2f",93412:"058cd3f9",93575:"83ca1962",94218:"091973f0",94322:"d6bf38cc",94349:"78432719",94573:"b153f8eb",94610:"ffef44be",94831:"bce2bade",95067:"594e0ea2",95160:"3b5c1b6b",95697:"4b72aa48",95896:"8cdd1008",95997:"73e271e4",96218:"4b11f416",96316:"e60530d6",96756:"d0c26f34",96857:"1476636d",96978:"d91c5fe0",97595:"c074fc03",97693:"65085de9",97847:"3314a1f9",97901:"e5380d6f",97920:"d35141b1",97963:"0ecdb609",98216:"8453ed92",98418:"ad7b6f65",98470:"8c256b7d",98626:"c8e896a9",98934:"f8d630ea",99295:"cba276a9",99589:"9436054f",99771:"cb3f3f12",99914:"cba522c2"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},f="@openfn/docs:",r.l=(e,a,c,b)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var f=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/fr/",r.gca=function(e){return e={17896441:"27918",49959913:"70839",52244165:"21682",61428574:"72543",84810683:"40804",90377122:"87494",96781795:"89364",99259033:"22537","6f69b847":"160",c85c4b26:"640",fa811662:"740","1155c2d6":"892",b973dcfd:"977",e6951222:"1081","2bb14bf0":"1140",ceb3f8e5:"1177","3e1cef53":"1589","2f06f2be":"1685","68c257f8":"1829","6479f562":"1958","0bd872d0":"2101",bd16d6fd:"2110",c64ebc62:"2232",f38541c0:"2365",bbcf6861:"2507","6915d488":"2890",a1c489ab:"2920","97bb0f58":"3112","9915a91d":"3132","07518487":"3359",b8f959a4:"3476","9d4548fb":"3812",a22153eb:"3818","87f47d74":"3976","12ebab0f":"4213","6bb2318b":"4310",f615a51d:"4474","60a00565":"4804","2d52fc42":"4825","81c93763":"4993",f30a3d1e:"5099","4cd34504":"5484",da184dc1:"5547",fcdeb347:"5670","24c88117":"5815","9da9a498":"6136",d86d7a0b:"6170","0564f87a":"6249",e19908fc:"6286",d1ebcfaa:"6293","6de65b44":"6367",f2ca2c55:"6536","8c7d7bb0":"6554","13614daa":"6792",dd13b434:"6895","13a70009":"6905",c70366f5:"6952","9785ccb8":"7033",cfc8229c:"7127",d9cb599e:"7330","1a848321":"7332",ba5363a7:"7340","21b56577":"7463",a6a264d3:"7483",f77d5673:"7567",aa1b4e53:"7694",d58f2f6c:"7800","64427c87":"7854","54e91ab5":"7911",cd9a6ef5:"7931",c0f0637e:"8012","20501ae4":"8097","01cf17ec":"8393",ca6559fd:"8507",cb759659:"8697","4aaa0f44":"8765",da6f85e6:"8773","0a6f29e5":"9084",e150ab3e:"9260","45b0764f":"9562","60ab92b2":"9966","237f254e":"9985",f5f1347d:"10099","60f1bcf9":"10309","758bc66d":"10511","437618c4":"10660",ee49404e:"10887","5e450bcf":"10924",caaf01d4:"10996","11e6d144":"11168","469347db":"11198",d40361ad:"11258","6b2906f5":"11293","02034504":"11421","33e1509d":"11439","5b5d0fd6":"11483",d5b44e8d:"11509",ced1473c:"11702","6bc82b6b":"11792",aa668fb3:"11922","1e9ef283":"11953","30ddeb5e":"11990",be916a41:"11991","964386c1":"12229","3d5c28b0":"12306","5dfb628f":"12573","274548c6":"12620","207ee67a":"13812",c4643d70:"13834",bd6858b9:"14074","8c2c25e6":"14419",ce5aebf3:"14753","6aa8733e":"14817",c85e5855:"14987","2158648d":"15015","0452e1bb":"15288","7efa2c08":"15395","8112a505":"15543",f6525c87:"15847","39f62c92":"15853","2de9ac7c":"16054",b083e7a6:"16057","0dcca2b1":"16199","4ad982c0":"16362","9150c915":"16549","4aabe620":"16699",a7ce3f25:"16785","9ee43f4e":"16819","89f741ca":"17191","45b3f811":"17238","97feb4e9":"17388","6680323d":"17753","285ad496":"17773","9997aecf":"18047","92009f0a":"18073",febd0338:"18141",bc5d0bda:"18230","0e04b402":"18902","24a5cb68":"18918","7a801707":"18967","50711b5c":"19014","8f8e3a33":"19624",ea07b8e0:"19692",e202e776:"19835","14ee1fe9":"19873","01a3d143":"20168","7ee80f24":"20396","5f265cf4":"20512","2f0d9976":"20516",cfe04674:"20593",db30e504:"20854","3d8bf3ab":"20868","121b2142":"21085","14ad7d65":"21151","8310c4f6":"21271","0d1eeea0":"21356","919ee986":"21481",b578d62e:"21599",e56b7427:"21665",f5466782:"22226","3947b16e":"22235","5e1dea11":"22409","55bb925b":"22605",ecfe8209:"22623",e436cfad:"22740","9e9afbd3":"22761",bbd7a71c:"22839","665c23b8":"23024","192eff61":"23046","57fbf2bd":"23067","2a076a79":"23395","2f236184":"23698",b5bd7f9b:"23872","3874af3e":"23913","8660c4b6":"24067","5e95c167":"24219",facd2017:"24319","833f2ec0":"24742","88e27e42":"24770","90d535c2":"24869","9eb4e0db":"24883","1af9c7d3":"25035",a20e070a:"25048","73578edf":"25294",e310b146:"25315","95001b22":"25800","2c828998":"25903",cce9ad1c:"25920",d9a6c9f9:"26090","431913e7":"26313","1edc3b38":"26430","60194cf2":"26723",d98b9f83:"26920","305c1785":"27364",b1ecb9ed:"27800","052feb78":"28206",f810cb63:"28262",d776f897:"28283",c77a0576:"28698",d293d3db:"29278",c2d56c21:"29354","1be78505":"29514","8404d93f":"29655",e7761a76:"29730","385718d4":"30117",e87dea31:"30135",f22b5bc0:"30583","77deca26":"30620","747a690f":"30636","1140a058":"30674","27eb0108":"30697",dff30c03:"31109",f13d29f3:"31114",f2b4d23e:"31158","2dcd28d2":"31262","7a35092c":"31326","5fb0ec3e":"31350","4aa43dae":"31552",c1dc13d0:"31800","3c41cfdf":"31883","916b8fda":"32107",e1d93203:"32661","85f847a7":"32672","6cb21577":"32674","7ced0572":"32681",afbc2852:"32737","20a5a532":"33089","9455630c":"33122",e7f68c37:"33133",a67fd46a:"33340","93857d8b":"33582","20f8de15":"33731","57bdafe0":"33806","1203bdae":"33841",c4429c79:"33926",c6dfd94e:"33947","33844ff3":"34490","31b72ec5":"34737",adadeee4:"35005",def6dfb9:"35097","1e26ddab":"35304",c0908e63:"35477","6738a51a":"35506",c275b7b1:"35755",b8df7263:"35776",c9df59dc:"35840","1eb40bba":"35922","24e295df":"36048","05b1a525":"36249","984b8319":"36425",fcde3356:"36600","92293c9c":"36918","669b0b95":"37120","4980c4fa":"37209","02371d76":"37274","5ac6f7de":"37388","2db499ae":"37737","8e97cc15":"37874","43cc1724":"38276","1b3816a8":"38574",e967512d:"38887","75270caf":"39210",afd0cb1b:"39527","8b77e1a5":"39626","330b8ea1":"39799",e0c8a1d6:"39856","9a8f9e52":"40054","1a7f2dde":"40195","07e96687":"40280",cd8c9fbc:"40332","050638ff":"40381","1ee9c635":"40556","2d68e16b":"40597","2a47a07e":"40707",e5a64766:"40984","3a0c736b":"41170",c3e27561:"41191",e4071e64:"41386","1280552c":"41661","710be885":"42117","1f7f4c7a":"42161","55ac83aa":"42251","8328e7f1":"42412","4f8f7d74":"42531","14a767b9":"42958",bb40a730:"43086","09eafa5c":"43164","8d1ec4c5":"43521","5653e10f":"43905","277d517a":"43996","0bc95200":"44369",a6a431f9:"44556","677d6777":"44911","78b226dc":"44953","4be7e5d0":"44988","33bf046c":"44996","31d20e13":"45112",c50fc9f4:"45119","1d970e9f":"45190","5bcd0da1":"45452",e5c6d3b2:"45454","1074bb26":"45702","17ca7de3":"45917",b1212599:"45939",acfb9a5e:"45977",ffecbc46:"45980",b198cec2:"46074",ccc49370:"46103","01d69a66":"46461","7f6bbd73":"46526",b8974487:"46541",e2c3bc5f:"46858",e802237a:"46989","377ce957":"47036","554f4bd3":"47077","326c0af7":"47214",c333ed9f:"48104","6875c492":"48610","5ffd6909":"48690","6f9d539f":"48783",a5ba2d12:"48947","6af54863":"49517",b0074edd:"49792",d0ac1c30:"49808",eec5a710:"49927",e4d06512:"50044","3834c837":"50098","65e8e75e":"50103","5575e2a8":"50258",cb128a98:"50339",de387681:"50403","853ddb5d":"50758","186b492d":"50988",cd910537:"51149","2127c55a":"51161","708cde07":"51652",c092a89c:"51737",c260b9a0:"51904","3f2ad086":"51917",d5d95cda:"52475","814f3328":"52535","1d48afb9":"52610","734563d5":"52739","933a49e7":"52765",a9bffa51:"52943","68987ad2":"53202","869c9c27":"53244","9e4087bc":"53608",bc4d6fc9:"53787","72274bd6":"53869","3a574a7f":"53962",c942fcda:"54246",bb8cf488:"55191",cbf34b30:"55221","38eccbde":"55494",b1be30d1:"55606",e4608243:"55797","47f9b594":"55810",cd7342f7:"55851",c302b7f6:"55870","99e8c7ac":"56112","4ef508e9":"56123","92e661e4":"56147",b5e7b216:"56265",e6ec1ffb:"56295","30995fb4":"56852","479e2d15":"57019",f2f7c8b6:"57463","4a77a641":"57493","92f50a66":"57737",aacecf0a:"58193",afa4ac88:"58194",db403cff:"58281",cc8c6322:"58290",e1450e8f:"58530","0d596054":"58614","91b303c9":"59060","9c62a4d6":"59092","5153790b":"59139","247783bb":"59334","13a2a5ae":"60330","271f7228":"60379","6a1cd61c":"60507",a9d6ad8a:"60595","699a47d0":"60712","37a36148":"60731","22ef07eb":"60771","352bf367":"60992","20a7d97c":"61484","7849f6b2":"61877",f9ed4079:"61887",c3a5a911:"62126","1b24f020":"62127",a8faecbd:"62405","0f427d40":"62650",a69ebe5f:"63253","579e663e":"63369",bd83a8c8:"63792","45a8dc52":"63812","0b31129f":"63870",d493c3e8:"63952","01a85c17":"64013","0bddafbe":"64022",b46405e2:"64098",c4f5d8e4:"64195","61fbda8a":"64310","3cf47477":"64477","1e5c0d86":"64693",f3954950:"64709","6a3a4a87":"64880",a8c84974:"64887","460d220e":"64947",f9aec362:"65017","069211c5":"65146","0a451647":"65341","444d5ed4":"65442","54b8d70a":"65675","203262b0":"65826","25057d02":"66070","59b068d1":"66385",e6102057:"66526",b82c8496:"66608","802db911":"66618","821478b8":"66744","1cd349ba":"66863","32507d04":"67086",e508954a:"67174","5c709812":"67533",aea1a378:"67544","36a143db":"67560","64a35041":"68021",c831614b:"68175","1c091541":"68271",ad282cb1:"68532","5f16d91a":"68618","7de666e0":"68856",acd02317:"69104","5c8f7670":"69483",cb189ef9:"69501","8e10bb86":"69962","32a4d0bf":"69989","6d30ac0a":"70486","77e868d9":"70970",c968f1a3:"71061","56ece2ab":"71381","57a1d77e":"71467",f64a2f66:"72054",eae3fa10:"72099","6c5c20d6":"72514","193bf152":"72937","56b2a431":"72978","1e19f58c":"73011","13c3e084":"73032","450c527f":"73446",d2e8caaf:"73623","9bb632fa":"74002","68cedfd5":"74083",b3198ac5:"74198","419e73d5":"74300","1a43e018":"74888","6a84c208":"74999",c08d79e7:"75878","8dfa1c2e":"75935","37c44782":"76227","6030f184":"76307","6d0c6131":"76575",c76eb7d5:"76660","8e37cc44":"76786","06b1e92d":"76791","771488fd":"76874",e2548c92:"76967",f5d5b73d:"77055","97d209f3":"77077","1ecd7e15":"77078",e4f4dec4:"77169",af1b4014:"77217",a7434565:"77645","2fd22369":"78046",fcfb247d:"78082","10915d97":"78314",c541efc4:"78436",c98ac358:"78489","0a1bb744":"78588","890759ea":"78659",a484f848:"78722",c0daf1e6:"78823","03b60f31":"78870","1a98f2d5":"78914","88b398be":"78941","62b71d38":"79495","7356945f":"79559",b68d77f3:"79597","935f2afb":"80053","28304c62":"80163",d1e2a1e4:"80448",d5694d2b:"80801","9e4491bb":"80806",ead2dbe0:"80944",c38cc3bf:"81128","5f6910fd":"81155",cf23ded0:"81375","1ddde2c7":"81475","70b40441":"81487","208114e0":"81511","0691b308":"81639","92bdb8f4":"81649","6310fd48":"81938","174d08bc":"81995","46bd2088":"82276","9f0de854":"82306",dfd4abb8:"82461","5f1113d5":"82818",eb4eb408:"82863","87d0342b":"83006",b85e9339:"83054","286b008a":"83105","09b23959":"83278","11508eb1":"83373","6a3d0153":"83538",df123296:"83628","07987921":"83834","500fb0e6":"83897","24c7144e":"83917",e0ecd9df:"83988","7c750c8d":"84678","08e43170":"84726","903c4f6f":"84728",ab0b43f0:"84761",f7f75c2e:"84784",bab68f7e:"84935",f5ff4ddf:"85040","2233b4a8":"85367","585fad0f":"85584","5f0cc255":"85586",a6748c3f:"85634",c4816122:"85744",f5d8a8a8:"85830",cc826739:"85960",e958b715:"86122","4224ef00":"86565","54496a4b":"86575","7a719824":"86586","519cbeed":"86621","4256eaf4":"86719","713bf807":"86869",fec351f2:"86904","93dfdea3":"86931","2bf9c0b5":"86984","3bc428dc":"87070","4cbb880b":"87557","81e594d4":"87644","6fa39f86":"87746",eec2ee36:"88180","9daf6a80":"88257",eabea829:"88322","39e9cb37":"88652","27e17dc0":"88795",e4a50065:"89007",cf910a2e:"89427",f48233a1:"89501",ffc1986f:"89903","6b7f4848":"90007","72e24453":"90016",c5495231:"90076","073713d1":"90111",e7db057b:"90451",cc135780:"90500",a12f1ef9:"90558","5426ac11":"90560","205a84c5":"90683",b5efef1d:"90794","43472ecd":"91168","0f29dfed":"91186",c2be96f9:"91374",b3022338:"91552",a3f9e536:"91637","524c9166":"91705","5ea48c4c":"91773",d879ea04:"91910",bebb13e1:"92133",f753119a:"92634",fca34444:"92648","9d36e504":"92755","6255187c":"92827",e18c3bcf:"92948","56bdb9b2":"93068",a6aa9e1f:"93089","5e018954":"93101","998a3ebe":"93233",c6b7e14c:"93412","758e75ea":"93575","216be533":"94218",bc969ae1:"94322","09a69b27":"94349",a3679423:"94573",dc62dd6c:"94610","4b75119c":"94831","5de57f5f":"95067","7867a357":"95160",c4fd3761:"95697",adc044c3:"95896","8977ff65":"95997",a9808524:"96218",d0b3828a:"96756","5f87d652":"96857","55e11cea":"96978","960d9980":"97595",b423c391:"97693",f7d07906:"97847","60e9e07a":"97901","1a4e3797":"97920","22885a83":"97963","15d749b5":"98216","28411ba4":"98418","0f69f12f":"98470",aecbce6d:"98626","94400f11":"98934",fc5ff77a:"99295","82f88919":"99589","82a6115e":"99771",b37711b1:"99914"}[e]||e,r.p+r.u(e)},(()=>{var e={51303:0,40532:0};r.f.j=(a,c)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)c.push(d[2]);else if(/^(40532|51303)$/.test(a))e[a]=0;else{var f=new Promise(((c,f)=>d=e[a]=[c,f]));c.push(d[2]=f);var b=r.p+r.u(a),t=new Error;r.l(b,(c=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var f=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+f+": "+b+")",t.name="ChunkLoadError",t.type=f,t.request=b,d[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var d,f,b=c[0],t=c[1],o=c[2],n=0;if(b.some((a=>0!==e[a]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(c);n{"use strict";var e,a,c,d,f,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=b,r.c=t,e=[],r.O=(a,c,d,f)=>{if(!c){var b=1/0;for(i=0;i=f)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[c,d,f]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var b={};a=a||[null,c({}),c([]),c(c)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(f,b),f},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({160:"6f69b847",640:"c85c4b26",740:"fa811662",892:"1155c2d6",977:"b973dcfd",1081:"e6951222",1140:"2bb14bf0",1177:"ceb3f8e5",1589:"3e1cef53",1685:"2f06f2be",1829:"68c257f8",1958:"6479f562",2101:"0bd872d0",2110:"bd16d6fd",2232:"c64ebc62",2365:"f38541c0",2507:"bbcf6861",2890:"6915d488",2920:"a1c489ab",3112:"97bb0f58",3132:"9915a91d",3359:"07518487",3476:"b8f959a4",3812:"9d4548fb",3818:"a22153eb",3976:"87f47d74",4213:"12ebab0f",4310:"6bb2318b",4474:"f615a51d",4804:"60a00565",4825:"2d52fc42",4993:"81c93763",5099:"f30a3d1e",5484:"4cd34504",5547:"da184dc1",5670:"fcdeb347",5815:"24c88117",6136:"9da9a498",6170:"d86d7a0b",6249:"0564f87a",6286:"e19908fc",6293:"d1ebcfaa",6367:"6de65b44",6536:"f2ca2c55",6554:"8c7d7bb0",6792:"13614daa",6895:"dd13b434",6905:"13a70009",6952:"c70366f5",7033:"9785ccb8",7127:"cfc8229c",7330:"d9cb599e",7332:"1a848321",7340:"ba5363a7",7463:"21b56577",7483:"a6a264d3",7567:"f77d5673",7694:"aa1b4e53",7800:"d58f2f6c",7854:"64427c87",7911:"54e91ab5",7931:"cd9a6ef5",8012:"c0f0637e",8097:"20501ae4",8393:"01cf17ec",8507:"ca6559fd",8697:"cb759659",8765:"4aaa0f44",8773:"da6f85e6",9084:"0a6f29e5",9260:"e150ab3e",9562:"45b0764f",9966:"60ab92b2",9985:"237f254e",10099:"f5f1347d",10309:"60f1bcf9",10511:"758bc66d",10660:"437618c4",10887:"ee49404e",10924:"5e450bcf",10996:"caaf01d4",11168:"11e6d144",11198:"469347db",11258:"d40361ad",11293:"6b2906f5",11421:"02034504",11439:"33e1509d",11483:"5b5d0fd6",11509:"d5b44e8d",11702:"ced1473c",11792:"6bc82b6b",11922:"aa668fb3",11953:"1e9ef283",11990:"30ddeb5e",11991:"be916a41",12229:"964386c1",12306:"3d5c28b0",12573:"5dfb628f",12620:"274548c6",13812:"207ee67a",13834:"c4643d70",14074:"bd6858b9",14419:"8c2c25e6",14753:"ce5aebf3",14817:"6aa8733e",14987:"c85e5855",15015:"2158648d",15288:"0452e1bb",15395:"7efa2c08",15543:"8112a505",15847:"f6525c87",15853:"39f62c92",16054:"2de9ac7c",16057:"b083e7a6",16199:"0dcca2b1",16362:"4ad982c0",16549:"9150c915",16699:"4aabe620",16785:"a7ce3f25",16819:"9ee43f4e",17191:"89f741ca",17238:"45b3f811",17388:"97feb4e9",17753:"6680323d",17773:"285ad496",18047:"9997aecf",18073:"92009f0a",18141:"febd0338",18230:"bc5d0bda",18902:"0e04b402",18918:"24a5cb68",18967:"7a801707",19014:"50711b5c",19624:"8f8e3a33",19692:"ea07b8e0",19835:"e202e776",19873:"14ee1fe9",20168:"01a3d143",20396:"7ee80f24",20512:"5f265cf4",20516:"2f0d9976",20593:"cfe04674",20854:"db30e504",20868:"3d8bf3ab",21085:"121b2142",21151:"14ad7d65",21271:"8310c4f6",21356:"0d1eeea0",21481:"919ee986",21599:"b578d62e",21665:"e56b7427",21682:"52244165",22226:"f5466782",22235:"3947b16e",22409:"5e1dea11",22537:"99259033",22605:"55bb925b",22623:"ecfe8209",22740:"e436cfad",22761:"9e9afbd3",22839:"bbd7a71c",23024:"665c23b8",23046:"192eff61",23067:"57fbf2bd",23395:"2a076a79",23698:"2f236184",23872:"b5bd7f9b",23913:"3874af3e",24067:"8660c4b6",24219:"5e95c167",24319:"facd2017",24742:"833f2ec0",24770:"88e27e42",24869:"90d535c2",24883:"9eb4e0db",25035:"1af9c7d3",25048:"a20e070a",25294:"73578edf",25315:"e310b146",25800:"95001b22",25903:"2c828998",25920:"cce9ad1c",26090:"d9a6c9f9",26313:"431913e7",26430:"1edc3b38",26723:"60194cf2",26920:"d98b9f83",27364:"305c1785",27800:"b1ecb9ed",27918:"17896441",28206:"052feb78",28262:"f810cb63",28283:"d776f897",28698:"c77a0576",29278:"d293d3db",29354:"c2d56c21",29514:"1be78505",29655:"8404d93f",29730:"e7761a76",30117:"385718d4",30135:"e87dea31",30583:"f22b5bc0",30620:"77deca26",30636:"747a690f",30674:"1140a058",30697:"27eb0108",31109:"dff30c03",31114:"f13d29f3",31158:"f2b4d23e",31262:"2dcd28d2",31326:"7a35092c",31350:"5fb0ec3e",31552:"4aa43dae",31800:"c1dc13d0",31883:"3c41cfdf",32107:"916b8fda",32661:"e1d93203",32672:"85f847a7",32674:"6cb21577",32681:"7ced0572",32737:"afbc2852",33089:"20a5a532",33122:"9455630c",33133:"e7f68c37",33340:"a67fd46a",33582:"93857d8b",33731:"20f8de15",33806:"57bdafe0",33841:"1203bdae",33926:"c4429c79",33947:"c6dfd94e",34490:"33844ff3",34737:"31b72ec5",35005:"adadeee4",35097:"def6dfb9",35304:"1e26ddab",35477:"c0908e63",35506:"6738a51a",35755:"c275b7b1",35776:"b8df7263",35840:"c9df59dc",35922:"1eb40bba",36048:"24e295df",36249:"05b1a525",36425:"984b8319",36600:"fcde3356",36918:"92293c9c",37120:"669b0b95",37209:"4980c4fa",37274:"02371d76",37388:"5ac6f7de",37737:"2db499ae",37874:"8e97cc15",38276:"43cc1724",38574:"1b3816a8",38887:"e967512d",39210:"75270caf",39527:"afd0cb1b",39626:"8b77e1a5",39799:"330b8ea1",39856:"e0c8a1d6",40054:"9a8f9e52",40195:"1a7f2dde",40280:"07e96687",40332:"cd8c9fbc",40381:"050638ff",40556:"1ee9c635",40597:"2d68e16b",40707:"2a47a07e",40804:"84810683",40984:"e5a64766",41170:"3a0c736b",41191:"c3e27561",41386:"e4071e64",41661:"1280552c",42117:"710be885",42161:"1f7f4c7a",42251:"55ac83aa",42412:"8328e7f1",42531:"4f8f7d74",42958:"14a767b9",43086:"bb40a730",43164:"09eafa5c",43521:"8d1ec4c5",43905:"5653e10f",43996:"277d517a",44369:"0bc95200",44556:"a6a431f9",44911:"677d6777",44953:"78b226dc",44988:"4be7e5d0",44996:"33bf046c",45112:"31d20e13",45119:"c50fc9f4",45190:"1d970e9f",45452:"5bcd0da1",45454:"e5c6d3b2",45702:"1074bb26",45917:"17ca7de3",45939:"b1212599",45977:"acfb9a5e",45980:"ffecbc46",46074:"b198cec2",46103:"ccc49370",46461:"01d69a66",46526:"7f6bbd73",46541:"b8974487",46858:"e2c3bc5f",46989:"e802237a",47036:"377ce957",47077:"554f4bd3",47214:"326c0af7",48104:"c333ed9f",48610:"6875c492",48690:"5ffd6909",48783:"6f9d539f",48947:"a5ba2d12",49517:"6af54863",49792:"b0074edd",49808:"d0ac1c30",49927:"eec5a710",50044:"e4d06512",50098:"3834c837",50103:"65e8e75e",50258:"5575e2a8",50339:"cb128a98",50403:"de387681",50758:"853ddb5d",50988:"186b492d",51149:"cd910537",51161:"2127c55a",51652:"708cde07",51737:"c092a89c",51904:"c260b9a0",51917:"3f2ad086",52475:"d5d95cda",52535:"814f3328",52610:"1d48afb9",52739:"734563d5",52765:"933a49e7",52943:"a9bffa51",53202:"68987ad2",53244:"869c9c27",53608:"9e4087bc",53787:"bc4d6fc9",53869:"72274bd6",53962:"3a574a7f",54246:"c942fcda",55191:"bb8cf488",55221:"cbf34b30",55494:"38eccbde",55606:"b1be30d1",55797:"e4608243",55810:"47f9b594",55851:"cd7342f7",55870:"c302b7f6",56112:"99e8c7ac",56123:"4ef508e9",56147:"92e661e4",56265:"b5e7b216",56295:"e6ec1ffb",56852:"30995fb4",57019:"479e2d15",57463:"f2f7c8b6",57493:"4a77a641",57737:"92f50a66",58193:"aacecf0a",58194:"afa4ac88",58281:"db403cff",58290:"cc8c6322",58530:"e1450e8f",58614:"0d596054",59060:"91b303c9",59092:"9c62a4d6",59139:"5153790b",59334:"247783bb",60330:"13a2a5ae",60379:"271f7228",60507:"6a1cd61c",60595:"a9d6ad8a",60712:"699a47d0",60731:"37a36148",60771:"22ef07eb",60992:"352bf367",61484:"20a7d97c",61877:"7849f6b2",61887:"f9ed4079",62126:"c3a5a911",62127:"1b24f020",62405:"a8faecbd",62650:"0f427d40",63253:"a69ebe5f",63369:"579e663e",63792:"bd83a8c8",63812:"45a8dc52",63870:"0b31129f",63952:"d493c3e8",64013:"01a85c17",64022:"0bddafbe",64098:"b46405e2",64195:"c4f5d8e4",64310:"61fbda8a",64477:"3cf47477",64693:"1e5c0d86",64709:"f3954950",64880:"6a3a4a87",64887:"a8c84974",64947:"460d220e",65017:"f9aec362",65146:"069211c5",65341:"0a451647",65442:"444d5ed4",65675:"54b8d70a",65826:"203262b0",66070:"25057d02",66385:"59b068d1",66526:"e6102057",66608:"b82c8496",66618:"802db911",66744:"821478b8",66863:"1cd349ba",67086:"32507d04",67174:"e508954a",67533:"5c709812",67544:"aea1a378",67560:"36a143db",68021:"64a35041",68175:"c831614b",68271:"1c091541",68532:"ad282cb1",68618:"5f16d91a",68856:"7de666e0",69104:"acd02317",69483:"5c8f7670",69501:"cb189ef9",69962:"8e10bb86",69989:"32a4d0bf",70486:"6d30ac0a",70839:"49959913",70970:"77e868d9",71061:"c968f1a3",71381:"56ece2ab",71467:"57a1d77e",72054:"f64a2f66",72099:"eae3fa10",72514:"6c5c20d6",72543:"61428574",72937:"193bf152",72978:"56b2a431",73011:"1e19f58c",73032:"13c3e084",73446:"450c527f",73623:"d2e8caaf",74002:"9bb632fa",74083:"68cedfd5",74198:"b3198ac5",74300:"419e73d5",74888:"1a43e018",74999:"6a84c208",75878:"c08d79e7",75935:"8dfa1c2e",76227:"37c44782",76307:"6030f184",76575:"6d0c6131",76660:"c76eb7d5",76786:"8e37cc44",76791:"06b1e92d",76874:"771488fd",76967:"e2548c92",77055:"f5d5b73d",77077:"97d209f3",77078:"1ecd7e15",77169:"e4f4dec4",77217:"af1b4014",77645:"a7434565",78046:"2fd22369",78082:"fcfb247d",78314:"10915d97",78436:"c541efc4",78489:"c98ac358",78588:"0a1bb744",78659:"890759ea",78722:"a484f848",78823:"c0daf1e6",78870:"03b60f31",78914:"1a98f2d5",78941:"88b398be",79495:"62b71d38",79559:"7356945f",79597:"b68d77f3",80053:"935f2afb",80163:"28304c62",80448:"d1e2a1e4",80801:"d5694d2b",80806:"9e4491bb",80944:"ead2dbe0",81128:"c38cc3bf",81155:"5f6910fd",81375:"cf23ded0",81475:"1ddde2c7",81487:"70b40441",81511:"208114e0",81639:"0691b308",81649:"92bdb8f4",81938:"6310fd48",81995:"174d08bc",82276:"46bd2088",82306:"9f0de854",82461:"dfd4abb8",82818:"5f1113d5",82863:"eb4eb408",83006:"87d0342b",83054:"b85e9339",83105:"286b008a",83278:"09b23959",83373:"11508eb1",83538:"6a3d0153",83628:"df123296",83834:"07987921",83897:"500fb0e6",83917:"24c7144e",83988:"e0ecd9df",84678:"7c750c8d",84726:"08e43170",84728:"903c4f6f",84761:"ab0b43f0",84784:"f7f75c2e",84935:"bab68f7e",85040:"f5ff4ddf",85367:"2233b4a8",85584:"585fad0f",85586:"5f0cc255",85634:"a6748c3f",85744:"c4816122",85830:"f5d8a8a8",85960:"cc826739",86122:"e958b715",86565:"4224ef00",86575:"54496a4b",86586:"7a719824",86621:"519cbeed",86719:"4256eaf4",86869:"713bf807",86904:"fec351f2",86931:"93dfdea3",86984:"2bf9c0b5",87070:"3bc428dc",87494:"90377122",87557:"4cbb880b",87644:"81e594d4",87746:"6fa39f86",88180:"eec2ee36",88257:"9daf6a80",88322:"eabea829",88652:"39e9cb37",88795:"27e17dc0",89007:"e4a50065",89364:"96781795",89427:"cf910a2e",89501:"f48233a1",89903:"ffc1986f",90007:"6b7f4848",90016:"72e24453",90076:"c5495231",90111:"073713d1",90451:"e7db057b",90500:"cc135780",90558:"a12f1ef9",90560:"5426ac11",90683:"205a84c5",90794:"b5efef1d",91168:"43472ecd",91186:"0f29dfed",91374:"c2be96f9",91552:"b3022338",91637:"a3f9e536",91705:"524c9166",91773:"5ea48c4c",91910:"d879ea04",92133:"bebb13e1",92634:"f753119a",92648:"fca34444",92755:"9d36e504",92827:"6255187c",92948:"e18c3bcf",93068:"56bdb9b2",93089:"a6aa9e1f",93101:"5e018954",93233:"998a3ebe",93412:"c6b7e14c",93575:"758e75ea",94218:"216be533",94322:"bc969ae1",94349:"09a69b27",94573:"a3679423",94610:"dc62dd6c",94831:"4b75119c",95067:"5de57f5f",95160:"7867a357",95697:"c4fd3761",95896:"adc044c3",95997:"8977ff65",96218:"a9808524",96756:"d0b3828a",96857:"5f87d652",96978:"55e11cea",97595:"960d9980",97693:"b423c391",97847:"f7d07906",97901:"60e9e07a",97920:"1a4e3797",97963:"22885a83",98216:"15d749b5",98418:"28411ba4",98470:"0f69f12f",98626:"aecbce6d",98934:"94400f11",99295:"fc5ff77a",99589:"82f88919",99771:"82a6115e",99914:"b37711b1"}[e]||e)+"."+{160:"e533ee10",640:"c81080c8",740:"94d32ba3",892:"d16298b3",977:"b10f3bbd",1081:"6a3d606c",1140:"8fbf1534",1177:"0a96bce7",1589:"91bc0211",1685:"5c4acae9",1829:"c2a3bc49",1958:"6ef0ff1b",2101:"cd1652ae",2110:"39087cba",2232:"0751d7cf",2365:"03b4abe8",2507:"49cb3ffb",2890:"033f78dc",2920:"88e36e38",3112:"e12249c9",3132:"3bc96b60",3359:"05193f5b",3473:"1483dcde",3476:"3663c87c",3812:"129d4adc",3818:"1e194174",3976:"6f17c1d9",4213:"cbac586b",4310:"b6f44ca1",4474:"861bf7cc",4804:"5862df9e",4825:"6782230c",4972:"4be77f28",4993:"6a32d5ed",5099:"d7f1bc49",5484:"0109d8e5",5547:"398989b7",5670:"f6c19870",5815:"022edcbe",6136:"664c7e4c",6170:"12f37f19",6249:"0505e3e4",6286:"d9022d38",6293:"ca90da62",6367:"95df718a",6536:"094f54d0",6554:"bb37d5de",6792:"29a6a6e6",6895:"58479da4",6905:"ff2b1783",6952:"ae73f63f",7033:"41df9c69",7127:"ae80802d",7330:"8c1ab85e",7332:"dc30397f",7340:"76b30ec6",7463:"1557d634",7483:"0ea06136",7567:"f2665b4b",7694:"4e9066f1",7800:"43a3e597",7854:"617d91ce",7911:"126b8c9b",7931:"02ecab0a",8012:"5bd15ab7",8097:"22181fd6",8393:"485d8253",8507:"1a4e4112",8697:"abf2e679",8765:"18776018",8773:"3702f567",9084:"673dcf96",9260:"581208ca",9562:"e0029528",9966:"53c607d0",9985:"4e11283a",10099:"9b64a43b",10309:"293ea1b6",10511:"450f5078",10660:"096678fd",10887:"2b5efd50",10924:"f6230b56",10996:"d00a04bd",11080:"2b32f549",11168:"b383abea",11198:"5abc13a3",11258:"c0aa0b8d",11293:"66bde9d3",11421:"fe0c6970",11439:"9c16cf29",11483:"71978b2c",11509:"0e9b0a28",11702:"6cd9c703",11792:"ea43278f",11922:"4ec14bd4",11953:"a6813036",11990:"5df699bd",11991:"a5aa5627",12229:"f786dce5",12306:"60d9d191",12573:"8a70da3b",12620:"7486974b",13812:"1dc7ee29",13834:"acf298b8",14074:"cb5c9ccc",14419:"2846d483",14753:"f2590de4",14817:"e02a0215",14987:"d2055b8d",15015:"08976991",15288:"6072e0a9",15395:"fe7e016f",15543:"2f32f11a",15847:"1f37a694",15853:"936bda2f",16054:"ffb6d723",16057:"4a565cde",16199:"96b68c1c",16362:"11d46b3d",16549:"45bb894d",16699:"220bbaf0",16785:"27bfaff9",16819:"eb1d715e",17191:"b5294426",17238:"77024627",17388:"b6836a19",17753:"73406bae",17773:"52957923",18047:"3e24d797",18073:"2a60310e",18141:"5d6f838a",18230:"d3b45fd1",18894:"d7313338",18902:"e6a32210",18918:"5a8a7e88",18967:"cd937fbf",19014:"bb29b0b4",19487:"378cff79",19624:"f6f551fa",19692:"548a7562",19835:"b58f9d61",19873:"d59aac15",20168:"095cb275",20396:"016c4778",20512:"c1f23466",20516:"576c3bf7",20593:"2bd2a0ea",20854:"f627559f",20868:"d32d118f",21085:"fa134b25",21151:"7ef7172c",21271:"609592e4",21356:"8fc3d93e",21481:"df2ac216",21599:"9596794f",21665:"2b110678",21682:"09e56930",22004:"8a0a8205",22226:"e467e421",22235:"871d0df8",22409:"adc0d859",22537:"bd4c7b6d",22605:"fc4a5b37",22623:"6c63c0c1",22740:"3edd9d2e",22761:"d73f7a63",22839:"dad5b96a",23024:"327eac94",23046:"b52de81b",23067:"cf315ad5",23395:"f8451f1f",23698:"e52e81fa",23872:"bc956726",23913:"2a68ab4b",24067:"538ea32f",24219:"8f75b6d8",24319:"1f6b472a",24742:"584f3cb6",24770:"e2311c07",24869:"fb2bf1aa",24883:"693085c2",25035:"f81aba89",25048:"83e31772",25294:"1352385f",25315:"6b1b047c",25800:"1c237783",25903:"d49a76ba",25920:"0d59e49f",26090:"b30ce16b",26313:"0f91d71a",26430:"dba6e0b2",26723:"dd43d72c",26920:"ac33bdbd",27364:"bde78aad",27800:"6b7727a4",27918:"3f116c42",28206:"51bea700",28262:"2c8f93ec",28283:"612e8b0d",28698:"1247439c",29278:"79cb3cc8",29354:"51834ebe",29514:"efc67b9d",29655:"94023080",29730:"f2d2be2c",30117:"81886325",30135:"b1c0d25d",30583:"85b007ea",30620:"5f737315",30636:"98c9e464",30674:"5accd556",30697:"2c566a35",31109:"aabee8a8",31114:"6dd245df",31158:"5eeff9f4",31262:"4318f0b1",31326:"2ef76733",31350:"fb2ca18c",31466:"e0bb6215",31552:"78918a78",31800:"7bfbb1b9",31883:"e09d1d11",32107:"1ed69aa9",32661:"3c566504",32672:"522edaa2",32674:"373bd554",32681:"5babaac5",32737:"ae12bb2e",33089:"63f24316",33122:"6da79ae7",33133:"c55c4a16",33340:"7ba1576d",33582:"94ace1ba",33731:"233e0c65",33806:"9adeb9d3",33841:"7d52d73a",33926:"9dd443db",33947:"ec9fbecc",34490:"9fd87839",34737:"1e15a362",35005:"4d84ce5b",35097:"9580dd98",35304:"9acc8476",35477:"87f85792",35506:"aa41a2d8",35755:"5a22ebeb",35776:"3ebf567c",35840:"35bf32cb",35922:"27ceeb9e",36048:"22dedefd",36249:"2784c12a",36425:"72d14c28",36600:"da9761bc",36918:"12c3d3e9",37120:"e17003f0",37209:"cfd13adc",37274:"1d6cc7eb",37388:"dab7f9b0",37737:"d70a9c90",37874:"c0939751",38276:"b8ee3206",38574:"a006e624",38887:"b4dec6ef",39210:"381b9799",39527:"40975dd7",39626:"405bebb7",39799:"57f91a07",39856:"6d4d3ccd",40054:"946bfb23",40195:"72e5304e",40280:"677aee72",40332:"a22f0e6a",40381:"163216d0",40556:"412a3a2c",40597:"f9b8a11c",40707:"be27c051",40804:"a32dc491",40984:"fec98963",41170:"78b96e6e",41191:"5c4394b8",41386:"377bbb2c",41661:"3bb8f8a8",42117:"eb96b581",42161:"abb6d5a9",42251:"000a9876",42412:"4b7597ef",42531:"742b51b2",42958:"ea385372",43086:"5c60d7f5",43164:"931b3c56",43521:"2aa09767",43905:"24fcaf6a",43996:"ba6b3935",44369:"b05c9731",44556:"e285bba1",44911:"f402ce15",44953:"b36278c1",44988:"3f5a38a1",44996:"20f9cf57",45112:"0ac83bbe",45119:"c64544fe",45190:"caef7ffb",45452:"47c667cd",45454:"5b234e24",45702:"01fc8a6b",45917:"cc6ad99e",45939:"d01b57b3",45977:"33b6415f",45980:"07d3de6b",46048:"991a2a40",46074:"4c806fc1",46103:"ffd73f5c",46461:"a687ebb2",46526:"56a7ce41",46541:"668a3222",46858:"5a940755",46945:"a8617603",46989:"cd44e71f",47036:"9e45ed8c",47077:"5b655e4d",47214:"e0ac5586",47724:"885efeb6",48104:"273d40a9",48610:"9abf5873",48690:"64529a67",48783:"d31a07d6",48947:"df248a28",49517:"8c91b347",49792:"8f28c14a",49808:"2ecf26cf",49927:"4be1f0cf",50044:"769f88dd",50098:"32a09af8",50103:"524b7d82",50258:"1eb06564",50339:"f487f1d3",50403:"26a06513",50758:"f5db74e1",50988:"555b72a7",51149:"0b0f72a9",51161:"1442244a",51652:"840d8253",51737:"34548704",51904:"c9b6e7cc",51917:"d06119f7",52475:"e1064b59",52535:"a34b40e3",52610:"cb569fda",52739:"4fead3e5",52765:"3dc50ad1",52943:"10d92ba6",53202:"76f83efe",53244:"553c24b6",53608:"58cce4c5",53787:"d575eaee",53869:"64f13080",53962:"feca1254",54246:"8c770461",55191:"a4f57ce8",55221:"2a2675a7",55494:"0b6900f1",55606:"ea05b2d2",55797:"f86013e8",55810:"62238568",55851:"fe4f0117",55870:"f90b3e38",56112:"1fafed05",56123:"e9951668",56147:"9fd1f127",56265:"e896333d",56295:"5dda1f96",56852:"71541458",57019:"b1bd1ccd",57463:"911dfff2",57493:"2e4aa2d0",57737:"0fde17e2",58193:"609cb23f",58194:"77908c55",58281:"cc234380",58290:"2005e8d5",58530:"435e1494",58614:"1308f65c",59060:"2e3c3d71",59092:"4fc272f9",59139:"56b50ffe",59334:"bc97b4af",60330:"f400640c",60379:"8b7530e9",60507:"9d220312",60595:"864daa5b",60712:"42f4f989",60731:"ccac09ad",60771:"f4aecb26",60992:"305d3dd2",61426:"b005faab",61484:"4f2a13b0",61877:"e5cd3239",61887:"f86c2191",62126:"f982cf21",62127:"00fa0e8f",62405:"6dcf3aea",62650:"8609d459",63253:"d73c1266",63369:"f5505453",63792:"ab192271",63812:"50a4d1f6",63870:"5141ec28",63952:"c9fdd1a8",64013:"599e8d04",64022:"e01324b8",64098:"e7b333e4",64195:"9df9af76",64310:"fc5a1213",64477:"8b9dc15a",64693:"96e12fab",64709:"934a7f65",64880:"a6f281c6",64887:"574f9d35",64947:"af53ee1c",65017:"7f122187",65146:"252a0e1f",65341:"e37aff02",65442:"de0ec1f5",65675:"13f5ef74",65826:"a9936178",66070:"9b1642a8",66385:"a981a7d1",66526:"c970da8b",66608:"34ab5ebd",66618:"ab9a7fd8",66744:"47b5f185",66863:"1f9bfd2b",67086:"9741a963",67174:"577afbd3",67533:"1f5d3f59",67544:"ef1462e3",67560:"cb5a0241",68021:"757909a0",68175:"c47a670d",68271:"b6fb9f60",68532:"642b03f1",68618:"663c7021",68856:"44a5f897",69104:"d30c2e6c",69483:"36864396",69501:"b39b2ebc",69962:"28cf9fed",69989:"60786e70",70486:"215eac65",70839:"2497529c",70970:"d2d045e4",71061:"6793bdd2",71381:"24ac44a0",71467:"e7781a9c",72054:"62df392b",72099:"6a79bec4",72514:"570610e9",72543:"083b6723",72937:"cc6d17bf",72978:"45c1df1d",73011:"60d26744",73032:"125def13",73446:"768ba2ea",73623:"e9c66f34",74002:"9f1a321c",74083:"6f1448d7",74198:"ba434f64",74300:"a87045bd",74888:"c9324c85",74999:"b2a23b51",75878:"e453203c",75935:"0689f776",76227:"49d8b4d8",76307:"03d7338e",76575:"afe9bd12",76660:"b7e1f9c6",76786:"7da2cba0",76791:"767633a6",76874:"e44accd8",76967:"416f526e",77055:"85399713",77077:"c3de5036",77078:"31ea1561",77169:"ccaa30f8",77217:"4cd58913",77645:"0d9ea538",78046:"a1d358db",78082:"29e8f8a0",78314:"b587c628",78436:"8e3674c0",78489:"4a8421b3",78588:"2032abf6",78659:"2ee0fdfc",78722:"da67828f",78823:"97f1cf25",78870:"f06041ef",78914:"4c30643a",78941:"f727f82b",79134:"2cb1d474",79495:"3b8a9a4f",79559:"880e3350",79597:"211fa9d7",80053:"2e2fe155",80163:"db49879c",80448:"ca4b7ed5",80801:"f1fc37b9",80806:"fd8f5561",80944:"cfb396fd",81128:"87ad96ce",81155:"171b535f",81375:"c3a458b6",81475:"20ed5745",81487:"2ea83240",81511:"4133a04e",81639:"9f38c6e0",81649:"5a50233e",81938:"a08c8f4b",81995:"34d8b474",82276:"e7728e20",82306:"5c75fdb0",82461:"a5cc92d8",82818:"e3600a48",82863:"868548c5",83006:"c22d78a8",83054:"0743cd33",83105:"aac25f4e",83278:"d4a4d0a1",83373:"fd6a6cad",83538:"867e84d8",83628:"8326ae1d",83834:"573e5b32",83897:"5b44733d",83917:"109ff60f",83988:"0de004a3",84678:"baf47767",84726:"5265af3c",84728:"d8c81156",84761:"74ca9cdb",84784:"554a89b1",84935:"8ffc6389",85040:"689bd90b",85367:"9b6607db",85584:"336c3429",85586:"54eaa449",85634:"f63fb5e0",85744:"09ea8cc4",85830:"69f08827",85960:"2058ed5b",86122:"4d82f592",86565:"caa96bf6",86575:"c458acb9",86586:"3aab6cfb",86621:"25af48d8",86719:"a0e3cebc",86869:"7fef65c5",86904:"74f59501",86931:"a37d54bc",86984:"857ceb2f",87070:"503eb93d",87494:"261dd711",87557:"8209bda3",87644:"f8c57f03",87746:"bfef0ac7",88180:"a0e38f90",88257:"5b5c2cfc",88322:"507c787e",88652:"e1cd9bdf",88795:"67c8dce4",89007:"25311230",89364:"cf9534a8",89427:"31fa1dab",89501:"ce97e557",89903:"a40feb08",90007:"9a01e996",90016:"4a7c51eb",90076:"a9a9f3c8",90111:"fb2bda3a",90451:"ca7192e4",90500:"c763dd26",90558:"2fd856a3",90560:"0c79e5f0",90683:"a48a4272",90794:"9cde58dc",91168:"35eef097",91186:"3bd78110",91374:"425a462c",91552:"b6ceb4bc",91637:"1a09794d",91705:"55ed004d",91773:"ae95cf94",91910:"af5c7bed",92133:"ef662b33",92634:"2ffccdd6",92648:"656a5b10",92755:"e86661dd",92827:"e340bd5c",92948:"580fdeaf",93068:"f370b464",93089:"65e2c549",93101:"867f0dd2",93233:"8b6fee2f",93412:"058cd3f9",93575:"83ca1962",94218:"091973f0",94322:"d6bf38cc",94349:"78432719",94573:"b153f8eb",94610:"ffef44be",94831:"bce2bade",95067:"594e0ea2",95160:"3b5c1b6b",95697:"4b72aa48",95896:"8cdd1008",95997:"73e271e4",96218:"4b11f416",96316:"e60530d6",96756:"d0c26f34",96857:"1476636d",96978:"d91c5fe0",97595:"c074fc03",97693:"65085de9",97847:"3314a1f9",97901:"e5380d6f",97920:"d35141b1",97963:"0ecdb609",98216:"8453ed92",98418:"ad7b6f65",98470:"8c256b7d",98626:"c8e896a9",98934:"f8d630ea",99295:"cba276a9",99589:"9436054f",99771:"cb3f3f12",99914:"cba522c2"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},f="@openfn/docs:",r.l=(e,a,c,b)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var f=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/fr/",r.gca=function(e){return e={17896441:"27918",49959913:"70839",52244165:"21682",61428574:"72543",84810683:"40804",90377122:"87494",96781795:"89364",99259033:"22537","6f69b847":"160",c85c4b26:"640",fa811662:"740","1155c2d6":"892",b973dcfd:"977",e6951222:"1081","2bb14bf0":"1140",ceb3f8e5:"1177","3e1cef53":"1589","2f06f2be":"1685","68c257f8":"1829","6479f562":"1958","0bd872d0":"2101",bd16d6fd:"2110",c64ebc62:"2232",f38541c0:"2365",bbcf6861:"2507","6915d488":"2890",a1c489ab:"2920","97bb0f58":"3112","9915a91d":"3132","07518487":"3359",b8f959a4:"3476","9d4548fb":"3812",a22153eb:"3818","87f47d74":"3976","12ebab0f":"4213","6bb2318b":"4310",f615a51d:"4474","60a00565":"4804","2d52fc42":"4825","81c93763":"4993",f30a3d1e:"5099","4cd34504":"5484",da184dc1:"5547",fcdeb347:"5670","24c88117":"5815","9da9a498":"6136",d86d7a0b:"6170","0564f87a":"6249",e19908fc:"6286",d1ebcfaa:"6293","6de65b44":"6367",f2ca2c55:"6536","8c7d7bb0":"6554","13614daa":"6792",dd13b434:"6895","13a70009":"6905",c70366f5:"6952","9785ccb8":"7033",cfc8229c:"7127",d9cb599e:"7330","1a848321":"7332",ba5363a7:"7340","21b56577":"7463",a6a264d3:"7483",f77d5673:"7567",aa1b4e53:"7694",d58f2f6c:"7800","64427c87":"7854","54e91ab5":"7911",cd9a6ef5:"7931",c0f0637e:"8012","20501ae4":"8097","01cf17ec":"8393",ca6559fd:"8507",cb759659:"8697","4aaa0f44":"8765",da6f85e6:"8773","0a6f29e5":"9084",e150ab3e:"9260","45b0764f":"9562","60ab92b2":"9966","237f254e":"9985",f5f1347d:"10099","60f1bcf9":"10309","758bc66d":"10511","437618c4":"10660",ee49404e:"10887","5e450bcf":"10924",caaf01d4:"10996","11e6d144":"11168","469347db":"11198",d40361ad:"11258","6b2906f5":"11293","02034504":"11421","33e1509d":"11439","5b5d0fd6":"11483",d5b44e8d:"11509",ced1473c:"11702","6bc82b6b":"11792",aa668fb3:"11922","1e9ef283":"11953","30ddeb5e":"11990",be916a41:"11991","964386c1":"12229","3d5c28b0":"12306","5dfb628f":"12573","274548c6":"12620","207ee67a":"13812",c4643d70:"13834",bd6858b9:"14074","8c2c25e6":"14419",ce5aebf3:"14753","6aa8733e":"14817",c85e5855:"14987","2158648d":"15015","0452e1bb":"15288","7efa2c08":"15395","8112a505":"15543",f6525c87:"15847","39f62c92":"15853","2de9ac7c":"16054",b083e7a6:"16057","0dcca2b1":"16199","4ad982c0":"16362","9150c915":"16549","4aabe620":"16699",a7ce3f25:"16785","9ee43f4e":"16819","89f741ca":"17191","45b3f811":"17238","97feb4e9":"17388","6680323d":"17753","285ad496":"17773","9997aecf":"18047","92009f0a":"18073",febd0338:"18141",bc5d0bda:"18230","0e04b402":"18902","24a5cb68":"18918","7a801707":"18967","50711b5c":"19014","8f8e3a33":"19624",ea07b8e0:"19692",e202e776:"19835","14ee1fe9":"19873","01a3d143":"20168","7ee80f24":"20396","5f265cf4":"20512","2f0d9976":"20516",cfe04674:"20593",db30e504:"20854","3d8bf3ab":"20868","121b2142":"21085","14ad7d65":"21151","8310c4f6":"21271","0d1eeea0":"21356","919ee986":"21481",b578d62e:"21599",e56b7427:"21665",f5466782:"22226","3947b16e":"22235","5e1dea11":"22409","55bb925b":"22605",ecfe8209:"22623",e436cfad:"22740","9e9afbd3":"22761",bbd7a71c:"22839","665c23b8":"23024","192eff61":"23046","57fbf2bd":"23067","2a076a79":"23395","2f236184":"23698",b5bd7f9b:"23872","3874af3e":"23913","8660c4b6":"24067","5e95c167":"24219",facd2017:"24319","833f2ec0":"24742","88e27e42":"24770","90d535c2":"24869","9eb4e0db":"24883","1af9c7d3":"25035",a20e070a:"25048","73578edf":"25294",e310b146:"25315","95001b22":"25800","2c828998":"25903",cce9ad1c:"25920",d9a6c9f9:"26090","431913e7":"26313","1edc3b38":"26430","60194cf2":"26723",d98b9f83:"26920","305c1785":"27364",b1ecb9ed:"27800","052feb78":"28206",f810cb63:"28262",d776f897:"28283",c77a0576:"28698",d293d3db:"29278",c2d56c21:"29354","1be78505":"29514","8404d93f":"29655",e7761a76:"29730","385718d4":"30117",e87dea31:"30135",f22b5bc0:"30583","77deca26":"30620","747a690f":"30636","1140a058":"30674","27eb0108":"30697",dff30c03:"31109",f13d29f3:"31114",f2b4d23e:"31158","2dcd28d2":"31262","7a35092c":"31326","5fb0ec3e":"31350","4aa43dae":"31552",c1dc13d0:"31800","3c41cfdf":"31883","916b8fda":"32107",e1d93203:"32661","85f847a7":"32672","6cb21577":"32674","7ced0572":"32681",afbc2852:"32737","20a5a532":"33089","9455630c":"33122",e7f68c37:"33133",a67fd46a:"33340","93857d8b":"33582","20f8de15":"33731","57bdafe0":"33806","1203bdae":"33841",c4429c79:"33926",c6dfd94e:"33947","33844ff3":"34490","31b72ec5":"34737",adadeee4:"35005",def6dfb9:"35097","1e26ddab":"35304",c0908e63:"35477","6738a51a":"35506",c275b7b1:"35755",b8df7263:"35776",c9df59dc:"35840","1eb40bba":"35922","24e295df":"36048","05b1a525":"36249","984b8319":"36425",fcde3356:"36600","92293c9c":"36918","669b0b95":"37120","4980c4fa":"37209","02371d76":"37274","5ac6f7de":"37388","2db499ae":"37737","8e97cc15":"37874","43cc1724":"38276","1b3816a8":"38574",e967512d:"38887","75270caf":"39210",afd0cb1b:"39527","8b77e1a5":"39626","330b8ea1":"39799",e0c8a1d6:"39856","9a8f9e52":"40054","1a7f2dde":"40195","07e96687":"40280",cd8c9fbc:"40332","050638ff":"40381","1ee9c635":"40556","2d68e16b":"40597","2a47a07e":"40707",e5a64766:"40984","3a0c736b":"41170",c3e27561:"41191",e4071e64:"41386","1280552c":"41661","710be885":"42117","1f7f4c7a":"42161","55ac83aa":"42251","8328e7f1":"42412","4f8f7d74":"42531","14a767b9":"42958",bb40a730:"43086","09eafa5c":"43164","8d1ec4c5":"43521","5653e10f":"43905","277d517a":"43996","0bc95200":"44369",a6a431f9:"44556","677d6777":"44911","78b226dc":"44953","4be7e5d0":"44988","33bf046c":"44996","31d20e13":"45112",c50fc9f4:"45119","1d970e9f":"45190","5bcd0da1":"45452",e5c6d3b2:"45454","1074bb26":"45702","17ca7de3":"45917",b1212599:"45939",acfb9a5e:"45977",ffecbc46:"45980",b198cec2:"46074",ccc49370:"46103","01d69a66":"46461","7f6bbd73":"46526",b8974487:"46541",e2c3bc5f:"46858",e802237a:"46989","377ce957":"47036","554f4bd3":"47077","326c0af7":"47214",c333ed9f:"48104","6875c492":"48610","5ffd6909":"48690","6f9d539f":"48783",a5ba2d12:"48947","6af54863":"49517",b0074edd:"49792",d0ac1c30:"49808",eec5a710:"49927",e4d06512:"50044","3834c837":"50098","65e8e75e":"50103","5575e2a8":"50258",cb128a98:"50339",de387681:"50403","853ddb5d":"50758","186b492d":"50988",cd910537:"51149","2127c55a":"51161","708cde07":"51652",c092a89c:"51737",c260b9a0:"51904","3f2ad086":"51917",d5d95cda:"52475","814f3328":"52535","1d48afb9":"52610","734563d5":"52739","933a49e7":"52765",a9bffa51:"52943","68987ad2":"53202","869c9c27":"53244","9e4087bc":"53608",bc4d6fc9:"53787","72274bd6":"53869","3a574a7f":"53962",c942fcda:"54246",bb8cf488:"55191",cbf34b30:"55221","38eccbde":"55494",b1be30d1:"55606",e4608243:"55797","47f9b594":"55810",cd7342f7:"55851",c302b7f6:"55870","99e8c7ac":"56112","4ef508e9":"56123","92e661e4":"56147",b5e7b216:"56265",e6ec1ffb:"56295","30995fb4":"56852","479e2d15":"57019",f2f7c8b6:"57463","4a77a641":"57493","92f50a66":"57737",aacecf0a:"58193",afa4ac88:"58194",db403cff:"58281",cc8c6322:"58290",e1450e8f:"58530","0d596054":"58614","91b303c9":"59060","9c62a4d6":"59092","5153790b":"59139","247783bb":"59334","13a2a5ae":"60330","271f7228":"60379","6a1cd61c":"60507",a9d6ad8a:"60595","699a47d0":"60712","37a36148":"60731","22ef07eb":"60771","352bf367":"60992","20a7d97c":"61484","7849f6b2":"61877",f9ed4079:"61887",c3a5a911:"62126","1b24f020":"62127",a8faecbd:"62405","0f427d40":"62650",a69ebe5f:"63253","579e663e":"63369",bd83a8c8:"63792","45a8dc52":"63812","0b31129f":"63870",d493c3e8:"63952","01a85c17":"64013","0bddafbe":"64022",b46405e2:"64098",c4f5d8e4:"64195","61fbda8a":"64310","3cf47477":"64477","1e5c0d86":"64693",f3954950:"64709","6a3a4a87":"64880",a8c84974:"64887","460d220e":"64947",f9aec362:"65017","069211c5":"65146","0a451647":"65341","444d5ed4":"65442","54b8d70a":"65675","203262b0":"65826","25057d02":"66070","59b068d1":"66385",e6102057:"66526",b82c8496:"66608","802db911":"66618","821478b8":"66744","1cd349ba":"66863","32507d04":"67086",e508954a:"67174","5c709812":"67533",aea1a378:"67544","36a143db":"67560","64a35041":"68021",c831614b:"68175","1c091541":"68271",ad282cb1:"68532","5f16d91a":"68618","7de666e0":"68856",acd02317:"69104","5c8f7670":"69483",cb189ef9:"69501","8e10bb86":"69962","32a4d0bf":"69989","6d30ac0a":"70486","77e868d9":"70970",c968f1a3:"71061","56ece2ab":"71381","57a1d77e":"71467",f64a2f66:"72054",eae3fa10:"72099","6c5c20d6":"72514","193bf152":"72937","56b2a431":"72978","1e19f58c":"73011","13c3e084":"73032","450c527f":"73446",d2e8caaf:"73623","9bb632fa":"74002","68cedfd5":"74083",b3198ac5:"74198","419e73d5":"74300","1a43e018":"74888","6a84c208":"74999",c08d79e7:"75878","8dfa1c2e":"75935","37c44782":"76227","6030f184":"76307","6d0c6131":"76575",c76eb7d5:"76660","8e37cc44":"76786","06b1e92d":"76791","771488fd":"76874",e2548c92:"76967",f5d5b73d:"77055","97d209f3":"77077","1ecd7e15":"77078",e4f4dec4:"77169",af1b4014:"77217",a7434565:"77645","2fd22369":"78046",fcfb247d:"78082","10915d97":"78314",c541efc4:"78436",c98ac358:"78489","0a1bb744":"78588","890759ea":"78659",a484f848:"78722",c0daf1e6:"78823","03b60f31":"78870","1a98f2d5":"78914","88b398be":"78941","62b71d38":"79495","7356945f":"79559",b68d77f3:"79597","935f2afb":"80053","28304c62":"80163",d1e2a1e4:"80448",d5694d2b:"80801","9e4491bb":"80806",ead2dbe0:"80944",c38cc3bf:"81128","5f6910fd":"81155",cf23ded0:"81375","1ddde2c7":"81475","70b40441":"81487","208114e0":"81511","0691b308":"81639","92bdb8f4":"81649","6310fd48":"81938","174d08bc":"81995","46bd2088":"82276","9f0de854":"82306",dfd4abb8:"82461","5f1113d5":"82818",eb4eb408:"82863","87d0342b":"83006",b85e9339:"83054","286b008a":"83105","09b23959":"83278","11508eb1":"83373","6a3d0153":"83538",df123296:"83628","07987921":"83834","500fb0e6":"83897","24c7144e":"83917",e0ecd9df:"83988","7c750c8d":"84678","08e43170":"84726","903c4f6f":"84728",ab0b43f0:"84761",f7f75c2e:"84784",bab68f7e:"84935",f5ff4ddf:"85040","2233b4a8":"85367","585fad0f":"85584","5f0cc255":"85586",a6748c3f:"85634",c4816122:"85744",f5d8a8a8:"85830",cc826739:"85960",e958b715:"86122","4224ef00":"86565","54496a4b":"86575","7a719824":"86586","519cbeed":"86621","4256eaf4":"86719","713bf807":"86869",fec351f2:"86904","93dfdea3":"86931","2bf9c0b5":"86984","3bc428dc":"87070","4cbb880b":"87557","81e594d4":"87644","6fa39f86":"87746",eec2ee36:"88180","9daf6a80":"88257",eabea829:"88322","39e9cb37":"88652","27e17dc0":"88795",e4a50065:"89007",cf910a2e:"89427",f48233a1:"89501",ffc1986f:"89903","6b7f4848":"90007","72e24453":"90016",c5495231:"90076","073713d1":"90111",e7db057b:"90451",cc135780:"90500",a12f1ef9:"90558","5426ac11":"90560","205a84c5":"90683",b5efef1d:"90794","43472ecd":"91168","0f29dfed":"91186",c2be96f9:"91374",b3022338:"91552",a3f9e536:"91637","524c9166":"91705","5ea48c4c":"91773",d879ea04:"91910",bebb13e1:"92133",f753119a:"92634",fca34444:"92648","9d36e504":"92755","6255187c":"92827",e18c3bcf:"92948","56bdb9b2":"93068",a6aa9e1f:"93089","5e018954":"93101","998a3ebe":"93233",c6b7e14c:"93412","758e75ea":"93575","216be533":"94218",bc969ae1:"94322","09a69b27":"94349",a3679423:"94573",dc62dd6c:"94610","4b75119c":"94831","5de57f5f":"95067","7867a357":"95160",c4fd3761:"95697",adc044c3:"95896","8977ff65":"95997",a9808524:"96218",d0b3828a:"96756","5f87d652":"96857","55e11cea":"96978","960d9980":"97595",b423c391:"97693",f7d07906:"97847","60e9e07a":"97901","1a4e3797":"97920","22885a83":"97963","15d749b5":"98216","28411ba4":"98418","0f69f12f":"98470",aecbce6d:"98626","94400f11":"98934",fc5ff77a:"99295","82f88919":"99589","82a6115e":"99771",b37711b1:"99914"}[e]||e,r.p+r.u(e)},(()=>{var e={51303:0,40532:0};r.f.j=(a,c)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)c.push(d[2]);else if(/^(40532|51303)$/.test(a))e[a]=0;else{var f=new Promise(((c,f)=>d=e[a]=[c,f]));c.push(d[2]=f);var b=r.p+r.u(a),t=new Error;r.l(b,(c=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var f=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+f+": "+b+")",t.name="ChunkLoadError",t.type=f,t.request=b,d[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var d,f,b=c[0],t=c[1],o=c[2],n=0;if(b.some((a=>0!==e[a]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(c);n - + @@ -76,7 +76,7 @@ reading-for-enjoyment initiative, which promotes reading and writing in mother tongue languages. To effectively monitor program activities and children reached across the country, Nal’ibali needed to integrate multiple data platforms.

    - + \ No newline at end of file diff --git a/fr/blog/2020/05/31/the-new-openfn-blog.html b/fr/blog/2020/05/31/the-new-openfn-blog.html index 6fe2eb4929e..77f97b108cf 100644 --- a/fr/blog/2020/05/31/the-new-openfn-blog.html +++ b/fr/blog/2020/05/31/the-new-openfn-blog.html @@ -22,7 +22,7 @@ - + @@ -34,7 +34,7 @@ scale, and all of the contributors to the OpenFn blog can post in the same place. You can still follow us and receive notifications by subscribing below, and we hope you'll do so.

    For now, happy integrating!

    — Taylor

    - + \ No newline at end of file diff --git a/fr/blog/2020/06/04/Building-Integrated-Systems-That-Just-Work.html b/fr/blog/2020/06/04/Building-Integrated-Systems-That-Just-Work.html index c062d225ba6..3a77c756e53 100644 --- a/fr/blog/2020/06/04/Building-Integrated-Systems-That-Just-Work.html +++ b/fr/blog/2020/06/04/Building-Integrated-Systems-That-Just-Work.html @@ -22,7 +22,7 @@ - + @@ -95,7 +95,7 @@ Solution Overviews - OpenFn. To get all the latest OpenFn updates, like us on Facebook and follow us on Twitter.

    - + \ No newline at end of file diff --git a/fr/blog/2020/06/04/Technology-Isnt-The-Answer.html b/fr/blog/2020/06/04/Technology-Isnt-The-Answer.html index 804f693e5fc..643bc59e907 100644 --- a/fr/blog/2020/06/04/Technology-Isnt-The-Answer.html +++ b/fr/blog/2020/06/04/Technology-Isnt-The-Answer.html @@ -22,7 +22,7 @@ - + @@ -73,7 +73,7 @@ programs, and impact. So far, different organizations have integrated more than X number of technologies, including Open Data Kit (ODK), Kobo Toolbox, DHIS2, CommCare, Salesforce, custom databases, and more.

    - + \ No newline at end of file diff --git a/fr/blog/2020/06/09/enabling-scale-at-myagro.html b/fr/blog/2020/06/09/enabling-scale-at-myagro.html index f2e0219c93d..f302aae136e 100644 --- a/fr/blog/2020/06/09/enabling-scale-at-myagro.html +++ b/fr/blog/2020/06/09/enabling-scale-at-myagro.html @@ -22,7 +22,7 @@ - + @@ -62,7 +62,7 @@ Mali.
  • With the help of OpenFn, myAgro worked with 120,000 farmers in 2019, and plans to scale towards its goal of reaching 1 million farmers by 2025.
  • myagro

    Read more about myAgro’s mission here, and stay tuned as myAgro continues to scale its OpenFn implementation.

    - + \ No newline at end of file diff --git a/fr/blog/2020/06/10/iKapaData-Case-Study.html b/fr/blog/2020/06/10/iKapaData-Case-Study.html index f69abb079e6..d3061fa2a35 100644 --- a/fr/blog/2020/06/10/iKapaData-Case-Study.html +++ b/fr/blog/2020/06/10/iKapaData-Case-Study.html @@ -22,7 +22,7 @@ - + @@ -53,7 +53,7 @@ on CartoDB to display the locations already visited by enumerators.

    The real-time connection enabled live data monitoring for the team as iKapaData survey enumerators were conducting the survey.

    Learn more about OpenFn and SurveyCTO integrations here.

    - + \ No newline at end of file diff --git a/fr/blog/2020/06/25/SwissTPH-case-study.html b/fr/blog/2020/06/25/SwissTPH-case-study.html index 1436c106569..2ad21acbd56 100644 --- a/fr/blog/2020/06/25/SwissTPH-case-study.html +++ b/fr/blog/2020/06/25/SwissTPH-case-study.html @@ -22,7 +22,7 @@ - + @@ -54,7 +54,7 @@ The Almanach tablet-based decision support tool supports health workers in diagnosing and treating sick children. OpenFn integrates this data with DHIS2 for real-time reporting.

    - + \ No newline at end of file diff --git a/fr/blog/2020/07/01/KGVK-case-study.html b/fr/blog/2020/07/01/KGVK-case-study.html index d69ee5f45b8..d8cc9e86585 100644 --- a/fr/blog/2020/07/01/KGVK-case-study.html +++ b/fr/blog/2020/07/01/KGVK-case-study.html @@ -22,7 +22,7 @@ - + @@ -44,7 +44,7 @@ access, KGVK can more regularly evaluate and adjust its programs to better serve the needs of the Jharkhand communities it serves.

    The photo above was originally posted on the KGVK Achievements site.

    - + \ No newline at end of file diff --git a/fr/blog/2020/07/01/african-school-of-excellence-case-study.html b/fr/blog/2020/07/01/african-school-of-excellence-case-study.html index 85bab58f347..7078c5243a1 100644 --- a/fr/blog/2020/07/01/african-school-of-excellence-case-study.html +++ b/fr/blog/2020/07/01/african-school-of-excellence-case-study.html @@ -22,7 +22,7 @@ - + @@ -50,7 +50,7 @@ contact our team.

    The photo above was originally posted on the Wikimedia site under "WikiAfrica Schools training Africa School of Excellence."

    - + \ No newline at end of file diff --git a/fr/blog/2020/07/01/airport-case-study.html b/fr/blog/2020/07/01/airport-case-study.html index 0432cbdf240..b5e1b808cd8 100644 --- a/fr/blog/2020/07/01/airport-case-study.html +++ b/fr/blog/2020/07/01/airport-case-study.html @@ -22,7 +22,7 @@ - + @@ -52,7 +52,7 @@ staff.
  • HQ staff then use a leading industry tool (IBM Maximo) to store asset data, schedule maintenance, and perform performance analysis.
  • With real-time data syncs, OpenFn helps this airport ensure top-quality assets and service for its workers and passengers.

    - + \ No newline at end of file diff --git a/fr/blog/2020/07/08/caris-foundation-case-study.html b/fr/blog/2020/07/08/caris-foundation-case-study.html index be2b5ca62d6..3687367ac7f 100644 --- a/fr/blog/2020/07/08/caris-foundation-case-study.html +++ b/fr/blog/2020/07/08/caris-foundation-case-study.html @@ -22,7 +22,7 @@ - + @@ -67,7 +67,7 @@ agent, and for external reporting.” Read our interview with Jennifer here.

    The photo above was originally posted on the Caris Foundation site.

    - + \ No newline at end of file diff --git a/fr/blog/2020/07/13/x-runner-case-study.html b/fr/blog/2020/07/13/x-runner-case-study.html index 7f36cb1c38e..2818ac0f017 100644 --- a/fr/blog/2020/07/13/x-runner-case-study.html +++ b/fr/blog/2020/07/13/x-runner-case-study.html @@ -22,7 +22,7 @@ - + @@ -51,7 +51,7 @@ services and track customer issues. Salesforce reports help to easily identify issues for X-runner staff to immediately address.

    With this integrated service system, X-runner can deliver high quality customer service and technical assistance to their customers, with no time lag.

    - + \ No newline at end of file diff --git a/fr/blog/2020/07/26/sinapis-case-study.html b/fr/blog/2020/07/26/sinapis-case-study.html index d1b63a07238..eb906b6fe20 100644 --- a/fr/blog/2020/07/26/sinapis-case-study.html +++ b/fr/blog/2020/07/26/sinapis-case-study.html @@ -22,7 +22,7 @@ - + @@ -57,7 +57,7 @@ to learn more about their impact.

    The photo above was originally posted on the The Star. It features female entrepreneurs in Kenya undergoing Sinapis's finance training.

    - + \ No newline at end of file diff --git a/fr/blog/2020/07/27/nalibali-case-study.html b/fr/blog/2020/07/27/nalibali-case-study.html index 267f0b4ada7..dd73aec0781 100644 --- a/fr/blog/2020/07/27/nalibali-case-study.html +++ b/fr/blog/2020/07/27/nalibali-case-study.html @@ -22,7 +22,7 @@ - + @@ -60,7 +60,7 @@ their main website.

    The photo above was originally posted on the Nal'ibali Facebook page. It features children doing role play in order to practice conversation.

    - + \ No newline at end of file diff --git a/fr/blog/2021/02/09/interoperability_for_case_referrals.html b/fr/blog/2021/02/09/interoperability_for_case_referrals.html index ccfdeed8c38..bec69028242 100644 --- a/fr/blog/2021/02/09/interoperability_for_case_referrals.html +++ b/fr/blog/2021/02/09/interoperability_for_case_referrals.html @@ -22,7 +22,7 @@ - + @@ -89,7 +89,7 @@ includes supporting the efforts of social workers across the country.

    About OpenFn Group: Open Function Group (“OFG”) helps health and humanitarian interventions in 40+ countries achieve scale and improve service delivery through automation, data integration, and interoperability solutions.

    - + \ No newline at end of file diff --git a/fr/blog/2021/03/30/digital-global-good.html b/fr/blog/2021/03/30/digital-global-good.html index 98ee71c456b..3ecad2e5c55 100644 --- a/fr/blog/2021/03/30/digital-global-good.html +++ b/fr/blog/2021/03/30/digital-global-good.html @@ -22,7 +22,7 @@ - + @@ -141,7 +141,7 @@ services@openfn.org for a free consultation.

    Also, be sure to stay tuned to our blog, or subscribe to our newsletter to stay up to date with all ICT4D integration related news.

    - + \ No newline at end of file diff --git a/fr/blog/2021/07/30/processes-and-open-source-as-choice.html b/fr/blog/2021/07/30/processes-and-open-source-as-choice.html index 08da1908388..71abe47bb47 100644 --- a/fr/blog/2021/07/30/processes-and-open-source-as-choice.html +++ b/fr/blog/2021/07/30/processes-and-open-source-as-choice.html @@ -22,7 +22,7 @@ - + @@ -117,7 +117,7 @@ services@openfn.org for a free consultation.

    Also, be sure to stay tuned to our blog, or subscribe to our newsletter to stay up to date with all ICT4D integration related news.

    - + \ No newline at end of file diff --git a/fr/blog/2021/10/20/the-case-for-health-information-exchange.html b/fr/blog/2021/10/20/the-case-for-health-information-exchange.html index e5dd31c8a3d..f7af23cf0e9 100644 --- a/fr/blog/2021/10/20/the-case-for-health-information-exchange.html +++ b/fr/blog/2021/10/20/the-case-for-health-information-exchange.html @@ -22,7 +22,7 @@ - + @@ -61,7 +61,7 @@ resources and learnings from dozens of implementations to deliver a suite of open-source documentation, implementation tools, and a templates library that fast-tracks interoperability and automation projects.

    For more information visit the links below:

    — Aicha

    - + \ No newline at end of file diff --git "a/fr/blog/2022/06/28/Data-Integration-to-better-safeguard-the-world\342\200\231s-wildlife.html" "b/fr/blog/2022/06/28/Data-Integration-to-better-safeguard-the-world\342\200\231s-wildlife.html" index 5ac02cfd263..e390cd84705 100644 --- "a/fr/blog/2022/06/28/Data-Integration-to-better-safeguard-the-world\342\200\231s-wildlife.html" +++ "b/fr/blog/2022/06/28/Data-Integration-to-better-safeguard-the-world\342\200\231s-wildlife.html" @@ -22,13 +22,13 @@ - +

    Data Integration to better safeguard the world’s wildlife

    · 4 minute de lecture

    Since 2020, the Wildlife Conservation Society (“WCS”) has leveraged the OpenFn Integration Toolkit to collect, clean, and integrate critical data for critical conservation programs targeting the world's largest wild places. WCS and its partners work at the frontline of conservation, and with support from OpenFn, they can automatically and seamlessly integrate and quickly analyse the masses of data collected across dozens of countries.

    WCS saves wildlife and wild places worldwide through science, conservation action, and collaborating with local communities and indigenous people.

    Climate change is happening right before our eyes. The 2019 Union Nations SDG Report found that as many as one million animal and plant species are in danger of extinction. Ergo, this also puts the people who highly depend on them at great risk. The earth’s demolition statistics are alarming, with “greenhouse gas emissions [having] doubled, raising average global temperatures by at least 0.7 degrees Celsius.” Less than 25% of the world can still be considered “wilderness”, urging that we must mitigate and avert these disasters without hesitation. Wilderness areas act as critical buffers against climate change, and as time goes on, these areas are diminishing due to global warming, leaving us vulnerable to climate disasters.

    WCS works with multiple data platforms and dozens of partners worldwide and needs an integration solution to enable interoperability and scale.

    With projects in nearly 60 countries and across oceans, WCS aims to re-establish a world where wildlife and people thrive in healthy lands and seas. WCS partners work on the frontline of conservation, ranging from Indigenous and local communities to national and local governments. Using mobile survey tools like KoBo Toolbox, WCS field staff can complete and submit data collection forms to track the well-being of local communities they support, local governance, reforestation activities, natural resource use, and other conservation and social science research data. WCS sought out OpenFN to integrate its data collection sources with one database for centralised analysis of all this information.

    OpenFn automates data pipelines from field to office, ensuring WCS decision-makers and researchers can access timely, accurate information.

    WCS implemented OpenFn to automate a standardised data flow between numerous wild meat consumption surveys and an MSSQL database to enable cross-partner data sharing and critical data analysis for a €45 million initiative. The initiative aims to curb unsustainable wildlife hunting, conserve biodiversity and improve food security.

    Since then, WCS has implemented OpenFn to support its partners from Conservation Social Science Partnership (“ConSoSci”). ConSoSci uses OpenFn to deploy and analyse research data collected in the field rapidly. One OpenFn solution auto-scans social science Kobo ToolBox surveys to then automatically:

    1. Build PostgreSQL and MSSQL databases and
    2. Integrate the databases, making the field data quickly available for analysis and eliminating multiple manual configurations and data integration steps typically handled by a software engineer.

    OpenFn integration

    OpenFn’s solution saves ConSoSci partners time and money, enabling researchers to access reliable data from multiple sources more quickly and effectively. They can then analyse this information to help address critical gaps in social science capacity, implementation, and accessibility in conservation.

    Thanks to the OpenFn Integration Toolkit, WCS has the digital infrastructure to efficiently scale its data collection, analysis, and sharing solutions to enhance interoperability across its programs and partners. OpenFn automatically syncs hundreds of records across dozens of WCS sites daily, enabling the WCS Conservation Technology Team to redirect its focus to its core work–empowering researchers working to mitigate continued environmental damage. WCS believes that “by discovering how to save nature, we can inspire the world to protect it”, and OpenFn is committed to helping conservation stakeholders automate this discovery process worldwide.

    To explore WCS and ConSoSci OpenFn solutions, check out the open-source code on Github (github.com/OpenFn/consosci). Next up for WCS are integrations between Kobo ToolBox and Asana. Stay tuned for more!

    Call to Action

    If you have questions about our WCS partnership or integration toolkit, head to community.openfn.org to connect and talk to like-minded social-sector integrators and OpenFn staff. We hope to see you soon!

    - + \ No newline at end of file diff --git a/fr/blog/2023/03/01/open-human.html b/fr/blog/2023/03/01/open-human.html index d5f5cb74f09..f01cad0bcbe 100644 --- a/fr/blog/2023/03/01/open-human.html +++ b/fr/blog/2023/03/01/open-human.html @@ -22,7 +22,7 @@ - + @@ -80,7 +80,7 @@ miss the company of my colleagues more than the comforts of home.

    Somewhere during this long pandemic, between fleeing an unsafe office and thriving in isolation, I Iost something. I forgot something important, something about connecting to people, something about society, the world, my place in it.

    In Cape Town, and with the humans of Open Function, I found it once more.

    An OpenHuman at Camps Bay Beach

    - + \ No newline at end of file diff --git a/fr/blog/2023/04/13/lightning-beta.html b/fr/blog/2023/04/13/lightning-beta.html index 8277e690f93..263c5df4c84 100644 --- a/fr/blog/2023/04/13/lightning-beta.html +++ b/fr/blog/2023/04/13/lightning-beta.html @@ -22,7 +22,7 @@ - + @@ -55,7 +55,7 @@ deleted once viewed please state so in the email.

    If you would rather give your feedback in person, or have questions around using Lightning, please book office hours with our product manager Amber via the following link: https://calendly.com/amber-openfn/30min.

    - + \ No newline at end of file diff --git a/fr/blog/2023/06/01/open-function-group.html b/fr/blog/2023/06/01/open-function-group.html index 9307f39b5a3..7d0f217196a 100644 --- a/fr/blog/2023/06/01/open-function-group.html +++ b/fr/blog/2023/06/01/open-function-group.html @@ -22,7 +22,7 @@ - + @@ -91,7 +91,7 @@ delight... they have driven the product forward for the last 9 years and we can’t tell you how grateful we are for your continued support and willingness to contribute. Thank you.

    — Taylor

    - + \ No newline at end of file diff --git a/fr/blog/2023/08/14/OS4H-case-study.html b/fr/blog/2023/08/14/OS4H-case-study.html index a6557a0111e..724c9037cc7 100644 --- a/fr/blog/2023/08/14/OS4H-case-study.html +++ b/fr/blog/2023/08/14/OS4H-case-study.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    Open Solutions for Health delivers workflow automation for the St. Lucia Ministry of Health

    · 7 minute de lecture

    Open Solutions for Health (“OS4H”) is an Integrated Systems for Health collaborator and implementer specializing in providing enterprise support for free and open-source systems (FOSS). They customize small, mid-range and large open source health applications for Ministries of Health, medical councils, medical doctor practices, health groups and hospitals in the Caribbean. OS4H is also our first certified OpenFn implementation partner in the Caribbean, trained to deliver workflow automation projects to help their regional partners achieve health systems interoperability.

    Peter Ricketts, CEO at OS4H, says the Dominica-based team provides sustainable solutions designed to meet the needs of organizations in small island developing states (SIDS) that will strengthen their health management operations. While OS4H specializes in digital health implementations for the Caribbean, their team of IT specialists also works across other sectors, including education and agriculture.

    “At OS4H, our mission is to improve health outcomes by matching the right technologies to the problems and build the supporting framework around it to ensure it is implemented and sustained over the long run. We believe in making high quality data and information available to those who need it, where they need it, and when they need it in a sustainable manner.” - Peter Ricketts

    osh4h-team
    Above: Members of the Open Solutions for Health team based in Roseau, Dominica.

    This year, OS4H has been working with partners at the St. Lucia Ministry of Health (MOH) to expand their in-country DHIS2 implementation to monitor key immunization indicators so that they can strengthen management operations against vaccine preventable diseases. Check out this press release to learn more about the project supported by the Pan American Health Organization (PAHO).

    DHIS2 offers robust dashboard and data visualization options, but St. Lucia’s immunization data was collected in a separate database, along with sensitive patient information that should only be accessed by authorized users. Therefore, to (i) avoid manual data entry and indicators calculations, and (ii) minimize access to sensitive patient data, OS4H sought to automate the reporting of key immunization indicators to DHIS2. After researching secure, open source, and OpenHIE-compliant options for data integration, OS4H decided to deliver this solution using the OpenFn workflow automation platform.

    In less than 1 month, OS4H successfully designed and implemented workflow automation on OpenFn that integrates the St. Lucia Health Information System (“SLUHIS”) database with DHIS2, enabling regular, nation-wide monitoring of key immunization indicators for MOH staff and epidemiologists.

    This OS4H implementation consisted of two phases: (1) training on the OpenFn platform and(2) implementation of the automated workflow for St. Lucia.

    OS4H is now a certified OpenFn implementer

    At OpenFn, we have a small implementation team that cannot meet the rising demand for workflow automation we’re seeing worldwide. Therefore, we are investing more in partner enablement to help develop the automation expertise and OpenFn implementation capacity of local IT teams solving local problems–like OS4H in the Caribbean. Earlier this year, our core team launched the OpenFn Implementation Partner Program to offer training on the OpenFn Digital Public Good, as well as on our implementation process.

    To quickly learn how to implement OpenFn, the OS4H team completed the OpenFn Partner Onboarding Training to learn about the OpenFn product suite, as well as how to successfully design and deliver workflow automation implementations end-to-end. Over the course of 2 weeks, OS4H team members attended online training sessions and completed “homework” exercises to practice OpenFn fundamentals and prepare for their upcoming, real-world projects. At the end of the training, the OS4H team officially joined the OpenFn Community, received “OpenFn Essentials” badges for OpenFn administration and development, and were prepared to kick off their first implementation with the St. Lucia Ministry of Health.

    "After adopting the OpenHIE reference architecture, we began exploring the various referenced technologies. Upon review of the interoperability layer technologies, we quickly appreciated the versatility and ease of use of OpenFn.

    When data transformation is needed, OpenFn utilizes JavaScript, a scripting language that is familiar to most developers in the Caribbean. This meant a lower learning curve, enabling us to get up and running relatively quickly. Furthermore, the support from the OpenFn core team allowed us to build in-house capacity for the full delivery cycle of an OpenFn project." - Peter Ricketts

    Automating indicators reporting for the MOH

    Following the OpenFn training, the OS4H team successfully led the design and implementation of a solution which integrates SLUHIS, the St. Lucia MOH's health information system built on a PostgreSQL database, with their DHIS2 reporting system.

    This process involved consultations with St. Lucia MOH partners to understand the SLUHIS data structure and how to map SLUHIS data points to the DHIS2 data model. Once the data mapping requirements and workflow steps were clearly defined, then OS4H was able to configure the workflow on OpenFn and schedule the automation to run hourly.

    osh4h-flow

    How the workflow automation works:

    1. On an hourly basis, OpenFn executes complex SQL queries to extract and aggregate immunization data from the SLUHIS PostgreSQL database.
    2. OpenFn next fetches a list of “data mapping rules” from SLUHIS, which inform how municipalities should be reassigned to organization units in the DHIS2 location hierarchy.
    3. OpenFn then maps the SLUHIS aggregated indicators results to related DHIS2 data elements to prepare the data for import.
    4. Finally, using the DHIS2 adaptor, OpenFn imports data values to DHIS2, updating linked indicators and dashboards.

    As the workflow runs, all activity history can be centrally monitored in the OpenFn platform, and alerts are configured to notify St. Lucia MOH partners if any errors are thrown.

    osh4h-dashboard
    Above: Screenshot of the test DHIS2 dashboard for key immunization indicators, which displays data from SLUHIS that is aggregated and updated by OpenFn daily. This image contains test data only.

    For the MOH staff and epidemiologist end users, the DHIS2 immunization dashboards are updated automatically and regularly, ensuring access to timely and accurate information. MOH dashboard users don't need to worry about manual reporting and data analysis tasks. Automation enables MOH staff to focus on identifying trends and patterns in the administration of vaccines to improve program management operations.

    These users might not even be aware that OpenFn is engine powering the workflow automation under the hood—for them, the dashboard just works.

    osh4h-meet
    Above: Screenshot from online meeting with Taylor Downs (OpenFn) and Clem Francis (Developer, OS4H) celebrating the successful setup of an OpenFn workflow that automates calculating and reporting aggregated data values for key indicators to DHIS2.

    What's next?

    In April 2023, OS4H successfully launched the DHIS2 dashboard solution and handed over the monitoring of the OpenFn automation to the St. Lucia MOH team for the duration of the pilot. In the coming months, the St. Lucia MOH and OS4H will consider adding functionality and deploying the solution on a local, ministry-managed server, using OpenFn Lightning (the OpenFn “v2” fully open-source web app) for continued use at a greater scale.

    In the meantime, the OS4H team is continuing to deliver transformative digital solutions for partners across the Caribbean and is lining up its next OpenFn project.

    info

    If your organization, like OS4H, is hoping to develop in-house workflow automation expertise, contact partnerships@openfn.org to learn more about the OpenFn Partner Program and training options. Also check out OpenFn Community and OpenFn Documentation to learn from other OpenFn partners and implementers from our open source community.

    - + \ No newline at end of file diff --git a/fr/blog/archive.html b/fr/blog/archive.html index 10efd4a22da..783c0d94d90 100644 --- a/fr/blog/archive.html +++ b/fr/blog/archive.html @@ -22,13 +22,13 @@ - +

    Archive

    Archive

    - + \ No newline at end of file diff --git a/fr/blog/page/2.html b/fr/blog/page/2.html index e8f13a93fdd..7185d424c2c 100644 --- a/fr/blog/page/2.html +++ b/fr/blog/page/2.html @@ -22,7 +22,7 @@ - + @@ -54,7 +54,7 @@ myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/fr/blog/page/3.html b/fr/blog/page/3.html index 05a24c3aa29..e05607ce54b 100644 --- a/fr/blog/page/3.html +++ b/fr/blog/page/3.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ over at Medium. I'm still going to write there from time to time as part of the OpenFn Founder's Blog, but today, I'm excited to announce the launch of our own, new, more tightly integrated blog.

    - + \ No newline at end of file diff --git a/fr/blog/tags.html b/fr/blog/tags.html index eb4ddc977e5..02d9e645b90 100644 --- a/fr/blog/tags.html +++ b/fr/blog/tags.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/blog/tags/african-school-of-excellence.html b/fr/blog/tags/african-school-of-excellence.html index d667127a968..225abfc2686 100644 --- a/fr/blog/tags/african-school-of-excellence.html +++ b/fr/blog/tags/african-school-of-excellence.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/fr/blog/tags/agriculture.html b/fr/blog/tags/agriculture.html index 6eddb4ee6fe..a91a169102e 100644 --- a/fr/blog/tags/agriculture.html +++ b/fr/blog/tags/agriculture.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/fr/blog/tags/airport.html b/fr/blog/tags/airport.html index e3b5e0906d9..94fbb3897fb 100644 --- a/fr/blog/tags/airport.html +++ b/fr/blog/tags/airport.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ and service for its workers and passengers. This integrated asset management system saves time and money, and prevents errors by reducing manual, paper-based data transfer between systems.

    - + \ No newline at end of file diff --git a/fr/blog/tags/announcement.html b/fr/blog/tags/announcement.html index 5190b65ccee..03f5de66797 100644 --- a/fr/blog/tags/announcement.html +++ b/fr/blog/tags/announcement.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ management information system (HMIS) used in over 40 countries, and OpenLMIS, a popular logistics system, are digital global goods. OpenFn is proud to now be officially joining them on this list.

    - + \ No newline at end of file diff --git a/fr/blog/tags/automated-reporting.html b/fr/blog/tags/automated-reporting.html index 8495e514884..ea357a95faf 100644 --- a/fr/blog/tags/automated-reporting.html +++ b/fr/blog/tags/automated-reporting.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ and service for its workers and passengers. This integrated asset management system saves time and money, and prevents errors by reducing manual, paper-based data transfer between systems.

    - + \ No newline at end of file diff --git a/fr/blog/tags/cambodia.html b/fr/blog/tags/cambodia.html index 48618f4432e..3f5938aba47 100644 --- a/fr/blog/tags/cambodia.html +++ b/fr/blog/tags/cambodia.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ secure OpenFn project space with the automated data sharing workflows required to allow for the Cambodian government and their partner NGO caseworkers to communicate with one another seamlessly.

    - + \ No newline at end of file diff --git a/fr/blog/tags/caris-foundation.html b/fr/blog/tags/caris-foundation.html index ef3e1b7cfba..ec0c7e8080d 100644 --- a/fr/blog/tags/caris-foundation.html +++ b/fr/blog/tags/caris-foundation.html @@ -22,14 +22,14 @@ - + - + \ No newline at end of file diff --git a/fr/blog/tags/carto.html b/fr/blog/tags/carto.html index 040e92c905e..974e866f5fc 100644 --- a/fr/blog/tags/carto.html +++ b/fr/blog/tags/carto.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ manual data entry and cleaning processes.The real-time connection has enabled live data monitoring for the team as iKapaData survey enumerators were conducting the survey.

    - + \ No newline at end of file diff --git a/fr/blog/tags/case-management.html b/fr/blog/tags/case-management.html index 516f4908fce..1e71b6b0ca0 100644 --- a/fr/blog/tags/case-management.html +++ b/fr/blog/tags/case-management.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ secure OpenFn project space with the automated data sharing workflows required to allow for the Cambodian government and their partner NGO caseworkers to communicate with one another seamlessly.

    - + \ No newline at end of file diff --git a/fr/blog/tags/case-study.html b/fr/blog/tags/case-study.html index 0d81a818fe6..fa39d941f19 100644 --- a/fr/blog/tags/case-study.html +++ b/fr/blog/tags/case-study.html @@ -22,7 +22,7 @@ - + @@ -54,7 +54,7 @@ and service for its workers and passengers. This integrated asset management system saves time and money, and prevents errors by reducing manual, paper-based data transfer between systems.

    - + \ No newline at end of file diff --git a/fr/blog/tags/case-study/page/2.html b/fr/blog/tags/case-study/page/2.html index 3eb23f7e638..4983365417a 100644 --- a/fr/blog/tags/case-study/page/2.html +++ b/fr/blog/tags/case-study/page/2.html @@ -22,7 +22,7 @@ - + @@ -39,7 +39,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/fr/blog/tags/comm-care.html b/fr/blog/tags/comm-care.html index bebc744c65a..40ab6fd2fe9 100644 --- a/fr/blog/tags/comm-care.html +++ b/fr/blog/tags/comm-care.html @@ -22,7 +22,7 @@ - + @@ -40,7 +40,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/fr/blog/tags/data-monitoring.html b/fr/blog/tags/data-monitoring.html index f06dceca665..9ff69cc07c6 100644 --- a/fr/blog/tags/data-monitoring.html +++ b/fr/blog/tags/data-monitoring.html @@ -22,7 +22,7 @@ - + @@ -41,7 +41,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/fr/blog/tags/data-warehouse.html b/fr/blog/tags/data-warehouse.html index a9e13495efc..ddf93693761 100644 --- a/fr/blog/tags/data-warehouse.html +++ b/fr/blog/tags/data-warehouse.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/fr/blog/tags/deployment.html b/fr/blog/tags/deployment.html index 8e5687aaeef..56df668389c 100644 --- a/fr/blog/tags/deployment.html +++ b/fr/blog/tags/deployment.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ re-victimization. Children might have to recount their whole case history, reliving their traumas time and time again in order to register and access each critical support service they needed.

    - + \ No newline at end of file diff --git a/fr/blog/tags/development.html b/fr/blog/tags/development.html index 3ab486f3861..403d1a43d2c 100644 --- a/fr/blog/tags/development.html +++ b/fr/blog/tags/development.html @@ -22,7 +22,7 @@ - + @@ -37,7 +37,7 @@ and service for its workers and passengers. This integrated asset management system saves time and money, and prevents errors by reducing manual, paper-based data transfer between systems.

    - + \ No newline at end of file diff --git a/fr/blog/tags/dhis-2.html b/fr/blog/tags/dhis-2.html index 5fbbc527e69..fdb4b4b3707 100644 --- a/fr/blog/tags/dhis-2.html +++ b/fr/blog/tags/dhis-2.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ reporting system for the ALMANACH health initiative, OpenFn provided SwissTPH with an automated, real-time connection that enables live disease monitoring in 2019.

    - + \ No newline at end of file diff --git a/fr/blog/tags/education.html b/fr/blog/tags/education.html index 876ae39aa93..b80244c043b 100644 --- a/fr/blog/tags/education.html +++ b/fr/blog/tags/education.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ data in near real-time and better serve the needs of its communities.

    - + \ No newline at end of file diff --git a/fr/blog/tags/global-goods.html b/fr/blog/tags/global-goods.html index fc061b174c0..8405be13b4c 100644 --- a/fr/blog/tags/global-goods.html +++ b/fr/blog/tags/global-goods.html @@ -22,7 +22,7 @@ - + @@ -43,7 +43,7 @@ management information system (HMIS) used in over 40 countries, and OpenLMIS, a popular logistics system, are digital global goods. OpenFn is proud to now be officially joining them on this list.

    - + \ No newline at end of file diff --git a/fr/blog/tags/health.html b/fr/blog/tags/health.html index 9d655a52e8e..f7abeecaf6d 100644 --- a/fr/blog/tags/health.html +++ b/fr/blog/tags/health.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    Un article tagué avec "health"

    Voir tous les tags

    · 7 minute de lecture

    Open Solutions for Health (“OS4H”) is an Integrated Systems for Health collaborator and implementer specializing in providing enterprise support for free and open-source systems (FOSS). They customize small, mid-range and large open source health applications for Ministries of Health, medical councils, medical doctor practices, health groups and hospitals in the Caribbean. OS4H is also our first certified OpenFn implementation partner in the Caribbean, trained to deliver workflow automation projects to help their regional partners achieve health systems interoperability.

    Peter Ricketts, CEO at OS4H, says the Dominica-based team provides sustainable solutions designed to meet the needs of organizations in small island developing states (SIDS) that will strengthen their health management operations. While OS4H specializes in digital health implementations for the Caribbean, their team of IT specialists also works across other sectors, including education and agriculture.

    “At OS4H, our mission is to improve health outcomes by matching the right technologies to the problems and build the supporting framework around it to ensure it is implemented and sustained over the long run. We believe in making high quality data and information available to those who need it, where they need it, and when they need it in a sustainable manner.” - Peter Ricketts

    osh4h-team
    Above: Members of the Open Solutions for Health team based in Roseau, Dominica.

    This year, OS4H has been working with partners at the St. Lucia Ministry of Health (MOH) to expand their in-country DHIS2 implementation to monitor key immunization indicators so that they can strengthen management operations against vaccine preventable diseases. Check out this press release to learn more about the project supported by the Pan American Health Organization (PAHO).

    DHIS2 offers robust dashboard and data visualization options, but St. Lucia’s immunization data was collected in a separate database, along with sensitive patient information that should only be accessed by authorized users. Therefore, to (i) avoid manual data entry and indicators calculations, and (ii) minimize access to sensitive patient data, OS4H sought to automate the reporting of key immunization indicators to DHIS2. After researching secure, open source, and OpenHIE-compliant options for data integration, OS4H decided to deliver this solution using the OpenFn workflow automation platform.

    In less than 1 month, OS4H successfully designed and implemented workflow automation on OpenFn that integrates the St. Lucia Health Information System (“SLUHIS”) database with DHIS2, enabling regular, nation-wide monitoring of key immunization indicators for MOH staff and epidemiologists.

    This OS4H implementation consisted of two phases: (1) training on the OpenFn platform and(2) implementation of the automated workflow for St. Lucia.

    OS4H is now a certified OpenFn implementer

    At OpenFn, we have a small implementation team that cannot meet the rising demand for workflow automation we’re seeing worldwide. Therefore, we are investing more in partner enablement to help develop the automation expertise and OpenFn implementation capacity of local IT teams solving local problems–like OS4H in the Caribbean. Earlier this year, our core team launched the OpenFn Implementation Partner Program to offer training on the OpenFn Digital Public Good, as well as on our implementation process.

    To quickly learn how to implement OpenFn, the OS4H team completed the OpenFn Partner Onboarding Training to learn about the OpenFn product suite, as well as how to successfully design and deliver workflow automation implementations end-to-end. Over the course of 2 weeks, OS4H team members attended online training sessions and completed “homework” exercises to practice OpenFn fundamentals and prepare for their upcoming, real-world projects. At the end of the training, the OS4H team officially joined the OpenFn Community, received “OpenFn Essentials” badges for OpenFn administration and development, and were prepared to kick off their first implementation with the St. Lucia Ministry of Health.

    "After adopting the OpenHIE reference architecture, we began exploring the various referenced technologies. Upon review of the interoperability layer technologies, we quickly appreciated the versatility and ease of use of OpenFn.

    When data transformation is needed, OpenFn utilizes JavaScript, a scripting language that is familiar to most developers in the Caribbean. This meant a lower learning curve, enabling us to get up and running relatively quickly. Furthermore, the support from the OpenFn core team allowed us to build in-house capacity for the full delivery cycle of an OpenFn project." - Peter Ricketts

    Automating indicators reporting for the MOH

    Following the OpenFn training, the OS4H team successfully led the design and implementation of a solution which integrates SLUHIS, the St. Lucia MOH's health information system built on a PostgreSQL database, with their DHIS2 reporting system.

    This process involved consultations with St. Lucia MOH partners to understand the SLUHIS data structure and how to map SLUHIS data points to the DHIS2 data model. Once the data mapping requirements and workflow steps were clearly defined, then OS4H was able to configure the workflow on OpenFn and schedule the automation to run hourly.

    osh4h-flow

    How the workflow automation works:

    1. On an hourly basis, OpenFn executes complex SQL queries to extract and aggregate immunization data from the SLUHIS PostgreSQL database.
    2. OpenFn next fetches a list of “data mapping rules” from SLUHIS, which inform how municipalities should be reassigned to organization units in the DHIS2 location hierarchy.
    3. OpenFn then maps the SLUHIS aggregated indicators results to related DHIS2 data elements to prepare the data for import.
    4. Finally, using the DHIS2 adaptor, OpenFn imports data values to DHIS2, updating linked indicators and dashboards.

    As the workflow runs, all activity history can be centrally monitored in the OpenFn platform, and alerts are configured to notify St. Lucia MOH partners if any errors are thrown.

    osh4h-dashboard
    Above: Screenshot of the test DHIS2 dashboard for key immunization indicators, which displays data from SLUHIS that is aggregated and updated by OpenFn daily. This image contains test data only.

    For the MOH staff and epidemiologist end users, the DHIS2 immunization dashboards are updated automatically and regularly, ensuring access to timely and accurate information. MOH dashboard users don't need to worry about manual reporting and data analysis tasks. Automation enables MOH staff to focus on identifying trends and patterns in the administration of vaccines to improve program management operations.

    These users might not even be aware that OpenFn is engine powering the workflow automation under the hood—for them, the dashboard just works.

    osh4h-meet
    Above: Screenshot from online meeting with Taylor Downs (OpenFn) and Clem Francis (Developer, OS4H) celebrating the successful setup of an OpenFn workflow that automates calculating and reporting aggregated data values for key indicators to DHIS2.

    What's next?

    In April 2023, OS4H successfully launched the DHIS2 dashboard solution and handed over the monitoring of the OpenFn automation to the St. Lucia MOH team for the duration of the pilot. In the coming months, the St. Lucia MOH and OS4H will consider adding functionality and deploying the solution on a local, ministry-managed server, using OpenFn Lightning (the OpenFn “v2” fully open-source web app) for continued use at a greater scale.

    In the meantime, the OS4H team is continuing to deliver transformative digital solutions for partners across the Caribbean and is lining up its next OpenFn project.

    info

    If your organization, like OS4H, is hoping to develop in-house workflow automation expertise, contact partnerships@openfn.org to learn more about the OpenFn Partner Program and training options. Also check out OpenFn Community and OpenFn Documentation to learn from other OpenFn partners and implementers from our open source community.

    - + \ No newline at end of file diff --git a/fr/blog/tags/healthcare.html b/fr/blog/tags/healthcare.html index f3d4db9f265..ddce0b7d9ed 100644 --- a/fr/blog/tags/healthcare.html +++ b/fr/blog/tags/healthcare.html @@ -22,7 +22,7 @@ - + @@ -38,7 +38,7 @@ reporting system for the ALMANACH health initiative, OpenFn provided SwissTPH with an automated, real-time connection that enables live disease monitoring in 2019.

    - + \ No newline at end of file diff --git a/fr/blog/tags/i-kapa-data.html b/fr/blog/tags/i-kapa-data.html index a3027f83f2a..76dab442826 100644 --- a/fr/blog/tags/i-kapa-data.html +++ b/fr/blog/tags/i-kapa-data.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ manual data entry and cleaning processes.The real-time connection has enabled live data monitoring for the team as iKapaData survey enumerators were conducting the survey.

    - + \ No newline at end of file diff --git a/fr/blog/tags/ibm-maximo.html b/fr/blog/tags/ibm-maximo.html index 8cecc1f28f3..ceb23247e75 100644 --- a/fr/blog/tags/ibm-maximo.html +++ b/fr/blog/tags/ibm-maximo.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ and service for its workers and passengers. This integrated asset management system saves time and money, and prevents errors by reducing manual, paper-based data transfer between systems.

    - + \ No newline at end of file diff --git a/fr/blog/tags/kgvk.html b/fr/blog/tags/kgvk.html index 271d55c5fde..7a2ab7816b6 100644 --- a/fr/blog/tags/kgvk.html +++ b/fr/blog/tags/kgvk.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/fr/blog/tags/kobo-toolbox.html b/fr/blog/tags/kobo-toolbox.html index 5b6be15e929..121ba759426 100644 --- a/fr/blog/tags/kobo-toolbox.html +++ b/fr/blog/tags/kobo-toolbox.html @@ -22,13 +22,13 @@ - +

    Un article tagué avec "Kobo Toolbox"

    Voir tous les tags

    · 4 minute de lecture

    Since 2020, the Wildlife Conservation Society (“WCS”) has leveraged the OpenFn Integration Toolkit to collect, clean, and integrate critical data for critical conservation programs targeting the world's largest wild places. WCS and its partners work at the frontline of conservation, and with support from OpenFn, they can automatically and seamlessly integrate and quickly analyse the masses of data collected across dozens of countries.

    - + \ No newline at end of file diff --git a/fr/blog/tags/kopo-kopo.html b/fr/blog/tags/kopo-kopo.html index c98deb04b00..ed01c061e86 100644 --- a/fr/blog/tags/kopo-kopo.html +++ b/fr/blog/tags/kopo-kopo.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/fr/blog/tags/learning-management-system.html b/fr/blog/tags/learning-management-system.html index 395b5505cc6..8cb5c5494a0 100644 --- a/fr/blog/tags/learning-management-system.html +++ b/fr/blog/tags/learning-management-system.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ reading-for-enjoyment initiative, which promotes reading and writing in mother tongue languages. To effectively monitor program activities and children reached across the country, Nal’ibali needed to integrate multiple data platforms.

    - + \ No newline at end of file diff --git a/fr/blog/tags/m-pesa.html b/fr/blog/tags/m-pesa.html index 250438ee123..a793a5f08c9 100644 --- a/fr/blog/tags/m-pesa.html +++ b/fr/blog/tags/m-pesa.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/fr/blog/tags/moh.html b/fr/blog/tags/moh.html index 04f6b4b2bf9..7d8275c67a7 100644 --- a/fr/blog/tags/moh.html +++ b/fr/blog/tags/moh.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    Un article tagué avec "MOH"

    Voir tous les tags

    · 7 minute de lecture

    Open Solutions for Health (“OS4H”) is an Integrated Systems for Health collaborator and implementer specializing in providing enterprise support for free and open-source systems (FOSS). They customize small, mid-range and large open source health applications for Ministries of Health, medical councils, medical doctor practices, health groups and hospitals in the Caribbean. OS4H is also our first certified OpenFn implementation partner in the Caribbean, trained to deliver workflow automation projects to help their regional partners achieve health systems interoperability.

    Peter Ricketts, CEO at OS4H, says the Dominica-based team provides sustainable solutions designed to meet the needs of organizations in small island developing states (SIDS) that will strengthen their health management operations. While OS4H specializes in digital health implementations for the Caribbean, their team of IT specialists also works across other sectors, including education and agriculture.

    “At OS4H, our mission is to improve health outcomes by matching the right technologies to the problems and build the supporting framework around it to ensure it is implemented and sustained over the long run. We believe in making high quality data and information available to those who need it, where they need it, and when they need it in a sustainable manner.” - Peter Ricketts

    osh4h-team
    Above: Members of the Open Solutions for Health team based in Roseau, Dominica.

    This year, OS4H has been working with partners at the St. Lucia Ministry of Health (MOH) to expand their in-country DHIS2 implementation to monitor key immunization indicators so that they can strengthen management operations against vaccine preventable diseases. Check out this press release to learn more about the project supported by the Pan American Health Organization (PAHO).

    DHIS2 offers robust dashboard and data visualization options, but St. Lucia’s immunization data was collected in a separate database, along with sensitive patient information that should only be accessed by authorized users. Therefore, to (i) avoid manual data entry and indicators calculations, and (ii) minimize access to sensitive patient data, OS4H sought to automate the reporting of key immunization indicators to DHIS2. After researching secure, open source, and OpenHIE-compliant options for data integration, OS4H decided to deliver this solution using the OpenFn workflow automation platform.

    In less than 1 month, OS4H successfully designed and implemented workflow automation on OpenFn that integrates the St. Lucia Health Information System (“SLUHIS”) database with DHIS2, enabling regular, nation-wide monitoring of key immunization indicators for MOH staff and epidemiologists.

    This OS4H implementation consisted of two phases: (1) training on the OpenFn platform and(2) implementation of the automated workflow for St. Lucia.

    OS4H is now a certified OpenFn implementer

    At OpenFn, we have a small implementation team that cannot meet the rising demand for workflow automation we’re seeing worldwide. Therefore, we are investing more in partner enablement to help develop the automation expertise and OpenFn implementation capacity of local IT teams solving local problems–like OS4H in the Caribbean. Earlier this year, our core team launched the OpenFn Implementation Partner Program to offer training on the OpenFn Digital Public Good, as well as on our implementation process.

    To quickly learn how to implement OpenFn, the OS4H team completed the OpenFn Partner Onboarding Training to learn about the OpenFn product suite, as well as how to successfully design and deliver workflow automation implementations end-to-end. Over the course of 2 weeks, OS4H team members attended online training sessions and completed “homework” exercises to practice OpenFn fundamentals and prepare for their upcoming, real-world projects. At the end of the training, the OS4H team officially joined the OpenFn Community, received “OpenFn Essentials” badges for OpenFn administration and development, and were prepared to kick off their first implementation with the St. Lucia Ministry of Health.

    "After adopting the OpenHIE reference architecture, we began exploring the various referenced technologies. Upon review of the interoperability layer technologies, we quickly appreciated the versatility and ease of use of OpenFn.

    When data transformation is needed, OpenFn utilizes JavaScript, a scripting language that is familiar to most developers in the Caribbean. This meant a lower learning curve, enabling us to get up and running relatively quickly. Furthermore, the support from the OpenFn core team allowed us to build in-house capacity for the full delivery cycle of an OpenFn project." - Peter Ricketts

    Automating indicators reporting for the MOH

    Following the OpenFn training, the OS4H team successfully led the design and implementation of a solution which integrates SLUHIS, the St. Lucia MOH's health information system built on a PostgreSQL database, with their DHIS2 reporting system.

    This process involved consultations with St. Lucia MOH partners to understand the SLUHIS data structure and how to map SLUHIS data points to the DHIS2 data model. Once the data mapping requirements and workflow steps were clearly defined, then OS4H was able to configure the workflow on OpenFn and schedule the automation to run hourly.

    osh4h-flow

    How the workflow automation works:

    1. On an hourly basis, OpenFn executes complex SQL queries to extract and aggregate immunization data from the SLUHIS PostgreSQL database.
    2. OpenFn next fetches a list of “data mapping rules” from SLUHIS, which inform how municipalities should be reassigned to organization units in the DHIS2 location hierarchy.
    3. OpenFn then maps the SLUHIS aggregated indicators results to related DHIS2 data elements to prepare the data for import.
    4. Finally, using the DHIS2 adaptor, OpenFn imports data values to DHIS2, updating linked indicators and dashboards.

    As the workflow runs, all activity history can be centrally monitored in the OpenFn platform, and alerts are configured to notify St. Lucia MOH partners if any errors are thrown.

    osh4h-dashboard
    Above: Screenshot of the test DHIS2 dashboard for key immunization indicators, which displays data from SLUHIS that is aggregated and updated by OpenFn daily. This image contains test data only.

    For the MOH staff and epidemiologist end users, the DHIS2 immunization dashboards are updated automatically and regularly, ensuring access to timely and accurate information. MOH dashboard users don't need to worry about manual reporting and data analysis tasks. Automation enables MOH staff to focus on identifying trends and patterns in the administration of vaccines to improve program management operations.

    These users might not even be aware that OpenFn is engine powering the workflow automation under the hood—for them, the dashboard just works.

    osh4h-meet
    Above: Screenshot from online meeting with Taylor Downs (OpenFn) and Clem Francis (Developer, OS4H) celebrating the successful setup of an OpenFn workflow that automates calculating and reporting aggregated data values for key indicators to DHIS2.

    What's next?

    In April 2023, OS4H successfully launched the DHIS2 dashboard solution and handed over the monitoring of the OpenFn automation to the St. Lucia MOH team for the duration of the pilot. In the coming months, the St. Lucia MOH and OS4H will consider adding functionality and deploying the solution on a local, ministry-managed server, using OpenFn Lightning (the OpenFn “v2” fully open-source web app) for continued use at a greater scale.

    In the meantime, the OS4H team is continuing to deliver transformative digital solutions for partners across the Caribbean and is lining up its next OpenFn project.

    info

    If your organization, like OS4H, is hoping to develop in-house workflow automation expertise, contact partnerships@openfn.org to learn more about the OpenFn Partner Program and training options. Also check out OpenFn Community and OpenFn Documentation to learn from other OpenFn partners and implementers from our open source community.

    - + \ No newline at end of file diff --git a/fr/blog/tags/mssql.html b/fr/blog/tags/mssql.html index d8344dec2cd..55bf9bd3900 100644 --- a/fr/blog/tags/mssql.html +++ b/fr/blog/tags/mssql.html @@ -22,13 +22,13 @@ - +

    Un article tagué avec "MSSQL"

    Voir tous les tags

    · 4 minute de lecture

    Since 2020, the Wildlife Conservation Society (“WCS”) has leveraged the OpenFn Integration Toolkit to collect, clean, and integrate critical data for critical conservation programs targeting the world's largest wild places. WCS and its partners work at the frontline of conservation, and with support from OpenFn, they can automatically and seamlessly integrate and quickly analyse the masses of data collected across dozens of countries.

    - + \ No newline at end of file diff --git a/fr/blog/tags/my-agro.html b/fr/blog/tags/my-agro.html index f691dd2b968..f6bc169fb12 100644 --- a/fr/blog/tags/my-agro.html +++ b/fr/blog/tags/my-agro.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/fr/blog/tags/my-sql.html b/fr/blog/tags/my-sql.html index a0a9f8e86a4..180423957fb 100644 --- a/fr/blog/tags/my-sql.html +++ b/fr/blog/tags/my-sql.html @@ -22,14 +22,14 @@ - + - + \ No newline at end of file diff --git a/fr/blog/tags/odk.html b/fr/blog/tags/odk.html index 0067dff1bd4..63a5e7f6c7b 100644 --- a/fr/blog/tags/odk.html +++ b/fr/blog/tags/odk.html @@ -22,7 +22,7 @@ - + @@ -37,7 +37,7 @@ time lag.

    - + \ No newline at end of file diff --git a/fr/blog/tags/open-solutions-for-health.html b/fr/blog/tags/open-solutions-for-health.html index 10ea21eb4e7..711d6d7a2d6 100644 --- a/fr/blog/tags/open-solutions-for-health.html +++ b/fr/blog/tags/open-solutions-for-health.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    Un article tagué avec "Open Solutions for Health"

    Voir tous les tags

    · 7 minute de lecture

    Open Solutions for Health (“OS4H”) is an Integrated Systems for Health collaborator and implementer specializing in providing enterprise support for free and open-source systems (FOSS). They customize small, mid-range and large open source health applications for Ministries of Health, medical councils, medical doctor practices, health groups and hospitals in the Caribbean. OS4H is also our first certified OpenFn implementation partner in the Caribbean, trained to deliver workflow automation projects to help their regional partners achieve health systems interoperability.

    Peter Ricketts, CEO at OS4H, says the Dominica-based team provides sustainable solutions designed to meet the needs of organizations in small island developing states (SIDS) that will strengthen their health management operations. While OS4H specializes in digital health implementations for the Caribbean, their team of IT specialists also works across other sectors, including education and agriculture.

    “At OS4H, our mission is to improve health outcomes by matching the right technologies to the problems and build the supporting framework around it to ensure it is implemented and sustained over the long run. We believe in making high quality data and information available to those who need it, where they need it, and when they need it in a sustainable manner.” - Peter Ricketts

    osh4h-team
    Above: Members of the Open Solutions for Health team based in Roseau, Dominica.

    This year, OS4H has been working with partners at the St. Lucia Ministry of Health (MOH) to expand their in-country DHIS2 implementation to monitor key immunization indicators so that they can strengthen management operations against vaccine preventable diseases. Check out this press release to learn more about the project supported by the Pan American Health Organization (PAHO).

    DHIS2 offers robust dashboard and data visualization options, but St. Lucia’s immunization data was collected in a separate database, along with sensitive patient information that should only be accessed by authorized users. Therefore, to (i) avoid manual data entry and indicators calculations, and (ii) minimize access to sensitive patient data, OS4H sought to automate the reporting of key immunization indicators to DHIS2. After researching secure, open source, and OpenHIE-compliant options for data integration, OS4H decided to deliver this solution using the OpenFn workflow automation platform.

    In less than 1 month, OS4H successfully designed and implemented workflow automation on OpenFn that integrates the St. Lucia Health Information System (“SLUHIS”) database with DHIS2, enabling regular, nation-wide monitoring of key immunization indicators for MOH staff and epidemiologists.

    This OS4H implementation consisted of two phases: (1) training on the OpenFn platform and(2) implementation of the automated workflow for St. Lucia.

    OS4H is now a certified OpenFn implementer

    At OpenFn, we have a small implementation team that cannot meet the rising demand for workflow automation we’re seeing worldwide. Therefore, we are investing more in partner enablement to help develop the automation expertise and OpenFn implementation capacity of local IT teams solving local problems–like OS4H in the Caribbean. Earlier this year, our core team launched the OpenFn Implementation Partner Program to offer training on the OpenFn Digital Public Good, as well as on our implementation process.

    To quickly learn how to implement OpenFn, the OS4H team completed the OpenFn Partner Onboarding Training to learn about the OpenFn product suite, as well as how to successfully design and deliver workflow automation implementations end-to-end. Over the course of 2 weeks, OS4H team members attended online training sessions and completed “homework” exercises to practice OpenFn fundamentals and prepare for their upcoming, real-world projects. At the end of the training, the OS4H team officially joined the OpenFn Community, received “OpenFn Essentials” badges for OpenFn administration and development, and were prepared to kick off their first implementation with the St. Lucia Ministry of Health.

    "After adopting the OpenHIE reference architecture, we began exploring the various referenced technologies. Upon review of the interoperability layer technologies, we quickly appreciated the versatility and ease of use of OpenFn.

    When data transformation is needed, OpenFn utilizes JavaScript, a scripting language that is familiar to most developers in the Caribbean. This meant a lower learning curve, enabling us to get up and running relatively quickly. Furthermore, the support from the OpenFn core team allowed us to build in-house capacity for the full delivery cycle of an OpenFn project." - Peter Ricketts

    Automating indicators reporting for the MOH

    Following the OpenFn training, the OS4H team successfully led the design and implementation of a solution which integrates SLUHIS, the St. Lucia MOH's health information system built on a PostgreSQL database, with their DHIS2 reporting system.

    This process involved consultations with St. Lucia MOH partners to understand the SLUHIS data structure and how to map SLUHIS data points to the DHIS2 data model. Once the data mapping requirements and workflow steps were clearly defined, then OS4H was able to configure the workflow on OpenFn and schedule the automation to run hourly.

    osh4h-flow

    How the workflow automation works:

    1. On an hourly basis, OpenFn executes complex SQL queries to extract and aggregate immunization data from the SLUHIS PostgreSQL database.
    2. OpenFn next fetches a list of “data mapping rules” from SLUHIS, which inform how municipalities should be reassigned to organization units in the DHIS2 location hierarchy.
    3. OpenFn then maps the SLUHIS aggregated indicators results to related DHIS2 data elements to prepare the data for import.
    4. Finally, using the DHIS2 adaptor, OpenFn imports data values to DHIS2, updating linked indicators and dashboards.

    As the workflow runs, all activity history can be centrally monitored in the OpenFn platform, and alerts are configured to notify St. Lucia MOH partners if any errors are thrown.

    osh4h-dashboard
    Above: Screenshot of the test DHIS2 dashboard for key immunization indicators, which displays data from SLUHIS that is aggregated and updated by OpenFn daily. This image contains test data only.

    For the MOH staff and epidemiologist end users, the DHIS2 immunization dashboards are updated automatically and regularly, ensuring access to timely and accurate information. MOH dashboard users don't need to worry about manual reporting and data analysis tasks. Automation enables MOH staff to focus on identifying trends and patterns in the administration of vaccines to improve program management operations.

    These users might not even be aware that OpenFn is engine powering the workflow automation under the hood—for them, the dashboard just works.

    osh4h-meet
    Above: Screenshot from online meeting with Taylor Downs (OpenFn) and Clem Francis (Developer, OS4H) celebrating the successful setup of an OpenFn workflow that automates calculating and reporting aggregated data values for key indicators to DHIS2.

    What's next?

    In April 2023, OS4H successfully launched the DHIS2 dashboard solution and handed over the monitoring of the OpenFn automation to the St. Lucia MOH team for the duration of the pilot. In the coming months, the St. Lucia MOH and OS4H will consider adding functionality and deploying the solution on a local, ministry-managed server, using OpenFn Lightning (the OpenFn “v2” fully open-source web app) for continued use at a greater scale.

    In the meantime, the OS4H team is continuing to deliver transformative digital solutions for partners across the Caribbean and is lining up its next OpenFn project.

    info

    If your organization, like OS4H, is hoping to develop in-house workflow automation expertise, contact partnerships@openfn.org to learn more about the OpenFn Partner Program and training options. Also check out OpenFn Community and OpenFn Documentation to learn from other OpenFn partners and implementers from our open source community.

    - + \ No newline at end of file diff --git a/fr/blog/tags/os-4-h.html b/fr/blog/tags/os-4-h.html index 5fc98087fe1..d0ef24812ef 100644 --- a/fr/blog/tags/os-4-h.html +++ b/fr/blog/tags/os-4-h.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    Un article tagué avec "OS4H"

    Voir tous les tags

    · 7 minute de lecture

    Open Solutions for Health (“OS4H”) is an Integrated Systems for Health collaborator and implementer specializing in providing enterprise support for free and open-source systems (FOSS). They customize small, mid-range and large open source health applications for Ministries of Health, medical councils, medical doctor practices, health groups and hospitals in the Caribbean. OS4H is also our first certified OpenFn implementation partner in the Caribbean, trained to deliver workflow automation projects to help their regional partners achieve health systems interoperability.

    Peter Ricketts, CEO at OS4H, says the Dominica-based team provides sustainable solutions designed to meet the needs of organizations in small island developing states (SIDS) that will strengthen their health management operations. While OS4H specializes in digital health implementations for the Caribbean, their team of IT specialists also works across other sectors, including education and agriculture.

    “At OS4H, our mission is to improve health outcomes by matching the right technologies to the problems and build the supporting framework around it to ensure it is implemented and sustained over the long run. We believe in making high quality data and information available to those who need it, where they need it, and when they need it in a sustainable manner.” - Peter Ricketts

    osh4h-team
    Above: Members of the Open Solutions for Health team based in Roseau, Dominica.

    This year, OS4H has been working with partners at the St. Lucia Ministry of Health (MOH) to expand their in-country DHIS2 implementation to monitor key immunization indicators so that they can strengthen management operations against vaccine preventable diseases. Check out this press release to learn more about the project supported by the Pan American Health Organization (PAHO).

    DHIS2 offers robust dashboard and data visualization options, but St. Lucia’s immunization data was collected in a separate database, along with sensitive patient information that should only be accessed by authorized users. Therefore, to (i) avoid manual data entry and indicators calculations, and (ii) minimize access to sensitive patient data, OS4H sought to automate the reporting of key immunization indicators to DHIS2. After researching secure, open source, and OpenHIE-compliant options for data integration, OS4H decided to deliver this solution using the OpenFn workflow automation platform.

    In less than 1 month, OS4H successfully designed and implemented workflow automation on OpenFn that integrates the St. Lucia Health Information System (“SLUHIS”) database with DHIS2, enabling regular, nation-wide monitoring of key immunization indicators for MOH staff and epidemiologists.

    This OS4H implementation consisted of two phases: (1) training on the OpenFn platform and(2) implementation of the automated workflow for St. Lucia.

    OS4H is now a certified OpenFn implementer

    At OpenFn, we have a small implementation team that cannot meet the rising demand for workflow automation we’re seeing worldwide. Therefore, we are investing more in partner enablement to help develop the automation expertise and OpenFn implementation capacity of local IT teams solving local problems–like OS4H in the Caribbean. Earlier this year, our core team launched the OpenFn Implementation Partner Program to offer training on the OpenFn Digital Public Good, as well as on our implementation process.

    To quickly learn how to implement OpenFn, the OS4H team completed the OpenFn Partner Onboarding Training to learn about the OpenFn product suite, as well as how to successfully design and deliver workflow automation implementations end-to-end. Over the course of 2 weeks, OS4H team members attended online training sessions and completed “homework” exercises to practice OpenFn fundamentals and prepare for their upcoming, real-world projects. At the end of the training, the OS4H team officially joined the OpenFn Community, received “OpenFn Essentials” badges for OpenFn administration and development, and were prepared to kick off their first implementation with the St. Lucia Ministry of Health.

    "After adopting the OpenHIE reference architecture, we began exploring the various referenced technologies. Upon review of the interoperability layer technologies, we quickly appreciated the versatility and ease of use of OpenFn.

    When data transformation is needed, OpenFn utilizes JavaScript, a scripting language that is familiar to most developers in the Caribbean. This meant a lower learning curve, enabling us to get up and running relatively quickly. Furthermore, the support from the OpenFn core team allowed us to build in-house capacity for the full delivery cycle of an OpenFn project." - Peter Ricketts

    Automating indicators reporting for the MOH

    Following the OpenFn training, the OS4H team successfully led the design and implementation of a solution which integrates SLUHIS, the St. Lucia MOH's health information system built on a PostgreSQL database, with their DHIS2 reporting system.

    This process involved consultations with St. Lucia MOH partners to understand the SLUHIS data structure and how to map SLUHIS data points to the DHIS2 data model. Once the data mapping requirements and workflow steps were clearly defined, then OS4H was able to configure the workflow on OpenFn and schedule the automation to run hourly.

    osh4h-flow

    How the workflow automation works:

    1. On an hourly basis, OpenFn executes complex SQL queries to extract and aggregate immunization data from the SLUHIS PostgreSQL database.
    2. OpenFn next fetches a list of “data mapping rules” from SLUHIS, which inform how municipalities should be reassigned to organization units in the DHIS2 location hierarchy.
    3. OpenFn then maps the SLUHIS aggregated indicators results to related DHIS2 data elements to prepare the data for import.
    4. Finally, using the DHIS2 adaptor, OpenFn imports data values to DHIS2, updating linked indicators and dashboards.

    As the workflow runs, all activity history can be centrally monitored in the OpenFn platform, and alerts are configured to notify St. Lucia MOH partners if any errors are thrown.

    osh4h-dashboard
    Above: Screenshot of the test DHIS2 dashboard for key immunization indicators, which displays data from SLUHIS that is aggregated and updated by OpenFn daily. This image contains test data only.

    For the MOH staff and epidemiologist end users, the DHIS2 immunization dashboards are updated automatically and regularly, ensuring access to timely and accurate information. MOH dashboard users don't need to worry about manual reporting and data analysis tasks. Automation enables MOH staff to focus on identifying trends and patterns in the administration of vaccines to improve program management operations.

    These users might not even be aware that OpenFn is engine powering the workflow automation under the hood—for them, the dashboard just works.

    osh4h-meet
    Above: Screenshot from online meeting with Taylor Downs (OpenFn) and Clem Francis (Developer, OS4H) celebrating the successful setup of an OpenFn workflow that automates calculating and reporting aggregated data values for key indicators to DHIS2.

    What's next?

    In April 2023, OS4H successfully launched the DHIS2 dashboard solution and handed over the monitoring of the OpenFn automation to the St. Lucia MOH team for the duration of the pilot. In the coming months, the St. Lucia MOH and OS4H will consider adding functionality and deploying the solution on a local, ministry-managed server, using OpenFn Lightning (the OpenFn “v2” fully open-source web app) for continued use at a greater scale.

    In the meantime, the OS4H team is continuing to deliver transformative digital solutions for partners across the Caribbean and is lining up its next OpenFn project.

    info

    If your organization, like OS4H, is hoping to develop in-house workflow automation expertise, contact partnerships@openfn.org to learn more about the OpenFn Partner Program and training options. Also check out OpenFn Community and OpenFn Documentation to learn from other OpenFn partners and implementers from our open source community.

    - + \ No newline at end of file diff --git a/fr/blog/tags/os-ca-r.html b/fr/blog/tags/os-ca-r.html index 8ca9bacb76b..c1c2fac6abf 100644 --- a/fr/blog/tags/os-ca-r.html +++ b/fr/blog/tags/os-ca-r.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ secure OpenFn project space with the automated data sharing workflows required to allow for the Cambodian government and their partner NGO caseworkers to communicate with one another seamlessly.

    - + \ No newline at end of file diff --git a/fr/blog/tags/payments.html b/fr/blog/tags/payments.html index e6b2887a116..4a51b50c447 100644 --- a/fr/blog/tags/payments.html +++ b/fr/blog/tags/payments.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/fr/blog/tags/postgre-sql.html b/fr/blog/tags/postgre-sql.html index b7cdc753a16..1e50004f653 100644 --- a/fr/blog/tags/postgre-sql.html +++ b/fr/blog/tags/postgre-sql.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    2 articles tagué avec "PostgreSQL"

    Voir tous les tags

    · 4 minute de lecture

    Since 2020, the Wildlife Conservation Society (“WCS”) has leveraged the OpenFn Integration Toolkit to collect, clean, and integrate critical data for critical conservation programs targeting the world's largest wild places. WCS and its partners work at the frontline of conservation, and with support from OpenFn, they can automatically and seamlessly integrate and quickly analyse the masses of data collected across dozens of countries.

    - + \ No newline at end of file diff --git a/fr/blog/tags/primero.html b/fr/blog/tags/primero.html index 92065f79e80..dbf9825bf54 100644 --- a/fr/blog/tags/primero.html +++ b/fr/blog/tags/primero.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ secure OpenFn project space with the automated data sharing workflows required to allow for the Cambodian government and their partner NGO caseworkers to communicate with one another seamlessly.

    - + \ No newline at end of file diff --git a/fr/blog/tags/redash.html b/fr/blog/tags/redash.html index e8c752fcea8..1d5889143c3 100644 --- a/fr/blog/tags/redash.html +++ b/fr/blog/tags/redash.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/fr/blog/tags/salesforce.html b/fr/blog/tags/salesforce.html index e179ef55601..92e41d49889 100644 --- a/fr/blog/tags/salesforce.html +++ b/fr/blog/tags/salesforce.html @@ -22,7 +22,7 @@ - + @@ -44,7 +44,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/fr/blog/tags/sms.html b/fr/blog/tags/sms.html index a3117386f70..7ca07ae6f14 100644 --- a/fr/blog/tags/sms.html +++ b/fr/blog/tags/sms.html @@ -22,7 +22,7 @@ - + @@ -36,7 +36,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/fr/blog/tags/st-lucia.html b/fr/blog/tags/st-lucia.html index a9b66afc9d2..c849015de39 100644 --- a/fr/blog/tags/st-lucia.html +++ b/fr/blog/tags/st-lucia.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    Un article tagué avec "St. Lucia"

    Voir tous les tags

    · 7 minute de lecture

    Open Solutions for Health (“OS4H”) is an Integrated Systems for Health collaborator and implementer specializing in providing enterprise support for free and open-source systems (FOSS). They customize small, mid-range and large open source health applications for Ministries of Health, medical councils, medical doctor practices, health groups and hospitals in the Caribbean. OS4H is also our first certified OpenFn implementation partner in the Caribbean, trained to deliver workflow automation projects to help their regional partners achieve health systems interoperability.

    Peter Ricketts, CEO at OS4H, says the Dominica-based team provides sustainable solutions designed to meet the needs of organizations in small island developing states (SIDS) that will strengthen their health management operations. While OS4H specializes in digital health implementations for the Caribbean, their team of IT specialists also works across other sectors, including education and agriculture.

    “At OS4H, our mission is to improve health outcomes by matching the right technologies to the problems and build the supporting framework around it to ensure it is implemented and sustained over the long run. We believe in making high quality data and information available to those who need it, where they need it, and when they need it in a sustainable manner.” - Peter Ricketts

    osh4h-team
    Above: Members of the Open Solutions for Health team based in Roseau, Dominica.

    This year, OS4H has been working with partners at the St. Lucia Ministry of Health (MOH) to expand their in-country DHIS2 implementation to monitor key immunization indicators so that they can strengthen management operations against vaccine preventable diseases. Check out this press release to learn more about the project supported by the Pan American Health Organization (PAHO).

    DHIS2 offers robust dashboard and data visualization options, but St. Lucia’s immunization data was collected in a separate database, along with sensitive patient information that should only be accessed by authorized users. Therefore, to (i) avoid manual data entry and indicators calculations, and (ii) minimize access to sensitive patient data, OS4H sought to automate the reporting of key immunization indicators to DHIS2. After researching secure, open source, and OpenHIE-compliant options for data integration, OS4H decided to deliver this solution using the OpenFn workflow automation platform.

    In less than 1 month, OS4H successfully designed and implemented workflow automation on OpenFn that integrates the St. Lucia Health Information System (“SLUHIS”) database with DHIS2, enabling regular, nation-wide monitoring of key immunization indicators for MOH staff and epidemiologists.

    This OS4H implementation consisted of two phases: (1) training on the OpenFn platform and(2) implementation of the automated workflow for St. Lucia.

    OS4H is now a certified OpenFn implementer

    At OpenFn, we have a small implementation team that cannot meet the rising demand for workflow automation we’re seeing worldwide. Therefore, we are investing more in partner enablement to help develop the automation expertise and OpenFn implementation capacity of local IT teams solving local problems–like OS4H in the Caribbean. Earlier this year, our core team launched the OpenFn Implementation Partner Program to offer training on the OpenFn Digital Public Good, as well as on our implementation process.

    To quickly learn how to implement OpenFn, the OS4H team completed the OpenFn Partner Onboarding Training to learn about the OpenFn product suite, as well as how to successfully design and deliver workflow automation implementations end-to-end. Over the course of 2 weeks, OS4H team members attended online training sessions and completed “homework” exercises to practice OpenFn fundamentals and prepare for their upcoming, real-world projects. At the end of the training, the OS4H team officially joined the OpenFn Community, received “OpenFn Essentials” badges for OpenFn administration and development, and were prepared to kick off their first implementation with the St. Lucia Ministry of Health.

    "After adopting the OpenHIE reference architecture, we began exploring the various referenced technologies. Upon review of the interoperability layer technologies, we quickly appreciated the versatility and ease of use of OpenFn.

    When data transformation is needed, OpenFn utilizes JavaScript, a scripting language that is familiar to most developers in the Caribbean. This meant a lower learning curve, enabling us to get up and running relatively quickly. Furthermore, the support from the OpenFn core team allowed us to build in-house capacity for the full delivery cycle of an OpenFn project." - Peter Ricketts

    Automating indicators reporting for the MOH

    Following the OpenFn training, the OS4H team successfully led the design and implementation of a solution which integrates SLUHIS, the St. Lucia MOH's health information system built on a PostgreSQL database, with their DHIS2 reporting system.

    This process involved consultations with St. Lucia MOH partners to understand the SLUHIS data structure and how to map SLUHIS data points to the DHIS2 data model. Once the data mapping requirements and workflow steps were clearly defined, then OS4H was able to configure the workflow on OpenFn and schedule the automation to run hourly.

    osh4h-flow

    How the workflow automation works:

    1. On an hourly basis, OpenFn executes complex SQL queries to extract and aggregate immunization data from the SLUHIS PostgreSQL database.
    2. OpenFn next fetches a list of “data mapping rules” from SLUHIS, which inform how municipalities should be reassigned to organization units in the DHIS2 location hierarchy.
    3. OpenFn then maps the SLUHIS aggregated indicators results to related DHIS2 data elements to prepare the data for import.
    4. Finally, using the DHIS2 adaptor, OpenFn imports data values to DHIS2, updating linked indicators and dashboards.

    As the workflow runs, all activity history can be centrally monitored in the OpenFn platform, and alerts are configured to notify St. Lucia MOH partners if any errors are thrown.

    osh4h-dashboard
    Above: Screenshot of the test DHIS2 dashboard for key immunization indicators, which displays data from SLUHIS that is aggregated and updated by OpenFn daily. This image contains test data only.

    For the MOH staff and epidemiologist end users, the DHIS2 immunization dashboards are updated automatically and regularly, ensuring access to timely and accurate information. MOH dashboard users don't need to worry about manual reporting and data analysis tasks. Automation enables MOH staff to focus on identifying trends and patterns in the administration of vaccines to improve program management operations.

    These users might not even be aware that OpenFn is engine powering the workflow automation under the hood—for them, the dashboard just works.

    osh4h-meet
    Above: Screenshot from online meeting with Taylor Downs (OpenFn) and Clem Francis (Developer, OS4H) celebrating the successful setup of an OpenFn workflow that automates calculating and reporting aggregated data values for key indicators to DHIS2.

    What's next?

    In April 2023, OS4H successfully launched the DHIS2 dashboard solution and handed over the monitoring of the OpenFn automation to the St. Lucia MOH team for the duration of the pilot. In the coming months, the St. Lucia MOH and OS4H will consider adding functionality and deploying the solution on a local, ministry-managed server, using OpenFn Lightning (the OpenFn “v2” fully open-source web app) for continued use at a greater scale.

    In the meantime, the OS4H team is continuing to deliver transformative digital solutions for partners across the Caribbean and is lining up its next OpenFn project.

    info

    If your organization, like OS4H, is hoping to develop in-house workflow automation expertise, contact partnerships@openfn.org to learn more about the OpenFn Partner Program and training options. Also check out OpenFn Community and OpenFn Documentation to learn from other OpenFn partners and implementers from our open source community.

    - + \ No newline at end of file diff --git a/fr/blog/tags/supply-chain-system.html b/fr/blog/tags/supply-chain-system.html index 5e6116a63b1..1a4ee4a181d 100644 --- a/fr/blog/tags/supply-chain-system.html +++ b/fr/blog/tags/supply-chain-system.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ activities. With this integrated service system, X-runner can deliver high quality customer service and technical assistance to their customers, with no time lag.

    - + \ No newline at end of file diff --git a/fr/blog/tags/survey-cto.html b/fr/blog/tags/survey-cto.html index 93587d2aad1..24d2b8f9d06 100644 --- a/fr/blog/tags/survey-cto.html +++ b/fr/blog/tags/survey-cto.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ manual data entry and cleaning processes.The real-time connection has enabled live data monitoring for the team as iKapaData survey enumerators were conducting the survey.

    - + \ No newline at end of file diff --git a/fr/blog/tags/swiss-tph.html b/fr/blog/tags/swiss-tph.html index edcab878e40..9e4661d7eff 100644 --- a/fr/blog/tags/swiss-tph.html +++ b/fr/blog/tags/swiss-tph.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ reporting system for the ALMANACH health initiative, OpenFn provided SwissTPH with an automated, real-time connection that enables live disease monitoring in 2019.

    - + \ No newline at end of file diff --git a/fr/blog/tags/telerivet.html b/fr/blog/tags/telerivet.html index a80fb899a62..089714b721b 100644 --- a/fr/blog/tags/telerivet.html +++ b/fr/blog/tags/telerivet.html @@ -22,7 +22,7 @@ - + @@ -33,7 +33,7 @@ to traditional banks and financing. In this post, we highlight our partner myAgro, an organization leveraging OpenFn automation to help scale its programs towards its goal of serving 1 million farmers in 2025.

    - + \ No newline at end of file diff --git a/fr/blog/tags/tips.html b/fr/blog/tags/tips.html index e20d16f381c..45112181564 100644 --- a/fr/blog/tags/tips.html +++ b/fr/blog/tags/tips.html @@ -22,7 +22,7 @@ - + @@ -30,7 +30,7 @@

    2 articles tagué avec "tips"

    Voir tous les tags
    - + \ No newline at end of file diff --git a/fr/blog/tags/unicef.html b/fr/blog/tags/unicef.html index 9bba4996680..65b151d7c27 100644 --- a/fr/blog/tags/unicef.html +++ b/fr/blog/tags/unicef.html @@ -22,7 +22,7 @@ - + @@ -35,7 +35,7 @@ secure OpenFn project space with the automated data sharing workflows required to allow for the Cambodian government and their partner NGO caseworkers to communicate with one another seamlessly.

    - + \ No newline at end of file diff --git a/fr/blog/tags/wash.html b/fr/blog/tags/wash.html index f30949bd9de..657df668f88 100644 --- a/fr/blog/tags/wash.html +++ b/fr/blog/tags/wash.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ activities. With this integrated service system, X-runner can deliver high quality customer service and technical assistance to their customers, with no time lag.

    - + \ No newline at end of file diff --git a/fr/blog/tags/wcs.html b/fr/blog/tags/wcs.html index 60ba1c39ac1..7e87b1866ab 100644 --- a/fr/blog/tags/wcs.html +++ b/fr/blog/tags/wcs.html @@ -22,13 +22,13 @@ - +

    Un article tagué avec "WCS"

    Voir tous les tags

    · 4 minute de lecture

    Since 2020, the Wildlife Conservation Society (“WCS”) has leveraged the OpenFn Integration Toolkit to collect, clean, and integrate critical data for critical conservation programs targeting the world's largest wild places. WCS and its partners work at the frontline of conservation, and with support from OpenFn, they can automatically and seamlessly integrate and quickly analyse the masses of data collected across dozens of countries.

    - + \ No newline at end of file diff --git a/fr/blog/tags/wildlife.html b/fr/blog/tags/wildlife.html index 3dc17f06e68..a06732b68f0 100644 --- a/fr/blog/tags/wildlife.html +++ b/fr/blog/tags/wildlife.html @@ -22,13 +22,13 @@ - +

    Un article tagué avec "wildlife"

    Voir tous les tags

    · 4 minute de lecture

    Since 2020, the Wildlife Conservation Society (“WCS”) has leveraged the OpenFn Integration Toolkit to collect, clean, and integrate critical data for critical conservation programs targeting the world's largest wild places. WCS and its partners work at the frontline of conservation, and with support from OpenFn, they can automatically and seamlessly integrate and quickly analyse the masses of data collected across dozens of countries.

    - + \ No newline at end of file diff --git a/fr/blog/tags/x-runner.html b/fr/blog/tags/x-runner.html index 65ee1a71830..1865c822f60 100644 --- a/fr/blog/tags/x-runner.html +++ b/fr/blog/tags/x-runner.html @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ activities. With this integrated service system, X-runner can deliver high quality customer service and technical assistance to their customers, with no time lag.

    - + \ No newline at end of file diff --git a/fr/blog/tags/zoho.html b/fr/blog/tags/zoho.html index c09e8e8b6a5..f12f5a37548 100644 --- a/fr/blog/tags/zoho.html +++ b/fr/blog/tags/zoho.html @@ -22,7 +22,7 @@ - + @@ -31,7 +31,7 @@ manual data entry and cleaning processes.The real-time connection has enabled live data monitoring for the team as iKapaData survey enumerators were conducting the survey.

    - + \ No newline at end of file diff --git a/fr/documentation.html b/fr/documentation.html index bd20b5f5bb9..103fb093188 100644 --- a/fr/documentation.html +++ b/fr/documentation.html @@ -22,13 +22,13 @@ - +

    About

    What is OpenFn?

    tip

    OpenFn is software that makes it easier for governments and NGOs to connect the different technologies they use, share data securely, drive critical business processes, and scale their interventions via workflow automation and real-time interoperability.

    OpenFn is a suite of data integration, interoperability, and business process automation (i.e., workflow) tools that's used by governments, NGOs, and social enterprises in the health and humanitarian sectors. It enables users to connect any system, and comes with adaptors (i.e. connectors) for over 70 apps.

    Some OpenFn use cases are: Business process and workflow automations | Data Integration and Interoperability | Data Clearning Pipelines | Data Sharing and Reporting | Data Warehouse and Analytics | Legacy Systems Integration

    Who is it built by?

    OpenFn products are built by the Open Function Group and a growing community of open-source contributors.

    Our products

    OpenFn has several products, which are all fully interoperable. This gives our users the freedom to switch between any and all of the OpenFn products.

    All OpenFn products, other than the OpenFn iPaaS are part of the free and open-source OpenFn Integration Toolkit. This Toolkit is a Digital Public Good (a "DPG") recognized in the DPG Registry and Digital Square's Global Goods Guidebook.

    OpenFn v1

    OpenFn v1 is an integration-platform-as-a-service or "iPaaS". It is enterprise-grade software, hosted by OpenFn. We recommend starting out there - you can create an account for free, or view our pricing here.

    OpenFn v2: Lightning ⚡

    OpenFn/Lightning is a fully open source workflow automation web application which can be deployed and run anywhere. It's the v2 of our digital public good. It is designed for governments and NGOs who want state-of-the-art workflow automation and data integration/interoperability capabilities with fully-fledged user management and auditing capabilities through a managed or entirely self-hosted platform.

    Lightning relies on the same tried-and-trusted core technology as the OpenFn iPaaS and comes with an improved, visual interface for building integrations.

    OpenFn/Lightning is now in beta

    Lightning is in beta, but will be validated for production use and publicly released in the second half of 2023.

    If you have any questions about our products, please don't hesitate to email admin@openfn.org.

    OpenFn developer tooling

    OpenFn/cli

    A set of CLI tools for writing & testing expressions, managing OpenFn projects, and developing adaptors.

    note

    You can view the technical documentation and source code for OpenFn's FOSS integration tools and adaptors in their respective repositories at Github.com/OpenFn or see Deploy section for an overview of the FOSS options and additional docs.

    The Community Forum

    Finally, please make sure to check out our Discourse forum at community.openfn.org. Sign up and join the conversation. Usually, that's the quickest way to get help if you've got questions that aren't answered here.

    - + \ No newline at end of file diff --git a/fr/documentation/about-lightning.html b/fr/documentation/about-lightning.html index ee2cebe8df9..3caf06a143f 100644 --- a/fr/documentation/about-lightning.html +++ b/fr/documentation/about-lightning.html @@ -22,13 +22,13 @@ - +

    Lightning (Beta)

    Introducing Lightning

    OpenFn/Lightning is the v2 of the OpenFn integration software: a fully open source workflow automation platform designed for governments and NGOs who need a flexible solution to integrate and connect any system.

    Leveraging the tech powering the field-tested enterprise OpenFn platform...

    Lightning brings together the tried and tested technology which we have been using since 2015 (the OpenFn Integration Toolkit) to manage the orchestration and execution of integrations in a stable, scalable and secure way.

    ...and providing a fully open source web app with a user-friendly web interface.

    A fully open source web app, it can be deployed anywhere through Docker and comes with a user-friendly, low-code interface with the full functionality needed for organizations to build, run and audit their workflows all in one place.

    Lightning

    Build

    Empower more users in your organization to have a say in what gets automated and how. Lightning’s visual interface makes workflows more intelligible to non-technical users, bridging the gap between the IT specialists that build out automations and program managers that are the real business/ program experts on the processes that need automating.

    Lightning build interface

    Audit

    Treat every workflow run with the care and attention it deserves. In OpenFn, each incoming request or transaction that gets processed is more than a piece of data - it represents a vulnerable child in need of critical support, a farmer managing their savings to make sure they can afford the next harvest. Lightning provides users with a dashboard that allows them to monitor the health of their integrations to make sure no request goes unprocessed.

    Lightning audit interface

    Features

    General
    • Deploy Lightning via docker
    • Create and delete user accounts
    • Create new projects and assign users with different access levels to these projects (owner/admin/editor/viewer)
    • Transfer credential ownership to another user
    • View an audit trail of all credential changes (superuser role)
    • Set up SSO via an identity provider
    • Generate and revoke API tokens
    • List projects, jobs and runs via JSON API
    Workflow builder
    • Create a new workflow with a webhook or cron trigger
    • Create and configure jobs for a workflow with any OpenFn adaptor and operation
    • Create credentials through a form
    • View all available operations for a given adaptor
    • View the metadata from your external system (DHIS2 and Salesforce)
    • View the input and output from the last run of each job in a workflow
    • Run a job manually
    Runs history
    • View all runs grouped by workflow
    • Search and filter runs by status, workflow and run logs
    • Retry a workflow run from the start (first job)
    Project settings
    • Get notified via email on run failure
    • Receive a daily, weekly or monthly digest of project activity
    • View collaborators for a project
    • Update a project name and description

    Roadmap

    See the Lightning Roadmap for a detailed list of features that are in the backlog, planned, and/or in development for the OpenFn Digital Public Good.

    You can follow our progress and track delivered features in our changelog.

    Try it out

    Please note

    Lightning is still in Beta.

    You have 3 options for exploring OpenFn/Lightning:

    1. For quick viewing, visit demo.openfn.org and log into our demo account with username: demo@openfn.org password: welcome123. (NOTE that any changes made here are lost when the demo resets every 24 hours. I.e., don't build things you'd like to keep.)
    2. To get your own account and start building non-production workflows, register for an account at app.openfn.org.
    3. To install and run Lightning locally follow the instructions in the github README.

    Go through the self-paced user interview to learn how OpenFn Lightning works and help us out with feedback in just 15 minutes.

    Guiding principles

    Lightning is developed in line with the principles for digital development and under the guidance of it's Open Source Steering Committee which you can read about here.

    On top of this, Lightning follows 4 key principles which determine how it should be developed:

    1. Standards and compliance matter

    Lightning is part of the OpenFn Integration Toolkit which is a certified Digital Public Good. It is fully open source and even has an Open Source Steering Committee to make sure our users can influence the roadmap.

    Lightning workflows can be used to automatically enforce and apply data exchange standards, such as FHIR and ADX. Lightning's design and roadmap are driven by open standards, and will therefore provide a GovStack- and OpenHIE-compliant workflow engine. Learn more via the following resources:

    2. Interoperability is an ongoing process

    Anyone that has worked on integration projects in the past is well aware that integrations do break. No matter how well designed they are, the fact is that they connect multiple systems that all change over time: new API versions get released, data models change, IDs, codes and mappings change, data standards are updated and the processes themselves evolve. This is why Lightning will include:

    Enhanced testing and debugging:

    • Save data from workflow runs as test data for robust workflow testing of edge cases
    • View the input and output for each step in a workflow to easily identify where an error occurred
    • Throw custom errors to improve API messages (adaptors)
    • Add custom logic to handle a workflow step failure (fail triggers)

    First of class monitoring:

    • Get notified on run failures
    • View the status of every run
    • Search workflow runs by input/output data and logs
    • Filter workflow runs by status, workflow name and date

    Re-processing functionality:

    • Bulk reprocess workflow runs after updating workflow steps to course-correct if a workflow has been running with flawed logic

    3. Collaboration is key

    On one hand, the users that understand what processes need automating are (more often than not) business analysts, not developers. They’re the experts on what needs to happen when and where, and they’re very capable of planning out integrations and putting together mapping specifications and bpmn flows.

    On the other hand, integrations often require custom logic that cannot be simplified through low-code and therefore must be implemented by software engineers.

    That’s why the best integrations are built when non-technical users and developers collaborate. Lightning is being developed to bridge the gap between non-technical and technical users through:

    Intuitive, user-friendly user interface for non-technical users:

    • Understand a workflow in a visual, human-readable format (abstract away from code to make workflows understandable to non-technical users)
    • Build credentials through a form interface (remove the need to read through confusing API documentation)
    • Build API requests through a form interface
    • Save mappings used in workflows as constants so they can be easily viewed and edited without needing to read code
    • Clear documentation for users to learn how to plan and build integrations

    Projects-as-code and CLI for a developer interface:

    • Export, import and configure projects as code in the code editor of your choice
    • Run, test and deploy projects through a command line interface
    • Review and track changes through version control

    Collaboration functionality:

    • Track changes through version control
    • Rollback to a previous version
    • Get notified when a workflow is changed
    • Share a link to a specific workflow error on the runs history page
    • Share a link to a specific workflow step within the builder
    • Add collaborators as view-only user or editor to a project
    • Audit all changes made to credentials

    4. It’s not "just" a request or a piece of data, it’s a person

    OpenFn specializes in integration tooling for the health and humanitarian sector. This means that behind every piece of data which comes in through a request lies a person in need of critical services. This is why Lightning focusses on:

    Accountability:

    • Credential audit trail
    • Version control

    Security:

    • Secure credential management (encrypted at REST, credential secrets are scrubbed from logs, secure credential sharing
    • Zero-retention pipelines
    • Role-based project access
    • Additional authentication rules for webhooks

    Security

    OpenFn treats security as a top priority, and is trusted to handle information of the most sensitive nature (for example UNICEF’s child case data).

    To increase transparency and accountability around security, as well to help other digital public goods think through key aspects of their own organizations’ security postures, below is a list of the key aspects of our own security program.

    Organizational security practices

    To ensure a positive security posture at OpenFn, we:

    • Conduct Employee IT security onboarding training & policy
    • Run monthly security standups with the whole team
    • Conduct an annual security review informed by the OWASP ASVS

    DevSecOps

    To ensure best practices in our code we:

    • Monitor dependency vulnerabilities via Github’s dependabot
    • Perform static code analysis on each commit with Sobelow
    • Ensure code is clean and standardised through preflight checks
    • Monitor code coverage of unit tests and integration tests with Codecov

    Roles and permissions

    Lightning provides identity and access management for users via various roles and permissions which determine what level of access they have for resources across projects and instances (i.e., deployments).

    Lightning has 2 types of access levels:

    1. Instance-wide access levels are managed via an attribute on the user object:
    • Superusers are the administrator of the Lightning instance. They can manage projects and users, configure authentication providers and view the audit trail.
    • Users are normal Lightning users. They can manage their own account and credentials, and have access to projects they are added to.
    1. Project-wide access levels
    • A project viewer can view the resources of a project in read-only mode and configure their own project digest and failure alerts.
    • A project editor can view, create and edit the jobs and workflows of a project they have access to, as well as run and rerun jobs.
    • A project admin has administration access to project members. They can edit the name and description as well as delete a project.
    • A project owner can delete a project.

    Application security

    Lightning is designed to:

    • Scrub credential data from run logs
    • Encrypt credentials at REST
    • Track credential changes through an audit trail
    • Encrypt passwords
    • Enforce access controls with deny by default
    • Allow users to differentiate between staging and production credentials
    • Enable secure credential transfer across users
    • Purge credentials and user data on account deletion
    • Allow administrators to configure SSO through an identity provider

    Data residency

    OpenFn Lightning is fully open source and can be deployed in any country. We offer high-availability managed deployments that are localized to any GCP or AWS location—guaranteeing that no data ever leaves the selected country.

    Implementation guidance and recommendations

    To help our users adopt best practices when it comes to the design of their integrations, we’ve published a Security Guidebook for data integration implementations.

    Get involved

    We are building out in the open, follow our progress on Github by clicking ‘Watch’ to track updates and new releases. Ongoing discussions with our Open Source Steering Committee about Lightning are documented on our community forum. Your feedback and comments are welcome there. If you would like to become a beta user or learn more about Lightning, book in a call with our product manager here: https://calendly.com/amber-openfn/short-call.

    Lightning preview

    Lightning FAQ

    I can see that Lightning was built recently, is it new? And if so, how can I trust it?

    The Lightning repository may be new, but the technology isn’t. We’ve built out Lightning by porting the tried and tested code from our proprietary platform. In other words, Lightning is built with code that has been used in production by governments and NGOs since 2015 and already handles tens of millions of transactions a year. Software becomes more robust over time - the more it’s used, the more edge cases are uncovered and bugs fixed. Over the past 7 years, every time a bug has come up in our platform, we’ve fixed it and added a test for it. By bringing over the same tests from platform to Lightning, we’re essentially guaranteeing the same level of robustness by taking into account every single edge case or bug that we have ever encountered.

    If Lightning was built by open-sourcing code from the OpenFn platform, how is it different?

    Under the hood, Lightning is the same as the OpenFn platform. Integrations are made up of the same building blocks of triggers, adaptors and job expressions; requests are executed, retried and reprocessed in exactly the same way.

    What changes in Lightning is how users build and monitor their integrations.

    Can I run anything from the OpenFn platform in Lightning?

    Yes, integrations built out on the OpenFn platform are fully compatible with Lightning.

    Who is Lightning for?

    Lightning is for anyone in the government or NGO space that needs to integrate different systems.

    What will I lose by switching from platform to Lightning?

    Right now: version control, authentication rules on webhooks, and the other features in our roadmap (we’re still in beta).

    Later: nothing - if a feature has proven important to our platform users, it will be available in Lightning. If there is any feature you require in Lightning to be able to switch over to it, speak up ! You can reach out to our product manager Amber via email or even better book some time with her through her calendar.

    When will Lightning Beta be ready?

    Lightning is currently in private Beta. You can register for an account on app.openfn.org.

    - + \ No newline at end of file diff --git a/fr/documentation/about.html b/fr/documentation/about.html index 4be9bd93bf3..3ab7ab6cf2d 100644 --- a/fr/documentation/about.html +++ b/fr/documentation/about.html @@ -22,13 +22,13 @@ - +

    Qui sommes-nous

    Groupe de fonctions ouvert

    Le groupe de fonctions ouvert est une équipe de spécialistes ICT4D qui travaillent exclusivement dans l'intégration de données, l'automatisation et l'interopérabilité depuis 2014.

    We maintain OpenFn.org, the sector's leading integration platform as a service, and a huge number of open-source workflow automation, data integration, and "ETL" tools which you can find on our Github.

    The platform is trusted by some of the leading development organizations in the world, including UNICEF, the WHO, the IRC, and Population Council.

    You can learn more about the people at Open Function Group here.

    - + \ No newline at end of file diff --git a/fr/documentation/build/credentials.html b/fr/documentation/build/credentials.html index 901b56b9ac4..44402784729 100644 --- a/fr/documentation/build/credentials.html +++ b/fr/documentation/build/credentials.html @@ -22,13 +22,13 @@ - +

    Credentials

    Credentials

    Credentials are used to authorize connections to destination systems. In the future, our adaptors will use credentials to fetch meta-data from source and destination applications and make the job writing process easier.

    Some systems (Salesforce, OpenMRS, DHIS2) require an instanceUrl, host, or ApiUrl. Leave off the final "/" in these Urls: https://login.salesforce.com or http://demo.openmrs.org/openmrs or https://play.dhis2.org.

    Credentials can only be viewed, or edited by a single user — their "owner" (or the person that created that credential). All the collaborators on a particular project can choose those credentials for use when defining a job.

    There are two special types of credentials, in addition to the myriad standard application-specific and authentication protocol-specific credentials.

    Raw Credentials

    Raw credentials are valid JSON documents which are passed into a job's runtime state. Note that owners of these credentials will be able to view them, in their entirety, in the clear.

    Keychain Credentials

    Keychain credentials allow for a single job to make use of multiple credentials. They work by inspecting the data in the job's runtime state (i.e., state.data) and checking for the value of a predetermined identifier. Based on that value, present in the data for a given source message, for example, another credential will be selected and applied for that particular job run.

    - + \ No newline at end of file diff --git a/fr/documentation/build/example-build.html b/fr/documentation/build/example-build.html index 31aa4bee81b..313ca1b7452 100644 --- a/fr/documentation/build/example-build.html +++ b/fr/documentation/build/example-build.html @@ -22,13 +22,13 @@ - +

    Platform Quick-Start (v1)

    Learn how to set up a simple data integration using the OpenFn platform. If you get stuck along the way, post a question to our community forum so we can give you a hand.

    In this walkthrough, we’ll connect a KoboToolbox form to Google Sheets. If you don’t have a KoboToolbox account, we'll provide you with a demo account you can use for the tutorial or you can create one for free.

    We’ll be completing the following steps:

    1. Identify your source and destination system
    2. Create a project and send data from your source system to your OpenFn inbox
    3. Create credentials to connect your destination system
    4. Create a your job

    1. Identify your source and destination system

    The best way to figure out what an integration flow should look like is to phrase it in the following way: When A happens [in system 1], I want B to happen [in system 2].

    When a ‘Case registration’ form is submitted [in KoboToolbox], I want the response to be inserted into my ‘Kobo case registrations’ sheet [in Google Sheets].

    This tells us that system 1 (KoboToolbox) is our source application, and system 2 (Google sheets) is our destination system.

    2. Create a project and send data from your source system to your OpenFn inbox

    First, create an OpenFn account or login. Navigate to your Project dashboard - you'll see that a sample project has been created for you.

    Create a new project called ‘Kobo case registrations’ by clicking on the blue + icon at the bottom right hand corner of your dashboard.

    new account dashboard

    When you click 'View' to enter your project space, you'll be taken to your inbox. This is where you will receive messages - the data that gets sent from your source system to OpenFn. Copy your inbox url to configure KoboToolbox to send data to it.

    inbox url

    Log into our KoboToolbox demo account with username: openfn_demo and password: openfn_demo. Select the form you’d like to connect (if using our demo account this will be 'COVID 19 case registration') and go to Settings -> REST services -> Register a new service.

    kobo

    Set the service name to OpenFn and the URL to your project inbox url.

    kobo

    Your form should now be configured to send data to your OpenFn project inbox whenever a response is submitted. We can test this out by submitting some form responses at Form -> Open.

    kobo form

    Return to your project inbox. You should see a new message there, which contains the data submitted in the KoboToolbox form response.

    inbox

    If you click on the message, and open up the message body you’ll see the data that you submitted to the form. To view the entire message, open it in full screen.

    message body

    Once you can see the entire message, you need to identify a data point that will be the same for every submission. In this case, we know that all of our messages will have the same form ID. Save the snippet you have identified ("\_xform_id_string": "aDReHdA7UuNBYsiCXQBr43"), you'll need it later to create your trigger.

    common data point

    3. Create credentials to connect your destination system

    In order to connect to your destination system, you need to sign in through OpenFn to create credentials. These will allow you to send data to your google sheet.

    Head to the credentials section of your dashboard, and once again click the blue + sign to create new credentials.

    create credentials

    You’ll see various apps you recognise - these are all of the systems that we can handle credentials for. Select the Sheets one, and log into your google account when you get the pop up window. You’ll get a confirmation message. Close the window and give your new project access to these credentials.

    select credential type

    You’ve now created credentials that will allow you to perform operations in google sheets from within your job.

    4. Create a new job

    A job is a series of operations that formats and transfers data at a given time. It needs a trigger, which determines when these operations should happen, and an expression, which determines what should be done with the incoming data and where it should go.

    Navigate to the jobs section in your dashboard, then click the + icon to create a new job.

    new job

    Give the job a name (we’ll make ours “Kobo to sheets”).

    4.1 Create a new trigger

    Every job needs a trigger, which determines when it should be run. A message filter is a type of trigger which allows you to trigger a job when a specific message comes into your inbox.

    In this example, you want your job to be triggered by any message that has come from the COVID 19 registration KoboToolbox form. Therefore the inclusion criteria is the id string of the form which we saved earlier on: {"\_xform_id_string": "aDReHdA7UuNBYsiCXQBr43"}. (Don’t forget to add curly brackets "{}" around your inclusion criteria snippet.) This is found in the message body sent by each submitted form response to your inbox.

    This message filter will trigger your job whenever a message which includes the snippet comes into your inbox.

    new trigger

    Save your trigger. You should see a confirmation message “Found x matching messages”. To see the data from your last message inside the initial state, drag the Expression panel to the right.

    trigger message

    4.2 Select an API adaptor

    Adaptors are preconfigured pieces of code that allow communication with destination systems.

    In this example, you will send data collected from individual responses to your kobo form (append values) to google sheets.

    Your API adaptor is therefore google sheets.

    4.3 Choose your adaptor operation

    Every adaptor allows you to perform different operations in your destination system. These operations are functions specific to every API adaptor.

    Open up the inline documentation for the adaptor to see the available functions. Copy the appendValues function, then paste it into your Expression editor. It should look something like this.

    adaptor operation

    4.4 Edit the function in your expression editor

    The function you copy pasted into your expression editor is a template that shows you what your function should look like. This means the text in quotation marks are just placeholders - they need to be replaced with the data entries you want to send.

    First, get your spreadsheet ID from the URL of your google sheet (between d/ and /edit).

    sheets ID

    Copy and paste the ID into your appendValues operation to replace the placeholder value for spreadsheetId. This ensures your values get appended to the correct spreadsheet.

    Next, open up the initial state to select each form value you want to send. Let’s start with the ‘National ID’, as this is the first column in your google sheet. Select the desired input from the dropdown menu located in the initial state window and paste it to replace the placeholder text ('From expression') inside values: []. Repeat this for the following values, and remove line 7 as this would add a second row to your sheet.

    select values

    Your operation should now look like this:

    appendValues({
    spreadsheetId: '1zFcE05jGLYouXDpevdYQO81ejBWz7hn0ahEOg2gs9fw',
    range: 'Sheet1!A1:E1',
    values: [
    [
    dataValue('National_ID'),
    dataValue('First_Name_of_Patient'),
    dataValue('Last_Name_of_Patient'),
    ],
    ],
    });

    Click Save and run to get a ‘Success!’ response in the run logs and see that the data entries between the square brackets [ ] have been added to your google sheet.

    save and run

    5. Set autoprocess to true

    You have now written and tested your job. In order to run your job automatically every time a message matches the trigger inclusion criteria, turn on auto-process.

    autoprocess

    You're all set! Try out your job by submitting another form response to see the data automatically populate your google sheet.

    - + \ No newline at end of file diff --git a/fr/documentation/build/inbox.html b/fr/documentation/build/inbox.html index 300032bb7b4..95d9d5b2d30 100644 --- a/fr/documentation/build/inbox.html +++ b/fr/documentation/build/inbox.html @@ -22,13 +22,13 @@ - +

    Inbox

    Comment ça marche

    Sur la plateforme, chaque projet dispose de son propre inbox URL, ressemblant à https://www.openfn.org/inbox/54804f1a-4a70-4392-97cb-1f350e98e9c8. Cette grande chaîne de nombres et de lettres s'appelle un UUID. C'est votre adresse, et l'« endroit » sur le web où vous enverrez les données pour le traitement par OpenFn si vous faites une intégration en temps réel ou « basée sur des événements ».

    Votre projet sera toujours à l'écoute, et chaque fois qu'une requête HTTP est reçue à cette URL, nous répondrons avec un 202/Accepted et commençons à traiter les données envoyées soit dans le body (corps) ou les parameters (paramètres) de cette requête.

    202/Accepted par rapport à 201/Created

    Vous avez probablement entendu parler de 200/OK ou d'autres « codes d'état » courants, mais la différence entre un 201 et un 202 est très intéressante d'un point de vue perspective d'intégration. .

    Le 201/Created signifie que nous avons terminé le traitement des données qui nous ont été envoyées par le demandeur. Habituellement, cette réponse est accompagnée d'une charge utile avec un nouvel id pour la ressource créée. Ce n'est pas ce que fait OpenFn, par contre nous envoyons un 202/Accepted indiquant que votre requête était acceptable et nous nous mettrons au travail.

    :::astuce

    OpenFn envoie un 202/Accepted indiquant que votre requête a passé notre validation initiale (c.à.d. que les données sont du JSON valide ou du XML analysable et que l'URL de l'inbox existe) et que nous l'avons mise en file d'attente pour traitement.

    :::

    En coulisses, nous avons mis en place un système de files d'attente simple et durable qui nous empêche de « laisser tomber » cet événement à quelque moment que ce soit à partir de maintenant.

    1. Nous le chargerons dans la base de données et bientôt il apparaîtra comme un nouveau « message » enregistré dans votre page « Inbox ».
    2. Nous vérifierons les triggers de tous les jobs actifs dans votre projet et si il correspond à l'un de ces triggers, nous l'enverrons dans une autre file d'attente pour le job en cours.
    3. Nous nous assurerons que votre projet est configuré correctement et que vous n'avez pas dépassé vos limites d'utilisation.
    4. Nous allons commencer à exécuter un job, qui peut lui-même faire des centaines de requêtes HTTP uniques vers d'autres points de terminaison.
    5. Et finalement, nous vous ferons un rapport sur l'état de cette exécution et bientôt elle apparaîtra comme un nouveau "run" dans votre page "Activity History".

    Selon le nombre de requêtes de votre job, la quantité de données à traiter et le temps de réponse de vos autres systèmes, tout cela peut prendre un certain temps : de 200ms à 20 minutes !

    Si le système qui envoie les données à OpenFn a besoin de savoir si toutes les opérations à l'étape 4 se sont terminées avec succès (qu'est-ce que vous comptez comme un succès avec ces différentes actions personnalisées, au fait?), vous devriez envisager de mettre en œuvre un modèle SAGA, par lequel, une fois tout ce traitement terminé, vous déclenchez une autre requête de retour au système initial pour rendre compte sur les tâches en aval. Cela peut être fait dans OpenFn avec Flow Triggers.

    Traitement synchrone par rapport au traitement asynchrone

    Sur OpenFn/platform, le traitement est asynchrone par défaut. Plusieurs flux de travaux complexes peuvent être lancés, la gestion des erreurs et les notifications se font en aval.

    1. Si vous envoyez des données à l'inbox OpenFn, vous recevrez un 202 en cas de succès (et 502 si nous n'avons pas reçu vos données/mauvaise demande).
    2. Nous le chargerons ensuite dans la base de données et bientôt il apparaîtra comme un nouveau « message » enregistré dans votre page « Inbox ».
    3. Nous vérifierons les triggers de tous les jobs actifs dans votre projet et si il correspond à l'un de ces triggers, nous l'enverrons dans une autre file d'attente pour le job en cours.
    4. Nous nous assurerons que votre projet est configuré correctement et que vous n'avez pas dépassé vos limites d'utilisation.
    5. Nous allons commencer à exécuter un job, qui peut lui-même faire des centaines de requêtes HTTP uniques vers d'autres points de terminaison.
    6. Si vous voulez ensuite renvoyer une mise à jour au système source... vous pouvez configurer un autre job pour renvoyer les requêtes et les mises à jour au système source déclencheur.

    Dans OpenFn/microservice ou en utilisant des outils open-source, vous pouvez créer un système synchrone. Nous avons créé un moyen de configurer les points de terminaison des inbox comme « synchrone », ce qui signifie qu'ils garderont une connexion ouverte jusqu'à ce que la totalité du traitement ci-dessus soit terminée, puis répondent avec un 2XX, 4xx, ou 5XX. Ceci n'est pas recommandé pour les systèmes à volume élevé, mais peut être une exigence pour certaines implémentations ; l'esprit de OpenFn/microservice est de donner autant de de contrôle que possible à quiconque le déploie sur ses serveurs.

    - + \ No newline at end of file diff --git a/fr/documentation/build/jobs.html b/fr/documentation/build/jobs.html index dbd5f6d26d9..933e9806700 100644 --- a/fr/documentation/build/jobs.html +++ b/fr/documentation/build/jobs.html @@ -22,13 +22,13 @@ - +

    Introduction aux Jobs

    A job defines the specific series of "operations" (think: tasks or database actions) to be performed when a triggering message is received (even-based), another run finishes (flow- or catch-based) or a pre-scheduled (and recurring) time is reached.

    Les propriétés d'un job

    • Name - a human-readable name describing the series of operations
    • Project (Projet) - le projet auquel le job appartient
    • Trigger - the trigger that is used to automatically initiate a run of the job
    • Adaptor - the adaptor that is used to provide tool-specific functionality for this job (e.g., language-dhis2 or language-commcare)
    • Auto-process? - a true/false switch which controls whether the trigger should be used to automatically run this job when its criteria are met
    • Expression - the job "script" itself; a sequence of operations

    Adaptors

    We've got a whole section on creating new Adaptors, but the critical thing to be aware of when writing a job is that you've got to choose an adaptor, and an adaptor version.

    All of the discussion below of helper functions like create or findPatient requires some understanding of adaptors. When you run a job, you're borrowing a layer of functionality that's been built to connect with some specific API, type of API, or database.

    For example, create means one thing in language-salesforce and another thing entirely in language-dhis2. For this reason, before you can begin writing a job you have to decide which adaptor to work with.

    Adaptor Versions

    Adaptors change over time. They're open source, and we encourage as much contribution as possible—releasing new versions for use on OpenFn.org as soon as they pass our security reviews. New features may be added and bugs may be fixed, but in order to make sure that an existing integration is not broken, we recommend that you select a specific version (rather than using the "auto-upgrade" feature) when you choose an adaptor. The highest released version is the default choice here.

    tip

    The first 4 lines in the log of any run on OpenFn will tell you what adaptor you're running. (As well as the version of core and NodeJs) This is incredibly important, particularly if you're trying to troubleshoot jobs in various environments (like your own shell, OpenFn.org, OpenFn/microservice, etc.).

    Faites bien attention à la version que vous utilisez pour rédiger un job. Consider the following run logs:

    ╭───────────────────────────────────────────────╮
    │ ◲ ◱ @openfn/core#v1.3.12 (Node.js v12.20.1) │
    │ ◳ ◰ @openfn/language-http#v2.4.15 │
    ╰───────────────────────────────────────────────╯
    ...more logs here...

    Finished.

    Notez qu'ici, OpenFn/core version 1.3.12 fonctionne sur Node.js 12.20.1 et en utilisant @openfn/language-http#v2. .15 qui pourrait avoir des fonctions d'aide très différentes de @openfn/language-http#v3.1.5

    info

    See the npm section on the adaptors docs page to learn how to install an adaptor from npm while using platform.

    Upgrading to newer adaptor versions

    While it may be beneficial to upgrade as part of your routine maintenance, these upgrades should be carefully tested. Most often, customers upgrade to a new adaptor version for an existing job when they are making business-drives changes to that job. Some business-driven changes may actually require upgrading the version in order to use a new feature from the adaptor. Even if those changes don't require and upgrade, if the technical team must spend time testing job-specific changes anyway, it may be an ideal opportunity to test also test an upgrade.

    Adaptors follow SEMVER so you can be reasonably assured that upgrading from x.1.z to x.2.z will not lead to existing job code failing, but an upgrade from 3.y.z to 4.y.z may—in SEMVER major upgrades (those that change the first number in the x.y.z version number) have "breaking" or "non-backwards compatible" changes.

    Composing job expressions

    In most cases, a job expression is a series of create or upsert actions that are run after a message arrives, using data from that message. It could look like this:

    A basic expression

    create(
    'Patient__c',
    fields(
    field('Name', dataValue('form.surname')),
    field('Other Names', dataValue('form.firstName')),
    field('Age__c', dataValue('form.ageInYears')),
    field('Is_Enrolled__c', true),
    field('Enrollment_Status__c', 3)
    )
    );

    That would create a new Patient__c in some other system. The patient's Name will be determined by the triggering message (the value inside form.surname, specifically) and the patient's Is_Enrolled__c will always be true. See how we hard coded it?

    What you see above is OpenFn's own syntax, and you've got access to dozens of common "helper functions" like dataValue(path) and destination specific functions like create(object,attributes). While most cases are covered out-of-the-box, jobs are evaluated as Javascript. This means that you can write your own custom, anonymous functions to do whatever your heart desires:

    dataValue

    The most commonly used "helper function" is dataValue(...). This function takes a single argument—the path to some data that you're trying to access inside the message that has triggered a particular run. In the above example, you'll notice that Is_Enrolled__c is always set to true, but Name will change for each message that triggers the running of this job. It's set to dataValue('form.surname') which means it will set Name to whatever value is present at state.data.form.surname for the triggering message. It might be Bob for one message, and Alice for another.

    note

    Note that for message-triggered jobs, state will always have it's data key (i.e., state.data) set to the body of the triggering message (aka HTTP request).

    I.e., dataValue('some.path') === state.data.some.path, as evaluated at the time that the operation (create in the above expression) is executed.

    An expression with custom Javascript

    create(
    'Patient__c',
    fields(
    field('Name', state => {
    console.log('Manipulate state to get your desired output.');
    return Array.apply(null, state.data.form.names).join(', ');
    }),
    field('Age__c', 7)
    )
    );

    Here, the patient's name will be a comma separated concatenation of all the values in the patient_names array from our source message.

    Available Javascript Globals

    For security reasons, users start with access to the following standard Javascript globals, and can request more by opening an issue on Github:

    Examples of adaptor-specific functions

    N.B.: This is just a sample. There are lots more available in the language-packs.

    language-common

    • field('destination_field_name__c', 'value') Renvoie une clé ou la paire de valeurs dans un tableau. (source)
    • fields(list_of_fields) compresse les paires de valeurs clés dans un objet. (source)
    • dataValue('JSON_path') extrait une seule valeur des données sources. (source)
    • each(JSON_path, opération(...)) Détermine un tableau de données en fonction d'un JSONPath (source). Voir beta.each lorsque vous utilisez plusieurs each() dans une expression.
    • each(merge(dataPath("CHILD_ARRAY[*]"),fields(field("metaId", dataValue("*meta-instance-id*")),field("parentId", lastReferenceValue("id")))), create(...)) fusionne les données dans un tableau puis crée pour chaque élément du tableau (source)
    • lastReferenceValue('id') obtient le sfID du dernier élément créé (source)
    • function(state){return state.references[state.references.length-N].id}) récupère le sfID du nième élément créé

    each()

    Read more about each here: The each(...) operation

    each(
    dataPath('csvData[*]'),
    upsertTEI(
    'aX5hD4qUpRW', //piirs uid
    {
    trackedEntityType: 'bsDL4dvl2ni',
    orgUnit: dataValue('OrgUnit'),
    attributes: [
    {
    attribute: 'aX5hD4qUpRW',
    value: dataValue('aX5hD4qUpRW'),
    },
    {
    attribute: 'MxQPuS9G7hh',
    value: dataValue('MxQPuS9G7hh'),
    },
    ],
    },
    { strict: false }
    )
    );

    beta.each

    beta.each(JSON_path, operation(...))

    Scopes an array of data based on a JSONPath but then returns to the state it was given upon completion (source). This is necessary if you string multiple each(...) functions together in-line in the same expression. (E.g., Given data which has multiple separate 'repeat groups' in a form which are rendered as arrays, you want to create new records for each item inside the first repeat group, then RETURN TO THE TOP LEVEL of the data, and then create new records for each item in the second repeat group. Using beta.each(...) lets you enter the first array, create your records, then return to the top level and be able to enter the second array.

    Salesforce

    • create("DEST_OBJECT_NAME__C", fields(...)) Créer un nouvel objet. Prend 2 paramètres : un objet et des attributs. (source)
    • upsert("DEST_OBJECT_NAME__C", "DEST_OBJECT_EXTERNAL_ID__C", fields(...)) Crée ou met à jour un objet. Prend 3 paramètres : un objet, un champ ID et des attributs . (source)
    • relation ("DEST_RELATIONSHIP_NAME__r", "EXTERNAL_ID_ON_RELATED_OBJECT__C", "SOURCE_DATA_OR_VALUE") Ajoute une recherche ou une « insersion de dôme » à un enregistrement. (source)

    dhis2

    • event(...) Crée un événement. (source)
    • dataValueSet(...) Envoie des valeurs de données en utilisant la ressource dataValueSets (source)

    OpenMRS

    • person(...) Prend une charge utile de données pour créer une personne (source)
    • patient(...) Prend une charge utile de données pour créer un patient (source)

    Snippets and samples

    Below you can find some examples of block code for different functions and data handling contexts.

    Job expression (for CommCare to SF)

    The following job expression will take a matching receipt and use data from that receipt to upsert a Patient__c record in Salesforce and create multiple new Patient_Visit__c (child to Patient) records.

    upsert(
    'Patient__c',
    'Patient_Id__c',
    fields(
    field('Patient_Id__c', dataValue('form.patient_ID')),
    relationship('Nurse__r', 'Nurse_ID_code__c', dataValue('form.staff_id')),
    field('Phone_Number__c', dataValue('form.mobile_phone'))
    )
    ),
    each(
    join('$.data.form.visits[*]', '$.references[0].id', 'Id'),
    create(
    'Visit__c',
    fields(
    field('Patient__c', dataValue('Id')),
    field('Date__c', dataValue('date')),
    field('Reason__c', dataValue('why_did_they_see_doctor'))
    )
    )
    );

    Accessing the "data array" in Open Data Kit submissions

    Notice how we use "each" to get data from each item inside the "data array" in ODK.

    each(
    '$.data.data[*]',
    create(
    'ODK_Submission__c',
    fields(
    field('Site_School_ID_Number__c', dataValue('school')),
    field('Date_Completed__c', dataValue('date')),
    field('comments__c', dataValue('comments')),
    field('ODK_Key__c', dataValue('*meta-instance-id*'))
    )
    )
    );

    ODK to Salesforce: create parent record with many children from parent data

    Here, the user brings time_end and parentId onto the line items from the parent object.

    each(
    dataPath('data[*]'),
    combine(
    create(
    'transaction__c',
    fields(
    field('Transaction_Date__c', dataValue('today')),
    relationship(
    'Person_Responsible__r',
    'Staff_ID_Code__c',
    dataValue('person_code')
    ),
    field('metainstanceid__c', dataValue('*meta-instance-id*'))
    )
    ),
    each(
    merge(
    dataPath('line_items[*]'),
    fields(
    field('end', dataValue('time_end')),
    field('parentId', lastReferenceValue('id'))
    )
    ),
    create(
    'line_item__c',
    fields(
    field('transaction__c', dataValue('parentId')),
    field('Barcode__c', dataValue('product_barcode')),
    field('ODK_Form_Completed__c', dataValue('end'))
    )
    )
    )
    )
    );

    NB : il y a eu un bug connu avec la fonction combine qui a été résolue. combine peut être utilisée pour combiner deux opérations en une et est communément utilisé pour exécuter plusieurs create à l'intérieur d'un each(path, operation). Le code source de combine peut être trouvé ici : language-common: combine

    Create many child records WITHOUT a repeat group in ODK

    beta.each(
    '$.data.data[*]',
    upsert(
    'Outlet__c',
    'Outlet_Code__c',
    fields(
    field('Outlet_Code__c', dataValue('outlet_code')),
    field('Location__Latitude__s', dataValue('gps:Latitude')),
    field('Location__Longitude__s', dataValue('gps:Longitude'))
    )
    )
    ),
    beta.each(
    '$.data.data[*]',
    upsert(
    'Outlet_Call__c',
    'Invoice_Number__c',
    fields(
    field('Invoice_Number__c', dataValue('invoice_number')),
    relationship('Outlet__r', 'Outlet_Code__c', dataValue('outlet_code')),
    relationship('RecordType', 'name', 'No Call Card'),
    field('Trip__c', 'a0FN0000008jPue'),
    relationship(
    'Sales_Person__r',
    'Sales_Rep_Code__c',
    dataValue('sales_rep_code')
    ),
    field('Date__c', dataValue('date')),
    field('Comments__c', dataValue('comments'))
    )
    )
    );

    Salesforce: perform an update

    update("Patient__c", fields(
    field("Id", dataValue("pathToSalesforceId")),
    field("Name__c", dataValue("patient.first_name")),
    field(...)
    ));

    Salesforce: Set record type using 'relationship(...)'

    create(
    'custom_obj__c',
    fields(
    relationship(
    'RecordType',
    'name',
    dataValue('submission_type'),
    field('name', dataValue('Name'))
    )
    )
    );

    Salesforce: Set record type using record Type ID

    each(
    '$.data.data[*]',
    create(
    'fancy_object__c',
    fields(
    field('RecordTypeId', '012110000008s19'),
    field('site_size', dataValue('size'))
    )
    )
    );

    Telerivet: Send SMS based on Salesforce workflow alert

    send(
    fields(
    field(
    'to_number',
    dataValue(
    'Envelope.Body.notifications.Notification.sObject.phone_number__c'
    )
    ),
    field('message_type', 'sms'),
    field('route_id', ''),
    field('content', function (state) {
    return 'Hey there. Your name is '.concat(
    dataValue('Envelope.Body.notifications.Notification.sObject.name__c')(
    state
    ),
    '.'
    );
    })
    )
    );

    HTTP: fetch but don't fail!

    // =============
    // We use "fetchWithErrors(...)" so that when the
    // SMS gateway returns an error the run does not "fail".
    // It "succeeds" and then delivers that error message
    // back to Salesforce with the "Update SMS Status" job.
    // =============
    fetchWithErrors({
    getEndpoint: 'send_to_contact',
    query: function (state) {
    return {
    msisdn:
    state.data.Envelope.Body.notifications.Notification.sObject
    .SMS__Phone_Number__c,
    message:
    state.data.Envelope.Body.notifications.Notification.sObject
    .SMS__Message__c,
    api_key: 'some-secret-key',
    };
    },
    externalId: state.data.Envelope.Body.notifications.Notification.sObject.Id,
    postUrl: 'https://www.openfn.org/inbox/another-secret-key',
    });

    Sample DHIS2 events API job:

    event(
    fields(
    field('program', 'eBAyeGv0exc'),
    field('orgUnit', 'DiszpKrYNg8'),
    field('eventDate', dataValue('properties.date')),
    field('status', 'COMPLETED'),
    field('storedBy', 'admin'),
    field('coordinate', {
    latitude: '59.8',
    longitude: '10.9',
    }),
    field('dataValues', function (state) {
    return [
    {
    dataElement: 'qrur9Dvnyt5',
    value: dataValue('properties.prop_a')(state),
    },
    {
    dataElement: 'oZg33kd9taw',
    value: dataValue('properties.prop_b')(state),
    },
    {
    dataElement: 'msodh3rEMJa',
    value: dataValue('properties.prop_c')(state),
    },
    ];
    })
    )
    );

    Sample DHIS2 data value sets API job:

    dataValueSet(
    fields(
    field('dataSet', 'pBOMPrpg1QX'),
    field('orgUnit', 'DiszpKrYNg8'),
    field('period', '201401'),
    field('completeData', dataValue('date')),
    field('dataValues', function (state) {
    return [
    { dataElement: 'f7n9E0hX8qk', value: dataValue('prop_a')(state) },
    { dataElement: 'Ix2HsbDMLea', value: dataValue('prop_b')(state) },
    { dataElement: 'eY5ehpbEsB7', value: dataValue('prop_c')(state) },
    ];
    })
    )
    );

    sample openMRS expression, creates a person and then a patient

    person(
    fields(
    field('gender', 'F'),
    field('names', function (state) {
    return [
    {
    givenName: dataValue('form.first_name')(state),
    familyName: dataValue('form.last_name')(state),
    },
    ];
    })
    )
    ),
    patient(
    fields(
    field('person', lastReferenceValue('uuid')),
    field('identifiers', function (state) {
    return [
    {
    identifier: '1234',
    identifierType: '8d79403a-c2cc-11de-8d13-0010c6dffd0f',
    location: '8d6c993e-c2cc-11de-8d13-0010c6dffd0f',
    preferred: true,
    },
    ];
    })
    )
    );

    merge many values into a child path

    each(
    merge(
    dataPath("CHILD_ARRAY[*]"),
    fields(
    field("metaId", dataValue("*meta-instance-id*")),
    field("parentId", lastReferenceValue("id"))
    )
    ),
    create(...)
    )

    arrayToString

    arrayToString(arr, separator_string);

    access an image URL from an ODK submission

    // In ODK the image URL is inside an image object...
    field("Photo_URL_text__c", dataValue("image.url")),

    alterState (alter state) to make sure data is in an array

    // Here, we make sure CommCare gives us an array to use in each(merge(...), ...)
    fn(state => {
    const idCards = state.data.form.ID_cards_given_to_vendor;
    if (!Array.isArray(idCards)) {
    state.data.form.ID_cards_given_to_vendor = [idCards];
    }
    return state;
    });

    // Now state has been changed, and we carry on...
    each(
    merge(
    dataPath('form.ID_cards_given_to_vendor[*]'),
    fields(
    field('Vendor_Id', dataValue('form.ID_vendor')),
    field('form_finished_time', dataValue('form.meta.timeEnd'))
    )
    ),
    upsert(
    'Small_Packet__c',
    'sp_id__c',
    fields(
    field('sp_id__c', dataValue('ID_cards_given_to_vendor')),
    relationship('Vendor__r', 'Badge_Code__c', dataValue('Vendor_Id')),
    field(
    'Small_Packet_Distribution_Date__c',
    dataValue('form_finished_time')
    )
    )
    )
    );

    Login in to a server with a custom SSL Certificate

    This snippet describes how you would connect to a secure server ignoring SSL certificate verification. Set strictSSL: false in the options argument of the post function in language-http.

    post(
    `${state.configuration.url}/${path}`,
    {
    headers: { 'content-type': 'application/json' },
    body: {
    email: 'Luka',
    password: 'somethingSecret',
    },
    strictSSL: false,
    },
    callback
    );

    Anonymous Functions

    Different to Named Functions, Anonymous functions are generic pieces of javascript which you can write to suit your needs. Here are some examples of these custom functions:

    Custom replacer

    field('destination__c', state => {
    console.log(something);
    return dataValue('path_to_data')(state).toString().replace('cats', 'dogs');
    });

    This will replace all "cats" with "dogs" in the string that lives at path_to_data.

    REMARQUE : La fonction JavaScript replace() ne remplace que la première instance de n'importe quel argument que vous spécifiez. Si vous cherchez un moyen de remplacer toutes les occurences , nous vous suggérons d'utiliser un regex comme dans l'exemple ci-dessous.

    Custom arrayToString

    field("target_specie_list__c", function(state) {
    return Array.apply(
    null, sourceValue("$.data.target_specie_list")(state)
    ).join(', ')
    }),

    It will take an array, and concatenate each item into a string with a ", " separator.

    Custom concatenation

    field('ODK_Key__c', function (state) {
    return dataValue('metaId')(state).concat('(', dataValue('index')(state), ')');
    });

    This will concatenate two values.

    Concatenation of null values

    This will concatenate many values, even if one or more are null, writing them to a field called Main_Office_City_c.

    ...
    field("Main_Office_City__c", function(state) {
    return arrayToString([
    dataValue("Main_Office_City_a")(state) === null ? "" : dataValue("Main_Office_City_a")(state).toString().replace(/-/g, " "),
    dataValue("Main_Office_City_b")(state) === null ? "" : dataValue("Main_Office_City_b")(state).toString().replace(/-/g, " "),
    dataValue("Main_Office_City_c")(state) === null ? "" : dataValue("Main_Office_City_c")(state).toString().replace(/-/g, " "),
    dataValue("Main_Office_City_d")(state) === null ? "" : dataValue("Main_Office_City_d")(state).toString().replace(/-/g, " "),
    ].filter(Boolean), ',')
    })

    Notez comment cette fonction personnalisée utilise la fonction regex /-/g pour s'assurer que toutes les instances sont comptabilisées pour (g = recherche globale).

    Custom Nth reference ID

    If you ever want to retrieve the FIRST object you created, or the SECOND, or the Nth, for that matter, a function like this will do the trick.

    field('parent__c', function (state) {
    return state.references[state.references.length - 1].id;
    });

    See how instead of taking the id of the "last" thing that was created in Salesforce, you're taking the id of the 1st thing, or 2nd thing if you replace "length-1" with "length-2".

    Convert date string to standard ISO date for Salesforce

    field('Payment_Date__c', function (state) {
    return new Date(dataValue('payment_date')(state)).toISOString();
    });

    REMARQUE: La sortie de cette fonction sera toujours formatée en fonction du fuseau horaire GMT.

    Use external ID fields for relationships during a bulk load in Salesforce

    array.map(item => {
    return {
    Patient_Name__c: item.fullName,
    'Account.Account_External_ID__c': item.account
    'Clinic__r.Unique_Clinic_Identifier__c': item.clinicId,
    'RecordType.Name': item.type,
    };
    });

    Bulk upsert with an external ID in salesforce

    bulk(
    'Visit_new__c',
    'upsert',
    {
    extIdField: 'commcare_case_id__c',
    failOnError: true,
    allowNoOp: true,
    },
    dataValue('patients')
    );
    - + \ No newline at end of file diff --git a/fr/documentation/build/lightning-quick-start.html b/fr/documentation/build/lightning-quick-start.html index 8b62e3a0450..20ee135d237 100644 --- a/fr/documentation/build/lightning-quick-start.html +++ b/fr/documentation/build/lightning-quick-start.html @@ -22,13 +22,13 @@ - +

    Lightning Quick-Start (v2)

    This tutorial takes ~15 minutes to complete, and teaches you how to build workfows with OpenFn Lightning. If you get stuck, post a question to our community forum.

    1. Register

    Register for an account on app.openfn.org and follow the link sent to your inbox to confirm your email.

    *If you already have an account, you can login.

    2. Understand the sample workflow

    Click on the 'sample workflow' created for you on registration.

    lightning-workflows-page

    tip

    A workflow is a series of tasks to be carried out automatically (i.e a process that has been automated).

    The sample workflow pictured below formats and sends data from a source system (KoboToolbox, a mobile data-collection app) to a destination system (DHIS2, a health information management system). It automates patient registration by taking a patient’s name and age and:

    1. checking if they are over 18 months old;
    2. converting it to the same format as DHIS2;
    3. uploading it to DHIS2.

    lightning-sample-workflow

    It is made up of 3 jobs.

    tip

    A job is an action to be carried out at a given point in time. It has a trigger, an adaptor, a credential and a job expression which each define when, where, how and what to do.

    Click on Job 3 to view more details about it in the setup and editor tab.

    [SETUP TAB]

    The SETUP TAB is where you define the when, where and how of your job.

    lightning_setup

    When: trigger

    The trigger defines when an action should happen. It can be one of the following:

    • When data is sent to OpenFn Lightning from an external system: webhook
    • At a recurring point in time: cron
    • When the job which comes before it in the workflow succeeds: on success
    • When the job which comes before it in the workflow fails: on failure

    If you never want the job to run, you can disable it by unselecting the 'Enabled' checkbox.

    tip

    The trigger for the first job in a workflow will always be either a 'cron' or 'webhook' trigger. All the other jobs will have a trigger of 'on success' or 'on failure'.

    Where: adaptor

    The adaptor is what helps you communicate with and perform actions in a particular system. In OpenFn, you can carry out an action in the following systems:

    • In OpenFn: OpenFn or common adaptors
    • In an external system OpenFn has an adaptor for: commcare, DHIS2, google sheets, kobotoolbox ...
    • In any other external system which has an API: http adaptor

    How: credential

    Credentials define how a Job is able to perform an action on your behalf, just as you would need to cover logging in if you were explaining how to carry out an action manually.

    tip

    If you are performing an action in an external system, you'll need to select the same credential type as your adaptor.

    [INPUT TAB]

    The INPUT TAB is where you can see examples of data that has been sent to your job during previous runs.

    In job 3, we'll be using the data values that are in names which are "Wycliffe" and "Orao" in this example. Can you see them?

    lightning_input_data

    tip

    The input data of a job can be accessed through state. For example, if you want the names values from an input, you can access it at state.names.

    [EDITOR TAB]

    The EDITOR TAB is where you define what the job should do and which data from state (which contains your input) to use.

    tip

    When you need to use data that comes from your webhook trigger (data sent from your external system), cron trigger, or a previous job you can find it in state. Learn more here.

    lightning_editor_1

    In this job, we're using the names data from state (which we saw in the Input tab).

    What: Job expression

    The job expression defines what action to carry out and which data values to use.

    It gets added from the adaptor documentation below the editor as an example operation, and is then configured to use specific values from the state input data. (see image below for details)

    lightning_editor

    3. Run the sample workflow

    tip

    A workflow will run when the trigger from the first job (represented as the first node on the canvas) is called.

    In the case of the Sample Workflow, this is when data is sent to the webhook URL. There are three ways of doing this.

    Follow the instructions from one of the options below to run your workflow.

    Option 1: Manually send data to your first job trigger

    Click on the first job in your workflow, then head to the input tab. Paste the data below into the custom input, then click run.

    {
    "data": {
    "age_in_months": 19,
    "name": "Wycliffe Gigiwe"
    }
    }

    lightning_manual_run

    You should now be able to see your request on the history page.

    tip

    When a job is run, OpenFn adds the input into state (used to get data values in the job expression), along with the credentials which get added to configuration.

    Option 2: Send data through a curl request

    You can also send data to a webhook URL by making a curl request in your terminal.

    Copy your webhook URL by clicking on the first node of your workflow, then use it to replace YOUR_WEBHOOK_URL in the command below and run it in your CLI.

    curl -H 'Content-Type: application/json' \
    -d '{"age_in_months": 19, "name": "Wycliffe Gigiwe"}' \
    -X POST \
    YOUR_WEBHOOK_URL

    You should get a response that looks like this, and be able to see your request on the history page.

    {
    "attempt_id": "3602a2e6-cd01-4b48-bfa9-5237e7393c90",
    "run_id": "fdebd5a9-3578-4bfd-945e-12e0a24e8c6a",
    "work_order_id": "b1899b6f-e420-479f-a6ae-8641189764cd"
    }

    Option 3: Send data from your external system

    tip

    You can trigger a workflow from an external system by configuring it's REST services to send data to your trigger webhook URL.

    In the case of our Sample Workflow, we're using KoboToolbox as an external system.

    Log into our KoboToolbox demo account with username: openfn_demo and password: openfn_demo. Select the form you’d like to connect ('Lightning sample workflow') and go to Settings -> REST services -> Register a new service.

    kobo

    Set the service name to OpenFn and the URL to the webhook URL (you can copy is from the first node on your workflow).

    kobo

    Your form should now be configured to send data to the webhook trigger for your first job whenever a response is submitted. We can test this out by submitting some form responses at Form -> Open.

    kobo form

    Once you've made a form submission, you should be able to see your request on the history page.

    4. Check your request got processed correctly

    tip

    The history page shows you each work order or request for data to be processed.

    Now that you have run your workflow, head to the history page to see the work order. You'll see it has a status of 'Success' which means it got processed correctly.

    lightning_history

    Click on the chevron next to the status to expand it and see each job run.

    lightning-history_expanded

    5. Make a run that fails, then edit the job and rerun it to make it succeed

    From your workflow page, run the job manually with a patient that is 18 months old using the data below.

    {
    "data": {
    "age_in_months": 18,
    "name": "Njoroge Orao"
    }
    }

    Head to the history page and see that the work order has a status of 'Failure'. This is because the patient is not older than 18 months.

    lightning_history_failure

    Let's say we made a mistake and actually wanted to register any patient that is both 18 months old and above. We want to edit the job logic and reprocess the request.

    Head to the Editor tab in Job 1 to update the logic by changing the if statement from > 18 to <= 18.

    Your Job expression should now be the following:

    fn(state => {
    if (state.data.age_in_months >= 18) {
    console.log('Eligible for program.');
    return state;
    } else {
    throw 'Error, patient ineligible.';
    }
    });

    Make sure to click save, then head back to your history page and find the work order you want to reprocess. You can search for "Njoroge Orao" in the search bar to find it.

    Expand the work order, and click the 'rerun' button next to the first job run.

    lightning_retry

    You'll see a new attempt created in the same work order, which now succeeds. The work order status also gets updated to the status of the last attempt to show 'Success'.

    lightning_new_attempt

    Rerun the same work order, this time from 'Job 3 - Upload to DHIS2'. You'll see the runs for Job 1 and 2 get copied over to the new attempt, so that their output can be used for the input of Job 3.

    lightning_rerun_downstream_job

    Note

    When you rerun a workflow from a downstream job, the previous job runs are copied over to the new attempt, so you can still see where the input from your downstream job came from.

    You're all set! If you made it to the end of this tutorial, you should be familiar with the key concepts you need to start building your own workflow. Give it a go, and don't forget to post on our community forum if you get stuck - or to let us know what you built.

    - + \ No newline at end of file diff --git a/fr/documentation/build/triggers.html b/fr/documentation/build/triggers.html index fb78c5a0de9..9eed8214d82 100644 --- a/fr/documentation/build/triggers.html +++ b/fr/documentation/build/triggers.html @@ -22,13 +22,13 @@ - +

    Triggers

    Les triggers sont responsables du démarrage automatique du job. Il en existe 4 types. Les plus courants sont les triggers de type « filtre de messages » , mais il existe aussi les triggers de type « cron », « flux » et « échec ».

    Types de trigger

    Triggers de filtre de messages

    Les triggers de filtre de messages surveillent les messages entrants et vérifient si les données dans ces messages correspondent à leurs critères d'inclusion et ne répondent pas à leurs critères d'exclusion. S'ils réussissent ces tests et s'il y a des jobs actifs configurés pour utiliser ce trigger, une exécution sera lancée pour chaque combinaison message/job.

    En tant qu'utilisateur, vous spécifiez les critères d'inclusion et d'exclusion qui déterminent les messages entrants qui doivent déclencher l'exécution des jobs. En gros, si une partie d'un corps de message correspond au JSON que vous fournissez comme filtre d'inclusion, et ne correspond pas au JSON que vous avez fourni comme filtre d'exclusion, un job s'exécutera (en supposant que vous en avez créé un avec autoprocess activé).

    Le critère de filtrage prend la forme d'une chaîne de caractères JSON valide, comme ceci : {"Name":"Aleksa Iwobi"}. Dans une requête SQL, cette chaîne sera utilisée dans la clause WHERE et utilisera des opérateurs spéciaux de jsonb comme celui-ci :

    SELECT * FROM messages
    WHERE body::jsonb @> '{"Name":"Nicholas Pépé"}'::jsonb;

    Si vous fournissez des critères d'exclusion comme {"type": "fake-data"} la requête résultante ressemblera à quelque chose comme ceci :

    SELECT * FROM messages
    WHERE body::jsonb @> '{"Name":"Nicholas Pépé"}'::jsonb
    AND NOT (body::jsonb @> '{"type":"fake-data"}'::jsonb);

    Il y a une explication plus détaillée de la correspondance des filtres ci-dessous.

    Triggers Cron (anciennement minuteurs)

    Cron triggers run jobs based on a cron schedule. Ils peuvent fonctionner aussi fréquemment qu'une fois toutes les minutes, ou aussi rarement que vous le souhaitez, et peuvent être programmés à des dates ou des heures très précises. Chaque fois qu'un job chronométré réussit, son final_state est sauvegardé et utilisé comme initial_state pour sa prochaine exécution. Voir « Gérer l'état » et « Garder un curseur » ci-dessous pour une aide à l'implémentation.

    La meilleure façon d'apprendre à connaître cron, si vous n'êtes pas déjà familier, est à travers l'interface OpenFn ou

    crontab.guru.

    Triggers de flux

    Les triggers de flux exécutent un job après qu'un autre job spécifié se termine avec succès. Par exemple, un trigger de flux qui spécifie l'exécution réussie du Job A peut être utilisé pour le Job B. Chaque fois que le Job A réussit, le Job B commence à s'exécuter avec le final_state du Job A comme son initial_state.

    Triggers d'échec

    Les triggers d'échec, ou « catch », fonctionnent comme les triggers de flux, sauf qu'ils guettent l'échec, plutôt que le succès, d'un job spécifique. (par exemple, le Job A paie un ASC via MPESA. Si le Job A échoue, nous devons lancer le Job B, qui envoie un SMS au responsable du district lui demandant de payer manuellement l'ASC.)

    Traitement des jobs cron

    Traitement à la demande pour les jobs cron. Si vous exploitez les triggers cron pour exécuter des jobs à des moments précis, vous pouvez également exécuter ce job déclenché par cron à la demande. De cette façon, vous n’avez pas à attendre l'expiration de la minuterie avant de procéder au test ! Il suffit simplement de cliquer sur le bouton Processus/« Jouer » maintenant disponible sur les pages Job, Run et Activity History.

    Exécute le bouton de trigger de temps d&#39;exécution de la liste

    Bouton de trigger de l&#39;historique de l&#39;exécution

    Maintien d'un curseur en state pour les jobs de minuterie

    Comme de nombreux jobs de minuterie nécessitent de garder une sorte d'enregistrement de leur exécution précédente pour modifier leurs actions ultérieures, state est transmis entre les exécutions. Un exemple pourrait être de conserver un « curseur » pour ne sélectionner que les nouveaux enregistrements dans une base de données. On s'attendrait à la logique suivante :

    1. job-1 récupère les patients de la base de données
    2. job-1 fait quelque chose d'important avec ces dossiers de patients
    3. job-1 enregistre l'id du dernier patient traité avec succès à final_state
    4. quand job-1 s'exécute à nouveau, il récupère les patients dont l'id est supérieur à l'id du dernier patient traité avec succès.

    Pour y parvenir, vous pourriez écrire :

    fetchPatient({ type: 'referral', offset: state.lastId }, state => {
    // Assuming the system returned an array of patients in the "data" key.
    state.lastId = state.data.patients.sort((a, b) => b.id - a.id)[0];
    return state;
    });

    Le décalage initial sera null, mais les exécutions suivantes vont automatiquement récupérer seulement les « nouveaux » patients.

    Gestion de la taille de state pour les jobs de minuterie

    Etant donné que l'état est transmis entre chaque exécution d'un job de minuterie, si votre job ajoute quelque chose de nouveau à l'état à chaque exécution, il peut rapidement devenir trop grand pour être traité de manière pratique. Imaginez qu'une réponse du serveur ajoutait, via array.push(...), à state.references chaque fois que le job est exécuté. OpenFn supporte jusqu'à 50 000 octets (via Erlang's byte_size), bien que la plupart des octets final_state se situent entre 100 et 1000.

    Si la taille de votre final_state dépasse 10 000 octets, OpenFn enverra aux collaborateurs du projet un email d'avertissement. Si elle dépasse 50 000 octets, votre exécution va toujours réussir mais son final_state ne sera pas sauvegardé et la prochaine fois que le job sera exécutée il héritera de l'état final précédent, non mis à jour. (p. ex. le dernier état qui était < de 50 000 octets.)

    Une solution rapide pour l'état final bloat

    Le plus souvent, l'état final bloat est dû à une gestion incorrecte de state.references ou state.data. This can be fixed by adding the following lines either to the callback of your language-package's operation (if it allows for one) or by appending an fn(...) operation after your operation.

    fn(state => {
    state.custom = somethingIntentional;
    state.data = {};
    state.references = [];
    return state;
    });

    La correspondance des filtres en détail

    Pour illustrer la correspondance des filtres, reportez-vous aux exemples de filtres et de messages ci-dessous.

    • Le message « a » correspondra au filtre 1, mais pas le message « b ».
    • Le message « c » correspondra au filtre 2, mais pas le message « d ».

    Filtre 1, inclusion simple

    Les critères d'inclusion sont { "formID": "patient_registration_v7" } et les critères d'exclusion sont laissés vides.

    Le message « a » correspondra

    {
    "submissionDate": "2016-01-15",
    "formID": "patient_registration_v7",
    "name": "Jack Wilshere",
    "dob": "1986-05-16",
    "medications": ["anaphlene", "zaradood", "morphofast"]
    }

    Le message « b » ne correspondra pas

    {
    "submissionDate": "2016-01-16",
    "formID": "patient_registration_v8",
    "name": "Larry Bird",
    "dob": "1982-03-21",
    "medications": ["anaphlene", "zaradood", "morphofast"]
    }

    Le message « b » n'inclut pas "formID":"patient_registration_v7" et ne correspond pas au filtre « 1 ».

    Filtre 2, inclusion et exclusion

    Le critère d'inclusion est { "name": "john doe" } et le critère d'exclusion est {"allowedToShare": false}.

    Le message « c » correspondra

    {
    "submissionDate": "2016-01-15",
    "name": "john doe",
    "dob": "1986-05-16"
    }

    Le message « d » ne correspondra pas

    {
    "submissionDate": "2016-01-15",
    "name": "john doe",
    "dob": "1986-05-16",
    "allowedToShare": false
    }

    Autres échantillons de filtres

    Correspond aux messages WHERE le formId est "Robot_Photo_21.04.2015"

    inclusionexclusion
    { "formId": "Robot_Photo_21.04.2015" }

    Faire correspondre un message avec deux fragments à l'intérieur d'un tableau appelé data

    (Ceci est utile lors de la collecte de données via ODK)

    inclusionexclusion
    { "data": [{ "outlet_call": "TRUE", "new_existing": "Existing" }] }

    Faire correspondre un message WHERE et AND qui sont tous les deux inclus

    inclusionexclusion
    { "formId": "Robot_Photo_21.04.2015", "secret_number": 8 }

    Faire correspondre un message en utilisant l'exclusion

    inclusionexclusion
    { "formId": "Robot_Photo_21.04.2015" }{ "safeToProcess": false }

    Faire correspondre un message avec un fragment à l'intérieur d'un autre objet appelé form

    inclusionexclusion
    {"form": {"@xmlns": "http://openrosa.org/formdesigner/F732194-3278-nota-ReAL-one"}}

    Une démo d'exclusion

    Imaginez que nous ayons un filtre qui inclut des messages avec form == 'bns_survey' mais nous voulons ensuite commencer en excluant ceux qui ont body.survey_type == 'practice'. Notre trigger de filtre devrait ressembler à ceci :

    inclusionexclusion
    { "form": "bns_survey" }{"body": {"survey_type": "practice"}}

    Nous l'avons configuré à partir du formulaire de trigger comme ceci :

    img

    Et vérifiez le résultat dans l'inbox :

    img

    - + \ No newline at end of file diff --git a/fr/documentation/build/troubleshooting.html b/fr/documentation/build/troubleshooting.html index 760a0450ab0..dee070c95f4 100644 --- a/fr/documentation/build/troubleshooting.html +++ b/fr/documentation/build/troubleshooting.html @@ -22,13 +22,13 @@ - +

    Troubleshooting integrations

    Or, a penny for your thoughts during the debugging process.

    So, you've noticed that something isn't quite right. Here's a list of questions, and complications, that might help you get to the bottom of it.

    The Implementation Perspective

    First, keep this quick checklist at hand... answering these questions in order will ensure that you're spending as little time as possible getting to the cause of the problem, whether that's big or small.

    1. What do you desire?

    This one might take a lifetime to answer, but in the context of debugging you can limit the bounds a bit. We really can't move forward until you're clear on what you want.

    2. How are you asking for it?

    Show me the issue, the specifications, the "requirement"! Let's make sure it's clearly articulated and memorialized. If so, move to Q3!

    3. Is what you're asking for going to produce the effect you desire?

    This is a tricky one, and may involve the engineering team. (In fact, this is often when engineering gets called in. There's a "bug", and before we take a look at any code we need to figure out if what's being asked for—the specification—will actually produce the desired outcomes.)

    4. Does the expression implement what you're asking for?

    So we're certain that the spec will produce the effect we want? OK, great... now let's look at the job expression. Does the job expression implement the spec? How can you prove (with logs, assertions, etc.) that it does? Don't move on until you're certain of this, or certain that it can't, given the adaptor you're using!

    Time check

    N.B., a change to the job expression takes as little as a couple of minutes.

    5. Does the adaptor support/enable the implementation in the expression?

    OK, if you're certain the expression is doing all it can with the spec... maybe there's a bug in the adaptor! Something in how that helper function was implemented may not be doing what the author of the adaptor intended—and this could be producing the "bug".

    If you're starting work on the adaptor, you should have already reduced the problem to a GENERAL PROBLEM, leaving aside all specifics of this implementation. You're starting to change the way that this adaptor interacts with the target API. You've got out your API docs and you're CURLing requests directly to various endpoints, setting up tests in the adaptor, etc.

    Time check

    A change to the adaptor might take an hour, maybe a few. We're on the order of a day, if you've got big changes and include the time required to deploy new versions.

    6. Does the target API support/enable the implementation in the adaptor?

    Whoa... if you've made it down here you're in now "big serious" land. Tread lightly! I'm guessing that you've found lots of Stack Overflow threads describing the issue you're facing. What you're getting at is that despite the API docs we used to build this adaptor, there's something different about the way the API is actually behaving.

    Maybe there's a new API version with a breaking change?

    Maybe there's a bug in the target system?

    Either way, when you get down to this level you're spending a LOT of time and you're engaging with the broader open source community. You should post on at least one forum before signing off for the day.

    Time check

    Writing a new adaptor for a new API version, or fixing a bug in another developer's system via a pull request... this stuff takes weeks and months and, worse yet, the timelines are often outside of our control.

    The Product Perspective

    To throw a spanner into the works (embrace the complexity!) when I wear my product hat I invert the pyramid here. While a problem might be solved in 15 minutes by writing a new line in the expression (see Q4), is this a generalizable problem and could I save future implementers those 15 minutes by making a change to the adaptor (see Q5) that would provide this fix/feature "out of the box"?

    Better yet... could I make some change to the OpenFn platform (or to Primero, or CommCare, or DHIS2?) that would enable easier/better/adaptors and solve this problem with clicks, not code?

    tip

    Remember those jobs we used to write that did nothing (simply returning state) if a condition was met? Well, using exactly this approach we delivered an "exclusion filter" feature to OpenFn which allows a user to skip certain inbound messages based on criteria, rather than having to evaluate those message in the job.

    It took much more work than writing that one fn(...) block at the top of a single client's job, but now it saves everyone from writing that line in the future.

    Find balance, in the end

    These questions are always knocking around inside my head and I try to weigh this product perspective against the implementation perspective. In the end, it's always about balance (no surprise there) in how we solve these problems, but by following the implementation perspective in how you approach, understand, debug, and produce estimates will get more information out onto the table faster and enable a better "OK, how should we solve this given the current chronological and commercial constraints" conversation between the Implementation Team and the Engineering Team.

    - + \ No newline at end of file diff --git a/fr/documentation/cli.html b/fr/documentation/cli.html index af4df7911ea..38db237f0c1 100644 --- a/fr/documentation/cli.html +++ b/fr/documentation/cli.html @@ -22,13 +22,13 @@ - +

    The CLI

    What is this tutorial?
    • It's a hands-on way to learn about the new OpenFn CLI. By following the prompts and "challenges", a developer with a bit of Javascript experience should be able to write, run, and debug complex, multi-step jobs with OpenFn, using nothing but a text editor and their terminal.
    • The estimated time to finish this developer challenge is 1 to 2 hours (depending on your familiarity with the underlying concepts and tooling)
    • If you are stuck and need help, please post in community.openfn.org

    Intro to the OpenFn CLI

    The @openfn/cli is a command line interface for running OpenFn workflows locally. It enables developers to run, build, and test steps in an OpenFn workflow.

    This CLI replaces @openfn/devtools and provides a new suite of features and improvements, including:

    • a new runtime and compiler for executing and creating runnable OpenFn jobs,
    • customizable logging output,
    • automatic installation of language adaptors,
    • and support for the adaptors monorepo (@openfn/adaptors) where all OpenFn adaptor source code and documentation lives.

    These features are designed to make it easier and more convenient for developers to use and understand OpenFn.

    Looking for a way to execute jobs from OpenFn v1 locally? Use Core!

    If you're looking for a way to execute jobs running on the OpenFn v1 platform, please see the documentation for @openfn/core and Devtools.

    Prerequisites

    1. Ensure you have a code editor installed on your machine (e.g. VS Code, Sublime)

    2. Install NodeJs v18 is the minimum version required

      • To install a specific version of Node.js (in this case, version 18) on Linux, Windows, or macOS, you can use a version manager such as nvm (Node Version Manager) or any multiple runtime version manager eg: asdf. These tools allow you to install and switch between multiple versions of Node.js on the same machine. See below for instructions for different operating systems.
      • Read this article to learn how to install NodeJs in your machine kinsta.com/blog/how-to-install-node-js/
    3. Have a basic understanding of OpenFn—check out jobs and adaptors, at least, in the OpenFn Concepts of this site.

    4. Install the OpenFn CLI with npm install -g @openfn/cli

    Walkthrough & Challenges

    1. Getting started with the CLI

    Let's start by running a simple command with the CLI. Type the following into your terminal:

    openfn test

    The word openfn will invoke the CLI. The word test will invoke the test command.

    You should see some output like this:
    [CLI] ℹ Versions:
    ▸ node.js 18.12.1
    ▸ cli 0.0.39
    ▸ runtime 0.0.24
    ▸ compiler 0.0.32
    [CLI] ℹ Running test job...
    [CLI] ℹ Workflow object:
    [CLI]{
    "start": "start",
    "jobs": [
    {
    "id": "start",
    "data": {
    "defaultAnswer": 42
    },
    "expression": "const fn = () => (state) => { console.log('Starting computer...'); return state; }; fn()",
    "next": {
    "calculate": "!state.error"
    }
    },
    {
    "id": "calculate",
    "expression": "const fn = () => (state) => { console.log('Calculating to life, the universe, and everything..'); return state }; fn()",
    "next": {
    "result": true
    }
    },
    {
    "id": "result",
    "expression": "const fn = () => (state) => ({ data: { answer: state.data.answer || state.data.defaultAnswer } }); fn()"
    }
    ]
    }

    [CLI] ✔ Compilation complete
    [R/T] ♦ Starting job start
    [JOB] ℹ Starting computer...
    [R/T] ℹ Operation 1 complete in 0ms
    [R/T] ✔ Completed job start in 1ms
    [R/T] ♦ Starting job calculate
    [JOB] ℹ Calculating to life, the universe, and everything..
    [R/T] ℹ Operation 1 complete in 0ms
    [R/T] ✔ Completed job calculate in 1ms
    [R/T] ♦ Starting job result
    [R/T] ℹ Operation 1 complete in 0ms
    [R/T] ✔ Completed job result in 0ms
    [CLI] ✔ Result: 42

    What we've just done is executed a JavaScript expression, which we call a job. The output prefixed with [JOB] comes directly from console.log statements in our job code. All other output is the CLI trying to tell us what it is doing.

    What is a job?
    A job is Javascript code which follows a particular set of conventions. Typically a job has one or more operations which perform a particular task (like pulling information from a database, creating a record, etc.) and return state for the next operation to use.

    The test job we just ran looks like this:

    const fn = () => state => {
    console.log(
    'Calculating the answer to life, the universe, and everything...'
    );
    return state * 2;
    };
    export default [fn()];

    You can see this (and a lot more detail) by running the test command with debug-level logging:

    openfn test --log debug

    Tasks:

    To get started with @openfn/cli
    1. Create a new folder for the repository you'll be working on by running the following command: mkdir devchallenge && cd devchallenge

    2. While you can keep your job scripts anywhere, it's a good practice to store state.json and output.json in a tmp folder. To do this, create a new directory called tmp within your devchallenge folder: mkdir tmp

    3. Since state.json and output.json may contain sensitive configuration information and project data, it's important to never upload them to Github. To ensure that Github ignores these files, add the tmp directory to your .gitignore file: echo "tmp" >> .gitignore

    4. (Optional) Use the tree command to check that your directory structure looks correct. Running tree -a in your devchallenge folder should display a structure like this:

       devchallenge
      ├── .gitignore
      └── tmp
      ├── state.json
      └── output.json
    1. Create a file called hello.js and write the following code.

      console.log('Hello World!');
      What is console.log?
      console.log is a core JavaScript language function which lets us send messages to the terminal window.
    2. Run the job using the CLI

      ```bash
      openfn hello.js -o tmp/output.json
      ```
     <details>

    <summary>View expected output</summary>
    ```bash
    [CLI] ⚠ WARNING: No adaptor provided!
    [CLI] ⚠ This job will probably fail. Pass an adaptor with the -a flag, eg:
    openfn job.js -a common
    [CLI] ✔ Compiled from helo.js
    [R/T] ♦ Starting job job-1
    [JOB] ℹ Hello World!
    [R/T] ✔ Completed job job-1 in 1ms
    [CLI] ✔ State written to tmp/output.json
    [CLI] ✔ Finished in 17ms ✨

    ```


    </details>

    Note that our console.log statement was printed as [JOB] Hello world!. Using the console like this is helpful for debugging and/or understanding what's happening inside our jobs.

    🏆 Challenge: Write a job that prints your name

    1. Modify hello.js to print your name.
    2. Re-run the job by running openfn hello.js -a common -o tmp/output.json.
    3. Validate that you receive the logs below:
    [CLI] ✔ Compiled job from hello.js
    [JOB] ℹ My name is { YourName }
    [R/T] ✔ Operation 1 complete in 0ms
    [CLI] ✔ Writing output to tmp/output.json
    [CLI] ✔ Done in 366ms!

    2. Using adaptor helper functions

    Adaptors are Javascript or Typescript modules that provide OpenFn users with a set of helper functions for simplifying communication with a specific external system. Learn more about adaptors here: docs.openfn.org/adaptors

    Basic usage:

    Let’s use @openfn/language-http adaptor to fetch a list of forms from https://jsonplaceholder.typicode.com/

    Understanding CLI arguments

    Use -a to specify the adaptor; use -i to auto-install the necessary adaptor

    Run openfn help to see the full list of CLI arguments.

    Tasks:

    1. Create a file called getPosts.js and write the following code

      getPosts.js
      get('https://jsonplaceholder.typicode.com/posts');
      fn(state => {
      console.log(state.data[0]);
      return state;
      });
    2. Run the job by running

    openfn getPosts.js -i -a http -o tmp/output.json

    Since it is our first time using the http adaptor, we are installing the adaptor using -i argument

    3. See expected CLI logs
      [CLI] ✔ Installing packages...
    [CLI] ✔ Installed @openfn/language-http@4.2.8
    [CLI] ✔ Installation complete in 14.555s
    [CLI] ✔ Compiled from getPosts.js
    [R/T] ♦ Starting job job-1
    GET request succeeded with 200
    [JOB]{
    userId: 1,
    id: 1,
    title: 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit',
    body: 'quia et suscipit\n' +
    'suscipit recusandae consequuntur expedita et cum\n' +
    'reprehenderit molestiae ut ut quas totam\n' +
    'nostrum rerum est autem sunt rem eveniet architecto'
    }
    [R/T] ✔ Completed job job-1 in 872ms
    [CLI] ✔ State written to tmp/output.json
    [CLI] ✔ Finished in 15.518s ✨

    🏆 Challenge: Get and inspect data via HTTP

    Using the https://jsonplaceholder.typicode.com/users API, get a list of users and print the first user object.

    1. Create file called getUsers.js and write your operation to fetch the user.
    2. Run the job using the OpenFn/cli openfn getUsers.js -a http -o tmp/output.json.
    3. Validate that you receive this expected CLI logs:
    openfn getUsers.js -a http -o tmp/output.json
    See expected CLI logs:
    [CLI] ✔ Compiled job from hello.js GET request succeeded with 200 ✓
    [R/T] ✔ Operation 1 complete in 581ms
    [JOB] ℹ {
    id: 1,
    name: 'Leanne Graham',
    username: 'Bret',
    email: 'Sincere@april.biz',
    address: {
    street: 'Kulas Light',
    suite: 'Apt. 556',
    city: 'Gwenborough',
    zipcode: '92998-3874',
    geo: { lat: '-37.3159', lng: '81.1496' }
    },
    phone: '1-770-736-8031 x56442',
    website: 'hildegard.org',
    company: {
    name: 'Romaguera-Crona',
    catchPhrase: 'Multi-layered client-server neural-net',
    bs: 'harness real-time e-markets'
    }
    }
    [R/T] ✔ Operation 2 complete in 2ms
    [CLI] ✔ Writing output to tmp/output.json [CLI] ✔ Done in 950ms! ✨

    3. Understanding state

    If a job expression is a set of instructions for a chef (a recipe?) then the initial state is all of the ingredients they need tied up in a perfect little bundle. See "It all starts with state​" in the knowledge base for extra context.

    It usually looks something like this

    {
    "configuration": {
    "hostUrl": "https://moh.kenya.gov.ke/dhis2",
    "username": "someone",
    "password": "something-secret"
    },
    "data": {
    "type": "registration",
    "patient": {
    "age": 24,
    "gender": "M",
    "nationalId": "321cs7"
    }
    }
    }

    state.configuration

    This key is where we put credentials which are used to authorize connections to any authenticated system that the job will interact with. (Note that this part of state is usually overwritten at runtime with a real "credential" when using the OpenFn platform, rather than the CLI.)

    Important

    Note that console.log(state) will display the whole state, including state.configuration elements such as username and password. Remove this log whenever you're done debugging to avoid accidentally exposing sensitive information when the job is successfully deployed on production.

    The OpenFn platform has built in protections to "scrub" state from the logs, but when you're using the CLI directly you're on your own!

    state.data

    This key is where we put data related to a specific job run. On the platform, it's the work-order-specific data from a triggering HTTP request or some bit of information that's passed from one job to another.

    Using CLI, state.json will be loaded automatically from the current directory

    Or you can specify the path to the state file by passing the option -s, --state-path

    Specify a path to your state.json file with this command:

    openfn hello.js -a http -s tmp/state.json -o tmp/output.json

    Expected CLI logs

    [CLI] ✔ Compiled job from hello.js
    GET request succeeded with 200 ✓
    [R/T] ✔ Operation 1 complete in 876ms
    [R/T] ✔ Operation 2 complete in 0ms
    [CLI] ✔ Writing output to tmp/output.json
    [CLI] ✔ Done in 1.222s! ✨

    How can we use state?

    Each adaptor has a configuration schema that's recommended for use in your state.json. Here is an example of how to set up state.configuration for language-http.

    {
    "username": "name@email",
    "password": "supersecret",
    "baseUrl": "https://jsonplaceholder.typicode.com"
    }

    Tasks:

    1. Update your state.json to look like this:

      state.json
      {
      "configuration": {
      "baseUrl": "https://jsonplaceholder.typicode.com"
      }
      }

      Since we have update our configuration in our state.json we can now use get() helper function without the need to specify the baseUrl—i.e get('posts')

    2. Update your getPosts.js job to look like this:

      getPosts.js
      // Get all posts
      get('posts');

      fn(state => {
      const posts = state.data;
      console.log(posts[0]);
      return state;
      });
    3. Now run the job using the following command

      openfn getPosts.js -a http -s tmp/state.json -o tmp/output.json

      And validate that you see the expected CLI logs:

      [CLI] ✔ Compiled job from getPosts.js
      GET request succeeded with 200
      [R/T] ✔ Operation 1 complete in 120ms
      [JOB]{
      userId: 1,
      id: 1,
      title: 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit',
      body: 'quia et suscipit\n' +
      'suscipit recusandae consequuntur expedita et cum\n' +
      'reprehenderit molestiae ut ut quas totam\n' +
      'nostrum rerum est autem sunt rem eveniet architecto'
      }
      [R/T] ✔ Operation 2 complete in 0ms
      [CLI] ✔ Writing output to tmp/output.json
      [CLI] ✔ Done in 470ms!

    🏆 Challenge: Fetch Covid-19 metadata

    1. Using the disease.sh API, write an operation that returns all covid-19 metadata.
    tip

    https://disease.sh/v3/covid-19/ as your baseUrl in state.configuration

    1. Validate your output: there are a lot of ways you might choose to format or display this data. Share your results with your administrator for feedback.

    4. Additional arguments and commands

    🏆 Challenge: Practice CLI arguments and commands

    Perform these tasks and submit answers to the discussion questions to your administrator for feedback.

    1. Compile a openfn job (hello.js).

      What's the difference between the job you wrote and the compiled job?

    2. Run a job without "strict mode" enabled.

      What's the difference between the outputs when strict mode is enabled and disabled?

    3. Run a job with the log level set to none, and then run it again with the log level set to debug.

      When is it appropriate to use these different log levels?

    5. Manipulating data in a sequence of operations

    In most cases you need to manipulate, clean, or transform data at some step in your workflow. For example after we get data from the https://jsonplaceholder.typicode.com registry we might need to group the posts by user id. The example below shows how we can:

    1. get all posts and return them in state.data
    2. group returned posts by userId
    3. log posts with userId 1
    Example:
    getPosts.js
    // Get all posts
    get('posts');

    // Group posts by user id
    fn(state => {
    const posts = state.data;

    // Group posts by userId
    const groupPostsByUserId = posts.reduce((acc, post) => {
    const existingValue = acc[post.userId] || [];
    return { ...acc, [post.userId]: [...existingValue, post] };
    }, {});

    // console.log(groupPostsByUserId);
    return { ...state, groupPostsByUserId };
    });

    // Log posts where userId = 1
    fn(state => {
    const { groupPostsByUserId } = state;
    console.log('Post with userId 1', groupPostsByUserId[1]);
    return state;
    });
    What is array.reduce?
    The reduce() method applies a function against an accumulator and each value of the array (from left-to-right) to reduce it to a single value.

    Perhaps the easiest-to-understand case for reduce() is to return the sum of all the elements in an array:

    JavaScript Demo: Array.reduce()
    const array1 = [1, 2, 3, 4];

    // 0 + 1 + 2 + 3 + 4
    const initialValue = 0;
    const sumWithInitial = array1.reduce(
    (accumulator, currentValue) => accumulator + currentValue,
    initialValue
    );

    console.log(sumWithInitial);
    // Expected output: 10

    You can learn more about array.reduce from this article

    Expected CLI logs

    [CLI] ✔ Compiled job from getPosts.js
    GET request succeeded with 200 ✓
    [R/T] ✔ Operation 1 complete in 825ms
    [R/T] ✔ Operation 2 complete in 0ms
    [JOB] ℹ Post with userId 1 [
    //All of posts for userId 1
    ]
    [R/T] ✔ Operation 3 complete in 12ms
    [CLI] ✔ Writing output to tmp/output.json
    [CLI] ✔ Done in 1.239s! ✨

    🏆 Challenge: extract names & emails

    Using https://jsonplaceholder.typicode.com/posts/1/comments API fetch comments for post with id 1 and extract name and email from each comment in that post

    1. Get post all comments for post id 1
    2. Extract name and email from comments
    3. Log the extracted data from comments

    Discuss the results with your administrator.

    6. Debugging errors

    When debugging, it’s interesting to use log to have a visual representation of the content of the manipulated objects (such as state).

    When you want to inspect the content of state in between operations, add an fn() block with a console.log:

    // firstOperation(...);

    fn(state => {
    console.log(state);
    return state;
    });

    // secondOperation(...);
    Create debug.js and paste the code below
    debug.js
    // Get all posts
    get('posts');

    // Get post by index helper function
    fn(state => {
    // const getPostbyIndex = (index) => dataValue(index)(state);
    console.log(dataValue(1));

    return { ...state };
    });
    Run openfn debug.js -a http

    Expected CLI logs

    [CLI] ✘ TypeError: path.match is not a function
    at dataPath (/tmp/openfn/repo/node_modules/@openfn/language-common/dist/index.cjs:258:26)
    at dataValue (/tmp/openfn/repo/node_modules/@openfn/language-common/dist/index.cjs:262:22)
    at getPostbyIndex (vm:module(0):5:37)
    at vm:module(0):18:36
    at /tmp/openfn/repo/node_modules/@openfn/language-common/dist/index.cjs:241:12
    at file:///home/openfn/.asdf/installs/nodejs/18.12.0/lib/node_modules/@openfn/cli/node_modules/@openfn/runtime/dist/index.js:288:26
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async run (file:///home/openfn/.asdf/installs/nodejs/18.12.0/lib/node_modules/@openfn/cli/node_modules/@openfn/runtime/dist/index.js:269:18)
    at async executeHandler (file:///home/openfn/.asdf/installs/nodejs/18.12.0/lib/node_modules/@openfn/cli/dist/process/runner.js:388:20)

    As you can see from our logs that helper function dataValue has a TypeError, To troubleshoot this you can go to the documentation for dataValue -> docs.openfn.org/adaptors/packages/common-docs/#datavaluepath--operation

    According to the docs, dataValue take path which is a string type. But in our operation we were passing an integer, that’s why we have a TypeError. You can fix the error by passing a string in dataValue i.e console.log(dataValue(“1”))

    Expected CLI logs

    [CLI] ✔ Compiled job from debug.js
    GET request succeeded with 200
    [R/T] ✔ Operation 1 complete in 722ms
    [JOB][Function (anonymous)]
    [R/T] ✔ Operation 2 complete in 1ms
    [CLI] ✔ Writing output to tmp/output.json
    [CLI] ✔ Done in 1.102s ✨

    If you need more information for debugging you can pass -l debug which will give all information about the run

    i.e openfn debug.js -a http -l debug

    🏆 Challenge: control error messages

    Debug what is causing an error on the following line of code and display the error message

    // Get post where id is 180
    get('posts/180');

    Discuss the results with your administrator.

    7. Each and array iteration

    We often have to perform the same operation multiple times for items in an array. Most of the helper functions for data manipulation are inherited from @openfn/language-common and are available in most of the adaptors.

    Modify getPosts.js to group posts by user-ID
    getPosts.js
    // Get all posts
    get('posts');

    // Group posts by user
    fn(state => {
    const posts = state.data;

    // Group posts by userId
    const groupPostsByUserId = posts.reduce((acc, post) => {
    const existingValue = acc[post.userId] || [];
    return { ...acc, [post.userId]: [...existingValue, post] };
    }, {});

    // console.log(groupPostsByUserId);
    return { ...state, groupPostsByUserId };
    });

    // Log posts where userId = 1
    fn(state => {
    const { groupPostsByUserId } = state;
    const posts = groupPostsByUserId[1];

    // console.log("Post with userId 1", groupPostsByUserId[1]);
    return { ...state, posts };
    });

    each('posts[*]', state => {
    console.log('Post', JSON.stringify(state.data, null, 2));
    return state;
    });

    Notice how this code uses the each function, a helper function defined in language-common but accessed from this job that is using language-http. Most adaptors import and export many functions from language-common.

    Run openfn getPosts.js -a http -o tmp/output.json

    Expected CLI logs

    [CLI] ✔ Compiled job from getPosts.js
    GET request succeeded with 200
    [R/T] ✔ Operation 1 complete in 730ms
    [R/T] ✔ Operation 2 complete in 0ms
    [R/T] ✔ Operation 3 complete in 0ms
    [JOB] ℹ Posts [
    // Posts
    ]
    [R/T] ✔ Operation 4 complete in 10ms
    [CLI] ✔ Writing output to tmp/output.json
    [CLI] ✔ Done in 1.091s!

    🏆 Challenge: Reduce, filter, and map

    Using Javascript globals i.e Array.reduce, Array.filter or Array.map, build function that will get posts by user id.

    1. Create a file called job1.js
    2. Add the 1st operation which is get all posts
    3. Add 2nd operation which has a function that filter posts by id
    4. Use the function from 2nd operation to get all post for user id 1

    Discuss the results with your administrator.

    8. Running Workflows

    As of v0.0.35 the @openfn/cli supports running not only jobs, but also workflows. Running a workflow allows you to define a list of jobs and rules for executing them. You can use a workflow to orchestrate the flow of data between systems in a structured and automated way.

    For example, if you have two jobs in your workflow (GET users from system A & POST users to system B), you can set up your workflow to run all jobs in sequence from start to finish. This imitates the flow trigger patterns on the OpenFn platform where a second job should run after the first one succeeds, respectively, using the data returned from the first job. “

    tl;dr

    You won't have to assemble the initial state of the next job, the final state of the upstream job will automatically be passed down to the downstream job as the initial state.

    Workflow

    A workflow is the execution plan for running several jobs in a sequence. It is defined as a JSON object that consists of the following properties:

    • start (optional): The ID of the job that should be executed first (defaults to jobs[0]).
    • jobs (required): An array of job objects, each of which represents a specific task to be executed.
      • id (required): A job name that is unique to the workflow and helps you ID your job.
      • configuration: (optional) Specifies the configuration file associated with the job.
      • data (optional): A JSON object that contains the pre-populated data.
      • adaptor (required): Specifies the adaptor used for the job (version optional).
      • expression (required): Specifies the JavaScript file associated with the job. It can also be a string that contains a JavaScript function to be executed as the job.
      • next (optional): An object that specifies which jobs to call next. All edges returning true will run. The object should have one or more key-value pairs, where the key is the ID of the next job, and the value is a boolean expression that determines whether the next job should be executed.If there are no next edges, the workflow will end.
    Example of a workflow
    Here's an example of a simple workflow that consists of three jobs:
    workflow.json
    {
    "start": "getPatients",
    "jobs": [
    {
    "id": "getPatients",
    "adaptor": "http",
    "expression": "getPatients.js",
    "configuration": "tmp/http-creds.json",
    "next": {
    "getGlobalOrgUnits": true
    }
    },
    {
    "id": "getGlobalOrgUnits",
    "adaptor": "common",
    "expression": "getGlobalOrgUnits.js",
    "next": {
    "createTEIs": true
    }
    },
    {
    "id": "createTEIs",
    "adaptor": "dhis2",
    "expression": "createTEIs.js",
    "configuration": "tmp/dhis2-creds.json"
    }
    ]
    }
    tmp/http-creds.json
    tmp/http-creds.json
    {
    "baseUrl": "https://jsonplaceholder.typicode.com/"
    }
    tmp/dhis2-creds.json
    tmp/dhis2-creds.json
    {
    "hostUrl": "https://play.dhis2.org/2.39.1.2",
    "password": "district",
    "username": "admin"
    }
    getPatients.js
    getPatients.js
    // Get users from jsonplaceholder
    get('users');

    // Prepare new users as new patients
    fn(state => {
    const newPatients = state.data;
    return { ...state, newPatients };
    });
    getGlobalOrgUnits.js
    getGlobalOrgUnits.js
    // Globals: orgUnits
    fn(state => {
    const globalOrgUnits = [
    {
    label: 'Njandama MCHP',
    id: 'g8upMTyEZGZ',
    source: 'Gwenborough',
    },
    {
    label: 'Njandama MCHP',
    id: 'g8upMTyEZGZ',
    source: 'Wisokyburgh',
    },
    {
    label: 'Njandama MCHP',
    id: 'g8upMTyEZGZ',
    source: 'McKenziehaven',
    },
    {
    label: 'Njandama MCHP',
    id: 'g8upMTyEZGZ',
    source: 'South Elvis',
    },
    {
    label: 'Ngelehun CHC',
    id: 'IpHINAT79UW',
    source: 'Roscoeview',
    },
    {
    label: 'Ngelehun CHC',
    id: 'IpHINAT79UW',
    source: 'South Christy',
    },
    {
    label: 'Ngelehun CHC',
    id: 'IpHINAT79UW',
    source: 'Howemouth',
    },
    {
    label: 'Ngelehun CHC',
    id: 'IpHINAT79UW',
    source: 'Aliyaview',
    },
    {
    label: 'Baoma Station CHP',
    id: 'jNb63DIHuwU',
    source: 'Bartholomebury',
    },
    {
    label: 'Baoma Station CHP',
    id: 'jNb63DIHuwU',
    source: 'Lebsackbury',
    },
    ];

    return { ...state, globalOrgUnits };
    });
    createTEIs.js
    createTEIs.js
    fn(state => {
    const { newPatients, globalOrgUnits } = state;

    const getOrgUnit = city =>
    globalOrgUnits.find(orgUnit => orgUnit.source === city).id;

    const mappedEntities = newPatients.map(patient => {
    const [firstName = 'Patient', lastName = 'Test'] = (
    patient.name || ''
    ).split(' ');

    const orgUnit = getOrgUnit(patient.address.city);

    const attributes = [
    { attribute: 'w75KJ2mc4zz', value: firstName },
    { attribute: 'zDhUuAYrxNC', value: lastName },
    { attribute: 'cejWyOfXge6', value: 'Male' },
    ];

    return { ...patient, attributes: attributes, orgUnit: orgUnit };
    });

    return { ...state, mappedEntities };
    });

    each(
    'mappedEntities[*]',
    create('trackedEntityInstances', {
    orgUnit: dataValue('orgUnit'),
    trackedEntityType: 'nEenWmSyUEp',
    attributes: dataValue('attributes'),
    })
    );

    Run openfn [path/to/workflow.json] to execute the workflow.

    For example if you created workflow.json in the root of your project directory, This is how your project will look like
        devchallenge
    ├── .gitignore
    ├── getPatients.js
    ├── createTEIs.js
    ├── getGlobalOrgUnits.js
    ├── workflow.json
    └── tmp
    ├── http-creds.json
    ├── dhis2-creds.json
    └── output.json
    openfn workflow.json -o tmp/output.json

    On execution, this workflow will first run the getPatients.js job. If is successful, getGlobalOrgUnits.js will run using the final state of getPatients.js. If getGlobalOrgUnits.js is successful, createTEIs.js will run using the final state of getGlobalOrgUnits.js.

    Note that without the -i flag, you'll need to already have your adaptor installed. To execute the workflow with the adaptor autoinstall option run this command:

    openfn workflow.json -i -o tmp/output.json

    On execution, this workflow will first auto-install the adaptors then run the workflow

    Important

    When working with the workflow.json file, it is important to handle sensitive information, such as credentials and initial input data, in a secure manner. To ensure the protection of your sensitive data, please follow the guidelines outlined below:

    1. Configuration Key: In the workflow.json file, specify a path to a git ignored configuration file that will contain necessary credentials that will be used to access the destination system. For example:

      {
      ...
      "configuration": "tmp/openMRS-credentials.json"
      },
    2. Data Key: Incase you need to pass initial data to your job, specify a path to a gitignored data file

      {
      ...
      "data": "tmp/initial-data.json",
      }

    CLI Usage - Key Commands

    You’ll learn about these commands in the following challenges, but please refer to this section for the key commands used in working with the CLI.

    Check the version

    openfn version

    Get help

    openfn help

    Run a job

    openfn path/to/job.js -ia {adaptor-name}

    Note: You MUST specify which adaptor to use. Pass the -i flag to auto-install that adaptor (it's safe to do this redundantly).

    You can find the list of publicly available adaptors here.

    Path is the job to load the job from (a .js file or a dir containing a job.js file) For example openfn execute hello.js Reads hello.js, looks for state and output in foo

    -i, --autoinstall Auto-install the language adaptor
    -a, --adaptors, --adaptor A language adaptor to use for the job

    If an adaptor is already installed by auto install, you can use the command without the -i options. i.e openfn hello.js -a http

    Change log level

    You can pass -l info or --log info to get more feedback about what's happening, or --log debug for more details than you could ever use. Below is the list of different log levels

    openfn hello.js -a http -l none
    log leveldescription
    -l noneQuiet mode
    -l defaultTop level information of what is happening
    -l infoGet more feedback on what is happening openfn
    -l debugGet information about runtime, cli, compiler and the job

    Compilation

    The CLI will attempt to compile your job code into normalized Javascript. It will do a number of things to make your code robust, portable, and easier to debug from a pure JS perspective.

    openfn compile [path]

    Will compile the openfn job and print or save the resulting js.

    Learn more about CLI github.com/OpenFn/kit/

    - + \ No newline at end of file diff --git a/fr/documentation/core.html b/fr/documentation/core.html index ab6a730f90e..8e75f0850ea 100644 --- a/fr/documentation/core.html +++ b/fr/documentation/core.html @@ -22,13 +22,13 @@ - +

    Core

    Core reaching EOL in 2023.

    OpenFn/core is currently still being used by the v1 platform (www.openfn.org) but is reaching end-of-life in 2023.

    What is core?

    Core is the central job processing program used in the OpenFn platform. It's what actually executes jobs with state and adaptors to do work for governments and NGOs all over the world.

    Where is it used?

    Core is used in OpenFn v1 (the web platform) and by developers who want to test job execution on their local machines. It's not used in Lightning (OpenFn v2) which instead makes use of the new runtime. For a local developer experience using the new runtime, check out CLI.

    Why might I want to use it now?

    If you've got jobs running on OpenFn v1 and want to test them locally, core will give you the exact same job running experience as you see on the web. This can be incredibly helpful for debugging.

    Using the new CLI.

    If you're a new OpenFn user and want to build or test jobs for Lighting (v2) and beyond in 2023, use the new CLI instead!

    How do I use it?

    Check out the official documentation on Github.

    The tl;dr: is that you execute jobs from the command line by passing in an expression, state, and the path to an adaptor.

    npm install @openfn/core
    core execute -l ../language-http.Adaptor -e ./some-exprsesion.js -s ./some-state.json

    The full options are:

    -l, --language    resolvable language/adaptor path                [required]
    -e, --expression target expression to execute [required]
    -s, --state Path to initial state file. [required]
    -o, --output Path to write result from expression
    -t, --test Intercepts and logs all HTTP requests to console
    - + \ No newline at end of file diff --git a/fr/documentation/deploy/options.html b/fr/documentation/deploy/options.html index 781789330bf..213e6ad5fb8 100644 --- a/fr/documentation/deploy/options.html +++ b/fr/documentation/deploy/options.html @@ -22,13 +22,13 @@ - +

    Planning

    Introduction

    OpenFn can be used as a secure, stable, scalable cloud-hosted offering or deployed locally—with both managed and un-managed options. Regardless of which path you choose, you can configure OpenFn so that no sensitive data is kept outside your country's borders.

    Portability

    Because of OpenFn's portability specification and open-source deployment tools you can transition between these various pathways at any time. We're committed to a no vendor lock-in experience.

    PathwayFreeStandardDedicatedDo-it-yourself (DIY)
    DescriptionGo live today on OpenFn.org for small scale projectsScale up and down, pay only for what you needA dedicated, unrestricted OpenFn installation anywhere in the world on our servers or yoursDeploy and manage your own solutions with OpenFn
    LicenseFree forever with usage limitationsSaaS plans; contact enterprise@openfn.org for custom/invoice agreementsSDaaS includes deployment, maintenance, security patches, upgrades, and troubleshooting as a service; contact enterprise@openfn.orgLGPLv3 means use freely as part of any closed or open-source solution, but make all derivative works open source
    LocationSecure global cloud infrastructureSecure global cloud infrastructureLocal (in-country) or Global infrastructureWherever you want
    DeploymentClick to start at OpenFn.orgClick to start at OpenFn.orgContact enterprise@openfn.orgRead this docs page and visit our Github
    Setup & ConfigurationYour choice to setup yourself, with a certified implementer, or with the OpenFn.org teamYour choice to setup yourself, with a certified implementer, or with the OpenFn.org teamYour choice to setup yourself, with a certified implementer, or with the OpenFn.org teamYour choice to setup yourself, with a certified implementer, or with the OpenFn.org team
    SupportGive & receive support via the communityVarious levels from support@openfn.orgVarious levels from support@openfn.orgGive & receive support via the community

    Sample Local Deployment Plan

    This is just an example

    Your requirements will vary, but this is an example plan for achieving a large-scale, high-sensitivity local deployment.

    If you're considering a large-scale/high-sensitivity implementation of OpenFn on local/government-managed servers, you might:

    1. Run a proof-of-concept, prototype, or time-bound production solution using the cloud hosted offering while determining fit and value. (It's a more secure, less expensive, and faster way to prove out the value and viability of the solution itself.)
    2. While the first phase is running, assess the value and begin preparations:
      1. Assess the value of the solution itself—is it solving the problems you thought it would?
      2. Asses your data residency requirements—do you need to run this solution in country?
      3. Assess your team’s technical DevOps capacity—how are other local deployments of DPGs going?
      4. Assess your countries computing, storage, and networking infrastructure—what options* are available for servers and network connectivity?
      5. Determine if a "zero-persistence" cloud solution or a locally deployed solution is best for your ministry—with the data above run a cost-benefit analysis on both options.
    3. Engage with OpenFn.org or a certified partner to practice deployment, migration, rollback, restart, backup, etc.
    4. Using OpenFn’s portability tools, run a cloned local version of your cloud-hosted solution to assess the readiness of your local deployment.
    5. Establish a fail-over protocol with OpenFn to “fail to cloud” for critical systems.
      1. How often should the implementation configuration (not the sensitive data) be backed up to the OpenFn.org hosted cloud?
      2. What credentials and/or test environments should the cloud backup have access to?
      3. Establish a plan for switching between cloud and local.
    6. Establish a support retainer with OpenFn-certified local vendors and/or the OpenFn core team to help maintain the local deployment in case of issues.
    7. Transition fully to your local deployment and maintain capacity to support or redeploy your solution to other cloud or local servers.
    8. Monitor & adjust your strategy as and when required by your country’s usage and data sovereignty requirements evolve over time.

    *Head over to the Requirements page for more information on recommended server specifications.

    Moving from cloud to local (v1 or v2)

    For users that are planning a self-hosted implementation, we recommend developing and testing the initial solution on the OpenFn SaaS (v1 or v2, possibly on a free tier) and then exporting for use in Lightning (v2).

    This allows the implementer to focus on ironing out the business and technical requirements of the automation before incurring deployment costs. Focus on the solution, not the deployment. Your OpenFn solution can then be migrated to a local deployment of Lightning once it has been piloted, its value has been proven, and you're ready to scale it up.

    A user journey for locally deployed OpenFn

    1. Build and test your workflows on Openfn.org.
    2. Export your OpenFn project as code using the "export" button or deployment CLI.
    3. Deploy your local instance of OpenFn/Lightning.
    4. Import your project (from step #2) to your local OpenFn/Lightning instance using the deployment CLI.
    5. Re-configure your credentials (credential secrets will not be included in the export).
    6. Test your locally deployed project.

    Technical Guidelines

    For detailed deployment documentation instructions, head to the Lightning developer docs page, paying special attention to several sections:

    1. Getting Started
    2. Deployment Considerations
    3. Benchmarking
    - + \ No newline at end of file diff --git a/fr/documentation/deploy/requirements.html b/fr/documentation/deploy/requirements.html index 4c6755782a7..46da97b22d7 100644 --- a/fr/documentation/deploy/requirements.html +++ b/fr/documentation/deploy/requirements.html @@ -22,13 +22,13 @@ - +

    Requirements

    Plan first

    Not sure where to start? Head back to the "Planning" page to think about how you want to scale up your OpenFn automation projects.

    Assess your capacity

    Help your partner estimate up-front and ongoing costs

    Use these questions to start assessing capacity and technical resources so that your deployment partner can better estimate your total cost of ownership.

    1. How do you currently deploy, monitor, and maintain cloud-based applications at your organization/government? All deployment environments and institutions are unique and OpenFn is flexible; based on your current dev-ops processes we will recommend different deployment mechanisms.
    2. What IT and DevOps staff resources are available to support OpenFn deployment and maintenance? Do they have experience with Docker & Kubernetes? Do they have experience with Postgres databases?
    3. Will the deployment require high-availability? (i.e., if OpenFn will receive requests in real-time from other applications rather than run cron-based jobs, then at least two instances of OpenFn should be run simultaneously behind a load-balancer, making use of “distributed Erlang” to ensure graceful application redundancy; if OpenFn will not be responsible for receiving requests and will only be responsible for making relatively time-independent outbound requests on a cron schedule, the importance of maintaining a zero-downtime system is slightly reduced.)

    Knowledge Requirements

    SkillRelevance and reason
    ErlangThe OpenFn webapp/orchestration layer is an Erlang OTP application.
    JavascriptThe OpenFn job processing workers and OpenFn workflows themselves are Javascript-based. With knowledge of how NodeJs works you can build workflows that do anything.
    PostgresThe default database for OpenFn is PostgreSQL
    DockerWe publish all OpenFn images on Docker Hub. Whether you're streamlining developer setup or using container orchestration technologies, understanding docker and containerized computing is helpful.
    KubernetesFor high-availability deployments, Kubernetes services provide load balancing and simplify container management on multiple hosts. They make it easy for an enterprise's apps to have greater scalability and be flexible, portable and more productive.

    Machine Requirements

    If you're going with "DIY", start simple

    Kubernetes is NOT required, but it's recommended for high-availability deployments. Consider docker or bare-metal deployments (Erlang OTP apps work very well on Linux) for a simpler setup.

    The official OpenFn SaaS uses Kubernetes for managed deployments on Google Cloud and we recommend it for high-availability and scalable deployments. With dynamic workloads, it is important (for stability and cost reasons) to be able to scale the Erlang OTP app node pool & pods independently of the Javascript worker node pool & pods.

    1. Use a scalable SQL service and keeping at least two app nodes running with the following specs will help prevent unwanted downtime.
      1. GKE requests: cpu@ "500m", memory@ "1024Mi"
      2. GKE limits: memory@ "2560Mi"
    2. For a simple non-Kubernetes/HA deployments, the minimum recommended machines are:
      • Application machine: 2 vCPU (roughly a single core of a 2.6 GHz Intel Xeon E5) with 3.75 GB memory and 15 gb of storage for the application
        1. Any linux-based operating system that can run Docker (Ubuntu 20.04+ or Debian 9+).
        2. Docker (18 or greater).
      • Database machine: 2 vCPU (roughly a single core of a 2.6 GHz Intel Xeon E5) with 3.75 GB memory. Storage required for the DB varies by how many days (if any) of message data you’d like to store on the app itself and cannot be determined without estimates for message/run throughput. If scaling physical storage is not difficult for your particular deployment, start at 40gb. 3. A Postgres (at least v14.2) instance (as we run this on a separate server) from the application for greater stability.
    3. If both the application and database are hosted on the same machine (which is not recommended) that machine should have roughly the sum of the requirements above.
    4. Note that the application by default provides an HTTP endpoint (no TLS/SSL). A reverse-proxy/load-balancer is expected to provide both HTTPS (HTTP2 compliant) and load balancing between instances.
      • I.e. the application server provides no encryption for web access, a web server in front of the application needs to be provided; Nginx is a good start, provided with TLS certificates.
    5. While network architecture is up to the client, we strongly recommend a private subnet for the application servers.
    6. The OpenFn application does not need to be deployed on the same machine as any other services, however network routing and firewall rules will need to be provided in order for the integration to access the source and destination systems if hosted on different servers.
    7. For troubleshooting/external support, administrators will need SSH access to an unrestricted account (sudo for Ubuntu) if deployment maintenance services are required.

    Possible Configurations

    While your deployment strategy should be carefully considered with a DevOps specialist, the following sample configurations may provide useful starting points.

    (a) Simple

    Deploy the application and database on the same machine.

    Deploy the application and database on separate machines.

    (c) Ideal

    Auto-scale different optimized node pools for the Erlang orchestration app and the Javascript worker app.

    - + \ No newline at end of file diff --git a/fr/documentation/design/design-quickstart.html b/fr/documentation/design/design-quickstart.html index 3bea99d0776..6789284315d 100644 --- a/fr/documentation/design/design-quickstart.html +++ b/fr/documentation/design/design-quickstart.html @@ -22,13 +22,13 @@ - +

    Getting Started on Integration Design

    Integration design begins with the functional or business requirements (not the technical bits). Therefore, you do not need to be an IT consultant or software engineer to start designing an integration solution! (Although having those resources certainly helps when we get to the technical specifications... but more on that later).

    A clear understanding and documentation of the business processes, functional requirements, and people interacting with your desired integration are the first critical step in integration design. As you're planning for your next integration project, start developing the following documentation to get started with solution.

    1. Capture requirements as user stories

    Documenting why the integration is needed and the driving requirements is important to making sure the priority needs are identified and that everyone is aligned on project expectations.

    User stories are short, simple descriptions of a requirement told from the perspective of the person who desires the new functionality.

    As a <type of user>, I want <some functionality> so that <desired business outcome>.

    Good user stories will capture 3 parts:

    1. Who - who is using the solution?
    2. What - what do they hope to achieve via the solution?
    3. Why - why is this desire important? What are the business implications?

    If you capture these 3 elements, user stories can b ean effective way of detailing integration requirements and starting discussions at your organization about which requirements are priority.

    Example user stories:

    • Case Referrals: As a caseworker, I want to automatically send referral requests to my partner agency using another case management system, so that I can securely share case information and quickly notify them when their services are needed in a crisis situation.
    • EMR - HIS: As a clinic manager, I would like to integrate patient data from the district clinic electronic medical record system with the national DHIS2 health information system, so that I can securely and automatically report on health outcomes for key indicators in my district.
    • Kobo Toolbox - MSSQL Database: As a M&E manager, I want to monitor Kobo Toolbox survey responses in a central database in real-time, so that I can better understand data collection activities and program performance across my research partner sites.

    2. Diagram the business process

    Once the user stories have been identified, start to document the functional processes that are in place (or will need to be implemented) in order to achieve the desired requirments. These might be automated or human/manually-driven processes. This is the precursor step to mapping out the data flow (which details the technical steps for how connections will be made and data exchanged between systems). Again, process mapping is business analysis–not a technical exercise.

    For example, if you want to exchange information between your organization and another... how might this exchange work from a functional point of view? What information will be exchanged? With whom (between which systems or users)? When will the information be exchanged? And what are the human or automation steps that should facilitate and trigger this exchange? These business process questions are discussed in more detail on the So, what is an integration? page.

    tip

    Capture the current & desired process Document current and desired business processes in order to determine how information should be exchanged between your organization/system/users and others, and to ensure alignment of expectations and assumptions across partners.

    Use BPMN for standardized documentation

    When documenting internal business procedures, consider using standard Business Process Model and Notation (BPMN) as a standard way to graphically document key business processes. BPMN (learn more about standard BPMN 2.0) has flowchart-like symbols and precise notation that can be translated to software process components.

    Check out these resources for learning & building your own BPMN diagrams:

    Looking for a crash course? This video provides a quick overview of BPMN and how to use it: https://www.youtube.com/watch?v=BwkNceoybvA

    OpenFn Examples of BPMN Diagrams

    See the below example BPMN diagram for the user story:

    As a program manager, I want to extract beneficiary details ("tracked entity instances") from my country's DHIS2 system, so that I can enroll them as contacts in my SMS campaign configured on RapidPro to send them automated alerts and program updates.

    3. Map data elements to be exchanged

    Once the business processes are documented, start to document the specific data elements to be exchanged. This exercise requires a lot of specificity to detail the individual "fields" or "attributes" to be exchanged.

    The output of this exerice is a Data Element Mapping Specification, which will serve as (1) documentation of the specific data elements agreed to be exchanges, as well as (2) a guide for how to translate meaning between partners and systems (e.g., client in one system might mean patient in another).

    If your organization already has a data management or sharing agreement, this might be the perfect starting point for identifying the specific data points to be exchanged.

    Mapping Specification Template

    Collaborating on mapping specifications with implementing partners is an important exercise for documenting very specific requirements and building consensus on what data exactly will be exchanged, and how.

    Template for getting started

    Use this template for drafting your own data element mapping specification.

    This template includes:

    1. Details on the source metadata such as field API name, data type, sample data values and comments: image

    2. Similar details on the destination metadata: image

    3. Notes on data transformations & cleaning required and comments for tracking changes & questions for technical input:

      image

    To build a complete mapping specification, you’ll need to...

    1. Define the data elements to be exchanged by connected systems (you may need to export target system metadata to identify exact names)
    2. Determine which data elements belong to the data source, and which belong to the destination system
    3. Agree on how the data elements should map between target systems
    4. Analyze the structure and quality of the data to consider if data values will need to be transformed, cleaned, or re-labeled in order to map

    This mapping will serve as a blueprint for the technical integration setup, and will be an important artefact of the data sharing agreement between partners.

    Tips for drafting mapping specifications

    • Version mappings to keep track of mapping change requests over time
    • Color coding: Highlight any fields that require further discussion one color and any newly added fields another color
    • Use Google Sheets or shared document comments and email to notify appropriate users when changes have been made to the mappings
    • Include a legend/README that explains how to use the mappings template
    • Unique identifiers: spend time evaluating available unique identifier schemes and what options may already be implemented by related information systems
    • When mapping multiple choice questions, make sure to consider how the answer choices should map to the source/destination system.
    • Check out system-specific mapping tips by visiting the Apps section of the Docs site (see sidebar).

    Next Steps

    Once you have your (1) user stories, (2) business process diagrams, and (3) data element specifications defined, you have produced a suite of functional design documentation that will drive the technical design of your integration solution, as well as memorialize the business decisions and agreements made by implementing partners.

    Share this documentation with any technical implementation team, or check out the Build documentation section to learn how to implement these design specifications using OpenFn.

    - + \ No newline at end of file diff --git a/fr/documentation/design/when-to-integrate.html b/fr/documentation/design/when-to-integrate.html index 432c0c6b0a0..5d579da4ceb 100644 --- a/fr/documentation/design/when-to-integrate.html +++ b/fr/documentation/design/when-to-integrate.html @@ -22,13 +22,13 @@ - +
    - + \ No newline at end of file diff --git a/fr/documentation/devtools/home.html b/fr/documentation/devtools/home.html index a21cd5b48f4..a3a710a52d1 100644 --- a/fr/documentation/devtools/home.html +++ b/fr/documentation/devtools/home.html @@ -22,13 +22,13 @@ - +

    Devtools

    Devtools is deprecated

    Please note that OpenFn/devtools are being deprecated and replaced by OpenFn/cli. Learn more about CLI github.com/OpenFn/cli/

    OpenFn/Devtools is a set of tools for writing & testing job expressions, managing OpenFn projects, and developing new adaptors. It's how most people work with OpenFn from their own command lines, outside of OpenFn.org, Microservice, or Lightning.

    Are you a developer?

    The Devtools repo is a collection of bash and Node scripts, as well as a suggested (but not necessary) directory structure for working with OpenFn jobs and adaptors.

    To run OpenFn jobs locally, you only need Core and at least one adaptor, e.g. language-http and you may prefer to install core globally via npm install -g @openfn/core

    Opérationnel

    1. Install git and Node.js (version 14 or greater)

    2. Clone and install devtools to setup core, language-common, and language-http using either SSH or HTTPS:

    git clone git@github.com:OpenFn/devtools.git
    cd devtools
    ./install.sh ssh

    Note: If you get a "permission denied" message when running ./install.sh, try run chmod +x ./install.sh then retry the install command.

    Utilisation

    Execute takes:

    1. -l [language-package].Adaptor: L'adaptateur étant utilisé
    2. -e [expression.js]: L'expression en cours de test
    3. -s [state.json]: Le message données : {...} et configuration : {...} du credential
    4. -o [output.json]: Le fichier dans lequel la sortie sera écrite

    Run a job using bash

    ~/devtools/core/bin/core execute \
    -l ~/devtools/adaptors/language-http \
    -s ./tmp/state.json \
    -o ./tmp/output.json \
    -e ./tmp/expression.js

    More on Devtools

    Install a specific adaptor version

    To install specific adaptors, run ./install.sh ${ssh || https} language-${name}

    When you install a new adaptor, the latest version will be enabled by default. To switch the adaptor version when running jobs locally, in the root of the adaptor directory, run:

    git checkout tags/v2.4.15 (substitute 2.4.15 with the adaptor version you want)

    The --test option

    ~/devtools/core/bin/core execute \
    -l ~/devtools/adaptors/language-http \
    -s ./tmp/state.json \
    -o ./tmp/output.json \
    -e ./tmp/expression.js \
    --test

    This intercepts all HTTP requests and displays the request information for debugging.

    .FakeAdaptor

    Adaptors may provide dummy modules for testing. language-salesforce has a built-in .FakeAdaptor which allows a user to test expressions on data without sending them to a real Salesforce server.

    Instead of using -l ./language-salesforce.Adaptor, use -l./language-salesforce.FakeAdaptor to test expressions offline: ./core/bin/core execute -l ./language-salesforce.FakeAdaptor -s ./tmp/state.json -o ./tmp/output.json -e ./tmp/expression.js

    Tests hors ligne pour d'autres adaptateurs

    For most standard adaptors which make use of HTTP requests, you can add --test to the execute command to intercept all HTTP requests and return a 200.

    Hands-on with devtools and the command line

    tip

    Check out this example workflow for using devtools in your day-to-day.

    1. cd in the folder containing the repo you're working on.
    2. You can keep your job scripts anywhere, but store state.json and output.json in a tmp folder. In our repos we always add the tmp directory in our .gitignore file that tells Github to ignore the specified paths. Make sure you have your .gitignore file and you know what's tracked by Github and what's not. state and config may contain sensitive configuration information and project data so never upload them to Github!
    3. The devtools command is a mouthful. You can search your command line history with Ctl-r and typing core to pull it up the devtools command. Notice that it’s got line breaks and a flag for all the important bits… -l for language-package (adaptor), -s for state, -o for output, and -e for expression. You can also save your frequently used devtools commands in a document and just copy-paste.
    4. It's quick the change job names or the adaptor in the command. If you put all your adaptors in the same folder ~/devtools/adaptors/language-_________ you can quickly swap them in the command, as you can see in the video below. The Backspace key deletes characters behind your cursor, Delete deletes them in front.
    5. You can use the TAB key to auto-complete the file path as you search for a job.
    6. Once you've changed a couple of characters for the adaptor and expression (in the video state and output stayed the same because we're using the tmp convention) press enter and see the results.

    devtools

    Configure an OpenFn project

    The easiest way to configure a project is via the web interface (you can then export or openfn pull the project as code) but you can also run ./scripts/generate-project.js helps you build a project config YAML interactively, adding your triggers, credentials and jobs to the config. You can read more about the config file here

    If you choose monolith mode, all your job code will be included in the YAML. In URI mode, you’ll get a config file with URI-s to your defined jobs.

    Generate Project

    Pre-Requisites

    1. Node is required to run jobs and use many of the scripts in Devtools (e.g., npm run build is required after changes to adaptors).

    2. A basic working knowledge of NodeJs, promises and asynchronous functions is essential for writing adaptors.

    Scripts

    Devtools comes with a collection of scripts to aid in setting up a development environment for adaptor work, and include commands to quickly clone a large number of adaptors, create tarballs of adaptors with only production dependencies included, etc.

    For the kitchen sink, run:

    ./install ssh
    ./scripts/bootstrap npm-install

    In order to run the scripts, ensure you have cd'd into the project directory and enter ./scripts/<script-name>

    bootstrap

    Installs all adaptors in repos file to the /adaptors directory and prepares the working directory. This needs to be run before running any of the other scripts. Pass npm-install to run npm install for each adaptor also.

    ./scripts/bootstrap npm-install - to clone, set up hooks and npm install in each ./scripts/bootstrap- to clone and set up hooks in each

    generate-project.js

    ./scripts/generate-project.js interactively generates a YAML project configuration file that can be used both on the OpenFn platform and in OpenFn microservice to define projects.

    generate-doclets

    Iterates overs all language pack folder names found in the repos list and creates a doclet json file in the doclets directory.

    analyse-doclets

    Iterates overs all doclets found in doclets and gives a tree view of the doclet structure using jsdoc-query.

    Building adaptors for platform

    All adaptor releases are built inside a docker container. The importance of running the build and release process through a container is to standardize the build environment across the team. While adaptors can be built and run on lots of different operating systems and architectures, when we run the platform on Kubernetes it expects linux boxes running x86... so that's where we build these official releases.

    Here's how to build and release adaptors:

    1. Reopen your package in dev-container by typing ctrl+shift+p (or cmd+shift+p on mac) and choosing Remote-Container: Rebuild and Reopen in Container.
    2. After the build is finished, open a terminal in vscode and run openfn-devtools release . to build, tag, and push to npm.
    3. Run openfn-devtools package-release . to package everything with production dependencies and push to Github.

    Depending on how you've configured your local environment and your VSCode installation, you might encounter access issues preventing connections to NPM and GitHub.

    Troubleshooting

    There are a number of issues that you may encounter related to sharing settings that are responsible for passing ssh keys and local configurations from your host machine into the VSCode container.

    Git config issues

    An issue can pop up about git config not set, To solve this, you should probably set your email and name globally using the commands below:

    git config --global user.email "youremail@something.com"
    git config --global user.name "Your Name"

    SSH key issues

    You may find that you are unable to access your ssh keys from inside the container.

    Error

    permission denied (publickey)

    To solve this, first make sure the ssh agent is up and running. In MacOS, it is running by default. On Linux you can start the agent using the command

    eval $(ssh-agent -s)

    Then you can add these line your ~/.bash_profile or ~/.zprofile (for Zsh) to make it run by default.

    if [ -z "$SSH_AUTH_SOCK" ]; then
    RUNNING_AGENT="`ps -ax | grep 'ssh-agent -s' | grep -v grep | wc -l | tr -d '[:space:]'`"
    if [ "$RUNNING_AGENT" = "0" ]; then
    # Launch a new instance of the agent
    ssh-agent -s &> $HOME/.ssh/ssh-agent
    fi
    eval `cat $HOME/.ssh/ssh-agent`
    fi

    Next, run the command below to add your identity to the ssh agent:

      ssh-add <path-to-your-ssh-file>

    Finally, configure VSCode to share your local ssh keys with the dev container. In VSCode, go to Settings, and in the search bar, type terminal.integrated.inherit. You should see the option in the image below and check it if it's unchecked.

    vscode settings

    Github token sharing

    Our release process relies on a GH_TOKEN variable. Set up an access token in Github.

    In your ~/.bash_profile or ~/.zshrc file, export the newly created token by adding this line:

    export GH_TOKEN=<TOKEN>

    Using a new adaptor in an OpenFn/platform instance

    1. Add your release to the scripts/install-lp script.
    2. Add the version number to priv/adaptors.json.
    3. Add the bodySchema to CredentialView.js.
    - + \ No newline at end of file diff --git a/fr/documentation/faqs.html b/fr/documentation/faqs.html index 5df7dbc2d4d..501978889b7 100644 --- a/fr/documentation/faqs.html +++ b/fr/documentation/faqs.html @@ -22,13 +22,13 @@ - +

    Questions fréquemment posées

    L'intégration des données, l'interopérabilité et l'automatisation des flux de travail peuvent être des sujets déroutants. Sans mentionner le fait qu'il existe de nombreux termes et manières de parler des mêmes concepts. Nous l'avons compris. Voici quelques questions qui reviennent souvent.

    Qu'est-ce que OpenFn ?

    OpenFn est une plateforme d'intégration en tant que service. Cela signifie que notre principale directive est de déplacer les données rapidement et en toute sécurité entre différents systèmes logiciels. Dans la plupart des cas :

    1. Une application source envoie des messages dans la boîte de réception votre proje quand quelque chose se produit.

    2. Les tâches seront déclenchés, en fonction de vos filtres, et utiliser les données de ces messages pour tenter des actions spécifiques dans les systèmes de destination.

    3. Les logs sont enregistrés pour que vous puissiez voir exactement ce qui s'est passé et quand et où il s'est produit une action en cas de tentative échouée, comme éditer la tâche ou même le message source et essayer à nouveau.

    Qui utilise OpenFn ?

    OpenFn est utilisé par les grandes et petites organisations, mais les individus qui interagissent avec la plate-forme comprennent des administrateurs système et les développeurs Javascript. Avec une compréhension de base de Javascript, la flexibilité de la plate-forme est presque illimitée.

    Qu'est-ce qu'une tâche `` ?

    L'automatisation d'OpenFn est centrée sur les tâches, qui définissent la série spécifique de tâches ou d'actions de base de données qu'OpenFn doit effectuer. Ils peuvent être configurés pour être activés (déclenchés) à certains intervalles de temps ou lorsque des données correspondant à des critères spécifiés sont reçues. Vous pouvez considérer les emplois comme un ensemble d'instructions que vous pourriez donner à un membre du personnel de saisie de données (par exemple, créer un nouveau dossier patient dans OpenMRS lorsqu'un formulaire contenant un client nouvellement enregistré est reçu de CommCare, exporter les données vers DHIS2 chaque semaine le vendredi 23 heures), envoyez un SMS avec le numéro de confirmation de paiement lorsque le message de confirmation de paiement est reçu, etc.).

    :::remarque

    Les tâches sont entièrement configurables et réutilisables. Ils peuvent également être enchaînés ensemble pour créer le flux d'automatisation multi-étapes , des synchronisations bidirectionnelles. et pour garder les données cohérentes entre plusieurs applications (en utilisant des modèles Saga multi-applications). Vous pouvez en savoir plus sur la synchronisation bidirectionnelle ci-dessous.

    :::

    Qu'est ce qu'une exécution ?

    Une exécution correspond à chaque exécution d'un job. Imaginez qu'un job est configuré pour créer un nouveau patient dans OpenMRS chaque fois qu'un dossier est ouvert dans CommCare. Au cours de la semaine prochaine, si 5 cas sont ouverts dans CommCare, vous verrez 5 exécutions différentes de ce job dans OpenFn. Si 4 courses sont réussies et qu'une a échoué, vous verrez 4 nouveaux patients dans OpenMRS, et votre administrateur système aura été averti que l'un de ces patients n'a pas pu être créé (ou tout autre traitement des erreurs plus robuste que vous avez configuré aura lieu.)

    Sachez qu'il n'y a pas toujours une cartographie de 1 à 1 entre les exécutions et les éléments réels avec lesquelles vous travaillez. Je pourrais définir un job qui récupère toutes les données d'événement mises à jour à partir de DHIS2 depuis les 2 dernières semaines et les publier sur une carte publique en utilisant CartoDB. Ce job déclenchée à des intervalles de temps spécifiés, toutes les 2 semaines dans ce cas, et après un mois, nous ne verrons que 2 exécutions dans OpenFn (soit une exécution toutes les deux semaines). Chaque exécution aura réussi ou échoué, et chacun peut avoir traité des milliers d'événements depuis DHIS2.

    :::remarque

    Pour un dernier exemple, une seule soumission de formulaire dans Open Data Kit peut déclencher un job qui crée de nouveaux contacts et enregistre la présence dans Salesforce. Dans ce cas, vous trouverez une exécution pour chaque soumission de formulaire ODK, mais chaque exécution créera de nombreux enregistrements différents dans Salesforce, notamment, au moins un contact et un nombre N d'enregistrements de présence, correspondant au nombre d'éléments dans votre formulaire ODK « groupe de répétition de présence ».

    :::

    OpenFn est-il open-source ?

    OpenFn est une suite de différentes technologies avec différentes licences. Nous avons crée et maintenons des dizaines de paquets logiciels de transformation de données open-source et de gestion d'API. Celles-ci, pour la plupart, sont sous licence LGPL et peuvent être utilisées librement pour extraire, transformer, et charger les données à partir d'une ligne de commande, ou dans le cadre d'une autre application logicielle.

    OpenFn héberge également une application web propriétaire qui relie ces outils (www.openfn.org) à une plate-forme de gestion d'intégration prête à l'emploi. Cette plate-forme est open-core, fournissant les puissants outils ETL qui sont au cœur de l'iPaaS propriétaire OpenFn.org en tant que logiciel libre et open-source (FOSS). Tous les jobs exécutés sur OpenFn.org, ainsi que tous les adaptateurs sous-jacents, peuvent être exécutés hors ligne à l'aide de nos outils FOSS.

    note

    Prochainement, OpenFn offrira également une option d'implémentation FOSS améliorée appelée OpenFn/microservice. Cette approche de microservices FOSS est actuellement en cours de développement avec le financement du centre DIAL Open Source, de Digital Square, et duFCDO (anciennement DFID).

    Veuillez noter que ce chemin ne fournit pas toute la plate-forme OpenFn en tant que logiciel libre et open source (FOSS). Dans les situations où un partenaire ou un gouvernement particulier est incapable d'utiliser la plate-forme propriétaire (bien qu'elle puisse être déployée sur des serveurs locaux avec une licence d'utilisation illimitée), cette approche garantit que tous les jobs, les triggers et la configuration de projet peuvent être exportés à partir d'OpenFn.org et utilisé, en conjonction avec les outils FOSS ETL d'OpenFn, pour déployer une implémentation de type microservices qui n'entraîne aucun coût de licence et fournit le traitement de données de base effectué par la plate-forme OpenFn. Alors qu'au départ, il n'y aura pas d'interface Web ni de possibilité de retraiter les messages, etc., ces fonctionnalités pourraient avec le temps être créées par des partenaires pour remplacer les fonctionnalités de la plate-forme OpenFn. C'est-à-dire qu'aucun investissement initial dans OpenFn ne sera perdu si les partenaires choisissent de créer leur propre plate-forme d'intégration entièrement open-source basée sur nos puissants outils ETL open-source.

    Quel est le coût de OpenFn ?

    Conception & coûts de mise en œuvre

    OFG propose une gamme de paquets pour assurer des implémentations réussies pour la première fois, qui incluent le conseil d'intégration, la conception, la configuration et le renforcement des capacités. Les engagements typiques prennent 1 à 5 jours, et notre paquetle plus populaire est le QuickStart d'intégration, dans lequel nous passons une semaine à concevoir et configurer ~ 5 flux d'intégration de bout en bout et à fournir une formation administrative à votre personnel pour 5000 USD.

    Coûts permanents

    OpenFn.org propose un plan gratuit pour les utilisateurs souhaitant tester la plate-forme ou mettre en œuvre des projets traitant de faibles volumes de données (jusqu'à 100 exécutions / mois). L'utilisation d'OpenFn.org, la plate-forme d'intégration en tant que service propriétaire (iPaaS), entraîne des coûts permanents, qui dépendent largement des volumes de données à traiter. OpenFn propose des abonnements mensuels, des licences d'entreprise pour les accords annuels et pluriannuels, ainsi que des options de déploiement illimitées et locales. Contactez enterprise@openfn.org pour en savoir plus et pour une estimation des coûts sur mesure.

    Il y a également des options DIY disponibles, ainsi que des services de formation sur mesure pour développer votre capacité à implémenter et gérer OpenFn de manière indépendante.

    Est-ce que je peux tester la plateforme ?

    Oui. En fait, vous pouvez l'utiliser gratuitement, pour toujours.

    OpenFn.org offre un plan gratuit à tous les utilisateurs (inscrivez-vous ici). Essayez avec OpenFn Docs, ou contactez notre équipe pour une consultation gratuite et de l'aide pour commencer. Changez votre plan OpenFn à tout moment (pas de verrouillage !), ou contactez enterprise@openfn.org pour en savoir plus sur les licences annuelles, d'entreprise et illimitées.

    :::astuce

    À faible volume, ou pour le prototypage, vous pouvez utiliser la plate-forme hébergée gratuitement pour toujours.

    :::

    Quelle est la fiabilité du service hébergé ?

    OpenFn a exploité l'extrême stabilité et l'évolutivité d'Erlang pour coordonner ces actions et fournir aux utilisateurs des alertes par e-mail, des outils de gestion de projet et un IDE de rédaction de travaux en ligne.

    Nous surveillons constamment notre propre statut avec une infrastructure indépendante sur status.openfn.org. Vous pouvez vous y abonner aux notifications ou suivre @openfnstatus.

    Nous fournissons ce service en permanence depuis 2014.

    OpenFn peut-il s'intégrer à mon application personnalisée ?

    Oui, OpenFn peut s'intégrer avec n'importe quelle application.

    Si votre technologie dispose d'un point de terminaison REST ou d'un service de webhooks, cela fonctionnera probablement immédiatement. Ceci couvre la plupart des applications web (par exemple, CommCare, Kobo, ODK, DHIS2, Salesforce, MS Dynamics, MPesa, etc.). OpenFn peut également s'intégrer à la plupart des bases de données, telles que Postgres, MySql et Mongo, des applications personnalisées, des systèmes gouvernementaux hérités, et peut même analyser les fichiers CSV, à condition qu'ils soient accessibles à partir d'un emplacement en ligne. En savoir plus sur la connexion des applications sources, ou consultez la page Apps pour applications largement implémentées.

    Nous proposons des connecteurs prédéfinis (appelés « adaptateurs ») pour les applications les plus populaires de nos utilisateurs afin de rendre la configuration de l'intégration plus rapide et plus conviviale lors de la connexion avec ces outils. Par exemple, les utilisateurs peuvent implémenter language-http pour envoyer des requêtes HTTP de base à n'importe quelle application web, ou implémenter language-dhis2 pour gérer automatiquement l'authentification DHIS2 et accéder aux fonctions d'assistance telles que fetchData () pour exporter les ensembles de données DHIS2.

    OpenFn supporte-t-il la synchronisation bidirectionnelle ?

    Oui, OpenFn peut prendre en charge la synchronisation bidirectionnelle des applications. Grâce aux déclencheurs de flux, les tâches OpenFn peuvent être enchaînées ensemble pour faciliter la synchronisation bidirectionnelle en temps réel, les processus d'automatisation en plusieurs étapes et de nettoyage des données, ainsi qu'une logique de branchement complexe. Les utilisateurs peuvent également implémenter des synchronisations de données bidirectionnelles, ainsi que des modèles Saga complexes pour implémenter une transaction qui couvre plusieurs applications en configurant des webhooks dans leurs applications de point de terminaison et en effectuant des mises à jour dans les deux systèmes lorsque des événements se produisent dans l'un ou l'autre.

    Ai-je besoin de savoir coder ?

    Non, mais cela aide d'avoir écrit une formule dans MS Excel ! De nombreux utilisateurs d'OpenFn sont familiers avec les données, pas avec le développement, et se familiarisent rapidement avec les tâches OpenFn.

    Si votre projet utilise un adaptateur OpenFn (par exemple, language-dhis2), vous avez accès aux fonctions d'aide pré-compilées (par ex. getPatient, mis à jour) pour que vous n'ayez pas besoin d'écrire du code personnalisé, et que vous puissiez plutôt utiliser la documentation OpenFn ou des scripts de tâches existants pour écrire votre propre job. Voir OpenFn Github pour l'inspiration et le code de tâche open-source partagé par les utilisateurs d'OpenFn. Vous remarquerez que ces fonctions fonctionnent de la même manière que les fonctions dans Excel… sum(A1, A2, A3)

    Les jobs peuvent être écrits et étendus à l'aide de Javascript brut pour un nettoyage et une manipulation avancés des données. Par conséquent, vous voudrez peut-être implémenter Javascript pour répondre à des exigences spécifiques ou pour étendre les adaptateurs OpenFn existants, qui sont open-source !

    Où sont stockées mes données ?

    OpenFn est un fournisseur de middleware plutôt qu'un système de stockage de données. Nous transférons les informations du système A au système B, et les intégrations peuvent être configurées pour être conformes au RGPD, HIPAA et d'autres politiques. Pour faciliter l'audit et le retraitement, OpenFn stocke temporairement les données des messages et job run history, mais nous ne sommes pas la seule source de vérité ni le point de repos final de ces données. Lorsque les organisations choisissent d'utiliser notre plate-forme hébergée OpenFn sur OpenFn.org, aucune donnée traitée par OpenFn n'est stockée localement et notre plate-forme fonctionne sur Google Cloud Platform (GCP). En savoir plus sur notre page Conformité.

    OpenFn.org propose actuellement un hébergement sur des serveurs cloud basés aux États-Unis et en Suisse. Les déploiements cloud locaux et nationaux d'OpenFn sont également disponibles sur demande. Contactez enterprise@openfn.org pour en savoir plus.

    Mes données sont-elles en sécurité ?

    Oui, OpenFn privilégie la sécurité, la stabilité et l'évolutivité (ce que nous appelons S3) avant tout le reste, et beaucoup de nos utilisateurs implémentent OpenFn pour se conformer aux politiques RGPD, HIPAA, et autres. En savoir plus sur nos pages Confiance, Conformitéet Confidentialité.

    OpenFn.org fonctionne sur Google Cloud Platform, une infrastructure protégée par plus de 500 experts de premier plan en matière de sécurité des informations, des applications et des réseaux. Pour les organisations ayant des exigences de conformité et de gouvernance des données spécifiques, OpenFn peut également être déployé sur une infrastructure locale ou cloud désignée.

    Que faire si j'ai d'autres questions ?

    Open Function Group est une équipe de spécialistes ICT4D et d'intégration, en attente de vous aider à commencer. Cliquez sur l'icône de chat dans le coin inférieur droit de cette page pour parler maintenant. Ou envoyez un email à notre équipe à admin@openfn.org, discutez avec nous sur OpenFn.org, ou postez une question dans notre Forum de la communauté.

    - + \ No newline at end of file diff --git a/fr/documentation/for-devs.html b/fr/documentation/for-devs.html index fb57a8111fe..1ea4f855aff 100644 --- a/fr/documentation/for-devs.html +++ b/fr/documentation/for-devs.html @@ -22,13 +22,13 @@ - +

    Développement d'applications connectées

    Cette section est pour vous si vous souhaitez créer ou étendre une application existante pouvant se connecter à OpenFn. Nous suivons les directives de l'api JSON standard moderne.

    Pour que votre application soit un fournisseur de données (ou « source ») pour les intégrations d'OpenFn, nous vous recommandons fortement de créer un « service de notifications » (parfois appelé un « service de webhooks » ou « API push basée sur des événements »). Ceci est préférable à l'utilisation d'une api REST pour deux raisons : (1) Un service de notifications donnera à vos clients la possibilité de configurer des intégrations en temps réel, et (2) un service de notifications est plus efficace pour vos serveurs et OpenFn — au lieu de faire des requêtes et de les traiter toutes les X secondes, vos serveurs et les serveurs d'OpenFn ne fonctionneront que lorsque de nouvelles données seront disponibles.

    Pour que votre application soit un consommateur (ou une « destination ») pour OpenFn, vous devez soit disposer d'une API de repos standard, basée sur JSON, soit créer un paquet de langue qui répond aux spécifications de votre API.

    Envoi des données à OpenFn

    Pour envoyer des données à OpenFn, votre application doit être en mesure de faire un message HTTPS à une URL externe avec un objet JSON valide comme corps du message. Consultez l'exemple suivant utilisant cURL :

    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Cache-Control: no-cache" \
    -d '{"foo":"bar", "baz":"qux"}' \
    "https://staging.openfn.org/inbox/some-secret-api-key"

    OpenFn répondra avec un objet JSON de 200 et un objet JSON vide en cas de publication réussie. 400s signifie que l'URL externe de l'utilisateur est incorrecte, et 500s signifie qu'il y a une erreur d'application sur OpenFn. Bien que les 500 soient rares, ils peuvent être dus à un JSON non valide dans le corps de votre MESSAGE.

    Si vous ne pouvez pas notifier une URL externe quand un événement a lieu, vous pouvez toujours vous intégrer à OpenFn si vous avez une API REST basée sur JSON. Les utilisateurs d'OpenFn peuvent envoyer des requêtes HTTP GET à votre application et effectuer des actions supplémentaires en fonction de votre réponse. Vous devez autoriser l'authentification de base ou par jeton et la réponse à un GET valide avec JSON. Il n'y a pas de format spécifique pour votre réponse, car les utilisateurs peuvent l'analyser comme ils le souhaitent, extraire les données pertinentes, puis effectuer d'autres actions, comme la charger dans un système de destination, avec ces données. Voir language-http pour des détails sur la façon dont les utilisateurs font ces requêtes HTTP génériques.

    Taille de la charge

    Si vous utilisez la plateforme, et que vous ne prévoyez pas d'utiliser un plan d'entreprise, vous devrez prendre en compte la taille des données que vous envoyez dans chaque bloc de charge. Exécutez state est généralement limité à 10 MB et vous devriez donc garder vos charges bien en dessous de cette limite.

    Réception des données d'OpenFn

    Pour faciliter la connexion des utilisateurs à votre application, il est fortement recommandé de créer un package de langue avec l'authentification requise et un ensemble d'actions simples et autorisées qui sont bien abstraites dans les « fonctions d'assistances ». Voir language-dhis2 pour un exemple de package de langage qui crée une interface plus simple pour un api REST traditionnelle basée sur JSON. Les adaptateurs sont écrits en Javascript et exécutez en Node. Vous pouvez convertir le JSON d'OpenFn en XML, ou en tout autre format avant de l'envoyer à votre application et vous pouvez utiliser tous les modules de node que vous aimeriez. Voir language-postgresql pour un exemple d'adaptateur qui se connecte directement aux bases de données PostgreSQL en utilisant un module populaire NPM appelé « pg ».

    Pour recevoir des données de l'adaptateur générique language-http d'OpenFn, votre application doit autoriser les requêtes POST, PUT ou GET de base, jeton ou condensé authentifiées. (Bien qu'il ne soit pas conseillé de créer une API qui nécessite des requêtes GET pour créer ou mettre à jour des données.)

    - + \ No newline at end of file diff --git a/fr/documentation/getting-started/commcare-project-walkthrough.html b/fr/documentation/getting-started/commcare-project-walkthrough.html index 01f0bc367ee..702f942054b 100644 --- a/fr/documentation/getting-started/commcare-project-walkthrough.html +++ b/fr/documentation/getting-started/commcare-project-walkthrough.html @@ -22,13 +22,13 @@ - +

    Walk-through - Syncing your CommCare form submissions to a PostgreSQL database ---

    Before starting this tutorial please make sure:

    • You have signed up for OpenFn.org (it takes less than a minute!)
    • You have checked out our glossary and have an understanding of basic OpenFn and API terminology. Check out the pages below to get started
    • You have a CommCare application with at least one form configured. This is your source system.
    • You have a PostgreSQL database configured. This is your destination system.

    If you don’t have a CommCare application or PostgreSQL database setup, you can also follow along with the prebuilt solution. Follow along at the links below:

    1. Mapping specifications document
    2. Commcare application to download:
      • Username: testuser
      • Password: 123

    install_cc_app

    1. OpenFn project
    2. Public report that shows records in the PostgreSQL database

    Getting started

    In this walkthrough, we will be setting up an automatic data sync between CommCare and a PostgreSQL database. We will be syncing submissions coming from a CommCare Maternal and Newborn Health application that has a Register a New Patient form.

    tip

    Whenever a CommCare user registers a new patient, the patient details will automatically be synced to an already configured PostgreSQL database to enable real-time monitoring and analytics on data collected in the field. For example, this database can quickly be connected to a dashboard that collects aggregate data on patients registered!

    cc-postgres

    This integration can be broken up into two parts:

    1. Getting data from your source system to your OpenFn inbox so you can inspect the data structure to inform the job design for part two
    2. Transforming and loading this data to your destination system

    … let’s get started!

    Getting data from CommCare

    There are two ways to get your CommCare form submissions in your OpenFn inbox to inspect the data, and to later map it to your destination system.

    Option 1: Webhook to forward cases and/or forms in real-time from CommCare to OpenFn using REST service

    CommCareHQ has a native data forwarding feature that provides a webhook/REST service that can be pointed to the destination of your choice (i.e., your OpenFn Inbox). When a webhook is configured, any Commcare forms submitted are automatically forwarded to the designated endpoint, such as your OpenFn inbox. After data forwarding is set up, it happens automatically, in real-time for all forms and cases. Learn more about configuring a webhook here.

    option1

    Option 2: Extracting Commcare data via the REST API

    CommCare provides a robust REST API for extracting and loading data. This second option involves configuring a job in OpenFn to fetch CommCare submissions via a GET HTTP request with parameters to filter your data query. Follow along for how to set this job up!

    1. Create a new project space, or open up an existing one where you have Admin access.

    create_new_project

    1. Create a new “Cron” trigger to schedule this extract job. Consider how frequently you want this job to run. Daily? Weekly? Every 1 hour?

    create_trigger_cc

    1. Create a “Raw JSON” credential to input the authentication details for your CommCare source application.

    add_new_cred

    In the credential JSON Configuration, add your credential as follows:

    {
    "appId": "APPID",
    "password": "PASSWORD",
    "username": "USERNAME",
    "applicationName": "APP NAME",
    "hostUrl": "https://www.CommCarehq.org",
    "openfnInboxUrl": "INBOXURL"
    }
    tip

    Check out this docs page on how to find your OpenFn inbox URL to fill in the configuration above.

    Now that you've configured the job Trigger and Credential to authenticate…

    1. Configure a new job. Note that this job will use the HTTP adaptor in order to connect with the CommCare REST API.

    configure_job_cc

    1. Writing the “FETCH” job expression: You will want to write a job expression that sends a GET HTTP request to CommCare’s List Forms API.

      GET /https://www.CommCarecommcarehq.org/a/cc-demo-2/api/v0.5/form

      We have included the code snippet for replicating this job below. Please check out the CommCare API docs on how to adjust the request query parameters.

    get(
    'https://www.CommCarehq.org/a/cc-demo-2/api/v0.5/form/',
    {
    query: {
    //see API docs to adjust query parameters
    limit: 1000, //max limit: 1000
    offset:
    state.meta && state.meta.next
    ? state.meta.limit + state.meta.offset
    : 0,
    received_on_start: '2022-02-16',
    received_on_end: '2022-02-18',
    xmlns:
    'http://openrosa.org/formdesigner/D771417E-354E-4906-A686-DF0BA230F16A',
    },
    },
    state => {
    //After the CommCare API responds to our GET request, we want to POST the data in the response to our OpenFn Inbox for further inspection
    const { meta, objects } = state.data;
    const { openfnInboxUrl } = state.configuration;
    const forms = objects;

    state.configuration = { baseUrl: 'https://www.openfn.org' };
    console.log('Posting form submissions to OpenFn Inbox...');

    return each(forms, state => {
    return post(`/inbox/${openfnInboxUrl}`, { body: state.data }, state => ({
    ...state,
    data: {},
    references: [],
    }))(state);
    })(state);
    }
    );
    1. Once you are finished configuring and writing your job, save and run it!

    save_run_job_cc

    1. Check out the Activity History tab to see if your run succeeded. If it succeeded, you should see:
      • Successful run log (look for the green!)
      • New Messages in your Inbox containing data for any forms submitted in the time frame specified in your query.

    activity_history_cc

    info

    What do do if your run fails:

    1. Open the run to inspect the error message
    2. Adjust the job to issue and re-run the transaction as needed by clicking the play button in Activity History
    3. Check out the PostgreSQL common errors page for more details!

    If you want to replicate this setup and configure your own CommCare integration, first consider your CommCare extraction options - remember that there are 2:

    1. Data forwarding webhook (native CommCare feature)

    2. REST API (List Forms API - API access requires a paid CommCare plan)

      The main advantage of using the webhook is that your data is forwarded to the destination system in real-time. However, the List Forms API is also advantageous because it enables users to extract data in bulk on a scheduled basis, for syncing historical data every month on the 30th, for example. Deciding on which option to go with depends on your business requirements.

    Transforming and loading CommCare data to a PostgreSQL database

    1. You should have a database configured and a username provided for OpenFn to read and write data in your target DB tables. For this demo, we have configured the database like this to capture the CommCare form data. Check out the design quickstart for how to create your own mapping specification document to map data elements to be exchanged.

    db_config

    1. Create a new message filter trigger, to run our second job for every new patient record received in the OpenFn inbox. Learn more about message filter triggers here.

    create_new_trgger_db

    1. Create a PostgreSQL credential which will be used by the job to authenticate with the database.

    add_credential_postgres

    1. Create a new job with the postgresql adaptor for loading the CommCare data into your destination database.

    configure_job_postgres

    Writing the job: For this job we will use the upsert operation to insert/update records in the destination patient table and use patient_id as the primary key. An upsert will update an existing row if a specified value already exists in a table, and insert a new row if the specified value doesn't already exist.

    upsert('patient', 'ON CONSTRAINT patient_pk', {
    patient_id: dataValue('data.patient_name'),
    patient_name: dataValue('data.patient_name'),
    village_name: dataValue('data.village_name'),
    last_menstrual_period: dataValue('data.last_menstrual_period'),
    expected_delivery_date: dataValue('data.expected_delivery_date'),
    children_alive: dataValue('data.children_alive'),
    living_children: dataValue('data.living_children'),
    feeling_sick: dataValue('data.feeling_sick'),
    total_children: dataValue('data.Total_children'),
    risk_level: dataValue('data.Risk_level'),
    });

    Feel free to modify the code above to reflect your CommCare and database configuration according to your mapping specifications. Check out this page for how to copy the dataValue for source data fields in the OpenFn job studio.

    tip

    Check out the design quickstart for how to create your own mapping specification document to map data elements to be exchanged.

    1. Save and turn on the job

    save_db_job

    Time to test!

    1. Submit a form in CommCare
    2. If you have enabled data forwarding, refresh your OpenFn inbox
    3. If you have not enabled data forwarding and set up a FETCH job instead, run the job (ensure the received_on_start and received_on_start dates in the FETCH are appropriate).
    4. Run the FETCH job–if the fetch job passes, the “Load to DB” job should automatically run
    5. Check out the Activity History and ensure that both runs passed (look for the green checks in the Status/Action column).

    activity_history_final

    1. Finally, refresh your database and check out the new submission data!

    metabase

    While this guide is specifically for PostgreSQL databases, you can generally follow these same steps for other database types (e.g., MS SQL or MySQL)—simply leverage a different adaptor in your job configuration.

    Other resources to check out:

    1. OpenFn Job Library
    2. OpenFn Docs ‘App’ pages for CommCare and Postgres

    Any questions? Comments? New configuration ideas? Please reach out to us with a post on the OpenFn Community forum.

    - + \ No newline at end of file diff --git a/fr/documentation/getting-started/glossary.html b/fr/documentation/getting-started/glossary.html index 39e489d8f66..2996decf639 100644 --- a/fr/documentation/getting-started/glossary.html +++ b/fr/documentation/getting-started/glossary.html @@ -22,13 +22,13 @@ - +

    A glossary for data integration

    Now that we've got a basic understanding of what an integration is, it's important to establish some of the foundational concepts we need to press forward. This doesn't mean you can't use OpenFn if you don't know what any of these words mean prior to reading our documentation, but it does mean that some of the most important tasks along the OpenFn journey will assume at least a basic understanding of each of these terms. In some cases, we also link to further reading if you want a better understanding of some part of your data integration picture.

    Note: This glossary is meant to be OpenFn-agnostic. The rest of the docs help you to get a picture of the parts of OpenFn, what we call them, and why, but this glossary is really meant as a prerequisite to all those other things to aid users with no experience in this area.

    API

    API is short for "application programming interface," and it's the part of some software application that has chosen to make itself visible (interface) to users outside the application itself. And it's doing that in a programmatic way, in a way that allows developers of other applications or data systems to use it the same way each time.

    API Protocol

    There's no hard and fast rule about how an API gets developed, but over time, standards have emerged to make it more straightforward for a new user to interact with Platform X's API, by trying to ensure most applications use one of a few different formats. That's what an API protocol is. A few of the big names here are REST, SOAP, JSON, and GraphQL. Rather than reinvent the wheel, here's a good primer on how protocols differ, their data formats, and why that all matters.

    Database

    Any organized collection of data can probably be safely called a database. If it's got a structure with which to reference all the stuff it's storing, and the "stuff" is data, then it's a database.

    Data source

    A data source is an application, database, or table that provides data to some other platform. Nothing is always a data source. For example, Google Sheets can be a data source, but it can also pull from data sources (individual CSV uploads or manual user data entry). We just call it a source when it's doing the job of sourcing data to some other place. Data sources are the starting point, temporally, for any integration.

    Data system

    Sometimes folks get confused about the distinction between a database, a data source, an application, and a data system. A data system is a more complex collection of these other things, usually one that allows a user to more easily interact with all of the data they should have access to. The data system often serves as an entry point to the myriad databases, applications, tables, etc. that a user would otherwise have to go 12 different places to find.

    Encryption

    In this day and age, security is everything. Encryption is the process of taking something that is readable to anyone and making it only readable to people we want to read it. OpenFn ensures your data is encrypted every step of the way while it's in our platform. For more on different kinds of encryption, you can look here.

    File system

    A file system is to files what a data system is to data. It structures your files in a way that makes it easy for you to retrieve them in a standardized way (think of your home file system with its file paths on your home computer). File systems can exist in other contexts too, and sometimes you need to access them to retrieve a file (a Word doc, CSV, plain text file, etc. might all be relevant depending on your use case). The only real difference between file systems and data systems or databases is the kind of information stored, data vs. files.

    ETL

    ETL stands for extract, transform, and load. These are often thought of as the three constituent parts of a data integration. First, we extract (push of pull data from a data source). Then, we transform (make any changes to the data to make it acceptable to the destination system or application). Then, we load (send it to the destination).

    Integration platform

    An integration platform (e.g., OpenFn) is an application (or set of applications) that help organizations set up, run, and maintain/manage the integrations between all of their various systems.

    iPaaS

    You may also see the acronym "iPaaS". This stands for integration platform as a service and is a type of "software as a service" (or "SaaS"). SaaS is a software purchasing model in which software is paid for only as it is used (often month-to-month), rather than purchased up front or given away for free.

    Metadata

    This is data that tells us about our data. In a table, for example, that's the name of the columns, the number of rows, etc. Metadata is often brought up in conversations about privacy—e.g., regulators might want to ensure that only metadata is moved from Ministry A to Ministry B, as opposed to personally identifiable information (PII) about individuals themselves.

    Push, pull, and streaming

    Pushing is when a triggering action in the data source causes it to send data to the destination. Pulling is the opposite, where the destination system requests the data from the source based on some triggering action, rather than waiting for the source to send it on its own. Streaming is a bit different, and it's when a data source is essentially constantly sending data to a destination system.

    Webhook

    A webhook (also called a web callback or HTTP push API — thanks SendGrid!) is a feature of an application that allows pushing. It's often configured to notify some external URL when an event occurs. A system administrator might create a "webhook" which notifies an integration platform whenever some event occurs so that the iPaaS can start executing some complex workflow.

    Structured and unstructured data

    Structured data is data that has metadata. Unstructured data has very little metadata (though probably still has things like time of creation, update, etc.). Without metadata about the format of the data, unstructured data is more difficult to interact with programmatically. We need different sorts of rules when doing ETL on unstructured data to do it well, whereas structured data is an easier starting point because we know what to expect from a column with a name, data type, field size, and so on.

    Writeback

    Refers to a destination system making a change in a data source. When my destination application receives information from a data source and wants to do something back to the source in response, that's writeback.

    - + \ No newline at end of file diff --git a/fr/documentation/getting-started/implementation-checklist.html b/fr/documentation/getting-started/implementation-checklist.html index f6a292c585f..e421204bef6 100644 --- a/fr/documentation/getting-started/implementation-checklist.html +++ b/fr/documentation/getting-started/implementation-checklist.html @@ -22,13 +22,13 @@ - +

    Implementation Checklist

    This checklist draws from experience of implementing interoperability projects with in-country government agencies (incl. UNICEF country offices, Ministry of Social Services Cambodia, MoH Thailand) to offer an implementation & planning guide covering key milestones in most interoperability and integration projects.

    While this checklist should be tailored for each implementation, the tasks outlined here provide a template workplan that can help any organization prepare for their upcoming implementation.

    tip

    Check out a real-world example See the UNICEF Cambodia repository for documented outputs from this checklist from an interoperability project implemented for the Cambodia Ministry of Social Affairs, Veterans, and Youth Rehabilitation and partner NGOs: openfn.github.io/unicef-cambodia/

    info

    The XLS version of this template can be found here.

    (1) Preparing for the Implementation

    • Point of contacts identified for each target system (incl. system administrators, folks who can speak to the functional and technical requirements)
    • Data sharing agreement finalized (if required; common for cross-organization workflows)
    • Business value assessed & documented
    • High-level workflow requirements gathered & documented (in diagram)
    • Technical feasibility assessment completed to verify integration approach, available connection points, and OpenFn deployment option and adaptors
    • Capacity assessment completed

    (2) Discovery & Design - Functional Workflow Requirements

    • User stories documented to capture business value & desired outcomes Learn more about user stories here.
    • Workflow BPMN diagram capturing functional steps of the business process finalized Learn more about diagrams & BPMN notation here.
    • Request list of data elements from administrators of target systems Read about mapping specs here..
    • Data element mapping specifications finalized (functional/business-friendly version)
    • Client sign-offs on workflow diagram & mapping specs
    • Workflow assumptions documented (e.g., what human, manual steps does the workflow rely on; what are the unique identifiers)
    • Testing scenarios drafted

    (3) Discovery & Design - Technical Specifications

    • Documentation on APIs or target connection points secured
    • Connection points & authentication methods confirmed
    • Access secured to developer/sandbox environments for testing
    • Authentication and authorization methods & credentials tested
    • Target API endpoints determined based on functional specifications & review of API docs
    • Target API endpoints tested to validate the functional data element specifications can be delivered
    • Workflow BPMN diagram capturing the technical steps of the workflow finalized
    • Technical version of data element mapping specifications created
    • Workflow assumptions updated to include any technical considerations
    • Test scenarios updated to include any technical considerations
    • Project Security Configuration Checklist drafted to capture data security & compliance considerations
    • Github repository created
    • Job specifications written for developers

    (4) Build

    • OpenFn platform: project space created & relevant users invited
    • OpenFn platform: Jobs, triggers, and credentials configured
    • OpenFn platform: Version control configured to connect Github repo
    • Jobs written & pushed to branch on Github
    • Job code review complete and merged to main branch on Github
    • OpenFn platform: Github paths updated on each job to link to source file
    • Test data created (if needed)
    • Engineer updates mapping specifications (if needed)

    (5) Testing

    • Testing Round 1: Developers run jobs locally with sample data provided
    • Testing Round 2: Analysts complete Test Scenarios & run jobs on platform
    • Iteration: Analysts submit feedback to developers & re-test
    • UAT Round 1: Client completes Test Scenarios
    • Iteration: Analysts submit feedback to developers & re-test
    • UAT Round 2 (if needed): Client completes Test Scenarios
    • Iteration: Analysts submit feedback to developers & re-test

    (6) Training & Prep for Go-Live

    • Training materials drafted for client administrators
    • Documentation drafted, and all project artefacts/docs linked
    • Project Security Configuration Checklist reviewed to determine if any configuration changes or settings need to be implemented post-testing
    • Confirm that production system(s) have been configured
    • Production credentials secured & tested (authentication & authorization)
    • OpenFn platform: "production" project created (cloned from "staging" project), job configuration migrated, & jobs connected to production credentials
    • OpenFn administrator users & access levels confirmed and granted?
    • Support POCs identified for each target system?
    • Establish support structures & governance model for change management
    • Training session delivered to designated OpenFn and target system administrators and any other ToTs

    Rollout & Support

    • Go Live: Turn "on" OpenFn jobs in production platform project so that the workflow is now live in production systems
    • Confirm administrators have OpenFn notifications turned on to "Each Time" so that they will receive failure notifications (see OpenFn Account Settings)
    • Communicate to end users as needed about the go-live and its implications

    Questions or feedback?

    If you have any inputs, comments, or questions–please contribute! Submit a pull request to this documentation page or leave a comment in OpenFn Community.

    - + \ No newline at end of file diff --git a/fr/documentation/getting-started/integrating-using-openfn.html b/fr/documentation/getting-started/integrating-using-openfn.html index d77db42adf0..8a89c39bf9d 100644 --- a/fr/documentation/getting-started/integrating-using-openfn.html +++ b/fr/documentation/getting-started/integrating-using-openfn.html @@ -22,13 +22,13 @@ - +

    Integrating using OpenFn

    In [What's an Integration, Really?], you can read about the how, when, and why of integration design. Now, we take those general concerns and apply them to the OpenFn framework to help you get started with using the platform and knowing the lingo.

    When->Triggers What->Jobs and runs Why->not our problem/data mapping How->All of this stuff How safely->Credentials

    - + \ No newline at end of file diff --git a/fr/documentation/getting-started/integration-toolkit.html b/fr/documentation/getting-started/integration-toolkit.html index 2396fee1434..268c7cc4b43 100644 --- a/fr/documentation/getting-started/integration-toolkit.html +++ b/fr/documentation/getting-started/integration-toolkit.html @@ -22,13 +22,13 @@ - +

    La Boîte à outils d'intégration

    OpenFn's free and open-source Integration Toolkit gives governments and NGOs around the world more flexibility and freedom to chose how they achieve success in integration and interoperability projects. The Toolkit is both a recognized Digital Public Good ("DPG") and a Digital Square Global Good.

    DPG

    The Toolkit provides a suite of software tools and documentation to help users design, build, and automate integrations.

    About the Toolkit

    At the heart of the toolkit is the project—a set of jobs, triggers, and credentials which allow organizations to flexibly define workflows and integrations across their systems.

    Projects can be ported from the platform to microservice (the main deployment pathway for the Integration Toolkit) and back again (see below) but to really understand the toolkit you've got to first understand Open Function Group and platform, the enterprise iPaaS.

    Integration Toolkit

    Open Function Group has been building free and open source software (FOSS) for data integration projects in the health, humanitarian, and international development sectors since in 2014. Their software and services are now in use by governments, NGOs, and impact-first businesses in over 40 countries.

    OFG's first integration platform was entirely FOSS, but they soon shifted to an "open-core" (think GitLab) in order to sustain their impact-focused integration work. Their main hosted offering, the OpenFn "platform", is proprietary but makes extensive use of the open-source integration toolkit; in fact, the "platform" may be thought of as an enterprise/hosted layer running on-top of the basic, open-source building blocks provided by the Integration Toolkit.

    Pourquoi OFG dirige le développement de la boîte à outils d'intégration

    Our mission is to make health & humanitarian interventions more efficient & effective, and we see investment in the integration toolkit as strategic.

    We'll strive to preserve the integration toolkit as a healthy and bona fide open source project and sustains its operations through business activities related to the toolkit and their other proprietary and/or service offerings until it grows legs of its own and is taken over by the broader community.

    We have designed the tools in the toolkit to be useful as standalone pieces of software and as modules, used by other applications. Because a substantial portion of OFG's revenue comes from contracts related to the platform, and because the platform relies on OpenFn/core, OpenFn/engine, and the OpenFn adaptors, we hope to ensure that OFG will always be incentivized to continue their investment in the integration toolkit.

    In other words, we're attempting to ensure that as OFG grows, they will continue enhancing the open source integration toolkit regardless of whether or not additional funders and/or stakeholders contribute to the project.

    What's in the Integration Toolkit

    Separate from "the platform", the integration toolkit is the suite of applications and modules provided by OFG and the community which enable data integration, interoperability, and automation solutions via OpenFn-compliant jobs, triggers, and credentials. The key components of the toolkit are:

    1. OpenFn/docs
    2. OpenFn/core
    3. OpenFn/engine
    4. OpenFn/microservice
    5. OpenFn/devtools
    6. les adaptateurs OpenFn
    7. OpenFn/lightning (coming soon...)
    Microservice and devtools are being replaced by Lightning

    Please note that OpenFn/microservice and OpenFn/devtools are being deprecated and replaced by OpenFn/Lightning, When lighting is released.

    Lightning, coming soon!

    Lightning is an upcoming addition to the Integration Toolkit. It is a fully open source workflow automation platform designed for governments and NGOs who need a flexible solution to integrate and connect any system.

    You can read all about it here!

    Architecture for implementation

    Lightning architecture

    Open Source Steering Committee (OSSC)

    We've also initiated an Open Source Steering Committee (OSSC) to represent the OpenFn community of end users and implementers. It reviews and gives feedback on major roadmap decisions, new designs, specifications, features, and protocol changes.

    The OSSC's membership and decision making process are defined in the OSSC's internal governance policy if if you're interested in joining, we'd love to hear from you!

    - + \ No newline at end of file diff --git a/fr/documentation/getting-started/security.html b/fr/documentation/getting-started/security.html index 7e8c440a614..fe6b9bcdb60 100644 --- a/fr/documentation/getting-started/security.html +++ b/fr/documentation/getting-started/security.html @@ -22,13 +22,13 @@ - +

    Security Guidelines for Data Integration Implementations

    Even if the technologies leveraged in your integration solution can be considered secure, there are still many security risks in data integration, especially during implementation. With support from Digital Square, we have therefore developed a Security Guidebook for Data Integration Implementations.

    Since 2014, we at Open Function Group (the primary custodians of OpenFn) have helped implement nearly 100 data integration solutions for over 45 NGO and government partners around the world. Through our engagements with security teams at different partners, our own research and development, consultations with security experts internal and external, and partnerships with other communities of practice, we have developed a strong understanding of security best practices and considerations for data integration projects that we would like to share with the wider digital development community.

    This Guidebook aims to help digital implementers in the Digital Public Good and Global Goods communities better understand security risks and presents 23 best practices for the various implementation phases of data integration projects. It also links to some open-sourced OFG resources our team uses in our own implementation process for OpenFn projects.

    You can find a complete list of the 23 best practices on this page below.

    To access the Guidebook, check out the below slides or click the link to share & download: https://bit.ly/security_guidebook

    Secure Data Integration: 23 Implementation Best Practices

    Core Tenets

    1. Understand relevant policies specific to data sharing, storage, and protection
    2. Only extract & transfer essential data points
    3. Document, document, document

    Analyze & Plan

    1. Don’t take API security for granted
    2. Budget time for security testing

    Design

    1. Resource: Mapping specification template
    2. Resource: Architecture data flow diagram
    3. Resource: Project Security Configuration & Go-Live Checklist
    4. Consider idempotency, unique identifiers, & “upsert” operations to ensure data integrity
    5. Design for failures & transaction reprocessing
    6. Consider data validation

    Build

    1. Use change tracking & version control
    2. Encrypt where possible
    3. Use strong authentication; don’t talk to strangers
    4. Authorization scopes to limit access
    5. Log transactions for activity monitoring & control what information is logged

    Deploy

    1. Test again, especially credentials, before deployment
    2. Train users and system administrators on integration security
    3. Review your security requirements again before go-live
    4. Determine point of contacts for reporting security issues

    Ongoing Monitoring & Management

    1. Consider Governance models for ongoing management & changing requirements
    2. Train partners on change management
    3. Have a strategy for access management

    Read on for other resources and implementer communities to check out.

    Resources referenced in the guidebook

    OpenFn Resources

    More implementation guidance can be found across this Docs site. For OpenFn users, learn more about OpenFn security & compliance at openfn.org/trust and openfn.org/compliance.

    Here are the key OpenFn templates and resources referenced in the Guidebook:

    Communities of practice & other experts

    Here are some other communities you may consider following for more security guidance.

    1. OpenHIE Privacy & Security Working Group
    2. GovStack
    3. DHIS2 Security Team & Community of Practice
    4. Asia eHealth Information Network (AeHIN) Communities of Practice
    - + \ No newline at end of file diff --git a/fr/documentation/getting-started/so-you-want-to-integrate.html b/fr/documentation/getting-started/so-you-want-to-integrate.html index 3534bed12e5..b49200b002e 100644 --- a/fr/documentation/getting-started/so-you-want-to-integrate.html +++ b/fr/documentation/getting-started/so-you-want-to-integrate.html @@ -22,13 +22,13 @@ - +
    -

    So, what is an integration? 🤔

    OpenFn is an integration platform. And if you found us, you likely came to the conclusion at some moment prior that you want to integrate technology X with technology Y (and maybe W and Z while you're at it). But not all of our users come to OpenFn with a wealth of previous integrations under their belt. So if this is your first go, this page can help you think through all the different ways integrations can take shape so that you have a strong understanding of what it is you really want before you start writing (or borrowing) a job.

    There are plenty of different reasons to integrate your data systems. Maybe you want one "master" view that you or your clients can trust as a source of truth.

    Maybe you want to automate some data viz that you currently have to do manually.

    Or maybe you just want to expose a small slice of data from one user group to a different app used exclusively by some other part of your company.

    Regardless of the reason, what every integration boils down to is connecting two or more disconnected applications. But as you can see, not all integrations look alike. This basic structure comes in many shapes and sizes. There's plenty of variety to be found:

    1. Perhaps the most important variation is why you move the data.

    This part boils down to end goals. Integration for integration's sake is a waste of time. What's your reason for wanting X data in Y system?

    It's important to keep that ultimate business requirement in mind when designing any integration and weigh potential outcomes of design decisions against that ultimate goal.

    1. When you move the data.

    Usually, you can articulate the best case scenario here in plain English pretty easily.

    I want Salesforce to ___ when one of our field workers submits a new CommCare form.

    or

    I want Postgres to ___ every two weeks.

    A crucial difference between these two whens is that the first turns on an action, whereas the second is based on a set period of time, regardless of what happens in that window.

    1. How you move the data, namely whether the destination system is pulling or the source system is pushing (or some other pattern), what format the data is being transferred in, and what protocol(s) that system is using to do it.

    1 and 2 are really about real world considerations. Sometimes technical constraints from our source and destination systems can get in the way of our ideals, but answering the questions in an ideal way doesn't require any serious thought about the tech behind it. Now that we're at how, we have to think more seriously about the underlying technology.

    There's not space here to explore all the different ways that a platform can choose to set up to send or receive data, but it's important now to take note that there are many options, and knowing which ones are available is an important part of designing a strong integration. For a more in-depth look at how to answer these questions based on the specifics of your project, check out ___.

    1. A final variation to consider here is how to move the data safely (sorry to break the pattern we had going).

    At OpenFn, data security is a first priority. That's also true of many of the other systems our customers use. What that means is that we often can't just grab data from one system and put it into another without first assuring each system that we are someone who's allowed to be there. In general, we talk about this slice of the world as authentication.

    These are all very important questions to consider when designing an integration. Check out our docs on integration design to learn more about how we begin to answer these questions and more:

    - +

    So, what is an integration? 🤔

    OpenFn is an integration platform. And if you found us, you likely came to the conclusion at some moment prior that you want to integrate technology X with technology Y (and maybe W and Z while you're at it). But not all of our users come to OpenFn with a wealth of previous integrations under their belt. So if this is your first go, this page can help you think through all the different ways integrations can take shape so that you have a strong understanding of what it is you really want before you start writing (or borrowing) a job.

    There are plenty of different reasons to integrate your data systems. Maybe you want one "master" view that you or your clients can trust as a source of truth.

    Maybe you want to automate some data viz that you currently have to do manually.

    Or maybe you just want to expose a small slice of data from one user group to a different app used exclusively by some other part of your company.

    Regardless of the reason, what every integration boils down to is connecting two or more disconnected applications. But as you can see, not all integrations look alike. This basic structure comes in many shapes and sizes. There's plenty of variety to be found:

    1. Perhaps the most important variation is why you move the data.

    This part boils down to end goals. Integration for integration's sake is a waste of time. What's your reason for wanting X data in Y system?

    It's important to keep that ultimate business requirement in mind when designing any integration and weigh potential outcomes of design decisions against that ultimate goal.

    1. When you move the data.

    Usually, you can articulate the best case scenario here in plain English pretty easily.

    I want Salesforce to ___ when one of our field workers submits a new CommCare form.

    or

    I want Postgres to ___ every two weeks.

    A crucial difference between these two whens is that the first turns on an action, whereas the second is based on a set period of time, regardless of what happens in that window.

    1. How you move the data, namely whether the destination system is pulling or the source system is pushing (or some other pattern), what format the data is being transferred in, and what protocol(s) that system is using to do it.

    1 and 2 are really about real world considerations. Sometimes technical constraints from our source and destination systems can get in the way of our ideals, but answering the questions in an ideal way doesn't require any serious thought about the tech behind it. Now that we're at how, we have to think more seriously about the underlying technology.

    There's not space here to explore all the different ways that a platform can choose to set up to send or receive data, but it's important now to take note that there are many options, and knowing which ones are available is an important part of designing a strong integration. For a more in-depth look at how to answer these questions based on the specifics of your project, check out ___.

    1. A final variation to consider here is how to move the data safely (sorry to break the pattern we had going).

    At OpenFn, data security is a first priority. That's also true of many of the other systems our customers use. What that means is that we often can't just grab data from one system and put it into another without first assuring each system that we are someone who's allowed to be there. In general, we talk about this slice of the world as authentication.

    These are all very important questions to consider when designing an integration. Check out our docs on integration design to learn more about how we begin to answer these questions and more:

    + \ No newline at end of file diff --git a/fr/documentation/getting-started/terminology.html b/fr/documentation/getting-started/terminology.html index c681cd56b1d..174fdbbbb78 100644 --- a/fr/documentation/getting-started/terminology.html +++ b/fr/documentation/getting-started/terminology.html @@ -22,13 +22,13 @@ - +

    OpenFn Concepts

    All across the OpenFn Integration Toolkit, the iPaaS, and this documentation site you'll find some OpenFn-specific terminology that's important to understand. This page is your reference guide—a glossary of the most important OpenFn-specific words and what they mean.

    Keep In Mind

    As you read about the terms below, remember that in order to make OpenFn perform some sort of data integration work you'll always need to specify:

    • What to do (e.g., update patient data in some system)
    • When to do it (e.g., at 7am every day)
    • and How to log in (e.g., go to example.com and use abc123 as the security token)

    With this in mind, let's check out the key terms.

    Please note that if you're looking for a glossary for generic terms used in data-integration (rather than this OpenFn-specific stuff) head over to the Glossary for Integration page in the Design section. Otherwise, read on!

    Project

    A project is an administrative grouping in OpenFn. In OpenFn/microservice, it corresponds to a project.yaml file. On the platform, it's got an owner, a billing plan, and a bunch of collaborators—different users that have been granted access to the project. In either case, a project contains jobs, triggers, credentials, and everything you need to run an integration with OpenFn.

    Job

    tip

    Jobs are the "what to do" part of automation!

    OpenFn automation centers around jobs, which define the specific series of operations (i.e., tasks) that OpenFn should perform. Jobs can be executed at certain times, when message arrive from outside systems, or when other jobs succeed or fail. Think of jobs as a set of instructions you might give a data entry staff member (e.g., Please create a new Patient record in OpenMRS when a form containing a newly registered client is received from CommCare, export data to DHIS2 every week on Friday 11pm, send SMS with payment confirmation number when payment confirmation message is received etc.).

    Jobs are Reusable

    Jobs are fully configurable and reusable. They can also be chained together to create multi-step automation flows, two-way syncs, and to keep data consistent between multiple applications (using multi-app Saga patterns). You can read more on two-way syncing below.

    Adaptor

    OpenFn adaptors are open-source modules that provide your jobs with the features they need to communicate with a particular system's API. Some examples are language-dhis2, language-commcare, language-salesforce, language-postgresql, etc. There are more than 50 active adaptors at the moment, and anyone is free to build or enhance them.

    Operation

    An operation is the sub-task inside a job. For example, a job for loading data to DHIS2 might include 3 separate operations:

    1. Create a new "program".
    2. Create many new "tracked entity instances".
    3. Enroll those tracked entity instances in the program.

    Trigger

    tip

    Triggers are the "when to do it" part of automation!

    A trigger determines when to run a job automatically. A trigger could be set up to run a job when a message arrives (this is known as a message filter trigger), on a cron schedule (a cron trigger) or based on the success or failure of another job(a flow or catch trigger). A simple cron trigger might specify to run a job at "7am every weekday".

    Credential

    tip

    Credentials are the "How to log in" part of automation!

    A credential is used to log in to a destination system (e.g., Salesforce username, password & login URL) so that a job can run. Via OpenFn's security model, they are separated from the jobs themselves to ensure that stored usernames and passwords (which are all encrypted) do not get leaked or accessed by the wrong people.

    Message

    A message is a chunk of data that's been received by your inbox. (Technically, it's an HTTP request.) It might trigger a job run, and it contains the body and headers of the HTTP request that was made to your inbox.

    Inbox

    Your project's inbox contains all of the messages that have been sent to your project. Messages are stored payloads or data (e.g., an incoming SMS, a submitted CommCare form) that were sent via HTTP post to your inbox.

    Inbox URL

    Click the link icon in the top right of the "Inbox" page to copy your inbox URL. You can then use this URL to send data to OpenFn.

    Run

    A run is each individual execution of a job. Imagine that a job is configured to create a new patient in OpenMRS whenever a case is opened in CommCare. Over the next week, if 5 cases are opened in CommCare, you’ll see 5 different runs of this one job. If 4 runs are successful and one has failed, you’ll see 4 new patients in OpenMRS, and your system administrator will have been notified that one of those patients couldn’t be created (or whatever more robust error-handling you’ve set up will take place.)

    Runs have start times, end times, logs and exit codes that indicate when they took place, what they did, and whether or not they succeeded.

    note

    There’s not always a 1-to-1 mapping between runs and the real-world things you’re working with. I might define a job that gets all updated event data from DHIS2 for the last 2 weeks and publishes it to a public map using CartoDB. This job will be triggered at specified time intervals, every 2 weeks in this case, and after a month, we’ll only see 2 runs in OpenFn (that’s one run every two weeks). Each run will have succeeded or failed, and each one might have processed thousands of events from DHIS2.

    Activity History

    On the platform, the Activity History section provides a list of all of the runs that have taken place in a project. ("Activity History" is to "Run" and "Inbox" is to "Message".)

    Given the many-to-one relationship between runs and messages, OpenFn provides an interface for viewing a messages "job-state". This is a calculation that can be useful for organizations that need to understand if a given message has eventually been handled successfully.

    A job state is defined as the result ("success", "failure", or "in progress") of the last run (ordered by the time it was finished, rather than when it was inserted into the runs table) for a given message-job combination.

    If two runs for the same message-job combination finished at the same time, it's ordered by their start time, and then finally by their primary key. In reality, since the same message-job combination can only be used to create a run once every 10 seconds, this will almost never occur.

    A Job state example

    Consider a message which should trigger both a case referral job and a payment job. Two runs will get created when the message arrives, with the referral succeeding and the payment failing. Navigating to the inbox, you'd see two "job-states" for that single message:

    1. Referral (success - run 1)
    2. Payment (failure - run 2)

    If an administrator then made some sort of change, re-ran the failed payment job for that message, and this third run succeeded, you'd still only see 2 "job-states" in the inbox, but they'd both be successful:

    1. Referral (success - run 1)
    2. Payment (success - run 3)

    Browsing to the receipt inspector would show all three runs for this single message.

    - + \ No newline at end of file diff --git a/fr/documentation/gsoc.html b/fr/documentation/gsoc.html index b5de806d530..4050fbf84c5 100644 --- a/fr/documentation/gsoc.html +++ b/fr/documentation/gsoc.html @@ -22,13 +22,13 @@ - +

    Google Summer of Code

    Aperçu

    OpenFn fournit des outils d'intégration de données, d'automatisation et d'interopérabilité qui sont utilisés pour mettre à l'échelle les interventions sanitaires et humanitaires les plus prometteuses au monde. L'UNICEF, l'Organisation mondiale de la santé, l'IRC et la Société de conservation de la faune ne sont que quelques-unes des nombreuses organisations qui stimulent l'efficacité via le logiciel OpenFn. Avec un modèle open-core, nous avons des solutions hébergées et déployées localement dans plus de 40 pays, et cet été, vous aurez la chance de travailler sur des outils ETL de pointe construits dans Elixir / Erlang et NodeJs. Si l'apprentissage des API, de la transformation des données et des couches middleware / automatisation vous passionne, OpenFn est l'endroit idéal.

    Les mentors

    Cet été, vous aurez la chance de travailler avec une partie de l'équipe principale d'OpenFn, y compris Chaiwa Berian, Mamadou Cissé, Stu Corbishleyet Taylor Downs. Ils sont respectivement en Zambie, au Sénégal, en Afrique du Sud et au Royaume-Uni. Dans l'ensemble, ils ont près de 50 ans d'expérience dans le domaine du logiciel et... un doctorat en informatique. (Hé merci Mamadou 😉.)

    Idées du projet

    Extension OpenFn/microservice

    Les projets OpenFn (voir project.yaml) peuvent être déployés sur la plateforme ou sur microservice, une application web Phoenix. Cet été, les stagiaires du GSOC auront la possibilité de développer le front-end de cette application web prise en charge par la communauté.

    Niveau de difficulté : médium

    Vous travaillerez dans Docker, Phoenix, Élixir et Erlang.

    Extension OpenFn/moteur

    Engine fait partie de la boîte à outils FOSS commune qui est utilisée à la fois par le microservice et la plateforme. C'est le logiciel qui est responsable de l'exécution des appels vers OpenFn/core et de faire des choses intéressantes comme le streaming des logs vers le demandeur. Si vous voulez vraiment comprendre le fonctionnement d'Elixir et d'Erlang, vous salir les mains avec les applications OTP, le moteur est l'endroit où vous voulez travailler cet été.

    Niveau de difficulté : moyen

    Vous travaillerez dans Elixir et Erlang.

    Métriques OpenFn/noyau

    En bas de tout, que nous fournissions des services sécurisés de transfert de données pour les patients pour les ministères de la santé ou que nous recommandions des cas de protection de l'enfant pour UNICEF, OpenFn s'appuie sur la rotation de NodeVMs, l'exécution de code à l'intérieur de ces machines virtuelles en toute sécurité, puis l'arrêt. Bienvenue au noyau.

    Cet été, vous pourriez avoir la chance de vous plonger dans cette magie de VM-in-a-VM en bac à sable, d'en apprendre beaucoup sur les NodeJs et de fournir aux utilisateurs finaux de meilleures mesures sur les vrais types de calcul qu'ils utilisent pour « faire le travail ».

    Niveau de difficulté : moyen

    Vous travaillerez avec NodeJs et Typescript.

    Adaptateurs 2.0

    Les adaptateurs sont les gestionnaires d'API qui permettent aux utilisateurs d'OpenFn de travailler rapidement et facilement avec les API les plus courantes dans le développement international. Ils fournissent une interface pour se connecter à DHIS2, ODK, CommCare, OpenMRS, etc., etc.

    Ce sont des modules NodeJs, mais pour améliorer le processus de développement et d'utilisation de l'adaptateur, nous voulons les intégrer dans le futur avec Typescript. Les adaptateurs devraient vous indiquer comment les utiliser pendant que vous les utilisez.

    Consultez ce fil de discussion sur community.openfn.org pour plus d'informations.

    Niveau de difficulté : moyen

    Vous travaillerez sur Elixir et Erlang.

    - + \ No newline at end of file diff --git a/fr/documentation/instant-openhie.html b/fr/documentation/instant-openhie.html index ba1bcace2df..0f03746c0cb 100644 --- a/fr/documentation/instant-openhie.html +++ b/fr/documentation/instant-openhie.html @@ -22,13 +22,13 @@ - +

    OpenHIE instantané

    Microservice and devtools are being replaced by Lightning

    Please note that OpenFn/microservice and OpenFn/devtools are being deprecated and replaced by OpenFn/lightning, When Lighting is released, it may be used within Instant OpenHIE (instead of microservice) as an OpenHIE-compliant workflow engine that can interface with the OpenHIE Interoperability Layer (learn more).

    Aperçu

    In partnership with Digital Square and FCDO COVIDaction, OpenFn has been investing in its open source integration toolkit to provide robust integration solutions that can connect any digital health system and be rapidly implemented on any server, in any country, by any organization.

    OpenFn/microservice is a fully Instant OpenHIE compliant component which can be used to drive workflow, achieve compliance with standards, and integrate components of the OpenHIE stack.

    We seek to enhance the value of the Instant OpenHIE project by developing a package that will include OpenFn as an integration pathway for connecting with the OpenHIE architecture.

    This package aims to enhance the value of Instant OpenHIE by providing another option for robust information processing, integration, and business process (workflow) automation. When deploying Instant OpenHIE, implementers now have the option to include OpenFn as a component.

    OpenFn may also be used as a workflow engine to automate complex business logic alongside OpenHIM and the OpenHIE stack. Individual jobs in OpenFn, sometimes many in a single microservice deployment, may be used as “mediators” (see OpenHIE library of existing mediators) to quickly transform and map data to the OpenHIE architecture.

    To demonstrate a real-world use case for how OpenFn might be implemented in the OpenHIE architecture, we met with several community members to identify key use cases for a reference prototype implementation.

    Visit the demo repo here.

    Cas d'utilisation pour l'implémentation du prototype

    We’ve seen that the most common integration use case is that health service delivery providers, especially large community health worker (“CHW”) interventions, need to integrate their data and programming into national eHealth architectures.

    Récits utilisateur

    1. En tant que responsable de la mise en œuvre de la santé communautaire, je souhaite intégrer mon application de gestion de cas CommCare utilisée par les ASC au registre national des patients, afin de pouvoir développer un dossier de santé partagé et automatiser les pipelines de rapports.
    2. En tant que prestataire de services de santé, je souhaite intégrer mon application existante au SIH national, mais je veux appliquer la norme FHIR à mes données collectées avant le partage pour adhérer aux exigences de conformité et de rapport.
    • Nous avons donc décidé de créer une solution d'intégration qui démontre comment les applications ASC existantes peuvent être intégrées à l'infrastructure nationale de santé et tirer parti d'un travail simple sur OpenFn en tant que médiateur pour appliquer la norme de données FHIR et d'autres manipulations de données nécessaires pour s'intégrer à HAPI FHIR.

    Conception de la mise en œuvre

    In sum, the prototype sends patient case registration data from mobile data collection apps (CommCare, KoboToolbox) to OpenFn/microservice. OpenFn then transforms the data and ensures that it adheres to the FHIR patient and encounter data standards, before sending it onwards to a FHIR channel in the OpenHIM. OpenHIM is used as a _“channel”_ here for the OpenHIE architecture to validate requests and forward them onto other systems in the national eHealth architecture. In this case, we forward the case data onwards to register the patients in a HAPI FHIR server.

    This implementation design was determined to be the highest value/most in-demand because it leverages the core functionality of OpenHIM (providing a reverse proxy and generating an audit trail) without requiring integrators to build a new mediator—a process that is more complex than configuring a job within an OpenFn project.

    This prototype includes the following components:

    An Instant OpenHIE instance can be spun up which contains HAPI FHIR, OpenHIM, and a single OpenFn/microservice deployment (a project.yaml file, exported from OpenFn/platform) with 2 different jobs. When data is forwarded to OpenFn/microservice from two distinct form submissions on CommCare and Kobo, it is processed and creates FHIR patient resources via OpenHIM and HAPI FHIR. We’ve opted for a single OpenFn/microservice “project” with two slightly different jobs and triggers to highlight the versatility of OpenFn projects.

    Explorer l’implémentation

    Currently, there are two different ways to explore this demo. The first (the more traditional “Instant” way) is by cloning the OpenFn/instant-demo repo. Once inside, users type “yarn setup” to get everything up and running. Running “yarn test” will then demonstrate the Kobo/CommCare to OpenFn to OpenHIM to FHIR flows.

    They can explore the various jobs, sample payloads, endpoints, and post data to the various endpoints using either the data forwarding settings in CommCare and Kobo or via CURL (or their HTTP request agent of choice.)

    Once running, users can see how standard CommCare and Kobo submissions are transformed by the OpenFn/microservice to adhere to the FHIR specifications for patients and encounters, and then that those subsequent resources are created on the HAPI FHIR server, via a channel on the OpenHIM.

    The second (slightly less conventional way) to explore the demo, is via OpenFn.org. Since OpenFn projects can be run in microservice or on the hosted platform, we’ve provided a project instance at OpenFn.org that allows users to explore the configuration required to incorporate OpenFn in an Instant OpenHIE project. There are three jobs which can be accessed with a demo user with username: demo@openfn.org and password:guest123.

    The three jobs will show:

    • Comment une soumission de CommCare est transformée et envoyée à HAPI FHIR ;
    • Comment une soumission Kobo est transformée et envoyée à HAPI FHIR ;
    • Et à quoi ressemblent les ressources finales qui seraient envoyées à HAPI FHIR.

    It’s our hope that this will provide a valuable entry-point for Instant OpenHIE configuration with OpenFn/microservices.

    À propos de la configuration de l'implémentation

    Processus

    Étapes de configuration du projet

    There are two ways to set up a project.yaml to run as a microservice. The first is to use the OpenFn.org platform, and the second way is to use OpenFn/devtools.

    These two methods are detailed below:

    1. Configurer un projet en utilisant la plate-forme OpenFn.org

    2. Configurer un projet en utilisant OpenFn/devtools

    Notes sur l'écriture des tâches

    OpenFn provides two ways of writing jobs:

    Étapes de déploiement du système

    - + \ No newline at end of file diff --git a/fr/documentation/jobs/each.html b/fr/documentation/jobs/each.html index f8fd97b2b06..bcd14b8c86a 100644 --- a/fr/documentation/jobs/each.html +++ b/fr/documentation/jobs/each.html @@ -22,13 +22,13 @@ - +

    L'opération each(...)

    L'opération each vous permet d'effectuer une autre opération sur chaque élément d'une tableau.

    Each prend deux arguments

    En d'autres termes, each(arrayPath, operation) va faire une operation sur chaque élément qu'il trouve dans le tableau arrayPath. Cela ne prend que deux arguments :

    1. un arrayPath
    2. une opération(...)

    arrayPath

    Regardons le premier argument dans each... le chemin vers le tableau. Considérez le code suivant à l'aide de l'adaptateur Salesforce :

    each(
    dataPath('form.participants[*]'),
    upsert(
    'Person__c',
    'Participant_Identification_Number_PID__c',
    fields(
    field('Participant_Identification_Number_PID__c', dataValue('pid')),
    relationship('RecordType', 'Name', 'Participant'),
    field('First_Name__c', dataValue('participant_first_name')),
    field('Surname__c', dataValue('participant_surname')),
    field('Mobile_Number_1__c', dataValue('mobile_number'))
    field('Sex__c', dataValue('gender')),
    )
    )
    );

    Cela va insérer une ressource Person__c dans Salesforce pour chaque élément trouvé dans le tableau state.data.form.participants. Vous pouvez spécifier ce chemin de la manière suivante :

    • '$.data.form.participants[*]'
    • dataPath('form.participants[*]')

    Remarquez la syntaxe du chemin JSON.

    l'opération

    S'il y a 5 participants, il exécutera l'opération upsert sur tous les 5 éléments, en séquence. upsert prend les arguments qu'il prend normalement mais il opère dans de tableau. Voir ci-dessous pour plus de détails sur la portée de cette opération.

    dataValue(...) dans each(...)

    Notez que dans l'opération each(...), en utilisant dataValue(path) va évaluer un chemin à l'intérieur de chaque élément du tableau.

    fusionner (...) et ramener les données « vers le bas » dans un tableau :

    Et si vous voulez accéder aux données dans votre opération upsert qui n'existe pas dans le tableau lui-même. Vous pouvez utiliser une étape de préparation de données (voir : alterState) ou utiliser merge(path, data) qui vous permet de fusionner les données de la portée initiale vers le bas dans votre tableau et d'y accéder à partir de l'opération upsert.

    each(
    merge(
    dataPath('form.participants[*]'),
    fields(
    field('school_id', dataValue('form.school.id')),
    field('intervention_type', dataValue('form.type'))
    )
    ),
    upsert(
    'Person__c',
    'Participant_Identification_Number_PID__c',
    fields(
    field('Participant_Identification_Number_PID__c', dataValue('pid')),
    relationship('RecordType', 'Name', 'Participant'),
    field('First_Name__c', dataValue('participant_first_name')),
    field('Surname__c', dataValue('participant_surname')),
    field('Mobile_Number_1__c', dataValue('mobile_number'))
    field('Sex__c', dataValue('gender')),
    // new fields...
    field('School__c', dataValue('school_id')),
    field('Intervention_Type__c', dataValue('intervention_type'))
    )
    )
    );

    beta.each

    Après avoir utilisé une opération each(...), la portée des opérations suivantes sera à l'intérieur du tableau à arrayPath. Si vous voulez retourner à la portée de niveau supérieur pour que vous puissiez itérer dans un autre tableau plutôt que de continuer à travailler à l'intérieur du premier tableau appelé avec la fonction each(), vous pouvez utiliser beta.each

    beta.each(...) étendra un tableau de données basée sur un JSONPath mais ensuite revenir à l'état qui lui a été donné à la fin. Consultez la source ici.

    Ceci est nécessaire si vous enchaînez plusieurs fonctions each(...) ensemble en ligne dans la même expression. (P. ex., pour un formulaire dont les données comportent plusieurs « groupes de répétition » distincts qui sont rendus sous forme de tableaux : vous souhaitez créer de nouveaux enregistrements pour chaque élément du premier groupe de répétition, puis RETOURNER AU NIVEAU SUPÉRIEUR des données et enfin créer de nouveaux enregistrements pour chaque élément du deuxième groupe de répétition. L'utilisation de beta.each(...) vous permet d'entrer dans le premier tableau, de créer vos enregistrements, puis de revenir au niveau supérieur et de pouvoir entrer dans le second tableau.

    // create some schools from the state.data.form.schools array...
    beta.each(
    dataPath('form.schools[*]'),
    upsert(
    'School__c',
    'School_ID__c',
    fields(
    field('School_ID__c', dataValue('schoolId')),
    field('School_Name__c', dataValue('schoolName')),
    )
    )
    );

    // back up at the top level, we scope the next array with each...
    beta.each(
    dataPath('form.participants[*]'),
    upsert(
    'Person__c',
    'Participant_Identification_Number_PID__c',
    fields(
    field('Participant_Identification_Number_PID__c', dataValue('pid')),
    relationship('RecordType', 'Name', 'Participant'),
    field('First_Name__c', dataValue('participant_first_name')),
    field('Surname__c', dataValue('participant_surname')),
    field('Mobile_Number_1__c', dataValue('mobile_number'))
    field('Sex__c', dataValue('gender')),
    )
    )
    );
    - + \ No newline at end of file diff --git a/fr/documentation/jobs/editing_locally.html b/fr/documentation/jobs/editing_locally.html index 5068dc6ad67..8dcd9e94173 100644 --- a/fr/documentation/jobs/editing_locally.html +++ b/fr/documentation/jobs/editing_locally.html @@ -22,13 +22,13 @@ - +

    Editing jobs locally

    To edit jobs, instead of using the OpenFn Job Studio you can also use your favorite text editor and make changes offline, committing and pushing to GitHub to deploy to your OpenFn using the version control feature.

    First, make sure that version control is set up for your project and the job in question. When that's all done, follow the steps below:

    1. Make sure you have git installed

    2. Clone the repo from GitHub. Depending on how you're connecting, grab the HTTPS or SSH URL of the repository.

    GH Clone URL

    tip

    You can connect to GitHub with username+password (HTTPS) or an SSH keypair you generated. (You can check out the GitHub docs for more info.)

    1. Then use it to clone the repo to your computer by running this command in a folder that you'd like to contain your new repo: git clone {repo URL} (e.g., git clone https://github.com/OpenFn/Miracle-Feet.git)

    2. To update your local copy with changes from GitHub, run git pull regularly while you're editing.

    3. For this tutorial, we assume you're making changes on the main or master branch: the one that is deployed as your production system to OpenFn.

    4. To edit your jobs, use a code editor such as Visual Studio Code.

    VS Code

    1. Make sure you install the Prettier VSCode Extension and set is as default formatter in Settings as seen below. This will apply the correct code formatting to the files you change.

    Prettier

    1. Once you're done, you can check which files you changed with git status.

    2. Then use git add {filepath} followed by git commit -m {change notes} to prepare the changes to be merged into the repo.

    tip

    There's a lot to learn about git. Here's a good place to start.

    1. Then run git push to upload the files to the repo (see more on git docs).

    From there, the version control integration will update changed jobs in your OpenFn project and you can test those changes on the platform.

    Once you're ready to start running jobs and testing your changes locally, head over to the The CLI docs for guidance.

    - + \ No newline at end of file diff --git a/fr/documentation/jobs/errors.html b/fr/documentation/jobs/errors.html index 06668874866..0ef4cb32dec 100644 --- a/fr/documentation/jobs/errors.html +++ b/fr/documentation/jobs/errors.html @@ -22,13 +22,13 @@ - +

    Codes de sortie et erreurs

    À propos des erreurs

    Les erreurs sont vos amis. La chose la plus importante que vous pouvez faire lorsque vous rencontrez une erreur à n'importe quelle étape d'un projet d'intégration de données est de lire ce qui s'affiche à l'écran. Bien que cela puisse paraître évident, il est très facile de voir un grand bloc de langage technique et de se déconnecter.

    Souvent, l'échec d'un run est dû à des raisons commerciales simples qui peuvent être identifiées à partir des messages d'erreur affichés dans les logs par @openfn/core.

    Codes de sortie standard

    0 : Success

    Le code de sortie 0 est un succès (run réussie, p. ex. un système de destination a répondu avec un 200)

    1 : Error

    Le code de sortie 1 est une erreur normalement gérée (run a échoué normalement, par exemple, un système de destination a répondu avec un 4XX, 5XX, ou toute autre erreur spécialisée RequiredFieldMissing.)

    2 : Timeout

    Le code de sortie 2 signifie que votre run a expiré. Il a dépassé le délai que vous avez défini pour votre job, ou si vous utilisez la plateforme hébergée sur une offre non-entreprise, il a dépassé 100 secondes.

    10 : Core Error

    Le code de sortie 10 signifie qu'il y a eu une erreur dans @openfn/core/cli.js execute. C'est possible que votre job ne puisse pas être exécuté tel qu'il est rédigé, mais que diverses validations de contrôles n'ont pas pu vous avertir plus tôt.

    134 : Out of memory

    Il s'agit d'une erreur standard de mémoire insuffisante de NodeVM. Voir NodeVM memory limits ci-dessous.

    Codes de sortie spéciaux (Plateforme)

    La plate-forme OpenFn contrôle l'exécution de tous vos jobs via l'ErlangVM. (Découvrez Erlang ici.) Les codes de sortie suivants sont appliqués au niveau de cette VM de contrôle, plutôt que vers le bas à l'intérieur de votre run de NodeVM.

    3 : Failed to start

    Le code de sortie 3 signifie que le run n'a pas pu être lancé en raison d'une erreur Erlang. Ce pourrait être lié au trafic réseau, mais très rare comme erreur qui se produit avant le début du run ; une nouvelle tentative sera effectuée, avec une interruption exponentielle, pour une durée très longue.

    4 : The NodeVM is unresponsive

    Le code de sortie 4 signifie que le NodeVM qui run votre job ne répond plus. Il a tenté de quitter après l'expiration du délai mais n'a pas pu le faire, donc nous avons arrêté le processus depuis le bloc contrôle de ErlangVM.

    5: Elixir/ErlangVM Error

    Le code de sortie 5 signifie que nous avons rencontré une erreur inattendue lors de l'exécution de votre job qui ne pouvait être capturé que par le bloc contrôle de ErlangVM. Des erreurs comme ceci sont très rares et déclenchent un audit interne par l'équipe d'ingénierie de OpenFN.

    6: Aborted by project administrator

    Exit code 6 means that a run created and queued for execution but then subsequently aborted by request of an administrator or owner of that project.

    11: Node.js Error

    Exit code 11 means that there was an error in the NodeVM execution but the exit code itself couldn't be captured by our application.

    Limites

    We've shifted this content to a dedicated limits page.

    NodeVM memory limits

    Job state limits

    - + \ No newline at end of file diff --git a/fr/documentation/jobs/job-design-intro.html b/fr/documentation/jobs/job-design-intro.html index 71a57cdc69e..bba09c1ce96 100644 --- a/fr/documentation/jobs/job-design-intro.html +++ b/fr/documentation/jobs/job-design-intro.html @@ -22,13 +22,13 @@ - +

    Designing a job

    A job defines the specific series of tasks or database actions to be performed when a triggering message is received (even-based) or a pre-scheduled (and recurring) time is reached. It's the series of instructions for handling the data coming from a source system and to be sent to the destination system, or in other words, mapping data elements from one system to the other.

    Designing a job really just means clearly defining the “rules” for data element mapping. We'll walk through the main steps using Kobo Toolbox as an example source system and a Postgres database as destination but check out the integration design page for more details on data flow diagrams and mappings.

    Step 1: Map your data flows

    1. Define your input(s). What data collection forms are used to collect data? How many forms? Are there different form versions?
    2. Define your output(s). Where should the data be stored? In what format? What are your analysis requirements?

    Step 2: Map your data elements

    1. Export the metadata of your form (input) & destination DB (output).
    2. Paste the metadata into an Excel spreadsheet to create a mapping sheet:

    Sample mapping sheet

    1. Map data elements & define rules for data cleaning and transformation a. How should the data collected be translated into your destination system’s data model?  b. Does your destination system have data input & validation requirements?

    Step 3. Define your operations: insert, update, upsert...

    1. Find out or create the unique identifiers you will use to insert and update data (form ID, answer ID, or, case or patient ID etc.).
    2. Determine operations: e.g. insert, update, upsert, upsertMany
    3. Check the adaptor for helper functions. a. Example from language-postgresql
      • insert(...), insertMany(...)
      • update(...), updateMany(...)
      • upsert(...), upsertMany(...)  → update if record exists or insert if it doesn’t; references an external Id b. Example from language-dhis2 using Tracked Entity Instances (TEI)
      • updateTEI(...)
      • upsertTEI(...)

    Example upsert job:

    upsert('mainDataTable', 'AnswerId', {
      AnswerId: dataValue('\_id'), //external Id for upsert
      column: dataValue('firstQuestion)'),
      LastUpdate: new Date().toISOString(),
      Participant: dataValue('participant'),
      Surveyor: dataValue('surveyor'),
      ...
    });
    - + \ No newline at end of file diff --git a/fr/documentation/jobs/job-studio.html b/fr/documentation/jobs/job-studio.html index ec9ca60804d..daaf10f5026 100644 --- a/fr/documentation/jobs/job-studio.html +++ b/fr/documentation/jobs/job-studio.html @@ -22,13 +22,13 @@ - +

    Le Job Studio OpenFn

    The OpenFn Job Studio allows you create and test jobs on the platform with easy access to documentation of adaptors, matching messages and real-time logs.

    Caractéristiques de Job Studio

    Lors de la modification d'un job, vous pouvez trouver des messages dans l'inbox qui correspondent à votre job trigger en cliquant sur « Find messages matching this trigger ». Si vous accédez à un champ dans le message JSON, vous pouvez copier le chemin exact vers le champ et le coller comme une dataValue dans votre job.

    Vous pouvez trouver une liste de fonctions d'aide disponibles pour l'adaptateur de votre choix dans l'en-tête du panneau d'écriture de job. . En cliquant sur le nom de la fonction, vous copiez le code de la fonction que vous pouvez coller directement dans le job.

    Job_Studio_Edit

    En cliquant sur « Save and Run » (Enregistrer et exécuter) les logs de run sont affichés en temps réel dans le panneau de sortie.

    Diffuser

    - + \ No newline at end of file diff --git a/fr/documentation/jobs/limits.html b/fr/documentation/jobs/limits.html index 5cf41c788f5..34ae6665096 100644 --- a/fr/documentation/jobs/limits.html +++ b/fr/documentation/jobs/limits.html @@ -22,13 +22,13 @@ - +

    Limites

    Microservice et OpenFn.org (l'iPaaS) ont tous deux des limites pré-configurées pour assurer un fonctionnement fluide. Vous trouverez ci-dessous une explication détaillée de ces valeurs par défaut et comment ajuster les limites.

    :::astuce

    Si vous n'avez pas envie de lire beaucoup, voici le résumé :

    1. N'envoyez pas plus de 8 Mo à l'API /inbox en une seule requête.
    2. Assurez-vous que votre expression.js et votre state.json ne totalisent pas plus de 10 Mo lorsque vous démarrez ou terminez un run.
    3. Conserver l'utilisation de la mémoire en dessous de 512 Mo pendant le run.

    :::

    Limites de la mémoire NodeVM

    La limite de mémoire par défaut pour un processus Node est de 512 Mo et à moins que vous ne l'ayez personnalisé pour un usage sur le core ou que vous ayez accepté une offre de mémoire élevée sur OpenFn.org, les runs de jobs seront supprimés par Node (JavaScript heap out of memory) quand ils atteignent ce seuil.

    Augmenter la limite de mémoire pour une exécution individuelle

    Pour une limite de 1 Go pour un job individuel, utilisez :

    node --max-old-space-size=1024 core execute ...arguments

    Augmenter la limite de mémoire pour tous les jobs sur cette machine

    Pour une limite de 4 Go pour tous les jobs, définissez une variable d'environnement avec :

    export NODE_OPTIONS=--max_old_space_size=4096

    Limitation du corps des requêtes dans les inbox

    La taille maximale du corps de message JSON accepté sur le point de terminaison /inbox/your-uuid est de 8 Mo. Notez que les charges utiles doivent être maintenues en dessous de cette limite afin de s'assurer que Job state limits ne soient pas atteintes lors de l'exécution du run job suivant.

    :::remarque

    Si vous utilisez OpenFn pour le traitement de données en masse ou des jobs périodiques par lots, vous pouvez soit reconfigurer ces limites sur votre déploiement de microservice ou contacter enterprise@openfn.org pour que des dispositions spéciales soient prises pour votre projet OpenFn.org. .

    :::

    Limites du Job state

    Lorsqu'un job doit être envoyé pour être traité, la taille totale de tous les artefacts de job (votre job expression et le state initial) ne peut pas excéder 10 Mo. En d'autres termes, votre code (expression.js) plus vos données et votre configuration (état. fils) ne peuvent pas dépasser 10 Mo au total.

    De même, lorsque state est sauvegardé sur le stockage/disque du cloud après l'exécution, il y a une limite de 10 Mo à la taille du state final d'un job.

    Si vous traitez de grandes quantités de données, vous devez (a) maintenir l'utilisation totale de votre mémoire en dessous de 512 Mo pendant l'exécution et (b) nettoyer state de sorte que tout ce que vous transmettez au prochain job, que ce soit via FLOW ou par saved state pour une job CRON, reste en dessous de 10 Mo.

    Parfois, cela nécessite la diffusion des données de A -> B dans le même job. Parfois, il faudra stocker les données en tant que variables locales, puis afficher les données dans votre inbox par morceaux avant de nettoyer state.

    - + \ No newline at end of file diff --git a/fr/documentation/jobs/multiple-operations.html b/fr/documentation/jobs/multiple-operations.html index cada5f26753..3f1c2fd19d9 100644 --- a/fr/documentation/jobs/multiple-operations.html +++ b/fr/documentation/jobs/multiple-operations.html @@ -22,13 +22,13 @@ - +

    Utilisation d'opérations plusieurs

    Vous pouvez faire beaucoup de choses en séquence avec OpenFn, que ce soit à l'aide de core, microservice ou platform.

    Flux de jobs par rapport aux opérations multiples dans un seul job par rapport à l'affichage dans l'inbox

    Raisons d'utiliser des jobs de flux

    • Chaque opération doit utiliser des fonctions qui sont seulement disponibles dans des différents adaptateurs.
    • Vous devez avoir des credentials différents pour chaque opération
    • Vous voulez voir les succès et les échecs au niveau de chaque opération
    • Chaque run individuel prend beaucoup de temps et vous vous inquiétez que votre NodeVM n'expire. (Sur platform, cela se produit après une 100s pour les utilisateurs non-entreprise ; sur microservice vous avez probablement configuré votre propre durée d'expiration.)

    Motifs d'utiliser plusieurs opérations dans un même job

    • Le job doit être atomique, vous voulez que le tout soit considéré comme un échec si une partie de celui-ci échoue.
    • Vous exécutez des jobs manuellement et vous voulez un seul bouton sur lequel cliquer pour réessayer la séquence complète d'opérations.
    • Vous mettez à jour un curseur dans une série d'opérations qui impliquent GET et POST. Lorsque le POST échoue, vous ne voulez pas mettre à jour le curseur pour l'exécution du travail suivant qui contient le GET.
    • Vos opérations ne prennent pas trop de temps (<100s au total pour platform) et vous souhaitez réduire le nombre d'exécutions.

    Motifs de l'affichage dans l'inbox

    Vous pouvez décider de renvoyer les données d'un GET vers votre inbox et laisser un autre job être déclenché par un filtre de messages.

    get('somePath', { query: { after: '2020-10-12' } }, post('my-inbox-uuid'));
    • Vous aimeriez stocker le résultat de la première opération pour une utilisation ou une inspection ultérieure et ne pas avoir à réessayer cette opération afin de reproduire le même résultat.
    • Vous ne vous souciez pas des petits délais entre le premier et le deuxième job en cours d'exécution.
    - + \ No newline at end of file diff --git a/fr/documentation/jobs/operations.html b/fr/documentation/jobs/operations.html index 1335936727e..251c44f50ec 100644 --- a/fr/documentation/jobs/operations.html +++ b/fr/documentation/jobs/operations.html @@ -22,13 +22,13 @@ - +

    Qu'est-ce qu'une opération ?

    Une opération est une fonction qui retourne une autre fonction qui prend un state et retourne un Promise ou state.

    Le but d'une opération est d'agir comme une unité de comportement non résolue.

    Par exemple, lors de la création d'une expression - le code lui-même ne sait pas ce que sera le state (l'état), seulement ce qu'il fera.

    Les packs de langue suivent tous cette convention où les fonctions qui sont fournies renvoient toutes des opérations.

    create('My_Custom_Object__c', {
    Custom_Field__c: dataValue('foo'),
    });

    Dans l'extrait ci-dessus, la fonction create ne sait rien sur les credentials, ou toute donnée dynamique qui pourrait être disponible au moment de l'exécution.

    function create(objectName, data) {
    return function (state) {
    // expand the data argument using state
    // actually do the work
    };
    }

    Dans cet extrait, vous trouverez un exemple simple de ce à quoi ressemblent la plupart des fonctions dans OpenFn. La fonction create renvoie une fonction qui prend state, c'est une Operation. Le runtime utilisant execute appellera toutes les opérations avec state.

    - + \ No newline at end of file diff --git a/fr/documentation/jobs/state.html b/fr/documentation/jobs/state.html index cd9b11a355b..56dfac680b1 100644 --- a/fr/documentation/jobs/state.html +++ b/fr/documentation/jobs/state.html @@ -22,13 +22,13 @@ - +

    Etat initial et final pour les runs

    État initial

    Selon les outils que vous utilisez et ce qui a déclenché un run donné, l'état initial pour un job exécuté peut être généré de différentes manières, et vous pourriez même construire un état à la main. Pour microservice, engine et platform cependant, il y a des règles strictes sur la façon dont l'état est créé et fourni à un runtime pour l'exécution de vos opérations. Voir le tableau ci-dessous pour plus de détails.

    État final

    L'état final d'un job exécuté est déterminé par vous. Les expressions de job sont une série d'opérations ; elles prennent chacune un état et renvoient un autre état, après avoir créé un nombre quelconque d'effets secondaires.

    État final après une erreur

    If a job run fails, it will not produce a final state. The run itself will have log information attached to it, along with its exit code, but there's not necessarily a clean final state which can be serialized to JSON.

    info

    If you're making use of a failure triggered job, that job run will not get the final state of the previous job run, as it failed and has no final state. It will instead receive the initial state of the previous (failed) run, plus a new error key that contains the stringified logs from the previous run. See below for details.

    États par type de trigger de job

    Évènement déclencheurÉtat initial
    requête http{ data: httpRequest.body, configuration: job.credential.body }
    cron{ ...finalStateOfLastSuccessfulRun, configuration: job.credential.body }
    flux : succès{ ...finalStateOfTriggeringRun, configuration: job.credential.body }
    flux : échec{ ...initialStateOfTriggeringRun, error: logsFromTriggeringRun, configuration: job.credential.body }
    - + \ No newline at end of file diff --git a/fr/documentation/jobs/understanding.html b/fr/documentation/jobs/understanding.html index cf371d54eb2..448546eeb0e 100644 --- a/fr/documentation/jobs/understanding.html +++ b/fr/documentation/jobs/understanding.html @@ -22,13 +22,13 @@ - +

    Un examen plus approfondi des jobs

    Le but de cette documentation technique est de faciliter la rédaction de jobs personnalisés complexes.

    Termes et concepts clés

    1. core (https://github.com/openfn/core) est le programme Javascript qui exécute les jobs pour OpenFn dans un environnement Node.js éphémère.
    2. state est un fichier .JSON qui est construit et transmis à l'environnement Node. Il contient au moins deux clés, configuration et data. La configuration sera remplie avec vos credentials et sera utilisée par les adaptateurs pour l'authentification, et les données seront remplies avec les données du message si le job a été déclenchée par un message entrant.
    {
    "configuration": {
    "username": "taylor",
    "password": "shhhhhh",
    "loginUrl": "https://login.salesforce.com"
    },
    "data": {
    "a": 1,
    "b": {
    "x": [1, 2, 3]
    }
    }
    }
    1. expressions sont des séquences d'opérations à exécuter. Ils font partie de « jobs » qui incluent également un credential, un trigger, une étiquette et (parfois) un chemin de fichier github.
    2. operations sont des fonctions nommées , exportées pour être utilisées par des adaptateurs spécifiques qui transmettent state et renvoient state.

    State est transmis à operations. Operations renvoie state.

    C'est un concept clé. Lorsque vous écrivez :

    create('object', fields(
    field(...)
    ));

    La fonction exécutée dans votre pack de langue (p. ex. language-salesforce) va exécuter chaque opération avec state, puis renverra state. Si vous voulez exécuter des opérations dans une autre fonction personnalisée, vous devez explicitement transmettre state.

    fn(state => {
    return create('object', fields(
    field(...)
    ))(state)
    });

    Séquences d'opérations à l'intérieur de fonctions personnalisées.

    En utilisant execute vous pouvez enchaîner plusieurs opérations séquentielles dans une fonction personnalisée.

    fn(state => {
    const { userName } = state.data.form.meta;

    if (userName != 'tester') {
    return execute(
    upsert("person__c", "Name", fields(
    field(...),
    field(...)
    )),
    beta.each(
    dataPath("form.array[*]"),
    upsert("object", "Name", fields(
    field(...)
    ))
    )
    )(state)
    }
    return state;
    });

    Contrôler le timing entre les opérations avec des fonctions asynchrones.

    Pour être vraiment complexe, vous pourriez vouloir exécuter un certain nombre de fonctions asynchrones à l'intérieur d'une opération alterState, mais ATTENDRE que ces fonctions soient résolues avant de passer à l'opération suivante. Si execute ne fonctionne pas pour votre cas d'utilisation, vous pouvez utiliser Promise.all et renvoyer une fonction asynchrone.

    fn(state => {
    console.log('Here we will await the result of a LOT of async operations.');
    console.log('First we define a bunch of different async functions.');
    const postClinics = async c => {
    return post(state.configuration.inboxUrl, {
    body: { clinics: c },
    })(state);
    };

    const postPatients = async p => {
    return post(state.configuration.inboxUrl, {
    body: { patients: p },
    })(state);
    };

    const postVisits = async v => {
    return post(state.configuration.inboxUrl, {
    body: { visits: v },
    })(state);
    };

    console.log(
    'Then we define a single function that wraps them all up and waits for all the individual functions to resolve.'
    );
    async function makePosts() {
    return Promise.all([
    ...state.data.clinicSets.map(item => postClinics(item)),
    ...state.data.patientSets.map(item => postPatients(item)),
    ...state.data.visitSets.map(item => postVisits(item)),
    ]);
    }

    console.log(
    'Then we return that function, forcing our next operation to await the result of this one.'
    );
    return makePosts();
    });

    fn(state => {
    console.log('I get called AFTER those async functions are resolved.');
    return state;
    });
    - + \ No newline at end of file diff --git a/fr/documentation/jobs/working_with_branches.html b/fr/documentation/jobs/working_with_branches.html index b3e44d5c247..c85f7ea730d 100644 --- a/fr/documentation/jobs/working_with_branches.html +++ b/fr/documentation/jobs/working_with_branches.html @@ -22,13 +22,13 @@ - +

    Working with branches

    In the Editing jobs locally section we walked through the process of creating and adding your changes to the main branch of a project.

    However, most code change workflows involve sharing and reviewing changes before deployment. You can do this by creating, testing and sharing your changes on a new branch, then, once final, merging them into main for deployment.

    tip

    There are LOTS of different strategies for branching and reviewing code on Git. (Like GitHub Flow or "That Famous @nvie Post" for example!) This guide is meant to give you a very brief introduction to branches in Git, but it is not meant to dictate the "right way".

    Let's pick up the workflow when you git pull -ed the latest changes of the repo to your local folder.

    1. Running git checkout -b {branch_name} will create and switch over to a new branch. When you start editing your jobs, the changes will be kept on this branch, managed separately from main.

    2. To test the changes locally, check out the The CLI docs.

    3. Just as you've seen when working on main, when you're done check which files you changed with git status.

    4. Then use git add {filepath} followed by git commit -m {change notes} to prepare the changes to be merged into the repo.

    5. The following command will push your changes to the remote repository as a separate, new branch: git push --set-upstream origin {branch_name}.

    6. On GitHub, you can create a Pull Request to get your changes reviewed and approved.

      PR-1

      PR-2

    7. As you keep working with branches, make sure you check which branch you're on with git status.

    git-status

    1. To keep your local copy up to date with the remote repo, switch to main with git checkout main and hit git pull to pull any changes.

    2. If you're still working on your separate branch while main has been updated, use git checkout {branch_name} followed by git merge main to copy over new changes from main to your branch.

    - + \ No newline at end of file diff --git a/fr/documentation/manage/platform-mgmt.html b/fr/documentation/manage/platform-mgmt.html index d5b71f5c87b..badbd393896 100644 --- a/fr/documentation/manage/platform-mgmt.html +++ b/fr/documentation/manage/platform-mgmt.html @@ -22,13 +22,13 @@ - +

    Gestion de projet

    info

    Currently, this section is specific to OpenFn/platform.

    Jobs

    This section of the portal allows you to create and manage your jobs.

    Searching jobs

    For a project with a number of jobs, finding a job can be easily achieved via the search feature.

    To search for a given job:

    • From the application menu, click on Jobs.
    • Find the Search jobs box and type the name of the job in the search box.
    • The application will filter and show all jobs matching the portion of text entered into the search box.

    Switching on/off a job

    In OpenFn, a job is off by default. To switch on a given job, follow the steps below:

    • From the application menu, click on Jobs.
    • Find the job you would like to turn on.
    • On the top-right corner of the job card, click on the switch button to turn on/off the job.
    • Once switched on, the job's switch button will change the color to blue.
    info

    Note that once a job is switched on, OpenFn will run it automatically, as configured. If you do not want a job to be run automatically, by OpenFn, then turn it off.

    Making a job private

    OpenFn allows you to share jobs to an open source job library that other users can learn from or reuse. All jobs are available for sharing and inherit project sharing settings, by default. If you do not want a given job to be available for sharing to OpenFn's Job Library, then you can mark that job as private. To mark a job as private, follow the below steps:

    • From the application menu, click on Jobs.
    • Find the job you would like to mark as private.
    • On the bottom-left corner of the job card, click on the View.
    • While on the details page for the selected job, click on the eye icon.
    info

    Note that once a job is marked as private, sharing will be blocked even if its project is enrolled in the OpenFn's Job Library. You can toggle this setting back by clicking on the eye icon.

    Archiving a job

    OpenFn allows you to archive a job if it is no longer needed or used. To archive a job, follow the steps below:

    • From the application menu, click on Jobs.
    • Find the job you would like to archive.
    • On the bottom-left corner of the job card, click on the View.
    • While on the details page for the selected job, click on the archive icon.
    • Confirm archiving in the dialog that pops up after clicking the archive icon.
    info

    Note that once archived, the job won't appear in your jobs list. Also messages will not appear to match against it until you restore the job. Also note that a job cannot be deleted, it can only be archived.

    Restore archived job

    To restore an archived job, follow the steps below:

    • From the application menu, click on Jobs.
    • While on the jobs list page, click on the Show archived jobs button.
    • All archived jobs will be shown in the jobs list.
    • Find the job you would like to restore.
    • On the bottom-left corner of the job card, click on the View.
    • While on the details page for the selected job, click on the restore icon.
    • The job will now be shown in the list of available jobs.

    Disabling console logs for a job

    OpenFn allows you to disable console.log statements for your job. Disabling console.log ensures that sloppy or malicious code written in the job expression does not expose sensitive data from the jobs.

    To disable console.log for a given job, follow the steps below:

    • From the application menu, click on Jobs.
    • Find the job you would like to disable console log for.
    • On the bottom-left corner of the job card, click on the View.
    • While on the details page for the selected job, click on the lock icon.

    Editing a job

    OpenFn allows you to edit or make changes to existing jobs. To edit a given job, follow the steps below:

    • From the application menu, click on Jobs.
    • Find the job you would like to edit.
    • On the bottom-left corner of the job card, click on the View.
    • While on the details page for the selected job, click on the pencil icon.
    • See details about job editing in Job Studio here.

    Job change history and reverting changes

    If your job is linked to a Github repo, changes made to a job expression can be reverted to a given git commit. To revert changes made to a job expression, follow the steps below:

    • From the application menu, click on Jobs.
    • Find the job whose changes you would like to revert.
    • On the bottom-left corner of the job card, click on the View.
    • While on the details page for the selected job, scroll down to the bottom of the job card and click on View Change History.
    • Select a corresponding change history row.
    • Accept the prompts to revert to a previous commit, in the revert dialog.
    info

    Note that after the revert dialog confirmation, the job expression will instantly be reverted to a selected commit. No other jobs will be reverted. To instantly revert all jobs in for a given project to a previous commit, resend the webhook from GitHub.

    Creating a new job

    To create a new job, follow the steps below:

    • From the application menu, click on Jobs.
    • Find a blue floating button with + icon, and click on it.
    • Clicking the + button will open Job Studio for you to enter details for your new job.
    • See details on how to use Job Studio here.

    Job Studio

    Job Studio is OpenFn's Job Editor. It allows you to create a new job or edit an exisiting one. It can be accessed by following the steps for editing an existing job or creating a new job. The instructions below assume you already know how to open Job Studio by either methods.

    Changing Job Studio mode

    Job Studio comes in two editing modes, namely Wizard mode and Fullscreen mode. By default, OpenFn JobStudio runs in wizard mode. Wizard mode allows you to configure a job via a step-by-step configuration wizard. On the other hand, Fullscreen mode allows you to quickly configure or edit the job without the help of the wizard.

    To change from one Job Studio mode to another, follow the steps below:

    • While in Job Studio, in the top-right corner, click on the fullscreen icon.
    • Depending on the current Job Studio mode, clicking on the fullscreen icon will toggle the editing mode to either Wizard or Fullscreen.
    info

    Note that once you toggle the editing mode, OpenFn updates your user settings and saves this editing preference as your default Job Studio mode for subsequent editing sessions. Note, however, that when creating new jobs, Job Studio will always open in Wizard mode, regardless of your saved editing mode preference.

    Configuring a job

    While in Job Studio, if in Wizard mode, you will see four configuration steps and an expression editor. In Fullscreen mode, the four configuration steps appear as regular fields, without a wizard.

    The four configuration steps include giving the job a name, defining what triggers its execution, selecting an adaptor, and providing authentication details.

    The expression editor is the area where you write your job expression. Fill-in all the details, and click on the Save icon in the top-right corner to save your job's configuration changes.

    Inspecting job's initial state

    This feature allows you to view the initial state of a selected job. Note that this feature is currently only available for message-triggered jobs.

    To view or inspect a job's initial state, click the expression pane splitter and drag to the right. After dragging, you will see a json tree representation of the matching initial state. To copy a path to a given node in the state, click on the Copy to clipboard icon overlaid on the node. The path to that node will be saved to clipboard, and can then be pasted inside the expression editor as data path for the job's expression.

    Accessing inline adaptor documentation

    For a selected adaptor, OpenFn allows you to view documentation and code examples for each adaptor operation.

    To view adaptor documentation, click on the documentation icon(first icon) on the top-right corner of the Expression Pane.

    Each adaptor operation has a short description and an example. You can click on the example expression to copy and use it in your job's expression editor.

    Also note that expression examples or code snippets for adaptor operations can be auto-generated through the expression editor's autocompletion feature. To generate a code snippet for a given operation, type the first few letters of the operation and press the tab key.

    Changing JobStudio theme

    OpenFn allows you to customize the feel and look of Job Studio. To change Job Studio's theme from the default one, click the color palette icon, and select a theme of your choice.

    Installing a unreleased adaptor version

    In Job Studio, you can install adaptors that are not part of the recommended adaptors picklist directly from npm. See details here on how to install the unreleased adaptor version.

    Testing a job

    You can test your job without exiting Job Studio, by clicking on the Save and Run button. You can find the Save and Run button in the bottom pane of the Job Studio.

    After clicking on Save and Run, the job will be run and its logs will be streamed to the Run logs console.

    info

    Note that this feature is currently only available to message-triggered jobs.

    Triggers

    This section of the portal allows you to create and manage your Triggers.

    Searching triggers

    For a project with a number of jobs and a range of trigger criteria, finding a given trigger can be easily achieved via the search feature.

    Triggers can be filtered/searched by name or criteria. To search for a given trigger:

    • From the application menu, click on Triggers.
    • Find the Search triggers box and type, in the search box, the trigger criteria for a message trigger (e.g, {"test": "data"}) or name of the trigger for any other type of trigger.
    • The application will filter and show all triggers matching the portion of text entered into the search box.

    Editing a trigger

    OpenFn allows you to edit or make changes to existing triggers. To edit a given trigger, follow the steps below:

    • From the application menu, click on Triggers.
    • Find the trigger you would like to edit.
    • On the bottom-left corner of the trigger card, click on Edit.
    • See details about types of triggers and other editing options here.

    Deleting a trigger

    OpenFn allows you to delete an existing trigger. To delete a given trigger, follow the steps below:

    • From the application menu, click on Triggers.
    • Find the trigger you would like to delete.
    • On the bottom-left corner of the trigger card, click on Edit.
    • While on the edit page for the selected trigger, click the trash icon.
    • The application will prompt you to confirm whether you would want to proceed with deleting the given trigger.
    info

    Note that OpenFn will mark this trigger for deletion. You will not be able to access or edit the trigger once this is done. If there are any jobs linked to this trigger, they will not run successfully until you assign them new or other existing triggers.

    Creating a trigger

    To create a new trigger, follow the steps below:

    • From the application menu, click on Triggers.
    • Find a blue floating button with + icon, and click on it.
    • Clicking the + button will open New Trigger Form for you to enter the details for your new trigger.
    • See details about types of triggers and other editing options here.

    Credentials

    This section of the portal allows you to create and manage your Credentials.

    Searching Credentials

    For a project with a number of jobs and a range of credentials, finding a given credential can be easily achieved via the search feature.

    Credentials can be filtered/searched by name. To search for a given credential:

    • From the application menu, click on Credentials or My Credentials.
    • Find the Search credentials box and type, in the search box, name of the credential.
    • The application will filter and show all credentials matching the portion of text entered into the search box.
    info

    Note that if you are searching for all credentials you own, then find them via the My Credentials menu item otherwise you can find all credentials assigned to a given project via the Credentials menu item. Also note that not every credential you own is available to all the projects you are member of. See details about credential ownership and access here.

    Credential ownership and access

    A credential is owned, by default, by the user who created it. To view all the credentials you own, follow the steps below:

    • From the application menu, click on My Credentials.
    • A list of all credentials you own will be displayed.

    You can assign a credential to a project, and all users with access to that project will be able to use it. However, note that a credential can be available to all users in a given project for use, but only the owner can edit it.

    To view credentials available to a given project, follow the steps below:

    • From the application menu, click on Project Dashboard.
    • Select the project for which you would like to see the credentials.
    • After the project loads, from the application menu, click on Credentials.
    • A list of all credentials available to a selected project, will be displayed.

    Editing a credential

    OpenFn allows you to edit or make changes to existing credentials. To edit a given credential, follow the steps below:

    • From the application menu, click on Credentials or My Credentials.
    • Find the credential you would like to edit.
    • On the bottom-left corner of the credential card, click on Edit.
    • See details about types of credentials and other editing options here.

    Transferring credential ownership

    In OpenFn, a credential is owned, by default, by the user who created it. However, OpenFn allows you to change ownership of a credential to another user of the portal. To transfer credential ownership to another user of the OpenFn portal, follow the steps below:

    • From the application menu, click on Credentials or My Credentials.
    • Find the credential you would like to transfer ownership.
    • On the bottom-left corner of the credential card, click on Edit.
    • While on the credential detail page, scroll down to the bottom left corner of the page and click on Ownership Transfer.
    • Enter the email address and user number for the new credential owner. This information can be found on the recipient's account settings page
    • After entering email address and user number, click on the Transfer Ownership button.
    • OpenFn will prompt you to confirm wether to proceed with the transfer or not.
    info

    Note that once you proceed with credential ownership transfer, you will lose access to the credential immediately. The new owner may be able to view or modify personal or sensitive information stored on this credential.You will not be able to regain access to this credential without the new owner.

    However, you will still be able to use this credential for jobs in the projects to which it has been shared until and unless the new owner revokes that project's access to the credential.

    Granting/revoking credential access to a project

    Note that, by default, a credential is available to the project the user had loaded at the time the user was creating the credential. However, OpenFn allows you to grant or revoke access to a credential for one or more projects. To grant or revoke access to a credential for a project, follow the below steps:

    • From the application menu, click on Credentials or My Credentials.
    • Find the credential you would like to edit project access.
    • On the bottom-left corner of the credential card, click on Edit.
    • While on the credential detail page, find the Manage Access section on the right side of the page.
    • You will see a list of projects that you are a member of. Mark the checkbox to grant access or un-mark the checkbox to revoke access for a given project.

    Deleting a credential

    OpenFn allows you to delete an existing credential if you own it. To delete a given credential, follow the steps below:

    • From the application menu, click on Credentials.
    • Find the credential you would like to delete.
    • On the bottom-left corner of the credential card, click on Edit.
    • While on the edit page for the selected credential, click the trash icon on the top right corner of the page.
    • The application will prompt you to confirm whether you would want to proceed with deleting the given credential.
    info

    Note that if you proceed with deleting a given credential, OpenFn will delete this credential immediately for security reasons. You will not be able to restore the credential once this is done, but you may create a new credential with the same login information. If jobs are currently using this credential, they may not run successfully until you add a new credential and assign it to those jobs.

    Creating a new credential

    To create a new credential, follow the steps below:

    • From the application menu, click on Credentials or My Credentials.
    • Find a blue floating button with + icon, and click on it.
    • Clicking the + button will prompt you to choose the type of credential you would like to create.
    • Note that credentials are meant to be used to connect to other systems. So choose the type of credential that corresponds to the system you will be integrating with via OpenFn.
    • After choosing the type of credential, OpenFn will open the New Credential Form for you to enter the details.
    • See details about types of credentials and other editing options here.

    Activity

    In this section of the portal, you can view a list of all "runs" - i.e. individual job runs. This list is essentially a compilation of all jobs, messages and credentials flowing through your OpenFn account towards your destination system(s).

    Runs

    Runs are attempts made on a destination system by running a receipt through a Job Description. Runs can be viewed and re-processed. Each submission has a success, started_at, finished_at, job_description_id, and receipt_id attribute. Started_at and finished_at are the timestamps when the submission began and ended.

    Remarque : Certains runs peuvent prendre beaucoup de temps, particulièrement si ils effectuent plusieurs actions dans un système de destination ou si ils récupèrent beaucoup de données à partir d'une API REST au début d'une migration. En cas d'échec, ils apparaîtront en rouge. In the case of failure, refer to our Troubleshooting section below.

    Filter runs in the Activity view

    You can filter the run logs in the Activity View by:

    • Text - Remember to be patient as a full log text search can take time process. Leverage this feature to search for runs with specific error messages to support with troubleshooting any failed runs.

    • Date - Filter the view to only show runs that failed in the last few hours/ days/ year – or a custom date range! Note that the default activity history view shows runs from the last 30 days.

    Bulk reprocess (retry) runs

    Need to re-process a series of runs? This could be helpful if you had multiple runs fail due to an error message.

    1. Generate a list of the runs that you want to reprocess by adjusting the filters—be sure to specify an exact date range, job, status, etc.

    2. Simply click the Reprocess button and review the dialog that appears. This dialog contains important information about the query that will be used for reprocessing and gives you an approximate number of runs that will be reprocessed.

    Retry run button

    1. Click "Reprocess" when you're happy with the query. You'll get feedback on the number of runs enqueued within seconds, and you should see your project queue fill up then empty over time as the batch is processed.

    Retry run button

    info

    Note that a filtered list of runs will include runs triggered by message filters, cron, and flow or catch triggers. When you select to reprocess runs from a filtered list, the runs in that list which can only be triggered by the successful or failed exit of another run will not be included in the initial batch. Those jobs will, however, still get run if they are turned on and successful or failed runs in the batch trigger them. In other words, flow/catch triggers will behave normally even during a bulk reprocess order.

    note

    Remember that OpenFn plans are run-based, and you can monitor usage in Project Settings to ensure that you don’t hit any run limits when bulk reprocessing!

    Export runs to CSV

    You can download and review OpenFn runs data by exporting to a CSV file.

    1. In your activity history view, filter the runs you’d like to export to CSV. Choose to filter by text, date, job, and status.

    2. Click the Export as CSV button to review and confirm the desired export.

    Export runs button

    1. Click the "Export" button to submit the request. A link to download the file will be sent to your email address shortly.

    Retry run button

    Inbox

    Your inbox contains the history of all messages that have passed in to your project, which may or may not have triggered a specific job. Messages are stored payloads or data that were sent via HTTP post to your inbox. They can be viewed in formatted JSON, edited, or manually processed (if they did not match a filter when they were originally delivered.)

    To edit a message, click the "pencil and paper" icon next to that receipt. Be careful, as no original copy will be persisted.

    Filter messages in your inbox

    To help you more quickly find relevant messages, you can now filter your inbox by:

    • Body Text - Search your messages for specific text (e.g., find surveys that contain “India” in the body). As individual projects may have millions of messages containing tens of thousands of lines of JSON each, we’ve implemented a “tsvector” search strategy. Please be patient and note that this text-based search may take a moment to return results.. If you’re curious about how tsvector works from a technical perspective, check out the official documentation.
    • Date - Choose a relative date range (e.g., “Last 90 Days”) or define a custom date range yourself. Note that the default inbox view shows “Last 30 Days”.

    Image of Inbox Filters

    Bulk reprocess messages

    Need to re-run a series of messages? If you had a job fail because of an error for multiple messages, or need to re-process the data in OpenFn to re-send to a destination application, then this feature will help you do so more quickly!

    1. Generate a list of the messages that you want to reprocess by adjusting the filters—be sure to specify an exact date range, the matching trigger, etc.

    2. Simply click the Reprocess button and review the dialog that appears. This dialog contains important information about the query that will be used for reprocessing and gives you an approximate number of messages that will be reprocessed.

    Reprocess button

    1. Click "Reprocess" when you're happy with the query. You'll get feedback on the number of messages enqueued within seconds, and you should see your project queue fill up then empty over time as the batch is processed.

    Retry run button

    Note when bulk reprocessing messages

    • This simulates the chain of events that starts when messages first arrive in your inbox. In other words, reprocessed messages will be handled by message filter triggers for any jobs that have the autoprocess setting “on”. If you've got messages that match certain triggers, but the associated jobs are switched "off" they will not be run when those messages are reprocessed.

    • Remember that OpenFn plans are run-based, and you can monitor usage in Project Settings to ensure that you don’t hit any run limits when bulk reprocessing! Usage stats chart

    Export messages to CSV

    You can now download and review OpenFn message data by exporting to a CSV file.

    1. In your inbox, filter the messages you’d like to export to CSV. Choose to filter by text, date, trigger, and run state.

    2. Click the Export as CSV button to review and confirm the desired export.

    Export CSV button

    1. Click the "Export" button to submit the request. A link to download the file will be sent to your email address shortly.

    Retry run button

    Search Console

    The Search Console allows users to answer questions such as Did patient 798123 get successfully referred or Did CommCare submission 123e4567-e89b-12d3-a456-426614174000 get loaded into DHIS2? via direct string search.

    Searches via Inbox and Activity History rely on JSONB matching and tsvector, which are more powerful for traversing very large date ranges of messages or run logs but are less intuitive than string searches.

    The Search Console solves this challenge and allows the user to type the string of concern in a Search Box and press enter. OpenFn will search in message bodies and run logs, by default, and/or in message headers if otherwise specified.

    To use the Search Console, follow the below steps:

    1. On the left menu pane, click on Search Console link.
    2. While on the Search Console page, select the Date Range and enter the text matching your search in the Search Box.
    3. Press the Enter Key on the Keyboard or click the Search button to search.
    note

    OpenFn will limit the results of your search to a maximum of 10 records per specified search type (i.e. OpenFn will return a maximum of 10 results for matches found in bodies, logs, or headers). It is therefore recommended to refine your search to a very specific string and date range for which a matching result is expected.

    Account Management

    Add a credit card

    OpenFn's hosted iPaaS has a free-forever tier, but if your organization requires more jobs or runs each month, you can add a credit card and change to a paid tier. For comprehensive pricing information please visit our pricing page.

    To enter your credit card information follow these steps:

    1. Login to your OpenFn account.
    2. Click on your profile icon on the top right corner o f the page and select Billing.
    3. From the Billing page select Add Card and enter your credit card information.

    Credit Card

    Change plan

    Once your credit card information is entered you can upgrade your plan by navigating to the Project Settings page and dragging the slider to the right or left.

    To following these steps:

    1. Login to your OpenFn account.
    2. Click on the Project Settings link on the left-hand menu of the project you'd like to modify. (Or click your profile icon on the top right corner of the page and select Billing and select the project that you would like to upgrade.)
    3. This will take you to the Project Settings menu.
    4. Scroll down on the Project Settings page and change plans using the slider.
    5. Once you have selected the desired plan, click Change to [plan name] and then confirm the change.

    Change Plans

    Lost password

    If at any time you forget the password for your OpenFn account follow these steps to reset it:

    1. Visit https://openfn.org/login .
    2. Enter the email address associated with your account.
    3. Click on Recover Password (see gif below). This will trigger OpenFn to send a recovery token to your associated email account.
    4. Check your email for the recovery token and make a copy of it.
    5. Enter your recovery token and a new password into the OpenFn "Reset Password" page.

    Password Reset

    Project settings

    This section of OpenFn platform allows you to view and update the project configuration and plan settings.

    Project Configuration

    To view or update the following project configuration details, follow the steps below:

    • From the application menu, click on Project Settings and then find the Project Configuration section.

    Changing Project Name

    • Changing your project name will update the URL and, after a 60-day deprecation period, will break bookmarks or old links to the project. This won't affect your project's inbox URL, but may impact users with lots of old run or message links saved offline.

    Viewing Project Inbox URL

    • To view the Inbox URL for your project, click on the eye icon against the Unique Inbox URL label.

    Changing Project Description

    • Project description is optional but can be updated under this section.

    Changing Concurrency

    • Concurrency is the number of jobs that will be run at the same time.
    note

    Think of it as the number of workers or employees performing the same task at your organization. The task may be to convert an inbound patient record to meet the FHIR standard, then load it into OpenMRS. You could have 10 files waiting to be processed from separate deliveries. With a concurrency of 10, all ten files would start to be processed immediately. With a concurrency of 1, they'd be processed sequentially, the second only being started once your single worker finished working on the first.

    • Projects are set to a concurrency of "1" by default. This means that runs will be processed one-at-a-time and that each subsequent run will be blocked until the previous run is completed.

    • If your project is subscribed to a paid plan, you have the option of toggling concurrency from the default "1" all the way up to a concurrency of "10".

    • To change the concurrency level for your project follow these steps:

    1. Login to your OpenFn account.
    2. Click on the Project Settings link on the left-hand menu of the project
      • you'd like to modify.
    3. This will take you to the Project Settings menu.
    4. On the Project Settings page change concurrency to the appropriate level using the slider.
    5. Once you have selected the desired concurrency, click Update Project.

    Change Concurrency

    Changing Notification Threshold

    • By default, OpenFn sends a notification to all project collaborators when 85% of the project's allowed runs have been used in a given billing cycle. You can change this setting by adjusting the Notification Threshold Slider to your desired level.
    • Once you have selected the desired notification threshold, click Update Project.

    Exporting Project Config

    • OpenFn allows you to run your project as a Microservice .
    • There are two options for exporting the project config used in OpenFn Microservice. Exporting as project.yaml will provide you with a YAML file that can be used to run this project with OpenFn/engine, OpenFn/microservice, or for use in another OpenFn/platform space.
    • Exporting as microservice.zip will prepare a ZIP file with openfn/microservice:latest (from hub.docker.com) and a your YAML file inside a pre-configured directory structure so that you can run this project as a microservice via docker run. In both cases, your project configuration will be built asynchronously and you'll receive an email with download link when it's done.

    Project Plan

    • In this section, you can view and change your project's pricing plan.

    Usage and Subscription

    • This section provides you with a graph that shows your project's current plan usage limit and current usage pace.
    • To view detailed report of the project's usage, find and click on the Historical Project Usage button.

    Change Plan

    • By default, OpenFn sets your project's plan to Free.
    • Before changing your project's subscription plan, you must add a valid credit card.
    • To change the project's plan, find the project plans slider and click on the plan of your choice.
    • After selecting the project plan, click on the Add Card button and enter card details in the form and save.

    Job Library Sharing

    • The OpenFn Job Library is a project supported by the OpenFn community. It's a collection of open-source job code from projects across ICT4D.
    • You will always able to browse the library so that writing jobs is faster and easier, but by enabling library contributions for this project, jobs not marked as "private" will also be published to the library.
    • Contribute to the job library, on the top-right corner, find the library icon and click on it.
    • Click on the Yes, contribute to the job library button of the dialog box that appears.
    note

    Data from messages or runs are NEVER shared. Your job expressions (which most OpenFn users already keep in public repositories on GitHub) and other non-sensitive metadata (e.g., adaptor and version, created/updated dates) will be made searchable to help other organizations and governments write jobs more quickly and easily if you enable this setting.

    User Account Menu

    • You can view and modify your account settings by clicking on the person icon on the top right corner of the App bar.

    Changing User Account Settings

    • To change your user account settings, such as name, IDE Style, and theme, click on the Account Settings of the User Account Menu. This action will take you to the Account Settings page.
    • While on the Account Settings page, make the necessary changes and click on the Save button to save the changes.
    note
    • Note also that, while on the Account Settings page, you can access additional features such as Changing Email, Changing Password, connecting and disconnecting to Github, Billing Management, and Deleting Account.
    • To access these additional features, open the sub-menu by clicking on the three dots on the top-right corner of the Account Settings page.

    Viewing Billing

    • The User Account Menu also allows you to view details of all projects billed to your account.
    • To view a list of all projects billed to your account, click on the Billing menu item.

    Logging-out

    • You can logout of OpenFn by clicking on the Logout menu item of the User Account Menu.

      note

      Also note that OpenFn will log you out of your current session after 24 hours without warning! It also ensures that you are logged-out of all browser tabs, once your current login session expires.

    Access & Security

    This section covers the Access & Security features each OpenFn project has. To explore these features, on the left hand navigation ribbon click on the Access & Security tab (#1).

    Please refer to the screenshot below for help navigating the functionality of this page.

    Access&amp;Security Circled

    User Access

    OpenFn provides users with the ability to add collaborator access, revoke collaborator access, and, in the event you get stuck and need help from an implementation specialist, grant OpenFn support access.

    Add collaborator access

    To add collaborator access to your project from the Access & Security page:

    • Enter the e-mail address of your collaborator in the "Add collaborator by email" field. Note that you will need to select "add as collaborator," or add as administrator" to add him/her to the project. See the screenshot above for reference (#2).

    Revoke collaborator access

    To revoke collaborator access to your project from the Access & Security page:

    • Find the collaborator's name in the User list and in the Revoke column click on the on the Revoke button. See the screenshot above for reference (#3).

    Grant OpenFn support access

    To add OpenFn support team's access to your project from the Access & Security page:

    • Enable the Grant support access toggle (#4).

    Inbox Security

    OpenFn project administrators can choose to configure additional authentication for any inbound requests made to the project's inbox URL. In the "Access & Security" page of their OpenFn project, Administrators can choose from API Key and Basic Auth types, which will prompt administrators to either generate an API token or to setup a username:password credential. Once this inbox authentication is configured, any HTTP requests made to the OpenFn Inbox URL must include either this x-api-key token or username:password in the request header. inbox security

    Rotating auth methods

    Because more than one auth method may be accepted at a given time, some organizations choose to periodically rotate their auth methods for extra security and can do so without disrupting live production integrations. To rotate your inbox auth methods:

    1. Create a second valid auth method with a new token or user:pass combination.
    2. Provide that token to your external systems so that they can start using it in their webhooks/requests to OpenFn.
    3. Once you are certain that all external services are now using the new auth token, revoke the old auth token.

    You can repeat this process as frequently as is required by your organization's internal security protocols.

    GitHub version control

    Managing large numbers of jobs with multiple contributors is complicated. We developed the GitHub integration so that OpenFn projects can be linked to GitHub repositories and you can work collaboratively on your jobs, incorporating git flows for management.

    OK, you're ready to manage your jobs via GitHub, the leading hosted version control software on the web? Great, this section describes the steps necessary to get going.

    tl:dr;
    1. If a commit is made to a designated branch on GitHub,

      ✅ OpenFn will automatically update the associated job's expression to match the file on GitHub.

    2. If a job's expression or GitHub filepath is modified on the platform,

      ✅ OpenFn platform will automatically push a commit to your Github repo, updating the linked file to match the expression.

    Note that if you change a file on GitHub that's not related to any OpenFn jobs, no update will be made on OpenFn. Likewise, if you edit a job on OpenFn but don't make any changes to the expression or Github filepath, no commit will be made on GitHub.

    danger

    As soon as you enter a valid filepath for a job in a project with a connected Github repo, all modifications made to that job on OpenFn will appear as Github commits on that branch in that repo.

    Likewise, as soon as you make a commit on Github with a change to a file that is linked to a job on OpenFn, the contents of that file will overwrite the existing job on OpenFn.

    ⚠️ PLEASE note that before you connect Github, there is no version history for OpenFn jobs on the platform. If you commit something you don't want (like an empty file) to Github, autodeploy is on, and that file is linked to an OpenFn job, you will erase your existing job and you may not be able to retrieve it. ⚠️

    For this reason, and because OpenFn/cli provides a free, open-source, offline testing environment, it's recommended to create your jobs using a Github repo and test them on your own machine before linking them to a project on OpenFn.

    Setup Steps

    Linking your OpenFn account to your Github account

    1. OpenFn: User Settings: Click the three-button "action menu" (top right corner of the account card) and select "Connect to GitHub".
    2. GitHub: When prompted by GitHub, grant OpenFn read and write access to your/your organizations repositories as needed.
    3. OpenFn: Once redirected to OpenFn you may be asked to re-authenticate depending on the domain you originally used to connect to OpenFn.
    4. OpenFn: Ensure all changes you've made to your account are saved, and verify that you see a bright blue check next to "Github OAuth".

    Linking projects and jobs to Github repos and files

    1. OpenFn: Project -> Version Control: Specify the repository owner, repository name and branch for automatic deploys. You can also select to turn on or off automatic deploys: when on commits to the branch specified will automatically be written to your jobs on OpenFn.
    2. OpenFn: Project -> Jobs -> Job Edit: To link an individual job to a file in a GitHub repo, edit that job and paste in the path to the job from the root of your GitHub repo. If your repo looks like this, you'd type sample_job_1.js or some_folder/some_other_job.js to link your OpenFn job to the select file in your repo.
    info

    Automated GitHub version control is currently only available for enterprise users. Contact enterprise@openfn.org to build a custom plan for your needs.

    Advanced Version Control

    Using this GitHub integration, you can revert to previous versions of a job by selecting that version (by its commit date and SHA) on the job view page. A new commit will be made, updating the job to the state it was in at the time of the old commit.

    - + \ No newline at end of file diff --git a/fr/documentation/manage/troubleshooting-tips-on-platform.html b/fr/documentation/manage/troubleshooting-tips-on-platform.html index cff4a7c8a8c..69d9dedd471 100644 --- a/fr/documentation/manage/troubleshooting-tips-on-platform.html +++ b/fr/documentation/manage/troubleshooting-tips-on-platform.html @@ -22,13 +22,13 @@ - +

    troubleshooting-tips-on-platform


    title: Troubleshooting Platform sidebar_label: Troubleshooting


    info

    Currently, this section is specific to OpenFn/platform.

    Runs

    One of the most helpful pages for troubleshooting on OpenFn platform is the Activity History. This pages provides a list of all of the runs executed in a project and always marks any failed runs red or yellow. Project administrators can troubleshoot errors by clicking into the run to review the run details. Keep reading for all the important parts of a run and how to leverage them during your troubleshooting!

    Exit codes

    Every run will have an exit code. The exit code is a way for OpenFn to classify the run status and can help you troubleshoot errors. Learn more about OpenFn exit codes and what each one means here.

    The time it took for the job to fail

    The run will also record how long it took before the job failed. This information helps users understand if the job is taking longer than it should and is especially helpful with errors that involve timeouts. You can use the run to determine at which operation the job is timing out and determine if the job performance can be optimized.

    Run logs

    As jobs are developed it is important to log details which will make testing and troubleshooting much easier in the future. Keep reading for the two most important parts of a run log!

    Mappings

    The logs should be written so that you can see exactly what was mapped between the source system and the destination system. In cases where data received from the source system is not being posted to the OpenFn inbox (often for security reasons), it can even be helpful to log the data that was received. In summary, the log can have a "Data received from source system" section and a "Data to be uploaded to destination system" section.

    These logs can help admins verify that the source data and the data being uploaded to the destination system is correct. For example, seeing in the logs that that a unique identifier is being mapped to undefined in the destination system can help you understand this Salesforce error message:

    METHOD_NOT_ALLOWED: HTTP Method 'PATCH' not allowed. Allowed are GET,HEAD,POST at HttpApi.getError.

    Error messages

    The run log should also tell us if an error has been thrown, and depending on the destination system, what the error message is. Sometimes the error message is very specific like:

    NOT_FOUND: Provided external ID field does not exist or is not accessible

    This error from Salesforce usually indicates that External ID has not been checked in the field settings in Salesforce.

    Other error messages are not as clear and can take some time to debug:

    TypeError [Error]: Cannot read property 'split' of undefined

    TypeErrors usually indicate that the job received a part of the message that it wasn't expecting, or there is a syntax error in your job code. It means that the job needs to be updated to know how to handle the message. In this case, the job received an old version of the Commcare form which was missing a field which the job called the split function on. You can determine this by reviewing the job for which fields the split function is being called on and checking that they are all present in the message.

    The more you test and troubleshoot with a particular system, the more familiar with it's error messages you become.

    tip

    OpenFn has outlined several of the more common error messages specific to some of the systems that we have integrated in the past. Explore these systems and their error messages here.

    Leveraging search and filtering in OpenFn

    Leverage the various search functionalities in OpenFn to find the right messages and runs to support your troubleshooting. You can search in the Inbox, Activity History, and Search Console.

    1. Inbox - The inbox contains all the messages that have been sent to your project. Search your project inbox for messages that contain a specific body text. You can also filter these messages by date, run status and trigger. You can even use filtering to see all the messages whose last run failed, so you can get to troubleshooting! Learn more about inbox filtering here.

    2. Activity history - As discussed above, the activity history records all runs for the current project. It has similar search and filtering capabilities as the inbox except it doesn't require valid JSON in the search box. Use the search in activity history instead of inbox when you want to search run logs instead of messages.

    3. Search console - The search console will search in both message bodies and run logs for any string is entered!

    Bulk reprocessing

    Sometimes you'll see several messages in the inbox whose last run failed because of the same error. Once you have resolved the error, you can test it by rerunning the transaction for one failed run. If this passes, you can then leverage bulk reprocessing in the OpenFn inbox and activity history to reprocess all messages in the current filtered query. This means OpenFn will rerun all of those transactions in the order they were received. Learn more about bulk reprocessing here.

    Sometimes you'll have so many messages with failed runs that it will be virtually impossible to open each one and inspect the run logs. In this case, you can resolve the errors and bulk reprocess as you go, each time reducing the number of failures in the inbox and generating a short list of the remaining errors.

    Other tips

    • Posting messages to the inbox - You can post messages directly to the OpenFn inbox by clicking the plus icon on the bottom left of the inbox. This feature can come in handy when you have lengthy messages which include several rows of data. You simply copy and paste one row of data from the original message to a new message and post it to the inbox. This allows you to troubleshoot individual rows of data.
    • Editing messages - Messages in the inbox can be edited by clicking the pencil icon in the message. This is a quick way to update and test any mapping fixes with data that is already in the inbox. Once you verify that the run for the updated message passes, you can make the appropriate updates to the source sytem and post the correct data to the inbox moving forward.
    • Organizing error messages - When working with various different jobs and error messages, it is helpful to organize all errors in a spreadsheet which links to the last run, error, and status.

    Sign up for email alerts

    You can turn on notifications to receive email alerts when a job fails. When you receive an error email, you can click “inspect & take action” to be taken to the failed run and being troubleshooting!

    More

    What happens if my survey data from ODK needs to link to existing records in my Salesforce system but a respondent enters or selects an invalid external ID?

    Great question, and don't worry, it happens all the time. Assuming you've already taken all possible measures to either pre-load external IDs in your ODK form or use more human-proof IDs (like barcodes and fingerprints) here's the flow of work:

    1. Read the email, and inspect the reason for failure.

    2. 99% of failed runs on OpenFn are due to value mismatches. The collected id in ODK doesn't match the expected id in Salesforce. You must now chose to either:

      A. Edit the source id in your receipt & retry the attempt.

      B. Edit the related id in your destination system & retry the attempt.

      C. Ignore the attempt—this source data will never reach your destination system. (There have been reports of ODK Aggregate's JSON publisher sending duplicate values. If that happens and your run fails due to "duplicate values" on a particular unique field you can safely ignore the run in OpenFn.)

    Editing data in your destination system can be done through that system's interface. Many tools that act as sources (like ODK) do not allow for easy editing and re-submission of data. You can use OpenFn to edit the source data before retrying the attempt.

    Common Error Messages

    The most common error messages with English explanations are:

    DUPLICATE_VALUE: duplicate value found: ODK_uuid__c duplicates value on record with id: a0524000005wNw0
    The insert is blocked because you are attempting to create a new record with a
    unique field with the same value as an existing record.
    Required value missing
    ExternalId not found
    { INVALID_FIELD_FOR_INSERT_UPDATE: Unable to create/update fields: Contact__c.
    Please check the security settings of this field and verify that it is
    read/write for your profile or permission set. }

    This last one may arise if a master-detail relationship in Salesforce is not set as reparentable and the user attempts to run an upsert.

    - + \ No newline at end of file diff --git a/fr/documentation/microservice/home.html b/fr/documentation/microservice/home.html index 5774f38477e..4f3d2ad4453 100644 --- a/fr/documentation/microservice/home.html +++ b/fr/documentation/microservice/home.html @@ -22,13 +22,13 @@ - +

    Microservice

    Microservice and devtools are being replaced by Lightning

    Please note that OpenFn/microservice and OpenFn/devtools are being deprecated and replaced by OpenFn/Lightning, When lighting is released.

    But

    OpenFn is used by numerous health and humanitarian organizations around the world to scale their programs through real-time interoperability, systems integration, and workflow automation. OpenFn/microservice makes use of OpenFn's open-core technology—namely OpenFn/core, OpenFn/engine, and the various OpenFn adaptors—to create standalone microservices which can be deployed on any hardware.

    This microservice approach helps to ensure that governments and NGOs are never locked-in to OpenFn's SaaS offering, and can port their existing jobs, triggers, and credentials from OpenFn.org to their own infrastructure easily.

    Introduction

    Similar to platform, OpenFn/microservice runs on project.yaml files. This means that when organizations or governments have an open-source license requirement, all their jobs, credentials, and project configurations can be exported from OpenFn's iPaaS and used to create a microservice deployment.

    While this approach doesn't provide the OpenFn platform front-end with its various project management and configuration features, it's perfect for groups with DevOps experience and 100% compatible with the platform. You can even build and test entire projects on platform and then export the project.yaml file to run on your own servers using microservice.

    This microservice approach provides flexibility to governments and NGOs, so they are never locked-in to OpenFn's SaaS platform offering. At any time, an organization can port their existing jobs, triggers, and credentials from OpenFn.org to run with our FOSS integration toolkit, using their own infrastructure.

    Prérequis

    Familiarity with other elements of OpenFn's open source integration toolkit is helpful when considering the microservice approach.

    Docker opérationnel

    Assuming you've got an .env and a sample project at ./sample-project directory with a project.yaml spec:

    docker-compose up

    You can configure either the compose file or the .env, or run the container using docker run:

    docker run -v <path-to-your-project-folder>:/home/microservice/<path-to-your-project-folder> \
    --env-file <path-to-your-env-file> \
    --network host \
    openfn/microservice:v0.3.2

    Guide de développement et de fonctionnement

    • Cloner ce dépôt avec git clone git@github.com:OpenFn/microservice.git
    • Entrez le répertoire avec cd microservice
    • Installez les dépendances avec mix setup
    • Exécutez les tests avec mix test
    • Créez un répertoire de projet pour conserver les artefacts de votre projet mkdir sample-project
    • Créez une nouvelle spécification de projet avec cp project.yaml.example ./sample-project/project.yaml
    • Créez un fichier .env avec cp .env.example .env
    • Installez les adaptateurs nécessaires via npm install @openfn/language-http --prefix priv/openfn/runtime/node_modules --no-save --no-package-lock --global-style
    • Démarrez votre serveur de microservice avec env $(cat .env | grep -v "#" | xargs ) iex -S mix phx.server

    Fonctionnement dans Docker

    • Construire une image de docker avec docker build -t openfn/microservice:v0.3.0 .
    • Exécutez avec docker run command

    Configuration de projet

    You can configure the jobs, triggers, credentials and language packs used in your microservice in the project.yaml config file.

    Première configuration en utilisant l'exemple de configuration

    The sample project configuration file describes an example project setup to help you get acquainted with this structure.

    By default microservice is configured with 4 sample jobs:

    1. job-1 est déclenché lorsqu'un message correspondant arrive à l'inbox (voir trigger-1).
    2. recurring-job est un job programmé pour s'exécuter toutes les minutes et est liée au trigger cron every-minute.
    3. flow-job et catch-job s'exécutent respectivement après success et failure de job-1.

    All of the jobs are configured with the language pack openfn/language-common.

    In the default sample configuration a new message posted to localhost:4000/inbox that matches trigger-1 (i.e. the message contains "number":2) is greeted with an asynchronous acknowledgement receipt (HTTP 202 Data accepted and processing has begun) and will trigger job-1 to run.

    You can try this out with the following snippet:

    curl -X POST -H "Content-Type: application/json" \
    -d '{
    "number":2,
    "surveyId": 37479
    }' \
    http://localhost:4000/inbox

    Posting a message not matching any of the triggers (e.g. “number”:3) equally prompts an acknowledgement but doesn’t trigger any jobs.

    Example message post for this non-match scenario:

    curl -X POST -H "Content-Type: application/json" \
    -d '{
    "number":3,
    "surveyId": 37479
    }' \
    http://localhost:4000/inbox

    HTTP post requests made to localhost:4000/inbox will be processed by the Receiver, according to the credential, expression, and adaptor defined in the project configuration YAML file.

    Time-based jobs will be run by Engine according to the credential, expression, and adaptor defined in your project.yaml file.

    Configuration depuis votre projet de plateforme OpenFn existant

    If you have a project configured on OpenFn, you have two ways for exporting your config on the Project Settings page and running your project in microservice.

    1. Si vous exportez en tant que project.yaml, vous pouvez télécharger vos paramètres au format yaml à partir de la page de téléchargement de votre projet de plateforme ou à partir d'un lien dans l'e-mail généré automatiquement envoyé à votre adresse. Vous pouvez insérer ce fichier dans votre environnement tel que configuré en utilisant le Development Up and Running Guide.

    2. Si vous exportez en tant que microservice.zip, vous obtiendrez votre dossier microservice prêt à fonctionner avec docker, contenant

    • un fichier de configuration docker-compose.yaml
    • un dossier du projet contenant project.yaml
    • Fichier .env avec les variables d'environnement par défaut pour docker
    • un fichier Readme

    cd into the folder and run the project with docker-compose up. If you don't have the docker image, it will be auto-pulled from hub.docker.com.

    Export Microservice Zip

    - + \ No newline at end of file diff --git a/fr/documentation/openfn-roadmap.html b/fr/documentation/openfn-roadmap.html index 8f00ccaa329..057f138d415 100644 --- a/fr/documentation/openfn-roadmap.html +++ b/fr/documentation/openfn-roadmap.html @@ -22,13 +22,13 @@ - +

    OpenFn Roadmap

    OpenFn Roadmap

    This page details the planned roadmaps for the key products in the OpenFn product suite. This includes OpenFn/Lightning, Adaptors, and Docs.

    Key for the Roadmap Status Values

    Status ValueDefinition
    Not startedIssue in the backlog but still in need of being designed and scoped out
    PlannedScoped and ready to be picked up by an engineer
    In devCurrently being worked on by an engineer

    Lightning Roadmap

    OpenFn/Lightning is the fully open-source workflow automation platform at the core of the OpenFn Digital Public Good (learn more about the product here).

    FeatureStatusTarget TimelineRelated LinksDescription
    1. Delete a project (as a project owner or a superuser)DeliveredQ2 '23Github issue 757 & issue 746Project owners can delete a project. This will schedule the project for deletion after the configured time period. Also, superusers can schedule a project for deletion, cancel a project's deletion and delete a project immediately.
    2. Bulk reprocess work orders (from start)DeliveredQ2 '23Issue 659Select and reprocess multiple work orders to rerun them from the start with updated job logic.
    3. Add filter expressions to triggersIn devQ2 '23Issue 778Triggers can take expressions to determine whether to run the job or not. This is similar to 'message filters' in OpenFn platform (v1)
    4. Import and export projects through the command line interface (CLI)In devQ3 '23Issues 641, 249, & 288Import and export a project as code, to save a local version or edit a job in your own code editor.
    5. Handle Oauth authentication flowIn devQ3 '23Issue 646Handle jobs with Oauth credentials by periodically refreshing the token.
    6. Fully decoupled workflow execution manager (RTM/RTM-server)In devQ3 '23Issue 52Handle extremely long-running workflows. Better manage resource consumption and load by scaling “workflow execution workers” independently from the webapp/orchestration layer.
    7. Automatic github version controlPlannedQ3 '23Issues 289 & 250Use Github Version Control to track and review changes to your workflow.
    8. View key project metrics (number of runs, failures, workflows)PlannedQ3 '23Issue 755View the success rate and number of failed work orders for your workflows.
    9. Add authentication to webhook triggersNot startedQ4 '23Issue 245Add option to configure API keys and authentication for HTTP requests sent to OpenFn webhook triggers.
    10. Zero-retention pipelineNot startedQ4 '23Issue 752Feature to ensure OpenFn will persist zero data processed via OpenFn workflows to ensure compliance with data security and residency requirements.
    11. Get notified of run limits via emailNot startedQ4 '23Issues 755 & 556Email alerts to help admins monitor usage.
    12. Set up multi-factor authentication (MFA)PlannedQ4 '23Issue 364Feature to allow admins to enable MFA for OpenFn users.
    13. Disable console.logsNot startedQ4 '23Issue 276Disable console.logs from showing up in the job logs, for data privacy once workflows are handling production data.
    14. Expanded Audit Trail and Node Authentication (ATNA) functionalityPlannedQ4 '23Issues 271Extend audit trail functionality to cover more aspects of ATNA, reference OpenHIE IOL requirement IOLWF-1.
    15. Enhanced user experience for workflow testingNot started2024Issue 311Name and save job inputs (for example as sample data for testing) and allow users to execute jobs with these saved inputs.
    16. Bulk reprocess work orders (from a specific job)Not started2024Issue 833Bulk execute multiple work orders from a specific job to avoid rerunning non idempotent jobs and duplicating resources.

    You can follow Lightning's progress and track delivered features in the Lightning Changelog.

    Adaptors Roadmap

    OpenFn's open-source adaptors can connect any application, including web APIs, databases, and even raw data files, enabling interoperability with any information system (read more). Adaptors, alongside OpenFn's workflow engine, enable automated workflows that cut across digital systems.

    FeatureStatusTarget TimelineRelated LinksDescription
    1. Enhancements to FHIR & OpenHIM adaptorsNot StartedQ3 2023See existing adaptors for FHIR and OpenHIMTo rebuild the existing 2021 OpenFn Instant-OpenHIE reference demo to highlight the exchange of data between existing non-FHIR digital health tools and a HAPI FHIR server. (OpenFn Lightning is OpenHIE-compliant and can be used as a workflow engine for the OpenHIE Interoperability layer - learn more here.) We also want to demonstrate data exchange between existing non-FHIR digital health tools and key components of Google’s Open Health Stack and Cloud Healthcare API
    2. Add "magic" functions to existing, in-demand adaptorsNot startedQ3 2023Issue 243Add functions, dynamic lists, and shortcuts to fast-track workflow configuration for key adaptors including HTTP, DHIS2, CommCare, & OpenMRS
    3. New OpenMRS adaptor versionNot startedQ3 2023See existing adaptor docsTo ensure compliance with OpenMRS v3
    4. Enhancements to the OCL adaptorNot startedQ3 2023See existing adaptor docsTo ensure that mappings stored in OCLs can be more easily access and processed as inputs in OpenFn/Lightning workflows

    Docs Roadmap

    FeatureStatusTarget TimelineRelated LinksDescription
    1. OpenFn and the OpenHIE architecturePlannedQ2 2023See current docsNew page dedicated to how OpenHIE aligns with OpenHIE architecture; expansion of the existing small section on standards
    2. New Lightning User GuidanceNot startedQ3 2023To be hosted on docs.openfn.orgNew documentation, videos, and other user guidance on how to use OpenFn/Lightning and how to migrate existing OpenFn/platform projects to Lightning (the new OpenFn "v2")
    3. Template FHIR WorkflowsPlannedQ3 2023To be hosted on demo.openfn.orgOpenFn can already help achieve FHIR compliance, but we will build and document reference/template workflows to demonstrate how OpenFn/Lightning can automate data exchange, registration, and/or reporting workflows between non-FHIR data systems and FHIR APIs.
    4. Template Alerting WorkflowsNot startedQ4 2023See OpenHIE docs; to be hosted on demo.openfn.orgTo demonstrate how OpenFn can facilitate one-way communication to a client or provider listed in the HIE (from the OpenHIE standard spec)
    5. Template Shared Health Record WorkflowsNot startedQ4 2023See OpenHIE docs; to be hosted on demo.openfn.orgTo demonstrate how OpenFn can allow external systems to automatically save and retrieve information from the HIE (from the OpenHIE standard spec)
    6. Template Aggregate Reporting WorkflowsNot started2024See OpenHIE docs; to be hosted on demo.openfn.orgTo demonstrate how OpenFn can support aggregate data exchange of health indicators, leveraging the ADX data standard

    Questions? Feedback? Ideas?

    Post on the OpenFn Community at community.openfn.org, or consider contributing to the OpenFn software, adaptors, or documentation (learn more in the Contributing section).

    - + \ No newline at end of file diff --git a/fr/documentation/portability-versions.html b/fr/documentation/portability-versions.html index cb8889677c0..680da30b284 100644 --- a/fr/documentation/portability-versions.html +++ b/fr/documentation/portability-versions.html @@ -22,13 +22,13 @@ - +

    Versions de la proposition de portabilité

    OpenFn conçoit actuellement un schéma de configuration de projet portable qui peut être utilisé pour importer ou exporter des projets entre OpenFn / plateforme et OpenFn / engine.

    Proposal v4

    The portability specification v4 defines how entire projects (groups of workflows with their associated triggers, credentials and jobs) can be represented as code. This specification has been written for Lightning, the fully open source webb app which extends the OpenFn DPG. It aims to (a) improve developer experience, allowing them to build and test workflows locally; (b) enable version control and an audit trail of project changes; and (c) enable users to port existing workflows from the OpenFn platform to Lightning.

    This new specification has been designed and documented thanks to support from a Digital Square Global Goods grant.

    The project.zip structure and files:

    /globals
    sample-clinic-map.json
    sample-translations.json
    /workflow-a
    job-1.js
    job-2.js
    job-3.js
    /workflow-b
    job-4.js
    project.yaml
    project.state.yaml

    The project.yaml:

    name: "My Project" # The project name

    globals: # All global constants accessible to this project
    clinic-map: file://./globals/clinic-map.json
    project-expense-codes: file://./globals/project-expense-codes.json
    service-codes:
    body:
    m126: Medical Referral
    g01: General Checkup
    ps: Psycho-social Support

    workflows: # All workflows in a project
    CommCare-to-OpenMRS: #The workflow name. Workflow names won't have spaces
    jobs: # All jobs/steps in a workflow
    Coerce-to-FHIR: # The job/step name
    trigger: webhook #webhook urls are uids so are not included
    adaptor: language-fhir
    enabled: true
    credential: my-fihr-credential #looks up credential in state by its name
    # when running locally, the credentials values are taken from the overrides file
    # cli run workflow "CommCare-to-OpenMRS" --overrides ./keys-and-values.yaml
    body: "file://./CommCare-to-OpenMRS/Coerce-to-FHIR.js" # each job job-body is stored in a separate file, within a folder for the whole workflow

    Load-to-openmrs:
    trigger:
    on-success: Coerce-to-FHIR
    adaptor: language-openmrs
    credential: my-other-credential
    enabled: true
    body:
    # no "include", but pathlike doesn't work: if you're doing a uri you need to be explicit about it
    # default to local fs -- no numbering because too complicated if users change the order
    "file://./CommCare-to-OpenMRS/Load-to-openmrs.js"

    Send-Wrap-Up-Reports:
    trigger:
    on-success: Load-to-openmrs
    enabled: true
    adaptor: language-mailgun
    globals:
    - service-codes
    - clinic-map
    body: >
    # this triggers a new workflow
    fn(state => state)
    sendEmail(state => state.emailContent)

    Kobo-to-DHIS2: #This is a second workflow
    Fetch-Kobo-Submissions:
    trigger:
    cron: * 5 * * *
    enabled: true
    adaptor: language-kobotoolbox
    body: "file://./Kobo-to-DHIS2/Fetch-Kobo-Submissions.js"

    Upload-to-DHIS2:
    trigger:
    on-success: Fetch-Kobo-Submissions
    adaptor: language-kobotoolbox
    enabled: false
    body: "file://./Kobo-to-DHIS2/Upload-to-DHIS2.js"

    The project.state.yaml:

    project:
    - id: '45bffee'
    key: 'My Project'

    globals:
    - id: 'sj23n36'
    key: 'clinic-map'
    - id: 'bss522g'
    key: 'project-expense-codes'
    - id: '22aa4st'
    key: 'service-codes'

    workflows:
    - id: 'cfd7c68'
    key: 'CommCare-to-OpenMRS' # this is the NAME and the KEY
    - id: 'd1ecc4f'
    key: 'Kobo-to-DHIS2'

    jobs:
    - id: 'ns6yw54'
    key: 'Coerce-to-FHIR'
    - id: '12bs52j'
    key: 'Load-to-openmrs'
    - id: 'lk81hs6'
    key: 'Send-Wrap-Up-Reports'

    - id: 'sn26sh2'
    key: 'Fetch-Kobo-Submissions'
    - id: 'sk1722h'
    key: 'Upload-to-DHIS2'

    credentials:
    - id: '12ms62y'
    key: 'My FHIR Credential'

    Proposal v3

    v3 introduces URI schemes file://, https://, gcs://

    jobs:
    job-1:
    expression: 'file://my-job.js' # URIs may be used (e.g., https://raw.githubusercontent.com/org/repo/my-job.js)
    adaptor: '@openfn/language-common'
    trigger: trigger-1
    credential: my-secret-credential
    recurring-job:
    expression: >
    fn(state => {
    console.log("Hi there!")
    return state;
    })
    adaptor: '@openfn/language-common'
    trigger: every-minute
    flow-job:
    expression: >
    fn(state => {
    state.data.number = state.data.number * 3
    return state;
    })
    adaptor: '@openfn/language-common'
    trigger: after-j1
    catch-job:
    expression: >
    fn(state => {
    state.message = "handled it."
    return state;
    })
    adaptor: '@openfn/language-common'
    trigger: j1-fails

    triggers:
    trigger-1:
    criteria: '{"number":2}'
    every-minute:
    cron: '* * * * *'
    after-j1:
    success: job-1
    j1-fails:
    failure: job-1

    credentials:
    my-secret-credential:
    username: '******' # Credential keys get exported, but values must be manually reentered
    password: '******'
    my-other-credential: 'file://gcp_credential.json' # And URIs may be specified directly for the credential body

    Proposal v2

    jobs:
    job-1:
    expression: >
    registerPatient({
    patient-id: state.data.id,
    dob: state.data.birth
    })
    adaptor: '@openfn/language-openmrs'
    trigger: trigger-1
    credential: my-secret-credential
    recurring-job:
    expression: >
    fn(state => {
    console.log("Hi there!")
    return state;
    })
    adaptor: '@openfn/language-common'
    trigger: every-minute
    flow-job:
    expression: >
    fn(state => {
    state.data.number = state.data.number * 3
    return state;
    })
    adaptor: '@openfn/language-common'
    trigger: after-j1
    catch-job:
    expression: >
    fn(state => {
    state.message = "handled it."
    return state;
    })
    adaptor: '@openfn/language-common'
    trigger: j1-fails

    triggers:
    trigger-1:
    criteria: '{"number":2}'
    every-minute:
    cron: '* * * * *'
    after-j1:
    success: job-1
    j1-fails:
    failure: job-1

    # Note that credential keys get copied, but values must be manually entered
    # after the export is completed.
    credentials:
    my-secret-credential:
    username: '******'
    password: '******'

    Proposal v1

    const project = {
    async: true,
    triggers: {
    uniqueTriggerId: {
    // trigger properties
    },
    otherTrigger: {
    // other trigger properties
    },
    },
    credentials: {
    // for now, credentials will not be synced //
    // secret1: {
    // username: 'mamadou',
    // pass: 'shhh',
    },
    staticData: {
    // static objects that can be accessed from any job
    },
    jobs: {
    payHealthWorker: { trigger: 'otherTrigger' },
    syncToSalesforce: {
    expression: 'uri://github.com/jobs/expresion.js',
    trigger: 'uniqueTriggerId',
    credential: 'secret1',
    },
    },
    };
    - + \ No newline at end of file diff --git a/fr/documentation/portability.html b/fr/documentation/portability.html index 0d2dc02b253..5bd9188674a 100644 --- a/fr/documentation/portability.html +++ b/fr/documentation/portability.html @@ -22,13 +22,13 @@ - +

    Portabilité

    Intentions

    The portability specification allows for the representations of entire workflow projects "as code", lets user move between various deployment pathways (cloud, local, DIY, etc.) and proposes a globally-applicable way of specifying workflow automation and systems integration that might be applied across workflow-engines/integration platforms across the sector. Nothing about the spec must be specific to OpenFn or any one of our individual products. We envision a future in which software built with Lightning, the OpenFn Integration Toolkit, and entirely new and different integration/workflow tools can adopt this specification.

    If you're interested in contributing to the specification, reach out to OpenFn via the community forum, write to us, or suggest changes by submitting a pull request here.

    "Projects as code"

    The portability specification v4 defines how entire projects (groups of workflows with their associated triggers, edges, credentials and jobs) can be represented as code. It improves the OpenFn developer experience, allowing workflows to be built and tested locally; (b) enables project version control and an audit trail of project changes; and (c) allows users to port existing workflows from OpenFn v1 to v2, as well as between instances or deployments of Lightning.

    The project "spec"

    The project specification (or "spec") is often saved as a project.yaml file.

    name: openhie-project
    description: Some sample
    # credentials:
    # globals:
    workflows:
    OpenHIE-Workflow:
    name: OpenHIE Workflow
    jobs:
    FHIR-standard-Data-with-change:
    name: FHIR-standard-Data-with-change
    adaptor: '@openfn/language-http@latest'
    enabled: true
    # credential:
    # globals:
    body: |
    fn(state => {
    console.log("hello github integration")
    return state
    });

    Send-to-OpenHIM-to-route-to-SHR:
    name: Send-to-OpenHIM-to-route-to-SHR
    adaptor: '@openfn/language-http@latest'
    enabled: true
    # credential:
    # globals:
    body: |
    fn(state => state);

    Notify-CHW-upload-successful:
    name: Notify-CHW-upload-successful
    adaptor: '@openfn/language-http@latest'
    enabled: true
    # credential:
    # globals:
    body: |
    fn(state => state);

    Notify-CHW-upload-failed:
    name: Notify-CHW-upload-failed
    adaptor: '@openfn/language-http@latest'
    enabled: true
    # credential:
    # globals:
    body: |
    fn(state => state);

    triggers:
    webhook:
    type: webhook
    edges:
    webhook->FHIR-standard-Data-with-change:
    source_trigger: webhook
    target_job: FHIR-standard-Data-with-change
    condition: always
    FHIR-standard-Data-with-change->Send-to-OpenHIM-to-route-to-SHR:
    source_job: FHIR-standard-Data-with-change
    target_job: Send-to-OpenHIM-to-route-to-SHR
    condition: on_job_success
    Send-to-OpenHIM-to-route-to-SHR->Notify-CHW-upload-successful:
    source_job: Send-to-OpenHIM-to-route-to-SHR
    target_job: Notify-CHW-upload-successful
    condition: on_job_success
    Send-to-OpenHIM-to-route-to-SHR->Notify-CHW-upload-failed:
    source_job: Send-to-OpenHIM-to-route-to-SHR
    target_job: Notify-CHW-upload-failed
    condition: on_job_failure

    The project "state"

    The project state is a representation of a particular project as on a specific Lightning instance. It is often saved as projectState.json and contains UUIDs for resources on a particular Lightning deployment.

    {
    "workflows": {
    "OpenHIE-Workflow": {
    "id": "27ae2937-0959-48b8-a597-b1646aae8c14",
    "name": "OpenHIE Workflow",
    "jobs": {
    "Transform-data-to-FHIR-standard": {
    "id": "e44f65bb-5038-4e17-8d93-b63cbe95254a",
    "delete": true
    },
    "Send-to-OpenHIM-to-route-to-SHR": {
    "id": "977b87ff-f347-42b5-832f-6ae2ca726f32",
    "name": "Send-to-OpenHIM-to-route-to-SHR",
    "adaptor": "@openfn/language-http@latest",
    "body": "fn(state => state);\n",
    "enabled": true
    },
    "Notify-CHW-upload-successful": {
    "id": "86b743a3-fd00-4629-b9fb-d5f38fb56d0b",
    "name": "Notify-CHW-upload-successful",
    "adaptor": "@openfn/language-http@latest",
    "body": "fn(state => state);\n",
    "enabled": true
    },
    "Notify-CHW-upload-failed": {
    "id": "be85df30-0abd-4f8e-be17-501f67e18b8d",
    "name": "Notify-CHW-upload-failed",
    "adaptor": "@openfn/language-http@latest",
    "body": "fn(state => state);\n",
    "enabled": true
    },
    "FHIR-standard-Data": {
    "id": "55016dda-42e3-4ee1-8a9c-24e3f23d42f1",
    "delete": true
    },
    "FHIR-standard-Data-with-change": {
    "id": "28dd0846-a6ae-40c0-8ab4-3e0a6b487afe",
    "name": "FHIR-standard-Data-with-change",
    "adaptor": "@openfn/language-http@latest",
    "body": "fn(state => state);\n",
    "enabled": true
    }
    },
    "triggers": {
    "webhook": {
    "id": "530cde0b-0de4-4f68-8834-0a4356a2fe53",
    "type": "webhook"
    }
    },
    "edges": {
    "webhook->Transform-data-to-FHIR-standard": {
    "id": "b2c7407b-0ae9-4ca5-9d6b-ee624976fa54",
    "delete": true
    },
    "Transform-data-to-FHIR-standard->Send-to-OpenHIM-to-route-to-SHR": {
    "id": "d22ed6f4-26a2-4c85-b261-cc110a6851e6",
    "delete": true
    },
    "Send-to-OpenHIM-to-route-to-SHR->Notify-CHW-upload-successful": {
    "id": "26c12f7f-7806-4008-87cd-6747998f95f4",
    "condition": "on_job_success",
    "source_job_id": "977b87ff-f347-42b5-832f-6ae2ca726f32",
    "source_trigger_id": null,
    "target_job_id": "86b743a3-fd00-4629-b9fb-d5f38fb56d0b"
    },
    "Send-to-OpenHIM-to-route-to-SHR->Notify-CHW-upload-failed": {
    "id": "0630ac96-4f67-4de7-8c3d-0bf3f89f80d9",
    "condition": "on_job_failure",
    "source_job_id": "977b87ff-f347-42b5-832f-6ae2ca726f32",
    "source_trigger_id": null,
    "target_job_id": "be85df30-0abd-4f8e-be17-501f67e18b8d"
    },
    "webhook->FHIR-standard-Data": {
    "id": "5ce3a8ed-b9eb-464a-a2cd-ba55adc393c2",
    "delete": true
    },
    "FHIR-standard-Data->Send-to-OpenHIM-to-route-to-SHR": {
    "id": "5f459cd9-2882-4a61-a2cc-ec45e58d4837",
    "delete": true
    },
    "webhook->FHIR-standard-Data-with-change": {
    "id": "75e7f7d8-274b-410d-9600-730bbd535229",
    "condition": "always",
    "source_job_id": null,
    "source_trigger_id": "530cde0b-0de4-4f68-8834-0a4356a2fe53",
    "target_job_id": "28dd0846-a6ae-40c0-8ab4-3e0a6b487afe"
    },
    "FHIR-standard-Data-with-change->Send-to-OpenHIM-to-route-to-SHR": {
    "id": "1e5ba385-2c49-4241-8cd2-042c99a810ec",
    "condition": "on_job_success",
    "source_job_id": "28dd0846-a6ae-40c0-8ab4-3e0a6b487afe",
    "source_trigger_id": null,
    "target_job_id": "977b87ff-f347-42b5-832f-6ae2ca726f32"
    }
    }
    }
    },
    "id": "8deff39d-8189-4bd7-9dc7-f9f08e7f2c60",
    "name": "openhie-project"
    }

    Using the CLI to deploy or describe projects projects as code

    The project spec and project state can be used for a variety of reasons, e.g. one could generate the state and spec as backups of the project or one could generate these files and use them for auditing and record keeping, etc. The OpenFn CLI comes with commands that can be used to pull project configurations down from a running Lightning server, and to deploy or push updates to existing projects on a Lightning server.

    Don't have the CLI yet?

    Install it by running npm install -g @openfn/cli

    Before using the CLI, configure it either by passing in environment variables:

    OPENFN_ENDPOINT=https://app.openfn.org
    OPENFN_API_KEY=yourSecretApiToken

    Or through a config.json file:

    {
    // Required, can be overridden or set with `OPENFN_API_KEY` env var
    "apiKey": "***",

    // Optional: can be set using the -p, defaults to project.yaml
    "specPath": "project.yaml",

    // Optional: can be set using -s, defaults to .state.json
    "statePath": ".state.json",

    // Optional: defaults to OpenFn.org's API, can be overridden or set with
    // `OPENFN_ENDPOINT` env var
    "endpoint": "https://app.openfn.org"
    }

    More details on the CLI can be found here.

    openfn pull to generate a project spec and state

    To generate the spec and state files for an existing project, use:

    openfn pull {YOUR-PROJECT-UUID} -c ./config.json

    This command will save (or overwrite) a project spec and state file based on the path you've set in your configuration.

    openfn deploy to create a project on a Lightning instance

    To deploy a new project to a Lightning instance from a project spec (without a project state) file use:

    openfn deploy -c config.json

    openfn deploy to update an existing project

    With a valid project state defined in your config.json, the same openfn deploy command will beam up your changes as described by a difference between your project spec and what's found on the server.

    openfn deploy -c config.json
    Checking https://demo.openfn.org/api/provision/4adf2644-ed4e-4f97-a24c-ab35b3cb1efa for existing project.
    Project found.
    [CLI] ♦ Changes:
    {
    workflows: [
    {
    jobs: [
    {
    - body: "fn(state => {\n console.log(\"ok\")\n return state\n});"
    + body: "fn(state => {\n console.log(\"some changes here!\")\n return state\n});\n"
    }
    ...
    ...
    ...
    ]
    }
    ]
    }

    ? Deploy? yes
    [CLI] ♦ Deployed.

    Automated Version Control with Github and Lightning

    Representations of projects as code and pull/deploy functionality allows you to check your whole project into a version control system such as Github.

    Lightning comes with a Github App that enables user to sync projects from an instance to Github using the openfn pull command and to do the vice versa using openfn deploy.

    To set up version control:

    1. Create a project repo connection to a github repository in Project Settings -> Sync to Github.
    2. Follow the instructions to install the Lightning Github app in your desired repository.
    3. Once you have created a a connection, set up pull and deploy workflows that use openfn github actions below.
    4. Add OPENFN_API_KEY and OPENFN_PROJECT_ID repository secrets to your Github repo as described below.
    5. Add a .config.json file to your repository which specifies your endpoint and paths to project spec and state files.
    6. Click the sync to Github button to initiate a sync from Lightning to GitHub.
    7. Push a change to your selected branch to push changes from Github to Lightning.

    Github Repository Secrets

    The workflows that interact with the OpenFn actions will need the repository set up with two secrets used in the github actions:

    • OPENFN_API_KEY: This is your API Key as generated from Lightning and will be needed for authentication
    • OPENFN_PROJECT_ID: This is your Project ID from Lightning this will be used to pull from the lightning instance

    Github Repository Structure

    Here you can do pretty much what you want, so long as you've got a config.json pointing to your project spec, state, and Lightning endpoint.

    Example Deploy Workflow for GitHub

    See https://docs.github.com/en/actions/quickstart#creating-your-first-workflow for more help here.

    on:
    push:
    branches:
    - main

    jobs:
    deploy-to-lightning:
    runs-on: ubuntu-latest
    name: A job to deploy to Lightning
    steps:
    - name: openfn deploy
    uses: OpenFn/cli-deploy-action@v0.1.11
    with:
    secret_input: ${{ secrets.OPENFN_API_KEY }}

    Example Pull Workflow for GitHub

    See https://docs.github.com/en/actions/quickstart#creating-your-first-workflow for more help here.

    on: [repository_dispatch]

    jobs:
    pull-from-lightning:
    runs-on: ubuntu-latest
    permissions:
    contents: write
    name: A job to pull changes from Lightning
    steps:
    - name: openfn pull and commit
    uses: OpenFn/cli-pull-action@v0.7.0
    with:
    secret_input: ${{ secrets.OPENFN_API_KEY }}
    project_id_input: ${{ secrets.OPENFN_PROJECT_ID }}
    commit_message_input:
    'user ${{ github.event.client_payload.message }}'

    The Lightning demo instance is currently connected to this repo. Feel free to play around with it.

    Using version control

    Lightning to GitHub

    Once you have configured version control for a project and a related repository branch, you can sync changes to GitHub by pressing the "Initiate Sync" button on the version control page and the Lightning GitHub app will run a openfn pull action to update the versioned representation of your project as code.

    Github to Lightning

    Assuming you've configured a deploy action, any time there are changes made to that branch in your GitHub repo, those changes will be pushed to your Lightning project via openfn deploy.

    Getting Help with the cli

    The cli package comes with an inbuilt help. Adding --help to a command such as openfn deploy --help will result in a help message describing the command and the options available when using this command. See an example below

    openfn deploy --help
    openfn deploy

    Deploy a project's config to a remote Lightning instance

    Options:
    --version Show version number [boolean]
    --help Show help [boolean]
    -c, --config, --config-path The location of your config file [default: "./.config.json"]
    --no-confirm Skip confirmation prompts (e.g. 'Are you sure?') [boolean]
    --describe Downloads the project yaml from the specified instance [boolean]
    -l, --log Set the log level [string]
    --log-json Output all logs as JSON objects [boolean]
    -p, --project-path The location of your project.yaml file [string]
    -s, --state-path Path to the state file

    Autres versions

    - + \ No newline at end of file diff --git a/fr/documentation/release-notes.html b/fr/documentation/release-notes.html index eead43bf6e5..820562a3380 100644 --- a/fr/documentation/release-notes.html +++ b/fr/documentation/release-notes.html @@ -22,13 +22,13 @@ - +

    Informations sur cette publication

    Notes de publication pour OpenFn/plaform

    Version 1.94.87 (2021-07-05)

    Nouvelles fonctionnalités :

    • Full text search with Search Console: Users can now search across message bodies, message headers, and run logs via full-text string search.

    Version v1.94.80 (2021-05-25)

    Nouvelles fonctionnalités :

    • Enhanced date selection for inbox and activity history: Users can now type a date string YYYY-MM-DD HH:mm:ss, directly into the date field as a filter, or select it as before from the date picker.
    • Inbox and Activity History speed enhancements: Via database structure changes, the speed for loading lists of messages and runs has been improved significantly.
    • New Export and Reprocess Interfaces: A unified "what-you-see-is-what-you-get" interface has been implemented for exporting and reprocessing messages and runs. Now, the bulk query is taken from the current filters and a confirmation dialog which displays the query is presented to the user. This allows users to have a strong understand of what will be exported or reprocessed before executing the bulk request.

    Version 1.92.44 (2021-05-07)

    Nouvelles fonctionnalités :

    • Exclusion filters: Users can now specify message filter triggers to exclude messages matching a certain signature via the same matching rules as the standard inclusion filter. Read more in the docs

    Version 1.90.30 (2021-03-31)

    New features:

    • Streaming logs: Users can now view individual logs lines as they are emitted by their NodeVM during the execution of a run.
    • Click to find paths: Users can now click on a node in a sample message in the job studio to copy the path to that node. It can then be pasted into the expression.
    • Run directly from job studio: While writing a job in the job studio, it's now possible to start a run for that job given the sample message and the logs will automatically be streamed back to the Job Studio.

    Version 1.89.29 (2021-03-24)

    New features:

    • Sample message explorer: When writing a job, users can view a selection of matching messages which would cause the job to run. Now, that sample state.json view is more easily browseable as a tree, and by clicking individual nodes in the tree users can determine the require path to accessing source data. For example, clicking on a node at state.data.patient.lastVisitDate will copy dataValue('patient.lastVisitDate') to your clipboard for pasting into the job expression in the adjacent panel.

    Bug Fixes:

    • Addressed an issue with the archive service which resulted in incomplete archiving of expired data. This impacted users with 365 day retention plans and Google Cloud Storage .zip archiving for data past its platform expiry. Data stored on the platform itself was unaffected but automatic archives for data that expired from August 1st, 2019 to March 31st, 2020 only contains a subset of the messages and runs from that period.

    Version 1.89.0 (2021-03-15)

    Nouvelles fonctionnalités :

    • Export as yaml or microservice.zip: Users can now export their project configurations (triggers, jobs, credentials) as a .yaml file which can be run with OpenFn/microservice or as a .zip file with a prepared microservice implementation which can be extracted and started with docker-compose up.

    Version 1.88.0 (2021-02-22)

    Nouvelles fonctionnalités :

    • Typeahead snippets: When writing jobs on OpenFn.org, users are now prompted with a typeahead (or "autocomplete") dialog which shows them all available helper functions and provides rich templates which can be accessed at a keystroke. The result is a simpler, more intuitive job writing experience that is more tightly coupled to the adaptors themselves.
    • Better IDE mode: When editing a job, users are now provided with either a step-by-step "wizard" mode or a full-screen integrated development environment (IDE) which gives them a flexible workspace for viewing sample receipts, drafting jobs, and exploring documentation.
    • Direct links to source code: In the documentation drawer, users now find direct links to the source code for each version of the adaptor they're using so that they don't need to take extra steps once on GitHub.
    • Save and share searches and filters: On the Inbox and Activity History pages the current filter (e.g., "Only show messages from the last 7 days matching trigger X with associated job runs in a failed state") is now stored in the URL, allowing users to bookmark particular searches and share those searches/filters with colleagues.

    Version 1.87.8 (2021-01-28)

    Nouvelles fonctionnalités :

    • Improved logging on timeouts: We've enhanced job timeouts significantly, splitting into two separate types of timeouts. Exit code 2 is a standard timeout which allows us to display the full Javascript logs up to the moment of the timeout instead of a mysterious "we timed out your run" message. Exit code 4 will be used for when the NodeVM fails to time itself out and becomes unresponsive. This second case is extremely rare.

    Version 1.75.0 (2020-07-14)

    Nouvelles fonctionnalités :

    • Scheduled jobs replace timer jobs: In the past "interval trigger." behaved like sand timers, executing your jobs every x seconds. This functionality has been completely overhauled, giving users much greater control over when jobs get executed by introducing cron expressions. Learn about cron via the OpenFn UI, or atcrontab.guru.

    Version 1.72.17 (2020-06-21)

    Nouvelles fonctionnalités :

    • Credential sharing: Users can now share credentials across multiple projects and transfer credential ownership to other users.
    • Enhanced credential security: Project owners can now disable console for particular jobs in their projects. This can be used to stop unintentional or malicious printing of credential data to the logs.
    • Test mode for HTTP jobs: Users can turn on "test mode" for jobs, which will intercept all outbound HTTP requests, print the request parameters to the log, and provide a 200 OK response. This can be used to test integrations for systems that are still in development.
    • Enhanced debugging/open-source integration: Now using a new version of OpenFn/core which displays the current langauge-package version and Node JS version for better debugging and a tighter integration between our offline/open-source tools and the platform.
    • Enhanced monitoring: Queue size monitor allows users to see approximately how many runs are in their queue—this is useful for estimating time to completing for big bulk reprocessing jobs.

    Version 1.37.0 (2019-10-21)

    New features:

    • Submit ODK Collect forms (or any OpenRosa compliant form) directly to an OpenFn inbox, rather than to ODK Aggregate or some other server before forwarding.

    Version 1.36.0 (2019-10-01)

    New features:

    • Allow messages to be deleted (in accordance with plan retention periods) despite having more recent runs related to them. We set the message to "null" for these younger runs, but the run logs will still be available until they're past the retention period. This allows sensitive data in the initial message payload to be purged with the retention period, while less sensitive data in the run logs is still kept.
    • Added more specific exit codes to runs for non-standard exits. Note that exit codes above 2 are very rare. See below for new codes from v1.36.0 onwards.

    Enhanced Error Codes:

    • 0: success (run succeeded, e.g. a destination system responded with a 200)
    • 1: error (run failed normally, e.g. a destination system responded with a 4XX, 5XX, or some specialized RequiredFieldMissing error.)
    • 2: run timed out (runs >100s only supported in enterprise plans)
    • 3: run could not start due to error (could relate to network traffic, but very rare as an error before the run is started will be retried from Redis with an exponential backoff for a very long time)
    • 5: unexpected error during job execution
    • 10: error in core/cli.js execute

    Version 1.35.0 (2019-10-01)

    Nouvelles fonctionnalités :

    • Default navigation drawer to open and grouped nav items for easier access
    • Various UI bug-fixes
    • Added new indexes on messages and runs for faster search and filter performance.
    • Enhanced bulk-retry feature for runs
    • Enhanced bulk-reprocess feature for messages
    • Added user-warning when connecting a job to a GitHub filepath: the contents at that filepath will overwrite your current OpenFn job on the next GitHub commit
    • Added historical project usage view
    • Added activity cleaning, as per www.openfn.org/pricing#plans to better comply with data protection regulations and improve UI performance

    Version 1.22.0 (2019-03-10)

    Nouvelles fonctionnalités :

    • Allow filtering by run status (any, success, failed) for bulk retrying runs in the Run Retry modal.
    • Hovering over a message/run displays the full date-time at which it was received/started as well as the relative time (i.e., how long ago) of that action.

    Version 1.21.0 (2019-03-09)

    New features:

    • Added buttons to the Job, Run, and Activity History pages that allow a user to run a time triggered job on demand so that they don't have to wait for the timer to expire to test.

    Version 1.20.0 (2019-03-07)

    New features:

    • We've been busy, but negligent on release notes. To explain all that's changed we've broken the new features list into multiple sections.

    Messages & the "Inbox" view:

    • Filter messages by body text. (Be patient, doing tsvector searching across millions of payloads.)
    • Filter by date. (Default inbox view shows last 30 days.)
    • Export messages as a CSV, based on your currently applied filters.
    • Bulk reprocess messages in a series.
    • All projects on paid plans now have their own job running queues.
    • Partial loading to address inbox view performance issues: messages are loaded first on the inbox view, and then their related "run states" are calculated and loaded in a second action.

    Runs & the "Activity History" view:

    • Filter runs by log text. (This is a full text search and may take some time.)
    • Filter by date. (Default activity history view shows last 30 days.)
    • Bulk retry runs in a series. (With the ability to limit retries to a certain job.)
    • Export runs as a CSV, based on your currently applied filters.

    Authentication & Security:

    • Require basic auth or token auth to make HTTP requests to a project inbox.

    Project Settings:

    • View the "inbox URL" as text with a click-to-reveal button.
    • Show "pace" of estimated usage to determine when a plan upgrade will be necessary.

    Jobs:

    • Ability to create a job, and a trigger all from the same "Wizard" view.

    Triggers:

    • Ability to create "success" and "failure" triggers so that jobs can be run based on the success or failure of another job run.

    Version 1.10.0 (2017-05-04)

    Nouvelles fonctionnalités :

    • GitHub integration now generally available for enterprise users. Self-setup interface completed.

    Version 1.9.0 (2017-03-07)

    Nouvelles fonctionnalités :

    • View matching messages in the job writing interface when a message filter trigger is selected.
    • "Tree view" exposed for job expression viewing. With valid syntax, you're able to see your expression as a syntax tree as we step slowly towards a more point-and-click interface.

    Version 1.75.0 (2016-12-08)

    Nouvelles fonctionnalités :

    • Hold control while clicking on navigation buttons to open the target in a new window.
    • Filter messages in your inbox by their content by selecting a message-filter trigger.

    Version 1.7.0 (2016-12-05)

    1.7 est une question d’expérience utilisateur !

    New features:

    • Material design—more whitespace and cleaner lines.
    • Goto page on inbox and activity tables—save time when processing errors.
    • Change number of items per page on inbox and activity table—care with this one on slow connections!
    • Go to next or previous message or run—makes working through an audit trail easier
    • Change user profile settings without changing password
    • Select syntax style for code editors in user settings—clouds midnight is my new favorite
    • Filter projects, jobs, triggers by name—on the fly for quick navigation
    • Add adaptor logos to credentials list—quick identification
    • Specify connection types on "Apps" list—seems there was some confusion about this. I know we're missing plenty of apps that have good APIs. Will consider logging API documentation as well.
    • Shift second top-nav to a collapseable "side nav"—better use of screen real-esate.
    • Use 'masonry' packing module for jobs, triggers, credentials, and project settings boxes—more efficient use of space
    • Add material design to this documentation page!

    Version 1.6.0 (2016-11-24)

    New features:

    • Updated payment receipts to include project names.
    • Added update(...) to Salesforce adaptor v0.3.0
    • Added fetchWithErrors to HTTP adaptor v0.3.1

    New Salesforce helper function update(...): It takes an object and, so long as you're using the "Id" only updates.

    update("Patient__c", fields(
    field("Id", dataValue("pathToSalesforceId"),
    field("Name__c", dataValue("patient.first_name")),
    field(...)
    ))

    New http helper function fetchWithErrors(...): This function will perform a get request on an endpoint and return the response to another endpoint, regardless of whether the first GET suceeded or failed. It's currently being used to send message receipt confirmations back to a system of origin that uses OpenFn as an intermediary between it and an SMS gateway. If the SMS message doesn't get delivered because the phone number is invalid, we'd like that information the return all the way to Salesforce, rather than erroring out and staying in OpenFn.

    // =============
    // Nous utilisons "fetchWithErrors(...)" de sorte que lorsque la passerelle SMS
    // retourne une erreur, l'exécution n' "échoue" pas.
    // Il "réussit" et délivre ensuite ce message d'erreur
    // à Salesforce avec la tâche "Mettre à jour le statut SMS".
    // =============
    fetchWithErrors({
    getEndpoint : 'send_to_contact',
    requête : fonction (state) {
    return {
    msisdn:
    état. ata.Envelope.Body.notifications.Notification.sObject
    . MS__Phone_Number__c,
    message : état
    . ata.Envelope.Body.notifications.Notification.sObject
    . MS__Message__c,
    api_key: 'some-secret-key',
    };
    },
    externalId: state. ata.Envelope.Body.notifications.Notification.sObject.Id,
    postUrl: 'https://www.openfn.org/inbox/another-secret-key',
    });

    Version 1.5.0 (2016-10-05)

    New features:

    • Delete credentials
    • Delete triggers
    • Archive jobs
    • Continual testing from status.openfn.org

    Delete credentials and triggers: Users can now delete credentials and triggers.

    Archive jobs: Users can now archive jobs, rendering them inactive. Click "view archived jobs" to see and restore old jobs.

    status.openfn.org: is now live, providing continual testing of key OpenFn services. We run both message-filter-based and timer-trigger-based jobs every five minutes to ensure availability, as well as measuring the round-trip time (in ms) that it takes for a server in a different geographical location to send valid JSON to OpenFn then receive and process the 200 response. (This time will vary according to the location of your servers, but it's important to note that we test the full round trip. Our servers typically send out 200s in about 5-6ms, but you can expect the round trip to complete in closer to 750ms.)

    Version 1.4.0 (2016-09-26)

    New features:

    • Run "matches" directly from your inbox view.
    • Always display the latest notification, dismiss to scroll back in time.
    • Login and signup server responses

    Run "matches" from inbox: Users can now run matches in a single click from their inbox, getting notifications that runs have successfully started without having to navigate to the Message Inspector page for a given message. Look for the blue "play" button next to each match. Simply click to start running that job with the message in question.

    Latest notifications: User notifications will now be displayed newest-on-top and when there are multiple stacked notifications users will be... well... notified. Click the small "x" to dismiss the latest notification, moving backwards in time until all have been read.

    Login/signup errors: Until now, invalid login messages and duplicate singup emails had been only displayed in your brower's logs. (That's our fault.) You'll now see a handy "invalid credentials" or "email already registered" message when trying to log in or sign up.

    Version 1.3.0 (2016-09-20)

    • New version of language-salesforce allows users to alterState with a custom function.

    alterState: documentation

    Version 1.2.0 (2016-09-15)

    • Users can now select specific adaptor versions for their jobs.
    • Jobs will "auto-upgrade" unless locked to a specific version.

    Adaptor versions: This means that the code beneath your job, once saved with a specific adaptor version, will never change. This is an important step forward for the whole community, as it enables more rapid progress—especially considering the growing number of outside contributors—without risking introducing instability to existing jobs.

    Each new version of an adaptor will have release notes introducing the new features or changes to helper functions. To allow easy upgrades, we will still mandate that all new versions are backwards compatible.

    Version 1.1.0 (2016-08-29)

    New features:

    • Users can now run jobs based on timers as well as filters.
    • Users can now view logs for all runs, not just the most recent.
    • Jobs are "aware" of their last running state.
    • get(...) and post(...) are now supported using the language-http adaptor, allowing users to make their own HTTP calls in jobs.

    Timer triggers: On the triggers tab, users can set the trigger type to "timer" and input a whole number of seconds for the "interval". Any "active" jobs associated with this trigger will run periodically after the interval elapses.

    View logs for all runs: By clicking on an individual run from either the Activity tab or the Message Inspector, users can view the full logs for that run, regardless of whether or not a more recent run took place with the same job and message.

    Job state: When a job runs based on a timer, not an incoming message, it will preserve it's state for the next run. This feature is commonly used by language packs like language-surveycto, language-odk, and others to create a "cursor" to offset or limit database queries.

    Par exemple, fetchSubmissions(...) dans l'adaptateur language-surveycto prend trois arguments : formId, afterDate, et postUrl. La première fois que cette tâche s'exécute, elle ne récupérera que les soumissions après la Date postérieure. Si des soumissions sont reçues, il prendra la dernière soumission du tableau (par date) et la conservera dans le job_state en tant que lastSubmissionDate. La prochaine fois que cette tâche s'éxécute, disons, 300 secondes (5 minutes) plus tard, il ignorera afterDate et récupérera plutôt les soumissions après lastSubmissionDate. Bien que cette fonction d'aide particulière soit très abstraite (elle fait bien cette chose), il est possible d'écrire un job qui modifie simplement le "statut" final avant de terminer, en transmettant les données que vous souhaitez de THIS RUN au'NEXT RUN du job.

    get(...) and post(...): Have a look at this complex job using language-http. See how it is possible to provide a query and a callback for get while post takes a url and a body object. At the end, the user is setting state.lastSubmissionDate to submissions[submissions.length-1].SubmissionDate.

    See the functions themselves at language-http.

    get('forms/data/wide/json/someForm', {
    query: function (state) {
    return { date: state.lastSubmissionDate || 'Aug 29, 2016 4:44:26 PM' };
    },
    callback: function (state) {
    // Choisissez les soumissions afin d'éviter que `post` écrase `response`.
    var submissions = state.response.body;
    // return submissions
    return submissions
    .reduce(function (acc, item) {
    // tag submissions as part of the "someForm" form
    item.formId = 'someForm';
    return acc.then(
    post('https://www.openfn.org/inbox/some-inbox-uuid', { body: item })
    );
    }, Promise.resolve(state))
    .then(function (state) {
    if (submissions.length) {
    state.lastSubmissionDate =
    submissions[submissions.length - 1].SubmissionDate;
    }
    return state;
    })
    .then(function (state) {
    delete state.response;
    return state;
    });
    },
    });
    - + \ No newline at end of file diff --git a/fr/documentation/roadmap.html b/fr/documentation/roadmap.html index ce71c6e5c59..c71785626f0 100644 --- a/fr/documentation/roadmap.html +++ b/fr/documentation/roadmap.html @@ -22,13 +22,13 @@ - +

    Documentation Roadmap

    Visit the public documentation roadmap on github.

    We're constantly working to improve the documentation on OpenFn, particularly around the open source integration toolkit. Visit the documentation roadmap on Github to see what we're working on.

    tip

    Visit the documentation roadmap to view the documentation roadmap.

    Below is merely a static list that will be updated far less frequently than the actual docs issues on Github.

    Planned Sections/Enhancements

    Foundational Concepts

    A page or set of pages that reviews concepts that are essentially prerequisite to using OpenFn or another interoperability platform.

    The anatomy of an integration (title subject to change)

    Envisioned as a primarily visual page that outlines the constituent parts of every integration to equip OpenFn users with a solid grounding of what an integration really is

    Integrating using OpenFn

    Either a subpage of the structure page or its own page subsequent to; this maps the foundational concepts above to jobs, triggers, runs, etc. We will only introduce OpenFn-specific terminology after we establish a common frame of reference. In some ways this is just an edit of the current Getting Started page.

    What Does it Mean to be Ready?

    Detail our OFG consulting team’s implementation process, including the various places that data mapping is referenced to do a step-by-step “pre-job-writing” walkthrough

    Creation of documentation/tutorial “pathways”

    Presenting guides and for new users and new devs from existing documentation resources to flatten the learning curve

    Quickstart

    Rewrite to be dev-centered; should read as a page for users who understand the above already and are ready to dive into technical setup

    Project walk-through

    Revise to incorporate the below app-specific tutorials in a cohesive manner

    How to integrate CommCare with Salesforce

    The Project walkthrough, but specific to these two tools.

    How to integrate DHIS2 and CommCare

    How to integrate Kobo Toolbox and a custom Postgres database

    - + \ No newline at end of file diff --git a/fr/documentation/source-apps.html b/fr/documentation/source-apps.html index 24257bac9e8..6ee8b9d46ad 100644 --- a/fr/documentation/source-apps.html +++ b/fr/documentation/source-apps.html @@ -22,13 +22,13 @@ - +

    Sources de données génériques

    Configuration standard du webhook

    Cette section décrit comment activer les notifications push à partir des applications sources sélectionnées ou comment configurer les tâches d'extraction pour extraire les données de ces sources. Si vous ne voyez pas le vôtre dans la liste alphabétique ci-dessous, n'hésitez pas à l'ajouter avec une demande.

    Chaque projet OpenFn a une adresse unique Inbox URL qui peut être utilisée comme point de terminaison pour n'importe quel webhook JSON. Pour configurer une source de données, configurez cette source pour faire un POST via HTTPS à votre Inbox URL. Voir votre inbox.

    Pour connecter une application à des webhooks JSON standard, copiez votre inbox URL à partir de la page "Inbox" ou de votre écran "Project Settings" et utilisez-la comme URL de destination sur votre application source. Sauf si vous l'avez spécifiquement configuré sur la page "Acces& Security", aucune authentification n'est requise.

    N.B. : Il ne s'agit en aucun cas d'une liste exhaustive. Il s'agit simplement d'une liste de sources communes ajoutées par des contributeurs externes. N'oubliez pas que tout ce qui a une API REST ou un service de notification basé sur JSON peut être utilisé avec OpenFn.

    Comment les webhooks permettent une intégration en temps réel

    Les services webhooks (parfois appelés « services REST ») sont des services que vos utilisateurs peuvent configurer sur votre application pour publier des messages sur d'autres points de terminaison REST. L'exemple le plus courant que nous rencontrerons est un formulaire, une soumission, ou un service de transfert de cas qui enverra une copie d'une soumission à une API externe.

    Vous fournissez une interface utilisateur pour votre webhook ?

    Il s'agit probablement de la partie la plus interactive de votre API pour l'utilisateur final, et vous souhaiterez probablement une fonctionnalité dans votre interface utilisateur qui leur permette d'activer et de désactiver ces divers services. Voir l'exemple ci-dessous de Kobo Toolbox (à gauche) et CommCare (à droite).

    kobo_to_commcare

    Quand envoyer ?

    Considérez s'il faut configurer des montres ou des déclencheurs au niveau de la base de données (cela semble excessif mais est fourni par certaines bases de données à un coût relativement bas) ou à plusieurs interfaces clés de votre application. De quels types de mises à jour / soumissions / modifications dans votre application d'autres applications pourraient-elles avoir besoin d'être notifiées en temps réel ? Une nouvelle soumission est la plus courante, mais les mises à jour d'un « cas », les modifications apportées à l'UAM ou tout autre événement peuvent être utiles.

    Quand envoyer ?

    Toute la ressource, s'il vous plaît. Cela anticipe légèrement nos réflexions sur les normes de données à l'échelle du secteur, mais (dans la limite du raisonnable), il est logique d'exposer tout ce dont votre utilisateur final aura besoin pour exécuter la prochaine étape de sa logique. Certaines interfaces permettent à l'utilisateur de contrôler quels champs (et même quelles ressources associées) sont envoyés dans une charge utile donnée, mais la valeur par défaut est souvent d'envoyer tout et de les laisser choisir ce qu'ils veulent utiliser.

    - + \ No newline at end of file diff --git a/fr/documentation/standards/digital-public-goods.html b/fr/documentation/standards/digital-public-goods.html index a74ee58a441..e154ee9a729 100644 --- a/fr/documentation/standards/digital-public-goods.html +++ b/fr/documentation/standards/digital-public-goods.html @@ -22,13 +22,13 @@ - +

    Digital Public Goods

    OpenFn is recognised by the Ditial Public Goods Alliance as a Digital Public Good, or "DPG".

    Digital Public Goods Definition

    Open-source software, open data, open AI models, open standards, and open content that adhere to privacy and other applicable best practices, do no harm by design and are of high relevance for attainment of the United Nations 2030 Sustainable Development Goals (SDGs)

    You can read more about the DPG standard here.

    - + \ No newline at end of file diff --git a/fr/documentation/standards/global-goods.html b/fr/documentation/standards/global-goods.html index ce2218a0c36..5220a1490f9 100644 --- a/fr/documentation/standards/global-goods.html +++ b/fr/documentation/standards/global-goods.html @@ -22,13 +22,13 @@ - +

    Global Goods

    OpenFn is one of 36 software applications that have been recognised as a Digital Square Global Good for Health.

    Global Goods for Health Definition

    A mature digital health software global good is software that is Free and Open Source Software (FOSS), is supported by a strong community, has a clear governance structure, is funded by multiple sources, has been deployed at significant scale, is used across multiple countries, has demonstrated effectiveness, is designed to be interoperable, and is an emergent standard application.

    You can read more about Global Goods for Health here.

    - + \ No newline at end of file diff --git a/fr/documentation/standards/openhie.html b/fr/documentation/standards/openhie.html index 06b1210baa8..d09efe1b5bb 100644 --- a/fr/documentation/standards/openhie.html +++ b/fr/documentation/standards/openhie.html @@ -22,13 +22,13 @@ - +

    OpenHIE

    This section assumes you are familiar with the OpenHIE specification–a reference framework that makes sharing health data across information systems possible through a Health Information Exchange (“HIE”). To learn more, check out OpenHIE docs and community.

    OpenFn Lightning and OpenHIE

    OpenFn Lightning is an OpenHIE-compliant workflow engine used to (1) automate complex business processes that cut across digital systems (including OpenHIE components and point of care systems), and to (2) handle data mapping and transformation.

    If your organization is implementing the OpenHIE standard architecture, then OpenFn provides a workflow engine that interfaces with your interoperability later component (“IOL”). OpenFn can be implemented to automate:

    • Workflows between point of service systems;
    • Workflows between across core HIE components;
    • Data transformation steps required to prepare data before routing it to other HIE components via the IOL. (Note that OpenFn workflows serve as a web-UI-accessible and manageable alternative to OpenHIM “mediators”.)

    OpenFn supports the functional requirements of the OpenHIE IOL, therefore some organizations also use OpenFn as their central interoperability layer. That said, please note that OpenFn cannot yet be used as a fully OpenHIE-compliant interoperability layer because it does not leverage the IHE ATNA profile (see requirement IOL-WF1).

    openhie_architecture

    For an overview of OpenFn Lightning and how it fits into OpenHIE, see our introduction for the OpenHIE showcase or read on for more context.

    Context

    The Interoperability layer (IOL):

    • Sits between the OpenHIE components and point-of-care systems
    • Serves as a single point of entry and secure gateway to the OpenHIE
    • Complies with requirements around transaction routing and auditing

    OpenFn Lightning satisfies the functional requirements of the IOL, but is not fully OpenHIE-compliant since it does not yet leverage the IHE ATNA profile

    The workflow engine:

    • Provides out-of-box interfaces to connect to point of care systems
    • Handles complex data mapping and transformation to reformat data for receipt by a destination system (e.g., map data from point of care system to the data model of a OpenHIE component, and/or map non-FHIR data to FHIR profiles)
    • Routes data to the interoperability layer
    • Can keep track of the long running state of a patient's care and perform actions based on this context (such as sending alerts) to improve patient care.

    OpenFn Lightning is an OpenHIE-compliant workflow engine

    Case study: Using OpenFn to quickly deliver a new OpenHIM mediator in Nigeria

    In Nigeria, as part of the ALMANACH project, SwissTPH used OpenFn to automate data mapping and exchange between CommCare and DHIS2 for disease surveillance. The workflow ran on OpenFn’s cloud for several years and in preparation for handover and scaling-up, the team at SwissTPH then prepared a deep integration with OpenHIM for local deployment.

    SwissTPH took their existing OpenFn workflow and built it into their OpenHIM instance as a “mediator”, ensuring all data is routed via this IOL while still leveraging OpenFn’s out-of-box DHIS2 adaptor and reusable workflow templates to quickly develop automation that reformats data received from CommCare and maps it to the DHIS2 data model.

    swisstph

    - + \ No newline at end of file diff --git a/fr/documentation/style-guide.html b/fr/documentation/style-guide.html index 3f2ec619074..4eea78d1f7c 100644 --- a/fr/documentation/style-guide.html +++ b/fr/documentation/style-guide.html @@ -22,14 +22,14 @@ - +

    Guide de style

    Tu peux écrire du contenu avec la syntaxe Markdown basée sur GitHub.

    tip

    We use a .prettierrc file to enforce standard styles via the "Prettier" code formatter. If you are using VsCode, you can install prettier via https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode

    Make sure to format you work before opening a PR.

    Syntaxe de Markdown

    To serve as an example page when styling markdown based Docusaurus sites.

    En-têtes

    H1 - Créer la meilleure documentation

    H2 - Créer la meilleure documentation

    H3 - Créer la meilleure documentation

    H4 - Créer la meilleure documentation

    H5 - Créer la meilleure documentation
    H6 - Créer la meilleure documentation

    Mise en valeur

    Emphasis, aka italics, with asterisks or underscores.

    Strong emphasis, aka bold, with asterisks or underscores.

    Combined emphasis with asterisks and underscores.

    Strikethrough uses two tildes. Scratch this.


    Listes

    1. Premier élément de liste ordonné
    2. Un autre élément
      • Sous-liste non-ordonnée.
    3. Les nombres réels n'ont pas d'importance, juste qu'il s'agit d'un nombre
      1. Sous-liste ordonnée
    4. Et un autre élément.
    • Une liste non ordonnée peut utiliser des astérisques
    • Ou moins
    • Ou plus

    Liens

    I'm an inline-style link

    I'm an inline-style link with title

    I'm a reference-style link

    You can use numbers for reference-style link definitions

    Or leave it empty and use the link text itself.

    URLs and URLs in angle brackets will automatically get turned into links. http://www.example.com/ or http://www.example.com/ and sometimes example.com (but not on GitHub, for example).

    Some text to show that the reference links can follow later.


    Images

    Here's our logo (hover to see the title text):

    Inline-style: alt text

    Reference-style: alt text

    'Logo Title Text 2'

    Images from any folder can be used by providing path to file. Path should be relative to markdown file.

    img

    Taille / style de l'image

    Images can be sized using inline HTML.


    Gifs

    Gifs are helpful for demonstrating short sequences of user behaviour.

    img

    There are many tools that will help you create GIFs:

    note

    Please note that if you're using an animated "cursor dot" and "show/click animation", the hex code we use is #B53F48.


    Code

    var s = 'Coloration de syntaxe JavaScript' ;
    alerte(s) ;
    s = "Coloration syntaxique Python"
    print(s)
    Aucune langue indiquée, donc aucune coloration syntaxique.
    Mais jetons un <b>tag</b>.
    function highlightMe() {
    console.log( 'Cette ligne peut être surlignée ! ');
    }

    Tables

    Colons can be used to align columns.

    TablesSontCool
    le col 3 estaligné à droite\$1600
    le col 2 estcentré\$12
    rayures de zèbresont soignées\$1

    There must be at least 3 dashes separating each header cell. The outer pipes (|) are optional, and you don't need to make the raw Markdown line up prettily. You can also use inline Markdown.

    MarkdownMoinsJoli
    Toujoursrendujoliment
    123

    Citations

    Les citations sont très pratiques dans les e-mails pour émuler le texte de réponse. Cette ligne fait partie de la même citation.

    Quote break.

    Il s'agit d'une ligne très longue qui sera toujours citée correctement lorsqu'elle sera incluse. Oh garçon continuons à écrire pour s'assurer que c'est assez long pour vraiment envelopper tout le monde. Oh, vous pouvez mettre Markdown dans une citation.


    HTML en ligne

    Liste de définitions
    C'est quelque chose que les gens utilisent parfois.
    Markdown en HTML
    Ne fonctionne *pas* **très** bien. Utilisez les balises HTML.

    Sauts de ligne

    Here's a line for us to start with.

    This line is separated from the one above by two newlines, so it will be a separate paragraph.

    This line is also a separate paragraph, but... This line is only separated by a single newline, so it's a separate line in the same paragraph.


    Avertissements

    note

    This is a note

    tip

    This is a tip

    info

    This is important

    caution

    This is a caution

    danger

    This is a warning

    Onglets

    importer des Onglets depuis '@theme/Tabs'; importer un tabItem depuis '@theme/TabItem';

    Note how we import tabs first, then use them as below:

    import Tabs from '@theme/Tabs';
    import TabItem from '@theme/TabItem';

    <Tabs
    defaultValue="apple"
    values={[
    { label: 'Apple', value: 'apple' },
    { label: 'Orange', value: 'orange' },
    { label: 'Banana', value: 'banana' },
    ]}
    >
    <TabItem value="apple">This is an apple 🍎</TabItem>
    <TabItem value="orange">This is an orange 🍊</TabItem>
    <TabItem value="banana">This is a banana 🍌</TabItem>
    </Tabs>;
    This is an apple 🍎
    This is an orange 🍊
    This is a banana 🍌
    - + \ No newline at end of file diff --git a/fr/documentation/writing-code.html b/fr/documentation/writing-code.html index 171eb948adc..5bb0e8ee50d 100644 --- a/fr/documentation/writing-code.html +++ b/fr/documentation/writing-code.html @@ -22,13 +22,13 @@ - +

    Écrire du code

    Introduction

    This section is intended to provide developers with a basic introduction to contributing to OpenFn's open-source applications.

    There are three ways you can contribute to the OpenFn DPG:

    1. Build or extend OpenFn adaptors

    • Requires knowledge of Javascript and Typescript
    • See the README.md to learn how to contribute

    2. Add or improve a feature on the OpenFn Lightning platform

    • Requires knowledge of Elixir and Pheonix Liveview
    • See the README.md to learn how to contribute

    3. Add to or improve our documentation

    Please feel free to point out issues with the OpenFn documentation or, if you can't find the right repo, issues with the tools themselves. (The more feedback the better!). If you want to propose some new language for the documentation, you can make those changes by clicking the "Edit this page" link at the bottom of any page and submit a pull request!

    - + \ No newline at end of file diff --git a/fr/documentation/writing-docs.html b/fr/documentation/writing-docs.html index f43e38b03f8..c63a6a1f2d0 100644 --- a/fr/documentation/writing-docs.html +++ b/fr/documentation/writing-docs.html @@ -22,13 +22,13 @@ - +

    Rédaction de docs

    Please feel free to point out issues with this documentation or, if you can't find the right repo, issues with the tools themselves. (The more feedback the better!). If you want to propose some new language for the documentation, you can make those changes by clicking the "Edit this page" link at the bottom of any page and submit a pull request!

    Intro

    This document is meant to be a guide for OpenFn’s documentation. Remember the goal is to treat “docs like code” and to create a docs portal that makes using OpenFn's tools a fairly self-service experience. Feel free to contribute to this document.

    Qu'est-ce que les docs

    When we say docs, we mean streamlined, tightly phrased, and fast-moving information that helps citizen integrators using OpenFn understand the platform’s complex application interfaces. What does treating docs like code mean? Store the doc source files in a version control system. Build the doc artifacts automatically. Ensure that a trusted set of reviewers meticulously reviews the docs. Publish the artifacts without much human intervention.

    (Source: Anne Gentle’s book Docs Like Code.)

    Objectifs pour ces docs

    Promouvoir la collaboration

    Collaborate with contributors efficiently by keeping docs in the same system as code with deliverables generated from source files.

    Obtenir des contributions longues à la queue

    Split deliverables into parts that encourage small but mighty contributions. One person no longer needs to own an entire deliverable of documentation.

    Suivre les bugs de doc comme les bugs de code

    When you fix a doc bug, you reference that bug in the commit message to help reviewers judge whether the doc fix solves the stated problem.

    Obtenez des avis rapides et de bonne qualité des membres de l'équipe

    Trust team members to value docs, ensure technical accuracy and consistency, respect end users’ needs, and advocate for the best doc deliverables for consumers.

    Créer de belles docs

    Design is important. Create beautiful and modern looking docs.

    Utiliser les outils de développement et les workflows

    Automate the process as much as possible, so we can focus on content creation.

    - + \ No newline at end of file diff --git a/fr/index.html b/fr/index.html index bacd3950996..b06af49cc84 100644 --- a/fr/index.html +++ b/fr/index.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/fr/search.html b/fr/search.html index 1e5bb73d5b0..b7cc3d40581 100644 --- a/fr/search.html +++ b/fr/search.html @@ -22,13 +22,13 @@ - +

    Rechercher dans la documentation

    - + \ No newline at end of file diff --git a/index.html b/index.html index 6ef724318e1..780a245b928 100644 --- a/index.html +++ b/index.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file diff --git a/search.html b/search.html index 1af9a2405b4..4b4d599b89e 100644 --- a/search.html +++ b/search.html @@ -22,13 +22,13 @@ - + - + \ No newline at end of file