Adaptors
Connect Anything.
First, it's important to note that OpenFn can connect to any system via HTTP, but our community has also built dozens of "adaptors" to save time & money while connecting to most commonly used digital public goods and key ICT4D systems.
You can even run web scraping or browser automation tools with OpenFn. It's almost like a universal translator... 🖖
What's an adaptor?
An adaptor is an open-source Javascript or Typescript module that provides OpenFn users with a clean set of helper functions that help communicate with a specific external system.
An adaptor sits between the OpenFn platform (ie, app.openfn.org) and some backing service or system (e.g., DHIS2, Salesforce, Postgres).
Its job is to provide a clean, high-level JavaScript interface to uses writing workflows in OpenFn. Users who write OpenFn job code are usually inexperienced programmers, and rarely experts in all the systems that a workflow has to connect with. A good adaptor will make that user's journey easier.
In the past, we often referred to them as "language 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
.
Adaptors vs. Workflows
Adaptors are reusable components that make connecting with a specific app easier, whereas Workflows are the project-specific processes that you want to automate. OpenFn users will always leverage Adaptors to better understand how to work with specific APIs, to access Adaptor helper functions (or "shortcuts") to more quickly build Workflows, and to handle authenticatio. See the below diagram.
Where to find adaptors
asana (docs)
azure-storage (docs)
beyonic (docs)
bigquery (docs)
cartodb (docs)
cht (docs)
collections (docs)
commcare (docs)
common (docs)
dhis2 (docs)
dynamics (docs)
facebook (docs)
fhir (docs)
fhir-jembi
fhir-ndr-et (docs)
godata (docs)
googlehealthcare (docs)
googlesheets (docs)
hive (docs)
http (docs)
khanacademy (docs)
kobotoolbox (docs)
magpi (docs)
mailchimp (docs)
mailgun (docs)
maximo (docs)
medicmobile (docs)
mogli (docs)
mojatax (docs)
mongodb (docs)
msgraph (docs)
mssql (docs)
mysql (docs)
nexmo (docs)
ocl (docs)
odk (docs)
openfn (docs)
openhim (docs)
openimis (docs)
openlmis (docs)
openmrs (docs)
openspp (docs)
postgresql (docs)
primero (docs)
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.12.3
- v2.12.2
- v2.12.1
- v2.12.0
- v2.11.14
- v2.11.13
- v2.11.12
- v2.11.10
- v2.11.8
- v2.11.7
- v2.11.6
- v2.11.5
- v2.11.4
- v2.11.3
- v2.11.2
- v2.11.1
- v2.10.6
- v2.10.5
- v2.10.4
- v2.10.3
- v2.10.2
- v2.10.1
- v2.10.0
- v2.9.2
- v2.9.1
- v2.8.0
- v2.7.2
- v2.7.0
- v2.4.4
- v2.3.6
- v2.3.5
- v2.3.4
- v2.2.8
- v2.2.3
- v1.2.0
progres (docs)
rapidpro (docs)
redis (docs)
resourcemap (docs)
salesforce (docs)
- v4.8.6
- v4.8.5
- v4.8.4
- v4.8.3
- v4.8.2
- v4.8.1
- v4.8.0
- v4.7.0
- v4.6.11
- v4.6.10
- v4.6.8
- v4.6.7
- v4.6.5
- v4.6.4
- v4.6.2
- v4.6.0
- v4.5.2
- v4.5.1
- v4.5.0
- v4.4.0
- v4.3.1
- v4.3.0
- v4.2.2
- v4.2.1
- v4.2.0
- v4.1.0
- v4.0.8
- v4.0.7
- v4.0.6
- v4.0.5
- v4.0.4
- v4.0.3
- v4.0.2
- v4.0.1
- v3.0.7
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.12.3
- v2.12.2
- v2.12.1
- v2.12.0
- v2.11.2
- v2.11.1
- v2.11.0
- v2.10.0
- v2.9.0
- v2.8.1
- v2.7.4
- v2.7.3
- v2.7.2
- v2.6.3
- v2.4.0
- v2.3.5
- v2.3.2
- v1.3.2
- v0.0.1-alpha
satusehat (docs)
sftp (docs)
smpp (docs)
surveycto (docs)
telerivet (docs)
template
testing (docs)
twilio (docs)
vtiger (docs)
On OpenFn
When creating or editing a job step, 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.com.
Don't see an adaptor for your app?
Explore our "universal" adaptors that support a wide variety of protocols, such as:
Or build your own (see below)!
Building and extending adaptors
See the Github Adaptors wiki for the technical guide to developing adaptors.
Adaptors' source code and technical documentation for developing or extending existing adaptors can be found on this linked repository: https://github.com/OpenFn/adaptors
Head to community.openfn.org to collaborate with others or to provide adaptors feedback.