-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathfinancialaccountcreditconfiguration.go
146 lines (127 loc) · 6.33 KB
/
financialaccountcreditconfiguration.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
package lithic
import (
"context"
"errors"
"fmt"
"net/http"
"github.com/lithic-com/lithic-go/internal/apijson"
"github.com/lithic-com/lithic-go/internal/param"
"github.com/lithic-com/lithic-go/internal/requestconfig"
"github.com/lithic-com/lithic-go/option"
)
// FinancialAccountCreditConfigurationService contains methods and other services
// that help with interacting with the lithic 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 [NewFinancialAccountCreditConfigurationService] method instead.
type FinancialAccountCreditConfigurationService struct {
Options []option.RequestOption
}
// NewFinancialAccountCreditConfigurationService 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 NewFinancialAccountCreditConfigurationService(opts ...option.RequestOption) (r *FinancialAccountCreditConfigurationService) {
r = &FinancialAccountCreditConfigurationService{}
r.Options = opts
return
}
// Get an Account's credit configuration
func (r *FinancialAccountCreditConfigurationService) Get(ctx context.Context, financialAccountToken string, opts ...option.RequestOption) (res *FinancialAccountCreditConfig, err error) {
opts = append(r.Options[:], opts...)
if financialAccountToken == "" {
err = errors.New("missing required financial_account_token parameter")
return
}
path := fmt.Sprintf("v1/financial_accounts/%s/credit_configuration", financialAccountToken)
err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
return
}
// Update an account's credit configuration
func (r *FinancialAccountCreditConfigurationService) Update(ctx context.Context, financialAccountToken string, body FinancialAccountCreditConfigurationUpdateParams, opts ...option.RequestOption) (res *FinancialAccountCreditConfig, err error) {
opts = append(r.Options[:], opts...)
if financialAccountToken == "" {
err = errors.New("missing required financial_account_token parameter")
return
}
path := fmt.Sprintf("v1/financial_accounts/%s/credit_configuration", financialAccountToken)
err = requestconfig.ExecuteNewRequest(ctx, http.MethodPatch, path, body, &res, opts...)
return
}
type FinancialAccountCreditConfig struct {
// Globally unique identifier for the account
AccountToken string `json:"account_token,required" format:"uuid"`
// Reason for the financial account being marked as Charged Off
ChargedOffReason FinancialAccountCreditConfigChargedOffReason `json:"charged_off_reason,required,nullable"`
CreditLimit int64 `json:"credit_limit,required,nullable"`
// Globally unique identifier for the credit product
CreditProductToken string `json:"credit_product_token,required,nullable"`
ExternalBankAccountToken string `json:"external_bank_account_token,required,nullable" format:"uuid"`
// State of the financial account
FinancialAccountState FinancialAccountCreditConfigFinancialAccountState `json:"financial_account_state,required"`
IsSpendBlocked bool `json:"is_spend_blocked,required"`
// Tier assigned to the financial account
Tier string `json:"tier,required,nullable"`
JSON financialAccountCreditConfigJSON `json:"-"`
}
// financialAccountCreditConfigJSON contains the JSON metadata for the struct
// [FinancialAccountCreditConfig]
type financialAccountCreditConfigJSON struct {
AccountToken apijson.Field
ChargedOffReason apijson.Field
CreditLimit apijson.Field
CreditProductToken apijson.Field
ExternalBankAccountToken apijson.Field
FinancialAccountState apijson.Field
IsSpendBlocked apijson.Field
Tier apijson.Field
raw string
ExtraFields map[string]apijson.Field
}
func (r *FinancialAccountCreditConfig) UnmarshalJSON(data []byte) (err error) {
return apijson.UnmarshalRoot(data, r)
}
func (r financialAccountCreditConfigJSON) RawJSON() string {
return r.raw
}
// Reason for the financial account being marked as Charged Off
type FinancialAccountCreditConfigChargedOffReason string
const (
FinancialAccountCreditConfigChargedOffReasonDelinquent FinancialAccountCreditConfigChargedOffReason = "DELINQUENT"
FinancialAccountCreditConfigChargedOffReasonFraud FinancialAccountCreditConfigChargedOffReason = "FRAUD"
)
func (r FinancialAccountCreditConfigChargedOffReason) IsKnown() bool {
switch r {
case FinancialAccountCreditConfigChargedOffReasonDelinquent, FinancialAccountCreditConfigChargedOffReasonFraud:
return true
}
return false
}
// State of the financial account
type FinancialAccountCreditConfigFinancialAccountState string
const (
FinancialAccountCreditConfigFinancialAccountStatePending FinancialAccountCreditConfigFinancialAccountState = "PENDING"
FinancialAccountCreditConfigFinancialAccountStateCurrent FinancialAccountCreditConfigFinancialAccountState = "CURRENT"
FinancialAccountCreditConfigFinancialAccountStateDelinquent FinancialAccountCreditConfigFinancialAccountState = "DELINQUENT"
FinancialAccountCreditConfigFinancialAccountStateChargedOff FinancialAccountCreditConfigFinancialAccountState = "CHARGED_OFF"
)
func (r FinancialAccountCreditConfigFinancialAccountState) IsKnown() bool {
switch r {
case FinancialAccountCreditConfigFinancialAccountStatePending, FinancialAccountCreditConfigFinancialAccountStateCurrent, FinancialAccountCreditConfigFinancialAccountStateDelinquent, FinancialAccountCreditConfigFinancialAccountStateChargedOff:
return true
}
return false
}
type FinancialAccountCreditConfigurationUpdateParams struct {
CreditLimit param.Field[int64] `json:"credit_limit"`
// Globally unique identifier for the credit product
CreditProductToken param.Field[string] `json:"credit_product_token"`
ExternalBankAccountToken param.Field[string] `json:"external_bank_account_token" format:"uuid"`
// Tier to assign to a financial account
Tier param.Field[string] `json:"tier"`
}
func (r FinancialAccountCreditConfigurationUpdateParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}