Skip to main content
Glama

mcp-google-sheets

api.ts3.21 kB
import { httpClient, HttpMethod, HttpRequest, } from '@activepieces/pieces-common'; import { SendyAuthType } from './auth'; type KeyValuePair = { [key: string]: string | boolean | undefined }; const isSuccess = (text: string) => { // The following terms are found in success messages from the Sendy API const terms = [ 'created', 'scheduled', 'subscribed', 'unconfirmed', 'bounced', 'complained', 'true', '1', ]; const lowercase = text.toLowerCase(); return terms.some((term) => lowercase.includes(term.toLowerCase())); }; const sendyPostAPI = async ( api: string, auth: SendyAuthType, body: KeyValuePair = {} ) => { const { apiKey, domain, brandId } = auth; body['api_key'] = apiKey; body['brand_id'] = brandId; const request: HttpRequest = { method: HttpMethod.POST, url: `${domain}${api}`, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: body, }; const response = await httpClient.sendRequest(request); let data = []; let success = false; let text = 'Success'; // If the response is a JSON object, then we know that the request was successful if (typeof response.body === 'object') { data = Object.keys(response.body).map((key) => response.body[key]); success = true; } else { text = response.body as string; if (isSuccess(text.toString())) success = true; } return { success: success, text: text, data: data, }; }; export async function getBrands(auth: SendyAuthType) { const api = '/api/brands/get-brands.php'; return sendyPostAPI(api, auth); } export async function getLists(auth: SendyAuthType, data: KeyValuePair = {}) { const api = '/api/lists/get-lists.php'; return sendyPostAPI(api, auth, data); } export async function subscribe(auth: SendyAuthType, data: KeyValuePair) { const api = '/subscribe'; data['boolean'] = 'true'; // plain text response return sendyPostAPI(api, auth, data); } export async function subscribeMultiple( auth: SendyAuthType, data: KeyValuePair ) { const api = '/subscribe'; data['boolean'] = 'true'; // plain text response return sendyPostAPI(api, auth, data); } export async function unsubscribe(auth: SendyAuthType, data: KeyValuePair) { const api = '/unsubscribe'; data['boolean'] = 'true'; // plain text response return sendyPostAPI(api, auth, data); } // delete is a reserved word export async function deleteSubscriber( auth: SendyAuthType, data: KeyValuePair ) { const api = '/api/subscribers/delete.php'; return sendyPostAPI(api, auth, data); } export async function status(auth: SendyAuthType, data: KeyValuePair) { const api = '/api/subscribers/subscription-status.php'; return sendyPostAPI(api, auth, data); } export async function count(auth: SendyAuthType, data: KeyValuePair) { const api = '/api/subscribers/active-subscriber-count.php'; const response = await sendyPostAPI(api, auth, data); if (typeof response.text === 'number') response.success = true; return response; } export async function createCampaign(auth: SendyAuthType, data: KeyValuePair) { const api = '/api/campaigns/create.php'; return sendyPostAPI(api, auth, data); }

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