Skip to main content
Glama
create-contract.ts4.83 kB
import { createAction, Property } from '@activepieces/pieces-framework'; import { esignaturesAuth } from '../common/auth'; import { httpClient, HttpMethod } from '@activepieces/pieces-common'; export const createContract = createAction({ auth: esignaturesAuth, name: 'createContract', displayName: 'Create Contract', description: 'Create a new contract from a template in eSignatures', props: { templateId: Property.ShortText({ displayName: 'Template ID', description: 'The ID of the template to use for the contract', required: true, }), title: Property.ShortText({ displayName: 'Contract Title', description: 'Unique title for the contract (defaults to template title if not specified)', required: false, }), locale: Property.StaticDropdown({ displayName: 'Language', description: 'Language setting for the signer page and emails', required: false, options: { disabled: false, options: [ { label: 'Czech', value: 'cz' }, { label: 'Danish', value: 'da' }, { label: 'German', value: 'de' }, { label: 'Greek', value: 'el' }, { label: 'English', value: 'en' }, { label: 'English (UK)', value: 'en-GB' }, { label: 'Spanish', value: 'es' }, { label: 'Finnish', value: 'fi' }, { label: 'French', value: 'fr' }, { label: 'Croatian', value: 'hr' }, { label: 'Hungarian', value: 'hu' }, { label: 'Indonesian', value: 'id' }, { label: 'Italian', value: 'it' }, { label: 'Japanese', value: 'ja' }, { label: 'Dutch', value: 'nl' }, { label: 'Norwegian', value: 'no' }, { label: 'Polish', value: 'pl' }, { label: 'Portuguese', value: 'pt' }, { label: 'Romanian', value: 'ro' }, { label: 'Serbian', value: 'rs' }, { label: 'Slovak', value: 'sk' }, { label: 'Slovenian', value: 'sl' }, { label: 'Swedish', value: 'sv' }, { label: 'Vietnamese', value: 'vi' }, { label: 'Chinese (Simplified)', value: 'zh-CN' }, ], }, }), metadata: Property.ShortText({ displayName: 'Metadata', description: 'Custom data to attach to the contract', required: false, }), expiresInHours: Property.Number({ displayName: 'Expires In Hours', description: 'Sets the expiry time (in hours) for the contract', required: false, }), customWebhookUrl: Property.ShortText({ displayName: 'Custom Webhook URL', description: 'Custom URL for webhook notifications', required: false, }), assignedUserEmail: Property.ShortText({ displayName: 'Assigned User Email', description: 'Email to assign management of the contract', required: false, }), labels: Property.Array({ displayName: 'Labels', description: 'Labels to assign to the contract (for grouping)', required: false, }), test: Property.Checkbox({ displayName: 'Test Contract', description: 'Mark as test/demo contract with no fees charged', required: false, }), saveAsDraft: Property.Checkbox({ displayName: 'Save as Draft', description: 'Save as draft instead of sending to signers', required: false, }), signers: Property.Array({ displayName: 'Signers', description: 'List of individuals required to sign (name, email, and/or mobile)', required: true, }), }, async run({ auth, propsValue }) { const payload: any = { template_id: propsValue.templateId, }; if (propsValue.title) payload.title = propsValue.title; if (propsValue.locale) payload.locale = propsValue.locale; if (propsValue.metadata) payload.metadata = propsValue.metadata; if (propsValue.expiresInHours !== undefined) payload.expires_in_hours = propsValue.expiresInHours.toString(); if (propsValue.customWebhookUrl) payload.custom_webhook_url = propsValue.customWebhookUrl; if (propsValue.assignedUserEmail) payload.assigned_user_email = propsValue.assignedUserEmail; if (propsValue.labels) payload.labels = propsValue.labels; if (propsValue.test !== undefined) payload.test = propsValue.test ? 'yes' : 'no'; if (propsValue.saveAsDraft !== undefined) payload.save_as_draft = propsValue.saveAsDraft ? 'yes' : 'no'; if (propsValue.signers) payload.signers = propsValue.signers; const response = await httpClient.sendRequest({ method: HttpMethod.POST, url: `https://esignatures.com/api/contracts?token=${auth.secret_text}`, headers: { 'Content-Type': 'application/json', }, body: payload, }); return response.body; }, });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server