with Plaid and Odoo?
Emit new event when there are new accounts available at the Financial Institution. See the documentation
Emit new event when there are changes to Plaid Items or the status of asynchronous processes. See the documentation
Emit new event when there are new updates available for a connected account. See the documentation
Exchange a Link public_token
for an API access_token
. See the documentation
Creates a valid public_token
for an arbitrary institution ID, initial products, and test credentials. See the documentation
Creates a user ID and token to be used with Plaid Check, Income, or Multi-Item Link flow. See the documentation
The Plaid API offers a multitude of financial data operations, enabling developers to manage and interact with user bank accounts, transactions, identity info, and more, all within a secure and compliant ecosystem. Integrating Plaid with Pipedream can unlock powerful automations, like syncing transaction data to accounting software, verifying user identities for KYC compliance, and automating financial alerts or reporting.
module.exports = defineComponent({
props: {
plaid: {
type: "app",
app: "plaid",
}
},
async run({steps, $}) {
const { Configuration, PlaidApi } = require('plaid');
const client = new PlaidApi(
new Configuration({
basePath: this.plaid.$auth.environment,
baseOptions: {
headers: {
'PLAID-CLIENT-ID': this.plaid.$auth.client_id,
'PLAID-SECRET': this.plaid.$auth.client_secret,
},
},
})
);
// Test request
const request = {
count: 10,
offset: 0,
country_codes: ['US'],
};
const response = await client.institutionsGet(request);
return response.data.institutions;
},
})
import xmlrpc from 'xmlrpc';
export default defineComponent({
props: {
odoo: {
type: "app",
app: "odoo",
}
},
async run({ steps, $ }) {
const url = this.odoo.$auth.server_url;
const db = this.odoo.$auth.db;
const username = this.odoo.$auth.username;
const password = this.odoo.$auth.password;
// Create clients for common and object endpoints
const common = xmlrpc.createSecureClient(`${url}/xmlrpc/2/common`);
const models = xmlrpc.createSecureClient(`${url}/xmlrpc/2/object`);
// Using async/await with promises
async function getFields() {
try {
// Authenticate and get uid
const uid = await new Promise((resolve, reject) => {
common.methodCall('authenticate', [db, username, password, {}], (error, value) => {
if (error) reject(error);
resolve(value);
});
});
// Get fields
const results = await new Promise((resolve, reject) => {
models.methodCall('execute_kw', [
db,
uid,
password,
'res.partner',
'fields_get',
[],
{ 'attributes': ['string', 'help', 'type'] }
], (error, value) => {
if (error) reject(error);
resolve(value);
});
});
return results;
} catch (error) {
throw new Error(error);
}
}
return await getFields();
},
})