@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.
- package/CHANGELOG.md +57 -0
- package/README.md +33 -0
- package/_shims/{ReadableStream.node.d.ts → ReadableStream-node.d.ts} +1 -1
- package/_shims/ReadableStream-node.d.ts.map +1 -0
- package/_shims/{ReadableStream.node.js → ReadableStream-node.js} +1 -1
- package/_shims/ReadableStream-node.js.map +1 -0
- package/_shims/{ReadableStream.node.mjs → ReadableStream-node.mjs} +1 -1
- package/_shims/ReadableStream-node.mjs.map +1 -0
- package/_shims/{agent.node.d.ts → agent-node.d.ts} +1 -1
- package/_shims/agent-node.d.ts.map +1 -0
- package/_shims/{agent.node.js → agent-node.js} +1 -1
- package/_shims/{agent.node.js.map → agent-node.js.map} +1 -1
- package/_shims/{agent.node.mjs → agent-node.mjs} +1 -1
- package/_shims/{agent.node.mjs.map → agent-node.mjs.map} +1 -1
- package/_shims/agent.d.ts +1 -1
- package/_shims/agent.js +1 -1
- package/_shims/agent.mjs +1 -1
- package/_shims/{fileFromPath.node.d.ts → fileFromPath-node.d.ts} +2 -2
- package/_shims/{fileFromPath.node.d.ts.map → fileFromPath-node.d.ts.map} +1 -1
- package/_shims/{fileFromPath.node.js → fileFromPath-node.js} +1 -1
- package/_shims/{fileFromPath.node.js.map → fileFromPath-node.js.map} +1 -1
- package/_shims/{fileFromPath.node.mjs → fileFromPath-node.mjs} +1 -1
- package/_shims/{fileFromPath.node.mjs.map → fileFromPath-node.mjs.map} +1 -1
- package/_shims/fileFromPath.d.ts +2 -2
- package/_shims/fileFromPath.d.ts.map +1 -1
- package/_shims/fileFromPath.js +1 -1
- package/_shims/fileFromPath.mjs +1 -1
- package/_shims/{getMultipartRequestOptions.node.d.ts → getMultipartRequestOptions-node.d.ts} +2 -2
- package/_shims/getMultipartRequestOptions-node.d.ts.map +1 -0
- package/_shims/{getMultipartRequestOptions.node.js → getMultipartRequestOptions-node.js} +1 -1
- package/_shims/{getMultipartRequestOptions.node.js.map → getMultipartRequestOptions-node.js.map} +1 -1
- package/_shims/{getMultipartRequestOptions.node.mjs → getMultipartRequestOptions-node.mjs} +1 -1
- package/_shims/{getMultipartRequestOptions.node.mjs.map → getMultipartRequestOptions-node.mjs.map} +1 -1
- package/_shims/getMultipartRequestOptions.d.ts +1 -1
- package/_shims/getMultipartRequestOptions.d.ts.map +1 -1
- package/_shims/{node-readable.node.d.ts → node-readable-node.d.ts} +1 -1
- package/_shims/{node-readable.node.d.ts.map → node-readable-node.d.ts.map} +1 -1
- package/_shims/{node-readable.node.js → node-readable-node.js} +1 -1
- package/_shims/node-readable-node.js.map +1 -0
- package/_shims/{node-readable.node.mjs → node-readable-node.mjs} +1 -1
- package/_shims/node-readable-node.mjs.map +1 -0
- package/core.d.ts +3 -2
- package/core.d.ts.map +1 -1
- package/core.js +3 -1
- package/core.js.map +1 -1
- package/core.mjs +1 -1
- package/core.mjs.map +1 -1
- package/error.d.ts +1 -1
- package/error.d.ts.map +1 -1
- package/error.js +2 -2
- package/error.js.map +1 -1
- package/error.mjs +2 -2
- package/error.mjs.map +1 -1
- package/index.d.mts +8 -3
- package/index.d.ts +8 -3
- package/index.d.ts.map +1 -1
- package/index.js +11 -5
- package/index.js.map +1 -1
- package/index.mjs +11 -5
- package/index.mjs.map +1 -1
- package/package.json +9 -4
- package/resources/hris/benefits/benefits.d.ts +1 -1
- package/resources/hris/benefits/benefits.d.ts.map +1 -1
- package/resources/hris/benefits/index.d.ts +1 -1
- package/resources/hris/benefits/index.d.ts.map +1 -1
- package/resources/hris/benefits/individuals.d.ts +5 -5
- package/resources/hris/benefits/individuals.d.ts.map +1 -1
- package/resources/hris/benefits/individuals.js +2 -2
- package/resources/hris/benefits/individuals.js.map +1 -1
- package/resources/hris/benefits/individuals.mjs +2 -2
- package/resources/hris/benefits/individuals.mjs.map +1 -1
- package/resources/hris/{individuals/employment-data.d.ts → employments.d.ts} +12 -12
- package/resources/hris/employments.d.ts.map +1 -0
- package/resources/hris/employments.js +27 -0
- package/resources/hris/employments.js.map +1 -0
- package/resources/hris/{individuals/employment-data.mjs → employments.mjs} +5 -8
- package/resources/hris/employments.mjs.map +1 -0
- package/resources/hris/hris.d.ts +20 -13
- package/resources/hris/hris.d.ts.map +1 -1
- package/resources/hris/hris.js +12 -8
- package/resources/hris/hris.js.map +1 -1
- package/resources/hris/hris.mjs +12 -8
- package/resources/hris/hris.mjs.map +1 -1
- package/resources/hris/index.d.ts +10 -3
- package/resources/hris/index.d.ts.map +1 -1
- package/resources/hris/index.js +23 -8
- package/resources/hris/index.js.map +1 -1
- package/resources/hris/index.mjs +3 -2
- package/resources/hris/index.mjs.map +1 -1
- package/resources/hris/{individuals/individuals.d.ts → individuals.d.ts} +5 -13
- package/resources/hris/individuals.d.ts.map +1 -0
- package/resources/hris/individuals.js +24 -0
- package/resources/hris/individuals.js.map +1 -0
- package/resources/hris/{individuals/individuals.mjs → individuals.mjs} +3 -12
- package/resources/hris/individuals.mjs.map +1 -0
- package/resources/hris/pay-statements.d.ts +4 -4
- package/resources/hris/pay-statements.d.ts.map +1 -1
- package/resources/hris/pay-statements.js +4 -4
- package/resources/hris/pay-statements.js.map +1 -1
- package/resources/hris/pay-statements.mjs +2 -2
- package/resources/hris/pay-statements.mjs.map +1 -1
- package/resources/index.d.ts +1 -0
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js +14 -1
- package/resources/index.js.map +1 -1
- package/resources/index.mjs +1 -0
- package/resources/index.mjs.map +1 -1
- package/resources/webhooks.d.ts +22 -0
- package/resources/webhooks.d.ts.map +1 -0
- package/resources/webhooks.js +118 -0
- package/resources/webhooks.js.map +1 -0
- package/resources/webhooks.mjs +114 -0
- package/resources/webhooks.mjs.map +1 -0
- package/src/_shims/ReadableStream.d.ts +5 -5
- package/src/_shims/agent.ts +1 -1
- package/src/_shims/{fetch.node.d.ts → fetch-node.d.ts} +8 -8
- package/src/_shims/fetch.d.ts +10 -10
- package/src/_shims/{fileFromPath.node.ts → fileFromPath-node.ts} +1 -1
- package/src/_shims/fileFromPath.ts +2 -2
- package/src/_shims/{formdata.node.d.ts → form-data-node.d.ts} +4 -4
- package/src/_shims/{formdata.d.ts → form-data.d.ts} +4 -4
- package/src/_shims/{getMultipartRequestOptions.node.ts → getMultipartRequestOptions-node.ts} +3 -3
- package/src/_shims/getMultipartRequestOptions.ts +3 -3
- package/src/core.ts +12 -11
- package/src/error.ts +3 -3
- package/src/index.ts +20 -10
- package/src/pagination.ts +3 -3
- package/src/resource.ts +1 -1
- package/src/resources/account.ts +3 -3
- package/src/resources/ats/applications.ts +6 -6
- package/src/resources/ats/ats.ts +7 -7
- package/src/resources/ats/candidates.ts +5 -5
- package/src/resources/ats/index.ts +6 -6
- package/src/resources/ats/jobs.ts +5 -5
- package/src/resources/ats/offers.ts +5 -5
- package/src/resources/ats/stages.ts +4 -4
- package/src/resources/hris/benefits/benefits.ts +7 -7
- package/src/resources/hris/benefits/index.ts +3 -3
- package/src/resources/hris/benefits/individuals.ts +14 -14
- package/src/resources/hris/company.ts +4 -4
- package/src/resources/hris/directory.ts +5 -5
- package/src/resources/hris/{individuals/employment-data.ts → employments.ts} +17 -17
- package/src/resources/hris/hris.ts +29 -21
- package/src/resources/hris/index.ts +16 -9
- package/src/resources/hris/{individuals/individuals.ts → individuals.ts} +13 -23
- package/src/resources/hris/pay-statements.ts +11 -11
- package/src/resources/hris/payments.ts +5 -5
- package/src/resources/index.ts +6 -5
- package/src/resources/providers.ts +4 -4
- package/src/resources/webhooks.ts +151 -0
- package/src/tsconfig.json +11 -0
- package/src/uploads.ts +6 -6
- package/src/version.ts +1 -1
- package/uploads.d.ts +1 -1
- package/uploads.d.ts.map +1 -1
- package/uploads.js +4 -4
- package/uploads.js.map +1 -1
- package/uploads.mjs +1 -1
- package/uploads.mjs.map +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
- package/_shims/ReadableStream.node.d.ts.map +0 -1
- package/_shims/ReadableStream.node.js.map +0 -1
- package/_shims/ReadableStream.node.mjs.map +0 -1
- package/_shims/agent.node.d.ts.map +0 -1
- package/_shims/getMultipartRequestOptions.node.d.ts.map +0 -1
- package/_shims/node-readable.node.js.map +0 -1
- package/_shims/node-readable.node.mjs.map +0 -1
- package/resources/hris/individuals/employment-data.d.ts.map +0 -1
- package/resources/hris/individuals/employment-data.js +0 -70
- package/resources/hris/individuals/employment-data.js.map +0 -1
- package/resources/hris/individuals/employment-data.mjs.map +0 -1
- package/resources/hris/individuals/index.d.ts +0 -14
- package/resources/hris/individuals/index.d.ts.map +0 -1
- package/resources/hris/individuals/index.js +0 -35
- package/resources/hris/individuals/index.js.map +0 -1
- package/resources/hris/individuals/index.mjs +0 -4
- package/resources/hris/individuals/index.mjs.map +0 -1
- package/resources/hris/individuals/individuals.d.ts.map +0 -1
- package/resources/hris/individuals/individuals.js +0 -73
- package/resources/hris/individuals/individuals.js.map +0 -1
- package/resources/hris/individuals/individuals.mjs.map +0 -1
- package/src/_shims/fetch.deno.ts +0 -23
- package/src/_shims/formdata.deno.ts +0 -16
- package/src/resources/hris/individuals/index.ts +0 -15
- /package/_shims/{fetch.node.d.ts → fetch-node.d.ts} +0 -0
- /package/_shims/{fetch.node.js → fetch-node.js} +0 -0
- /package/_shims/{fetch.node.mjs → fetch-node.mjs} +0 -0
- /package/_shims/{formdata.node.d.ts → form-data-node.d.ts} +0 -0
- /package/_shims/{formdata.node.js → form-data-node.js} +0 -0
- /package/_shims/{formdata.node.mjs → form-data-node.mjs} +0 -0
- /package/_shims/{formdata.d.ts → form-data.d.ts} +0 -0
- /package/_shims/{formdata.js → form-data.js} +0 -0
- /package/_shims/{formdata.mjs → form-data.mjs} +0 -0
- /package/src/_shims/{ReadableStream.node.ts → ReadableStream-node.ts} +0 -0
- /package/src/_shims/{agent.node.ts → agent-node.ts} +0 -0
- /package/src/_shims/{fetch.node.js → fetch-node.js} +0 -0
- /package/src/_shims/{fetch.node.mjs → fetch-node.mjs} +0 -0
- /package/src/_shims/{formdata.node.js → form-data-node.js} +0 -0
- /package/src/_shims/{formdata.node.mjs → form-data-node.mjs} +0 -0
- /package/src/_shims/{formdata.js → form-data.js} +0 -0
- /package/src/_shims/{formdata.mjs → form-data.mjs} +0 -0
- /package/src/_shims/{node-readable.node.ts → node-readable-node.ts} +0 -0
package/resources/hris/index.js
CHANGED
|
@@ -4,11 +4,13 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
exports.Payments =
|
|
5
5
|
exports.PaymentsSinglePage =
|
|
6
6
|
exports.PayStatements =
|
|
7
|
-
exports.
|
|
7
|
+
exports.PayStatementResponsesPage =
|
|
8
8
|
exports.Directory =
|
|
9
9
|
exports.Individuals =
|
|
10
|
-
exports.
|
|
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
|
|
51
|
-
Object.defineProperty(exports, '
|
|
65
|
+
var individuals_1 = require('./individuals.js');
|
|
66
|
+
Object.defineProperty(exports, 'IndividualResponsesPage', {
|
|
52
67
|
enumerable: true,
|
|
53
68
|
get: function () {
|
|
54
|
-
return
|
|
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
|
|
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, '
|
|
86
|
+
Object.defineProperty(exports, 'PayStatementResponsesPage', {
|
|
72
87
|
enumerable: true,
|
|
73
88
|
get: function () {
|
|
74
|
-
return pay_statements_1.
|
|
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,
|
|
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"}
|
package/resources/hris/index.mjs
CHANGED
|
@@ -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 {
|
|
6
|
+
export { IndividualResponsesPage, Individuals } from './individuals.mjs';
|
|
6
7
|
export { Directory } from './directory.mjs';
|
|
7
|
-
export {
|
|
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,
|
|
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<
|
|
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
|
|
21
|
-
type
|
|
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
|
|
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":"AAEA,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,OAAO,KAAK,IAAI,MAAM,0CAA0C,CAAC;AACjE,OAAO,KAAK,GAAG,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,qBAAa,WAAY,SAAQ,WAAW;IAC1C;;OAEG;IACH,YAAY,CACV,IAAI,CAAC,EAAE,4BAA4B,EACnC,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,GAC5B,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;IAChE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;CAc3G;AAED,qBAAa,uBAAwB,SAAQ,aAAa,CAAC,kBAAkB,CAAC;CAAG;AAEjF,KAAK,wBAAwB,GAAG,uBAAuB,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpB,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAExC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,oBAAoB,GAAG,IAAI,CAAC;IAEnE;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,aAAa,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAE5D;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B,SAAS,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IAEjC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,yBAAiB,UAAU,CAAC;IAC1B,UAAiB,KAAK;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;KAC5B;IAED,UAAiB,WAAW;QAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAErB,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;KACnC;CACF;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,CAAC,EAAE,4BAA4B,CAAC,OAAO,GAAG,IAAI,CAAC;IAEtD,QAAQ,CAAC,EAAE,KAAK,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;CACxD;AAED,yBAAiB,4BAA4B,CAAC;IAC5C,UAAiB,OAAO;QACtB,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACzB;IAED,UAAiB,OAAO;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;CACF;AAED,yBAAiB,WAAW,CAAC;IAC3B,MAAM,QAAQ,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAC1C,MAAM,QAAQ,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC;IAC1D,KAAY,uBAAuB,GAAG,wBAAwB,CAAC;IAC/D,MAAM,QAAQ,4BAA4B,GAAG,GAAG,CAAC,4BAA4B,CAAC;CAC/E"}
|
|
@@ -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',
|
|
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
|
|
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<
|
|
17
|
+
): Core.PagePromise<PayStatementResponsesPage, PayStatementResponse>;
|
|
18
18
|
}
|
|
19
|
-
export declare class
|
|
20
|
-
type
|
|
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
|
|
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":"AAEA,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,IAAI,MAAM,0CAA0C,CAAC;AACjE,OAAO,KAAK,QAAQ,MAAM,mDAAmD,CAAC;AAC9E,OAAO,KAAK,GAAG,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,qBAAa,aAAc,SAAQ,WAAW;IAC5C;;;;;OAKG;IACH,YAAY,CACV,IAAI,EAAE,8BAA8B,EACpC,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,GAC5B,IAAI,CAAC,WAAW,CAAC,
|
|
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.
|
|
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',
|
|
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
|
|
24
|
-
exports.
|
|
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,
|
|
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',
|
|
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
|
|
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,
|
|
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"}
|
package/resources/index.d.ts
CHANGED
|
@@ -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
|
package/resources/index.d.ts.map
CHANGED
|
@@ -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"}
|
package/resources/index.js
CHANGED
|
@@ -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.
|
|
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
|
package/resources/index.js.map
CHANGED
|
@@ -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"}
|
package/resources/index.mjs
CHANGED
package/resources/index.mjs.map
CHANGED
|
@@ -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":"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"}
|
|
@@ -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
|