diff --git a/.stats.yml b/.stats.yml index 2d2fedb..6ec2b33 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1 +1 @@ -configured_endpoints: 18 +configured_endpoints: 20 diff --git a/api.md b/api.md index d611d76..dc13458 100644 --- a/api.md +++ b/api.md @@ -1,5 +1,13 @@ # finchgo +Response Types: + +- finchgo.FinchgoForwardResponse + +Methods: + +- client.Forward(ctx context.Context, body finchgo.FinchgoForwardParams) (finchgo.FinchgoForwardResponse, error) + # HRIS Response Types: @@ -116,6 +124,7 @@ Methods: Response Types: +- finchgo.BenefitSupportType - finchgo.Provider Methods: @@ -139,3 +148,15 @@ Methods: Custom Methods: - VerifySignature + +# Employer + +## Benefits + +Response Types: + +- finchgo.RegisterCompanyBenefitsResponse + +Methods: + +- client.Employer.Benefits.Register(ctx context.Context, body finchgo.EmployerBenefitRegisterParams) (finchgo.RegisterCompanyBenefitsResponse, error) diff --git a/client.go b/client.go index 42096b5..44e930e 100644 --- a/client.go +++ b/client.go @@ -3,8 +3,11 @@ package finchgo import ( + "context" + "net/http" "os" + "github.com/Finch-API/finch-api-go/internal/requestconfig" "github.com/Finch-API/finch-api-go/option" ) @@ -17,6 +20,7 @@ type Client struct { Providers *ProviderService Account *AccountService Webhooks *WebhookService + Employer *EmployerService } // NewClient generates a new client with the default option read from the @@ -42,6 +46,18 @@ func NewClient(opts ...option.RequestOption) (r *Client) { r.Providers = NewProviderService(opts...) r.Account = NewAccountService(opts...) r.Webhooks = NewWebhookService(opts...) + r.Employer = NewEmployerService(opts...) return } + +// The Forward API allows you to make direct requests to an employment system. If +// Finch’s unified API doesn’t have a data model that cleanly fits your needs, then +// Forward allows you to push or pull data models directly against an integration’s +// API. +func (r *Client) Forward(ctx context.Context, body FinchgoForwardParams, opts ...option.RequestOption) (res *FinchgoForwardResponse, err error) { + opts = append(r.Options[:], opts...) + path := "forward" + err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...) + return +} diff --git a/employer.go b/employer.go new file mode 100644 index 0000000..3853d8e --- /dev/null +++ b/employer.go @@ -0,0 +1,26 @@ +// File generated from our OpenAPI spec by Stainless. + +package finchgo + +import ( + "github.com/Finch-API/finch-api-go/option" +) + +// EmployerService contains methods and other services that help with interacting +// with the Finch API. Note, unlike clients, this service does not read variables +// from the environment automatically. You should not instantiate this service +// directly, and instead use the [NewEmployerService] method instead. +type EmployerService struct { + Options []option.RequestOption + Benefits *EmployerBenefitService +} + +// NewEmployerService generates a new service that applies the given options to +// each request. These options are applied after the parent client's options (if +// there is one), and before any request-specific options. +func NewEmployerService(opts ...option.RequestOption) (r *EmployerService) { + r = &EmployerService{} + r.Options = opts + r.Benefits = NewEmployerBenefitService(opts...) + return +} diff --git a/employerbenefit.go b/employerbenefit.go new file mode 100644 index 0000000..425b14b --- /dev/null +++ b/employerbenefit.go @@ -0,0 +1,72 @@ +// File generated from our OpenAPI spec by Stainless. + +package finchgo + +import ( + "context" + "net/http" + + "github.com/Finch-API/finch-api-go/internal/apijson" + "github.com/Finch-API/finch-api-go/internal/param" + "github.com/Finch-API/finch-api-go/internal/requestconfig" + "github.com/Finch-API/finch-api-go/option" +) + +// EmployerBenefitService contains methods and other services that help with +// interacting with the Finch API. Note, unlike clients, this service does not read +// variables from the environment automatically. You should not instantiate this +// service directly, and instead use the [NewEmployerBenefitService] method +// instead. +type EmployerBenefitService struct { + Options []option.RequestOption +} + +// NewEmployerBenefitService generates a new service that applies the given options +// to each request. These options are applied after the parent client's options (if +// there is one), and before any request-specific options. +func NewEmployerBenefitService(opts ...option.RequestOption) (r *EmployerBenefitService) { + r = &EmployerBenefitService{} + r.Options = opts + return +} + +// **Availability: Assisted Benefits providers only** +// +// 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. +func (r *EmployerBenefitService) Register(ctx context.Context, body EmployerBenefitRegisterParams, opts ...option.RequestOption) (res *RegisterCompanyBenefitsResponse, err error) { + opts = append(r.Options[:], opts...) + path := "employer/benefits/register" + err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...) + return +} + +type RegisterCompanyBenefitsResponse struct { + BenefitID string `json:"benefit_id,required"` + JobID string `json:"job_id,required"` + JSON registerCompanyBenefitsResponseJSON +} + +// registerCompanyBenefitsResponseJSON contains the JSON metadata for the struct +// [RegisterCompanyBenefitsResponse] +type registerCompanyBenefitsResponseJSON struct { + BenefitID apijson.Field + JobID apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RegisterCompanyBenefitsResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type EmployerBenefitRegisterParams struct { + Description param.Field[string] `json:"description"` + Frequency param.Field[BenefitFrequency] `json:"frequency"` + // Type of benefit. + Type param.Field[BenefitType] `json:"type"` +} + +func (r EmployerBenefitRegisterParams) MarshalJSON() (data []byte, err error) { + return apijson.MarshalRoot(r) +} diff --git a/employerbenefit_test.go b/employerbenefit_test.go new file mode 100644 index 0000000..e5b4845 --- /dev/null +++ b/employerbenefit_test.go @@ -0,0 +1,40 @@ +// File generated from our OpenAPI spec by Stainless. + +package finchgo_test + +import ( + "context" + "errors" + "os" + "testing" + + finchgo "github.com/Finch-API/finch-api-go" + "github.com/Finch-API/finch-api-go/internal/testutil" + "github.com/Finch-API/finch-api-go/option" +) + +func TestEmployerBenefitRegisterWithOptionalParams(t *testing.T) { + baseURL := "http://localhost:4010" + if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok { + baseURL = envURL + } + if !testutil.CheckTestServer(t, baseURL) { + return + } + client := finchgo.NewClient( + option.WithBaseURL(baseURL), + option.WithAccessToken("AccessToken"), + ) + _, err := client.Employer.Benefits.Register(context.TODO(), finchgo.EmployerBenefitRegisterParams{ + Description: finchgo.F("string"), + Frequency: finchgo.F(finchgo.BenefitFrequencyOneTime), + Type: finchgo.F(finchgo.BenefitType401k), + }) + if err != nil { + var apierr *finchgo.Error + if errors.As(err, &apierr) { + t.Log(string(apierr.DumpRequest(true))) + } + t.Fatalf("err should be nil: %s", err.Error()) + } +} diff --git a/finchgo.go b/finchgo.go new file mode 100644 index 0000000..f77429f --- /dev/null +++ b/finchgo.go @@ -0,0 +1,101 @@ +// File generated from our OpenAPI spec by Stainless. + +package finchgo + +import ( + "github.com/Finch-API/finch-api-go/internal/apijson" + "github.com/Finch-API/finch-api-go/internal/param" +) + +type FinchgoForwardResponse struct { + // A string representation of the HTTP response body of the forwarded request’s + // response received from the underlying integration’s API. This field may be null + // in the case where the upstream system’s response is empty. + Data string `json:"data,required,nullable"` + // The HTTP headers of the forwarded request’s response, exactly as received from + // the underlying integration’s API. + Headers interface{} `json:"headers,required,nullable"` + // An object containing details of your original forwarded request, for your ease + // of reference. + Request FinchgoForwardResponseRequest `json:"request,required"` + // The HTTP status code of the forwarded request’s response, exactly received from + // the underlying integration’s API. This value will be returned as an integer. + StatusCode int64 `json:"statusCode,required"` + JSON finchgoForwardResponseJSON +} + +// finchgoForwardResponseJSON contains the JSON metadata for the struct +// [FinchgoForwardResponse] +type finchgoForwardResponseJSON struct { + Data apijson.Field + Headers apijson.Field + Request apijson.Field + StatusCode apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *FinchgoForwardResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +// An object containing details of your original forwarded request, for your ease +// of reference. +type FinchgoForwardResponseRequest struct { + // The body that was specified for the forwarded request. If a value was not + // specified in the original request, this value will be returned as null ; + // otherwise, this value will always be returned as a string. + Data string `json:"data,required,nullable"` + // The specified HTTP headers that were included in the forwarded request. If no + // headers were specified, this will be returned as `null`. + Headers interface{} `json:"headers,required,nullable"` + // The HTTP method that was specified for the forwarded request. Valid values + // include: `GET` , `POST` , `PUT` , `DELETE` , and `PATCH`. + Method string `json:"method,required"` + // The query parameters that were included in the forwarded request. If no query + // parameters were specified, this will be returned as `null`. + Params interface{} `json:"params,required,nullable"` + // The URL route path that was specified for the forwarded request. + Route string `json:"route,required"` + JSON finchgoForwardResponseRequestJSON +} + +// finchgoForwardResponseRequestJSON contains the JSON metadata for the struct +// [FinchgoForwardResponseRequest] +type finchgoForwardResponseRequestJSON struct { + Data apijson.Field + Headers apijson.Field + Method apijson.Field + Params apijson.Field + Route apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *FinchgoForwardResponseRequest) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type FinchgoForwardParams struct { + // The HTTP method for the forwarded request. Valid values include: `GET` , `POST` + // , `PUT` , `DELETE` , and `PATCH`. + Method param.Field[string] `json:"method,required"` + // The URL route path for the forwarded request. This value must begin with a + // forward-slash ( / ) and may only contain alphanumeric characters, hyphens, and + // underscores. + Route param.Field[string] `json:"route,required"` + // The body for the forwarded request. This value must be specified as either a + // string or a valid JSON object. + Data param.Field[string] `json:"data"` + // The HTTP headers to include on the forwarded request. This value must be + // specified as an object of key-value pairs. Example: + // `{"Content-Type": "application/xml", "X-API-Version": "v1" }` + Headers param.Field[interface{}] `json:"headers"` + // The query parameters for the forwarded request. This value must be specified as + // a valid JSON object rather than a query string. + Params param.Field[interface{}] `json:"params"` +} + +func (r FinchgoForwardParams) MarshalJSON() (data []byte, err error) { + return apijson.MarshalRoot(r) +} diff --git a/finchgo_test.go b/finchgo_test.go new file mode 100644 index 0000000..2777d3c --- /dev/null +++ b/finchgo_test.go @@ -0,0 +1,42 @@ +// File generated from our OpenAPI spec by Stainless. + +package finchgo_test + +import ( + "context" + "errors" + "os" + "testing" + + finchgo "github.com/Finch-API/finch-api-go" + "github.com/Finch-API/finch-api-go/internal/testutil" + "github.com/Finch-API/finch-api-go/option" +) + +func TestFinchgoForwardWithOptionalParams(t *testing.T) { + baseURL := "http://localhost:4010" + if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok { + baseURL = envURL + } + if !testutil.CheckTestServer(t, baseURL) { + return + } + client := finchgo.NewClient( + option.WithBaseURL(baseURL), + option.WithAccessToken("AccessToken"), + ) + _, err := client.Forward(context.TODO(), finchgo.FinchgoForwardParams{ + Method: finchgo.F("string"), + Route: finchgo.F("string"), + Data: finchgo.F("string"), + Headers: finchgo.F[any](map[string]interface{}{}), + Params: finchgo.F[any](map[string]interface{}{}), + }) + if err != nil { + var apierr *finchgo.Error + if errors.As(err, &apierr) { + t.Log(string(apierr.DumpRequest(true))) + } + t.Fatalf("err should be nil: %s", err.Error()) + } +} diff --git a/hris.go b/hris.go index 9ce81bb..c0c5b7b 100644 --- a/hris.go +++ b/hris.go @@ -122,7 +122,7 @@ func (r *Location) UnmarshalJSON(data []byte) (err error) { type Money struct { // Amount for money object (in cents) - Amount int64 `json:"amount"` + Amount int64 `json:"amount,nullable"` Currency string `json:"currency"` JSON moneyJSON } diff --git a/hrisbenefit.go b/hrisbenefit.go index 4e295d1..030a0da 100644 --- a/hrisbenefit.go +++ b/hrisbenefit.go @@ -125,6 +125,7 @@ type BenefitFrequency string const ( BenefitFrequencyOneTime BenefitFrequency = "one_time" BenefitFrequencyEveryPaycheck BenefitFrequency = "every_paycheck" + BenefitFrequencyMonthly BenefitFrequency = "monthly" ) // Type of benefit. diff --git a/hrisemployment.go b/hrisemployment.go index efe4b17..2bbbb65 100644 --- a/hrisemployment.go +++ b/hrisemployment.go @@ -66,6 +66,9 @@ type EmploymentData struct { ID string `json:"id"` // Worker's compensation classification code for this employee ClassCode string `json:"class_code,nullable"` + // Custom fields for the individual. These are fields which are defined by the + // employer in the system. + CustomFields []EmploymentDataCustomField `json:"custom_fields,nullable"` // The department object. Department EmploymentDataDepartment `json:"department,nullable"` // The employment object. @@ -91,7 +94,9 @@ type EmploymentData struct { // Note: This property is only available if enabled for your account. Please reach // out to your Finch representative if you would like access. PayGroupIDs []string `json:"pay_group_ids,nullable"` - StartDate string `json:"start_date,nullable"` + // The source system's unique employment identifier for this individual + SourceID string `json:"source_id,nullable"` + StartDate string `json:"start_date,nullable"` // The current title of the individual. Title string `json:"title,nullable"` // Note: This property is only available if enabled for your account. Please reach @@ -107,6 +112,7 @@ type EmploymentData struct { type employmentDataJSON struct { ID apijson.Field ClassCode apijson.Field + CustomFields apijson.Field Department apijson.Field Employment apijson.Field EndDate apijson.Field @@ -119,6 +125,7 @@ type employmentDataJSON struct { Manager apijson.Field MiddleName apijson.Field PayGroupIDs apijson.Field + SourceID apijson.Field StartDate apijson.Field Title apijson.Field WorkID apijson.Field @@ -131,6 +138,25 @@ func (r *EmploymentData) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } +type EmploymentDataCustomField struct { + Name string `json:"name"` + Value interface{} `json:"value"` + JSON employmentDataCustomFieldJSON +} + +// employmentDataCustomFieldJSON contains the JSON metadata for the struct +// [EmploymentDataCustomField] +type employmentDataCustomFieldJSON struct { + Name apijson.Field + Value apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *EmploymentDataCustomField) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + // The department object. type EmploymentDataDepartment struct { // The name of the department associated with the individual. diff --git a/hrisindividual.go b/hrisindividual.go index dfa3030..321faf3 100644 --- a/hrisindividual.go +++ b/hrisindividual.go @@ -58,6 +58,8 @@ type Individual struct { ID string `json:"id"` Dob string `json:"dob,nullable"` Emails []IndividualEmail `json:"emails,nullable"` + // The EEOC-defined ethnicity of the individual. + Ethnicity IndividualEthnicity `json:"ethnicity,nullable"` // The legal first name of the individual. FirstName string `json:"first_name,nullable"` // The gender of the individual. @@ -81,6 +83,7 @@ type individualJSON struct { ID apijson.Field Dob apijson.Field Emails apijson.Field + Ethnicity apijson.Field FirstName apijson.Field Gender apijson.Field LastName apijson.Field @@ -122,6 +125,20 @@ const ( IndividualEmailsTypePersonal IndividualEmailsType = "personal" ) +// The EEOC-defined ethnicity of the individual. +type IndividualEthnicity string + +const ( + IndividualEthnicityAsian IndividualEthnicity = "asian" + IndividualEthnicityWhite IndividualEthnicity = "white" + IndividualEthnicityBlackOrAfricanAmerican IndividualEthnicity = "black_or_african_american" + IndividualEthnicityNativeHawaiianOrPacificIslander IndividualEthnicity = "native_hawaiian_or_pacific_islander" + IndividualEthnicityAmericanIndianOrAlaskaNative IndividualEthnicity = "american_indian_or_alaska_native" + IndividualEthnicityHispanicOrLatino IndividualEthnicity = "hispanic_or_latino" + IndividualEthnicityTwoOrMoreRaces IndividualEthnicity = "two_or_more_races" + IndividualEthnicityDeclineToSpecify IndividualEthnicity = "decline_to_specify" +) + // The gender of the individual. type IndividualGender string diff --git a/hrispaystatement.go b/hrispaystatement.go index cde9fc4..e038416 100644 --- a/hrispaystatement.go +++ b/hrispaystatement.go @@ -75,7 +75,7 @@ type PayStatement struct { // The array of taxes objects associated with this pay statement. Taxes []PayStatementTax `json:"taxes,nullable"` // The number of hours worked for this pay period - TotalHours int64 `json:"total_hours,nullable"` + TotalHours float64 `json:"total_hours,nullable"` // The type of the payment associated with the pay statement. Type PayStatementType `json:"type,nullable"` JSON payStatementJSON diff --git a/provider.go b/provider.go index d9bc36f..00be333 100644 --- a/provider.go +++ b/provider.go @@ -52,17 +52,349 @@ func (r *ProviderService) ListAutoPaging(ctx context.Context, opts ...option.Req return shared.NewSinglePageAutoPager(r.List(ctx, opts...)) } +type BenefitSupportType struct { + SupportedFeatures BenefitSupportTypeSupportedFeatures `json:"supported_features"` + SupportedOperations BenefitSupportTypeSupportedOperations `json:"supported_operations"` + JSON benefitSupportTypeJSON +} + +// benefitSupportTypeJSON contains the JSON metadata for the struct +// [BenefitSupportType] +type benefitSupportTypeJSON struct { + SupportedFeatures apijson.Field + SupportedOperations apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *BenefitSupportType) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type BenefitSupportTypeSupportedFeatures struct { + // Whether the provider supports an annual maximum for this benefit. + AnnualMaximum bool `json:"annual_maximum,nullable"` + // Whether the provider supports catch up for this benefit. This field will only be + // true for retirement benefits. + CatchUp bool `json:"catch_up,nullable"` + // Supported contribution types. An empty array indicates contributions are not + // supported. + CompanyContribution []BenefitSupportTypeSupportedFeaturesCompanyContribution `json:"company_contribution,nullable"` + Description string `json:"description,nullable"` + // Supported deduction types. An empty array indicates deductions are not + // supported. + EmployeeDeduction []BenefitSupportTypeSupportedFeaturesEmployeeDeduction `json:"employee_deduction,nullable"` + // The list of frequencies supported by the provider for this benefit + Frequencies []BenefitFrequency `json:"frequencies"` + // Whether the provider supports HSA contribution limits. Empty if this feature is + // not supported for the benefit. This array only has values for HSA benefits. + HsaContributionLimit []BenefitSupportTypeSupportedFeaturesHsaContributionLimit `json:"hsa_contribution_limit,nullable"` + JSON benefitSupportTypeSupportedFeaturesJSON +} + +// benefitSupportTypeSupportedFeaturesJSON contains the JSON metadata for the +// struct [BenefitSupportTypeSupportedFeatures] +type benefitSupportTypeSupportedFeaturesJSON struct { + AnnualMaximum apijson.Field + CatchUp apijson.Field + CompanyContribution apijson.Field + Description apijson.Field + EmployeeDeduction apijson.Field + Frequencies apijson.Field + HsaContributionLimit apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *BenefitSupportTypeSupportedFeatures) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type BenefitSupportTypeSupportedFeaturesCompanyContribution string + +const ( + BenefitSupportTypeSupportedFeaturesCompanyContributionFixed BenefitSupportTypeSupportedFeaturesCompanyContribution = "fixed" + BenefitSupportTypeSupportedFeaturesCompanyContributionPercent BenefitSupportTypeSupportedFeaturesCompanyContribution = "percent" +) + +type BenefitSupportTypeSupportedFeaturesEmployeeDeduction string + +const ( + BenefitSupportTypeSupportedFeaturesEmployeeDeductionFixed BenefitSupportTypeSupportedFeaturesEmployeeDeduction = "fixed" + BenefitSupportTypeSupportedFeaturesEmployeeDeductionPercent BenefitSupportTypeSupportedFeaturesEmployeeDeduction = "percent" +) + +type BenefitSupportTypeSupportedFeaturesHsaContributionLimit string + +const ( + BenefitSupportTypeSupportedFeaturesHsaContributionLimitIndividual BenefitSupportTypeSupportedFeaturesHsaContributionLimit = "individual" + BenefitSupportTypeSupportedFeaturesHsaContributionLimitFamily BenefitSupportTypeSupportedFeaturesHsaContributionLimit = "family" +) + +type BenefitSupportTypeSupportedOperations struct { + CompanyBenefits BenefitSupportTypeSupportedOperationsCompanyBenefits `json:"company_benefits"` + IndividualBenefits BenefitSupportTypeSupportedOperationsIndividualBenefits `json:"individual_benefits"` + JSON benefitSupportTypeSupportedOperationsJSON +} + +// benefitSupportTypeSupportedOperationsJSON contains the JSON metadata for the +// struct [BenefitSupportTypeSupportedOperations] +type benefitSupportTypeSupportedOperationsJSON struct { + CompanyBenefits apijson.Field + IndividualBenefits apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *BenefitSupportTypeSupportedOperations) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type BenefitSupportTypeSupportedOperationsCompanyBenefits struct { + // - `supported`: This operation is supported by both the provider and Finch
+ // - `not_supported_by_finch`: This operation is not supported by Finch but + // supported by the provider
+ // - `not_supported_by_provider`: This operation is not supported by the provider, + // so Finch cannot support
+ // - `client_access_only`: This behavior is supported by the provider, but only + // available to the client and not to Finch + Create BenefitSupportTypeSupportedOperationsCompanyBenefitsCreate `json:"create"` + // - `supported`: This operation is supported by both the provider and Finch
+ // - `not_supported_by_finch`: This operation is not supported by Finch but + // supported by the provider
+ // - `not_supported_by_provider`: This operation is not supported by the provider, + // so Finch cannot support
+ // - `client_access_only`: This behavior is supported by the provider, but only + // available to the client and not to Finch + Delete BenefitSupportTypeSupportedOperationsCompanyBenefitsDelete `json:"delete"` + // - `supported`: This operation is supported by both the provider and Finch
+ // - `not_supported_by_finch`: This operation is not supported by Finch but + // supported by the provider
+ // - `not_supported_by_provider`: This operation is not supported by the provider, + // so Finch cannot support
+ // - `client_access_only`: This behavior is supported by the provider, but only + // available to the client and not to Finch + Read BenefitSupportTypeSupportedOperationsCompanyBenefitsRead `json:"read"` + // - `supported`: This operation is supported by both the provider and Finch
+ // - `not_supported_by_finch`: This operation is not supported by Finch but + // supported by the provider
+ // - `not_supported_by_provider`: This operation is not supported by the provider, + // so Finch cannot support
+ // - `client_access_only`: This behavior is supported by the provider, but only + // available to the client and not to Finch + Update BenefitSupportTypeSupportedOperationsCompanyBenefitsUpdate `json:"update"` + JSON benefitSupportTypeSupportedOperationsCompanyBenefitsJSON +} + +// benefitSupportTypeSupportedOperationsCompanyBenefitsJSON contains the JSON +// metadata for the struct [BenefitSupportTypeSupportedOperationsCompanyBenefits] +type benefitSupportTypeSupportedOperationsCompanyBenefitsJSON struct { + Create apijson.Field + Delete apijson.Field + Read apijson.Field + Update apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *BenefitSupportTypeSupportedOperationsCompanyBenefits) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +// - `supported`: This operation is supported by both the provider and Finch
+// - `not_supported_by_finch`: This operation is not supported by Finch but +// supported by the provider
+// - `not_supported_by_provider`: This operation is not supported by the provider, +// so Finch cannot support
+// - `client_access_only`: This behavior is supported by the provider, but only +// available to the client and not to Finch +type BenefitSupportTypeSupportedOperationsCompanyBenefitsCreate string + +const ( + BenefitSupportTypeSupportedOperationsCompanyBenefitsCreateSupported BenefitSupportTypeSupportedOperationsCompanyBenefitsCreate = "supported" + BenefitSupportTypeSupportedOperationsCompanyBenefitsCreateNotSupportedByFinch BenefitSupportTypeSupportedOperationsCompanyBenefitsCreate = "not_supported_by_finch" + BenefitSupportTypeSupportedOperationsCompanyBenefitsCreateNotSupportedByProvider BenefitSupportTypeSupportedOperationsCompanyBenefitsCreate = "not_supported_by_provider" + BenefitSupportTypeSupportedOperationsCompanyBenefitsCreateClientAccessOnly BenefitSupportTypeSupportedOperationsCompanyBenefitsCreate = "client_access_only" +) + +// - `supported`: This operation is supported by both the provider and Finch
+// - `not_supported_by_finch`: This operation is not supported by Finch but +// supported by the provider
+// - `not_supported_by_provider`: This operation is not supported by the provider, +// so Finch cannot support
+// - `client_access_only`: This behavior is supported by the provider, but only +// available to the client and not to Finch +type BenefitSupportTypeSupportedOperationsCompanyBenefitsDelete string + +const ( + BenefitSupportTypeSupportedOperationsCompanyBenefitsDeleteSupported BenefitSupportTypeSupportedOperationsCompanyBenefitsDelete = "supported" + BenefitSupportTypeSupportedOperationsCompanyBenefitsDeleteNotSupportedByFinch BenefitSupportTypeSupportedOperationsCompanyBenefitsDelete = "not_supported_by_finch" + BenefitSupportTypeSupportedOperationsCompanyBenefitsDeleteNotSupportedByProvider BenefitSupportTypeSupportedOperationsCompanyBenefitsDelete = "not_supported_by_provider" + BenefitSupportTypeSupportedOperationsCompanyBenefitsDeleteClientAccessOnly BenefitSupportTypeSupportedOperationsCompanyBenefitsDelete = "client_access_only" +) + +// - `supported`: This operation is supported by both the provider and Finch
+// - `not_supported_by_finch`: This operation is not supported by Finch but +// supported by the provider
+// - `not_supported_by_provider`: This operation is not supported by the provider, +// so Finch cannot support
+// - `client_access_only`: This behavior is supported by the provider, but only +// available to the client and not to Finch +type BenefitSupportTypeSupportedOperationsCompanyBenefitsRead string + +const ( + BenefitSupportTypeSupportedOperationsCompanyBenefitsReadSupported BenefitSupportTypeSupportedOperationsCompanyBenefitsRead = "supported" + BenefitSupportTypeSupportedOperationsCompanyBenefitsReadNotSupportedByFinch BenefitSupportTypeSupportedOperationsCompanyBenefitsRead = "not_supported_by_finch" + BenefitSupportTypeSupportedOperationsCompanyBenefitsReadNotSupportedByProvider BenefitSupportTypeSupportedOperationsCompanyBenefitsRead = "not_supported_by_provider" + BenefitSupportTypeSupportedOperationsCompanyBenefitsReadClientAccessOnly BenefitSupportTypeSupportedOperationsCompanyBenefitsRead = "client_access_only" +) + +// - `supported`: This operation is supported by both the provider and Finch
+// - `not_supported_by_finch`: This operation is not supported by Finch but +// supported by the provider
+// - `not_supported_by_provider`: This operation is not supported by the provider, +// so Finch cannot support
+// - `client_access_only`: This behavior is supported by the provider, but only +// available to the client and not to Finch +type BenefitSupportTypeSupportedOperationsCompanyBenefitsUpdate string + +const ( + BenefitSupportTypeSupportedOperationsCompanyBenefitsUpdateSupported BenefitSupportTypeSupportedOperationsCompanyBenefitsUpdate = "supported" + BenefitSupportTypeSupportedOperationsCompanyBenefitsUpdateNotSupportedByFinch BenefitSupportTypeSupportedOperationsCompanyBenefitsUpdate = "not_supported_by_finch" + BenefitSupportTypeSupportedOperationsCompanyBenefitsUpdateNotSupportedByProvider BenefitSupportTypeSupportedOperationsCompanyBenefitsUpdate = "not_supported_by_provider" + BenefitSupportTypeSupportedOperationsCompanyBenefitsUpdateClientAccessOnly BenefitSupportTypeSupportedOperationsCompanyBenefitsUpdate = "client_access_only" +) + +type BenefitSupportTypeSupportedOperationsIndividualBenefits struct { + // - `supported`: This operation is supported by both the provider and Finch
+ // - `not_supported_by_finch`: This operation is not supported by Finch but + // supported by the provider
+ // - `not_supported_by_provider`: This operation is not supported by the provider, + // so Finch cannot support
+ // - `client_access_only`: This behavior is supported by the provider, but only + // available to the client and not to Finch + Create BenefitSupportTypeSupportedOperationsIndividualBenefitsCreate `json:"create"` + // - `supported`: This operation is supported by both the provider and Finch
+ // - `not_supported_by_finch`: This operation is not supported by Finch but + // supported by the provider
+ // - `not_supported_by_provider`: This operation is not supported by the provider, + // so Finch cannot support
+ // - `client_access_only`: This behavior is supported by the provider, but only + // available to the client and not to Finch + Delete BenefitSupportTypeSupportedOperationsIndividualBenefitsDelete `json:"delete"` + // - `supported`: This operation is supported by both the provider and Finch
+ // - `not_supported_by_finch`: This operation is not supported by Finch but + // supported by the provider
+ // - `not_supported_by_provider`: This operation is not supported by the provider, + // so Finch cannot support
+ // - `client_access_only`: This behavior is supported by the provider, but only + // available to the client and not to Finch + Read BenefitSupportTypeSupportedOperationsIndividualBenefitsRead `json:"read"` + // - `supported`: This operation is supported by both the provider and Finch
+ // - `not_supported_by_finch`: This operation is not supported by Finch but + // supported by the provider
+ // - `not_supported_by_provider`: This operation is not supported by the provider, + // so Finch cannot support
+ // - `client_access_only`: This behavior is supported by the provider, but only + // available to the client and not to Finch + Update BenefitSupportTypeSupportedOperationsIndividualBenefitsUpdate `json:"update"` + JSON benefitSupportTypeSupportedOperationsIndividualBenefitsJSON +} + +// benefitSupportTypeSupportedOperationsIndividualBenefitsJSON contains the JSON +// metadata for the struct +// [BenefitSupportTypeSupportedOperationsIndividualBenefits] +type benefitSupportTypeSupportedOperationsIndividualBenefitsJSON struct { + Create apijson.Field + Delete apijson.Field + Read apijson.Field + Update apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *BenefitSupportTypeSupportedOperationsIndividualBenefits) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +// - `supported`: This operation is supported by both the provider and Finch
+// - `not_supported_by_finch`: This operation is not supported by Finch but +// supported by the provider
+// - `not_supported_by_provider`: This operation is not supported by the provider, +// so Finch cannot support
+// - `client_access_only`: This behavior is supported by the provider, but only +// available to the client and not to Finch +type BenefitSupportTypeSupportedOperationsIndividualBenefitsCreate string + +const ( + BenefitSupportTypeSupportedOperationsIndividualBenefitsCreateSupported BenefitSupportTypeSupportedOperationsIndividualBenefitsCreate = "supported" + BenefitSupportTypeSupportedOperationsIndividualBenefitsCreateNotSupportedByFinch BenefitSupportTypeSupportedOperationsIndividualBenefitsCreate = "not_supported_by_finch" + BenefitSupportTypeSupportedOperationsIndividualBenefitsCreateNotSupportedByProvider BenefitSupportTypeSupportedOperationsIndividualBenefitsCreate = "not_supported_by_provider" + BenefitSupportTypeSupportedOperationsIndividualBenefitsCreateClientAccessOnly BenefitSupportTypeSupportedOperationsIndividualBenefitsCreate = "client_access_only" +) + +// - `supported`: This operation is supported by both the provider and Finch
+// - `not_supported_by_finch`: This operation is not supported by Finch but +// supported by the provider
+// - `not_supported_by_provider`: This operation is not supported by the provider, +// so Finch cannot support
+// - `client_access_only`: This behavior is supported by the provider, but only +// available to the client and not to Finch +type BenefitSupportTypeSupportedOperationsIndividualBenefitsDelete string + +const ( + BenefitSupportTypeSupportedOperationsIndividualBenefitsDeleteSupported BenefitSupportTypeSupportedOperationsIndividualBenefitsDelete = "supported" + BenefitSupportTypeSupportedOperationsIndividualBenefitsDeleteNotSupportedByFinch BenefitSupportTypeSupportedOperationsIndividualBenefitsDelete = "not_supported_by_finch" + BenefitSupportTypeSupportedOperationsIndividualBenefitsDeleteNotSupportedByProvider BenefitSupportTypeSupportedOperationsIndividualBenefitsDelete = "not_supported_by_provider" + BenefitSupportTypeSupportedOperationsIndividualBenefitsDeleteClientAccessOnly BenefitSupportTypeSupportedOperationsIndividualBenefitsDelete = "client_access_only" +) + +// - `supported`: This operation is supported by both the provider and Finch
+// - `not_supported_by_finch`: This operation is not supported by Finch but +// supported by the provider
+// - `not_supported_by_provider`: This operation is not supported by the provider, +// so Finch cannot support
+// - `client_access_only`: This behavior is supported by the provider, but only +// available to the client and not to Finch +type BenefitSupportTypeSupportedOperationsIndividualBenefitsRead string + +const ( + BenefitSupportTypeSupportedOperationsIndividualBenefitsReadSupported BenefitSupportTypeSupportedOperationsIndividualBenefitsRead = "supported" + BenefitSupportTypeSupportedOperationsIndividualBenefitsReadNotSupportedByFinch BenefitSupportTypeSupportedOperationsIndividualBenefitsRead = "not_supported_by_finch" + BenefitSupportTypeSupportedOperationsIndividualBenefitsReadNotSupportedByProvider BenefitSupportTypeSupportedOperationsIndividualBenefitsRead = "not_supported_by_provider" + BenefitSupportTypeSupportedOperationsIndividualBenefitsReadClientAccessOnly BenefitSupportTypeSupportedOperationsIndividualBenefitsRead = "client_access_only" +) + +// - `supported`: This operation is supported by both the provider and Finch
+// - `not_supported_by_finch`: This operation is not supported by Finch but +// supported by the provider
+// - `not_supported_by_provider`: This operation is not supported by the provider, +// so Finch cannot support
+// - `client_access_only`: This behavior is supported by the provider, but only +// available to the client and not to Finch +type BenefitSupportTypeSupportedOperationsIndividualBenefitsUpdate string + +const ( + BenefitSupportTypeSupportedOperationsIndividualBenefitsUpdateSupported BenefitSupportTypeSupportedOperationsIndividualBenefitsUpdate = "supported" + BenefitSupportTypeSupportedOperationsIndividualBenefitsUpdateNotSupportedByFinch BenefitSupportTypeSupportedOperationsIndividualBenefitsUpdate = "not_supported_by_finch" + BenefitSupportTypeSupportedOperationsIndividualBenefitsUpdateNotSupportedByProvider BenefitSupportTypeSupportedOperationsIndividualBenefitsUpdate = "not_supported_by_provider" + BenefitSupportTypeSupportedOperationsIndividualBenefitsUpdateClientAccessOnly BenefitSupportTypeSupportedOperationsIndividualBenefitsUpdate = "client_access_only" +) + type Provider struct { // The id of the payroll provider used in Connect. ID string `json:"id"` + // The list of authentication methods supported by the provider. + AuthenticationMethods []ProviderAuthenticationMethod `json:"authentication_methods"` // The display name of the payroll provider. DisplayName string `json:"display_name"` // The url to the official icon of the payroll provider. Icon string `json:"icon"` // The url to the official logo of the payroll provider. Logo string `json:"logo"` - // Whether the Finch integration with this provider uses the Assisted Connect Flow - // by default. + // [DEPRECATED] Whether the Finch integration with this provider uses the Assisted + // Connect Flow by default. This field is now deprecated. Please check for a `type` + // of `assisted` in the `authentication_methods` field instead. Manual bool `json:"manual"` // whether MFA is required for the provider. MfaRequired bool `json:"mfa_required"` @@ -75,18 +407,840 @@ type Provider struct { // providerJSON contains the JSON metadata for the struct [Provider] type providerJSON struct { - ID apijson.Field - DisplayName apijson.Field - Icon apijson.Field - Logo apijson.Field - Manual apijson.Field - MfaRequired apijson.Field - PrimaryColor apijson.Field - Products apijson.Field + ID apijson.Field + AuthenticationMethods apijson.Field + DisplayName apijson.Field + Icon apijson.Field + Logo apijson.Field + Manual apijson.Field + MfaRequired apijson.Field + PrimaryColor apijson.Field + Products apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *Provider) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethod struct { + // Each benefit type and their supported features. If the benefit type is not + // supported, the property will be null + BenefitsSupport ProviderAuthenticationMethodsBenefitsSupport `json:"benefits_support,nullable"` + // The supported data fields returned by our HR and payroll endpoints + SupportedFields ProviderAuthenticationMethodsSupportedFields `json:"supported_fields,nullable"` + // The type of authentication method. + Type ProviderAuthenticationMethodsType `json:"type"` + JSON providerAuthenticationMethodJSON +} + +// providerAuthenticationMethodJSON contains the JSON metadata for the struct +// [ProviderAuthenticationMethod] +type providerAuthenticationMethodJSON struct { + BenefitsSupport apijson.Field + SupportedFields apijson.Field + Type apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethod) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +// Each benefit type and their supported features. If the benefit type is not +// supported, the property will be null +type ProviderAuthenticationMethodsBenefitsSupport struct { + Retirement401k BenefitSupportType `json:"401k,nullable"` + Retirement401kLoan BenefitSupportType `json:"401k_loan,nullable"` + Retirement401kRoth BenefitSupportType `json:"401k_roth,nullable"` + Retirement403B BenefitSupportType `json:"403b,nullable"` + Retirement403BRoth BenefitSupportType `json:"403b_roth,nullable"` + Retirement457 BenefitSupportType `json:"457,nullable"` + Retirement457Roth BenefitSupportType `json:"457_roth,nullable"` + Commuter BenefitSupportType `json:"commuter,nullable"` + CustomPostTax BenefitSupportType `json:"custom_post_tax,nullable"` + CustomPreTax BenefitSupportType `json:"custom_pre_tax,nullable"` + FsaDependentCare BenefitSupportType `json:"fsa_dependent_care,nullable"` + FsaMedical BenefitSupportType `json:"fsa_medical,nullable"` + HsaPost BenefitSupportType `json:"hsa_post,nullable"` + HsaPre BenefitSupportType `json:"hsa_pre,nullable"` + S125Dental BenefitSupportType `json:"s125_dental,nullable"` + S125Medical BenefitSupportType `json:"s125_medical,nullable"` + S125Vision BenefitSupportType `json:"s125_vision,nullable"` + Simple BenefitSupportType `json:"simple,nullable"` + SimpleIra BenefitSupportType `json:"simple_ira,nullable"` + JSON providerAuthenticationMethodsBenefitsSupportJSON +} + +// providerAuthenticationMethodsBenefitsSupportJSON contains the JSON metadata for +// the struct [ProviderAuthenticationMethodsBenefitsSupport] +type providerAuthenticationMethodsBenefitsSupportJSON struct { + Retirement401k apijson.Field + Retirement401kLoan apijson.Field + Retirement401kRoth apijson.Field + Retirement403B apijson.Field + Retirement403BRoth apijson.Field + Retirement457 apijson.Field + Retirement457Roth apijson.Field + Commuter apijson.Field + CustomPostTax apijson.Field + CustomPreTax apijson.Field + FsaDependentCare apijson.Field + FsaMedical apijson.Field + HsaPost apijson.Field + HsaPre apijson.Field + S125Dental apijson.Field + S125Medical apijson.Field + S125Vision apijson.Field + Simple apijson.Field + SimpleIra apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsBenefitsSupport) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +// The supported data fields returned by our HR and payroll endpoints +type ProviderAuthenticationMethodsSupportedFields struct { + Company ProviderAuthenticationMethodsSupportedFieldsCompany `json:"company"` + Directory ProviderAuthenticationMethodsSupportedFieldsDirectory `json:"directory"` + Employment ProviderAuthenticationMethodsSupportedFieldsEmployment `json:"employment"` + Individual ProviderAuthenticationMethodsSupportedFieldsIndividual `json:"individual"` + PayStatement ProviderAuthenticationMethodsSupportedFieldsPayStatement `json:"pay_statement"` + Payment ProviderAuthenticationMethodsSupportedFieldsPayment `json:"payment"` + JSON providerAuthenticationMethodsSupportedFieldsJSON +} + +// providerAuthenticationMethodsSupportedFieldsJSON contains the JSON metadata for +// the struct [ProviderAuthenticationMethodsSupportedFields] +type providerAuthenticationMethodsSupportedFieldsJSON struct { + Company apijson.Field + Directory apijson.Field + Employment apijson.Field + Individual apijson.Field + PayStatement apijson.Field + Payment apijson.Field raw string ExtraFields map[string]apijson.Field } -func (r *Provider) UnmarshalJSON(data []byte) (err error) { +func (r *ProviderAuthenticationMethodsSupportedFields) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsCompany struct { + ID bool `json:"id"` + Accounts ProviderAuthenticationMethodsSupportedFieldsCompanyAccounts `json:"accounts"` + Departments ProviderAuthenticationMethodsSupportedFieldsCompanyDepartments `json:"departments"` + Ein bool `json:"ein"` + Entity ProviderAuthenticationMethodsSupportedFieldsCompanyEntity `json:"entity"` + LegalName bool `json:"legal_name"` + Locations ProviderAuthenticationMethodsSupportedFieldsCompanyLocations `json:"locations"` + PrimaryEmail bool `json:"primary_email"` + PrimaryPhoneNumber bool `json:"primary_phone_number"` + JSON providerAuthenticationMethodsSupportedFieldsCompanyJSON +} + +// providerAuthenticationMethodsSupportedFieldsCompanyJSON contains the JSON +// metadata for the struct [ProviderAuthenticationMethodsSupportedFieldsCompany] +type providerAuthenticationMethodsSupportedFieldsCompanyJSON struct { + ID apijson.Field + Accounts apijson.Field + Departments apijson.Field + Ein apijson.Field + Entity apijson.Field + LegalName apijson.Field + Locations apijson.Field + PrimaryEmail apijson.Field + PrimaryPhoneNumber apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsCompany) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsCompanyAccounts struct { + AccountName bool `json:"account_name"` + AccountNumber bool `json:"account_number"` + AccountType bool `json:"account_type"` + InstitutionName bool `json:"institution_name"` + RoutingNumber bool `json:"routing_number"` + JSON providerAuthenticationMethodsSupportedFieldsCompanyAccountsJSON +} + +// providerAuthenticationMethodsSupportedFieldsCompanyAccountsJSON contains the +// JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsCompanyAccounts] +type providerAuthenticationMethodsSupportedFieldsCompanyAccountsJSON struct { + AccountName apijson.Field + AccountNumber apijson.Field + AccountType apijson.Field + InstitutionName apijson.Field + RoutingNumber apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsCompanyAccounts) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsCompanyDepartments struct { + Name bool `json:"name"` + Parent ProviderAuthenticationMethodsSupportedFieldsCompanyDepartmentsParent `json:"parent"` + JSON providerAuthenticationMethodsSupportedFieldsCompanyDepartmentsJSON +} + +// providerAuthenticationMethodsSupportedFieldsCompanyDepartmentsJSON contains the +// JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsCompanyDepartments] +type providerAuthenticationMethodsSupportedFieldsCompanyDepartmentsJSON struct { + Name apijson.Field + Parent apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsCompanyDepartments) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsCompanyDepartmentsParent struct { + Name bool `json:"name"` + JSON providerAuthenticationMethodsSupportedFieldsCompanyDepartmentsParentJSON +} + +// providerAuthenticationMethodsSupportedFieldsCompanyDepartmentsParentJSON +// contains the JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsCompanyDepartmentsParent] +type providerAuthenticationMethodsSupportedFieldsCompanyDepartmentsParentJSON struct { + Name apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsCompanyDepartmentsParent) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsCompanyEntity struct { + Subtype bool `json:"subtype"` + Type bool `json:"type"` + JSON providerAuthenticationMethodsSupportedFieldsCompanyEntityJSON +} + +// providerAuthenticationMethodsSupportedFieldsCompanyEntityJSON contains the JSON +// metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsCompanyEntity] +type providerAuthenticationMethodsSupportedFieldsCompanyEntityJSON struct { + Subtype apijson.Field + Type apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsCompanyEntity) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsCompanyLocations struct { + City bool `json:"city"` + Country bool `json:"country"` + Line1 bool `json:"line1"` + Line2 bool `json:"line2"` + PostalCode bool `json:"postal_code"` + State bool `json:"state"` + JSON providerAuthenticationMethodsSupportedFieldsCompanyLocationsJSON +} + +// providerAuthenticationMethodsSupportedFieldsCompanyLocationsJSON contains the +// JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsCompanyLocations] +type providerAuthenticationMethodsSupportedFieldsCompanyLocationsJSON struct { + City apijson.Field + Country apijson.Field + Line1 apijson.Field + Line2 apijson.Field + PostalCode apijson.Field + State apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsCompanyLocations) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsDirectory struct { + Individuals ProviderAuthenticationMethodsSupportedFieldsDirectoryIndividuals `json:"individuals"` + Paging ProviderAuthenticationMethodsSupportedFieldsDirectoryPaging `json:"paging"` + JSON providerAuthenticationMethodsSupportedFieldsDirectoryJSON +} + +// providerAuthenticationMethodsSupportedFieldsDirectoryJSON contains the JSON +// metadata for the struct [ProviderAuthenticationMethodsSupportedFieldsDirectory] +type providerAuthenticationMethodsSupportedFieldsDirectoryJSON struct { + Individuals apijson.Field + Paging apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsDirectory) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsDirectoryIndividuals struct { + ID bool `json:"id"` + Department interface{} `json:"department"` + FirstName bool `json:"first_name"` + IsActive bool `json:"is_active"` + LastName bool `json:"last_name"` + Manager ProviderAuthenticationMethodsSupportedFieldsDirectoryIndividualsManager `json:"manager"` + MiddleName bool `json:"middle_name"` + JSON providerAuthenticationMethodsSupportedFieldsDirectoryIndividualsJSON +} + +// providerAuthenticationMethodsSupportedFieldsDirectoryIndividualsJSON contains +// the JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsDirectoryIndividuals] +type providerAuthenticationMethodsSupportedFieldsDirectoryIndividualsJSON struct { + ID apijson.Field + Department apijson.Field + FirstName apijson.Field + IsActive apijson.Field + LastName apijson.Field + Manager apijson.Field + MiddleName apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsDirectoryIndividuals) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsDirectoryIndividualsManager struct { + ID bool `json:"id"` + JSON providerAuthenticationMethodsSupportedFieldsDirectoryIndividualsManagerJSON +} + +// providerAuthenticationMethodsSupportedFieldsDirectoryIndividualsManagerJSON +// contains the JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsDirectoryIndividualsManager] +type providerAuthenticationMethodsSupportedFieldsDirectoryIndividualsManagerJSON struct { + ID apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsDirectoryIndividualsManager) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsDirectoryPaging struct { + Count bool `json:"count"` + Offset bool `json:"offset"` + JSON providerAuthenticationMethodsSupportedFieldsDirectoryPagingJSON +} + +// providerAuthenticationMethodsSupportedFieldsDirectoryPagingJSON contains the +// JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsDirectoryPaging] +type providerAuthenticationMethodsSupportedFieldsDirectoryPagingJSON struct { + Count apijson.Field + Offset apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsDirectoryPaging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsEmployment struct { + ID bool `json:"id"` + ClassCode bool `json:"class_code"` + CustomFields bool `json:"custom_fields"` + Department ProviderAuthenticationMethodsSupportedFieldsEmploymentDepartment `json:"department"` + Employment ProviderAuthenticationMethodsSupportedFieldsEmploymentEmployment `json:"employment"` + EndDate bool `json:"end_date"` + FirstName bool `json:"first_name"` + Income ProviderAuthenticationMethodsSupportedFieldsEmploymentIncome `json:"income"` + IncomeHistory bool `json:"income_history"` + IsActive bool `json:"is_active"` + LastName bool `json:"last_name"` + Location ProviderAuthenticationMethodsSupportedFieldsEmploymentLocation `json:"location"` + Manager interface{} `json:"manager"` + MiddleName bool `json:"middle_name"` + StartDate bool `json:"start_date"` + Title bool `json:"title"` + JSON providerAuthenticationMethodsSupportedFieldsEmploymentJSON +} + +// providerAuthenticationMethodsSupportedFieldsEmploymentJSON contains the JSON +// metadata for the struct [ProviderAuthenticationMethodsSupportedFieldsEmployment] +type providerAuthenticationMethodsSupportedFieldsEmploymentJSON struct { + ID apijson.Field + ClassCode apijson.Field + CustomFields apijson.Field + Department apijson.Field + Employment apijson.Field + EndDate apijson.Field + FirstName apijson.Field + Income apijson.Field + IncomeHistory apijson.Field + IsActive apijson.Field + LastName apijson.Field + Location apijson.Field + Manager apijson.Field + MiddleName apijson.Field + StartDate apijson.Field + Title apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsEmployment) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsEmploymentDepartment struct { + Name bool `json:"name"` + JSON providerAuthenticationMethodsSupportedFieldsEmploymentDepartmentJSON +} + +// providerAuthenticationMethodsSupportedFieldsEmploymentDepartmentJSON contains +// the JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsEmploymentDepartment] +type providerAuthenticationMethodsSupportedFieldsEmploymentDepartmentJSON struct { + Name apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsEmploymentDepartment) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsEmploymentEmployment struct { + Subtype bool `json:"subtype"` + Type bool `json:"type"` + JSON providerAuthenticationMethodsSupportedFieldsEmploymentEmploymentJSON +} + +// providerAuthenticationMethodsSupportedFieldsEmploymentEmploymentJSON contains +// the JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsEmploymentEmployment] +type providerAuthenticationMethodsSupportedFieldsEmploymentEmploymentJSON struct { + Subtype apijson.Field + Type apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsEmploymentEmployment) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } + +type ProviderAuthenticationMethodsSupportedFieldsEmploymentIncome struct { + Amount bool `json:"amount"` + Currency bool `json:"currency"` + Unit bool `json:"unit"` + JSON providerAuthenticationMethodsSupportedFieldsEmploymentIncomeJSON +} + +// providerAuthenticationMethodsSupportedFieldsEmploymentIncomeJSON contains the +// JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsEmploymentIncome] +type providerAuthenticationMethodsSupportedFieldsEmploymentIncomeJSON struct { + Amount apijson.Field + Currency apijson.Field + Unit apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsEmploymentIncome) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsEmploymentLocation struct { + City bool `json:"city"` + Country bool `json:"country"` + Line1 bool `json:"line1"` + Line2 bool `json:"line2"` + PostalCode bool `json:"postal_code"` + State bool `json:"state"` + JSON providerAuthenticationMethodsSupportedFieldsEmploymentLocationJSON +} + +// providerAuthenticationMethodsSupportedFieldsEmploymentLocationJSON contains the +// JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsEmploymentLocation] +type providerAuthenticationMethodsSupportedFieldsEmploymentLocationJSON struct { + City apijson.Field + Country apijson.Field + Line1 apijson.Field + Line2 apijson.Field + PostalCode apijson.Field + State apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsEmploymentLocation) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsIndividual struct { + ID bool `json:"id"` + Dob bool `json:"dob"` + Emails ProviderAuthenticationMethodsSupportedFieldsIndividualEmails `json:"emails"` + Ethnicity bool `json:"ethnicity"` + FirstName bool `json:"first_name"` + Gender bool `json:"gender"` + LastName bool `json:"last_name"` + MiddleName bool `json:"middle_name"` + PhoneNumbers ProviderAuthenticationMethodsSupportedFieldsIndividualPhoneNumbers `json:"phone_numbers"` + PreferredName bool `json:"preferred_name"` + Residence ProviderAuthenticationMethodsSupportedFieldsIndividualResidence `json:"residence"` + Ssn bool `json:"ssn"` + JSON providerAuthenticationMethodsSupportedFieldsIndividualJSON +} + +// providerAuthenticationMethodsSupportedFieldsIndividualJSON contains the JSON +// metadata for the struct [ProviderAuthenticationMethodsSupportedFieldsIndividual] +type providerAuthenticationMethodsSupportedFieldsIndividualJSON struct { + ID apijson.Field + Dob apijson.Field + Emails apijson.Field + Ethnicity apijson.Field + FirstName apijson.Field + Gender apijson.Field + LastName apijson.Field + MiddleName apijson.Field + PhoneNumbers apijson.Field + PreferredName apijson.Field + Residence apijson.Field + Ssn apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsIndividual) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsIndividualEmails struct { + Data bool `json:"data"` + Type bool `json:"type"` + JSON providerAuthenticationMethodsSupportedFieldsIndividualEmailsJSON +} + +// providerAuthenticationMethodsSupportedFieldsIndividualEmailsJSON contains the +// JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsIndividualEmails] +type providerAuthenticationMethodsSupportedFieldsIndividualEmailsJSON struct { + Data apijson.Field + Type apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsIndividualEmails) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsIndividualPhoneNumbers struct { + Data bool `json:"data"` + Type bool `json:"type"` + JSON providerAuthenticationMethodsSupportedFieldsIndividualPhoneNumbersJSON +} + +// providerAuthenticationMethodsSupportedFieldsIndividualPhoneNumbersJSON contains +// the JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsIndividualPhoneNumbers] +type providerAuthenticationMethodsSupportedFieldsIndividualPhoneNumbersJSON struct { + Data apijson.Field + Type apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsIndividualPhoneNumbers) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsIndividualResidence struct { + City bool `json:"city"` + Country bool `json:"country"` + Line1 bool `json:"line1"` + Line2 bool `json:"line2"` + PostalCode bool `json:"postal_code"` + State bool `json:"state"` + JSON providerAuthenticationMethodsSupportedFieldsIndividualResidenceJSON +} + +// providerAuthenticationMethodsSupportedFieldsIndividualResidenceJSON contains the +// JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsIndividualResidence] +type providerAuthenticationMethodsSupportedFieldsIndividualResidenceJSON struct { + City apijson.Field + Country apijson.Field + Line1 apijson.Field + Line2 apijson.Field + PostalCode apijson.Field + State apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsIndividualResidence) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsPayStatement struct { + Paging ProviderAuthenticationMethodsSupportedFieldsPayStatementPaging `json:"paging"` + PayStatements ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatements `json:"pay_statements"` + JSON providerAuthenticationMethodsSupportedFieldsPayStatementJSON +} + +// providerAuthenticationMethodsSupportedFieldsPayStatementJSON contains the JSON +// metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsPayStatement] +type providerAuthenticationMethodsSupportedFieldsPayStatementJSON struct { + Paging apijson.Field + PayStatements apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsPayStatement) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsPayStatementPaging struct { + Count bool `json:"count,required"` + Offset bool `json:"offset,required"` + JSON providerAuthenticationMethodsSupportedFieldsPayStatementPagingJSON +} + +// providerAuthenticationMethodsSupportedFieldsPayStatementPagingJSON contains the +// JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsPayStatementPaging] +type providerAuthenticationMethodsSupportedFieldsPayStatementPagingJSON struct { + Count apijson.Field + Offset apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsPayStatementPaging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatements struct { + Earnings ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEarnings `json:"earnings"` + EmployeeDeductions ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEmployeeDeductions `json:"employee_deductions"` + EmployerDeductions ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEmployerDeductions `json:"employer_deductions"` + GrossPay bool `json:"gross_pay"` + IndividualID bool `json:"individual_id"` + NetPay bool `json:"net_pay"` + PaymentMethod bool `json:"payment_method"` + Taxes ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsTaxes `json:"taxes"` + TotalHours bool `json:"total_hours"` + Type bool `json:"type"` + JSON providerAuthenticationMethodsSupportedFieldsPayStatementPayStatementsJSON +} + +// providerAuthenticationMethodsSupportedFieldsPayStatementPayStatementsJSON +// contains the JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatements] +type providerAuthenticationMethodsSupportedFieldsPayStatementPayStatementsJSON struct { + Earnings apijson.Field + EmployeeDeductions apijson.Field + EmployerDeductions apijson.Field + GrossPay apijson.Field + IndividualID apijson.Field + NetPay apijson.Field + PaymentMethod apijson.Field + Taxes apijson.Field + TotalHours apijson.Field + Type apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatements) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEarnings struct { + Amount bool `json:"amount"` + Currency bool `json:"currency"` + Name bool `json:"name"` + Type bool `json:"type"` + JSON providerAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEarningsJSON +} + +// providerAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEarningsJSON +// contains the JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEarnings] +type providerAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEarningsJSON struct { + Amount apijson.Field + Currency apijson.Field + Name apijson.Field + Type apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEarnings) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEmployeeDeductions struct { + Amount bool `json:"amount"` + Currency bool `json:"currency"` + Name bool `json:"name"` + PreTax bool `json:"pre_tax"` + Type bool `json:"type"` + JSON providerAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEmployeeDeductionsJSON +} + +// providerAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEmployeeDeductionsJSON +// contains the JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEmployeeDeductions] +type providerAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEmployeeDeductionsJSON struct { + Amount apijson.Field + Currency apijson.Field + Name apijson.Field + PreTax apijson.Field + Type apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEmployeeDeductions) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEmployerDeductions struct { + Amount bool `json:"amount"` + Currency bool `json:"currency"` + Name bool `json:"name"` + JSON providerAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEmployerDeductionsJSON +} + +// providerAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEmployerDeductionsJSON +// contains the JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEmployerDeductions] +type providerAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEmployerDeductionsJSON struct { + Amount apijson.Field + Currency apijson.Field + Name apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsEmployerDeductions) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsTaxes struct { + Amount bool `json:"amount"` + Currency bool `json:"currency"` + Employer bool `json:"employer"` + Name bool `json:"name"` + Type bool `json:"type"` + JSON providerAuthenticationMethodsSupportedFieldsPayStatementPayStatementsTaxesJSON +} + +// providerAuthenticationMethodsSupportedFieldsPayStatementPayStatementsTaxesJSON +// contains the JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsTaxes] +type providerAuthenticationMethodsSupportedFieldsPayStatementPayStatementsTaxesJSON struct { + Amount apijson.Field + Currency apijson.Field + Employer apijson.Field + Name apijson.Field + Type apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsPayStatementPayStatementsTaxes) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsPayment struct { + ID bool `json:"id"` + CompanyDebit bool `json:"company_debit"` + DebitDate bool `json:"debit_date"` + EmployeeTaxes bool `json:"employee_taxes"` + EmployerTaxes bool `json:"employer_taxes"` + GrossPay bool `json:"gross_pay"` + IndividualIDs bool `json:"individual_ids"` + NetPay bool `json:"net_pay"` + PayDate bool `json:"pay_date"` + PayPeriod ProviderAuthenticationMethodsSupportedFieldsPaymentPayPeriod `json:"pay_period"` + JSON providerAuthenticationMethodsSupportedFieldsPaymentJSON +} + +// providerAuthenticationMethodsSupportedFieldsPaymentJSON contains the JSON +// metadata for the struct [ProviderAuthenticationMethodsSupportedFieldsPayment] +type providerAuthenticationMethodsSupportedFieldsPaymentJSON struct { + ID apijson.Field + CompanyDebit apijson.Field + DebitDate apijson.Field + EmployeeTaxes apijson.Field + EmployerTaxes apijson.Field + GrossPay apijson.Field + IndividualIDs apijson.Field + NetPay apijson.Field + PayDate apijson.Field + PayPeriod apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsPayment) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +type ProviderAuthenticationMethodsSupportedFieldsPaymentPayPeriod struct { + EndDate bool `json:"end_date"` + StartDate bool `json:"start_date"` + JSON providerAuthenticationMethodsSupportedFieldsPaymentPayPeriodJSON +} + +// providerAuthenticationMethodsSupportedFieldsPaymentPayPeriodJSON contains the +// JSON metadata for the struct +// [ProviderAuthenticationMethodsSupportedFieldsPaymentPayPeriod] +type providerAuthenticationMethodsSupportedFieldsPaymentPayPeriodJSON struct { + EndDate apijson.Field + StartDate apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *ProviderAuthenticationMethodsSupportedFieldsPaymentPayPeriod) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +// The type of authentication method. +type ProviderAuthenticationMethodsType string + +const ( + ProviderAuthenticationMethodsTypeAssisted ProviderAuthenticationMethodsType = "assisted" + ProviderAuthenticationMethodsTypeCredential ProviderAuthenticationMethodsType = "credential" + ProviderAuthenticationMethodsTypeAPIToken ProviderAuthenticationMethodsType = "api_token" + ProviderAuthenticationMethodsTypeOauth ProviderAuthenticationMethodsType = "oauth" +)