Skip to main content
Glama

mcp-google-sheets

client.ts4.52 kB
import { HttpMessageBody, HttpMethod, QueryParams, httpClient, } from '@activepieces/pieces-common'; import { OrderStatus } from './constants'; import { BusinessTimingInput, Category, CategoryInput, ListAPIResponse, Product, ProductDiscountInput, ProductInput, } from './types'; function emptyValueFilter( accessor: (key: string) => any ): (key: string) => boolean { return (key: string) => { const val = accessor(key); return ( val !== null && val !== undefined && (typeof val != 'string' || val.length > 0) ); }; } export function prepareQuery(request?: Record<string, any>): QueryParams { const params: QueryParams = {}; if (!request) return params; Object.keys(request) .filter(emptyValueFilter((k) => request[k])) .forEach((k: string) => { params[k] = (request as Record<string, any>)[k].toString(); }); return params; } export class QuickzuAPIClient { constructor(private apiToken: string) {} async makeRequest<T extends HttpMessageBody = any>( method: HttpMethod, resourceUri: string, query?: QueryParams, body: any | undefined = undefined ): Promise<T> { // const baseUrl = this.apiTableUrl.replace(/\/$/, ''); const res = await httpClient.sendRequest<any>({ method: method, url: `https://app.quickzu.com/api` + resourceUri, headers: { Authorization: this.apiToken, }, queryParams: query, body: body, }); return res.body; } async createCategory(categoryInput: CategoryInput) { return await this.makeRequest( HttpMethod.POST, '/seller/categories/', undefined, categoryInput ); } async updateCategory( categoryId: string, categoryInput: Partial<CategoryInput> ) { return await this.makeRequest( HttpMethod.PUT, `/seller/categories/${categoryId}`, undefined, categoryInput ); } async deleteCategory(categoryId: string) { return await this.makeRequest( HttpMethod.DELETE, `/seller/categories/${categoryId}` ); } async listCategories(term?: string): Promise<ListAPIResponse<Category>> { return await this.makeRequest<ListAPIResponse<Category>>( HttpMethod.GET, '/seller/categories', prepareQuery({ term: term, }) ); } async createProduct(productInput: ProductInput) { return await this.makeRequest( HttpMethod.POST, '/seller/products', undefined, productInput ); } async updateProduct(productId: string, productInput: Partial<ProductInput>) { return await this.makeRequest( HttpMethod.PUT, `/seller/products/${productId}`, undefined, productInput ); } async deleteProduct(productId: string) { return await this.makeRequest( HttpMethod.DELETE, `/seller/products/${productId}` ); } async listProducts( term?: string, categoryId?: string ): Promise<ListAPIResponse<Product>> { return await this.makeRequest<ListAPIResponse<Product>>( HttpMethod.GET, '/seller/products', prepareQuery({ term: term, category: categoryId, }) ); } async getOrderDetails(orderId: string) { return await this.makeRequest(HttpMethod.GET, `/seller/orders/${orderId}`); } async updateOrderStatus(orderId: string, status: OrderStatus) { return await this.makeRequest( HttpMethod.PUT, `/seller/orders/${orderId}`, undefined, { status: status, } ); } async listOrders(page: number, limit: number) { return await this.makeRequest( HttpMethod.GET, '/seller/orders/', prepareQuery({ page: page, limit: limit }) ); } async listLiveOrders(limit: number) { return await this.makeRequest( HttpMethod.GET, '/seller/orders/live', prepareQuery({ limit: limit }) ); } async createProductDiscount(discountInput: ProductDiscountInput) { return await this.makeRequest( HttpMethod.POST, '/seller/discounts', undefined, discountInput ); } async createPromoCode(promocodeInput: ProductDiscountInput) { return await this.makeRequest( HttpMethod.POST, '/seller/discounts', undefined, promocodeInput ); } async updateBusinessTime(timingInput: BusinessTimingInput) { return await this.makeRequest( HttpMethod.PUT, '/seller/settings', undefined, timingInput ); } }

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