1 | |
2 | type Brex = { |
3 | token: string; |
4 | }; |
5 | |
6 | * |
7 | Update Spend Limit |
8 |
|
9 | * |
10 | Updates a Spend Limit |
11 |
|
12 | */ |
13 | export async function main( |
14 | auth: Brex, |
15 | id: string, |
16 | Idempotency_Key: string, |
17 | body: { |
18 | name?: string; |
19 | description?: string; |
20 | status?: |
21 | | ("ACTIVE" & {}) |
22 | | ("EXPIRED" & {}) |
23 | | ("ARCHIVED" & {}) |
24 | | ("DELETED" & {}); |
25 | period_recurrence_type?: |
26 | | ("PER_WEEK" & {}) |
27 | | ("PER_MONTH" & {}) |
28 | | ("PER_QUARTER" & {}) |
29 | | ("PER_YEAR" & {}) |
30 | | ("ONE_TIME" & {}); |
31 | start_date?: string; |
32 | end_date?: string; |
33 | authorization_settings?: { |
34 | base_limit?: { amount: number; currency?: string } & {}; |
35 | limit_buffer_percentage?: number; |
36 | authorization_type?: ("HARD" & {}) | ("SOFT" & {}); |
37 | rollover_refresh_rate?: |
38 | | ("PER_MONTH" & {}) |
39 | | ("PER_QUARTER" & {}) |
40 | | ("PER_YEAR" & {}) |
41 | | ("OFF" & {}) |
42 | | ("NEVER" & {}); |
43 | } & {}; |
44 | expense_visibility?: ("SHARED" & {}) | ("PRIVATE" & {}); |
45 | authorization_visibility?: ("PRIVATE" & {}) | ("PUBLIC" & {}); |
46 | merchant_category_controls?: { |
47 | allowed_merchant_categories?: |
48 | | "ADVERTISING_MARKETING" |
49 | | "GROCERY" |
50 | | "TELEPHONY" |
51 | | "OFFICE_SUPPLIES" |
52 | | "PRIVATE_AIR_TRAVEL" |
53 | | "CLOTHING" |
54 | | "CAR_RENTAL" |
55 | | "VEHICLE_EXPENSES" |
56 | | "RESTAURANTS" |
57 | | "GAMBLING" |
58 | | "FLOWERS" |
59 | | "ELECTRONICS" |
60 | | "LEGAL_SERVICES" |
61 | | "UTILITIES" |
62 | | "FURNITURE" |
63 | | "BARS_NIGHTLIFE" |
64 | | "LAUNDRY" |
65 | | "EVENT_EXPENSES" |
66 | | "SHIPPING" |
67 | | "OTHER_TRAVEL_EXPENSES" |
68 | | "CHARITY" |
69 | | "SOFTWARE" |
70 | | "LODGING" |
71 | | "FACILITIES_EXPENSES" |
72 | | "SERVERS" |
73 | | "CONFERENCES" |
74 | | "FOOD_DELIVERY" |
75 | | "RENT" |
76 | | "AIRLINE_EXPENSES" |
77 | | "OTHER_BUSINESS_EXPENSES" |
78 | | "BANK_FINANCIAL_FEES" |
79 | | "BOOKS_NEWSPAPERS" |
80 | | "CONSULTANT_CONTRACTOR" |
81 | | "CORPORATE_INSURANCE" |
82 | | "DIGITAL_GOODS" |
83 | | "LICENSES_TAXES" |
84 | | "GAS_FUEL" |
85 | | "GENERAL_MERCHANDISE" |
86 | | "MEDICAL" |
87 | | "MEMBERSHIPS_CLUBS" |
88 | | "PARKING_EXPENSES" |
89 | | "POLITICAL_DONATIONS" |
90 | | "PUBLIC_TRANSPORTATION" |
91 | | "RECURRING_SOFTWARE_SAAS" |
92 | | "RIDESHARE_TAXI" |
93 | | "TOLL_BRIDGE_FEES" |
94 | | "TRAINING_EDUCATION" |
95 | | "TRAVEL"[]; |
96 | blocked_merchant_categories?: |
97 | | "ADVERTISING_MARKETING" |
98 | | "GROCERY" |
99 | | "TELEPHONY" |
100 | | "OFFICE_SUPPLIES" |
101 | | "PRIVATE_AIR_TRAVEL" |
102 | | "CLOTHING" |
103 | | "CAR_RENTAL" |
104 | | "VEHICLE_EXPENSES" |
105 | | "RESTAURANTS" |
106 | | "GAMBLING" |
107 | | "FLOWERS" |
108 | | "ELECTRONICS" |
109 | | "LEGAL_SERVICES" |
110 | | "UTILITIES" |
111 | | "FURNITURE" |
112 | | "BARS_NIGHTLIFE" |
113 | | "LAUNDRY" |
114 | | "EVENT_EXPENSES" |
115 | | "SHIPPING" |
116 | | "OTHER_TRAVEL_EXPENSES" |
117 | | "CHARITY" |
118 | | "SOFTWARE" |
119 | | "LODGING" |
120 | | "FACILITIES_EXPENSES" |
121 | | "SERVERS" |
122 | | "CONFERENCES" |
123 | | "FOOD_DELIVERY" |
124 | | "RENT" |
125 | | "AIRLINE_EXPENSES" |
126 | | "OTHER_BUSINESS_EXPENSES" |
127 | | "BANK_FINANCIAL_FEES" |
128 | | "BOOKS_NEWSPAPERS" |
129 | | "CONSULTANT_CONTRACTOR" |
130 | | "CORPORATE_INSURANCE" |
131 | | "DIGITAL_GOODS" |
132 | | "LICENSES_TAXES" |
133 | | "GAS_FUEL" |
134 | | "GENERAL_MERCHANDISE" |
135 | | "MEDICAL" |
136 | | "MEMBERSHIPS_CLUBS" |
137 | | "PARKING_EXPENSES" |
138 | | "POLITICAL_DONATIONS" |
139 | | "PUBLIC_TRANSPORTATION" |
140 | | "RECURRING_SOFTWARE_SAAS" |
141 | | "RIDESHARE_TAXI" |
142 | | "TOLL_BRIDGE_FEES" |
143 | | "TRAINING_EDUCATION" |
144 | | "TRAVEL"[]; |
145 | } & {}; |
146 | transaction_limit?: { amount: number; currency?: string } & {}; |
147 | limit_increase_setting?: ("ENABLED" & {}) | ("DISABLED" & {}); |
148 | spend_type?: |
149 | | ("BUDGET_PROVISIONED_CARDS_ONLY" & {}) |
150 | | ("NON_BUDGET_PROVISIONED_CARDS_ALLOWED" & {}); |
151 | auto_transfer_cards_setting?: ("ENABLED" & {}) | ("DISABLED" & {}); |
152 | auto_create_limit_cards_setting?: ("DISABLED" & {}) | ("ALL_MEMBERS" & {}); |
153 | owner_user_ids?: string[]; |
154 | member_user_ids?: string[]; |
155 | expense_policy_id?: string; |
156 | limit_increase_request_policy_id?: string; |
157 | limit_approval_policy_id?: string; |
158 | legal_entity_id?: string; |
159 | department_id?: string; |
160 | }, |
161 | ) { |
162 | const url = new URL(`https://platform.brexapis.com/v2/spend_limits/${id}`); |
163 |
|
164 | const response = await fetch(url, { |
165 | method: "PUT", |
166 | headers: { |
167 | "Idempotency-Key": Idempotency_Key, |
168 | "Content-Type": "application/json", |
169 | Authorization: "Bearer " + auth.token, |
170 | }, |
171 | body: JSON.stringify(body), |
172 | }); |
173 | if (!response.ok) { |
174 | const text = await response.text(); |
175 | throw new Error(`${response.status} ${text}`); |
176 | } |
177 | return await response.json(); |
178 | } |
179 |
|