@bubblelab/bubble-core 0.1.36 → 0.1.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bubble-bundle.d.ts +179 -101
- package/dist/bubble-factory.d.ts.map +1 -1
- package/dist/bubble-factory.js +8 -0
- package/dist/bubble-factory.js.map +1 -1
- package/dist/bubbles/service-bubble/agi-inc.d.ts +66 -66
- package/dist/bubbles/service-bubble/airtable.d.ts +178 -178
- package/dist/bubbles/service-bubble/apify/apify.d.ts +12 -12
- package/dist/bubbles/service-bubble/ashby/ashby.d.ts +1363 -0
- package/dist/bubbles/service-bubble/ashby/ashby.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/ashby/ashby.js +399 -0
- package/dist/bubbles/service-bubble/ashby/ashby.js.map +1 -0
- package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +1789 -0
- package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/ashby/ashby.schema.js +445 -0
- package/dist/bubbles/service-bubble/ashby/ashby.schema.js.map +1 -0
- package/dist/bubbles/service-bubble/ashby/index.d.ts +3 -0
- package/dist/bubbles/service-bubble/ashby/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/ashby/index.js +3 -0
- package/dist/bubbles/service-bubble/ashby/index.js.map +1 -0
- package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +22 -22
- package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +51 -51
- package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +1421 -27
- package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/crustdata/crustdata.js +139 -0
- package/dist/bubbles/service-bubble/crustdata/crustdata.js.map +1 -1
- package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +4211 -1857
- package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/crustdata/crustdata.schema.js +198 -0
- package/dist/bubbles/service-bubble/crustdata/crustdata.schema.js.map +1 -1
- package/dist/bubbles/service-bubble/crustdata/index.d.ts +1 -1
- package/dist/bubbles/service-bubble/crustdata/index.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/crustdata/index.js +3 -1
- package/dist/bubbles/service-bubble/crustdata/index.js.map +1 -1
- package/dist/bubbles/service-bubble/eleven-labs.d.ts +28 -28
- package/dist/bubbles/service-bubble/firecrawl.d.ts +192 -192
- package/dist/bubbles/service-bubble/followupboss.d.ts +401 -401
- package/dist/bubbles/service-bubble/fullenrich/fullenrich.d.ts +1269 -0
- package/dist/bubbles/service-bubble/fullenrich/fullenrich.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/fullenrich/fullenrich.js +299 -0
- package/dist/bubbles/service-bubble/fullenrich/fullenrich.js.map +1 -0
- package/dist/bubbles/service-bubble/fullenrich/fullenrich.schema.d.ts +2089 -0
- package/dist/bubbles/service-bubble/fullenrich/fullenrich.schema.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/fullenrich/fullenrich.schema.js +390 -0
- package/dist/bubbles/service-bubble/fullenrich/fullenrich.schema.js.map +1 -0
- package/dist/bubbles/service-bubble/fullenrich/index.d.ts +4 -0
- package/dist/bubbles/service-bubble/fullenrich/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/fullenrich/index.js +3 -0
- package/dist/bubbles/service-bubble/fullenrich/index.js.map +1 -0
- package/dist/bubbles/service-bubble/github.d.ts +164 -164
- package/dist/bubbles/service-bubble/gmail.d.ts +473 -473
- package/dist/bubbles/service-bubble/google-calendar.d.ts +212 -212
- package/dist/bubbles/service-bubble/google-drive.d.ts +96 -96
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +38 -38
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.d.ts +54 -54
- package/dist/bubbles/service-bubble/http.d.ts +12 -12
- package/dist/bubbles/service-bubble/insforge-db.d.ts +6 -6
- package/dist/bubbles/service-bubble/jira/jira.d.ts +105 -105
- package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +84 -84
- package/dist/bubbles/service-bubble/notion/notion.d.ts +184 -184
- package/dist/bubbles/service-bubble/postgresql.d.ts +6 -6
- package/dist/bubbles/service-bubble/resend.d.ts +12 -12
- package/dist/bubbles/service-bubble/slack/slack.d.ts +394 -394
- package/dist/bubbles/service-bubble/storage.d.ts +52 -52
- package/dist/bubbles/service-bubble/telegram.d.ts +514 -514
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +12 -12
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +35 -35
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +144 -144
- package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +24 -24
- package/dist/bubbles/tool-bubble/instagram-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +306 -306
- package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/people-search-tool.d.ts +422 -216
- package/dist/bubbles/tool-bubble/people-search-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/people-search-tool.js +201 -2
- package/dist/bubbles/tool-bubble/people-search-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +20 -20
- package/dist/bubbles/tool-bubble/research-agent-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/research-agent-tool.js +3 -4
- package/dist/bubbles/tool-bubble/research-agent-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +48 -48
- package/dist/bubbles/tool-bubble/twitter-tool.d.ts +92 -92
- package/dist/bubbles/tool-bubble/web-search-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/youtube-tool.d.ts +24 -24
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +60 -60
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +4 -4
- package/dist/bubbles.json +4768 -1722
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ashby.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/ashby/ashby.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
import { CredentialType } from '@bubblelab/shared-schemas';
|
|
2
|
+
import { ServiceBubble } from '../../../types/service-bubble-class.js';
|
|
3
|
+
import { AshbyParamsSchema, AshbyResultSchema, } from './ashby.schema.js';
|
|
4
|
+
// Ashby API base URL
|
|
5
|
+
const ASHBY_API_BASE = 'https://api.ashbyhq.com';
|
|
6
|
+
/**
|
|
7
|
+
* AshbyBubble - Integration with Ashby ATS (Applicant Tracking System)
|
|
8
|
+
*
|
|
9
|
+
* Provides operations for managing candidates in Ashby:
|
|
10
|
+
* - List candidates with filtering
|
|
11
|
+
* - Get candidate details
|
|
12
|
+
* - Create new candidates
|
|
13
|
+
* - Search candidates by email or name
|
|
14
|
+
* - Add tags to candidates
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* // List all active candidates
|
|
19
|
+
* const result = await new AshbyBubble({
|
|
20
|
+
* operation: 'list_candidates',
|
|
21
|
+
* status: 'Active',
|
|
22
|
+
* limit: 50,
|
|
23
|
+
* }).action();
|
|
24
|
+
*
|
|
25
|
+
* // Get a specific candidate
|
|
26
|
+
* const candidate = await new AshbyBubble({
|
|
27
|
+
* operation: 'get_candidate',
|
|
28
|
+
* candidate_id: 'abc123-uuid',
|
|
29
|
+
* }).action();
|
|
30
|
+
*
|
|
31
|
+
* // Create a new candidate
|
|
32
|
+
* const newCandidate = await new AshbyBubble({
|
|
33
|
+
* operation: 'create_candidate',
|
|
34
|
+
* first_name: 'John',
|
|
35
|
+
* last_name: 'Doe',
|
|
36
|
+
* email: 'john.doe@example.com',
|
|
37
|
+
* }).action();
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export class AshbyBubble extends ServiceBubble {
|
|
41
|
+
// REQUIRED: Static metadata for BubbleFactory
|
|
42
|
+
static service = 'ashby';
|
|
43
|
+
static authType = 'basic';
|
|
44
|
+
static bubbleName = 'ashby';
|
|
45
|
+
static type = 'service';
|
|
46
|
+
static schema = AshbyParamsSchema;
|
|
47
|
+
static resultSchema = AshbyResultSchema;
|
|
48
|
+
static shortDescription = 'Ashby ATS integration for candidate management';
|
|
49
|
+
static longDescription = `
|
|
50
|
+
Ashby is an applicant tracking system (ATS) for modern recruiting teams.
|
|
51
|
+
This bubble provides operations for:
|
|
52
|
+
- Listing and filtering candidates
|
|
53
|
+
- Retrieving candidate details
|
|
54
|
+
- Creating new candidates
|
|
55
|
+
- Searching candidates by email or name
|
|
56
|
+
- Managing candidate tags (list, create, add to candidates)
|
|
57
|
+
- Listing custom field definitions
|
|
58
|
+
|
|
59
|
+
Security Features:
|
|
60
|
+
- Uses HTTP Basic Authentication with API key
|
|
61
|
+
- API key is stored encrypted and never exposed in logs
|
|
62
|
+
|
|
63
|
+
Use Cases:
|
|
64
|
+
- Sync candidates from external sources
|
|
65
|
+
- Automate candidate tagging workflows
|
|
66
|
+
- Build custom recruiting dashboards
|
|
67
|
+
- Integrate recruiting data with other systems
|
|
68
|
+
- Retrieve custom field metadata for building dynamic forms
|
|
69
|
+
`;
|
|
70
|
+
static alias = 'ashby-ats';
|
|
71
|
+
constructor(params = {
|
|
72
|
+
operation: 'list_candidates',
|
|
73
|
+
limit: 100,
|
|
74
|
+
}, context) {
|
|
75
|
+
super(params, context);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Choose the appropriate credential for Ashby API
|
|
79
|
+
*/
|
|
80
|
+
chooseCredential() {
|
|
81
|
+
const params = this.params;
|
|
82
|
+
const credentials = params.credentials;
|
|
83
|
+
if (!credentials || typeof credentials !== 'object') {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
return credentials[CredentialType.ASHBY_CRED];
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Test if the credential is valid by making a simple API call
|
|
90
|
+
*/
|
|
91
|
+
async testCredential() {
|
|
92
|
+
try {
|
|
93
|
+
const apiKey = this.chooseCredential();
|
|
94
|
+
if (!apiKey) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
// Use API key info endpoint to validate credential
|
|
98
|
+
const response = await this.makeAshbyRequest('apiKey.info', {});
|
|
99
|
+
return response.success === true;
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Perform the Ashby operation
|
|
107
|
+
*/
|
|
108
|
+
async performAction(context) {
|
|
109
|
+
void context; // Mark as intentionally unused
|
|
110
|
+
// Cast to OUTPUT type - base class already validated and applied defaults
|
|
111
|
+
const params = this.params;
|
|
112
|
+
const { operation } = params;
|
|
113
|
+
try {
|
|
114
|
+
switch (operation) {
|
|
115
|
+
case 'list_candidates':
|
|
116
|
+
return (await this.listCandidates(params));
|
|
117
|
+
case 'get_candidate':
|
|
118
|
+
return (await this.getCandidate(params));
|
|
119
|
+
case 'create_candidate':
|
|
120
|
+
return (await this.createCandidate(params));
|
|
121
|
+
case 'search_candidates':
|
|
122
|
+
return (await this.searchCandidates(params));
|
|
123
|
+
case 'add_tag':
|
|
124
|
+
return (await this.addTag(params));
|
|
125
|
+
case 'list_tags':
|
|
126
|
+
return (await this.listTags(params));
|
|
127
|
+
case 'create_tag':
|
|
128
|
+
return (await this.createTag(params));
|
|
129
|
+
case 'list_custom_fields':
|
|
130
|
+
return (await this.listCustomFields(params));
|
|
131
|
+
default:
|
|
132
|
+
throw new Error(`Unknown operation: ${operation}`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
137
|
+
return {
|
|
138
|
+
operation,
|
|
139
|
+
success: false,
|
|
140
|
+
error: errorMessage,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Extract error message from Ashby API error response
|
|
146
|
+
*/
|
|
147
|
+
extractErrorMessage(data) {
|
|
148
|
+
// Try multiple possible error locations in Ashby API responses
|
|
149
|
+
// 1. Check errors array (most detailed)
|
|
150
|
+
const errors = data.errors;
|
|
151
|
+
if (errors && errors.length > 0 && errors[0]?.message) {
|
|
152
|
+
return errors[0].message;
|
|
153
|
+
}
|
|
154
|
+
// 2. Check errorInfo object
|
|
155
|
+
const errorInfo = data.errorInfo;
|
|
156
|
+
if (errorInfo?.message) {
|
|
157
|
+
return String(errorInfo.message);
|
|
158
|
+
}
|
|
159
|
+
// 3. Check top-level message
|
|
160
|
+
if (data.message) {
|
|
161
|
+
return String(data.message);
|
|
162
|
+
}
|
|
163
|
+
// 4. Check error field
|
|
164
|
+
if (data.error) {
|
|
165
|
+
return String(data.error);
|
|
166
|
+
}
|
|
167
|
+
// 5. Fallback: stringify the entire response for debugging
|
|
168
|
+
return `Ashby API error: ${JSON.stringify(data)}`;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Make an authenticated request to the Ashby API
|
|
172
|
+
*/
|
|
173
|
+
async makeAshbyRequest(endpoint, body) {
|
|
174
|
+
const apiKey = this.chooseCredential();
|
|
175
|
+
if (!apiKey) {
|
|
176
|
+
throw new Error('Ashby API key is required');
|
|
177
|
+
}
|
|
178
|
+
// Ashby uses HTTP Basic Auth with API key as username, empty password
|
|
179
|
+
const authHeader = `Basic ${Buffer.from(`${apiKey}:`).toString('base64')}`;
|
|
180
|
+
const response = await fetch(`${ASHBY_API_BASE}/${endpoint}`, {
|
|
181
|
+
method: 'POST',
|
|
182
|
+
headers: {
|
|
183
|
+
Authorization: authHeader,
|
|
184
|
+
'Content-Type': 'application/json',
|
|
185
|
+
},
|
|
186
|
+
body: JSON.stringify(body),
|
|
187
|
+
});
|
|
188
|
+
const data = (await response.json());
|
|
189
|
+
// Ashby returns success: false in the body for errors
|
|
190
|
+
if (data.success === false) {
|
|
191
|
+
const errorMessage = this.extractErrorMessage(data);
|
|
192
|
+
throw new Error(errorMessage);
|
|
193
|
+
}
|
|
194
|
+
// Also check HTTP status code
|
|
195
|
+
if (!response.ok) {
|
|
196
|
+
const errorMessage = this.extractErrorMessage(data);
|
|
197
|
+
throw new Error(`HTTP ${response.status}: ${errorMessage}`);
|
|
198
|
+
}
|
|
199
|
+
return data;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* List candidates with optional filtering
|
|
203
|
+
*/
|
|
204
|
+
async listCandidates(params) {
|
|
205
|
+
const body = {};
|
|
206
|
+
if (params.limit !== undefined) {
|
|
207
|
+
body.limit = params.limit;
|
|
208
|
+
}
|
|
209
|
+
if (params.cursor) {
|
|
210
|
+
body.cursor = params.cursor;
|
|
211
|
+
}
|
|
212
|
+
if (params.status) {
|
|
213
|
+
body.status = params.status;
|
|
214
|
+
}
|
|
215
|
+
if (params.job_id) {
|
|
216
|
+
body.jobId = params.job_id;
|
|
217
|
+
}
|
|
218
|
+
if (params.created_after !== undefined) {
|
|
219
|
+
body.createdAfter = params.created_after;
|
|
220
|
+
}
|
|
221
|
+
const response = await this.makeAshbyRequest('candidate.list', body);
|
|
222
|
+
return {
|
|
223
|
+
operation: 'list_candidates',
|
|
224
|
+
success: true,
|
|
225
|
+
candidates: response.results,
|
|
226
|
+
next_cursor: response.nextCursor,
|
|
227
|
+
more_data_available: response.moreDataAvailable,
|
|
228
|
+
sync_token: response.syncToken,
|
|
229
|
+
error: '',
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Get detailed information about a specific candidate
|
|
234
|
+
*/
|
|
235
|
+
async getCandidate(params) {
|
|
236
|
+
const response = await this.makeAshbyRequest('candidate.info', {
|
|
237
|
+
id: params.candidate_id,
|
|
238
|
+
});
|
|
239
|
+
return {
|
|
240
|
+
operation: 'get_candidate',
|
|
241
|
+
success: true,
|
|
242
|
+
candidate: response.results,
|
|
243
|
+
error: '',
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Create a new candidate
|
|
248
|
+
*/
|
|
249
|
+
async createCandidate(params) {
|
|
250
|
+
const body = {
|
|
251
|
+
name: params.name,
|
|
252
|
+
};
|
|
253
|
+
if (params.email) {
|
|
254
|
+
body.email = params.email;
|
|
255
|
+
}
|
|
256
|
+
if (params.phone_number) {
|
|
257
|
+
body.phoneNumber = params.phone_number;
|
|
258
|
+
}
|
|
259
|
+
if (params.linkedin_url) {
|
|
260
|
+
body.linkedInUrl = params.linkedin_url;
|
|
261
|
+
}
|
|
262
|
+
if (params.github_url) {
|
|
263
|
+
body.githubUrl = params.github_url;
|
|
264
|
+
}
|
|
265
|
+
if (params.website) {
|
|
266
|
+
body.website = params.website;
|
|
267
|
+
}
|
|
268
|
+
if (params.source_id) {
|
|
269
|
+
body.sourceId = params.source_id;
|
|
270
|
+
}
|
|
271
|
+
if (params.credited_to_user_id) {
|
|
272
|
+
body.creditedToUserId = params.credited_to_user_id;
|
|
273
|
+
}
|
|
274
|
+
const response = await this.makeAshbyRequest('candidate.create', body);
|
|
275
|
+
const candidate = response.results;
|
|
276
|
+
// If tag is provided, add it to the newly created candidate
|
|
277
|
+
if (params.tag && candidate?.id) {
|
|
278
|
+
let tagId = params.tag;
|
|
279
|
+
// Check if it's a UUID format (tag ID) or a tag name
|
|
280
|
+
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
281
|
+
if (!uuidRegex.test(params.tag)) {
|
|
282
|
+
// It's a tag name, create the tag first
|
|
283
|
+
const tagResponse = await this.makeAshbyRequest('candidateTag.create', {
|
|
284
|
+
title: params.tag,
|
|
285
|
+
});
|
|
286
|
+
const createdTag = tagResponse.results;
|
|
287
|
+
if (createdTag?.id) {
|
|
288
|
+
tagId = createdTag.id;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// Add the tag to the candidate
|
|
292
|
+
await this.makeAshbyRequest('candidate.addTag', {
|
|
293
|
+
candidateId: candidate.id,
|
|
294
|
+
tagId: tagId,
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
return {
|
|
298
|
+
operation: 'create_candidate',
|
|
299
|
+
success: true,
|
|
300
|
+
candidate,
|
|
301
|
+
error: '',
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Search for candidates by email or name
|
|
306
|
+
*/
|
|
307
|
+
async searchCandidates(params) {
|
|
308
|
+
const body = {};
|
|
309
|
+
if (params.email) {
|
|
310
|
+
body.email = params.email;
|
|
311
|
+
}
|
|
312
|
+
if (params.name) {
|
|
313
|
+
body.name = params.name;
|
|
314
|
+
}
|
|
315
|
+
if (!params.email && !params.name) {
|
|
316
|
+
throw new Error('Either email or name is required for search');
|
|
317
|
+
}
|
|
318
|
+
const response = await this.makeAshbyRequest('candidate.search', body);
|
|
319
|
+
return {
|
|
320
|
+
operation: 'search_candidates',
|
|
321
|
+
success: true,
|
|
322
|
+
candidates: response.results,
|
|
323
|
+
error: '',
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Add a tag to a candidate
|
|
328
|
+
*/
|
|
329
|
+
async addTag(params) {
|
|
330
|
+
const response = await this.makeAshbyRequest('candidate.addTag', {
|
|
331
|
+
candidateId: params.candidate_id,
|
|
332
|
+
tagId: params.tag_id,
|
|
333
|
+
});
|
|
334
|
+
return {
|
|
335
|
+
operation: 'add_tag',
|
|
336
|
+
success: true,
|
|
337
|
+
candidate: response.results,
|
|
338
|
+
error: '',
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* List all candidate tags
|
|
343
|
+
*/
|
|
344
|
+
async listTags(params) {
|
|
345
|
+
void params; // include_archived not used in current API
|
|
346
|
+
const response = await this.makeAshbyRequest('candidateTag.list', {});
|
|
347
|
+
const allTags = response.results;
|
|
348
|
+
// Filter out archived tags unless include_archived is true
|
|
349
|
+
const tags = params.include_archived
|
|
350
|
+
? allTags
|
|
351
|
+
: allTags.filter((tag) => !tag.isArchived);
|
|
352
|
+
return {
|
|
353
|
+
operation: 'list_tags',
|
|
354
|
+
success: true,
|
|
355
|
+
tags: tags,
|
|
356
|
+
error: '',
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Create a new candidate tag
|
|
361
|
+
*/
|
|
362
|
+
async createTag(params) {
|
|
363
|
+
const response = await this.makeAshbyRequest('candidateTag.create', {
|
|
364
|
+
title: params.title,
|
|
365
|
+
});
|
|
366
|
+
return {
|
|
367
|
+
operation: 'create_tag',
|
|
368
|
+
success: true,
|
|
369
|
+
tag: response.results,
|
|
370
|
+
error: '',
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* List all custom field definitions
|
|
375
|
+
*/
|
|
376
|
+
async listCustomFields(params) {
|
|
377
|
+
const body = {};
|
|
378
|
+
if (params.limit !== undefined) {
|
|
379
|
+
body.limit = params.limit;
|
|
380
|
+
}
|
|
381
|
+
if (params.cursor) {
|
|
382
|
+
body.cursor = params.cursor;
|
|
383
|
+
}
|
|
384
|
+
if (params.sync_token) {
|
|
385
|
+
body.syncToken = params.sync_token;
|
|
386
|
+
}
|
|
387
|
+
const response = await this.makeAshbyRequest('customField.list', body);
|
|
388
|
+
return {
|
|
389
|
+
operation: 'list_custom_fields',
|
|
390
|
+
success: true,
|
|
391
|
+
custom_fields: response.results,
|
|
392
|
+
next_cursor: response.nextCursor,
|
|
393
|
+
more_data_available: response.moreDataAvailable,
|
|
394
|
+
sync_token: response.syncToken,
|
|
395
|
+
error: '',
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
//# sourceMappingURL=ashby.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ashby.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/ashby/ashby.ts"],"names":[],"mappings":"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"}
|