Skip to main content
Glama

mcp-google-sheets

client.ts9.93 kB
import { HttpMessageBody, HttpMethod, QueryParams, httpClient, } from '@activepieces/pieces-common'; import { ListRequest, prepareListRequest } from './models/common'; import { UserCreateRequest, UserListResponse, UserSingleResponse, UserUpdateRequest, } from './models/user'; import { CustomerSingleResponse, CustomerListResponse, CustomerCreateRequest, CustomerUpdateRequest, CustomerListFilter, Customer, } from './models/customer'; import { ProjectSingleResponse, ProjectListResponse, ProjectCreateRequest, ProjectUpdateRequest, ProjectListFilter, Project, } from './models/project'; import { ServiceSingleResponse, ServiceListResponse, ServiceCreateRequest, ServiceUpdateRequest, } from './models/service'; import { EntrySingleResponse, EntryListResponse, EntryCreateRequest, EntryUpdateRequest, EntryListRequest, Entry, EntryListFilter, } from './models/entry'; import { AbsenceSingleResponse, AbsenceListResponse, AbsenceCreateRequest, AbsenceUpdateRequest, AbsenceListRequest, } from './models/absence'; import { TeamCreateRequest, TeamListResponse, TeamSingleResponse, TeamUpdateRequest, } from './models/team'; export class ClockodoClient { private clientIdentification: string; private language = 'en'; constructor( private email: string, private token: string, clientName: string, clientEmail: string ) { this.clientIdentification = clientName + ';' + clientEmail; } setLanguage(language: string) { this.language = language; } async makeRequest<T extends HttpMessageBody>( method: HttpMethod, url: string, query?: QueryParams, body?: object ): Promise<T> { const res = await httpClient.sendRequest<T>({ method, url: 'https://my.clockodo.com/api' + url, queryParams: query, body, headers: { 'X-ClockodoApiUser': this.email, 'X-ClockodoApiKey': this.token, 'X-Clockodo-External-Application': this.clientIdentification, 'Accept-Language': this.language, }, }); return res.body; } listUsers(): Promise<UserListResponse> { return this.makeRequest<UserListResponse>(HttpMethod.GET, '/v2/users'); } getUser(id: number): Promise<UserSingleResponse> { return this.makeRequest<UserSingleResponse>( HttpMethod.GET, '/v2/users/' + id ); } createUser(request: UserCreateRequest) { return this.makeRequest<UserSingleResponse>( HttpMethod.POST, '/v2/users', undefined, request ); } updateUser( id: number, request: UserUpdateRequest ): Promise<UserSingleResponse> { return this.makeRequest<UserSingleResponse>( HttpMethod.PUT, '/v2/users/' + id, undefined, request ); } deleteUser(id: number): Promise<object> { return this.makeRequest<object>(HttpMethod.DELETE, '/v2/users/' + id); } listTeams(): Promise<TeamListResponse> { return this.makeRequest<TeamListResponse>(HttpMethod.GET, '/v2/teams'); } getTeam(id: number): Promise<TeamSingleResponse> { return this.makeRequest<TeamSingleResponse>( HttpMethod.GET, '/v2/teams/' + id ); } createTeam(request: TeamCreateRequest) { return this.makeRequest<TeamSingleResponse>( HttpMethod.POST, '/v2/teams', undefined, request ); } updateTeam( id: number, request: TeamUpdateRequest ): Promise<TeamSingleResponse> { return this.makeRequest<TeamSingleResponse>( HttpMethod.PUT, '/v2/teams/' + id, undefined, request ); } deleteTeam(id: number): Promise<object> { return this.makeRequest<object>(HttpMethod.DELETE, '/v2/teams/' + id); } listCustomers( request: ListRequest<CustomerListFilter> = {} ): Promise<CustomerListResponse> { return this.makeRequest<CustomerListResponse>( HttpMethod.GET, '/v2/customers', prepareListRequest(request) ); } async listAllCustomers(filter: CustomerListFilter = {}): Promise<Customer[]> { let totalPages = 999999; const all: Customer[] = []; for (let page = 0; page < totalPages; page++) { const res = await this.listCustomers({ page: page + 1, filter, }); totalPages = res.paging.count_pages; res.customers.forEach((e) => all.push(e)); } return all; } getCustomer(id: number): Promise<CustomerSingleResponse> { return this.makeRequest<CustomerSingleResponse>( HttpMethod.GET, '/v2/customers/' + id ); } createCustomer(request: CustomerCreateRequest) { return this.makeRequest<CustomerSingleResponse>( HttpMethod.POST, '/v2/customers', undefined, request ); } updateCustomer( id: number, request: CustomerUpdateRequest ): Promise<CustomerSingleResponse> { return this.makeRequest<CustomerSingleResponse>( HttpMethod.PUT, '/v2/customers/' + id, undefined, request ); } deleteCustomer(id: number): Promise<object> { return this.makeRequest<object>(HttpMethod.DELETE, '/v2/customers/' + id); } listProjects( request: ListRequest<ProjectListFilter> = {} ): Promise<ProjectListResponse> { return this.makeRequest<ProjectListResponse>( HttpMethod.GET, '/v2/projects', prepareListRequest(request) ); } async listAllProjects(filter: ProjectListFilter = {}): Promise<Project[]> { let totalPages = 999999; const all: Project[] = []; for (let page = 0; page < totalPages; page++) { const res = await this.listProjects({ page: page + 1, filter, }); totalPages = res.paging.count_pages; res.projects.forEach((e) => all.push(e)); } return all; } getProject(id: number): Promise<ProjectSingleResponse> { return this.makeRequest<ProjectSingleResponse>( HttpMethod.GET, '/v2/projects/' + id ); } createProject(request: ProjectCreateRequest) { return this.makeRequest<ProjectSingleResponse>( HttpMethod.POST, '/v2/projects', undefined, request ); } updateProject( id: number, request: ProjectUpdateRequest ): Promise<ProjectSingleResponse> { return this.makeRequest<ProjectSingleResponse>( HttpMethod.PUT, '/v2/projects/' + id, undefined, request ); } deleteProject(id: number): Promise<object> { return this.makeRequest<object>(HttpMethod.DELETE, '/v2/projects/' + id); } listServices(): Promise<ServiceListResponse> { return this.makeRequest<ServiceListResponse>( HttpMethod.GET, '/v2/services' ); } getService(id: number): Promise<ServiceSingleResponse> { return this.makeRequest<ServiceSingleResponse>( HttpMethod.GET, '/v2/services/' + id ); } createService(request: ServiceCreateRequest) { return this.makeRequest<ServiceSingleResponse>( HttpMethod.POST, '/v2/services', undefined, request ); } updateService( id: number, request: ServiceUpdateRequest ): Promise<ServiceSingleResponse> { return this.makeRequest<ServiceSingleResponse>( HttpMethod.PUT, '/v2/services/' + id, undefined, request ); } deleteService(id: number): Promise<object> { return this.makeRequest<object>(HttpMethod.DELETE, '/v2/services/' + id); } listEntries(request: EntryListRequest): Promise<EntryListResponse> { return this.makeRequest<EntryListResponse>( HttpMethod.GET, '/v2/entries', prepareListRequest(request) ); } async listAllEntries( time_since: string, time_until: string, filter: EntryListFilter = {} ): Promise<Entry[]> { let totalPages = 999999; const all: Entry[] = []; for (let page = 0; page < totalPages; page++) { const res = await this.listEntries({ page: page + 1, time_since, time_until, filter, }); totalPages = res.paging.count_pages; res.entries.forEach((e) => all.push(e)); } return all; } getEntry(id: number): Promise<EntrySingleResponse> { return this.makeRequest<EntrySingleResponse>( HttpMethod.GET, '/v2/entries/' + id ); } createEntry(request: EntryCreateRequest) { return this.makeRequest<EntrySingleResponse>( HttpMethod.POST, '/v2/entries', undefined, request ); } updateEntry( id: number, request: EntryUpdateRequest ): Promise<EntrySingleResponse> { return this.makeRequest<EntrySingleResponse>( HttpMethod.PUT, '/v2/entries/' + id, undefined, request ); } deleteEntry(id: number): Promise<object> { return this.makeRequest<object>(HttpMethod.DELETE, '/v2/entries/' + id); } listAbsences(request: AbsenceListRequest): Promise<AbsenceListResponse> { const query: QueryParams = { year: request.year.toString(), }; if (request.users_id) query.users_id = request.users_id.toString(); return this.makeRequest<AbsenceListResponse>( HttpMethod.GET, '/absences', query ); } getAbsence(id: number): Promise<AbsenceSingleResponse> { return this.makeRequest<AbsenceSingleResponse>( HttpMethod.GET, '/absences/' + id ); } createAbsence(request: AbsenceCreateRequest) { return this.makeRequest<AbsenceSingleResponse>( HttpMethod.POST, '/absences', undefined, request ); } updateAbsence( id: number, request: AbsenceUpdateRequest ): Promise<AbsenceSingleResponse> { return this.makeRequest<AbsenceSingleResponse>( HttpMethod.PUT, '/absences/' + id, undefined, request ); } deleteAbsence(id: number): Promise<object> { return this.makeRequest<object>(HttpMethod.DELETE, '/absences/' + id); } }

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