import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { fountainAuth } from '../../';
import { getAuthHeaders } from '../common/auth';
import { getFunnelsDropdown } from '../common/dropdowns';
async function getApplicantsDropdown(auth: string): Promise<{ label: string; value: string }[]> {
try {
const response = await httpClient.sendRequest({
method: HttpMethod.GET,
url: 'https://api.fountain.com/v2/applicants',
headers: getAuthHeaders(auth),
queryParams: { per_page: '50' },
});
const applicants = response.body?.applicants || [];
return applicants.map((applicant: any) => ({
label: `${applicant.name} (${applicant.email})`,
value: applicant.id,
}));
} catch (error) {
return [];
}
}
export const fountainGetInterviewSessions = createAction({
name: 'get_interview_sessions',
auth: fountainAuth,
displayName: 'Get Interview Sessions',
description: 'Returns the applicant\'s interview sessions',
props: {
id: Property.Dropdown({
displayName: 'Applicant',
description: 'The applicant to get interview sessions for (shows 50 most recent applicants)',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) return { disabled: true, options: [], placeholder: 'Connect account first' };
return { disabled: false, options: await getApplicantsDropdown(auth as string) };
},
}),
},
async run(context) {
const applicantId = context.propsValue.id;
const response = await httpClient.sendRequest({
method: HttpMethod.GET,
url: `https://api.fountain.com/v2/applicants/${applicantId}/booked_slots`,
headers: getAuthHeaders(context.auth),
});
return response.body;
},
});