/** * Create Timestamp — hosted if api_base+api_key, else local mock job. * @module creates/timestamp */ const { randomUUID } = require('node:crypto'); const perform = async (z, bundle) => { const data = String(bundle.inputData.data ?? ''); const sha256 = bundle.inputData.sha256; const base = (bundle.authData.api_base || process.env.ZAPPIER_API_BASE || '').replace(/\/$/, ''); const key = bundle.authData.api_key || ''; if (base && key) { const response = await z.request({ method: 'POST', url: `${base}/v1/timestamp`, headers: { 'x-api-key': key, 'content-type': 'application/json' }, body: { data, sha256, hashAlg: bundle.inputData.hashAlg }, }); return { ...(response.data || {}), mode: 'hosted' }; } return { jobId: randomUUID(), sha256: sha256 || null, existing: false, mode: 'local-mock', note: 'No API configured — mock jobId only. Set API base + key to hit zappier /v1/timestamp.', }; }; module.exports = { key: 'create_timestamp', noun: 'Timestamp', display: { label: 'Create Timestamp', description: 'Registers data/SHA256. Local mock if no API; hosted zappier when connected.', }, operation: { cleanInputData: false, inputFields: [ { key: 'data', label: 'Data', type: 'text', required: false }, { key: 'sha256', label: 'SHA256 hex', type: 'string', required: false }, { key: 'hashAlg', label: 'Hash algorithm', type: 'string', required: false, default: 'SHA256' }, ], perform, sample: { jobId: '00000000-0000-4000-8000-000000000000', existing: false, mode: 'local-mock' }, outputFields: [ { key: 'jobId', type: 'string' }, { key: 'sha256', type: 'string' }, { key: 'existing', type: 'boolean' }, { key: 'mode', type: 'string' }, ], }, };