@tryfinch/finch-api 4.2.1 → 5.1.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.
Files changed (204) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +33 -0
  3. package/_shims/{ReadableStream.node.d.ts → ReadableStream-node.d.ts} +1 -1
  4. package/_shims/ReadableStream-node.d.ts.map +1 -0
  5. package/_shims/{ReadableStream.node.js → ReadableStream-node.js} +1 -1
  6. package/_shims/ReadableStream-node.js.map +1 -0
  7. package/_shims/{ReadableStream.node.mjs → ReadableStream-node.mjs} +1 -1
  8. package/_shims/ReadableStream-node.mjs.map +1 -0
  9. package/_shims/{agent.node.d.ts → agent-node.d.ts} +1 -1
  10. package/_shims/agent-node.d.ts.map +1 -0
  11. package/_shims/{agent.node.js → agent-node.js} +1 -1
  12. package/_shims/{agent.node.js.map → agent-node.js.map} +1 -1
  13. package/_shims/{agent.node.mjs → agent-node.mjs} +1 -1
  14. package/_shims/{agent.node.mjs.map → agent-node.mjs.map} +1 -1
  15. package/_shims/agent.d.ts +1 -1
  16. package/_shims/agent.js +1 -1
  17. package/_shims/agent.mjs +1 -1
  18. package/_shims/{fileFromPath.node.d.ts → fileFromPath-node.d.ts} +2 -2
  19. package/_shims/{fileFromPath.node.d.ts.map → fileFromPath-node.d.ts.map} +1 -1
  20. package/_shims/{fileFromPath.node.js → fileFromPath-node.js} +1 -1
  21. package/_shims/{fileFromPath.node.js.map → fileFromPath-node.js.map} +1 -1
  22. package/_shims/{fileFromPath.node.mjs → fileFromPath-node.mjs} +1 -1
  23. package/_shims/{fileFromPath.node.mjs.map → fileFromPath-node.mjs.map} +1 -1
  24. package/_shims/fileFromPath.d.ts +2 -2
  25. package/_shims/fileFromPath.d.ts.map +1 -1
  26. package/_shims/fileFromPath.js +1 -1
  27. package/_shims/fileFromPath.mjs +1 -1
  28. package/_shims/{getMultipartRequestOptions.node.d.ts → getMultipartRequestOptions-node.d.ts} +2 -2
  29. package/_shims/getMultipartRequestOptions-node.d.ts.map +1 -0
  30. package/_shims/{getMultipartRequestOptions.node.js → getMultipartRequestOptions-node.js} +1 -1
  31. package/_shims/{getMultipartRequestOptions.node.js.map → getMultipartRequestOptions-node.js.map} +1 -1
  32. package/_shims/{getMultipartRequestOptions.node.mjs → getMultipartRequestOptions-node.mjs} +1 -1
  33. package/_shims/{getMultipartRequestOptions.node.mjs.map → getMultipartRequestOptions-node.mjs.map} +1 -1
  34. package/_shims/getMultipartRequestOptions.d.ts +1 -1
  35. package/_shims/getMultipartRequestOptions.d.ts.map +1 -1
  36. package/_shims/{node-readable.node.d.ts → node-readable-node.d.ts} +1 -1
  37. package/_shims/{node-readable.node.d.ts.map → node-readable-node.d.ts.map} +1 -1
  38. package/_shims/{node-readable.node.js → node-readable-node.js} +1 -1
  39. package/_shims/node-readable-node.js.map +1 -0
  40. package/_shims/{node-readable.node.mjs → node-readable-node.mjs} +1 -1
  41. package/_shims/node-readable-node.mjs.map +1 -0
  42. package/core.d.ts +3 -2
  43. package/core.d.ts.map +1 -1
  44. package/core.js +3 -1
  45. package/core.js.map +1 -1
  46. package/core.mjs +1 -1
  47. package/core.mjs.map +1 -1
  48. package/error.d.ts +1 -1
  49. package/error.d.ts.map +1 -1
  50. package/error.js +2 -2
  51. package/error.js.map +1 -1
  52. package/error.mjs +2 -2
  53. package/error.mjs.map +1 -1
  54. package/index.d.mts +8 -3
  55. package/index.d.ts +8 -3
  56. package/index.d.ts.map +1 -1
  57. package/index.js +11 -5
  58. package/index.js.map +1 -1
  59. package/index.mjs +11 -5
  60. package/index.mjs.map +1 -1
  61. package/package.json +9 -4
  62. package/resources/hris/benefits/benefits.d.ts +1 -1
  63. package/resources/hris/benefits/benefits.d.ts.map +1 -1
  64. package/resources/hris/benefits/index.d.ts +1 -1
  65. package/resources/hris/benefits/index.d.ts.map +1 -1
  66. package/resources/hris/benefits/individuals.d.ts +5 -5
  67. package/resources/hris/benefits/individuals.d.ts.map +1 -1
  68. package/resources/hris/benefits/individuals.js +2 -2
  69. package/resources/hris/benefits/individuals.js.map +1 -1
  70. package/resources/hris/benefits/individuals.mjs +2 -2
  71. package/resources/hris/benefits/individuals.mjs.map +1 -1
  72. package/resources/hris/{individuals/employment-data.d.ts → employments.d.ts} +12 -12
  73. package/resources/hris/employments.d.ts.map +1 -0
  74. package/resources/hris/employments.js +27 -0
  75. package/resources/hris/employments.js.map +1 -0
  76. package/resources/hris/{individuals/employment-data.mjs → employments.mjs} +5 -8
  77. package/resources/hris/employments.mjs.map +1 -0
  78. package/resources/hris/hris.d.ts +20 -13
  79. package/resources/hris/hris.d.ts.map +1 -1
  80. package/resources/hris/hris.js +12 -8
  81. package/resources/hris/hris.js.map +1 -1
  82. package/resources/hris/hris.mjs +12 -8
  83. package/resources/hris/hris.mjs.map +1 -1
  84. package/resources/hris/index.d.ts +10 -3
  85. package/resources/hris/index.d.ts.map +1 -1
  86. package/resources/hris/index.js +23 -8
  87. package/resources/hris/index.js.map +1 -1
  88. package/resources/hris/index.mjs +3 -2
  89. package/resources/hris/index.mjs.map +1 -1
  90. package/resources/hris/{individuals/individuals.d.ts → individuals.d.ts} +5 -13
  91. package/resources/hris/individuals.d.ts.map +1 -0
  92. package/resources/hris/individuals.js +24 -0
  93. package/resources/hris/individuals.js.map +1 -0
  94. package/resources/hris/{individuals/individuals.mjs → individuals.mjs} +3 -12
  95. package/resources/hris/individuals.mjs.map +1 -0
  96. package/resources/hris/pay-statements.d.ts +4 -4
  97. package/resources/hris/pay-statements.d.ts.map +1 -1
  98. package/resources/hris/pay-statements.js +4 -4
  99. package/resources/hris/pay-statements.js.map +1 -1
  100. package/resources/hris/pay-statements.mjs +2 -2
  101. package/resources/hris/pay-statements.mjs.map +1 -1
  102. package/resources/index.d.ts +1 -0
  103. package/resources/index.d.ts.map +1 -1
  104. package/resources/index.js +14 -1
  105. package/resources/index.js.map +1 -1
  106. package/resources/index.mjs +1 -0
  107. package/resources/index.mjs.map +1 -1
  108. package/resources/webhooks.d.ts +22 -0
  109. package/resources/webhooks.d.ts.map +1 -0
  110. package/resources/webhooks.js +118 -0
  111. package/resources/webhooks.js.map +1 -0
  112. package/resources/webhooks.mjs +114 -0
  113. package/resources/webhooks.mjs.map +1 -0
  114. package/src/_shims/ReadableStream.d.ts +5 -5
  115. package/src/_shims/agent.ts +1 -1
  116. package/src/_shims/{fetch.node.d.ts → fetch-node.d.ts} +8 -8
  117. package/src/_shims/fetch.d.ts +10 -10
  118. package/src/_shims/{fileFromPath.node.ts → fileFromPath-node.ts} +1 -1
  119. package/src/_shims/fileFromPath.ts +2 -2
  120. package/src/_shims/{formdata.node.d.ts → form-data-node.d.ts} +4 -4
  121. package/src/_shims/{formdata.d.ts → form-data.d.ts} +4 -4
  122. package/src/_shims/{getMultipartRequestOptions.node.ts → getMultipartRequestOptions-node.ts} +3 -3
  123. package/src/_shims/getMultipartRequestOptions.ts +3 -3
  124. package/src/core.ts +12 -11
  125. package/src/error.ts +3 -3
  126. package/src/index.ts +20 -10
  127. package/src/pagination.ts +3 -3
  128. package/src/resource.ts +1 -1
  129. package/src/resources/account.ts +3 -3
  130. package/src/resources/ats/applications.ts +6 -6
  131. package/src/resources/ats/ats.ts +7 -7
  132. package/src/resources/ats/candidates.ts +5 -5
  133. package/src/resources/ats/index.ts +6 -6
  134. package/src/resources/ats/jobs.ts +5 -5
  135. package/src/resources/ats/offers.ts +5 -5
  136. package/src/resources/ats/stages.ts +4 -4
  137. package/src/resources/hris/benefits/benefits.ts +7 -7
  138. package/src/resources/hris/benefits/index.ts +3 -3
  139. package/src/resources/hris/benefits/individuals.ts +14 -14
  140. package/src/resources/hris/company.ts +4 -4
  141. package/src/resources/hris/directory.ts +5 -5
  142. package/src/resources/hris/{individuals/employment-data.ts → employments.ts} +17 -17
  143. package/src/resources/hris/hris.ts +29 -21
  144. package/src/resources/hris/index.ts +16 -9
  145. package/src/resources/hris/{individuals/individuals.ts → individuals.ts} +13 -23
  146. package/src/resources/hris/pay-statements.ts +11 -11
  147. package/src/resources/hris/payments.ts +5 -5
  148. package/src/resources/index.ts +6 -5
  149. package/src/resources/providers.ts +4 -4
  150. package/src/resources/webhooks.ts +151 -0
  151. package/src/tsconfig.json +11 -0
  152. package/src/uploads.ts +6 -6
  153. package/src/version.ts +1 -1
  154. package/uploads.d.ts +1 -1
  155. package/uploads.d.ts.map +1 -1
  156. package/uploads.js +4 -4
  157. package/uploads.js.map +1 -1
  158. package/uploads.mjs +1 -1
  159. package/uploads.mjs.map +1 -1
  160. package/version.d.ts +1 -1
  161. package/version.js +1 -1
  162. package/version.mjs +1 -1
  163. package/_shims/ReadableStream.node.d.ts.map +0 -1
  164. package/_shims/ReadableStream.node.js.map +0 -1
  165. package/_shims/ReadableStream.node.mjs.map +0 -1
  166. package/_shims/agent.node.d.ts.map +0 -1
  167. package/_shims/getMultipartRequestOptions.node.d.ts.map +0 -1
  168. package/_shims/node-readable.node.js.map +0 -1
  169. package/_shims/node-readable.node.mjs.map +0 -1
  170. package/resources/hris/individuals/employment-data.d.ts.map +0 -1
  171. package/resources/hris/individuals/employment-data.js +0 -70
  172. package/resources/hris/individuals/employment-data.js.map +0 -1
  173. package/resources/hris/individuals/employment-data.mjs.map +0 -1
  174. package/resources/hris/individuals/index.d.ts +0 -14
  175. package/resources/hris/individuals/index.d.ts.map +0 -1
  176. package/resources/hris/individuals/index.js +0 -35
  177. package/resources/hris/individuals/index.js.map +0 -1
  178. package/resources/hris/individuals/index.mjs +0 -4
  179. package/resources/hris/individuals/index.mjs.map +0 -1
  180. package/resources/hris/individuals/individuals.d.ts.map +0 -1
  181. package/resources/hris/individuals/individuals.js +0 -73
  182. package/resources/hris/individuals/individuals.js.map +0 -1
  183. package/resources/hris/individuals/individuals.mjs.map +0 -1
  184. package/src/_shims/fetch.deno.ts +0 -23
  185. package/src/_shims/formdata.deno.ts +0 -16
  186. package/src/resources/hris/individuals/index.ts +0 -15
  187. /package/_shims/{fetch.node.d.ts → fetch-node.d.ts} +0 -0
  188. /package/_shims/{fetch.node.js → fetch-node.js} +0 -0
  189. /package/_shims/{fetch.node.mjs → fetch-node.mjs} +0 -0
  190. /package/_shims/{formdata.node.d.ts → form-data-node.d.ts} +0 -0
  191. /package/_shims/{formdata.node.js → form-data-node.js} +0 -0
  192. /package/_shims/{formdata.node.mjs → form-data-node.mjs} +0 -0
  193. /package/_shims/{formdata.d.ts → form-data.d.ts} +0 -0
  194. /package/_shims/{formdata.js → form-data.js} +0 -0
  195. /package/_shims/{formdata.mjs → form-data.mjs} +0 -0
  196. /package/src/_shims/{ReadableStream.node.ts → ReadableStream-node.ts} +0 -0
  197. /package/src/_shims/{agent.node.ts → agent-node.ts} +0 -0
  198. /package/src/_shims/{fetch.node.js → fetch-node.js} +0 -0
  199. /package/src/_shims/{fetch.node.mjs → fetch-node.mjs} +0 -0
  200. /package/src/_shims/{formdata.node.js → form-data-node.js} +0 -0
  201. /package/src/_shims/{formdata.node.mjs → form-data-node.mjs} +0 -0
  202. /package/src/_shims/{formdata.js → form-data.js} +0 -0
  203. /package/src/_shims/{formdata.mjs → form-data.mjs} +0 -0
  204. /package/src/_shims/{node-readable.node.ts → node-readable-node.ts} +0 -0
