Skip to main content
Glama

mcp-google-sheets

client.ts2.88 kB
import { businessCentralAuth } from '../../'; import { HttpMessageBody, HttpMethod, QueryParams, httpClient, HttpRequest, AuthenticationType, HttpHeaders, } from '@activepieces/pieces-common'; import { PiecePropValueSchema } from '@activepieces/pieces-framework'; interface ListAPIResponse<T> { '@odata.context': string; value: Array<T>; } interface CompanyResponse { id: string; name: string; } export type filterParams = Record< string, string | number | string[] | undefined >; export class BusinessCentralAPIClient { constructor(private environment: string, private accessToken: string) {} async makeRequest<T extends HttpMessageBody>( method: HttpMethod, resourceUri: string, query?: filterParams, body: any | undefined = undefined ): Promise<T> { const baseUrl = `https://api.businesscentral.dynamics.com/v2.0/${this.environment}/api/v2.0`; const params: QueryParams = {}; const headers: HttpHeaders = {}; if (query) { for (const [key, value] of Object.entries(query)) { if (value !== null && value !== undefined) { params[key] = String(value); } } } if (method === HttpMethod.PATCH || method === HttpMethod.DELETE) { headers['If-Match'] = '*'; } const request: HttpRequest = { method: method, url: baseUrl + resourceUri, authentication: { type: AuthenticationType.BEARER_TOKEN, token: this.accessToken, }, headers, queryParams: params, body: body, }; const response = await httpClient.sendRequest<T>(request); return response.body; } async listCompanies(): Promise<ListAPIResponse<CompanyResponse>> { return await this.makeRequest(HttpMethod.GET, '/companies'); } async createRecord(endpoint: string, request: Record<string, any>) { return await this.makeRequest( HttpMethod.POST, endpoint, undefined, request ); } async updateRecord(endpoint: string, request: Record<string, any>) { return await this.makeRequest( HttpMethod.PATCH, endpoint, undefined, request ); } async getRecord(endpoint: string) { return await this.makeRequest(HttpMethod.GET, endpoint); } async deleteRecord(endpoint: string) { return await this.makeRequest(HttpMethod.DELETE, endpoint); } async filterRecords( companyId: string, recordType: string, params: filterParams ): Promise<ListAPIResponse<Record<string, unknown>>> { return await this.makeRequest( HttpMethod.GET, `/companies(${companyId})/${recordType}`, params ); } } export function makeClient( auth: PiecePropValueSchema<typeof businessCentralAuth> ) { const client = new BusinessCentralAPIClient( auth.props?.['environment'], auth.access_token ); return client; }

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