@tryfinch/finch-api 5.16.0 → 5.17.0

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.
@@ -3,6 +3,9 @@
3
3
  import { APIResource } from "../resource";
4
4
  import { createHmac } from 'crypto';
5
5
  import { getRequiredHeader, HeadersLike } from "../core";
6
+ import * as WebhooksAPI from "./webhooks";
7
+ import * as Shared from "./shared";
8
+ import * as BenefitsAPI from "./hris/benefits/benefits";
6
9
 
7
10
  export class Webhooks extends APIResource {
8
11
  /**
@@ -12,9 +15,9 @@ export class Webhooks extends APIResource {
12
15
  payload: string,
13
16
  headers: HeadersLike,
14
17
  secret: string | undefined | null = this._client.webhookSecret,
15
- ): Object {
18
+ ): WebhookEvent {
16
19
  this.verifySignature(payload, headers, secret);
17
- return JSON.parse(payload);
20
+ return JSON.parse(payload) as WebhookEvent;
18
21
  }
19
22
 
20
23
  private parseSecret(secret: string | null | undefined): Uint8Array {
@@ -138,3 +141,550 @@ export class Webhooks extends APIResource {
138
141
  throw new Error('None of the given webhook signatures match the expected signature');
139
142
  }
140
143
  }
144
+
145
+ export interface AccountUpdateEvent extends BaseWebhookEvent {
146
+ data?: AccountUpdateEvent.Data;
147
+
148
+ event_type?: 'account.updated';
149
+ }
150
+
151
+ export namespace AccountUpdateEvent {
152
+ export interface Data {
153
+ authentication_method: Data.AuthenticationMethod;
154
+
155
+ status: Shared.ConnectionStatusType;
156
+ }
157
+
158
+ export namespace Data {
159
+ export interface AuthenticationMethod {
160
+ /**
161
+ * Each benefit type and their supported features. If the benefit type is not
162
+ * supported, the property will be null
163
+ */
164
+ benefits_support?: BenefitsAPI.BenefitsSupport | null;
165
+
166
+ /**
167
+ * The supported data fields returned by our HR and payroll endpoints
168
+ */
169
+ supported_fields?: AuthenticationMethod.SupportedFields | null;
170
+
171
+ /**
172
+ * The type of authentication method.
173
+ */
174
+ type?: 'assisted' | 'credential' | 'api_token' | 'api_credential' | 'oauth';
175
+ }
176
+
177
+ export namespace AuthenticationMethod {
178
+ /**
179
+ * The supported data fields returned by our HR and payroll endpoints
180
+ */
181
+ export interface SupportedFields {
182
+ company?: SupportedFields.Company;
183
+
184
+ directory?: SupportedFields.Directory;
185
+
186
+ employment?: SupportedFields.Employment;
187
+
188
+ individual?: SupportedFields.Individual;
189
+
190
+ pay_statement?: SupportedFields.PayStatement;
191
+
192
+ payment?: SupportedFields.Payment;
193
+ }
194
+
195
+ export namespace SupportedFields {
196
+ export interface Company {
197
+ id?: boolean;
198
+
199
+ accounts?: Company.Accounts;
200
+
201
+ departments?: Company.Departments;
202
+
203
+ ein?: boolean;
204
+
205
+ entity?: Company.Entity;
206
+
207
+ legal_name?: boolean;
208
+
209
+ locations?: Company.Locations;
210
+
211
+ primary_email?: boolean;
212
+
213
+ primary_phone_number?: boolean;
214
+ }
215
+
216
+ export namespace Company {
217
+ export interface Accounts {
218
+ account_name?: boolean;
219
+
220
+ account_number?: boolean;
221
+
222
+ account_type?: boolean;
223
+
224
+ institution_name?: boolean;
225
+
226
+ routing_number?: boolean;
227
+ }
228
+
229
+ export interface Departments {
230
+ name?: boolean;
231
+
232
+ parent?: Departments.Parent;
233
+ }
234
+
235
+ export namespace Departments {
236
+ export interface Parent {
237
+ name?: boolean;
238
+ }
239
+ }
240
+
241
+ export interface Entity {
242
+ subtype?: boolean;
243
+
244
+ type?: boolean;
245
+ }
246
+
247
+ export interface Locations {
248
+ city?: boolean;
249
+
250
+ country?: boolean;
251
+
252
+ line1?: boolean;
253
+
254
+ line2?: boolean;
255
+
256
+ postal_code?: boolean;
257
+
258
+ state?: boolean;
259
+ }
260
+ }
261
+
262
+ export interface Directory {
263
+ individuals?: Directory.Individuals;
264
+
265
+ paging?: Directory.Paging;
266
+ }
267
+
268
+ export namespace Directory {
269
+ export interface Individuals {
270
+ id?: boolean;
271
+
272
+ department?: boolean;
273
+
274
+ first_name?: boolean;
275
+
276
+ is_active?: boolean;
277
+
278
+ last_name?: boolean;
279
+
280
+ manager?: Individuals.Manager;
281
+
282
+ middle_name?: boolean;
283
+ }
284
+
285
+ export namespace Individuals {
286
+ export interface Manager {
287
+ id?: boolean;
288
+ }
289
+ }
290
+
291
+ export interface Paging {
292
+ count?: boolean;
293
+
294
+ offset?: boolean;
295
+ }
296
+ }
297
+
298
+ export interface Employment {
299
+ id?: boolean;
300
+
301
+ class_code?: boolean;
302
+
303
+ custom_fields?: boolean;
304
+
305
+ department?: Employment.Department;
306
+
307
+ employment?: Employment.Employment;
308
+
309
+ end_date?: boolean;
310
+
311
+ first_name?: boolean;
312
+
313
+ income?: Employment.Income;
314
+
315
+ income_history?: boolean;
316
+
317
+ is_active?: boolean;
318
+
319
+ last_name?: boolean;
320
+
321
+ location?: Employment.Location;
322
+
323
+ manager?: Employment.Manager;
324
+
325
+ middle_name?: boolean;
326
+
327
+ start_date?: boolean;
328
+
329
+ title?: boolean;
330
+ }
331
+
332
+ export namespace Employment {
333
+ export interface Department {
334
+ name?: boolean;
335
+ }
336
+
337
+ export interface Employment {
338
+ subtype?: boolean;
339
+
340
+ type?: boolean;
341
+ }
342
+
343
+ export interface Income {
344
+ amount?: boolean;
345
+
346
+ currency?: boolean;
347
+
348
+ unit?: boolean;
349
+ }
350
+
351
+ export interface Location {
352
+ city?: boolean;
353
+
354
+ country?: boolean;
355
+
356
+ line1?: boolean;
357
+
358
+ line2?: boolean;
359
+
360
+ postal_code?: boolean;
361
+
362
+ state?: boolean;
363
+ }
364
+
365
+ export interface Manager {
366
+ id?: boolean;
367
+ }
368
+ }
369
+
370
+ export interface Individual {
371
+ id?: boolean;
372
+
373
+ dob?: boolean;
374
+
375
+ emails?: Individual.Emails;
376
+
377
+ encrypted_ssn?: boolean;
378
+
379
+ ethnicity?: boolean;
380
+
381
+ first_name?: boolean;
382
+
383
+ gender?: boolean;
384
+
385
+ last_name?: boolean;
386
+
387
+ middle_name?: boolean;
388
+
389
+ phone_numbers?: Individual.PhoneNumbers;
390
+
391
+ preferred_name?: boolean;
392
+
393
+ residence?: Individual.Residence;
394
+
395
+ ssn?: boolean;
396
+ }
397
+
398
+ export namespace Individual {
399
+ export interface Emails {
400
+ data?: boolean;
401
+
402
+ type?: boolean;
403
+ }
404
+
405
+ export interface PhoneNumbers {
406
+ data?: boolean;
407
+
408
+ type?: boolean;
409
+ }
410
+
411
+ export interface Residence {
412
+ city?: boolean;
413
+
414
+ country?: boolean;
415
+
416
+ line1?: boolean;
417
+
418
+ line2?: boolean;
419
+
420
+ postal_code?: boolean;
421
+
422
+ state?: boolean;
423
+ }
424
+ }
425
+
426
+ export interface PayStatement {
427
+ paging?: PayStatement.Paging;
428
+
429
+ pay_statements?: PayStatement.PayStatements;
430
+ }
431
+
432
+ export namespace PayStatement {
433
+ export interface Paging {
434
+ count: boolean;
435
+
436
+ offset: boolean;
437
+ }
438
+
439
+ export interface PayStatements {
440
+ earnings?: PayStatements.Earnings;
441
+
442
+ employee_deductions?: PayStatements.EmployeeDeductions;
443
+
444
+ employer_deductions?: PayStatements.EmployerDeductions;
445
+
446
+ gross_pay?: boolean;
447
+
448
+ individual_id?: boolean;
449
+
450
+ net_pay?: boolean;
451
+
452
+ payment_method?: boolean;
453
+
454
+ taxes?: PayStatements.Taxes;
455
+
456
+ total_hours?: boolean;
457
+
458
+ type?: boolean;
459
+ }
460
+
461
+ export namespace PayStatements {
462
+ export interface Earnings {
463
+ amount?: boolean;
464
+
465
+ currency?: boolean;
466
+
467
+ name?: boolean;
468
+
469
+ type?: boolean;
470
+ }
471
+
472
+ export interface EmployeeDeductions {
473
+ amount?: boolean;
474
+
475
+ currency?: boolean;
476
+
477
+ name?: boolean;
478
+
479
+ pre_tax?: boolean;
480
+
481
+ type?: boolean;
482
+ }
483
+
484
+ export interface EmployerDeductions {
485
+ amount?: boolean;
486
+
487
+ currency?: boolean;
488
+
489
+ name?: boolean;
490
+ }
491
+
492
+ export interface Taxes {
493
+ amount?: boolean;
494
+
495
+ currency?: boolean;
496
+
497
+ employer?: boolean;
498
+
499
+ name?: boolean;
500
+
501
+ type?: boolean;
502
+ }
503
+ }
504
+ }
505
+
506
+ export interface Payment {
507
+ id?: boolean;
508
+
509
+ company_debit?: boolean;
510
+
511
+ debit_date?: boolean;
512
+
513
+ employee_taxes?: boolean;
514
+
515
+ employer_taxes?: boolean;
516
+
517
+ gross_pay?: boolean;
518
+
519
+ individual_ids?: boolean;
520
+
521
+ net_pay?: boolean;
522
+
523
+ pay_date?: boolean;
524
+
525
+ pay_period?: Payment.PayPeriod;
526
+ }
527
+
528
+ export namespace Payment {
529
+ export interface PayPeriod {
530
+ end_date?: boolean;
531
+
532
+ start_date?: boolean;
533
+ }
534
+ }
535
+ }
536
+ }
537
+ }
538
+ }
539
+
540
+ export interface BaseWebhookEvent {
541
+ /**
542
+ * Unique Finch id of the employer account that was used to make this connection.
543
+ */
544
+ account_id: string;
545
+
546
+ /**
547
+ * Unique Finch id of the company for which data has been updated.
548
+ */
549
+ company_id: string;
550
+ }
551
+
552
+ export interface CompanyEvent extends BaseWebhookEvent {
553
+ data?: Record<string, unknown> | null;
554
+
555
+ event_type?: 'company.updated';
556
+ }
557
+
558
+ export interface DirectoryEvent extends BaseWebhookEvent {
559
+ data?: DirectoryEvent.Data;
560
+
561
+ event_type?: 'directory.created' | 'directory.updated' | 'directory.deleted';
562
+ }
563
+
564
+ export namespace DirectoryEvent {
565
+ export interface Data {
566
+ /**
567
+ * The ID of the individual related to the event.
568
+ */
569
+ individual_id?: string;
570
+ }
571
+ }
572
+
573
+ export interface EmploymentEvent extends BaseWebhookEvent {
574
+ data?: EmploymentEvent.Data;
575
+
576
+ event_type?: 'employment.created' | 'employment.updated' | 'employment.deleted';
577
+ }
578
+
579
+ export namespace EmploymentEvent {
580
+ export interface Data {
581
+ /**
582
+ * The ID of the individual related to the event.
583
+ */
584
+ individual_id?: string;
585
+ }
586
+ }
587
+
588
+ export interface IndividualEvent extends BaseWebhookEvent {
589
+ data?: IndividualEvent.Data;
590
+
591
+ event_type?: 'individual.created' | 'individual.updated' | 'individual.deleted';
592
+ }
593
+
594
+ export namespace IndividualEvent {
595
+ export interface Data {
596
+ /**
597
+ * The ID of the individual related to the event.
598
+ */
599
+ individual_id?: string;
600
+ }
601
+ }
602
+
603
+ export interface JobCompletionEvent extends BaseWebhookEvent {
604
+ data?: JobCompletionEvent.Data;
605
+
606
+ event_type?:
607
+ | 'job.benefit_create.updated'
608
+ | 'job.benefit_enroll.updated'
609
+ | 'job.benefit_register.updated'
610
+ | 'job.benefit_unenroll.updated'
611
+ | 'job.benefit_update.updated'
612
+ | 'job.data_sync_all.updated';
613
+ }
614
+
615
+ export namespace JobCompletionEvent {
616
+ export interface Data {
617
+ /**
618
+ * The id of the job which has completed.
619
+ */
620
+ job_id: string;
621
+
622
+ /**
623
+ * The url to query the result of the job.
624
+ */
625
+ job_url: string;
626
+ }
627
+ }
628
+
629
+ export interface PayStatementEvent extends BaseWebhookEvent {
630
+ data?: PayStatementEvent.Data;
631
+
632
+ event_type?: 'pay_statement.created' | 'pay_statement.updated' | 'pay_statement.deleted';
633
+ }
634
+
635
+ export namespace PayStatementEvent {
636
+ export interface Data {
637
+ /**
638
+ * The ID of the individual associated with the pay statement.
639
+ */
640
+ individual_id?: string;
641
+
642
+ /**
643
+ * The ID of the payment associated with the pay statement.
644
+ */
645
+ payment_id?: string;
646
+ }
647
+ }
648
+
649
+ export interface PaymentEvent extends BaseWebhookEvent {
650
+ data?: PaymentEvent.Data;
651
+
652
+ event_type?: 'payment.created' | 'payment.updated' | 'payment.deleted';
653
+ }
654
+
655
+ export namespace PaymentEvent {
656
+ export interface Data {
657
+ /**
658
+ * The date of the payment.
659
+ */
660
+ pay_date: string;
661
+
662
+ /**
663
+ * The ID of the payment.
664
+ */
665
+ payment_id: string;
666
+ }
667
+ }
668
+
669
+ export type WebhookEvent =
670
+ | AccountUpdateEvent
671
+ | JobCompletionEvent
672
+ | CompanyEvent
673
+ | DirectoryEvent
674
+ | EmploymentEvent
675
+ | IndividualEvent
676
+ | PaymentEvent
677
+ | PayStatementEvent;
678
+
679
+ export namespace Webhooks {
680
+ export import AccountUpdateEvent = WebhooksAPI.AccountUpdateEvent;
681
+ export import BaseWebhookEvent = WebhooksAPI.BaseWebhookEvent;
682
+ export import CompanyEvent = WebhooksAPI.CompanyEvent;
683
+ export import DirectoryEvent = WebhooksAPI.DirectoryEvent;
684
+ export import EmploymentEvent = WebhooksAPI.EmploymentEvent;
685
+ export import IndividualEvent = WebhooksAPI.IndividualEvent;
686
+ export import JobCompletionEvent = WebhooksAPI.JobCompletionEvent;
687
+ export import PayStatementEvent = WebhooksAPI.PayStatementEvent;
688
+ export import PaymentEvent = WebhooksAPI.PaymentEvent;
689
+ export import WebhookEvent = WebhooksAPI.WebhookEvent;
690
+ }
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = '5.16.0'; // x-release-please-version
1
+ export const VERSION = '5.17.0'; // x-release-please-version
package/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "5.16.0";
1
+ export declare const VERSION = "5.17.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '5.16.0'; // x-release-please-version
4
+ exports.VERSION = '5.17.0'; // x-release-please-version
5
5
  //# sourceMappingURL=version.js.map
package/version.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = '5.16.0'; // x-release-please-version
1
+ export const VERSION = '5.17.0'; // x-release-please-version
2
2
  //# sourceMappingURL=version.mjs.map