Skip to main content
Glama

mcp-google-sheets

new-subscription.ts5.83 kB
import { createTrigger } from '@activepieces/pieces-framework'; import { TriggerStrategy } from '@activepieces/pieces-framework'; import { stripeCommon } from '../common'; import { stripeAuth } from '../..'; import { httpClient, HttpMethod } from '@activepieces/pieces-common'; import { isEmpty } from '@activepieces/shared'; export const stripeNewSubscription = createTrigger({ auth: stripeAuth, name: 'new_subscription', displayName: 'New Subscription', description: 'Triggers when a new subscription is made', props: {}, type: TriggerStrategy.WEBHOOK, sampleData: { id: 'sub_1MWMJXKZ0dZRqLEKJX80JXfv', object: 'subscription', application: null, application_fee_percent: null, automatic_tax: { enabled: true, }, billing_cycle_anchor: 1675181047, billing_thresholds: null, cancel_at: null, cancel_at_period_end: false, canceled_at: null, collection_method: 'charge_automatically', created: 1675181047, currency: 'usd', current_period_end: 1677600247, current_period_start: 1675181047, customer: 'cus_NGtvUQ18FJXcGI', days_until_due: null, default_payment_method: 'pm_1MWM8MKZ0dZRqLEKnIH41f76', default_source: null, default_tax_rates: [], description: null, discount: null, ended_at: null, items: { object: 'list', data: [ { id: 'si_NGu7pb7hS3Rps3', object: 'subscription_item', billing_thresholds: null, created: 1675181048, metadata: {}, plan: { id: 'price_1MWLz3KZ0dZRqLEK06gRMHCF', object: 'plan', active: true, aggregate_usage: null, amount: 10000, amount_decimal: '10000', billing_scheme: 'per_unit', created: 1675179777, currency: 'usd', interval: 'month', interval_count: 1, livemode: false, metadata: {}, nickname: null, product: 'prod_NGtm3AlvaGjaLN', tiers_mode: null, transform_usage: null, trial_period_days: null, usage_type: 'licensed', }, price: { id: 'price_1MWLz3KZ0dZRqLEK06gRMHCF', object: 'price', active: true, billing_scheme: 'per_unit', created: 1675179777, currency: 'usd', custom_unit_amount: null, livemode: false, lookup_key: null, metadata: {}, nickname: null, product: 'prod_NGtm3AlvaGjaLN', recurring: { aggregate_usage: null, interval: 'month', interval_count: 1, trial_period_days: null, usage_type: 'licensed', }, tax_behavior: 'exclusive', tiers_mode: null, transform_quantity: null, type: 'recurring', unit_amount: 10000, unit_amount_decimal: '10000', }, quantity: 1, subscription: 'sub_1MWMJXKZ0dZRqLEKJX80JXfv', tax_rates: [], }, ], has_more: false, total_count: 1, url: '/v1/subscription_items?subscription=sub_1MWMJXKZ0dZRqLEKJX80JXfv', }, latest_invoice: 'in_1MWMJXKZ0dZRqLEKIu4a51u7', livemode: false, metadata: {}, next_pending_invoice_item_invoice: null, on_behalf_of: null, pause_collection: null, payment_settings: { payment_method_options: null, payment_method_types: null, save_default_payment_method: 'off', }, pending_invoice_item_interval: null, pending_setup_intent: null, pending_update: null, plan: { id: 'price_1MWLz3KZ0dZRqLEK06gRMHCF', object: 'plan', active: true, aggregate_usage: null, amount: 10000, amount_decimal: '10000', billing_scheme: 'per_unit', created: 1675179777, currency: 'usd', interval: 'month', interval_count: 1, livemode: false, metadata: {}, nickname: null, product: 'prod_NGtm3AlvaGjaLN', tiers_mode: null, transform_usage: null, trial_period_days: null, usage_type: 'licensed', }, quantity: 1, schedule: null, start_date: 1675181047, status: 'active', test_clock: null, transfer_data: null, trial_end: null, trial_start: null, }, async onEnable(context) { const webhook = await stripeCommon.subscribeWebhook( 'customer.subscription.created', context.webhookUrl!, context.auth ); await context.store?.put<WebhookInformation>( '_new_customer_subscription_trigger', { webhookId: webhook.id, } ); }, async onDisable(context) { const response = await context.store?.get<WebhookInformation>( '_new_customer_subscription_trigger' ); if (response !== null && response !== undefined) { await stripeCommon.unsubscribeWebhook(response.webhookId, context.auth); } }, async test(context) { const response = await httpClient.sendRequest<{ data: { id: string }[] }>({ method: HttpMethod.GET, url: 'https://api.stripe.com/v1/subscriptions', headers: { Authorization: 'Bearer ' + context.auth, 'Content-Type': 'application/x-www-form-urlencoded', }, queryParams: { limit: '5', }, }); if (isEmpty(response.body) || isEmpty(response.body.data)) return []; return response.body.data; }, async run(context) { const payloadBody = context.payload.body as PayloadBody; return [payloadBody.data.object]; }, }); type PayloadBody = { data: { object: unknown; }; }; interface WebhookInformation { webhookId: string; }

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