From 4720df6f2050e3c9c2aeea2c73e1d22e175d523a Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 23:13:17 +0000 Subject: [PATCH 1/2] feat(api): add register benefits method --- .stats.yml | 6 +- MIGRATION.md | 1 + api.md | 4 + packages/mcp-server/src/code-tool-worker.ts | 2 + packages/mcp-server/src/local-docs-search.ts | 105 ++++++++++++++++++ packages/mcp-server/src/methods.ts | 12 ++ src/client.ts | 10 +- src/resources/account.ts | 54 ++++++++- src/resources/hris/benefits/benefits.ts | 56 ++++++++++ src/resources/hris/benefits/index.ts | 2 + src/resources/hris/hris.ts | 4 + src/resources/hris/index.ts | 2 + src/resources/index.ts | 8 +- tests/api-resources/account.test.ts | 19 ++++ .../hris/benefits/benefits.test.ts | 26 +++++ 15 files changed, 305 insertions(+), 6 deletions(-) diff --git a/.stats.yml b/.stats.yml index 347af6b1..909df852 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 46 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch/finch-82224679b895da7c7a5aae44d11b69fbe37d0316cd8e10aa0c89bc5a68f424de.yml +configured_endpoints: 48 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch/finch-5092370ef89959c46138a85f9d6d3c919682a5492a0f9f85ac4421de702f35a8.yml openapi_spec_hash: a4ca94b3405fc83934c949068943e16c -config_hash: fce67e71044aa4c3d0b8030052b3a20b +config_hash: a1c4b7d897cbf8ed42c5f474b3161d79 diff --git a/MIGRATION.md b/MIGRATION.md index c90ed0ae..20b6d21f 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -105,6 +105,7 @@ client.example.list(undefined, { headers: { ... } }); - `client.hris.benefits.update()` - `client.hris.benefits.list()` - `client.hris.benefits.listSupportedBenefits()` +- `client.hris.benefits.register()` - `client.hris.benefits.individuals.enrollMany()` - `client.hris.benefits.individuals.enrolledIDs()` - `client.hris.benefits.individuals.retrieveManyBenefits()` diff --git a/api.md b/api.md index 40b2f274..e4ee9563 100644 --- a/api.md +++ b/api.md @@ -149,6 +149,7 @@ Types: - BenefitsSupport - CompanyBenefit - CreateCompanyBenefitsResponse +- RegisterCompanyBenefitResponse - SupportPerBenefitType - SupportedBenefit - UpdateCompanyBenefitResponse @@ -161,6 +162,7 @@ Methods: - client.hris.benefits.update(benefitID, { ...params }) -> UpdateCompanyBenefitResponse - client.hris.benefits.list({ ...params }) -> CompanyBenefitsSinglePage - client.hris.benefits.listSupportedBenefits({ ...params }) -> SupportedBenefitsSinglePage +- client.hris.benefits.register({ ...params }) -> RegisterCompanyBenefitResponse ### Individuals @@ -193,12 +195,14 @@ Methods: Types: +- DisconnectEntityResponse - DisconnectResponse - Introspection Methods: - client.account.disconnect() -> DisconnectResponse +- client.account.disconnectEntity({ ...params }) -> DisconnectEntityResponse - client.account.introspect() -> Introspection # Webhooks diff --git a/packages/mcp-server/src/code-tool-worker.ts b/packages/mcp-server/src/code-tool-worker.ts index b8f7aa26..397a4e00 100644 --- a/packages/mcp-server/src/code-tool-worker.ts +++ b/packages/mcp-server/src/code-tool-worker.ts @@ -126,6 +126,7 @@ const fuse = new Fuse( 'client.hris.benefits.create', 'client.hris.benefits.list', 'client.hris.benefits.listSupportedBenefits', + 'client.hris.benefits.register', 'client.hris.benefits.retrieve', 'client.hris.benefits.update', 'client.hris.benefits.individuals.enrollMany', @@ -134,6 +135,7 @@ const fuse = new Fuse( 'client.hris.benefits.individuals.unenrollMany', 'client.providers.list', 'client.account.disconnect', + 'client.account.disconnectEntity', 'client.account.introspect', 'client.requestForwarding.forward', 'client.jobs.automated.create', diff --git a/packages/mcp-server/src/local-docs-search.ts b/packages/mcp-server/src/local-docs-search.ts index e50644a6..7f42bd49 100644 --- a/packages/mcp-server/src/local-docs-search.ts +++ b/packages/mcp-server/src/local-docs-search.ts @@ -1078,6 +1078,61 @@ const EMBEDDED_METHODS: MethodEntry[] = [ }, }, }, + { + name: 'register', + endpoint: '/employer/benefits/register', + httpMethod: 'post', + summary: 'Register Deduction', + description: + "Register existing benefits from the customer on the provider, on Finch's end. Please use the `/provider` endpoint to view available types for each provider.", + stainlessPath: '(resource) hris.benefits > (method) register', + qualified: 'client.hris.benefits.register', + params: [ + 'entity_ids?: string[];', + 'description?: string;', + "frequency?: 'every_paycheck' | 'monthly' | 'one_time';", + 'type?: string;', + ], + response: '{ benefit_id: string; job_id: string; }', + markdown: + "## register\n\n`client.hris.benefits.register(entity_ids?: string[], description?: string, frequency?: 'every_paycheck' | 'monthly' | 'one_time', type?: string): { benefit_id: string; job_id: string; }`\n\n**post** `/employer/benefits/register`\n\nRegister existing benefits from the customer on the provider, on Finch's end. Please use the `/provider` endpoint to view available types for each provider.\n\n### Parameters\n\n- `entity_ids?: string[]`\n The entity IDs to specify which entities' data to access.\n\n- `description?: string`\n\n- `frequency?: 'every_paycheck' | 'monthly' | 'one_time'`\n The frequency of the benefit deduction/contribution.\n\n- `type?: string`\n Type of benefit.\n\n### Returns\n\n- `{ benefit_id: string; job_id: string; }`\n\n - `benefit_id: string`\n - `job_id: string`\n\n### Example\n\n```typescript\nimport Finch from '@tryfinch/finch-api';\n\nconst client = new Finch();\n\nconst registerCompanyBenefitResponse = await client.hris.benefits.register();\n\nconsole.log(registerCompanyBenefitResponse);\n```", + perLanguage: { + typescript: { + method: 'client.hris.benefits.register', + example: + "import Finch from '@tryfinch/finch-api';\n\nconst client = new Finch({\n accessToken: 'My Access Token',\n});\n\nconst registerCompanyBenefitResponse = await client.hris.benefits.register();\n\nconsole.log(registerCompanyBenefitResponse.benefit_id);", + }, + python: { + method: 'hris.benefits.register', + example: + 'from finch import Finch\n\nclient = Finch(\n access_token="My Access Token",\n)\nregister_company_benefit_response = client.hris.benefits.register()\nprint(register_company_benefit_response.benefit_id)', + }, + java: { + method: 'hris().benefits().register', + example: + 'package com.tryfinch.api.example;\n\nimport com.tryfinch.api.client.FinchClient;\nimport com.tryfinch.api.client.okhttp.FinchOkHttpClient;\nimport com.tryfinch.api.models.HrisBenefitRegisterParams;\nimport com.tryfinch.api.models.RegisterCompanyBenefitResponse;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n FinchClient client = FinchOkHttpClient.builder()\n .fromEnv()\n .accessToken("My Access Token")\n .build();\n\n RegisterCompanyBenefitResponse registerCompanyBenefitResponse = client.hris().benefits().register();\n }\n}', + }, + kotlin: { + method: 'hris().benefits().register', + example: + 'package com.tryfinch.api.example\n\nimport com.tryfinch.api.client.FinchClient\nimport com.tryfinch.api.client.okhttp.FinchOkHttpClient\nimport com.tryfinch.api.models.HrisBenefitRegisterParams\nimport com.tryfinch.api.models.RegisterCompanyBenefitResponse\n\nfun main() {\n val client: FinchClient = FinchOkHttpClient.builder()\n .fromEnv()\n .accessToken("My Access Token")\n .build()\n\n val registerCompanyBenefitResponse: RegisterCompanyBenefitResponse = client.hris().benefits().register()\n}', + }, + go: { + method: 'client.HRIS.Benefits.Register', + example: + 'package main\n\nimport (\n\t"context"\n\t"fmt"\n\n\t"github.com/Finch-API/finch-api-go"\n\t"github.com/Finch-API/finch-api-go/option"\n)\n\nfunc main() {\n\tclient := finchgo.NewClient(\n\t\toption.WithAccessToken("My Access Token"),\n\t)\n\tregisterCompanyBenefitResponse, err := client.HRIS.Benefits.Register(context.TODO(), finchgo.HRISBenefitRegisterParams{})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf("%+v\\n", registerCompanyBenefitResponse.BenefitID)\n}\n', + }, + ruby: { + method: 'hris.benefits.register', + example: + 'require "finch_api"\n\nfinch = FinchAPI::Client.new(access_token: "My Access Token")\n\nregister_company_benefit_response = finch.hris.benefits.register\n\nputs(register_company_benefit_response)', + }, + http: { + example: + 'curl https://api.tryfinch.com/employer/benefits/register \\\n -X POST \\\n -H \'Finch-API-Version: 2020-09-17\' \\\n -H "Authorization: Bearer $ACCESS_TOKEN"', + }, + }, + }, { name: 'enrolled_ids', endpoint: '/employer/benefits/{benefit_id}/enrolled', @@ -1420,6 +1475,56 @@ const EMBEDDED_METHODS: MethodEntry[] = [ }, }, }, + { + name: 'disconnect_entity', + endpoint: '/disconnect-entity', + httpMethod: 'post', + summary: 'Disconnect Entity', + description: + 'Disconnect entity(s) from a connection without affecting other entities associated with the same connection.', + stainlessPath: '(resource) account > (method) disconnect_entity', + qualified: 'client.account.disconnectEntity', + params: ['entity_ids: string[];'], + response: '{ status: string; }', + markdown: + "## disconnect_entity\n\n`client.account.disconnectEntity(entity_ids: string[]): { status: string; }`\n\n**post** `/disconnect-entity`\n\nDisconnect entity(s) from a connection without affecting other entities associated with the same connection.\n\n### Parameters\n\n- `entity_ids: string[]`\n Array of entity UUIDs to disconnect. At least one entity ID must be provided.\n\n### Returns\n\n- `{ status: string; }`\n\n - `status: string`\n\n### Example\n\n```typescript\nimport Finch from '@tryfinch/finch-api';\n\nconst client = new Finch();\n\nconst disconnectEntityResponse = await client.account.disconnectEntity({ entity_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a', '5e6f7a8b-9c10-4d11-a12b-c13d14e15f16'] });\n\nconsole.log(disconnectEntityResponse);\n```", + perLanguage: { + typescript: { + method: 'client.account.disconnectEntity', + example: + "import Finch from '@tryfinch/finch-api';\n\nconst client = new Finch({\n accessToken: 'My Access Token',\n});\n\nconst disconnectEntityResponse = await client.account.disconnectEntity({\n entity_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a', '5e6f7a8b-9c10-4d11-a12b-c13d14e15f16'],\n});\n\nconsole.log(disconnectEntityResponse.status);", + }, + python: { + method: 'account.disconnect_entity', + example: + 'from finch import Finch\n\nclient = Finch(\n access_token="My Access Token",\n)\ndisconnect_entity_response = client.account.disconnect_entity(\n entity_ids=["3c90c3cc-0d44-4b50-8888-8dd25736052a", "5e6f7a8b-9c10-4d11-a12b-c13d14e15f16"],\n)\nprint(disconnect_entity_response.status)', + }, + java: { + method: 'account().disconnectEntity', + example: + 'package com.tryfinch.api.example;\n\nimport com.tryfinch.api.client.FinchClient;\nimport com.tryfinch.api.client.okhttp.FinchOkHttpClient;\nimport com.tryfinch.api.models.AccountDisconnectEntityParams;\nimport com.tryfinch.api.models.DisconnectEntityResponse;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n FinchClient client = FinchOkHttpClient.builder()\n .fromEnv()\n .accessToken("My Access Token")\n .build();\n\n AccountDisconnectEntityParams params = AccountDisconnectEntityParams.builder()\n .addEntityId("3c90c3cc-0d44-4b50-8888-8dd25736052a")\n .addEntityId("5e6f7a8b-9c10-4d11-a12b-c13d14e15f16")\n .build();\n DisconnectEntityResponse disconnectEntityResponse = client.account().disconnectEntity(params);\n }\n}', + }, + kotlin: { + method: 'account().disconnectEntity', + example: + 'package com.tryfinch.api.example\n\nimport com.tryfinch.api.client.FinchClient\nimport com.tryfinch.api.client.okhttp.FinchOkHttpClient\nimport com.tryfinch.api.models.AccountDisconnectEntityParams\nimport com.tryfinch.api.models.DisconnectEntityResponse\n\nfun main() {\n val client: FinchClient = FinchOkHttpClient.builder()\n .fromEnv()\n .accessToken("My Access Token")\n .build()\n\n val params: AccountDisconnectEntityParams = AccountDisconnectEntityParams.builder()\n .addEntityId("3c90c3cc-0d44-4b50-8888-8dd25736052a")\n .addEntityId("5e6f7a8b-9c10-4d11-a12b-c13d14e15f16")\n .build()\n val disconnectEntityResponse: DisconnectEntityResponse = client.account().disconnectEntity(params)\n}', + }, + go: { + method: 'client.Account.DisconnectEntity', + example: + 'package main\n\nimport (\n\t"context"\n\t"fmt"\n\n\t"github.com/Finch-API/finch-api-go"\n\t"github.com/Finch-API/finch-api-go/option"\n)\n\nfunc main() {\n\tclient := finchgo.NewClient(\n\t\toption.WithAccessToken("My Access Token"),\n\t)\n\tdisconnectEntityResponse, err := client.Account.DisconnectEntity(context.TODO(), finchgo.AccountDisconnectEntityParams{\n\t\tEntityIDs: finchgo.F([]string{"3c90c3cc-0d44-4b50-8888-8dd25736052a", "5e6f7a8b-9c10-4d11-a12b-c13d14e15f16"}),\n\t})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf("%+v\\n", disconnectEntityResponse.Status)\n}\n', + }, + ruby: { + method: 'account.disconnect_entity', + example: + 'require "finch_api"\n\nfinch = FinchAPI::Client.new(access_token: "My Access Token")\n\ndisconnect_entity_response = finch.account.disconnect_entity(\n entity_ids: ["3c90c3cc-0d44-4b50-8888-8dd25736052a", "5e6f7a8b-9c10-4d11-a12b-c13d14e15f16"]\n)\n\nputs(disconnect_entity_response)', + }, + http: { + example: + 'curl https://api.tryfinch.com/disconnect-entity \\\n -H \'Content-Type: application/json\' \\\n -H \'Finch-API-Version: 2020-09-17\' \\\n -H "Authorization: Bearer $ACCESS_TOKEN" \\\n -d \'{\n "entity_ids": [\n "3c90c3cc-0d44-4b50-8888-8dd25736052a",\n "5e6f7a8b-9c10-4d11-a12b-c13d14e15f16"\n ]\n }\'', + }, + }, + }, { name: 'forward', endpoint: '/forward', diff --git a/packages/mcp-server/src/methods.ts b/packages/mcp-server/src/methods.ts index 82258b2f..8243dcf6 100644 --- a/packages/mcp-server/src/methods.ts +++ b/packages/mcp-server/src/methods.ts @@ -128,6 +128,12 @@ export const sdkMethods: SdkMethod[] = [ httpMethod: 'get', httpPath: '/employer/benefits/meta', }, + { + clientCallName: 'client.hris.benefits.register', + fullyQualifiedName: 'hris.benefits.register', + httpMethod: 'post', + httpPath: '/employer/benefits/register', + }, { clientCallName: 'client.hris.benefits.individuals.enrollMany', fullyQualifiedName: 'hris.benefits.individuals.enrollMany', @@ -164,6 +170,12 @@ export const sdkMethods: SdkMethod[] = [ httpMethod: 'post', httpPath: '/disconnect', }, + { + clientCallName: 'client.account.disconnectEntity', + fullyQualifiedName: 'account.disconnectEntity', + httpMethod: 'post', + httpPath: '/disconnect-entity', + }, { clientCallName: 'client.account.introspect', fullyQualifiedName: 'account.introspect', diff --git a/src/client.ts b/src/client.ts index ad1ad15e..9f962e54 100644 --- a/src/client.ts +++ b/src/client.ts @@ -28,7 +28,13 @@ import * as Uploads from './core/uploads'; import * as API from './resources/index'; import { APIPromise } from './core/api-promise'; import { AccessTokenCreateParams, AccessTokens, CreateAccessTokenResponse } from './resources/access-tokens'; -import { Account, DisconnectResponse, Introspection } from './resources/account'; +import { + Account, + AccountDisconnectEntityParams, + DisconnectEntityResponse, + DisconnectResponse, + Introspection, +} from './resources/account'; import { Provider, ProviderListResponse, @@ -967,8 +973,10 @@ export declare namespace Finch { export { Account as Account, + type DisconnectEntityResponse as DisconnectEntityResponse, type DisconnectResponse as DisconnectResponse, type Introspection as Introspection, + type AccountDisconnectEntityParams as AccountDisconnectEntityParams, }; export { diff --git a/src/resources/account.ts b/src/resources/account.ts index d8a6a0dc..208137fb 100644 --- a/src/resources/account.ts +++ b/src/resources/account.ts @@ -8,19 +8,59 @@ import { RequestOptions } from '../internal/request-options'; export class Account extends APIResource { /** * Disconnect one or more `access_token`s from your application. + * + * @example + * ```ts + * const disconnectResponse = + * await client.account.disconnect(); + * ``` */ disconnect(options?: RequestOptions): APIPromise { return this._client.post('/disconnect', { ...options, __security: { bearerAuth: true } }); } + /** + * Disconnect entity(s) from a connection without affecting other entities + * associated with the same connection. + * + * @example + * ```ts + * const disconnectEntityResponse = + * await client.account.disconnectEntity({ + * entity_ids: [ + * '3c90c3cc-0d44-4b50-8888-8dd25736052a', + * '5e6f7a8b-9c10-4d11-a12b-c13d14e15f16', + * ], + * }); + * ``` + */ + disconnectEntity( + body: AccountDisconnectEntityParams, + options?: RequestOptions, + ): APIPromise { + return this._client.post('/disconnect-entity', { body, ...options, __security: { bearerAuth: true } }); + } + /** * Read account information associated with an `access_token` + * + * @example + * ```ts + * const introspection = await client.account.introspect(); + * ``` */ introspect(options?: RequestOptions): APIPromise { return this._client.get('/introspect', { ...options, __security: { bearerAuth: true } }); } } +export interface DisconnectEntityResponse { + /** + * If the request is successful, Finch will return "success" (HTTP 200 status). + */ + status: string; +} + export interface DisconnectResponse { /** * If the request is successful, Finch will return "success" (HTTP 200 status). @@ -195,6 +235,18 @@ export namespace Introspection { } } +export interface AccountDisconnectEntityParams { + /** + * Array of entity UUIDs to disconnect. At least one entity ID must be provided. + */ + entity_ids: Array; +} + export declare namespace Account { - export { type DisconnectResponse as DisconnectResponse, type Introspection as Introspection }; + export { + type DisconnectEntityResponse as DisconnectEntityResponse, + type DisconnectResponse as DisconnectResponse, + type Introspection as Introspection, + type AccountDisconnectEntityParams as AccountDisconnectEntityParams, + }; } diff --git a/src/resources/hris/benefits/benefits.ts b/src/resources/hris/benefits/benefits.ts index a07171e8..7009b3cb 100644 --- a/src/resources/hris/benefits/benefits.ts +++ b/src/resources/hris/benefits/benefits.ts @@ -134,6 +134,29 @@ export class Benefits extends APIResource { __security: { bearerAuth: true }, }); } + + /** + * Register existing benefits from the customer on the provider, on Finch's end. + * Please use the `/provider` endpoint to view available types for each provider. + * + * @example + * ```ts + * const registerCompanyBenefitResponse = + * await client.hris.benefits.register(); + * ``` + */ + register( + params: BenefitRegisterParams | null | undefined = {}, + options?: RequestOptions, + ): APIPromise { + const { entity_ids, ...body } = params ?? {}; + return this._client.post('/employer/benefits/register', { + query: { entity_ids }, + body, + ...options, + __security: { bearerAuth: true }, + }); + } } export type CompanyBenefitsSinglePage = SinglePage; @@ -312,6 +335,15 @@ export interface CreateCompanyBenefitsResponse { job_id: string; } +export interface RegisterCompanyBenefitResponse { + /** + * The id of the benefit. + */ + benefit_id: string; + + job_id: string; +} + export interface SupportPerBenefitType { company_benefits?: Shared.OperationSupportMatrix; @@ -451,6 +483,28 @@ export interface BenefitListSupportedBenefitsParams { entity_ids?: Array; } +export interface BenefitRegisterParams { + /** + * Query param: The entity IDs to specify which entities' data to access. + */ + entity_ids?: Array; + + /** + * Body param + */ + description?: string; + + /** + * Body param: The frequency of the benefit deduction/contribution. + */ + frequency?: BenefitFrequency | null; + + /** + * Body param: Type of benefit. + */ + type?: BenefitType | null; +} + Benefits.Individuals = Individuals; export declare namespace Benefits { @@ -462,6 +516,7 @@ export declare namespace Benefits { type BenefitsSupport as BenefitsSupport, type CompanyBenefit as CompanyBenefit, type CreateCompanyBenefitsResponse as CreateCompanyBenefitsResponse, + type RegisterCompanyBenefitResponse as RegisterCompanyBenefitResponse, type SupportPerBenefitType as SupportPerBenefitType, type SupportedBenefit as SupportedBenefit, type UpdateCompanyBenefitResponse as UpdateCompanyBenefitResponse, @@ -473,6 +528,7 @@ export declare namespace Benefits { type BenefitUpdateParams as BenefitUpdateParams, type BenefitListParams as BenefitListParams, type BenefitListSupportedBenefitsParams as BenefitListSupportedBenefitsParams, + type BenefitRegisterParams as BenefitRegisterParams, }; export { diff --git a/src/resources/hris/benefits/index.ts b/src/resources/hris/benefits/index.ts index b754e6cb..2f991dce 100644 --- a/src/resources/hris/benefits/index.ts +++ b/src/resources/hris/benefits/index.ts @@ -9,6 +9,7 @@ export { type BenefitsSupport, type CompanyBenefit, type CreateCompanyBenefitsResponse, + type RegisterCompanyBenefitResponse, type SupportPerBenefitType, type SupportedBenefit, type UpdateCompanyBenefitResponse, @@ -18,6 +19,7 @@ export { type BenefitUpdateParams, type BenefitListParams, type BenefitListSupportedBenefitsParams, + type BenefitRegisterParams, type CompanyBenefitsSinglePage, type SupportedBenefitsSinglePage, } from './benefits'; diff --git a/src/resources/hris/hris.ts b/src/resources/hris/hris.ts index 4ecf085c..31a3bf43 100644 --- a/src/resources/hris/hris.ts +++ b/src/resources/hris/hris.ts @@ -55,6 +55,7 @@ import { BenefitFrequency, BenefitListParams, BenefitListSupportedBenefitsParams, + BenefitRegisterParams, BenefitRetrieveParams, BenefitType, BenefitUpdateParams, @@ -64,6 +65,7 @@ import { CompanyBenefit, CompanyBenefitsSinglePage, CreateCompanyBenefitsResponse, + RegisterCompanyBenefitResponse, SupportPerBenefitType, SupportedBenefit, SupportedBenefitsSinglePage, @@ -244,6 +246,7 @@ export declare namespace HRIS { type BenefitsSupport as BenefitsSupport, type CompanyBenefit as CompanyBenefit, type CreateCompanyBenefitsResponse as CreateCompanyBenefitsResponse, + type RegisterCompanyBenefitResponse as RegisterCompanyBenefitResponse, type SupportPerBenefitType as SupportPerBenefitType, type SupportedBenefit as SupportedBenefit, type UpdateCompanyBenefitResponse as UpdateCompanyBenefitResponse, @@ -255,5 +258,6 @@ export declare namespace HRIS { type BenefitUpdateParams as BenefitUpdateParams, type BenefitListParams as BenefitListParams, type BenefitListSupportedBenefitsParams as BenefitListSupportedBenefitsParams, + type BenefitRegisterParams as BenefitRegisterParams, }; } diff --git a/src/resources/hris/index.ts b/src/resources/hris/index.ts index 391e5a6b..a75171e8 100644 --- a/src/resources/hris/index.ts +++ b/src/resources/hris/index.ts @@ -9,6 +9,7 @@ export { type BenefitsSupport, type CompanyBenefit, type CreateCompanyBenefitsResponse, + type RegisterCompanyBenefitResponse, type SupportPerBenefitType, type SupportedBenefit, type UpdateCompanyBenefitResponse, @@ -18,6 +19,7 @@ export { type BenefitUpdateParams, type BenefitListParams, type BenefitListSupportedBenefitsParams, + type BenefitRegisterParams, type CompanyBenefitsSinglePage, type SupportedBenefitsSinglePage, } from './benefits/index'; diff --git a/src/resources/index.ts b/src/resources/index.ts index ff93bb94..2a89a090 100644 --- a/src/resources/index.ts +++ b/src/resources/index.ts @@ -2,7 +2,13 @@ export * from './shared'; export { AccessTokens, type CreateAccessTokenResponse, type AccessTokenCreateParams } from './access-tokens'; -export { Account, type DisconnectResponse, type Introspection } from './account'; +export { + Account, + type DisconnectEntityResponse, + type DisconnectResponse, + type Introspection, + type AccountDisconnectEntityParams, +} from './account'; export { Connect } from './connect/connect'; export { HRIS, type Income, type Location, type Money } from './hris/hris'; export { Jobs } from './jobs/jobs'; diff --git a/tests/api-resources/account.test.ts b/tests/api-resources/account.test.ts index 2d12c264..2a9713b0 100644 --- a/tests/api-resources/account.test.ts +++ b/tests/api-resources/account.test.ts @@ -21,6 +21,25 @@ describe('resource account', () => { expect(dataAndResponse.response).toBe(rawResponse); }); + test('disconnectEntity: only required params', async () => { + const responsePromise = client.account.disconnectEntity({ + entity_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a', '5e6f7a8b-9c10-4d11-a12b-c13d14e15f16'], + }); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + test('disconnectEntity: required and optional params', async () => { + const response = await client.account.disconnectEntity({ + entity_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a', '5e6f7a8b-9c10-4d11-a12b-c13d14e15f16'], + }); + }); + test('introspect', async () => { const responsePromise = client.account.introspect(); const rawResponse = await responsePromise.asResponse(); diff --git a/tests/api-resources/hris/benefits/benefits.test.ts b/tests/api-resources/hris/benefits/benefits.test.ts index d1351187..1deb9863 100644 --- a/tests/api-resources/hris/benefits/benefits.test.ts +++ b/tests/api-resources/hris/benefits/benefits.test.ts @@ -122,4 +122,30 @@ describe('resource benefits', () => { ), ).rejects.toThrow(Finch.NotFoundError); }); + + test('register', async () => { + const responsePromise = client.hris.benefits.register(); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + test('register: request options and params are passed correctly', async () => { + // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error + await expect( + client.hris.benefits.register( + { + entity_ids: ['550e8400-e29b-41d4-a716-446655440000'], + description: 'description', + frequency: 'every_paycheck', + type: '457', + }, + { path: '/_stainless_unknown_path' }, + ), + ).rejects.toThrow(Finch.NotFoundError); + }); }); From b1eb356af5c38bc44a5deffd7227605f74eebb52 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 23:13:44 +0000 Subject: [PATCH 2/2] release: 9.10.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ package.json | 2 +- packages/mcp-server/manifest.json | 2 +- packages/mcp-server/package.json | 2 +- packages/mcp-server/src/server.ts | 2 +- src/version.ts | 2 +- 7 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 7d2f3497..f943cbc2 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "9.9.0" + ".": "9.10.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 72fe78b3..40c26fc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 9.10.0 (2026-05-12) + +Full Changelog: [v9.9.0...v9.10.0](https://github.com/Finch-API/finch-api-node/compare/v9.9.0...v9.10.0) + +### Features + +* **api:** add register benefits method ([4720df6](https://github.com/Finch-API/finch-api-node/commit/4720df6f2050e3c9c2aeea2c73e1d22e175d523a)) + ## 9.9.0 (2026-05-12) Full Changelog: [v9.8.0...v9.9.0](https://github.com/Finch-API/finch-api-node/compare/v9.8.0...v9.9.0) diff --git a/package.json b/package.json index aba18379..0b83f94a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@tryfinch/finch-api", - "version": "9.9.0", + "version": "9.10.0", "description": "The official TypeScript library for the Finch API", "author": "Finch ", "types": "dist/index.d.ts", diff --git a/packages/mcp-server/manifest.json b/packages/mcp-server/manifest.json index b2fc22c9..407440f7 100644 --- a/packages/mcp-server/manifest.json +++ b/packages/mcp-server/manifest.json @@ -1,7 +1,7 @@ { "dxt_version": "0.2", "name": "@tryfinch/finch-api-mcp", - "version": "9.9.0", + "version": "9.10.0", "description": "The official MCP Server for the Finch API", "author": { "name": "Finch", diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index 16216dfc..431450fe 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -1,6 +1,6 @@ { "name": "@tryfinch/finch-api-mcp", - "version": "9.9.0", + "version": "9.10.0", "description": "The official MCP Server for the Finch API", "author": "Finch ", "types": "dist/index.d.ts", diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index 385e5a73..fd342bf1 100644 --- a/packages/mcp-server/src/server.ts +++ b/packages/mcp-server/src/server.ts @@ -29,7 +29,7 @@ export const newMcpServer = async ({ new McpServer( { name: 'tryfinch_finch_api_api', - version: '9.9.0', + version: '9.10.0', }, { instructions: await getInstructions({ stainlessApiKey, customInstructionsPath }), diff --git a/src/version.ts b/src/version.ts index 5baeb8b9..1a95e1ff 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '9.9.0'; // x-release-please-version +export const VERSION = '9.10.0'; // x-release-please-version