Skip to main content
Glama
index.ts5.72 kB
import { PieceAuth } from "@activepieces/pieces-framework"; import { httpClient, HttpMethod } from "@activepieces/pieces-common"; // Action imports // Customer actions export { createCustomer } from "../actions/create-customer"; export { getCustomers } from "../actions/get-customers"; export { getCustomer } from "../actions/get-customer"; export { updateCustomer } from "../actions/update-customer"; export { getCustomerAddresses } from "../actions/get-customer-addresses"; export { createCustomerAddress } from "../actions/create-customer-address"; export { getCustomerAddress } from "../actions/get-customer-address"; // Job actions export { createJob } from "../actions/create-job"; export { getJobs } from "../actions/get-jobs"; export { getJob } from "../actions/get-job"; export { updateJobSchedule } from "../actions/update-job-schedule"; export { deleteJobSchedule } from "../actions/delete-job-schedule"; export { createJobAppointment } from "../actions/create-job-appointment"; export { getJobAppointments } from "../actions/get-job-appointments"; export { updateJobAppointment } from "../actions/update-job-appointment"; export { deleteJobAppointment } from "../actions/delete-job-appointment"; export { addJobNote } from "../actions/add-job-note"; export { deleteJobNote } from "../actions/delete-job-note"; export { addJobAttachment } from "../actions/add-job-attachment"; export { addJobLineItem } from "../actions/add-job-line-item"; export { updateJobLineItem } from "../actions/update-job-line-item"; export { deleteJobLineItem } from "../actions/delete-job-line-item"; export { getJobLineItems } from "../actions/get-job-line-items"; export { addJobTag } from "../actions/add-job-tag"; export { removeJobTag } from "../actions/remove-job-tag"; export { createJobLink } from "../actions/create-job-link"; export { getJobInvoices } from "../actions/get-job-invoices"; export { getJobInputMaterials } from "../actions/get-job-input-materials"; export { bulkUpdateJobLineItems } from "../actions/bulk-update-job-line-items"; export { bulkUpdateJobInputMaterials } from "../actions/bulk-update-job-input-materials"; export { dispatchJobToEmployees } from "../actions/dispatch-job-to-employees"; export { lockJob } from "../actions/lock-job"; export { lockJobs } from "../actions/lock-jobs"; // Estimate actions export { createEstimate } from "../actions/create-estimate"; export { getEstimate } from "../actions/get-estimate"; export { getEstimates } from "../actions/get-estimates"; export { createEstimateOptionNote } from "../actions/create-estimate-option-note"; export { deleteEstimateOptionNote } from "../actions/delete-estimate-option-note"; export { createEstimateOptionAttachment } from "../actions/create-estimate-option-attachment"; export { createEstimateOptionLink } from "../actions/create-estimate-option-link"; export { updateEstimateOptionSchedule } from "../actions/update-estimate-option-schedule"; // Lead actions export { createLead } from "../actions/create-lead"; export { getLead } from "../actions/get-lead"; export { getLeads } from "../actions/get-leads"; export { convertLeadToEstimateOrJob } from "../actions/convert-lead-to-estimate-or-job"; export const baseUrl = "https://api.housecallpro.com"; export const housecallProAuth = PieceAuth.SecretText({ displayName: "API Key", description: "Your Housecall Pro API Key. You can find it in your Housecall Pro account settings under API.", required: true, validate: async ({ auth }) => { try { // Validate the API key by making a simple request to get customers const response = await httpClient.sendRequest({ url: `${baseUrl}/customers`, method: HttpMethod.GET, headers: { "Authorization": `Token ${auth}`, "Content-Type": "application/json", }, queryParams: { page_size: "1", // Just get one to validate }, }); if (response.status === 200) { return { valid: true, }; } else { return { valid: false, error: "Invalid API key or insufficient permissions", }; } } catch (error) { return { valid: false, error: "Unable to validate API key. Please check your API credentials.", }; } }, }); // Common API functions export async function makeHousecallProRequest( auth: string, endpoint: string, method: HttpMethod = HttpMethod.GET, body?: any, queryParams?: Record<string, string> ) { const fullUrl = `${baseUrl}${endpoint}`; return await httpClient.sendRequest({ url: fullUrl, method, headers: { "Authorization": `Token ${auth}`, "Content-Type": "application/json", }, body, queryParams, }); } export interface HousecallProCustomer { id?: number; first_name: string; last_name: string; email?: string; phone?: string; mobile?: string; company?: string; address?: string; city?: string; state?: string; zip?: string; notes?: string; tags?: string[]; created_at?: string; updated_at?: string; } export interface HousecallProJob { id?: number; customer_id: number; title: string; description?: string; work_status?: string; scheduled_date?: string; scheduled_time?: string; duration?: number; address?: string; city?: string; state?: string; zip?: string; notes?: string; created_at?: string; updated_at?: string; } export interface HousecallProEstimate { id?: number; customer_id: number; job_id?: number; title: string; description?: string; status?: string; total_amount?: number; valid_until?: string; notes?: string; created_at?: string; updated_at?: 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