Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
permissions:
contents: read
id-token: write
runs-on: ${{ github.repository == 'stainless-sdks/finch-go' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: |-
github.repository == 'stainless-sdks/finch-go' &&
(github.event_name == 'push' || github.event.pull_request.head.repo.fork) && (github.event_name != 'push' || github.event.head_commit.message != 'codegen metadata')
Expand Down Expand Up @@ -49,7 +49,7 @@ jobs:
lint:
timeout-minutes: 10
name: lint
runs-on: ${{ github.repository == 'stainless-sdks/finch-go' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork

steps:
Expand All @@ -65,7 +65,7 @@ jobs:
test:
timeout-minutes: 10
name: test
runs-on: ${{ github.repository == 'stainless-sdks/finch-go' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Expand Down
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "2.3.0"
".": "2.4.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 48
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch/finch-166cc05754d8591beda094f4ee6f438f55d5f65d490ab364ea130c5100134375.yml
openapi_spec_hash: 4582a35bbe9fb5404d1e4f804c877fa8
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch/finch-bdcc610cd7d5dcb5d3d7598a33957dd673cb81f14ca5d8dc9d41fced4230f114.yml
openapi_spec_hash: 16dce00b8187a592fab5c88efc7bf7fc
config_hash: 9ae56f40cec7304896138bfad5caf748
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Changelog

## 2.4.0 (2026-07-17)

Full Changelog: [v2.3.0...v2.4.0](https://github.com/Finch-API/finch-api-go/compare/v2.3.0...v2.4.0)

### Features

* **api:** api update ([0ef5acc](https://github.com/Finch-API/finch-api-go/commit/0ef5accc3a86aba3dc20c1e8c6c3391a92f4ef05))
* **stlc:** configurable CI runner and private-production-repo support in workflow templates ([a5ed506](https://github.com/Finch-API/finch-api-go/commit/a5ed506114c319ad01a90cc3ea3702c57e957e67))

## 2.3.0 (2026-07-15)

Full Changelog: [v2.2.0...v2.3.0](https://github.com/Finch-API/finch-api-go/compare/v2.2.0...v2.3.0)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Or to pin the version:
<!-- x-release-please-start-version -->

```sh
go get -u 'github.com/Finch-API/finch-api-go@v2.3.0'
go get -u 'github.com/Finch-API/finch-api-go@v2.4.0'
```

<!-- x-release-please-end -->
Expand Down
130 changes: 80 additions & 50 deletions hrisemployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,9 @@ type EmploymentData struct {
// The FLSA status of the individual. Available options: `exempt`, `non_exempt`,
// `unknown`.
FlsaStatus EmploymentDataFlsaStatus `json:"flsa_status" api:"nullable"`
// IRS flag indicating whether the employee is classified as a Highly Compensated
// Employee for nondiscrimination testing purposes (ADP/ACP tests). US-only.
HighlyCompensatedEmployee bool `json:"highly_compensated_employee" api:"nullable"`
// The employee's income as reported by the provider. This may not always be
// annualized income, but may be in units of bi-weekly, semi-monthly, daily, etc,
// depending on what information the provider returns.
Expand All @@ -94,6 +97,9 @@ type EmploymentData struct {
IncomeHistory interface{} `json:"income_history"`
// `true` if the individual an an active employee or contractor at the company.
IsActive bool `json:"is_active" api:"nullable"`
// IRS flag indicating whether the employee is classified as a Key Employee for
// top-heavy testing purposes. US-only.
KeyEmployee bool `json:"key_employee" api:"nullable"`
// The legal last name of the individual.
LastName string `json:"last_name" api:"nullable"`
LatestRehireDate string `json:"latest_rehire_date" api:"nullable"`
Expand All @@ -110,6 +116,11 @@ type EmploymentData struct {
StartDate string `json:"start_date" api:"nullable"`
// The current title of the individual.
Title string `json:"title" api:"nullable"`
// The code identifying the union the employee is a member of, as configured in the
// payroll system.
UnionCode string `json:"union_code" api:"nullable"`
// The local chapter or local number within the employee's union.
UnionLocal string `json:"union_local" api:"nullable"`
// This field is deprecated in favour of `source_id`
//
// Deprecated: deprecated
Expand All @@ -120,33 +131,37 @@ type EmploymentData struct {

// employmentDataJSON contains the JSON metadata for the struct [EmploymentData]
type employmentDataJSON struct {
ID apijson.Field
ClassCode apijson.Field
Code apijson.Field
CustomFields apijson.Field
Department apijson.Field
Employment apijson.Field
EmploymentStatus apijson.Field
EndDate apijson.Field
FinchCode apijson.Field
FirstName apijson.Field
FlsaStatus apijson.Field
Income apijson.Field
IncomeHistory apijson.Field
IsActive apijson.Field
LastName apijson.Field
LatestRehireDate apijson.Field
Location apijson.Field
Manager apijson.Field
Message apijson.Field
MiddleName apijson.Field
Name apijson.Field
SourceID apijson.Field
StartDate apijson.Field
Title apijson.Field
WorkID apijson.Field
raw string
ExtraFields map[string]apijson.Field
ID apijson.Field
ClassCode apijson.Field
Code apijson.Field
CustomFields apijson.Field
Department apijson.Field
Employment apijson.Field
EmploymentStatus apijson.Field
EndDate apijson.Field
FinchCode apijson.Field
FirstName apijson.Field
FlsaStatus apijson.Field
HighlyCompensatedEmployee apijson.Field
Income apijson.Field
IncomeHistory apijson.Field
IsActive apijson.Field
KeyEmployee apijson.Field
LastName apijson.Field
LatestRehireDate apijson.Field
Location apijson.Field
Manager apijson.Field
Message apijson.Field
MiddleName apijson.Field
Name apijson.Field
SourceID apijson.Field
StartDate apijson.Field
Title apijson.Field
UnionCode apijson.Field
UnionLocal apijson.Field
WorkID apijson.Field
raw string
ExtraFields map[string]apijson.Field
}

func (r employmentDataJSON) RawJSON() string {
Expand Down Expand Up @@ -209,8 +224,14 @@ type EmploymentDataEmploymentDataResponseBody struct {
// The FLSA status of the individual. Available options: `exempt`, `non_exempt`,
// `unknown`.
FlsaStatus EmploymentDataEmploymentDataResponseBodyFlsaStatus `json:"flsa_status" api:"required,nullable"`
// IRS flag indicating whether the employee is classified as a Highly Compensated
// Employee for nondiscrimination testing purposes (ADP/ACP tests). US-only.
HighlyCompensatedEmployee bool `json:"highly_compensated_employee" api:"required,nullable"`
// `true` if the individual an an active employee or contractor at the company.
IsActive bool `json:"is_active" api:"required,nullable"`
// IRS flag indicating whether the employee is classified as a Key Employee for
// top-heavy testing purposes. US-only.
KeyEmployee bool `json:"key_employee" api:"required,nullable"`
// The legal last name of the individual.
LastName string `json:"last_name" api:"required,nullable"`
LatestRehireDate string `json:"latest_rehire_date" api:"required,nullable"`
Expand All @@ -222,6 +243,11 @@ type EmploymentDataEmploymentDataResponseBody struct {
StartDate string `json:"start_date" api:"required,nullable"`
// The current title of the individual.
Title string `json:"title" api:"required,nullable"`
// The code identifying the union the employee is a member of, as configured in the
// payroll system.
UnionCode string `json:"union_code" api:"required,nullable"`
// The local chapter or local number within the employee's union.
UnionLocal string `json:"union_local" api:"required,nullable"`
// Custom fields for the individual. These are fields which are defined by the
// employer in the system. Custom fields are not currently supported for assisted
// connections.
Expand All @@ -244,29 +270,33 @@ type EmploymentDataEmploymentDataResponseBody struct {
// employmentDataEmploymentDataResponseBodyJSON contains the JSON metadata for the
// struct [EmploymentDataEmploymentDataResponseBody]
type employmentDataEmploymentDataResponseBodyJSON struct {
ID apijson.Field
ClassCode apijson.Field
Department apijson.Field
Employment apijson.Field
EmploymentStatus apijson.Field
EndDate apijson.Field
FirstName apijson.Field
FlsaStatus apijson.Field
IsActive apijson.Field
LastName apijson.Field
LatestRehireDate apijson.Field
Location apijson.Field
Manager apijson.Field
MiddleName apijson.Field
StartDate apijson.Field
Title apijson.Field
CustomFields apijson.Field
Income apijson.Field
IncomeHistory apijson.Field
SourceID apijson.Field
WorkID apijson.Field
raw string
ExtraFields map[string]apijson.Field
ID apijson.Field
ClassCode apijson.Field
Department apijson.Field
Employment apijson.Field
EmploymentStatus apijson.Field
EndDate apijson.Field
FirstName apijson.Field
FlsaStatus apijson.Field
HighlyCompensatedEmployee apijson.Field
IsActive apijson.Field
KeyEmployee apijson.Field
LastName apijson.Field
LatestRehireDate apijson.Field
Location apijson.Field
Manager apijson.Field
MiddleName apijson.Field
StartDate apijson.Field
Title apijson.Field
UnionCode apijson.Field
UnionLocal apijson.Field
CustomFields apijson.Field
Income apijson.Field
IncomeHistory apijson.Field
SourceID apijson.Field
WorkID apijson.Field
raw string
ExtraFields map[string]apijson.Field
}

func (r *EmploymentDataEmploymentDataResponseBody) UnmarshalJSON(data []byte) (err error) {
Expand Down
52 changes: 51 additions & 1 deletion hrisindividual.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,10 @@ type Individual struct {
Gender IndividualGender `json:"gender" api:"nullable"`
// The legal last name of the individual.
LastName string `json:"last_name" api:"nullable"`
Message string `json:"message"`
// The employee's marital status, used for beneficiary designation and spousal
// consent workflows.
MaritalStatus IndividualMaritalStatus `json:"marital_status" api:"nullable"`
Message string `json:"message"`
// The legal middle name of the individual.
MiddleName string `json:"middle_name" api:"nullable"`
Name string `json:"name"`
Expand Down Expand Up @@ -113,6 +116,7 @@ type individualJSON struct {
FirstName apijson.Field
Gender apijson.Field
LastName apijson.Field
MaritalStatus apijson.Field
Message apijson.Field
MiddleName apijson.Field
Name apijson.Field
Expand Down Expand Up @@ -178,6 +182,9 @@ type IndividualIndividualResponseBody struct {
Gender IndividualIndividualResponseBodyGender `json:"gender" api:"required,nullable"`
// The legal last name of the individual.
LastName string `json:"last_name" api:"required,nullable"`
// The employee's marital status, used for beneficiary designation and spousal
// consent workflows.
MaritalStatus IndividualIndividualResponseBodyMaritalStatus `json:"marital_status" api:"required,nullable"`
// The legal middle name of the individual.
MiddleName string `json:"middle_name" api:"required,nullable"`
PhoneNumbers []IndividualIndividualResponseBodyPhoneNumber `json:"phone_numbers" api:"required,nullable"`
Expand Down Expand Up @@ -206,6 +213,7 @@ type individualIndividualResponseBodyJSON struct {
FirstName apijson.Field
Gender apijson.Field
LastName apijson.Field
MaritalStatus apijson.Field
MiddleName apijson.Field
PhoneNumbers apijson.Field
PreferredName apijson.Field
Expand Down Expand Up @@ -267,6 +275,27 @@ func (r IndividualIndividualResponseBodyGender) IsKnown() bool {
return false
}

// The employee's marital status, used for beneficiary designation and spousal
// consent workflows.
type IndividualIndividualResponseBodyMaritalStatus string

const (
IndividualIndividualResponseBodyMaritalStatusSingle IndividualIndividualResponseBodyMaritalStatus = "single"
IndividualIndividualResponseBodyMaritalStatusMarried IndividualIndividualResponseBodyMaritalStatus = "married"
IndividualIndividualResponseBodyMaritalStatusDivorced IndividualIndividualResponseBodyMaritalStatus = "divorced"
IndividualIndividualResponseBodyMaritalStatusWidowed IndividualIndividualResponseBodyMaritalStatus = "widowed"
IndividualIndividualResponseBodyMaritalStatusDomesticPartner IndividualIndividualResponseBodyMaritalStatus = "domestic_partner"
IndividualIndividualResponseBodyMaritalStatusUnknown IndividualIndividualResponseBodyMaritalStatus = "unknown"
)

func (r IndividualIndividualResponseBodyMaritalStatus) IsKnown() bool {
switch r {
case IndividualIndividualResponseBodyMaritalStatusSingle, IndividualIndividualResponseBodyMaritalStatusMarried, IndividualIndividualResponseBodyMaritalStatusDivorced, IndividualIndividualResponseBodyMaritalStatusWidowed, IndividualIndividualResponseBodyMaritalStatusDomesticPartner, IndividualIndividualResponseBodyMaritalStatusUnknown:
return true
}
return false
}

type IndividualIndividualResponseBodyPhoneNumber struct {
Data string `json:"data" api:"required,nullable"`
Type IndividualIndividualResponseBodyPhoneNumbersType `json:"type" api:"required,nullable"`
Expand Down Expand Up @@ -412,6 +441,27 @@ func (r IndividualGender) IsKnown() bool {
return false
}

// The employee's marital status, used for beneficiary designation and spousal
// consent workflows.
type IndividualMaritalStatus string

const (
IndividualMaritalStatusSingle IndividualMaritalStatus = "single"
IndividualMaritalStatusMarried IndividualMaritalStatus = "married"
IndividualMaritalStatusDivorced IndividualMaritalStatus = "divorced"
IndividualMaritalStatusWidowed IndividualMaritalStatus = "widowed"
IndividualMaritalStatusDomesticPartner IndividualMaritalStatus = "domestic_partner"
IndividualMaritalStatusUnknown IndividualMaritalStatus = "unknown"
)

func (r IndividualMaritalStatus) IsKnown() bool {
switch r {
case IndividualMaritalStatusSingle, IndividualMaritalStatusMarried, IndividualMaritalStatusDivorced, IndividualMaritalStatusWidowed, IndividualMaritalStatusDomesticPartner, IndividualMaritalStatusUnknown:
return true
}
return false
}

type IndividualResponse struct {
Body Individual `json:"body" api:"required"`
Code int64 `json:"code" api:"required"`
Expand Down
2 changes: 1 addition & 1 deletion internal/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

package internal

const PackageVersion = "2.3.0" // x-release-please-version
const PackageVersion = "2.4.0" // x-release-please-version
Loading
Loading