@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
@@ -4,11 +4,13 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
  exports.Payments =
5
5
  exports.PaymentsSinglePage =
6
6
  exports.PayStatements =
7
- exports.PayStatementResponsesResponsesPage =
7
+ exports.PayStatementResponsesPage =
8
8
  exports.Directory =
9
9
  exports.Individuals =
10
- exports.IndividualResponsesResponsesPage =
10
+ exports.IndividualResponsesPage =
11
11
  exports.HRIS =
12
+ exports.Employments =
13
+ exports.EmploymentDataResponsesPage =
12
14
  exports.CompanyResource =
13
15
  exports.Benefits =
14
16
  exports.SupportedBenefitsSinglePage =
@@ -40,6 +42,19 @@ Object.defineProperty(exports, 'CompanyResource', {
40
42
  return company_1.CompanyResource;
41
43
  },
42
44
  });
45
+ var employments_1 = require('./employments.js');
46
+ Object.defineProperty(exports, 'EmploymentDataResponsesPage', {
47
+ enumerable: true,
48
+ get: function () {
49
+ return employments_1.EmploymentDataResponsesPage;
50
+ },
51
+ });
52
+ Object.defineProperty(exports, 'Employments', {
53
+ enumerable: true,
54
+ get: function () {
55
+ return employments_1.Employments;
56
+ },
57
+ });
43
58
  var hris_1 = require('./hris.js');
