Initial import of verae-zapier-app from zapier monorepo

This commit is contained in:
George Lambert 2026-09-11 13:16:09 -04:00
commit 553984c942
16 changed files with 618 additions and 0 deletions

82
index.js Normal file
View file

@ -0,0 +1,82 @@
/**
* Verae Zapier Platform app definition.
* @module index
*/
const authentication = require('./authentication');
const timestampAndWait = require('./creates/timestamp_and_wait');
const createTimestamp = require('./creates/create_timestamp');
const verifyTimestamp = require('./creates/verify_timestamp');
const batchTimestamp = require('./creates/batch_timestamp');
const addNumbers = require('./creates/add_numbers');
const jobStatus = require('./searches/job_status');
const hashLookup = require('./searches/hash_lookup');
const treeLookup = require('./searches/tree_lookup');
const timestampCompleted = require('./triggers/timestamp_completed');
/**
* Attach middleware API key to every outbound request.
* @param {object} request
* @param {object} _z
* @param {object} bundle
*/
const addApiKey = (request, _z, bundle) => {
request.headers = request.headers || {};
request.headers.Authorization = `Bearer ${bundle.authData.api_key}`;
return request;
};
/**
* Map middleware billing errors to Zapier errors.
* @param {object} response
* @param {object} z
*/
const mapMiddlewareErrors = (response, z) => {
if (response.status === 402) {
throw new z.errors.Error(
`${response.data?.error ?? 'Quota exceeded'}. Upgrade at ${response.data?.details?.upgradeUrl ?? response.data?.upgradeUrl ?? 'your billing portal'}.`,
'QuotaExceeded',
402,
);
}
if (response.status === 403 && response.data?.code === 'PLAN_UPGRADE_REQUIRED') {
throw new z.errors.Error(
response.data?.error ?? 'This action requires a paid plan.',
'PlanUpgradeRequired',
403,
);
}
return response;
};
let platformVersion = '15.19.0';
try {
platformVersion = require('zapier-platform-core').version;
} catch {
// optional for unit tests without full install
}
module.exports = {
version: require('./package.json').version,
platformVersion,
authentication,
beforeRequest: [addApiKey],
afterResponse: [mapMiddlewareErrors],
triggers: {
[timestampCompleted.key]: timestampCompleted,
},
creates: {
[addNumbers.key]: addNumbers,
[timestampAndWait.key]: timestampAndWait,
[createTimestamp.key]: createTimestamp,
[verifyTimestamp.key]: verifyTimestamp,
[batchTimestamp.key]: batchTimestamp,
},
searches: {
[jobStatus.key]: jobStatus,
[hashLookup.key]: hashLookup,
[treeLookup.key]: treeLookup,
},
};