Skip to main content
Glama
new-review.ts2.46 kB
import { createTrigger, TriggerStrategy, PiecePropValueSchema, StaticPropsValue, AppConnectionValueForAuthProperty, } from '@activepieces/pieces-framework'; import { DedupeStrategy, HttpMethod, Polling, pollingHelper, } from '@activepieces/pieces-common'; import dayjs from 'dayjs'; import { appfollowAuth } from '../common/auth'; import { application_ext_idDropdown, collection_idDropdown, formatDate, } from '../common/props'; import { makeRequest } from '../common/client'; const props = { collection_id: collection_idDropdown, app_ext_id: application_ext_idDropdown, }; const polling: Polling<AppConnectionValueForAuthProperty<typeof appfollowAuth>, StaticPropsValue<typeof props>> = { strategy: DedupeStrategy.TIMEBASED, items: async ({ auth, propsValue, lastFetchEpochMS }) => { const { app_ext_id } = propsValue; const fromDate = formatDate(lastFetchEpochMS); const toDate = formatDate(Date.now()); const url = `/reviews?ext_id=${app_ext_id}&from=${fromDate}&to=${toDate}`; const response = await makeRequest(auth.secret_text, HttpMethod.GET, url); return response .filter((item: any) => { const itemEpochMS = dayjs(item.created).valueOf(); return itemEpochMS > lastFetchEpochMS; }) .map((item: any) => ({ epochMilliSeconds: dayjs(item.created).valueOf(), data: item, })); }, }; export const newReview = createTrigger({ auth: appfollowAuth, name: 'newReview', displayName: 'New Review', description: 'Triggered when a new review is added', props, sampleData: { content: '. :)', user_id: 18426652, is_answer: 0, app_version: '1.0', created: '2025-11-21 14:25:56', store: 'as', id: 400558347, rating_prev: 0, locale: 'us', rating: 5, app_id: 1881629, dt: '2025-10-30 01:48:11', title: 'Great App!', date: '2025-10-30', time: '01:48:11', was_changed: 0, updated: '2025-11-21 14:25:56', author: 'JohnD', order_num: null, review_id: 13331753657, ext_id: 6746340356, }, type: TriggerStrategy.POLLING, async test(context) { return await pollingHelper.test(polling, context); }, async onEnable(context) { await pollingHelper.onEnable(polling, context); }, async onDisable(context) { await pollingHelper.onDisable(polling, context); }, async run(context) { return await pollingHelper.poll(polling, context); }, });

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