@@ -1,11 +1,11 @@
1
1
  // File generated from our OpenAPI spec by Stainless.
2
2
 
3
- import * as Core from '../../../core';
4
- import { APIResource } from '../../../resource';
5
- import { isRequestOptions } from '../../../core';
6
- import * as Benefits from './index';
7
- import * as API from './index';
8
- import { SinglePage } from '../../../pagination';
3
+ import * as Core from '../../../core.js';
4
+ import { APIResource } from '../../../resource.js';
5
+ import { isRequestOptions } from '../../../core.js';
6
+ import * as Benefits from './index.js';
7
+ import * as API from './index.js';
8
+ import { SinglePage } from '../../../pagination.js';
9
9
 
10
10
  export class Individuals extends APIResource {
11
11
  /**
@@ -77,22 +77,22 @@ export class Individuals extends APIResource {
77
77
  *
78
78
  * Unenroll individuals from a benefit
79
79
  */
80
- unenroll(
80
+ unenrollMany(
81
81
  benefitId: string,
82
- body?: IndividualUnenrollParams,
82
+ body?: IndividualUnenrollManyParams,
83
83
  options?: Core.RequestOptions,
84
84
  ): Core.PagePromise<UnenrolledIndividualsSinglePage, UnenrolledIndividual>;
85
- unenroll(
85
+ unenrollMany(
86
86
  benefitId: string,
87
87
  options?: Core.RequestOptions,
88
88
  ): Core.PagePromise<UnenrolledIndividualsSinglePage, UnenrolledIndividual>;
89
- unenroll(
89
+ unenrollMany(
90
90
  benefitId: string,
91
- body: IndividualUnenrollParams | Core.RequestOptions = {},
91
+ body: IndividualUnenrollManyParams | Core.RequestOptions = {},
92
92
  options?: Core.RequestOptions,
93
93
  ): Core.PagePromise<UnenrolledIndividualsSinglePage, UnenrolledIndividual> {
94
94
  if (isRequestOptions(body)) {
95
- return this.unenroll(benefitId, {}, body);
95
+ return this.unenrollMany(benefitId, {}, body);
96
96
  }
97
97
  return this.getAPIList(`/employer/benefits/${benefitId}/individuals`, UnenrolledIndividualsSinglePage, {
98
98
  body,
@@ -233,7 +233,7 @@ export interface IndividualRetrieveManyBenefitsParams {
233
233
  individual_ids?: string;
234
234
  }
235
235
 
236
- export interface IndividualUnenrollParams {
236
+ export interface IndividualUnenrollManyParams {
237
237
  /**
238
238
  * Array of individual_ids to unenroll.
239
239
  */
@@ -250,5 +250,5 @@ export namespace Individuals {
250
250
  export type UnenrolledIndividualsSinglePage = _UnenrolledIndividualsSinglePage;
251
251
  export import IndividualEnrollManyParams = API.IndividualEnrollManyParams;
252
252
  export import IndividualRetrieveManyBenefitsParams = API.IndividualRetrieveManyBenefitsParams;
253
- export import IndividualUnenrollParams = API.IndividualUnenrollParams;
253
+ export import IndividualUnenrollManyParams = API.IndividualUnenrollManyParams;
254
254
  }
@@ -1,9 +1,9 @@
1
1
  // File generated from our OpenAPI spec by Stainless.
2
2
 
3
- import * as Core from '../../core';
4
- import { APIResource } from '../../resource';
5
- import * as HRIS from './index';
6
- import * as API from './index';
3
+ import * as Core from '../../core.js';
4
+ import { APIResource } from '../../resource.js';
5
+ import * as HRIS from './index.js';
6
+ import * as API from './index.js';
7
7
 
8
8
  export class CompanyResource extends APIResource {
9
9
  /**
@@ -1,10 +1,10 @@
1
1
  // File generated from our OpenAPI spec by Stainless.
2
2
 
3
- import * as Core from '../../core';
4
- import { APIResource } from '../../resource';
5
- import { isRequestOptions } from '../../core';
6
- import * as API from './index';
7
- import { IndividualsPage, IndividualsPageParams } from '../../pagination';
3
+ import * as Core from '../../core.js';
4
+ import { APIResource } from '../../resource.js';
5
+ import { isRequestOptions } from '../../core.js';
6
+ import * as API from './index.js';
7
+ import { IndividualsPage, IndividualsPageParams } from '../../pagination.js';
8
8
 
9
9
  export class Directory extends APIResource {
10
10
  /**
@@ -1,12 +1,12 @@
1
1
  // File generated from our OpenAPI spec by Stainless.
2
2
 
3
- import * as Core from '../../../core';
4
- import { APIResource } from '../../../resource';
5
- import * as HRIS from '../index';
6
- import * as API from './index';
7
- import { ResponsesPage } from '../../../pagination';
3
+ import * as Core from '../../core.js';
4
+ import { APIResource } from '../../resource.js';
5
+ import * as HRIS from './index.js';
6
+ import * as API from './index.js';
7
+ import { ResponsesPage } from '../../pagination.js';
8
8
 
9
- export class EmploymentData extends APIResource {
9
+ export class Employments extends APIResource {
10
10
  /**
11
11
  * Read individual employment and income data
12
12
  *
@@ -15,10 +15,10 @@ export class EmploymentData extends APIResource {
15
15
  * daily, etc, depending on what information the provider returns.
16
16
  */
17
17
  retrieveMany(
18
- body: EmploymentDataRetrieveManyParams,
18
+ body: EmploymentRetrieveManyParams,
19
19
  options?: Core.RequestOptions,
20
- ): Core.PagePromise<EmploymentDataResponsesResponsesPage, EmploymentDataResponse> {
21
- return this.getAPIList('/employer/employment', EmploymentDataResponsesResponsesPage, {
20
+ ): Core.PagePromise<EmploymentDataResponsesPage, EmploymentDataResponse> {
21
+ return this.getAPIList('/employer/employment', EmploymentDataResponsesPage, {
22
22
  body,
23
23
  method: 'post',
24
24
  ...options,
@@ -26,9 +26,9 @@ export class EmploymentData extends APIResource {
26
26
  }
27
27
  }
28
28
 
29
- export class EmploymentDataResponsesResponsesPage extends ResponsesPage<EmploymentDataResponse> {}
29
+ export class EmploymentDataResponsesPage extends ResponsesPage<EmploymentDataResponse> {}
30
30
  // alias so we can export it in the namespace
31
- type _EmploymentDataResponsesResponsesPage = EmploymentDataResponsesResponsesPage;
31
+ type _EmploymentDataResponsesPage = EmploymentDataResponsesPage;
32
32
 
33
33
  export interface EmploymentData {
34
34
  /**
@@ -163,14 +163,14 @@ export interface EmploymentDataResponse {
163
163
  individual_id?: string;
164
164
  }
165
165
 
166
- export interface EmploymentDataRetrieveManyParams {
166
+ export interface EmploymentRetrieveManyParams {
167
167
  /**
168
168
  * The array of batch requests.
169
169
  */
170
- requests: Array<EmploymentDataRetrieveManyParams.Request>;
170
+ requests: Array<EmploymentRetrieveManyParams.Request>;
171
171
  }
172
172
 
173
- export namespace EmploymentDataRetrieveManyParams {
173
+ export namespace EmploymentRetrieveManyParams {
174
174
  export interface Request {
175
175
  /**
176
176
  * A stable Finch `id` (UUID v4) for an individual in the company. There is no
@@ -181,9 +181,9 @@ export namespace EmploymentDataRetrieveManyParams {
181
181
  }
182
182
  }
183
183
 
184
- export namespace EmploymentData {
184
+ export namespace Employments {
185
185
  export import EmploymentData = API.EmploymentData;
186
186
  export import EmploymentDataResponse = API.EmploymentDataResponse;
187
- export type EmploymentDataResponsesResponsesPage = _EmploymentDataResponsesResponsesPage;
188
- export import EmploymentDataRetrieveManyParams = API.EmploymentDataRetrieveManyParams;
187
+ export type EmploymentDataResponsesPage = _EmploymentDataResponsesPage;
188
+ export import EmploymentRetrieveManyParams = API.EmploymentRetrieveManyParams;
189
189
  }
@@ -1,20 +1,22 @@
1
1
  // File generated from our OpenAPI spec by Stainless.
2
2
 
3
- import { APIResource } from '../../resource';
4
- import { CompanyResource } from './company';
5
- import { Payments } from './payments';
6
- import { PayStatements } from './pay-statements';
7
- import { Directory } from './directory';
8
- import { Individuals } from './individuals/individuals';
9
- import { Benefits } from './benefits/benefits';
10
- import * as API from './index';
3
+ import { APIResource } from '../../resource.js';
4
+ import { CompanyResource } from './company.js';
5
+ import { Directory } from './directory.js';
6
+ import { Individuals } from './individuals.js';
7
+ import { Employments } from './employments.js';
8
+ import { Payments } from './payments.js';
9
+ import { PayStatements } from './pay-statements.js';
10
+ import { Benefits } from './benefits/benefits.js';
11
+ import * as API from './index.js';
11
12
 
12
13
  export class HRIS extends APIResource {
13
14
  company: CompanyResource = new CompanyResource(this.client);
14
- payments: Payments = new Payments(this.client);
15
- payStatements: PayStatements = new PayStatements(this.client);
16
15
  directory: Directory = new Directory(this.client);
17
16
  individuals: Individuals = new Individuals(this.client);
17
+ employments: Employments = new Employments(this.client);
18
+ payments: Payments = new Payments(this.client);
19
+ payStatements: PayStatements = new PayStatements(this.client);
18
20
  benefits: Benefits = new Benefits(this.client);
19
21
  }
20
22
 
@@ -122,6 +124,22 @@ export namespace HRIS {
122
124
  export import CompanyResource = API.CompanyResource;
123
125
  export import Company = API.Company;
124
126
 
127
+ export import Directory = API.Directory;
128
+ export import IndividualInDirectory = API.IndividualInDirectory;
129
+ export import DirectoryListIndividualsParams = API.DirectoryListIndividualsParams;
130
+
131
+ export import Individuals = API.Individuals;
132
+ export import Individual = API.Individual;
133
+ export import IndividualResponse = API.IndividualResponse;
134
+ export import IndividualResponsesPage = API.IndividualResponsesPage;
135
+ export import IndividualRetrieveManyParams = API.IndividualRetrieveManyParams;
136
+
137
+ export import Employments = API.Employments;
138
+ export import EmploymentData = API.EmploymentData;
139
+ export import EmploymentDataResponse = API.EmploymentDataResponse;
140
+ export import EmploymentDataResponsesPage = API.EmploymentDataResponsesPage;
141
+ export import EmploymentRetrieveManyParams = API.EmploymentRetrieveManyParams;
142
+
125
143
  export import Payments = API.Payments;
126
144
  export import Payment = API.Payment;
127
145
  export import PaymentsSinglePage = API.PaymentsSinglePage;
@@ -131,19 +149,9 @@ export namespace HRIS {
131
149
  export import PayStatement = API.PayStatement;
132
150
  export import PayStatementResponse = API.PayStatementResponse;
133
151
  export import PayStatementResponseBody = API.PayStatementResponseBody;
134
- export import PayStatementResponsesResponsesPage = API.PayStatementResponsesResponsesPage;
152
+ export import PayStatementResponsesPage = API.PayStatementResponsesPage;
135
153
  export import PayStatementRetrieveManyParams = API.PayStatementRetrieveManyParams;
136
154
 
137
- export import Directory = API.Directory;
138
- export import IndividualInDirectory = API.IndividualInDirectory;
139
- export import DirectoryListIndividualsParams = API.DirectoryListIndividualsParams;
140
-
141
- export import Individuals = API.Individuals;
142
- export import Individual = API.Individual;
143
- export import IndividualResponse = API.IndividualResponse;
144
- export import IndividualResponsesResponsesPage = API.IndividualResponsesResponsesPage;
145
- export import IndividualRetrieveManyParams = API.IndividualRetrieveManyParams;
146
-
147
155
  export import Benefits = API.Benefits;
148
156
  export import BenefitFrequency = API.BenefitFrequency;
149
157
  export import BenefitType = API.BenefitType;
@@ -13,23 +13,30 @@ export {
13
13
  CompanyBenefitsSinglePage,
14
14
  SupportedBenefitsSinglePage,
15
15
  Benefits,
16
- } from './benefits/index';
17
- export { Company, CompanyResource } from './company';
18
- export { Income, Location, Money, Paging, HRIS } from './hris';
16
+ } from './benefits/index.js';
17
+ export { Company, CompanyResource } from './company.js';
18
+ export {
19
+ EmploymentData,
20
+ EmploymentDataResponse,
21
+ EmploymentRetrieveManyParams,
22
+ EmploymentDataResponsesPage,
23
+ Employments,
24
+ } from './employments.js';
25
+ export { Income, Location, Money, Paging, HRIS } from './hris.js';
19
26
  export {
20
27
  Individual,
21
28
  IndividualResponse,
22
29
  IndividualRetrieveManyParams,
23
- IndividualResponsesResponsesPage,
30
+ IndividualResponsesPage,
24
31
  Individuals,
25
- } from './individuals/index';
26
- export { IndividualInDirectory, DirectoryListIndividualsParams, Directory } from './directory';
32
+ } from './individuals.js';
33
+ export { IndividualInDirectory, DirectoryListIndividualsParams, Directory } from './directory.js';
27
34
  export {
28
35
  PayStatement,
29
36
  PayStatementResponse,
30
37
  PayStatementResponseBody,
31
38
  PayStatementRetrieveManyParams,
32
- PayStatementResponsesResponsesPage,
39
+ PayStatementResponsesPage,
33
40
  PayStatements,
34
- } from './pay-statements';
35
- export { Payment, PaymentListParams, PaymentsSinglePage, Payments } from './payments';
41
+ } from './pay-statements.js';
42
+ export { Payment, PaymentListParams, PaymentsSinglePage, Payments } from './payments.js';
@@ -1,34 +1,29 @@
1
1
  // File generated from our OpenAPI spec by Stainless.
2
2
 
3
- import * as Core from '../../../core';
4
- import { APIResource } from '../../../resource';
5
- import { isRequestOptions } from '../../../core';
6
- import * as HRIS from '../index';
7
- import { EmploymentData } from './employment-data';
8
- import * as API from './index';
9
- import { ResponsesPage } from '../../../pagination';
3
+ import * as Core from '../../core.js';
4
+ import { APIResource } from '../../resource.js';
5
+ import { isRequestOptions } from '../../core.js';
6
+ import * as HRIS from './index.js';
7
+ import * as API from './index.js';
8
+ import { ResponsesPage } from '../../pagination.js';
10
9
 
11
10
  export class Individuals extends APIResource {
12
- employmentData: EmploymentData = new EmploymentData(this.client);
13
-
14
11
  /**
15
12
  * Read individual data, excluding income and employment data
16
13
  */
17
14
  retrieveMany(
18
15
  body?: IndividualRetrieveManyParams,
19
16
  options?: Core.RequestOptions,
20
- ): Core.PagePromise<IndividualResponsesResponsesPage, IndividualResponse>;
21
- retrieveMany(
22
- options?: Core.RequestOptions,
23
- ): Core.PagePromise<IndividualResponsesResponsesPage, IndividualResponse>;
17
+ ): Core.PagePromise<IndividualResponsesPage, IndividualResponse>;
18
+ retrieveMany(options?: Core.RequestOptions): Core.PagePromise<IndividualResponsesPage, IndividualResponse>;
24
19
  retrieveMany(
25
20
  body: IndividualRetrieveManyParams | Core.RequestOptions = {},
26
21
  options?: Core.RequestOptions,
27
- ): Core.PagePromise<IndividualResponsesResponsesPage, IndividualResponse> {
22
+ ): Core.PagePromise<IndividualResponsesPage, IndividualResponse> {
28
23
  if (isRequestOptions(body)) {
29
24
  return this.retrieveMany({}, body);
30
25
  }
31
- return this.getAPIList('/employer/individual', IndividualResponsesResponsesPage, {
26
+ return this.getAPIList('/employer/individual', IndividualResponsesPage, {
32
27
  body,
33
28
  method: 'post',
34
29
  ...options,
@@ -36,9 +31,9 @@ export class Individuals extends APIResource {
36
31
  }
37
32
  }
38
33
 
39
- export class IndividualResponsesResponsesPage extends ResponsesPage<IndividualResponse> {}
34
+ export class IndividualResponsesPage extends ResponsesPage<IndividualResponse> {}
40
35
  // alias so we can export it in the namespace
41
- type _IndividualResponsesResponsesPage = IndividualResponsesResponsesPage;
36
+ type _IndividualResponsesPage = IndividualResponsesPage;
42
37
 
43
38
  export interface Individual {
44
39
  /**
@@ -127,11 +122,6 @@ export namespace IndividualRetrieveManyParams {
127
122
  export namespace Individuals {
128
123
  export import Individual = API.Individual;
129
124
  export import IndividualResponse = API.IndividualResponse;
130
- export type IndividualResponsesResponsesPage = _IndividualResponsesResponsesPage;
125
+ export type IndividualResponsesPage = _IndividualResponsesPage;
131
126
  export import IndividualRetrieveManyParams = API.IndividualRetrieveManyParams;
132
-
133
- export import EmploymentData = API.EmploymentData;
134
- export import EmploymentDataResponse = API.EmploymentDataResponse;
135
- export import EmploymentDataResponsesResponsesPage = API.EmploymentDataResponsesResponsesPage;
136
- export import EmploymentDataRetrieveManyParams = API.EmploymentDataRetrieveManyParams;
137
127
  }
@@ -1,11 +1,11 @@
1
1
  // File generated from our OpenAPI spec by Stainless.
2
2
 
3
- import * as Core from '../../core';
4
- import { APIResource } from '../../resource';
5
- import * as HRIS from './index';
6
- import * as Benefits from './benefits/index';
7
- import * as API from './index';
8
- import { ResponsesPage } from '../../pagination';
3
+ import * as Core from '../../core.js';
4
+ import { APIResource } from '../../resource.js';
5
+ import * as HRIS from './index.js';
6
+ import * as Benefits from './benefits/index.js';
7
+ import * as API from './index.js';
8
+ import { ResponsesPage } from '../../pagination.js';
9
9
 
10
10
  export class PayStatements extends APIResource {
11
11
  /**
@@ -17,8 +17,8 @@ export class PayStatements extends APIResource {
17
17
  retrieveMany(
18
18
  body: PayStatementRetrieveManyParams,
19
19
  options?: Core.RequestOptions,
20
- ): Core.PagePromise<PayStatementResponsesResponsesPage, PayStatementResponse> {
21
- return this.getAPIList('/employer/pay-statement', PayStatementResponsesResponsesPage, {
20
+ ): Core.PagePromise<PayStatementResponsesPage, PayStatementResponse> {
21
+ return this.getAPIList('/employer/pay-statement', PayStatementResponsesPage, {
22
22
  body,
23
23
  method: 'post',
24
24
  ...options,
@@ -26,9 +26,9 @@ export class PayStatements extends APIResource {
26
26
  }
27
27
  }
28
28
 
29
- export class PayStatementResponsesResponsesPage extends ResponsesPage<PayStatementResponse> {}
29
+ export class PayStatementResponsesPage extends ResponsesPage<PayStatementResponse> {}
30
30
  // alias so we can export it in the namespace
31
- type _PayStatementResponsesResponsesPage = PayStatementResponsesResponsesPage;
31
+ type _PayStatementResponsesPage = PayStatementResponsesPage;
32
32
 
33
33
  export interface PayStatement {
34
34
  /**
@@ -240,6 +240,6 @@ export namespace PayStatements {
240
240
  export import PayStatement = API.PayStatement;
241
241
  export import PayStatementResponse = API.PayStatementResponse;
242
242
  export import PayStatementResponseBody = API.PayStatementResponseBody;
243
- export type PayStatementResponsesResponsesPage = _PayStatementResponsesResponsesPage;
243
+ export type PayStatementResponsesPage = _PayStatementResponsesPage;
244
244
  export import PayStatementRetrieveManyParams = API.PayStatementRetrieveManyParams;
245
245
  }
@@ -1,10 +1,10 @@
1
1
  // File generated from our OpenAPI spec by Stainless.
2
2
 
3
- import * as Core from '../../core';
4
- import { APIResource } from '../../resource';
5
- import * as HRIS from './index';
6
- import * as API from './index';
7
- import { SinglePage } from '../../pagination';
3
+ import * as Core from '../../core.js';
4
+ import { APIResource } from '../../resource.js';
5
+ import * as HRIS from './index.js';
6
+ import * as API from './index.js';
7
+ import { SinglePage } from '../../pagination.js';
8
8
 
9
9
  export class Payments extends APIResource {
10
10
  /**
@@ -1,7 +1,8 @@
1
1
  // File generated from our OpenAPI spec by Stainless.
2
2
 
3
- export {} from './top-level';
4
- export { ATS } from './ats/ats';
5
- export { DisconnectResponse, Introspection, Account } from './account';
6
- export { Income, Location, Money, Paging, HRIS } from './hris/hris';
7
- export { Provider, ProvidersSinglePage, Providers } from './providers';
3
+ export {} from './top-level.js';
4
+ export { ATS } from './ats/ats.js';
5
+ export { DisconnectResponse, Introspection, Account } from './account.js';
6
+ export { Income, Location, Money, Paging, HRIS } from './hris/hris.js';
7
+ export { Provider, ProvidersSinglePage, Providers } from './providers.js';
8
+ export { Webhooks } from './webhooks.js';
@@ -1,9 +1,9 @@
1
1
  // File generated from our OpenAPI spec by Stainless.
2
2
 
3
- import * as Core from '../core';
4
- import { APIResource } from '../resource';
5
- import * as API from './index';
6
- import { SinglePage } from '../pagination';
3
+ import * as Core from '../core.js';
4
+ import { APIResource } from '../resource.js';
5
+ import * as API from './index.js';
6
+ import { SinglePage } from '../pagination.js';
7
7
 
8
8
  export class Providers extends APIResource {
9
9
  /**
@@ -0,0 +1,151 @@
1
+ // File generated from our OpenAPI spec by Stainless.
2
+
3
+ import { APIResource } from '../resource.js';
4
+ import { createHmac } from 'crypto';
5
+ import { getHeader, HeadersLike } from '../core.js';
6
+
7
+ export class Webhooks extends APIResource {
8
+ /**
9
+ * Validates that the given payload was sent by Finch and parses the payload.
10
+ */
11
+ unwrap(
12
+ payload: string,
13
+ headers: HeadersLike,
14
+ secret: string | undefined | null = this.client.webhookSecret,
15
+ ): Object {
16
+ this.verifySignature(payload, headers, secret);
17
+ return JSON.parse(payload);
18
+ }
19
+
20
+ private parseSecret(secret: string | null | undefined): Uint8Array {
21
+ if (!secret) {
22
+ throw new Error(
23
+ "The webhook secret must either be set using the env var, FINCH_WEBHOOK_SECRET, on the client class, Finch({ webhook_secret: '123' }), or passed to this function",
24
+ );
25
+ }
26
+
27
+ const buf = Buffer.from(secret, 'base64');
28
+ if (buf.toString('base64') !== secret) {
29
+ throw new Error(`Given secret is not valid`);
30
+ }
31
+
32
+ return new Uint8Array(buf);
33
+ }
34
+
35
+ private signPayload(
36
+ payload: string,
37
+ { eventId, timestamp, secret }: { eventId: string; timestamp: Date; secret: Uint8Array },
38
+ ) {
39
+ const encoder = new TextEncoder();
40
+ const toSign = encoder.encode(`${eventId}.${timestamp.getTime() / 1000}.${payload}`);
41
+
42
+ const hmac = createHmac('sha256', secret);
43
+ hmac.update(toSign);
44
+
45
+ return `v1,${hmac.digest('base64')}`;
46
+ }
47
+
48
+ /** Make an assertion, if not `true`, then throw. */
49
+ private assert(expr: unknown, msg = ''): asserts expr {
50
+ if (!expr) {
51
+ throw new Error(msg);
52
+ }
53
+ }
54
+
55
+ /** Compare to array buffers or data views in a way that timing based attacks
56
+ * cannot gain information about the platform. */
57
+ private timingSafeEqual(
58
+ a: ArrayBufferView | ArrayBufferLike | DataView,
59
+ b: ArrayBufferView | ArrayBufferLike | DataView,
60
+ ): boolean {
61
+ if (a.byteLength !== b.byteLength) {
62
+ return false;
63
+ }
64
+ if (!(a instanceof DataView)) {
65
+ a = new DataView(ArrayBuffer.isView(a) ? a.buffer : a);
66
+ }
67
+ if (!(b instanceof DataView)) {
68
+ b = new DataView(ArrayBuffer.isView(b) ? b.buffer : b);
69
+ }
70
+ this.assert(a instanceof DataView);
71
+ this.assert(b instanceof DataView);
72
+ const length = a.byteLength;
73
+ let out = 0;
74
+ let i = -1;
75
+ while (++i < length) {
76
+ out |= a.getUint8(i) ^ b.getUint8(i);
77
+ }
78
+ return out === 0;
79
+ }
80
+
81
+ /**
82
+ * Validates whether or not the webhook payload was sent by Finch.
83
+ *
84
+ * An error will be raised if the webhook payload was not sent by Finch.
85
+ */
86
+ verifySignature(
87
+ body: string,
88
+ headers: HeadersLike,
89
+ secret: string | undefined | null = this.client.webhookSecret,
90
+ ): void {
91
+ const parsedSecret = this.parseSecret(secret);
92
+
93
+ const eventId = getHeader(headers, 'finch-event-id');
94
+ if (!eventId) {
95
+ throw new Error('Could not find finch-event-id header');
96
+ }
97
+
98
+ const msgTimestamp = getHeader(headers, 'finch-timestamp');
99
+ if (!msgTimestamp) {
100
+ throw new Error('Could not find finch-timestamp header');
101
+ }
102
+
103
+ const msgSignature = getHeader(headers, 'finch-signature');
104
+ if (!msgSignature) {
105
+ throw new Error('Could not find finch-signature header');
106
+ }
107
+
108
+ const now = Math.floor(Date.now() / 1000);
109
+ const timestampSeconds = parseInt(msgTimestamp, 10);
110
+ if (isNaN(timestampSeconds)) {
111
+ throw new Error(`Invalid timestamp header: ${msgTimestamp}`);
112
+ }
113
+
114
+ if (typeof body !== 'string') {
115
+ throw new Error(
116
+ 'Webhook body must be passed as the raw JSON string sent from the server (do not parse it first).',
117
+ );
118
+ }
119
+
120
+ const webhook_tolerance_in_seconds = 5 * 60; // 5 minutes
121
+ if (now - timestampSeconds > webhook_tolerance_in_seconds) {
122
+ throw new Error('Webhook timestamp is too old');
123
+ }
124
+
125
+ if (timestampSeconds > now + webhook_tolerance_in_seconds) {
126
+ throw new Error('Webhook timestamp is too new');
127
+ }
128
+
129
+ const timestamp = new Date(timestampSeconds * 1000);
130
+
131
+ const computedSignature = this.signPayload(body, { eventId, timestamp, secret: parsedSecret });
132
+ const expectedSignature = computedSignature.split(',')[1];
133
+
134
+ const passedSignatures = msgSignature.split(' ');
135
+
136
+ const encoder = new globalThis.TextEncoder();
137
+ for (const versionedSignature of passedSignatures) {
138
+ const [version, signature] = versionedSignature.split(',');
139
+ if (version !== 'v1') {
140
+ continue;
141
+ }
142
+
143
+ if (this.timingSafeEqual(encoder.encode(signature), encoder.encode(expectedSignature))) {
144
+ // valid!
145
+ return;
146
+ }
147
+ }
148
+
149
+ throw new Error('None of the given webhook signatures match the expected signature');
150
+ }
151
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ // this config is included in the published src directory to prevent TS errors
3
+ // from appearing when users go to source, and VSCode opens the source .ts file
4
+ // via declaration maps
5
+ "include": ["index.ts"],
6
+ "compilerOptions": {
7
+ "target": "es2015",
8
+ "lib": ["DOM"],
9
+ "moduleResolution": "node"
10
+ }
11
+ }
package/src/uploads.ts CHANGED
@@ -1,10 +1,10 @@
1
- import { type RequestOptions } from './core';
2
- import { type Readable } from './_shims/node-readable';
1
+ import { type RequestOptions } from './core.js';
2
+ import { type Readable } from './_shims/node-readable.js';
3
3
  import { type BodyInit } from './_shims/fetch.js';
4
- import { FormData, File, type Blob, type FilePropertyBag } from './_shims/formdata.js';
5
- import { getMultipartRequestOptions } from './_shims/getMultipartRequestOptions';
6
- import { fileFromPath } from './_shims/fileFromPath';
7
- import { type FsReadStream, isFsReadStream } from './_shims/node-readable';
4
+ import { FormData, File, type Blob, type FilePropertyBag } from './_shims/form-data.js';
5
+ import { getMultipartRequestOptions } from './_shims/getMultipartRequestOptions.js';
6
+ import { fileFromPath } from './_shims/fileFromPath.js';
7
+ import { type FsReadStream, isFsReadStream } from './_shims/node-readable.js';
8
8
 
9
9
  export { fileFromPath };
10
10
 
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = '4.2.1'; // x-release-please-version
1
+ export const VERSION = '5.1.0'; // x-release-please-version
package/uploads.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { type RequestOptions } from './core.js';
2
2
  import { type Readable } from '@tryfinch/finch-api/_shims/node-readable';
3
3
  import { type BodyInit } from '@tryfinch/finch-api/_shims/fetch';
4
- import { FormData, type Blob, type FilePropertyBag } from '@tryfinch/finch-api/_shims/formdata';
4
+ import { FormData, type Blob, type FilePropertyBag } from '@tryfinch/finch-api/_shims/form-data';
5
5
  import { fileFromPath } from '@tryfinch/finch-api/_shims/fileFromPath';
6
6
  import { type FsReadStream } from '@tryfinch/finch-api/_shims/node-readable';
7
7
  export { fileFromPath };