with Quickbase and Google Identity?
Emit new event each time a new record is created in a specified table in Quickbase.
Creates a new record in a Quick Base table. See the documentation
Updates an existing record in a Quick Base table. See the documentation
Quickbase is a low-code platform for building operational applications and automations that can manage data, workflows, and reporting. Using Pipedream's serverless platform, you can tap into the robust Quickbase API to weave complex workflows that respond to events, synchronize data across multiple systems, and streamline business processes. With Pipedream, you can trigger on events in Quickbase, or from hundreds of other apps, and write Node.js code to integrate with the Quickbase API directly, enabling a broad range of automation possibilities.
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
quickbase: {
type: "app",
app: "quickbase",
}
},
async run({steps, $}) {
return await axios($, {
url: `https://api.quickbase.com/v1/apps/brztjz2nz`,
headers: {
"QB-Realm-Hostname": `${this.quickbase.$auth.hostname}`,
"User-Agent": `@PipedreamHQ/pipedream v0.1`,
"Authorization": `QB-USER-TOKEN ${this.quickbase.$auth.user_token}`,
"Content-Type": `application/json`,
},
})
},
})
import axios from "axios";
import * as jsrsasign from "jsrsasign";
export default defineComponent({
props: {
google_identity: {
type: "app",
app: "google_identity",
}
},
async run({ steps, $ }) {
const serviceAccountKey = JSON.parse(this.google_identity.$auth.service_account_key);
const GOOGLE_OAUTH = 'https://www.googleapis.com/oauth2/v4/token';
// add/remove your own scopes as needed
const SCOPES = [
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile',
'https://www.googleapis.com/auth/cloud-platform',
'https://www.googleapis.com/auth/cloud-identity',
];
const getJwt = async function ({ client_email, private_key }, iat) {
const header = {
typ: 'JWT',
alg: 'RS256',
};
const exp = iat + 3600;
const payload = {
aud: GOOGLE_OAUTH,
iss: client_email,
scope: SCOPES.join(' '),
iat,
exp,
};
const jwt = jsrsasign.KJUR.jws.JWS.sign(null, header, payload, private_key);
return { jwt, exp };
};
const getToken = async function (serviceAccountKey) {
const now = Math.floor(Date.now() / 1000);
const jwtInfo = await getJwt(serviceAccountKey, now);
const params = new URLSearchParams();
params.append('grant_type', 'urn:ietf:params:oauth:grant-type:jwt-bearer');
params.append('assertion', jwtInfo.jwt);
const response = await axios.post(GOOGLE_OAUTH, params, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
});
const accessToken = response.data.access_token;
return accessToken;
};
const generateOAuthToken = async function () {
return await getToken(serviceAccountKey);
};
// Call the function to generate the token
const accessToken = await generateOAuthToken();
// Call the Google Identity API to search for groups
const response = await axios({
method: "GET",
url: "https://cloudidentity.googleapis.com/v1/groups:search",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json"
},
params: {
query: "parent == 'customers/C046psxkn'"
}
})
return response.data
},
})