44
59
  Object.defineProperty(exports, 'HRIS', {
45
60
  enumerable: true,
@@ -47,17 +62,17 @@ Object.defineProperty(exports, 'HRIS', {
47
62
  return hris_1.HRIS;
48
63
  },
49
64
  });
50
- var index_2 = require('./individuals/index.js');
51
- Object.defineProperty(exports, 'IndividualResponsesResponsesPage', {
65
+ var individuals_1 = require('./individuals.js');
66
+ Object.defineProperty(exports, 'IndividualResponsesPage', {
52
67
  enumerable: true,
53
68
  get: function () {
54
- return index_2.IndividualResponsesResponsesPage;
69
+ return individuals_1.IndividualResponsesPage;
55
70
  },
56
71
  });
57
72
  Object.defineProperty(exports, 'Individuals', {
58
73
  enumerable: true,
59
74
  get: function () {
60
- return index_2.Individuals;
75
+ return individuals_1.Individuals;
61
76
  },
62
77
  });
63
78
  var directory_1 = require('./directory.js');
@@ -68,10 +83,10 @@ Object.defineProperty(exports, 'Directory', {
68
83
  },
69
84
  });
70
85
  var pay_statements_1 = require('./pay-statements.js');
71
- Object.defineProperty(exports, 'PayStatementResponsesResponsesPage', {
86
+ Object.defineProperty(exports, 'PayStatementResponsesPage', {
72
87
  enumerable: true,
73
88
  get: function () {
74
- return pay_statements_1.PayStatementResponsesResponsesPage;
89
+ return pay_statements_1.PayStatementResponsesPage;
75
90
  },
76
91
  });
77
92
  Object.defineProperty(exports, 'PayStatements', {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/hris/index.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAErD,6CAa0B;AAHxB,kHAAA,yBAAyB,OAAA;AACzB,oHAAA,2BAA2B,OAAA;AAC3B,iGAAA,QAAQ,OAAA;AAEV,wCAAqD;AAAnC,0GAAA,eAAe,OAAA;AACjC,kCAA+D;AAArB,4FAAA,IAAI,OAAA;AAC9C,gDAM6B;AAF3B,yHAAA,gCAAgC,OAAA;AAChC,oGAAA,WAAW,OAAA;AAEb,4CAA+F;AAA/B,sGAAA,SAAS,OAAA;AACzE,sDAO0B;AAFxB,oIAAA,kCAAkC,OAAA;AAClC,+GAAA,aAAa,OAAA;AAEf,0CAAsF;AAAjD,8GAAA,kBAAkB,OAAA;AAAE,oGAAA,QAAQ,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/hris/index.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAErD,6CAa0B;AAHxB,kHAAA,yBAAyB,OAAA;AACzB,oHAAA,2BAA2B,OAAA;AAC3B,iGAAA,QAAQ,OAAA;AAEV,wCAAqD;AAAnC,0GAAA,eAAe,OAAA;AACjC,gDAMuB;AAFrB,0HAAA,2BAA2B,OAAA;AAC3B,0GAAA,WAAW,OAAA;AAEb,kCAA+D;AAArB,4FAAA,IAAI,OAAA;AAC9C,gDAMuB;AAFrB,sHAAA,uBAAuB,OAAA;AACvB,0GAAA,WAAW,OAAA;AAEb,4CAA+F;AAA/B,sGAAA,SAAS,OAAA;AACzE,sDAO0B;AAFxB,2HAAA,yBAAyB,OAAA;AACzB,+GAAA,aAAa,OAAA;AAEf,0CAAsF;AAAjD,8GAAA,kBAAkB,OAAA;AAAE,oGAAA,QAAQ,OAAA"}
@@ -1,9 +1,10 @@
1
1
  // File generated from our OpenAPI spec by Stainless.
2
2
  export { CompanyBenefitsSinglePage, SupportedBenefitsSinglePage, Benefits } from './benefits/index.mjs';
3
3
  export { CompanyResource } from './company.mjs';
4
+ export { EmploymentDataResponsesPage, Employments } from './employments.mjs';
4
5
  export { HRIS } from './hris.mjs';
5
- export { IndividualResponsesResponsesPage, Individuals } from './individuals/index.mjs';
6
+ export { IndividualResponsesPage, Individuals } from './individuals.mjs';
6
7
  export { Directory } from './directory.mjs';
7
- export { PayStatementResponsesResponsesPage, PayStatements } from './pay-statements.mjs';
8
+ export { PayStatementResponsesPage, PayStatements } from './pay-statements.mjs';
8
9
  export { PaymentsSinglePage, Payments } from './payments.mjs';
9
10
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/resources/hris/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;OAE9C,EAUL,yBAAyB,EACzB,2BAA2B,EAC3B,QAAQ,GACT;OACM,EAAW,eAAe,EAAE;OAC5B,EAAmC,IAAI,EAAE;OACzC,EAIL,gCAAgC,EAChC,WAAW,GACZ;OACM,EAAyD,SAAS,EAAE;OACpE,EAKL,kCAAkC,EAClC,aAAa,GACd;OACM,EAA8B,kBAAkB,EAAE,QAAQ,EAAE"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/resources/hris/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;OAE9C,EAUL,yBAAyB,EACzB,2BAA2B,EAC3B,QAAQ,GACT;OACM,EAAW,eAAe,EAAE;OAC5B,EAIL,2BAA2B,EAC3B,WAAW,GACZ;OACM,EAAmC,IAAI,EAAE;OACzC,EAIL,uBAAuB,EACvB,WAAW,GACZ;OACM,EAAyD,SAAS,EAAE;OACpE,EAKL,yBAAyB,EACzB,aAAa,GACd;OACM,EAA8B,kBAAkB,EAAE,QAAQ,EAAE"}
@@ -1,24 +1,20 @@
1
1
  import * as Core from '@tryfinch/finch-api/core';
2
2
  import { APIResource } from '@tryfinch/finch-api/resource';
3
3
  import * as HRIS from '@tryfinch/finch-api/resources/hris/index';
4
- import { EmploymentData } from './employment-data.js';
5
4
  import * as API from './index.js';
6
5
  import { ResponsesPage } from '@tryfinch/finch-api/pagination';
7
6
  export declare class Individuals extends APIResource {
8
- employmentData: EmploymentData;
9
7
  /**
10
8
  * Read individual data, excluding income and employment data
11
9
  */
12
10
  retrieveMany(
13
11
  body?: IndividualRetrieveManyParams,
14
12
  options?: Core.RequestOptions,
15
- ): Core.PagePromise<IndividualResponsesResponsesPage, IndividualResponse>;
16
- retrieveMany(
17
- options?: Core.RequestOptions,
18
- ): Core.PagePromise<IndividualResponsesResponsesPage, IndividualResponse>;
13
+ ): Core.PagePromise<IndividualResponsesPage, IndividualResponse>;
14
+ retrieveMany(options?: Core.RequestOptions): Core.PagePromise<IndividualResponsesPage, IndividualResponse>;
19
15
  }
20
- export declare class IndividualResponsesResponsesPage extends ResponsesPage<IndividualResponse> {}
21
- type _IndividualResponsesResponsesPage = IndividualResponsesResponsesPage;
16
+ export declare class IndividualResponsesPage extends ResponsesPage<IndividualResponse> {}
17
+ type _IndividualResponsesPage = IndividualResponsesPage;
22
18
  export interface Individual {
23
19
  /**
24
20
  * A stable Finch `id` (UUID v4) for an individual in the company.
@@ -84,12 +80,8 @@ export declare namespace IndividualRetrieveManyParams {
84
80
  export declare namespace Individuals {
85
81
  export import Individual = API.Individual;
86
82
  export import IndividualResponse = API.IndividualResponse;
87
- type IndividualResponsesResponsesPage = _IndividualResponsesResponsesPage;
83
+ type IndividualResponsesPage = _IndividualResponsesPage;
88
84
  export import IndividualRetrieveManyParams = API.IndividualRetrieveManyParams;
89
- export import EmploymentData = API.EmploymentData;
90
- export import EmploymentDataResponse = API.EmploymentDataResponse;
91
- export import EmploymentDataResponsesResponsesPage = API.EmploymentDataResponsesResponsesPage;
92
- export import EmploymentDataRetrieveManyParams = API.EmploymentDataRetrieveManyParams;
93
85
  }
94
86
  export {};
95
87
  //# sourceMappingURL=individuals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"individuals.d.ts","sourceRoot":"","sources":["../../src/resources/hris/individuals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+ // File generated from our OpenAPI spec by Stainless.
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+ exports.IndividualResponsesPage = exports.Individuals = void 0;
5
+ const resource_1 = require('@tryfinch/finch-api/resource');
6
+ const core_1 = require('@tryfinch/finch-api/core');
7
+ const pagination_1 = require('@tryfinch/finch-api/pagination');
8
+ class Individuals extends resource_1.APIResource {
9
+ retrieveMany(body = {}, options) {
10
+ if ((0, core_1.isRequestOptions)(body)) {
11
+ return this.retrieveMany({}, body);
12
+ }
13
+ return this.getAPIList('/employer/individual', IndividualResponsesPage, {
14
+ body,
15
+ method: 'post',
16
+ ...options,
17
+ });
18
+ }
19
+ }
20
+ exports.Individuals = Individuals;
21
+ class IndividualResponsesPage extends pagination_1.ResponsesPage {}
22
+ exports.IndividualResponsesPage = IndividualResponsesPage;
23
+ (function (Individuals) {})((Individuals = exports.Individuals || (exports.Individuals = {})));
24
+ //# sourceMappingURL=individuals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"individuals.js","sourceRoot":"","sources":["../../src/resources/hris/individuals.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAGrD,2DAA2D;AAC3D,mDAA4D;AAG5D,+DAA+D;AAE/D,MAAa,WAAY,SAAQ,sBAAW;IAS1C,YAAY,CACV,OAA2D,EAAE,EAC7D,OAA6B;QAE7B,IAAI,IAAA,uBAAgB,EAAC,IAAI,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SACpC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,uBAAuB,EAAE;YACtE,IAAI;YACJ,MAAM,EAAE,MAAM;YACd,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;CACF;AAtBD,kCAsBC;AAED,MAAa,uBAAwB,SAAQ,0BAAiC;CAAG;AAAjF,0DAAiF;AAwFjF,WAAiB,WAAW;AAK5B,CAAC,EALgB,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAK3B"}
@@ -1,28 +1,19 @@
1
1
  // File generated from our OpenAPI spec by Stainless.
2
2
  import { APIResource } from '@tryfinch/finch-api/resource';
3
3
  import { isRequestOptions } from '@tryfinch/finch-api/core';
4
- import { EmploymentData } from './employment-data.mjs';
5
- import * as API from './index.mjs';
6
4
  import { ResponsesPage } from '@tryfinch/finch-api/pagination';
7
5
  export class Individuals extends APIResource {
8
- constructor() {
9
- super(...arguments);
10
- this.employmentData = new EmploymentData(this.client);
11
- }
12
6
  retrieveMany(body = {}, options) {
13
7
  if (isRequestOptions(body)) {
14
8
  return this.retrieveMany({}, body);
15
9
  }
16
- return this.getAPIList('/employer/individual', IndividualResponsesResponsesPage, {
10
+ return this.getAPIList('/employer/individual', IndividualResponsesPage, {
17
11
  body,
18
12
  method: 'post',
19
13
  ...options,
20
14
  });
21
15
  }
22
16
  }
23
- export class IndividualResponsesResponsesPage extends ResponsesPage {}
24
- (function (Individuals) {
25
- Individuals.EmploymentData = API.EmploymentData;
26
- Individuals.EmploymentDataResponsesResponsesPage = API.EmploymentDataResponsesResponsesPage;
27
- })(Individuals || (Individuals = {}));
17
+ export class IndividualResponsesPage extends ResponsesPage {}
18
+ (function (Individuals) {})(Individuals || (Individuals = {}));
28
19
  //# sourceMappingURL=individuals.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"individuals.mjs","sourceRoot":"","sources":["../../src/resources/hris/individuals.ts"],"names":[],"mappings":"AAAA,qDAAqD;OAG9C,EAAE,WAAW,EAAE,MAAM,8BAA8B;OACnD,EAAE,gBAAgB,EAAE,MAAM,0BAA0B;OAGpD,EAAE,aAAa,EAAE,MAAM,gCAAgC;AAE9D,MAAM,OAAO,WAAY,SAAQ,WAAW;IAS1C,YAAY,CACV,OAA2D,EAAE,EAC7D,OAA6B;QAE7B,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SACpC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,uBAAuB,EAAE;YACtE,IAAI;YACJ,MAAM,EAAE,MAAM;YACd,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,aAAiC;CAAG;AAwFjF,WAAiB,WAAW;AAK5B,CAAC,EALgB,WAAW,KAAX,WAAW,QAK3B"}
@@ -14,10 +14,10 @@ export declare class PayStatements extends APIResource {
14
14
  retrieveMany(
15
15
  body: PayStatementRetrieveManyParams,
16
16
  options?: Core.RequestOptions,
17
- ): Core.PagePromise<PayStatementResponsesResponsesPage, PayStatementResponse>;
17
+ ): Core.PagePromise<PayStatementResponsesPage, PayStatementResponse>;
18
18
  }
19
- export declare class PayStatementResponsesResponsesPage extends ResponsesPage<PayStatementResponse> {}
20
- type _PayStatementResponsesResponsesPage = PayStatementResponsesResponsesPage;
19
+ export declare class PayStatementResponsesPage extends ResponsesPage<PayStatementResponse> {}
20
+ type _PayStatementResponsesPage = PayStatementResponsesPage;
21
21
  export interface PayStatement {
22
22
  /**
23
23
  * The array of earnings objects associated with this pay statement
@@ -190,7 +190,7 @@ export declare namespace PayStatements {
190
190
  export import PayStatement = API.PayStatement;
191
191
  export import PayStatementResponse = API.PayStatementResponse;
192
192
  export import PayStatementResponseBody = API.PayStatementResponseBody;
193
- type PayStatementResponsesResponsesPage = _PayStatementResponsesResponsesPage;
193
+ type PayStatementResponsesPage = _PayStatementResponsesPage;
194
194
  export import PayStatementRetrieveManyParams = API.PayStatementRetrieveManyParams;
195
195
  }
196
196
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"pay-statements.d.ts","sourceRoot":"","sources":["../../src/resources/hris/pay-statements.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pay-statements.d.ts","sourceRoot":"","sources":["../../src/resources/hris/pay-statements.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  // File generated from our OpenAPI spec by Stainless.
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
- exports.PayStatementResponsesResponsesPage = exports.PayStatements = void 0;
4
+ exports.PayStatementResponsesPage = exports.PayStatements = void 0;
5
5
  const resource_1 = require('@tryfinch/finch-api/resource');
6
6
  const pagination_1 = require('@tryfinch/finch-api/pagination');
7
7
  class PayStatements extends resource_1.APIResource {
@@ -12,7 +12,7 @@ class PayStatements extends resource_1.APIResource {
12
12
  * support Benefits.
13
13
  */
14
14
  retrieveMany(body, options) {
15
- return this.getAPIList('/employer/pay-statement', PayStatementResponsesResponsesPage, {
15
+ return this.getAPIList('/employer/pay-statement', PayStatementResponsesPage, {
16
16
  body,
17
17
  method: 'post',
18
18
  ...options,
@@ -20,7 +20,7 @@ class PayStatements extends resource_1.APIResource {
20
20
  }
21
21
  }
22
22
  exports.PayStatements = PayStatements;
23
- class PayStatementResponsesResponsesPage extends pagination_1.ResponsesPage {}
24
- exports.PayStatementResponsesResponsesPage = PayStatementResponsesResponsesPage;
23
+ class PayStatementResponsesPage extends pagination_1.ResponsesPage {}
24
+ exports.PayStatementResponsesPage = PayStatementResponsesPage;
25
25
  (function (PayStatements) {})((PayStatements = exports.PayStatements || (exports.PayStatements = {})));
26
26
  //# sourceMappingURL=pay-statements.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pay-statements.js","sourceRoot":"","sources":["../../src/resources/hris/pay-statements.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAGrD,2DAA2D;AAI3D,+DAA+D;AAE/D,MAAa,aAAc,SAAQ,sBAAW;IAC5C;;;;;OAKG;IACH,YAAY,CACV,IAAoC,EACpC,OAA6B;QAE7B,OAAO,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,kCAAkC,EAAE;YACpF,IAAI;YACJ,MAAM,EAAE,MAAM;YACd,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;CACF;AAjBD,sCAiBC;AAED,MAAa,kCAAmC,SAAQ,0BAAmC;CAAG;AAA9F,gFAA8F;AAkN9F,WAAiB,aAAa;AAM9B,CAAC,EANgB,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAM7B"}
1
+ {"version":3,"file":"pay-statements.js","sourceRoot":"","sources":["../../src/resources/hris/pay-statements.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAGrD,2DAA2D;AAI3D,+DAA+D;AAE/D,MAAa,aAAc,SAAQ,sBAAW;IAC5C;;;;;OAKG;IACH,YAAY,CACV,IAAoC,EACpC,OAA6B;QAE7B,OAAO,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,yBAAyB,EAAE;YAC3E,IAAI;YACJ,MAAM,EAAE,MAAM;YACd,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;CACF;AAjBD,sCAiBC;AAED,MAAa,yBAA0B,SAAQ,0BAAmC;CAAG;AAArF,8DAAqF;AAkNrF,WAAiB,aAAa;AAM9B,CAAC,EANgB,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAM7B"}
@@ -9,13 +9,13 @@ export class PayStatements extends APIResource {
9
9
  * support Benefits.
10
10
  */
11
11
  retrieveMany(body, options) {
12
- return this.getAPIList('/employer/pay-statement', PayStatementResponsesResponsesPage, {
12
+ return this.getAPIList('/employer/pay-statement', PayStatementResponsesPage, {
13
13
  body,
14
14
  method: 'post',
15
15
  ...options,
16
16
  });
17
17
  }
18
18
  }
19
- export class PayStatementResponsesResponsesPage extends ResponsesPage {}
19
+ export class PayStatementResponsesPage extends ResponsesPage {}
20
20
  (function (PayStatements) {})(PayStatements || (PayStatements = {}));
21
21
  //# sourceMappingURL=pay-statements.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pay-statements.mjs","sourceRoot":"","sources":["../../src/resources/hris/pay-statements.ts"],"names":[],"mappings":"AAAA,qDAAqD;OAG9C,EAAE,WAAW,EAAE,MAAM,8BAA8B;OAInD,EAAE,aAAa,EAAE,MAAM,gCAAgC;AAE9D,MAAM,OAAO,aAAc,SAAQ,WAAW;IAC5C;;;;;OAKG;IACH,YAAY,CACV,IAAoC,EACpC,OAA6B;QAE7B,OAAO,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,kCAAkC,EAAE;YACpF,IAAI;YACJ,MAAM,EAAE,MAAM;YACd,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,kCAAmC,SAAQ,aAAmC;CAAG;AAkN9F,WAAiB,aAAa;AAM9B,CAAC,EANgB,aAAa,KAAb,aAAa,QAM7B"}
1
+ {"version":3,"file":"pay-statements.mjs","sourceRoot":"","sources":["../../src/resources/hris/pay-statements.ts"],"names":[],"mappings":"AAAA,qDAAqD;OAG9C,EAAE,WAAW,EAAE,MAAM,8BAA8B;OAInD,EAAE,aAAa,EAAE,MAAM,gCAAgC;AAE9D,MAAM,OAAO,aAAc,SAAQ,WAAW;IAC5C;;;;;OAKG;IACH,YAAY,CACV,IAAoC,EACpC,OAA6B;QAE7B,OAAO,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,yBAAyB,EAAE;YAC3E,IAAI;YACJ,MAAM,EAAE,MAAM;YACd,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,aAAmC;CAAG;AAkNrF,WAAiB,aAAa;AAM9B,CAAC,EANgB,aAAa,KAAb,aAAa,QAM7B"}
@@ -3,4 +3,5 @@ export { ATS } from './ats/ats.js';
3
3
  export { DisconnectResponse, Introspection, Account } from './account.js';
4
4
  export { Income, Location, Money, Paging, HRIS } from './hris/hris.js';
5
5
  export { Provider, ProvidersSinglePage, Providers } from './providers.js';
6
+ export { Webhooks } from './webhooks.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -1,7 +1,13 @@
1
1
  'use strict';
2
2
  // File generated from our OpenAPI spec by Stainless.
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
- exports.Providers = exports.ProvidersSinglePage = exports.HRIS = exports.Account = exports.ATS = void 0;
4
+ exports.Webhooks =
5
+ exports.Providers =
6
+ exports.ProvidersSinglePage =
7
+ exports.HRIS =
8
+ exports.Account =
9
+ exports.ATS =
10
+ void 0;
5
11
  var ats_1 = require('./ats/ats.js');
6
12
  Object.defineProperty(exports, 'ATS', {
7
13
  enumerable: true,
@@ -36,4 +42,11 @@ Object.defineProperty(exports, 'Providers', {
36
42
  return providers_1.Providers;
37
43
  },
38
44
  });
45
+ var webhooks_1 = require('./webhooks.js');
46
+ Object.defineProperty(exports, 'Webhooks', {
47
+ enumerable: true,
48
+ get: function () {
49
+ return webhooks_1.Webhooks;
50
+ },
51
+ });
39
52
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAGrD,oCAAgC;AAAvB,0FAAA,GAAG,OAAA;AACZ,wCAAuE;AAA3B,kGAAA,OAAO,OAAA;AACnD,uCAAoE;AAA1B,4FAAA,IAAI,OAAA;AAC9C,4CAAuE;AAApD,gHAAA,mBAAmB,OAAA;AAAE,sGAAA,SAAS,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAGrD,oCAAgC;AAAvB,0FAAA,GAAG,OAAA;AACZ,wCAAuE;AAA3B,kGAAA,OAAO,OAAA;AACnD,uCAAoE;AAA1B,4FAAA,IAAI,OAAA;AAC9C,4CAAuE;AAApD,gHAAA,mBAAmB,OAAA;AAAE,sGAAA,SAAS,OAAA;AACjD,0CAAsC;AAA7B,oGAAA,QAAQ,OAAA"}
@@ -3,4 +3,5 @@ export { ATS } from './ats/ats.mjs';
3
3
  export { Account } from './account.mjs';
4
4
  export { HRIS } from './hris/hris.mjs';
5
5
  export { ProvidersSinglePage, Providers } from './providers.mjs';
6
+ export { Webhooks } from './webhooks.mjs';
6
7
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;OAG9C,EAAE,GAAG,EAAE;OACP,EAAqC,OAAO,EAAE;OAC9C,EAAmC,IAAI,EAAE;OACzC,EAAY,mBAAmB,EAAE,SAAS,EAAE"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;OAG9C,EAAE,GAAG,EAAE;OACP,EAAqC,OAAO,EAAE;OAC9C,EAAmC,IAAI,EAAE;OACzC,EAAY,mBAAmB,EAAE,SAAS,EAAE;OAC5C,EAAE,QAAQ,EAAE"}
@@ -0,0 +1,22 @@
1
+ import { APIResource } from '@tryfinch/finch-api/resource';
2
+ import { HeadersLike } from '@tryfinch/finch-api/core';
3
+ export declare class Webhooks extends APIResource {
4
+ /**
5
+ * Validates that the given payload was sent by Finch and parses the payload.
6
+ */
7
+ unwrap(payload: string, headers: HeadersLike, secret?: string | undefined | null): Object;
8
+ private parseSecret;
9
+ private signPayload;
10
+ /** Make an assertion, if not `true`, then throw. */
11
+ private assert;
12
+ /** Compare to array buffers or data views in a way that timing based attacks
13
+ * cannot gain information about the platform. */
14
+ private timingSafeEqual;
15
+ /**
16
+ * Validates whether or not the webhook payload was sent by Finch.
17
+ *
18
+ * An error will be raised if the webhook payload was not sent by Finch.
19
+ */
20
+ verifySignature(body: string, headers: HeadersLike, secret?: string | undefined | null): void;
21
+ }
22
+ //# sourceMappingURL=webhooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../src/resources/webhooks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,OAAO,EAAa,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAElE,qBAAa,QAAS,SAAQ,WAAW;IACvC;;OAEG;IACH,MAAM,CACJ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,EACpB,MAAM,GAAE,MAAM,GAAG,SAAS,GAAG,IAAgC,GAC5D,MAAM;IAKT,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,WAAW;IAanB,oDAAoD;IACpD,OAAO,CAAC,MAAM;IAMd;qDACiD;IACjD,OAAO,CAAC,eAAe;IAwBvB;;;;OAIG;IACH,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,EACpB,MAAM,GAAE,MAAM,GAAG,SAAS,GAAG,IAAgC,GAC5D,IAAI;CA6DR"}
@@ -0,0 +1,118 @@
1
+ 'use strict';
2
+ // File generated from our OpenAPI spec by Stainless.
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+ exports.Webhooks = void 0;
5
+ const resource_1 = require('@tryfinch/finch-api/resource');
6
+ const crypto_1 = require('crypto');
7
+ const core_1 = require('@tryfinch/finch-api/core');
8
+ class Webhooks extends resource_1.APIResource {
9
+ /**
10
+ * Validates that the given payload was sent by Finch and parses the payload.
11
+ */
12
+ unwrap(payload, headers, secret = this.client.webhookSecret) {
13
+ this.verifySignature(payload, headers, secret);
14
+ return JSON.parse(payload);
15
+ }
16
+ parseSecret(secret) {
17
+ if (!secret) {
18
+ throw new Error(
19
+ "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",
20
+ );
21
+ }
22
+ const buf = Buffer.from(secret, 'base64');
23
+ if (buf.toString('base64') !== secret) {
24
+ throw new Error(`Given secret is not valid`);
25
+ }
26
+ return new Uint8Array(buf);
27
+ }
28
+ signPayload(payload, { eventId, timestamp, secret }) {
29
+ const encoder = new TextEncoder();
30
+ const toSign = encoder.encode(`${eventId}.${timestamp.getTime() / 1000}.${payload}`);
31
+ const hmac = (0, crypto_1.createHmac)('sha256', secret);
32
+ hmac.update(toSign);
33
+ return `v1,${hmac.digest('base64')}`;
34
+ }
35
+ /** Make an assertion, if not `true`, then throw. */
36
+ assert(expr, msg = '') {
37
+ if (!expr) {
38
+ throw new Error(msg);
39
+ }
40
+ }
41
+ /** Compare to array buffers or data views in a way that timing based attacks
42
+ * cannot gain information about the platform. */
43
+ timingSafeEqual(a, b) {
44
+ if (a.byteLength !== b.byteLength) {
45
+ return false;
46
+ }
47
+ if (!(a instanceof DataView)) {
48
+ a = new DataView(ArrayBuffer.isView(a) ? a.buffer : a);
49
+ }
50
+ if (!(b instanceof DataView)) {
51
+ b = new DataView(ArrayBuffer.isView(b) ? b.buffer : b);
52
+ }
53
+ this.assert(a instanceof DataView);
54
+ this.assert(b instanceof DataView);
55
+ const length = a.byteLength;
56
+ let out = 0;
57
+ let i = -1;
58
+ while (++i < length) {
59
+ out |= a.getUint8(i) ^ b.getUint8(i);
60
+ }
61
+ return out === 0;
62
+ }
63
+ /**
64
+ * Validates whether or not the webhook payload was sent by Finch.
65
+ *
66
+ * An error will be raised if the webhook payload was not sent by Finch.
67
+ */
68
+ verifySignature(body, headers, secret = this.client.webhookSecret) {
69
+ const parsedSecret = this.parseSecret(secret);
70
+ const eventId = (0, core_1.getHeader)(headers, 'finch-event-id');
71
+ if (!eventId) {
72
+ throw new Error('Could not find finch-event-id header');
73
+ }
74
+ const msgTimestamp = (0, core_1.getHeader)(headers, 'finch-timestamp');
75
+ if (!msgTimestamp) {
76
+ throw new Error('Could not find finch-timestamp header');
77
+ }
78
+ const msgSignature = (0, core_1.getHeader)(headers, 'finch-signature');
79
+ if (!msgSignature) {
80
+ throw new Error('Could not find finch-signature header');
81
+ }
82
+ const now = Math.floor(Date.now() / 1000);
83
+ const timestampSeconds = parseInt(msgTimestamp, 10);
84
+ if (isNaN(timestampSeconds)) {
85
+ throw new Error(`Invalid timestamp header: ${msgTimestamp}`);
86
+ }
87
+ if (typeof body !== 'string') {
88
+ throw new Error(
89
+ 'Webhook body must be passed as the raw JSON string sent from the server (do not parse it first).',
90
+ );
91
+ }
92
+ const webhook_tolerance_in_seconds = 5 * 60; // 5 minutes
93
+ if (now - timestampSeconds > webhook_tolerance_in_seconds) {
94
+ throw new Error('Webhook timestamp is too old');
95
+ }
96
+ if (timestampSeconds > now + webhook_tolerance_in_seconds) {
97
+ throw new Error('Webhook timestamp is too new');
98
+ }
99
+ const timestamp = new Date(timestampSeconds * 1000);
100
+ const computedSignature = this.signPayload(body, { eventId, timestamp, secret: parsedSecret });
101
+ const expectedSignature = computedSignature.split(',')[1];
102
+ const passedSignatures = msgSignature.split(' ');
103
+ const encoder = new globalThis.TextEncoder();
104
+ for (const versionedSignature of passedSignatures) {
105
+ const [version, signature] = versionedSignature.split(',');
106
+ if (version !== 'v1') {
107
+ continue;
108
+ }
109
+ if (this.timingSafeEqual(encoder.encode(signature), encoder.encode(expectedSignature))) {
110
+ // valid!
111
+ return;
112
+ }
113
+ }
114
+ throw new Error('None of the given webhook signatures match the expected signature');
115
+ }
116
+ }
117
+ exports.Webhooks = Webhooks;
118
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../src/resources/webhooks.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAErD,2DAA2D;AAC3D,mCAAoC;AACpC,mDAAkE;AAElE,MAAa,QAAS,SAAQ,sBAAW;IACvC;;OAEG;IACH,MAAM,CACJ,OAAe,EACf,OAAoB,EACpB,SAAoC,IAAI,CAAC,MAAM,CAAC,aAAa;QAE7D,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAEO,WAAW,CAAC,MAAiC;QACnD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CACb,kKAAkK,CACnK,CAAC;SACH;QAED,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1C,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE;YACrC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;SAC9C;QAED,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAEO,WAAW,CACjB,OAAe,EACf,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAA4D;QAExF,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;QAErF,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEpB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvC,CAAC;IAED,oDAAoD;IAC5C,MAAM,CAAC,IAAa,EAAE,GAAG,GAAG,EAAE;QACpC,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;SACtB;IACH,CAAC;IAED;qDACiD;IACzC,eAAe,CACrB,CAA+C,EAC/C,CAA+C;QAE/C,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,EAAE;YACjC,OAAO,KAAK,CAAC;SACd;QACD,IAAI,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,EAAE;YAC5B,CAAC,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,EAAE;YAC5B,CAAC,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,QAAQ,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC;QAC5B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACX,OAAO,EAAE,CAAC,GAAG,MAAM,EAAE;YACnB,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SACtC;QACD,OAAO,GAAG,KAAK,CAAC,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,eAAe,CACb,IAAY,EACZ,OAAoB,EACpB,SAAoC,IAAI,CAAC,MAAM,CAAC,aAAa;QAE7D,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE9C,MAAM,OAAO,GAAG,IAAA,gBAAS,EAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;SACzD;QAED,MAAM,YAAY,GAAG,IAAA,gBAAS,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SAC1D;QAED,MAAM,YAAY,GAAG,IAAA,gBAAS,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SAC1D;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,6BAA6B,YAAY,EAAE,CAAC,CAAC;SAC9D;QAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAC;SACH;QAED,MAAM,4BAA4B,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY;QACzD,IAAI,GAAG,GAAG,gBAAgB,GAAG,4BAA4B,EAAE;YACzD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;SACjD;QAED,IAAI,gBAAgB,GAAG,GAAG,GAAG,4BAA4B,EAAE;YACzD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;SACjD;QAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;QAEpD,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QAC/F,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1D,MAAM,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QAC7C,KAAK,MAAM,kBAAkB,IAAI,gBAAgB,EAAE;YACjD,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3D,IAAI,OAAO,KAAK,IAAI,EAAE;gBACpB,SAAS;aACV;YAED,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE;gBACtF,SAAS;gBACT,OAAO;aACR;SACF;QAED,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;CACF;AAhJD,4BAgJC"}
@@ -0,0 +1,114 @@
1
+ // File generated from our OpenAPI spec by Stainless.
2
+ import { APIResource } from '@tryfinch/finch-api/resource';
3
+ import { createHmac } from 'crypto';
4
+ import { getHeader } from '@tryfinch/finch-api/core';
5
+ export class Webhooks extends APIResource {
6
+ /**
7
+ * Validates that the given payload was sent by Finch and parses the payload.
8
+ */
9
+ unwrap(payload, headers, secret = this.client.webhookSecret) {
10
+ this.verifySignature(payload, headers, secret);
11
+ return JSON.parse(payload);
12
+ }
13
+ parseSecret(secret) {
14
+ if (!secret) {
15
+ throw new Error(
16
+ "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",
17
+ );
18
+ }
19
+ const buf = Buffer.from(secret, 'base64');
20
+ if (buf.toString('base64') !== secret) {
21
+ throw new Error(`Given secret is not valid`);
22
+ }
23
+ return new Uint8Array(buf);
24
+ }
25
+ signPayload(payload, { eventId, timestamp, secret }) {
26
+ const encoder = new TextEncoder();
27
+ const toSign = encoder.encode(`${eventId}.${timestamp.getTime() / 1000}.${payload}`);
28
+ const hmac = createHmac('sha256', secret);
29
+ hmac.update(toSign);
30
+ return `v1,${hmac.digest('base64')}`;
31
+ }
32
+ /** Make an assertion, if not `true`, then throw. */
33
+ assert(expr, msg = '') {
34
+ if (!expr) {
35
+ throw new Error(msg);
36
+ }
37
+ }
38
+ /** Compare to array buffers or data views in a way that timing based attacks
39
+ * cannot gain information about the platform. */
40
+ timingSafeEqual(a, b) {
41
+ if (a.byteLength !== b.byteLength) {
42
+ return false;
43
+ }
44
+ if (!(a instanceof DataView)) {
45
+ a = new DataView(ArrayBuffer.isView(a) ? a.buffer : a);
46
+ }
47
+ if (!(b instanceof DataView)) {
48
+ b = new DataView(ArrayBuffer.isView(b) ? b.buffer : b);
49
+ }
50
+ this.assert(a instanceof DataView);
51
+ this.assert(b instanceof DataView);
52
+ const length = a.byteLength;
53
+ let out = 0;
54
+ let i = -1;
55
+ while (++i < length) {
56
+ out |= a.getUint8(i) ^ b.getUint8(i);
57
+ }
58
+ return out === 0;
59
+ }
60
+ /**
61
+ * Validates whether or not the webhook payload was sent by Finch.
62
+ *
63
+ * An error will be raised if the webhook payload was not sent by Finch.
64
+ */
65
+ verifySignature(body, headers, secret = this.client.webhookSecret) {
66
+ const parsedSecret = this.parseSecret(secret);
67
+ const eventId = getHeader(headers, 'finch-event-id');
68
+ if (!eventId) {
69
+ throw new Error('Could not find finch-event-id header');
70
+ }
71
+ const msgTimestamp = getHeader(headers, 'finch-timestamp');
72
+ if (!msgTimestamp) {
73
+ throw new Error('Could not find finch-timestamp header');
74
+ }
75
+ const msgSignature = getHeader(headers, 'finch-signature');
76
+ if (!msgSignature) {
77
+ throw new Error('Could not find finch-signature header');
78
+ }
79
+ const now = Math.floor(Date.now() / 1000);
80
+ const timestampSeconds = parseInt(msgTimestamp, 10);
81
+ if (isNaN(timestampSeconds)) {
82
+ throw new Error(`Invalid timestamp header: ${msgTimestamp}`);
83
+ }
84
+ if (typeof body !== 'string') {
85
+ throw new Error(
86
+ 'Webhook body must be passed as the raw JSON string sent from the server (do not parse it first).',
87
+ );
88
+ }
89
+ const webhook_tolerance_in_seconds = 5 * 60; // 5 minutes
90
+ if (now - timestampSeconds > webhook_tolerance_in_seconds) {
91
+ throw new Error('Webhook timestamp is too old');
92
+ }
93
+ if (timestampSeconds > now + webhook_tolerance_in_seconds) {
94
+ throw new Error('Webhook timestamp is too new');
95
+ }
96
+ const timestamp = new Date(timestampSeconds * 1000);
97
+ const computedSignature = this.signPayload(body, { eventId, timestamp, secret: parsedSecret });
98
+ const expectedSignature = computedSignature.split(',')[1];
99
+ const passedSignatures = msgSignature.split(' ');
100
+ const encoder = new globalThis.TextEncoder();
101
+ for (const versionedSignature of passedSignatures) {
102
+ const [version, signature] = versionedSignature.split(',');
103
+ if (version !== 'v1') {
104
+ continue;
105
+ }
106
+ if (this.timingSafeEqual(encoder.encode(signature), encoder.encode(expectedSignature))) {
107
+ // valid!
108
+ return;
109
+ }
110
+ }
111
+ throw new Error('None of the given webhook signatures match the expected signature');
112
+ }
113
+ }
114
+ //# sourceMappingURL=webhooks.mjs.map