Skip to main content
Glama

mcp-google-sheets

create-event.ts6.35 kB
import { createAction, Property } from '@activepieces/pieces-framework'; import { httpClient, HttpMethod } from '@activepieces/pieces-common'; import { getBaseUrl, instasentAuth } from '../..'; import { ApiResponse, EventParameter, EventSpec, InstasentAuthType } from '../common/types'; import { BOOLEAN_OPTIONS } from '../common/constants'; export const createEvent = createAction({ name: 'add_event', displayName: 'Add Event', description: 'Add a contact event', auth: instasentAuth, props: { user_id: Property.ShortText({ displayName: 'User ID', description: 'Unique identifier of the user', required: true }), event_id: Property.ShortText({ displayName: 'Event ID', description: 'Unique identifier for this event. Used for deduplication.', required: true }), event_date: Property.ShortText({ displayName: 'Event Date', description: 'Date and time when the event occurred, will default to now (ISO 8601 format YYYY-MM-DDTHH:MM:SS.SSSZ)', required: false }), event_type: Property.Dropdown({ displayName: 'Event Type', description: 'Select the type of event to create', required: true, refreshers: [], options: async ({ auth }) => { const authData = auth as InstasentAuthType; const baseUrl = getBaseUrl({ projectId: authData.projectId, datasourceId: authData.datasourceId }); const response = await httpClient.sendRequest<{ specs: EventSpec[] }>({ method: HttpMethod.GET, url: `${baseUrl}/stream/specs/events`, headers: { 'Authorization': `Bearer ${authData.apiKey}` } }); return { options: response.body.specs.map(spec => ({ label: `${spec.emoji} ${spec.name}`, value: spec.uid })) }; } }), event_parameters: Property.DynamicProperties({ displayName: 'Event Parameters', description: 'Parameters for the selected event type', required: true, refreshers: ['event_type'], props: async ({ auth, event_type }) => { if (!auth || !event_type) return {}; const authData = auth as InstasentAuthType; const baseUrl = getBaseUrl({ projectId: authData.projectId, datasourceId: authData.datasourceId }); const response = await httpClient.sendRequest<{ specs: EventParameter[] }>({ method: HttpMethod.GET, url: `${baseUrl}/stream/specs/event-parameters/${event_type}`, headers: { 'Authorization': `Bearer ${authData.apiKey}` } }); const props: Record<string, any> = {}; response.body.specs.forEach(param => { if (param.multiValue > 1) { props[param.parameter] = Property.Array({ displayName: param.title, description: `${param.description} (Max ${param.multiValue} values)`, required: param.required }); } else { // Convert API parameter specs to ActivePieces properties switch (param.dataType) { case 'bool': props[param.parameter] = Property.StaticDropdown({ displayName: param.title, description: `${param.description} [0=false|1=true|null=unknown]`, required: param.required, options: { options: BOOLEAN_OPTIONS } }) break; case "string": case "payload": props[param.parameter] = Property.LongText({ displayName: param.title, description: param.description, required: param.required }); break; default: props[param.parameter] = Property.ShortText({ displayName: param.title, description: param.description, required: param.required }); break; } } }); return props; } }) }, async run({ auth, propsValue }) { const authData = auth as InstasentAuthType; const baseUrl = getBaseUrl({ projectId: authData.projectId, datasourceId: authData.datasourceId }); const eventData = { _user_id: propsValue.user_id, _event_id: propsValue.event_id, _event_type: propsValue.event_type, _event_date: propsValue.event_date, _event_parameters: propsValue.event_parameters }; const response = await httpClient.sendRequest<ApiResponse<typeof eventData>>({ method: HttpMethod.POST, url: `${baseUrl}/stream/events`, headers: { 'Authorization': `Bearer ${authData.apiKey}`, 'Content-Type': 'application/json' }, body: [eventData] }); if (response.body.entitiesSuccess !== 1) { throw new Error(`Failed to create event: ${JSON.stringify(response.body.errors)}`); } return response.body; } });

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