with Plaid and OpenSRS?
Emit new event when the DNS/ZONE check has passed or failed at the registry. See the documentation
Emit new event for each new domain registration. See the documentation
Emit new event when the status of a domain transfer changes. See the documentation
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
Exchange a Link public_token
for an API access_token
. See the documentation
Initiate a domain transfer to OpenSRS. 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
Get the real-time balance for each of an Item's accounts. 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 { axios } from "@pipedream/platform";
import crypto from 'crypto';
export default defineComponent({
props: {
opensrs: {
type: "app",
app: "opensrs",
}
},
async run({steps, $}) {
const connectionDetails = {
reseller_username: this.opensrs.$auth.reseller_username,
api_key: this.opensrs.$auth.api_key,
api_host_port: this.opensrs.$auth.api_host_port
};
//Payload of the request
const xml = `<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
<!DOCTYPE OPS_envelope SYSTEM 'ops.dtd'>
<OPS_envelope>
<header>
<version>0.9</version>
</header>
<body>
<data_block>
<dt_assoc>
<item key="protocol">XCP</item>
<item key="action">LOOKUP</item>
<item key="object">DOMAIN</item>
<item key="attributes">
<dt_assoc>
<item key="domain">${this.opensrs.$auth.domain}</item>
</dt_assoc>
</item>
</dt_assoc>
</data_block>
</body>
</OPS_envelope>`;
// Generate signature
const generateSignature = (xml, apiKey) => {
let md5 = crypto.createHash('md5');
md5.update(xml + apiKey);
let firstHash = md5.digest('hex');
md5 = crypto.createHash('md5');
md5.update(firstHash + apiKey);
return md5.digest('hex');
};
const signature = generateSignature(xml, connectionDetails.api_key);
// Prepare and call OpenSRS API
const headers = {
'Content-Type': 'text/xml',
'X-Username': connectionDetails.reseller_username,
'X-Signature': signature
};
return await axios($, {
method: "POST",
url: connectionDetails.api_host_port,
headers,
data: xml
});
},
})