@servicetitan/moneyout-api-client 1.37.0-beta.183 → 1.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -29,6 +29,14 @@ export interface ICardTransactions {
29
29
  * @sortDirection (optional) Sort direction: "asc" or "desc". Defaults to "desc".
30
30
  */
31
31
  list(tenantId: number, ids: string[] | null | undefined, vendorIds: number[] | null | undefined, jobIds: number[] | null | undefined, projectIds: number[] | null | undefined, cardholderIds: string[] | null | undefined, purchaseOrderIds: number[] | null | undefined, syncStatuses: string[] | null | undefined, transactionStatuses: string[] | null | undefined, receiptStatuses: string[] | null | undefined, dateFrom: Date | null | undefined, dateTo: Date | null | undefined, businessUnitIds: number[] | null | undefined, needsReview: boolean | null | undefined, searchTerm: string | null | undefined, page: number | undefined, pageSize: number | undefined, sortBy: string | null | undefined, sortDirection: string | null | undefined, cancelToken?: CancelToken): AxiosPromise<PagedResponseOfCardTransactionResponse>;
32
+ /**
33
+ * Get a card transaction by its canonical parent ID.
34
+ */
35
+ get(tenantId: number, cardTransactionId: string, cancelToken?: CancelToken): AxiosPromise<CardTransactionResponse>;
36
+ /**
37
+ * Get the visible expense linked to a card transaction parent ID.
38
+ */
39
+ getExpense(tenantId: number, cardTransactionId: string, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse>;
32
40
  /**
33
41
  * Reclassify a card transaction, keyed off the `card_transactions` PARENT id (not the expense
34
42
  child). Writes the target classification to the provider first, then mirrors locally. Every
@@ -71,6 +79,14 @@ export declare class CardTransactions implements ICardTransactions {
71
79
  * @sortDirection (optional) Sort direction: "asc" or "desc". Defaults to "desc".
72
80
  */
73
81
  list(tenantId: number, ids: string[] | null | undefined, vendorIds: number[] | null | undefined, jobIds: number[] | null | undefined, projectIds: number[] | null | undefined, cardholderIds: string[] | null | undefined, purchaseOrderIds: number[] | null | undefined, syncStatuses: string[] | null | undefined, transactionStatuses: string[] | null | undefined, receiptStatuses: string[] | null | undefined, dateFrom: Date | null | undefined, dateTo: Date | null | undefined, businessUnitIds: number[] | null | undefined, needsReview: boolean | null | undefined, searchTerm: string | null | undefined, page: number | undefined, pageSize: number | undefined, sortBy: string | null | undefined, sortDirection: string | null | undefined, cancelToken?: CancelToken): AxiosPromise<PagedResponseOfCardTransactionResponse>;
82
+ /**
83
+ * Get a card transaction by its canonical parent ID.
84
+ */
85
+ get(tenantId: number, cardTransactionId: string, cancelToken?: CancelToken): AxiosPromise<CardTransactionResponse>;
86
+ /**
87
+ * Get the visible expense linked to a card transaction parent ID.
88
+ */
89
+ getExpense(tenantId: number, cardTransactionId: string, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse>;
74
90
  /**
75
91
  * Reclassify a card transaction, keyed off the `card_transactions` PARENT id (not the expense
76
92
  child). Writes the target classification to the provider first, then mirrors locally. Every
@@ -174,6 +190,163 @@ currently always null pending Level-3 provider data wiring (deferred to a follow
174
190
  field: currently always null pending Level-3 provider data wiring (deferred to a follow-up ticket). */
175
191
  shipping?: number | undefined;
176
192
  }
193
+ export interface ExpenseTransactionResponse extends BaseEntityApiModel {
194
+ /** Tenant that owns this expense. */
195
+ tenantId: number;
196
+ /** Canonical card transaction ID used by Card Transactions page routes. */
197
+ cardTransactionId?: string | undefined;
198
+ /** Tenant-scoped expense transaction display number. */
199
+ number: string;
200
+ /** Free-text summary or notes for the expense. */
201
+ summary?: string | undefined;
202
+ /** The date the transaction occurred (from card statement). */
203
+ transactionDate?: Date | undefined;
204
+ /** Computed total: sum of line item amounts + tax + shipping. Negative for refunds. */
205
+ total: number;
206
+ /** True when this transaction is a refund/reversal rather than a charge. */
207
+ isRefund: boolean;
208
+ /** Provider id of the parent charge this refund reverses; null otherwise. */
209
+ parentExternalId?: string | undefined;
210
+ /** Internal MOS ExpenseId of the parent charge this refund reverses, when known; null otherwise. */
211
+ parentExpenseId?: string | undefined;
212
+ /** IDs of refund transactions that reference this expense as their parent.
213
+ Populated on GET-by-id only; null on list responses. Empty list when no refunds exist. */
214
+ refundExpenseIds?: string[] | undefined;
215
+ /** Tax portion of the total. */
216
+ tax: number;
217
+ /** Shipping portion of the total. */
218
+ shipping: number;
219
+ /** Vendor where the expense was incurred. */
220
+ vendorId: number;
221
+ /** True when VendorId was bound via an explicit merchant→vendor mapping rather than an
222
+ exact-name match, a default vendor, or left unbound. Lets the UI show "Mapped to {vendor}" beneath
223
+ the raw merchant name. Reflects the source stamped at ingest, so it stays correct after a remap. */
224
+ vendorBoundByMapping: boolean;
225
+ /** Business unit this expense is charged to. */
226
+ businessUnitId?: number | undefined;
227
+ /** Job this expense is associated with, if any. */
228
+ jobId?: number | undefined;
229
+ /** Project this expense is associated with, if any. */
230
+ projectId?: number | undefined;
231
+ /** Purchase order linked to this expense for two-way matching. */
232
+ purchaseOrderId?: number | undefined;
233
+ /** Employee (cardholder) who made the purchase. */
234
+ employeeId?: number | undefined;
235
+ /** Discriminates whether EmployeeId refers to an employee or a technician.
236
+ Non-nullable: a persisted null normalizes to Employee. */
237
+ spenderType: ExpenseSpenderType;
238
+ /** Credit card GL account (Liability:Credit Card) this expense was charged to. */
239
+ creditCardAccountId?: number | undefined;
240
+ /** Merchant processing status (e.g. Pending, Complete, Error, Declined). */
241
+ transactionStatus: string;
242
+ /** Provider-supplied context for the transaction status — e.g. decline reason, error message, or status-specific note. */
243
+ transactionStatusDetails?: string | undefined;
244
+ /** Computed field: true if essential ST-related bindings are not set for the transaction (such as VendorId, cardholder, etc). */
245
+ needsReview: boolean;
246
+ /** MOS-owned export-readiness headline (e.g. Pending, ReadyForExport, Exported). Composed by
247
+ ExpenseStatusRules; folds in NeedsReview and ProviderRequirementsMet. */
248
+ expenseStatus: string;
249
+ /** Whether the upstream card provider considers this transaction's requirements met and approved.
250
+ Tri-state: null = provider has not yet determined (never coerced to false). Distinct from
251
+ NeedsReview, which reflects ServiceTitan binding gaps rather than provider sign-off. */
252
+ providerRequirementsMet?: boolean | undefined;
253
+ /** Status of receipt documentation (e.g. Pending, Received). */
254
+ receiptStatus: string;
255
+ /** Last 4 digits of the card number. */
256
+ cardNumberLast4?: string | undefined;
257
+ /** Accounting sync/export status (e.g. Pending, Posted, Exported). */
258
+ syncStatus: string;
259
+ /** Batch this expense was posted in, if any. */
260
+ batchId?: number | undefined;
261
+ /** Identifier from the external expense provider (e.g. Ramp transaction ID). */
262
+ externalId?: string | undefined;
263
+ /** Name of the external provider (e.g. "Ramp"). */
264
+ externalSource?: string | undefined;
265
+ /** Card identifier from the external provider (e.g. Ramp card_id). */
266
+ externalCardId?: string | undefined;
267
+ /** Human-readable merchant category (e.g. "Supermarkets and grocery stores").
268
+ Provider-supplied for card-sourced expenses (e.g. Ramp's `sk_category_name`); free-text for manual entries. */
269
+ merchantCategory?: string | undefined;
270
+ /** Default debit GL account for the expense. Line items may override with their own GeneralLedgerAccountId. */
271
+ debitAccountId?: number | undefined;
272
+ /** Default budget code for the expense. Line items may override with their own BudgetCodeId. */
273
+ budgetCodeId?: number | undefined;
274
+ /** True when the debit GL account was assigned via the safe-degrade fallback (the tenant's
275
+ Uncategorized account) rather than a confident binding. Mirrors the persisted
276
+ ExpenseTransaction.DebitGlFallbackApplied and is folded into NeedsReview; surfaced so the UI
277
+ can warn that the GL account needs correcting. */
278
+ debitGlFallbackApplied: boolean;
279
+ /** True when this expense transaction originated in ServiceTitan (as opposed to being sourced
280
+ entirely from an external provider). Tri-state: null means unknown/not set. */
281
+ isStExpense?: boolean | undefined;
282
+ /** ServiceTitan-internal reference number for this expense, when it originated in ST. Null for
283
+ provider-sourced transactions. A blank value on an ST expense is folded into NeedsReview;
284
+ surfaced so the UI can explain the review reason. */
285
+ stReferenceNumber?: string | undefined;
286
+ /** Denormalized project label(s) for display/export. */
287
+ projectLabels?: string | undefined;
288
+ /** Provider-reported (external) values, captured verbatim before ServiceTitan resolution. Surfaced
289
+ so a "needs review" expense whose merchant/cardholder did not resolve to a ServiceTitan
290
+ vendor/employee can show what the provider sent. Null when no provider details are recorded. */
291
+ externalDetails?: ExpenseTransactionExternalDetailsResponse;
292
+ /** Line items with expense GL accounts. */
293
+ lineItems: ExpenseTransactionLineItemResponse[];
294
+ /** Receipt attachments. File content is in Azure Blob Storage; these are metadata records. */
295
+ attachments: ExpenseAttachmentResponse[];
296
+ }
297
+ /** Discriminates who an expense's spender-identity columns (`EmployeeId`/`EmployeeName`) refer to — the same monolith employee/technician id space that ExpenseTransaction has always stored, now disambiguated so name resolution can route to the right Public API surface. Employee = 0 / Technician = 1 are wire values, pinned because three repos decode them positionally — MOS, the monolith, and any future consumer of the outbound event. Renumbering or reordering the members is a breaking change caught only by ExpenseSpenderTypeContractTests (UNIT-105). Declare new members with an explicit value, at the end, never renumbering an existing one. null on the entity's SpenderType column reads as — which is exactly why Employee = 0 must stay pinned at zero: every pre-existing row and every pre-upgrade event has no value here, and the absent-means-Employee default depends on zero being that value. Realigning to match the monolith's ordering would trade a mappable hazard for a silent data-wide default inversion. Never cast to or from a monolith EmployeeType. The monolith declares 15 same-named EmployeeType enums, and Model/Timesheets/EmployeeType is the mirror image of this one (Technician = 0, Employee = 1). An (int) bridge compiles cleanly and silently inverts the tag, mistagging a financial record with no error anywhere. Map member-by-member, by name, if a bridge is ever needed. */
298
+ export declare enum ExpenseSpenderType {
299
+ Employee = 0,
300
+ Technician = 1
301
+ }
302
+ /** Provider-reported (external) values for an expense transaction, captured verbatim as the card provider sent them. Present so a "needs review" expense whose merchant/cardholder did not resolve to a ServiceTitan vendor/employee can surface what the provider sent (with a not-found-in-ServiceTitan indicator) instead of a blank. Null when no provider details are recorded. */
303
+ export interface ExpenseTransactionExternalDetailsResponse {
304
+ /** Merchant name as reported by the provider. */
305
+ merchantName?: string | undefined;
306
+ /** Cardholder display name as reported by the provider. */
307
+ cardholderName?: string | undefined;
308
+ /** Cardholder email as reported by the provider. */
309
+ cardholderEmail?: string | undefined;
310
+ /** Provider's own identifier for the cardholder. */
311
+ cardholderUserId?: string | undefined;
312
+ /** Human-readable GL account name the provider coded on the transaction header. */
313
+ glAccountName?: string | undefined;
314
+ /** GL account identifier the provider coded on the transaction header. */
315
+ glAccountId?: string | undefined;
316
+ }
317
+ export interface ExpenseTransactionLineItemResponse extends BaseEntityApiModel {
318
+ /** Description of the line item. */
319
+ description: string;
320
+ /** Total dollar amount for this line item (Quantity × UnitPrice). */
321
+ amount: number;
322
+ /** Number of units purchased. */
323
+ quantity: number;
324
+ /** Dollar amount per unit. */
325
+ unitPrice: number;
326
+ /** Optional debit GL account override at the line level (defaults to header DebitAccountId if null). */
327
+ generalLedgerAccountId?: number | undefined;
328
+ /** Optional job override at the line level (defaults to header job if null). */
329
+ jobId?: number | undefined;
330
+ /** Optional project override at the line level (defaults to header project if null). */
331
+ projectId?: number | undefined;
332
+ /** Optional business unit override at the line level (defaults to header BU if null). */
333
+ businessUnitId?: number | undefined;
334
+ /** Optional budget code override at the line level (defaults to header BudgetCodeId if null). */
335
+ budgetCodeId?: number | undefined;
336
+ /** Denormalized project label for this line item. */
337
+ projectLabels?: string | undefined;
338
+ }
339
+ /** Metadata information for an expense attachment (receipt). Not the actual file. */
340
+ export interface ExpenseAttachmentResponse extends BaseEntityApiModel {
341
+ /** Sanitized file name for display and download. */
342
+ filename: string;
343
+ /** Original file name as uploaded by the user. */
344
+ originalFilename: string;
345
+ /** MIME content type. */
346
+ contentType: string;
347
+ /** File size in bytes. */
348
+ fileSize: number;
349
+ }
177
350
  /** Body of `PATCH /v1/tenant/{tenantId}/card-transactions/{cardTransactionId}/classification`. Classification is a string parsed at the boundary (an unknown/out-of-enum value is a coded 400, not a bind failure), so the request contract is final across all phases — every named classification is a valid target from phase 1, even when its local behaviour lands in a later phase. JobNumber/ProjectNumber name the target for a Job/Project reclassify and are unused for the other targets. */
178
351
  export interface ReclassifyCardTransactionRequest {
179
352
  /** The target classification: `NotStExpense`, `Job`, `Project`, `NotSet`, or
@@ -1 +1 @@
1
- {"version":3,"file":"card-transactions.api.d.ts","sourceRoot":"","sources":["../src/card-transactions.api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"card-transactions.api.d.ts","sourceRoot":"","sources":["../src/card-transactions.api.ts"],"names":[],"mappings":"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"}
@@ -120,6 +120,48 @@ export class CardTransactions {
120
120
  };
121
121
  return makeCodedException(axios.request(options_));
122
122
  }
123
+ /**
124
+ * Get a card transaction by its canonical parent ID.
125
+ */ get(tenantId, cardTransactionId, cancelToken) {
126
+ let url_ = "/v1/tenant/{tenantId}/card-transactions/{cardTransactionId}";
127
+ if (tenantId === undefined || tenantId === null) throw new Error("The parameter 'tenantId' must be defined.");
128
+ url_ = url_.replace("{tenantId}", encodeURIComponent("" + tenantId));
129
+ if (cardTransactionId === undefined || cardTransactionId === null) throw new Error("The parameter 'cardTransactionId' must be defined.");
130
+ url_ = url_.replace("{cardTransactionId}", encodeURIComponent("" + cardTransactionId));
131
+ url_ = url_.replace(/[?&]$/, "");
132
+ let options_ = {
133
+ baseURL: this.baseUrl,
134
+ cancelToken,
135
+ url: url_,
136
+ method: "GET",
137
+ headers: {
138
+ "Content-Type": "application/json",
139
+ "Accept": "application/json"
140
+ }
141
+ };
142
+ return makeCodedException(axios.request(options_));
143
+ }
144
+ /**
145
+ * Get the visible expense linked to a card transaction parent ID.
146
+ */ getExpense(tenantId, cardTransactionId, cancelToken) {
147
+ let url_ = "/v1/tenant/{tenantId}/card-transactions/{cardTransactionId}/expense";
148
+ if (tenantId === undefined || tenantId === null) throw new Error("The parameter 'tenantId' must be defined.");
149
+ url_ = url_.replace("{tenantId}", encodeURIComponent("" + tenantId));
150
+ if (cardTransactionId === undefined || cardTransactionId === null) throw new Error("The parameter 'cardTransactionId' must be defined.");
151
+ url_ = url_.replace("{cardTransactionId}", encodeURIComponent("" + cardTransactionId));
152
+ url_ = url_.replace(/[?&]$/, "");
153
+ let options_ = {
154
+ baseURL: this.baseUrl,
155
+ cancelToken,
156
+ url: url_,
157
+ method: "GET",
158
+ headers: {
159
+ "Content-Type": "application/json",
160
+ "Accept": "application/json"
161
+ }
162
+ };
163
+ return makeCodedException(axios.request(options_));
164
+ }
123
165
  /**
124
166
  * Reclassify a card transaction, keyed off the `card_transactions` PARENT id (not the expense
125
167
  child). Writes the target classification to the provider first, then mirrors locally. Every
@@ -161,5 +203,10 @@ CardTransactions = _ts_decorate([
161
203
  void 0
162
204
  ])
163
205
  ], CardTransactions);
206
+ /** Discriminates who an expense's spender-identity columns (`EmployeeId`/`EmployeeName`) refer to — the same monolith employee/technician id space that ExpenseTransaction has always stored, now disambiguated so name resolution can route to the right Public API surface. Employee = 0 / Technician = 1 are wire values, pinned because three repos decode them positionally — MOS, the monolith, and any future consumer of the outbound event. Renumbering or reordering the members is a breaking change caught only by ExpenseSpenderTypeContractTests (UNIT-105). Declare new members with an explicit value, at the end, never renumbering an existing one. null on the entity's SpenderType column reads as — which is exactly why Employee = 0 must stay pinned at zero: every pre-existing row and every pre-upgrade event has no value here, and the absent-means-Employee default depends on zero being that value. Realigning to match the monolith's ordering would trade a mappable hazard for a silent data-wide default inversion. Never cast to or from a monolith EmployeeType. The monolith declares 15 same-named EmployeeType enums, and Model/Timesheets/EmployeeType is the mirror image of this one (Technician = 0, Employee = 1). An (int) bridge compiles cleanly and silently inverts the tag, mistagging a financial record with no error anywhere. Map member-by-member, by name, if a bridge is ever needed. */ export var ExpenseSpenderType = /*#__PURE__*/ function(ExpenseSpenderType) {
207
+ ExpenseSpenderType[ExpenseSpenderType["Employee"] = 0] = "Employee";
208
+ ExpenseSpenderType[ExpenseSpenderType["Technician"] = 1] = "Technician";
209
+ return ExpenseSpenderType;
210
+ }({});
164
211
 
165
212
  //# sourceMappingURL=card-transactions.api.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/card-transactions.api.ts"],"sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n//----------------------\n// <auto-generated>\n// Generated with ApiClientGenerator, using the NSwag toolchain\n// </auto-generated>\n//----------------------\n// ReSharper disable InconsistentNaming\n\nimport axios, { AxiosRequestConfig, AxiosPromise, CancelToken } from 'axios';\nimport { injectable, inject, optional, symbolToken } from '@servicetitan/react-ioc';\nimport { makeCodedException, makeContent } from './utils';\n// @ts-ignore: needed for Date serialization if a DateTime parameter has an Unspecified attribute on it\nimport moment from 'moment';\n\nexport interface ICardTransactions {\n /**\n * List card transactions with optional filters.\n * @ids (optional) Filter by row id — the `card_transactions` parent's own id (the id every row in this\n endpoint's response carries), not the linked expense transaction's id.\n * @vendorIds (optional) Filter by vendor IDs. Matches Expense rows only; never matches BillPayment rows.\n * @jobIds (optional) Filter by job IDs. Matches Expense rows only.\n * @projectIds (optional) Filter by project IDs. Matches Expense rows only.\n * @cardholderIds (optional) Filter by cardholder directory IDs. Matches Expense rows only. An unknown, foreign, or retired\n id matches nothing (no existence check) — same behavior as Ids.\n * @purchaseOrderIds (optional) Filter by purchase order IDs. Matches Expense rows only; never matches BillPayment rows (no\n linked purchase order to compare against). An unknown, foreign, or retired id matches nothing\n (no existence check).\n * @syncStatuses (optional) Filter by sync statuses (e.g. \"Pending\", \"Posted\", \"Exported\"). Matches Expense rows only.\n * @transactionStatuses (optional) Filter by transaction statuses (e.g. \"Pending\", \"Complete\", \"Declined\"). Matches Expense rows only.\n * @receiptStatuses (optional) Filter by receipt statuses (e.g. \"Missing\", \"Attached\", \"Verified\"). Matches Expense rows only.\n * @dateFrom (optional) Filter by transaction date (inclusive start).\n * @dateTo (optional) Filter by transaction date (inclusive end).\n * @businessUnitIds (optional) Filter by business unit IDs. Matches Expense rows only.\n * @needsReview (optional) Filter by review state. Matches Expense rows only; see NeedsReview for the tri-state semantics this mirrors.\n * @searchTerm (optional) Case-insensitive substring search across the raw merchant/cardholder name (every row) and — for\n Expense rows only — vendor name, job/project number (`StReferenceNumber`), and PO number.\n Trimmed before matching; empty or whitespace-only is treated as omitted. Composes conjunctively\n with every other filter on this request.\n * @page (optional) Page number (1-based). Defaults to 1.\n * @pageSize (optional) Number of items per page. Defaults to 50.\n * @sortBy (optional) Property name to sort by (e.g. \"transactionDate\", \"total\"). Defaults to \"transactionDate\".\n * @sortDirection (optional) Sort direction: \"asc\" or \"desc\". Defaults to \"desc\".\n */\n list(tenantId: number, ids: string[] | null | undefined, vendorIds: number[] | null | undefined, jobIds: number[] | null | undefined, projectIds: number[] | null | undefined, cardholderIds: string[] | null | undefined, purchaseOrderIds: number[] | null | undefined, syncStatuses: string[] | null | undefined, transactionStatuses: string[] | null | undefined, receiptStatuses: string[] | null | undefined, dateFrom: Date | null | undefined, dateTo: Date | null | undefined, businessUnitIds: number[] | null | undefined, needsReview: boolean | null | undefined, searchTerm: string | null | undefined, page: number | undefined, pageSize: number | undefined, sortBy: string | null | undefined, sortDirection: string | null | undefined, cancelToken?: CancelToken): AxiosPromise<PagedResponseOfCardTransactionResponse>;\n /**\n * Reclassify a card transaction, keyed off the `card_transactions` PARENT id (not the expense\n child). Writes the target classification to the provider first, then mirrors locally. Every\n MOS-side refusal is a 400/404/409; a 400 carries a machine-readable `code`, so a code-less 400\n on this route is adapter-origin (ARCH-EXP-RECLASS-001, seam-reclassify-endpoint).\n */\n reclassify(tenantId: number, cardTransactionId: string, request: ReclassifyCardTransactionRequest, cancelToken?: CancelToken): AxiosPromise<void>;\n}\n\nexport const BASE_URL_TOKEN_CardTransactions = symbolToken<string>('BASE_URL_TOKEN', false);\n\n@injectable()\nexport class CardTransactions implements ICardTransactions {\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@inject(BASE_URL_TOKEN_CardTransactions) @optional() private readonly baseUrl = \"\") {\n }\n\n /**\n * List card transactions with optional filters.\n * @ids (optional) Filter by row id — the `card_transactions` parent's own id (the id every row in this\n endpoint's response carries), not the linked expense transaction's id.\n * @vendorIds (optional) Filter by vendor IDs. Matches Expense rows only; never matches BillPayment rows.\n * @jobIds (optional) Filter by job IDs. Matches Expense rows only.\n * @projectIds (optional) Filter by project IDs. Matches Expense rows only.\n * @cardholderIds (optional) Filter by cardholder directory IDs. Matches Expense rows only. An unknown, foreign, or retired\n id matches nothing (no existence check) — same behavior as Ids.\n * @purchaseOrderIds (optional) Filter by purchase order IDs. Matches Expense rows only; never matches BillPayment rows (no\n linked purchase order to compare against). An unknown, foreign, or retired id matches nothing\n (no existence check).\n * @syncStatuses (optional) Filter by sync statuses (e.g. \"Pending\", \"Posted\", \"Exported\"). Matches Expense rows only.\n * @transactionStatuses (optional) Filter by transaction statuses (e.g. \"Pending\", \"Complete\", \"Declined\"). Matches Expense rows only.\n * @receiptStatuses (optional) Filter by receipt statuses (e.g. \"Missing\", \"Attached\", \"Verified\"). Matches Expense rows only.\n * @dateFrom (optional) Filter by transaction date (inclusive start).\n * @dateTo (optional) Filter by transaction date (inclusive end).\n * @businessUnitIds (optional) Filter by business unit IDs. Matches Expense rows only.\n * @needsReview (optional) Filter by review state. Matches Expense rows only; see NeedsReview for the tri-state semantics this mirrors.\n * @searchTerm (optional) Case-insensitive substring search across the raw merchant/cardholder name (every row) and — for\n Expense rows only — vendor name, job/project number (`StReferenceNumber`), and PO number.\n Trimmed before matching; empty or whitespace-only is treated as omitted. Composes conjunctively\n with every other filter on this request.\n * @page (optional) Page number (1-based). Defaults to 1.\n * @pageSize (optional) Number of items per page. Defaults to 50.\n * @sortBy (optional) Property name to sort by (e.g. \"transactionDate\", \"total\"). Defaults to \"transactionDate\".\n * @sortDirection (optional) Sort direction: \"asc\" or \"desc\". Defaults to \"desc\".\n */\n list(tenantId: number, ids: string[] | null | undefined, vendorIds: number[] | null | undefined, jobIds: number[] | null | undefined, projectIds: number[] | null | undefined, cardholderIds: string[] | null | undefined, purchaseOrderIds: number[] | null | undefined, syncStatuses: string[] | null | undefined, transactionStatuses: string[] | null | undefined, receiptStatuses: string[] | null | undefined, dateFrom: Date | null | undefined, dateTo: Date | null | undefined, businessUnitIds: number[] | null | undefined, needsReview: boolean | null | undefined, searchTerm: string | null | undefined, page: number | undefined, pageSize: number | undefined, sortBy: string | null | undefined, sortDirection: string | null | undefined, cancelToken?: CancelToken): AxiosPromise<PagedResponseOfCardTransactionResponse> {\n let url_ = \"/v1/tenant/{tenantId}/card-transactions?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (ids !== undefined && ids !== null)\n ids && ids.forEach(item => { url_ += \"ids=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (vendorIds !== undefined && vendorIds !== null)\n vendorIds && vendorIds.forEach(item => { url_ += \"vendorIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (jobIds !== undefined && jobIds !== null)\n jobIds && jobIds.forEach(item => { url_ += \"jobIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (projectIds !== undefined && projectIds !== null)\n projectIds && projectIds.forEach(item => { url_ += \"projectIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (cardholderIds !== undefined && cardholderIds !== null)\n cardholderIds && cardholderIds.forEach(item => { url_ += \"cardholderIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (purchaseOrderIds !== undefined && purchaseOrderIds !== null)\n purchaseOrderIds && purchaseOrderIds.forEach(item => { url_ += \"purchaseOrderIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (syncStatuses !== undefined && syncStatuses !== null)\n syncStatuses && syncStatuses.forEach(item => { url_ += \"syncStatuses=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (transactionStatuses !== undefined && transactionStatuses !== null)\n transactionStatuses && transactionStatuses.forEach(item => { url_ += \"transactionStatuses=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (receiptStatuses !== undefined && receiptStatuses !== null)\n receiptStatuses && receiptStatuses.forEach(item => { url_ += \"receiptStatuses=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (dateFrom !== undefined && dateFrom !== null)\n url_ += \"dateFrom=\" + encodeURIComponent(dateFrom ? \"\" + dateFrom.toJSON() : \"\") + \"&\";\n if (dateTo !== undefined && dateTo !== null)\n url_ += \"dateTo=\" + encodeURIComponent(dateTo ? \"\" + dateTo.toJSON() : \"\") + \"&\";\n if (businessUnitIds !== undefined && businessUnitIds !== null)\n businessUnitIds && businessUnitIds.forEach(item => { url_ += \"businessUnitIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (needsReview !== undefined && needsReview !== null)\n url_ += \"needsReview=\" + encodeURIComponent(\"\" + needsReview) + \"&\";\n if (searchTerm !== undefined && searchTerm !== null)\n url_ += \"searchTerm=\" + encodeURIComponent(\"\" + searchTerm) + \"&\";\n if (page === null)\n throw new Error(\"The parameter 'page' cannot be null.\");\n else if (page !== undefined)\n url_ += \"page=\" + encodeURIComponent(\"\" + page) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"pageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (sortBy !== undefined && sortBy !== null)\n url_ += \"sortBy=\" + encodeURIComponent(\"\" + sortBy) + \"&\";\n if (sortDirection !== undefined && sortDirection !== null)\n url_ += \"sortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<PagedResponseOfCardTransactionResponse>(options_));\n }\n\n /**\n * Reclassify a card transaction, keyed off the `card_transactions` PARENT id (not the expense\n child). Writes the target classification to the provider first, then mirrors locally. Every\n MOS-side refusal is a 400/404/409; a 400 carries a machine-readable `code`, so a code-less 400\n on this route is adapter-origin (ARCH-EXP-RECLASS-001, seam-reclassify-endpoint).\n */\n reclassify(tenantId: number, cardTransactionId: string, request: ReclassifyCardTransactionRequest, cancelToken?: CancelToken): AxiosPromise<void> {\n let url_ = \"/v1/tenant/{tenantId}/card-transactions/{cardTransactionId}/classification\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (cardTransactionId === undefined || cardTransactionId === null)\n throw new Error(\"The parameter 'cardTransactionId' must be defined.\");\n url_ = url_.replace(\"{cardTransactionId}\", encodeURIComponent(\"\" + cardTransactionId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = request;\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n data: content_,\n url: url_,\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return makeCodedException(axios.request<void>(options_));\n }\n}\n\n/** Generic paged response wrapper with total count for pagination support. */\nexport interface PagedResponseOfCardTransactionResponse {\n /** Data collection */\n data: CardTransactionResponse[];\n /** Current page number */\n page: number;\n /** Page size */\n pageSize: number;\n /** Total count of items (null if pagination not required) */\n totalCount?: number | undefined;\n /** Whether there are more pages */\n hasMore: boolean;\n}\n\nexport interface BaseEntityApiModel {\n id: string;\n createdOn: Date;\n modifiedOn: Date;\n}\n\n/** Response row for `GET /v1/tenant/{tenantId}/card-transactions`. `Id` (from BaseEntityApiModel) is the `card_transactions` parent row's own id. Returns both `Expense`- and `BillPayment`-typed rows (phase 4). */\nexport interface CardTransactionResponse extends BaseEntityApiModel {\n /** Tenant that owns this row. */\n tenantId: number;\n /** Discriminates Expense vs BillPayment. Non-nullable — every row carries a definite type, driven\nby ingest-time classification (never inferred). String wire convention matches\n`ExpenseTransactionResponse.TransactionStatus`/`SyncStatus`. */\n transactionType: string;\n /** Merchant name as reported by the external card provider, verbatim (parent-level, present on\nboth types). Independent of VendorName — never overwrites and is never overwritten\nby it. */\n externalMerchantName?: string | undefined;\n /** Resolved ServiceTitan vendor name (Expense rows only; null for BillPayment, and null when the\nExpense row's vendor does not resolve against the tenant's `Vendors` mirror — never coerced\nto ExternalMerchantName in that case). */\n vendorName?: string | undefined;\n /** The date the transaction occurred (from card statement). */\n transactionDate?: Date | undefined;\n /** Transaction total as reported by the provider. */\n total: number;\n /** Identifier from the external card provider. */\n externalId?: string | undefined;\n /** Name of the external provider (e.g. \"Ramp\"). */\n externalSource?: string | undefined;\n /** Cardholder display name as reported by the provider, verbatim. */\n cardholderName?: string | undefined;\n /** Cardholder email as reported by the provider, verbatim. */\n cardholderEmail?: string | undefined;\n /** Last 4 digits of the card number. */\n cardNumberLast4?: string | undefined;\n /** Card identifier from the external provider. */\n externalCardId?: string | undefined;\n /** Human-readable merchant category (e.g. \"Supermarkets and grocery stores\"). */\n merchantCategory?: string | undefined;\n /** Numeric ISO 18245 Merchant Category Code (MCC), e.g. \"5411\". */\n merchantCategoryCode?: string | undefined;\n /** ISO description paired with the MCC, e.g. \"Grocery Stores, Supermarkets\". */\n merchantCategoryCodeDescription?: string | undefined;\n /** Raw bank-statement descriptor for the charge. */\n merchantDescriptor?: string | undefined;\n /** City of the merchant (card acceptor) location reported by the provider. */\n merchantLocationCity?: string | undefined;\n /** State/region of the merchant (card acceptor) location reported by the provider. */\n merchantLocationState?: string | undefined;\n /** Postal/ZIP code of the merchant (card acceptor) location reported by the provider. */\n merchantLocationPostalCode?: string | undefined;\n /** Country of the merchant (card acceptor) location reported by the provider. */\n merchantLocationCountry?: string | undefined;\n /** Vendor where the expense was incurred. Expense rows only; null for BillPayment and for an\nExpense row whose linked expense is not currently live (see VendorName). */\n vendorId?: number | undefined;\n /** Business unit the linked expense is charged to. Expense rows only; null for BillPayment. */\n businessUnitId?: number | undefined;\n /** Job the linked expense is associated with, if any. Expense rows only; null for BillPayment. */\n jobId?: number | undefined;\n /** Project the linked expense is associated with, if any. Expense rows only; null for BillPayment. */\n projectId?: number | undefined;\n /** Employee (cardholder) who made the linked expense purchase. Expense rows only; null for BillPayment. */\n employeeId?: number | undefined;\n /** Computed field: true if essential ST-related bindings are not set for the linked expense.\nExpense rows only; null for BillPayment. */\n needsReview?: boolean | undefined;\n /** Merchant processing status of the linked expense (e.g. Pending, Complete, Error, Declined). Expense rows only; null for BillPayment. */\n transactionStatus?: string | undefined;\n /** Status of receipt documentation for the linked expense (e.g. Pending, Received). Expense rows only; null for BillPayment. */\n receiptStatus?: string | undefined;\n /** Accounting sync/export status of the linked expense (e.g. Pending, Posted, Exported). Expense rows only; null for BillPayment. */\n syncStatus?: string | undefined;\n /** True when the linked expense is a refund/reversal rather than a charge. Expense rows only; null for BillPayment. */\n isRefund?: boolean | undefined;\n /** Tax portion of the total, mirroring `ExpenseTransactionResponse.Tax`. Placeholder field:\ncurrently always null pending Level-3 provider data wiring (deferred to a follow-up ticket). */\n tax?: number | undefined;\n /** Shipping portion of the total, mirroring `ExpenseTransactionResponse.Shipping`. Placeholder\nfield: currently always null pending Level-3 provider data wiring (deferred to a follow-up ticket). */\n shipping?: number | undefined;\n}\n\n/** Body of `PATCH /v1/tenant/{tenantId}/card-transactions/{cardTransactionId}/classification`. Classification is a string parsed at the boundary (an unknown/out-of-enum value is a coded 400, not a bind failure), so the request contract is final across all phases — every named classification is a valid target from phase 1, even when its local behaviour lands in a later phase. JobNumber/ProjectNumber name the target for a Job/Project reclassify and are unused for the other targets. */\nexport interface ReclassifyCardTransactionRequest {\n /** The target classification: `NotStExpense`, `Job`, `Project`, `NotSet`, or\n`BillPayment`. Parsed by `ExpenseInputValidator.ParseReclassificationTarget`; a malformed\nor out-of-enum value is refused as a 400 with `code: unsupported_classification`. */\n classification: string;\n /** The job reference number, for a `Job` target. Ignored for other targets. */\n jobNumber?: string | undefined;\n /** The project reference number, for a `Project` target. Ignored for other targets. */\n projectNumber?: string | undefined;\n}\n"],"names":["axios","injectable","inject","optional","symbolToken","makeCodedException","BASE_URL_TOKEN_CardTransactions","CardTransactions","list","tenantId","ids","vendorIds","jobIds","projectIds","cardholderIds","purchaseOrderIds","syncStatuses","transactionStatuses","receiptStatuses","dateFrom","dateTo","businessUnitIds","needsReview","searchTerm","page","pageSize","sortBy","sortDirection","cancelToken","url_","undefined","Error","replace","encodeURIComponent","forEach","item","toJSON","options_","baseURL","baseUrl","url","method","headers","request","reclassify","cardTransactionId","content_","data","jsonParseReviver"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/card-transactions.api.ts"],"sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n//----------------------\n// <auto-generated>\n// Generated with ApiClientGenerator, using the NSwag toolchain\n// </auto-generated>\n//----------------------\n// ReSharper disable InconsistentNaming\n\nimport axios, { AxiosRequestConfig, AxiosPromise, CancelToken } from 'axios';\nimport { injectable, inject, optional, symbolToken } from '@servicetitan/react-ioc';\nimport { makeCodedException, makeContent } from './utils';\n// @ts-ignore: needed for Date serialization if a DateTime parameter has an Unspecified attribute on it\nimport moment from 'moment';\n\nexport interface ICardTransactions {\n /**\n * List card transactions with optional filters.\n * @ids (optional) Filter by row id — the `card_transactions` parent's own id (the id every row in this\n endpoint's response carries), not the linked expense transaction's id.\n * @vendorIds (optional) Filter by vendor IDs. Matches Expense rows only; never matches BillPayment rows.\n * @jobIds (optional) Filter by job IDs. Matches Expense rows only.\n * @projectIds (optional) Filter by project IDs. Matches Expense rows only.\n * @cardholderIds (optional) Filter by cardholder directory IDs. Matches Expense rows only. An unknown, foreign, or retired\n id matches nothing (no existence check) — same behavior as Ids.\n * @purchaseOrderIds (optional) Filter by purchase order IDs. Matches Expense rows only; never matches BillPayment rows (no\n linked purchase order to compare against). An unknown, foreign, or retired id matches nothing\n (no existence check).\n * @syncStatuses (optional) Filter by sync statuses (e.g. \"Pending\", \"Posted\", \"Exported\"). Matches Expense rows only.\n * @transactionStatuses (optional) Filter by transaction statuses (e.g. \"Pending\", \"Complete\", \"Declined\"). Matches Expense rows only.\n * @receiptStatuses (optional) Filter by receipt statuses (e.g. \"Missing\", \"Attached\", \"Verified\"). Matches Expense rows only.\n * @dateFrom (optional) Filter by transaction date (inclusive start).\n * @dateTo (optional) Filter by transaction date (inclusive end).\n * @businessUnitIds (optional) Filter by business unit IDs. Matches Expense rows only.\n * @needsReview (optional) Filter by review state. Matches Expense rows only; see NeedsReview for the tri-state semantics this mirrors.\n * @searchTerm (optional) Case-insensitive substring search across the raw merchant/cardholder name (every row) and — for\n Expense rows only — vendor name, job/project number (`StReferenceNumber`), and PO number.\n Trimmed before matching; empty or whitespace-only is treated as omitted. Composes conjunctively\n with every other filter on this request.\n * @page (optional) Page number (1-based). Defaults to 1.\n * @pageSize (optional) Number of items per page. Defaults to 50.\n * @sortBy (optional) Property name to sort by (e.g. \"transactionDate\", \"total\"). Defaults to \"transactionDate\".\n * @sortDirection (optional) Sort direction: \"asc\" or \"desc\". Defaults to \"desc\".\n */\n list(tenantId: number, ids: string[] | null | undefined, vendorIds: number[] | null | undefined, jobIds: number[] | null | undefined, projectIds: number[] | null | undefined, cardholderIds: string[] | null | undefined, purchaseOrderIds: number[] | null | undefined, syncStatuses: string[] | null | undefined, transactionStatuses: string[] | null | undefined, receiptStatuses: string[] | null | undefined, dateFrom: Date | null | undefined, dateTo: Date | null | undefined, businessUnitIds: number[] | null | undefined, needsReview: boolean | null | undefined, searchTerm: string | null | undefined, page: number | undefined, pageSize: number | undefined, sortBy: string | null | undefined, sortDirection: string | null | undefined, cancelToken?: CancelToken): AxiosPromise<PagedResponseOfCardTransactionResponse>;\n /**\n * Get a card transaction by its canonical parent ID.\n */\n get(tenantId: number, cardTransactionId: string, cancelToken?: CancelToken): AxiosPromise<CardTransactionResponse>;\n /**\n * Get the visible expense linked to a card transaction parent ID.\n */\n getExpense(tenantId: number, cardTransactionId: string, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse>;\n /**\n * Reclassify a card transaction, keyed off the `card_transactions` PARENT id (not the expense\n child). Writes the target classification to the provider first, then mirrors locally. Every\n MOS-side refusal is a 400/404/409; a 400 carries a machine-readable `code`, so a code-less 400\n on this route is adapter-origin (ARCH-EXP-RECLASS-001, seam-reclassify-endpoint).\n */\n reclassify(tenantId: number, cardTransactionId: string, request: ReclassifyCardTransactionRequest, cancelToken?: CancelToken): AxiosPromise<void>;\n}\n\nexport const BASE_URL_TOKEN_CardTransactions = symbolToken<string>('BASE_URL_TOKEN', false);\n\n@injectable()\nexport class CardTransactions implements ICardTransactions {\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@inject(BASE_URL_TOKEN_CardTransactions) @optional() private readonly baseUrl = \"\") {\n }\n\n /**\n * List card transactions with optional filters.\n * @ids (optional) Filter by row id — the `card_transactions` parent's own id (the id every row in this\n endpoint's response carries), not the linked expense transaction's id.\n * @vendorIds (optional) Filter by vendor IDs. Matches Expense rows only; never matches BillPayment rows.\n * @jobIds (optional) Filter by job IDs. Matches Expense rows only.\n * @projectIds (optional) Filter by project IDs. Matches Expense rows only.\n * @cardholderIds (optional) Filter by cardholder directory IDs. Matches Expense rows only. An unknown, foreign, or retired\n id matches nothing (no existence check) — same behavior as Ids.\n * @purchaseOrderIds (optional) Filter by purchase order IDs. Matches Expense rows only; never matches BillPayment rows (no\n linked purchase order to compare against). An unknown, foreign, or retired id matches nothing\n (no existence check).\n * @syncStatuses (optional) Filter by sync statuses (e.g. \"Pending\", \"Posted\", \"Exported\"). Matches Expense rows only.\n * @transactionStatuses (optional) Filter by transaction statuses (e.g. \"Pending\", \"Complete\", \"Declined\"). Matches Expense rows only.\n * @receiptStatuses (optional) Filter by receipt statuses (e.g. \"Missing\", \"Attached\", \"Verified\"). Matches Expense rows only.\n * @dateFrom (optional) Filter by transaction date (inclusive start).\n * @dateTo (optional) Filter by transaction date (inclusive end).\n * @businessUnitIds (optional) Filter by business unit IDs. Matches Expense rows only.\n * @needsReview (optional) Filter by review state. Matches Expense rows only; see NeedsReview for the tri-state semantics this mirrors.\n * @searchTerm (optional) Case-insensitive substring search across the raw merchant/cardholder name (every row) and — for\n Expense rows only — vendor name, job/project number (`StReferenceNumber`), and PO number.\n Trimmed before matching; empty or whitespace-only is treated as omitted. Composes conjunctively\n with every other filter on this request.\n * @page (optional) Page number (1-based). Defaults to 1.\n * @pageSize (optional) Number of items per page. Defaults to 50.\n * @sortBy (optional) Property name to sort by (e.g. \"transactionDate\", \"total\"). Defaults to \"transactionDate\".\n * @sortDirection (optional) Sort direction: \"asc\" or \"desc\". Defaults to \"desc\".\n */\n list(tenantId: number, ids: string[] | null | undefined, vendorIds: number[] | null | undefined, jobIds: number[] | null | undefined, projectIds: number[] | null | undefined, cardholderIds: string[] | null | undefined, purchaseOrderIds: number[] | null | undefined, syncStatuses: string[] | null | undefined, transactionStatuses: string[] | null | undefined, receiptStatuses: string[] | null | undefined, dateFrom: Date | null | undefined, dateTo: Date | null | undefined, businessUnitIds: number[] | null | undefined, needsReview: boolean | null | undefined, searchTerm: string | null | undefined, page: number | undefined, pageSize: number | undefined, sortBy: string | null | undefined, sortDirection: string | null | undefined, cancelToken?: CancelToken): AxiosPromise<PagedResponseOfCardTransactionResponse> {\n let url_ = \"/v1/tenant/{tenantId}/card-transactions?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (ids !== undefined && ids !== null)\n ids && ids.forEach(item => { url_ += \"ids=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (vendorIds !== undefined && vendorIds !== null)\n vendorIds && vendorIds.forEach(item => { url_ += \"vendorIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (jobIds !== undefined && jobIds !== null)\n jobIds && jobIds.forEach(item => { url_ += \"jobIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (projectIds !== undefined && projectIds !== null)\n projectIds && projectIds.forEach(item => { url_ += \"projectIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (cardholderIds !== undefined && cardholderIds !== null)\n cardholderIds && cardholderIds.forEach(item => { url_ += \"cardholderIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (purchaseOrderIds !== undefined && purchaseOrderIds !== null)\n purchaseOrderIds && purchaseOrderIds.forEach(item => { url_ += \"purchaseOrderIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (syncStatuses !== undefined && syncStatuses !== null)\n syncStatuses && syncStatuses.forEach(item => { url_ += \"syncStatuses=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (transactionStatuses !== undefined && transactionStatuses !== null)\n transactionStatuses && transactionStatuses.forEach(item => { url_ += \"transactionStatuses=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (receiptStatuses !== undefined && receiptStatuses !== null)\n receiptStatuses && receiptStatuses.forEach(item => { url_ += \"receiptStatuses=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (dateFrom !== undefined && dateFrom !== null)\n url_ += \"dateFrom=\" + encodeURIComponent(dateFrom ? \"\" + dateFrom.toJSON() : \"\") + \"&\";\n if (dateTo !== undefined && dateTo !== null)\n url_ += \"dateTo=\" + encodeURIComponent(dateTo ? \"\" + dateTo.toJSON() : \"\") + \"&\";\n if (businessUnitIds !== undefined && businessUnitIds !== null)\n businessUnitIds && businessUnitIds.forEach(item => { url_ += \"businessUnitIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (needsReview !== undefined && needsReview !== null)\n url_ += \"needsReview=\" + encodeURIComponent(\"\" + needsReview) + \"&\";\n if (searchTerm !== undefined && searchTerm !== null)\n url_ += \"searchTerm=\" + encodeURIComponent(\"\" + searchTerm) + \"&\";\n if (page === null)\n throw new Error(\"The parameter 'page' cannot be null.\");\n else if (page !== undefined)\n url_ += \"page=\" + encodeURIComponent(\"\" + page) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"pageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (sortBy !== undefined && sortBy !== null)\n url_ += \"sortBy=\" + encodeURIComponent(\"\" + sortBy) + \"&\";\n if (sortDirection !== undefined && sortDirection !== null)\n url_ += \"sortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<PagedResponseOfCardTransactionResponse>(options_));\n }\n\n /**\n * Get a card transaction by its canonical parent ID.\n */\n get(tenantId: number, cardTransactionId: string, cancelToken?: CancelToken): AxiosPromise<CardTransactionResponse> {\n let url_ = \"/v1/tenant/{tenantId}/card-transactions/{cardTransactionId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (cardTransactionId === undefined || cardTransactionId === null)\n throw new Error(\"The parameter 'cardTransactionId' must be defined.\");\n url_ = url_.replace(\"{cardTransactionId}\", encodeURIComponent(\"\" + cardTransactionId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<CardTransactionResponse>(options_));\n }\n\n /**\n * Get the visible expense linked to a card transaction parent ID.\n */\n getExpense(tenantId: number, cardTransactionId: string, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse> {\n let url_ = \"/v1/tenant/{tenantId}/card-transactions/{cardTransactionId}/expense\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (cardTransactionId === undefined || cardTransactionId === null)\n throw new Error(\"The parameter 'cardTransactionId' must be defined.\");\n url_ = url_.replace(\"{cardTransactionId}\", encodeURIComponent(\"\" + cardTransactionId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<ExpenseTransactionResponse>(options_));\n }\n\n /**\n * Reclassify a card transaction, keyed off the `card_transactions` PARENT id (not the expense\n child). Writes the target classification to the provider first, then mirrors locally. Every\n MOS-side refusal is a 400/404/409; a 400 carries a machine-readable `code`, so a code-less 400\n on this route is adapter-origin (ARCH-EXP-RECLASS-001, seam-reclassify-endpoint).\n */\n reclassify(tenantId: number, cardTransactionId: string, request: ReclassifyCardTransactionRequest, cancelToken?: CancelToken): AxiosPromise<void> {\n let url_ = \"/v1/tenant/{tenantId}/card-transactions/{cardTransactionId}/classification\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (cardTransactionId === undefined || cardTransactionId === null)\n throw new Error(\"The parameter 'cardTransactionId' must be defined.\");\n url_ = url_.replace(\"{cardTransactionId}\", encodeURIComponent(\"\" + cardTransactionId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = request;\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n data: content_,\n url: url_,\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return makeCodedException(axios.request<void>(options_));\n }\n}\n\n/** Generic paged response wrapper with total count for pagination support. */\nexport interface PagedResponseOfCardTransactionResponse {\n /** Data collection */\n data: CardTransactionResponse[];\n /** Current page number */\n page: number;\n /** Page size */\n pageSize: number;\n /** Total count of items (null if pagination not required) */\n totalCount?: number | undefined;\n /** Whether there are more pages */\n hasMore: boolean;\n}\n\nexport interface BaseEntityApiModel {\n id: string;\n createdOn: Date;\n modifiedOn: Date;\n}\n\n/** Response row for `GET /v1/tenant/{tenantId}/card-transactions`. `Id` (from BaseEntityApiModel) is the `card_transactions` parent row's own id. Returns both `Expense`- and `BillPayment`-typed rows (phase 4). */\nexport interface CardTransactionResponse extends BaseEntityApiModel {\n /** Tenant that owns this row. */\n tenantId: number;\n /** Discriminates Expense vs BillPayment. Non-nullable — every row carries a definite type, driven\nby ingest-time classification (never inferred). String wire convention matches\n`ExpenseTransactionResponse.TransactionStatus`/`SyncStatus`. */\n transactionType: string;\n /** Merchant name as reported by the external card provider, verbatim (parent-level, present on\nboth types). Independent of VendorName — never overwrites and is never overwritten\nby it. */\n externalMerchantName?: string | undefined;\n /** Resolved ServiceTitan vendor name (Expense rows only; null for BillPayment, and null when the\nExpense row's vendor does not resolve against the tenant's `Vendors` mirror — never coerced\nto ExternalMerchantName in that case). */\n vendorName?: string | undefined;\n /** The date the transaction occurred (from card statement). */\n transactionDate?: Date | undefined;\n /** Transaction total as reported by the provider. */\n total: number;\n /** Identifier from the external card provider. */\n externalId?: string | undefined;\n /** Name of the external provider (e.g. \"Ramp\"). */\n externalSource?: string | undefined;\n /** Cardholder display name as reported by the provider, verbatim. */\n cardholderName?: string | undefined;\n /** Cardholder email as reported by the provider, verbatim. */\n cardholderEmail?: string | undefined;\n /** Last 4 digits of the card number. */\n cardNumberLast4?: string | undefined;\n /** Card identifier from the external provider. */\n externalCardId?: string | undefined;\n /** Human-readable merchant category (e.g. \"Supermarkets and grocery stores\"). */\n merchantCategory?: string | undefined;\n /** Numeric ISO 18245 Merchant Category Code (MCC), e.g. \"5411\". */\n merchantCategoryCode?: string | undefined;\n /** ISO description paired with the MCC, e.g. \"Grocery Stores, Supermarkets\". */\n merchantCategoryCodeDescription?: string | undefined;\n /** Raw bank-statement descriptor for the charge. */\n merchantDescriptor?: string | undefined;\n /** City of the merchant (card acceptor) location reported by the provider. */\n merchantLocationCity?: string | undefined;\n /** State/region of the merchant (card acceptor) location reported by the provider. */\n merchantLocationState?: string | undefined;\n /** Postal/ZIP code of the merchant (card acceptor) location reported by the provider. */\n merchantLocationPostalCode?: string | undefined;\n /** Country of the merchant (card acceptor) location reported by the provider. */\n merchantLocationCountry?: string | undefined;\n /** Vendor where the expense was incurred. Expense rows only; null for BillPayment and for an\nExpense row whose linked expense is not currently live (see VendorName). */\n vendorId?: number | undefined;\n /** Business unit the linked expense is charged to. Expense rows only; null for BillPayment. */\n businessUnitId?: number | undefined;\n /** Job the linked expense is associated with, if any. Expense rows only; null for BillPayment. */\n jobId?: number | undefined;\n /** Project the linked expense is associated with, if any. Expense rows only; null for BillPayment. */\n projectId?: number | undefined;\n /** Employee (cardholder) who made the linked expense purchase. Expense rows only; null for BillPayment. */\n employeeId?: number | undefined;\n /** Computed field: true if essential ST-related bindings are not set for the linked expense.\nExpense rows only; null for BillPayment. */\n needsReview?: boolean | undefined;\n /** Merchant processing status of the linked expense (e.g. Pending, Complete, Error, Declined). Expense rows only; null for BillPayment. */\n transactionStatus?: string | undefined;\n /** Status of receipt documentation for the linked expense (e.g. Pending, Received). Expense rows only; null for BillPayment. */\n receiptStatus?: string | undefined;\n /** Accounting sync/export status of the linked expense (e.g. Pending, Posted, Exported). Expense rows only; null for BillPayment. */\n syncStatus?: string | undefined;\n /** True when the linked expense is a refund/reversal rather than a charge. Expense rows only; null for BillPayment. */\n isRefund?: boolean | undefined;\n /** Tax portion of the total, mirroring `ExpenseTransactionResponse.Tax`. Placeholder field:\ncurrently always null pending Level-3 provider data wiring (deferred to a follow-up ticket). */\n tax?: number | undefined;\n /** Shipping portion of the total, mirroring `ExpenseTransactionResponse.Shipping`. Placeholder\nfield: currently always null pending Level-3 provider data wiring (deferred to a follow-up ticket). */\n shipping?: number | undefined;\n}\n\nexport interface ExpenseTransactionResponse extends BaseEntityApiModel {\n /** Tenant that owns this expense. */\n tenantId: number;\n /** Canonical card transaction ID used by Card Transactions page routes. */\n cardTransactionId?: string | undefined;\n /** Tenant-scoped expense transaction display number. */\n number: string;\n /** Free-text summary or notes for the expense. */\n summary?: string | undefined;\n /** The date the transaction occurred (from card statement). */\n transactionDate?: Date | undefined;\n /** Computed total: sum of line item amounts + tax + shipping. Negative for refunds. */\n total: number;\n /** True when this transaction is a refund/reversal rather than a charge. */\n isRefund: boolean;\n /** Provider id of the parent charge this refund reverses; null otherwise. */\n parentExternalId?: string | undefined;\n /** Internal MOS ExpenseId of the parent charge this refund reverses, when known; null otherwise. */\n parentExpenseId?: string | undefined;\n /** IDs of refund transactions that reference this expense as their parent.\nPopulated on GET-by-id only; null on list responses. Empty list when no refunds exist. */\n refundExpenseIds?: string[] | undefined;\n /** Tax portion of the total. */\n tax: number;\n /** Shipping portion of the total. */\n shipping: number;\n /** Vendor where the expense was incurred. */\n vendorId: number;\n /** True when VendorId was bound via an explicit merchant→vendor mapping rather than an\nexact-name match, a default vendor, or left unbound. Lets the UI show \"Mapped to {vendor}\" beneath\nthe raw merchant name. Reflects the source stamped at ingest, so it stays correct after a remap. */\n vendorBoundByMapping: boolean;\n /** Business unit this expense is charged to. */\n businessUnitId?: number | undefined;\n /** Job this expense is associated with, if any. */\n jobId?: number | undefined;\n /** Project this expense is associated with, if any. */\n projectId?: number | undefined;\n /** Purchase order linked to this expense for two-way matching. */\n purchaseOrderId?: number | undefined;\n /** Employee (cardholder) who made the purchase. */\n employeeId?: number | undefined;\n /** Discriminates whether EmployeeId refers to an employee or a technician.\nNon-nullable: a persisted null normalizes to Employee. */\n spenderType: ExpenseSpenderType;\n /** Credit card GL account (Liability:Credit Card) this expense was charged to. */\n creditCardAccountId?: number | undefined;\n /** Merchant processing status (e.g. Pending, Complete, Error, Declined). */\n transactionStatus: string;\n /** Provider-supplied context for the transaction status — e.g. decline reason, error message, or status-specific note. */\n transactionStatusDetails?: string | undefined;\n /** Computed field: true if essential ST-related bindings are not set for the transaction (such as VendorId, cardholder, etc). */\n needsReview: boolean;\n /** MOS-owned export-readiness headline (e.g. Pending, ReadyForExport, Exported). Composed by\nExpenseStatusRules; folds in NeedsReview and ProviderRequirementsMet. */\n expenseStatus: string;\n /** Whether the upstream card provider considers this transaction's requirements met and approved.\nTri-state: null = provider has not yet determined (never coerced to false). Distinct from\nNeedsReview, which reflects ServiceTitan binding gaps rather than provider sign-off. */\n providerRequirementsMet?: boolean | undefined;\n /** Status of receipt documentation (e.g. Pending, Received). */\n receiptStatus: string;\n /** Last 4 digits of the card number. */\n cardNumberLast4?: string | undefined;\n /** Accounting sync/export status (e.g. Pending, Posted, Exported). */\n syncStatus: string;\n /** Batch this expense was posted in, if any. */\n batchId?: number | undefined;\n /** Identifier from the external expense provider (e.g. Ramp transaction ID). */\n externalId?: string | undefined;\n /** Name of the external provider (e.g. \"Ramp\"). */\n externalSource?: string | undefined;\n /** Card identifier from the external provider (e.g. Ramp card_id). */\n externalCardId?: string | undefined;\n /** Human-readable merchant category (e.g. \"Supermarkets and grocery stores\").\nProvider-supplied for card-sourced expenses (e.g. Ramp's `sk_category_name`); free-text for manual entries. */\n merchantCategory?: string | undefined;\n /** Default debit GL account for the expense. Line items may override with their own GeneralLedgerAccountId. */\n debitAccountId?: number | undefined;\n /** Default budget code for the expense. Line items may override with their own BudgetCodeId. */\n budgetCodeId?: number | undefined;\n /** True when the debit GL account was assigned via the safe-degrade fallback (the tenant's\nUncategorized account) rather than a confident binding. Mirrors the persisted\nExpenseTransaction.DebitGlFallbackApplied and is folded into NeedsReview; surfaced so the UI\ncan warn that the GL account needs correcting. */\n debitGlFallbackApplied: boolean;\n /** True when this expense transaction originated in ServiceTitan (as opposed to being sourced\nentirely from an external provider). Tri-state: null means unknown/not set. */\n isStExpense?: boolean | undefined;\n /** ServiceTitan-internal reference number for this expense, when it originated in ST. Null for\nprovider-sourced transactions. A blank value on an ST expense is folded into NeedsReview;\nsurfaced so the UI can explain the review reason. */\n stReferenceNumber?: string | undefined;\n /** Denormalized project label(s) for display/export. */\n projectLabels?: string | undefined;\n /** Provider-reported (external) values, captured verbatim before ServiceTitan resolution. Surfaced\nso a \"needs review\" expense whose merchant/cardholder did not resolve to a ServiceTitan\nvendor/employee can show what the provider sent. Null when no provider details are recorded. */\n externalDetails?: ExpenseTransactionExternalDetailsResponse;\n /** Line items with expense GL accounts. */\n lineItems: ExpenseTransactionLineItemResponse[];\n /** Receipt attachments. File content is in Azure Blob Storage; these are metadata records. */\n attachments: ExpenseAttachmentResponse[];\n}\n\n/** Discriminates who an expense's spender-identity columns (`EmployeeId`/`EmployeeName`) refer to — the same monolith employee/technician id space that ExpenseTransaction has always stored, now disambiguated so name resolution can route to the right Public API surface. Employee = 0 / Technician = 1 are wire values, pinned because three repos decode them positionally — MOS, the monolith, and any future consumer of the outbound event. Renumbering or reordering the members is a breaking change caught only by ExpenseSpenderTypeContractTests (UNIT-105). Declare new members with an explicit value, at the end, never renumbering an existing one. null on the entity's SpenderType column reads as — which is exactly why Employee = 0 must stay pinned at zero: every pre-existing row and every pre-upgrade event has no value here, and the absent-means-Employee default depends on zero being that value. Realigning to match the monolith's ordering would trade a mappable hazard for a silent data-wide default inversion. Never cast to or from a monolith EmployeeType. The monolith declares 15 same-named EmployeeType enums, and Model/Timesheets/EmployeeType is the mirror image of this one (Technician = 0, Employee = 1). An (int) bridge compiles cleanly and silently inverts the tag, mistagging a financial record with no error anywhere. Map member-by-member, by name, if a bridge is ever needed. */\nexport enum ExpenseSpenderType {\n Employee = 0,\n Technician = 1,\n}\n\n/** Provider-reported (external) values for an expense transaction, captured verbatim as the card provider sent them. Present so a \"needs review\" expense whose merchant/cardholder did not resolve to a ServiceTitan vendor/employee can surface what the provider sent (with a not-found-in-ServiceTitan indicator) instead of a blank. Null when no provider details are recorded. */\nexport interface ExpenseTransactionExternalDetailsResponse {\n /** Merchant name as reported by the provider. */\n merchantName?: string | undefined;\n /** Cardholder display name as reported by the provider. */\n cardholderName?: string | undefined;\n /** Cardholder email as reported by the provider. */\n cardholderEmail?: string | undefined;\n /** Provider's own identifier for the cardholder. */\n cardholderUserId?: string | undefined;\n /** Human-readable GL account name the provider coded on the transaction header. */\n glAccountName?: string | undefined;\n /** GL account identifier the provider coded on the transaction header. */\n glAccountId?: string | undefined;\n}\n\nexport interface ExpenseTransactionLineItemResponse extends BaseEntityApiModel {\n /** Description of the line item. */\n description: string;\n /** Total dollar amount for this line item (Quantity × UnitPrice). */\n amount: number;\n /** Number of units purchased. */\n quantity: number;\n /** Dollar amount per unit. */\n unitPrice: number;\n /** Optional debit GL account override at the line level (defaults to header DebitAccountId if null). */\n generalLedgerAccountId?: number | undefined;\n /** Optional job override at the line level (defaults to header job if null). */\n jobId?: number | undefined;\n /** Optional project override at the line level (defaults to header project if null). */\n projectId?: number | undefined;\n /** Optional business unit override at the line level (defaults to header BU if null). */\n businessUnitId?: number | undefined;\n /** Optional budget code override at the line level (defaults to header BudgetCodeId if null). */\n budgetCodeId?: number | undefined;\n /** Denormalized project label for this line item. */\n projectLabels?: string | undefined;\n}\n\n/** Metadata information for an expense attachment (receipt). Not the actual file. */\nexport interface ExpenseAttachmentResponse extends BaseEntityApiModel {\n /** Sanitized file name for display and download. */\n filename: string;\n /** Original file name as uploaded by the user. */\n originalFilename: string;\n /** MIME content type. */\n contentType: string;\n /** File size in bytes. */\n fileSize: number;\n}\n\n/** Body of `PATCH /v1/tenant/{tenantId}/card-transactions/{cardTransactionId}/classification`. Classification is a string parsed at the boundary (an unknown/out-of-enum value is a coded 400, not a bind failure), so the request contract is final across all phases — every named classification is a valid target from phase 1, even when its local behaviour lands in a later phase. JobNumber/ProjectNumber name the target for a Job/Project reclassify and are unused for the other targets. */\nexport interface ReclassifyCardTransactionRequest {\n /** The target classification: `NotStExpense`, `Job`, `Project`, `NotSet`, or\n`BillPayment`. Parsed by `ExpenseInputValidator.ParseReclassificationTarget`; a malformed\nor out-of-enum value is refused as a 400 with `code: unsupported_classification`. */\n classification: string;\n /** The job reference number, for a `Job` target. Ignored for other targets. */\n jobNumber?: string | undefined;\n /** The project reference number, for a `Project` target. Ignored for other targets. */\n projectNumber?: string | undefined;\n}\n"],"names":["axios","injectable","inject","optional","symbolToken","makeCodedException","BASE_URL_TOKEN_CardTransactions","CardTransactions","list","tenantId","ids","vendorIds","jobIds","projectIds","cardholderIds","purchaseOrderIds","syncStatuses","transactionStatuses","receiptStatuses","dateFrom","dateTo","businessUnitIds","needsReview","searchTerm","page","pageSize","sortBy","sortDirection","cancelToken","url_","undefined","Error","replace","encodeURIComponent","forEach","item","toJSON","options_","baseURL","baseUrl","url","method","headers","request","get","cardTransactionId","getExpense","reclassify","content_","data","jsonParseReviver","ExpenseSpenderType"],"mappings":"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"}
@@ -43,7 +43,7 @@ export interface IExpenseManagement {
43
43
  */
44
44
  listCardholders(tenantId: number, cancelToken?: CancelToken): AxiosPromise<ExpenseCardholderResponse[]>;
45
45
  /**
46
- * Get a single expense transaction by ID
46
+ * Get a single expense transaction by expense ID
47
47
  */
48
48
  get(tenantId: number, id: string, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse>;
49
49
  /**
@@ -143,7 +143,7 @@ export declare class ExpenseManagement implements IExpenseManagement {
143
143
  */
144
144
  listCardholders(tenantId: number, cancelToken?: CancelToken): AxiosPromise<ExpenseCardholderResponse[]>;
145
145
  /**
146
- * Get a single expense transaction by ID
146
+ * Get a single expense transaction by expense ID
147
147
  */
148
148
  get(tenantId: number, id: string, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse>;
149
149
  /**
@@ -216,6 +216,8 @@ export interface BaseEntityApiModel {
216
216
  export interface ExpenseTransactionResponse extends BaseEntityApiModel {
217
217
  /** Tenant that owns this expense. */
218
218
  tenantId: number;
219
+ /** Canonical card transaction ID used by Card Transactions page routes. */
220
+ cardTransactionId?: string | undefined;
219
221
  /** Tenant-scoped expense transaction display number. */
220
222
  number: string;
221
223
  /** Free-text summary or notes for the expense. */
@@ -1 +1 @@
1
- {"version":3,"file":"expense-management.api.d.ts","sourceRoot":"","sources":["../src/expense-management.api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expense-management.api.d.ts","sourceRoot":"","sources":["../src/expense-management.api.ts"],"names":[],"mappings":"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"}
@@ -170,7 +170,7 @@ export class ExpenseManagement {
170
170
  return makeCodedException(axios.request(options_));
171
171
  }
172
172
  /**
173
- * Get a single expense transaction by ID
173
+ * Get a single expense transaction by expense ID
174
174
  */ get(tenantId, id, cancelToken) {
175
175
  let url_ = "/v1/tenant/{tenantId}/expense-transactions/{id}";
176
176
  if (tenantId === undefined || tenantId === null) throw new Error("The parameter 'tenantId' must be defined.");
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/expense-management.api.ts"],"sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n//----------------------\n// <auto-generated>\n// Generated with ApiClientGenerator, using the NSwag toolchain\n// </auto-generated>\n//----------------------\n// ReSharper disable InconsistentNaming\n\nimport axios, { AxiosRequestConfig, AxiosPromise, CancelToken } from 'axios';\nimport { injectable, inject, optional, symbolToken } from '@servicetitan/react-ioc';\nimport { makeCodedException, makeContent } from './utils';\n// @ts-ignore: needed for Date serialization if a DateTime parameter has an Unspecified attribute on it\nimport moment from 'moment';\n\nexport interface IExpenseManagement {\n /**\n * List expense transactions with optional filters.\n * @ids (optional) Filter by specific expense IDs.\n * @cardholderIds (optional) Filter by cardholder directory IDs (see the cardholders endpoint). Matches the expense's cardholder\n link by equality, so selecting a person who holds both a ServiceTitan and a provider identity\n returns their manual expenses and their card spend together. Multiple IDs OR within the set, and the\n whole filter is conjunctive with every other filter. Omitted or empty applies no filter at all.\n \n An unknown, foreign, or retired ID matches nothing and returns success — existence is deliberately\n not validated, because doing so would disclose that a row exists in another tenant and would turn a\n legitimately retired ID into an error. A malformed GUID is rejected by model binding.\n * @vendorIds (optional) Filter by vendor IDs.\n * @jobIds (optional) Filter by job IDs.\n * @projectIds (optional) Filter by project IDs.\n * @syncStatuses (optional) Filter by sync statuses (e.g. \"Pending\", \"Posted\", \"Exported\").\n * @transactionStatuses (optional) Filter by transaction statuses (e.g. \"Pending\", \"Complete\", \"Declined\").\n * @receiptStatuses (optional) Filter by receipt statuses (e.g. \"Missing\", \"Attached\", \"Verified\").\n * @dateFrom (optional) Filter by transaction date (inclusive start).\n * @dateTo (optional) Filter by transaction date (inclusive end).\n * @creditCardAccountIds (optional) Filter by credit card GL account IDs.\n * @businessUnitIds (optional) Filter by business unit IDs.\n * @batchId (optional) Filter by batch ID.\n * @totalMin (optional) Filter by minimum total cost.\n * @totalMax (optional) Filter by maximum total cost.\n * @needsReview (optional) Filter by review state (missing ST mappings such as vendor, cardholder, job, or project). When true, return only transactions that need review; when false, return only transactions that do not; when null (default), the filter is not applied and both are returned.\n * @includeUnqualifiedProviderTransactions (optional) When false (default), provider-originated transactions are returned only once they have qualified (cleared by the card network AND marked ready by the provider); manual transactions are always returned. When true, un-qualified provider transactions (pending / not-ready) are also returned. Use true only for show-everything views.\n * @page (optional) Page number (1-based). Defaults to 1.\n * @pageSize (optional) Number of items per page. Defaults to 50.\n * @sortBy (optional) Property name to sort by (e.g. \"transactionDate\", \"total\", \"syncStatus\"). Defaults to \"transactionDate\".\n * @sortDirection (optional) Sort direction: \"asc\" or \"desc\". Defaults to \"desc\".\n */\n list(tenantId: number, ids: string[] | null | undefined, cardholderIds: string[] | null | undefined, vendorIds: number[] | null | undefined, jobIds: number[] | null | undefined, projectIds: number[] | null | undefined, syncStatuses: string[] | null | undefined, transactionStatuses: string[] | null | undefined, receiptStatuses: string[] | null | undefined, dateFrom: Date | null | undefined, dateTo: Date | null | undefined, creditCardAccountIds: number[] | null | undefined, businessUnitIds: number[] | null | undefined, batchId: number | null | undefined, totalMin: number | null | undefined, totalMax: number | null | undefined, needsReview: boolean | null | undefined, includeUnqualifiedProviderTransactions: boolean | undefined, page: number | undefined, pageSize: number | undefined, sortBy: string | null | undefined, sortDirection: string | null | undefined, cancelToken?: CancelToken): AxiosPromise<PagedResponseOfExpenseTransactionResponse>;\n /**\n * Create a new expense transaction\n */\n create(tenantId: number, request: CreateExpenseTransactionRequest, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse>;\n /**\n * List the tenant's cardholder directory — one entry per person, carrying whichever of the\n ServiceTitan and provider identities are known. Each entry's id is the value the\n `cardholderIds` filter on the expense list takes.\n */\n listCardholders(tenantId: number, cancelToken?: CancelToken): AxiosPromise<ExpenseCardholderResponse[]>;\n /**\n * Get a single expense transaction by ID\n */\n get(tenantId: number, id: string, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse>;\n /**\n * Update an existing expense transaction\n */\n update(tenantId: number, id: string, request: UpdateExpenseTransactionRequest, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse>;\n /**\n * Delete an expense transaction (only if Pending)\n */\n delete(tenantId: number, id: string, cancelToken?: CancelToken): AxiosPromise<void>;\n /**\n * Update sync status for one or more expense transactions (used by monolith batch posting).\n */\n updateSyncStatus(tenantId: number, request: UpdateExpenseSyncStatusRequest, cancelToken?: CancelToken): AxiosPromise<UpdateExpenseSyncStatusResponse>;\n /**\n * Read the raw provider-reported merchant/cardholder names for a batch of expenses (used by the\n monolith's historical name backfill). POST rather than GET because 500 GUIDs overflow the request\n line. Deliberately ignores the default list visibility filter: a row with null names means the\n provider reported none (terminal — nothing to backfill), while an ID returned under\n `notFoundIds` did not resolve and should be retried. Unpaged — over 500 distinct IDs is a 400,\n never a silent truncation. Requires the `ExpenseSync` permission.\n */\n listRawNames(tenantId: number, request: ListExpenseRawNamesRequest, cancelToken?: CancelToken): AxiosPromise<ListExpenseRawNamesResponse>;\n /**\n * Mark an expense as \"not a ServiceTitan expense\" (outbound retract). Writes\n `is_st_expense=\"false\"` to the provider, persists `IsStExpense=false`, and removes the\n monolith projection. Idempotent: a no-longer-ST expense returns 200 with no provider call.\n */\n retract(tenantId: number, id: string, cancelToken?: CancelToken): AxiosPromise<void>;\n /**\n * List attachments for an expense transaction\n */\n listAttachments(tenantId: number, expenseId: string, cancelToken?: CancelToken): AxiosPromise<ExpenseAttachmentResponse[]>;\n /**\n * Download an attachment file\n */\n downloadAttachment(tenantId: number, expenseId: string, attachmentId: string, cancelToken?: CancelToken): AxiosPromise<void>;\n /**\n * Delete an attachment from an expense transaction\n */\n deleteAttachment(tenantId: number, expenseId: string, attachmentId: string, cancelToken?: CancelToken): AxiosPromise<void>;\n /**\n * Bind one or more draft attachment tokens (from the draft-upload endpoint) to this\n expense transaction as permanent attachments.\n */\n promoteAttachments(tenantId: number, expenseId: string, request: AddExpenseAttachmentsRequest, cancelToken?: CancelToken): AxiosPromise<ExpenseAttachmentResponse[]>;\n /**\n * Get well-known GL account ids for the tenant (from cache). Returns null ids when the cache is cold or degraded.\n */\n getWellKnownGlAccounts(tenantId: number, cancelToken?: CancelToken): AxiosPromise<WellKnownGlAccountsResponse>;\n}\n\nexport const BASE_URL_TOKEN_ExpenseManagement = symbolToken<string>('BASE_URL_TOKEN', false);\n\n@injectable()\nexport class ExpenseManagement implements IExpenseManagement {\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@inject(BASE_URL_TOKEN_ExpenseManagement) @optional() private readonly baseUrl = \"\") {\n }\n\n /**\n * List expense transactions with optional filters.\n * @ids (optional) Filter by specific expense IDs.\n * @cardholderIds (optional) Filter by cardholder directory IDs (see the cardholders endpoint). Matches the expense's cardholder\n link by equality, so selecting a person who holds both a ServiceTitan and a provider identity\n returns their manual expenses and their card spend together. Multiple IDs OR within the set, and the\n whole filter is conjunctive with every other filter. Omitted or empty applies no filter at all.\n \n An unknown, foreign, or retired ID matches nothing and returns success — existence is deliberately\n not validated, because doing so would disclose that a row exists in another tenant and would turn a\n legitimately retired ID into an error. A malformed GUID is rejected by model binding.\n * @vendorIds (optional) Filter by vendor IDs.\n * @jobIds (optional) Filter by job IDs.\n * @projectIds (optional) Filter by project IDs.\n * @syncStatuses (optional) Filter by sync statuses (e.g. \"Pending\", \"Posted\", \"Exported\").\n * @transactionStatuses (optional) Filter by transaction statuses (e.g. \"Pending\", \"Complete\", \"Declined\").\n * @receiptStatuses (optional) Filter by receipt statuses (e.g. \"Missing\", \"Attached\", \"Verified\").\n * @dateFrom (optional) Filter by transaction date (inclusive start).\n * @dateTo (optional) Filter by transaction date (inclusive end).\n * @creditCardAccountIds (optional) Filter by credit card GL account IDs.\n * @businessUnitIds (optional) Filter by business unit IDs.\n * @batchId (optional) Filter by batch ID.\n * @totalMin (optional) Filter by minimum total cost.\n * @totalMax (optional) Filter by maximum total cost.\n * @needsReview (optional) Filter by review state (missing ST mappings such as vendor, cardholder, job, or project). When true, return only transactions that need review; when false, return only transactions that do not; when null (default), the filter is not applied and both are returned.\n * @includeUnqualifiedProviderTransactions (optional) When false (default), provider-originated transactions are returned only once they have qualified (cleared by the card network AND marked ready by the provider); manual transactions are always returned. When true, un-qualified provider transactions (pending / not-ready) are also returned. Use true only for show-everything views.\n * @page (optional) Page number (1-based). Defaults to 1.\n * @pageSize (optional) Number of items per page. Defaults to 50.\n * @sortBy (optional) Property name to sort by (e.g. \"transactionDate\", \"total\", \"syncStatus\"). Defaults to \"transactionDate\".\n * @sortDirection (optional) Sort direction: \"asc\" or \"desc\". Defaults to \"desc\".\n */\n list(tenantId: number, ids: string[] | null | undefined, cardholderIds: string[] | null | undefined, vendorIds: number[] | null | undefined, jobIds: number[] | null | undefined, projectIds: number[] | null | undefined, syncStatuses: string[] | null | undefined, transactionStatuses: string[] | null | undefined, receiptStatuses: string[] | null | undefined, dateFrom: Date | null | undefined, dateTo: Date | null | undefined, creditCardAccountIds: number[] | null | undefined, businessUnitIds: number[] | null | undefined, batchId: number | null | undefined, totalMin: number | null | undefined, totalMax: number | null | undefined, needsReview: boolean | null | undefined, includeUnqualifiedProviderTransactions: boolean | undefined, page: number | undefined, pageSize: number | undefined, sortBy: string | null | undefined, sortDirection: string | null | undefined, cancelToken?: CancelToken): AxiosPromise<PagedResponseOfExpenseTransactionResponse> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (ids !== undefined && ids !== null)\n ids && ids.forEach(item => { url_ += \"ids=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (cardholderIds !== undefined && cardholderIds !== null)\n cardholderIds && cardholderIds.forEach(item => { url_ += \"cardholderIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (vendorIds !== undefined && vendorIds !== null)\n vendorIds && vendorIds.forEach(item => { url_ += \"vendorIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (jobIds !== undefined && jobIds !== null)\n jobIds && jobIds.forEach(item => { url_ += \"jobIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (projectIds !== undefined && projectIds !== null)\n projectIds && projectIds.forEach(item => { url_ += \"projectIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (syncStatuses !== undefined && syncStatuses !== null)\n syncStatuses && syncStatuses.forEach(item => { url_ += \"syncStatuses=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (transactionStatuses !== undefined && transactionStatuses !== null)\n transactionStatuses && transactionStatuses.forEach(item => { url_ += \"transactionStatuses=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (receiptStatuses !== undefined && receiptStatuses !== null)\n receiptStatuses && receiptStatuses.forEach(item => { url_ += \"receiptStatuses=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (dateFrom !== undefined && dateFrom !== null)\n url_ += \"dateFrom=\" + encodeURIComponent(dateFrom ? \"\" + dateFrom.toJSON() : \"\") + \"&\";\n if (dateTo !== undefined && dateTo !== null)\n url_ += \"dateTo=\" + encodeURIComponent(dateTo ? \"\" + dateTo.toJSON() : \"\") + \"&\";\n if (creditCardAccountIds !== undefined && creditCardAccountIds !== null)\n creditCardAccountIds && creditCardAccountIds.forEach(item => { url_ += \"creditCardAccountIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (businessUnitIds !== undefined && businessUnitIds !== null)\n businessUnitIds && businessUnitIds.forEach(item => { url_ += \"businessUnitIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (batchId !== undefined && batchId !== null)\n url_ += \"batchId=\" + encodeURIComponent(\"\" + batchId) + \"&\";\n if (totalMin !== undefined && totalMin !== null)\n url_ += \"totalMin=\" + encodeURIComponent(\"\" + totalMin) + \"&\";\n if (totalMax !== undefined && totalMax !== null)\n url_ += \"totalMax=\" + encodeURIComponent(\"\" + totalMax) + \"&\";\n if (needsReview !== undefined && needsReview !== null)\n url_ += \"needsReview=\" + encodeURIComponent(\"\" + needsReview) + \"&\";\n if (includeUnqualifiedProviderTransactions === null)\n throw new Error(\"The parameter 'includeUnqualifiedProviderTransactions' cannot be null.\");\n else if (includeUnqualifiedProviderTransactions !== undefined)\n url_ += \"includeUnqualifiedProviderTransactions=\" + encodeURIComponent(\"\" + includeUnqualifiedProviderTransactions) + \"&\";\n if (page === null)\n throw new Error(\"The parameter 'page' cannot be null.\");\n else if (page !== undefined)\n url_ += \"page=\" + encodeURIComponent(\"\" + page) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"pageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (sortBy !== undefined && sortBy !== null)\n url_ += \"sortBy=\" + encodeURIComponent(\"\" + sortBy) + \"&\";\n if (sortDirection !== undefined && sortDirection !== null)\n url_ += \"sortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<PagedResponseOfExpenseTransactionResponse>(options_));\n }\n\n /**\n * Create a new expense transaction\n */\n create(tenantId: number, request: CreateExpenseTransactionRequest, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = request;\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n data: content_,\n url: url_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<ExpenseTransactionResponse>(options_));\n }\n\n /**\n * List the tenant's cardholder directory — one entry per person, carrying whichever of the\n ServiceTitan and provider identities are known. Each entry's id is the value the\n `cardholderIds` filter on the expense list takes.\n */\n listCardholders(tenantId: number, cancelToken?: CancelToken): AxiosPromise<ExpenseCardholderResponse[]> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/cardholders\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<ExpenseCardholderResponse[]>(options_));\n }\n\n /**\n * Get a single expense transaction by ID\n */\n get(tenantId: number, id: string, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<ExpenseTransactionResponse>(options_));\n }\n\n /**\n * Update an existing expense transaction\n */\n update(tenantId: number, id: string, request: UpdateExpenseTransactionRequest, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = request;\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n data: content_,\n url: url_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<ExpenseTransactionResponse>(options_));\n }\n\n /**\n * Delete an expense transaction (only if Pending)\n */\n delete(tenantId: number, id: string, cancelToken?: CancelToken): AxiosPromise<void> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return makeCodedException(axios.request<void>(options_));\n }\n\n /**\n * Update sync status for one or more expense transactions (used by monolith batch posting).\n */\n updateSyncStatus(tenantId: number, request: UpdateExpenseSyncStatusRequest, cancelToken?: CancelToken): AxiosPromise<UpdateExpenseSyncStatusResponse> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/sync-status\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = request;\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n data: content_,\n url: url_,\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<UpdateExpenseSyncStatusResponse>(options_));\n }\n\n /**\n * Read the raw provider-reported merchant/cardholder names for a batch of expenses (used by the\n monolith's historical name backfill). POST rather than GET because 500 GUIDs overflow the request\n line. Deliberately ignores the default list visibility filter: a row with null names means the\n provider reported none (terminal — nothing to backfill), while an ID returned under\n `notFoundIds` did not resolve and should be retried. Unpaged — over 500 distinct IDs is a 400,\n never a silent truncation. Requires the `ExpenseSync` permission.\n */\n listRawNames(tenantId: number, request: ListExpenseRawNamesRequest, cancelToken?: CancelToken): AxiosPromise<ListExpenseRawNamesResponse> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/raw-names\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = request;\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n data: content_,\n url: url_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<ListExpenseRawNamesResponse>(options_));\n }\n\n /**\n * Mark an expense as \"not a ServiceTitan expense\" (outbound retract). Writes\n `is_st_expense=\"false\"` to the provider, persists `IsStExpense=false`, and removes the\n monolith projection. Idempotent: a no-longer-ST expense returns 200 with no provider call.\n */\n retract(tenantId: number, id: string, cancelToken?: CancelToken): AxiosPromise<void> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{id}/retract\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return makeCodedException(axios.request<void>(options_));\n }\n\n /**\n * List attachments for an expense transaction\n */\n listAttachments(tenantId: number, expenseId: string, cancelToken?: CancelToken): AxiosPromise<ExpenseAttachmentResponse[]> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{expenseId}/attachments\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (expenseId === undefined || expenseId === null)\n throw new Error(\"The parameter 'expenseId' must be defined.\");\n url_ = url_.replace(\"{expenseId}\", encodeURIComponent(\"\" + expenseId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<ExpenseAttachmentResponse[]>(options_));\n }\n\n /**\n * Download an attachment file\n */\n downloadAttachment(tenantId: number, expenseId: string, attachmentId: string, cancelToken?: CancelToken): AxiosPromise<void> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{expenseId}/attachments/{attachmentId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (expenseId === undefined || expenseId === null)\n throw new Error(\"The parameter 'expenseId' must be defined.\");\n url_ = url_.replace(\"{expenseId}\", encodeURIComponent(\"\" + expenseId));\n if (attachmentId === undefined || attachmentId === null)\n throw new Error(\"The parameter 'attachmentId' must be defined.\");\n url_ = url_.replace(\"{attachmentId}\", encodeURIComponent(\"\" + attachmentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return makeCodedException(axios.request<void>(options_));\n }\n\n /**\n * Delete an attachment from an expense transaction\n */\n deleteAttachment(tenantId: number, expenseId: string, attachmentId: string, cancelToken?: CancelToken): AxiosPromise<void> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{expenseId}/attachments/{attachmentId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (expenseId === undefined || expenseId === null)\n throw new Error(\"The parameter 'expenseId' must be defined.\");\n url_ = url_.replace(\"{expenseId}\", encodeURIComponent(\"\" + expenseId));\n if (attachmentId === undefined || attachmentId === null)\n throw new Error(\"The parameter 'attachmentId' must be defined.\");\n url_ = url_.replace(\"{attachmentId}\", encodeURIComponent(\"\" + attachmentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return makeCodedException(axios.request<void>(options_));\n }\n\n /**\n * Bind one or more draft attachment tokens (from the draft-upload endpoint) to this\n expense transaction as permanent attachments.\n */\n promoteAttachments(tenantId: number, expenseId: string, request: AddExpenseAttachmentsRequest, cancelToken?: CancelToken): AxiosPromise<ExpenseAttachmentResponse[]> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{expenseId}/attachments/promote\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (expenseId === undefined || expenseId === null)\n throw new Error(\"The parameter 'expenseId' must be defined.\");\n url_ = url_.replace(\"{expenseId}\", encodeURIComponent(\"\" + expenseId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = request;\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n data: content_,\n url: url_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<ExpenseAttachmentResponse[]>(options_));\n }\n\n /**\n * Get well-known GL account ids for the tenant (from cache). Returns null ids when the cache is cold or degraded.\n */\n getWellKnownGlAccounts(tenantId: number, cancelToken?: CancelToken): AxiosPromise<WellKnownGlAccountsResponse> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/gl-accounts/well-known\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<WellKnownGlAccountsResponse>(options_));\n }\n}\n\n/** Generic paged response wrapper with total count for pagination support. */\nexport interface PagedResponseOfExpenseTransactionResponse {\n /** Data collection */\n data: ExpenseTransactionResponse[];\n /** Current page number */\n page: number;\n /** Page size */\n pageSize: number;\n /** Total count of items (null if pagination not required) */\n totalCount?: number | undefined;\n /** Whether there are more pages */\n hasMore: boolean;\n}\n\nexport interface BaseEntityApiModel {\n id: string;\n createdOn: Date;\n modifiedOn: Date;\n}\n\nexport interface ExpenseTransactionResponse extends BaseEntityApiModel {\n /** Tenant that owns this expense. */\n tenantId: number;\n /** Tenant-scoped expense transaction display number. */\n number: string;\n /** Free-text summary or notes for the expense. */\n summary?: string | undefined;\n /** The date the transaction occurred (from card statement). */\n transactionDate?: Date | undefined;\n /** Computed total: sum of line item amounts + tax + shipping. Negative for refunds. */\n total: number;\n /** True when this transaction is a refund/reversal rather than a charge. */\n isRefund: boolean;\n /** Provider id of the parent charge this refund reverses; null otherwise. */\n parentExternalId?: string | undefined;\n /** Internal MOS ExpenseId of the parent charge this refund reverses, when known; null otherwise. */\n parentExpenseId?: string | undefined;\n /** IDs of refund transactions that reference this expense as their parent.\nPopulated on GET-by-id only; null on list responses. Empty list when no refunds exist. */\n refundExpenseIds?: string[] | undefined;\n /** Tax portion of the total. */\n tax: number;\n /** Shipping portion of the total. */\n shipping: number;\n /** Vendor where the expense was incurred. */\n vendorId: number;\n /** True when VendorId was bound via an explicit merchant→vendor mapping rather than an\nexact-name match, a default vendor, or left unbound. Lets the UI show \"Mapped to {vendor}\" beneath\nthe raw merchant name. Reflects the source stamped at ingest, so it stays correct after a remap. */\n vendorBoundByMapping: boolean;\n /** Business unit this expense is charged to. */\n businessUnitId?: number | undefined;\n /** Job this expense is associated with, if any. */\n jobId?: number | undefined;\n /** Project this expense is associated with, if any. */\n projectId?: number | undefined;\n /** Purchase order linked to this expense for two-way matching. */\n purchaseOrderId?: number | undefined;\n /** Employee (cardholder) who made the purchase. */\n employeeId?: number | undefined;\n /** Discriminates whether EmployeeId refers to an employee or a technician.\nNon-nullable: a persisted null normalizes to Employee. */\n spenderType: ExpenseSpenderType;\n /** Credit card GL account (Liability:Credit Card) this expense was charged to. */\n creditCardAccountId?: number | undefined;\n /** Merchant processing status (e.g. Pending, Complete, Error, Declined). */\n transactionStatus: string;\n /** Provider-supplied context for the transaction status — e.g. decline reason, error message, or status-specific note. */\n transactionStatusDetails?: string | undefined;\n /** Computed field: true if essential ST-related bindings are not set for the transaction (such as VendorId, cardholder, etc). */\n needsReview: boolean;\n /** MOS-owned export-readiness headline (e.g. Pending, ReadyForExport, Exported). Composed by\nExpenseStatusRules; folds in NeedsReview and ProviderRequirementsMet. */\n expenseStatus: string;\n /** Whether the upstream card provider considers this transaction's requirements met and approved.\nTri-state: null = provider has not yet determined (never coerced to false). Distinct from\nNeedsReview, which reflects ServiceTitan binding gaps rather than provider sign-off. */\n providerRequirementsMet?: boolean | undefined;\n /** Status of receipt documentation (e.g. Pending, Received). */\n receiptStatus: string;\n /** Last 4 digits of the card number. */\n cardNumberLast4?: string | undefined;\n /** Accounting sync/export status (e.g. Pending, Posted, Exported). */\n syncStatus: string;\n /** Batch this expense was posted in, if any. */\n batchId?: number | undefined;\n /** Identifier from the external expense provider (e.g. Ramp transaction ID). */\n externalId?: string | undefined;\n /** Name of the external provider (e.g. \"Ramp\"). */\n externalSource?: string | undefined;\n /** Card identifier from the external provider (e.g. Ramp card_id). */\n externalCardId?: string | undefined;\n /** Human-readable merchant category (e.g. \"Supermarkets and grocery stores\").\nProvider-supplied for card-sourced expenses (e.g. Ramp's `sk_category_name`); free-text for manual entries. */\n merchantCategory?: string | undefined;\n /** Default debit GL account for the expense. Line items may override with their own GeneralLedgerAccountId. */\n debitAccountId?: number | undefined;\n /** Default budget code for the expense. Line items may override with their own BudgetCodeId. */\n budgetCodeId?: number | undefined;\n /** True when the debit GL account was assigned via the safe-degrade fallback (the tenant's\nUncategorized account) rather than a confident binding. Mirrors the persisted\nExpenseTransaction.DebitGlFallbackApplied and is folded into NeedsReview; surfaced so the UI\ncan warn that the GL account needs correcting. */\n debitGlFallbackApplied: boolean;\n /** True when this expense transaction originated in ServiceTitan (as opposed to being sourced\nentirely from an external provider). Tri-state: null means unknown/not set. */\n isStExpense?: boolean | undefined;\n /** ServiceTitan-internal reference number for this expense, when it originated in ST. Null for\nprovider-sourced transactions. A blank value on an ST expense is folded into NeedsReview;\nsurfaced so the UI can explain the review reason. */\n stReferenceNumber?: string | undefined;\n /** Denormalized project label(s) for display/export. */\n projectLabels?: string | undefined;\n /** Provider-reported (external) values, captured verbatim before ServiceTitan resolution. Surfaced\nso a \"needs review\" expense whose merchant/cardholder did not resolve to a ServiceTitan\nvendor/employee can show what the provider sent. Null when no provider details are recorded. */\n externalDetails?: ExpenseTransactionExternalDetailsResponse;\n /** Line items with expense GL accounts. */\n lineItems: ExpenseTransactionLineItemResponse[];\n /** Receipt attachments. File content is in Azure Blob Storage; these are metadata records. */\n attachments: ExpenseAttachmentResponse[];\n}\n\n/** Discriminates who an expense's spender-identity columns (`EmployeeId`/`EmployeeName`) refer to — the same monolith employee/technician id space that ExpenseTransaction has always stored, now disambiguated so name resolution can route to the right Public API surface. Employee = 0 / Technician = 1 are wire values, pinned because three repos decode them positionally — MOS, the monolith, and any future consumer of the outbound event. Renumbering or reordering the members is a breaking change caught only by ExpenseSpenderTypeContractTests (UNIT-105). Declare new members with an explicit value, at the end, never renumbering an existing one. null on the entity's SpenderType column reads as — which is exactly why Employee = 0 must stay pinned at zero: every pre-existing row and every pre-upgrade event has no value here, and the absent-means-Employee default depends on zero being that value. Realigning to match the monolith's ordering would trade a mappable hazard for a silent data-wide default inversion. Never cast to or from a monolith EmployeeType. The monolith declares 15 same-named EmployeeType enums, and Model/Timesheets/EmployeeType is the mirror image of this one (Technician = 0, Employee = 1). An (int) bridge compiles cleanly and silently inverts the tag, mistagging a financial record with no error anywhere. Map member-by-member, by name, if a bridge is ever needed. */\nexport enum ExpenseSpenderType {\n Employee = 0,\n Technician = 1,\n}\n\n/** Provider-reported (external) values for an expense transaction, captured verbatim as the card provider sent them. Present so a \"needs review\" expense whose merchant/cardholder did not resolve to a ServiceTitan vendor/employee can surface what the provider sent (with a not-found-in-ServiceTitan indicator) instead of a blank. Null when no provider details are recorded. */\nexport interface ExpenseTransactionExternalDetailsResponse {\n /** Merchant name as reported by the provider. */\n merchantName?: string | undefined;\n /** Cardholder display name as reported by the provider. */\n cardholderName?: string | undefined;\n /** Cardholder email as reported by the provider. */\n cardholderEmail?: string | undefined;\n /** Provider's own identifier for the cardholder. */\n cardholderUserId?: string | undefined;\n /** Human-readable GL account name the provider coded on the transaction header. */\n glAccountName?: string | undefined;\n /** GL account identifier the provider coded on the transaction header. */\n glAccountId?: string | undefined;\n}\n\nexport interface ExpenseTransactionLineItemResponse extends BaseEntityApiModel {\n /** Description of the line item. */\n description: string;\n /** Total dollar amount for this line item (Quantity × UnitPrice). */\n amount: number;\n /** Number of units purchased. */\n quantity: number;\n /** Dollar amount per unit. */\n unitPrice: number;\n /** Optional debit GL account override at the line level (defaults to header DebitAccountId if null). */\n generalLedgerAccountId?: number | undefined;\n /** Optional job override at the line level (defaults to header job if null). */\n jobId?: number | undefined;\n /** Optional project override at the line level (defaults to header project if null). */\n projectId?: number | undefined;\n /** Optional business unit override at the line level (defaults to header BU if null). */\n businessUnitId?: number | undefined;\n /** Optional budget code override at the line level (defaults to header BudgetCodeId if null). */\n budgetCodeId?: number | undefined;\n /** Denormalized project label for this line item. */\n projectLabels?: string | undefined;\n}\n\n/** Metadata information for an expense attachment (receipt). Not the actual file. */\nexport interface ExpenseAttachmentResponse extends BaseEntityApiModel {\n /** Sanitized file name for display and download. */\n filename: string;\n /** Original file name as uploaded by the user. */\n originalFilename: string;\n /** MIME content type. */\n contentType: string;\n /** File size in bytes. */\n fileSize: number;\n}\n\n/** One entry in the tenant's cardholder directory — a person who incurs expenses, carrying whichever identities are known. A person holding both a ServiceTitan and a provider identity is returned as a single entry exposing both, which is the point of the directory: selecting them returns their manual expenses and their card spend together. */\nexport interface ExpenseCardholderResponse {\n /** The directory row's surrogate id — the value the `cardholderIds` expense-list filter takes.\nStable across late-resolution convergence when the row is absorbed in place, but a row superseded by\nconvergence is deleted, so a previously-held id may retire. A retired id simply matches no expenses\nand returns success; it is never an error. */\n id: string;\n /** ServiceTitan employee id, when this person's ServiceTitan identity is known. May be an\n`Employee.Id` or a `Technician.Id` — never a `User.Id`. The corresponding\nexpense's `SpenderType` is the disambiguator where one exists; see\n`seam-spender-identity.md` for why this id space is polymorphic and the column is not split. */\n stEmployeeId?: number | undefined;\n /** Name of the external expense provider this entry's provider identity belongs to, when known.\nAlways the value carried on the expense, never a hardcoded provider name. */\n provider?: string | undefined;\n /** Provider-reported cardholder id, when this person's provider identity is known. */\n providerUserId?: string | undefined;\n /** Cached display label only — never an identity, and deliberately not unique: two people sharing one\nmailbox is common in the trades. Legitimately null, including alongside a null\nDisplayName; such an entry is still returned. */\n email?: string | undefined;\n /** Cached display label only — never an identity. When non-null it is authoritative: consumers\nshould use it as-is rather than re-deriving a label. When null, resolving a label instead requires\nchecking BOTH rosters against StEmployeeId (employees and technicians share one id\nspace and never collide), because the directory itself does not disambiguate which roster the id\nbelongs to. Legitimately null, including alongside a null Email; such an entry is\nstill returned rather than hidden. */\n displayName?: string | undefined;\n}\n\nexport interface CreateExpenseTransactionRequest {\n /** Tenant-scoped expense transaction display number. */\n number: string;\n /** The date the transaction occurred (from card statement). */\n transactionDate?: Date | undefined;\n /** Tax portion of the total. */\n tax: number;\n /** Shipping portion of the total. */\n shipping: number;\n /** Vendor where the expense was incurred. */\n vendorId: number;\n /** Business unit this expense is charged to. */\n businessUnitId?: number | undefined;\n /** Job this expense is associated with, if any. */\n jobId?: number | undefined;\n /** Project this expense is associated with, if any. */\n projectId?: number | undefined;\n /** Purchase order linked to this expense for two-way matching. */\n purchaseOrderId?: number | undefined;\n /** Employee (cardholder) who made the purchase. */\n employeeId?: number | undefined;\n /** Discriminates whether EmployeeId is an employee or a technician. Optional; null reads as Employee. */\n spenderType?: ExpenseSpenderType | undefined;\n /** Client-resolved display name of the spender identified by EmployeeId. Optional fallback used only if server-side name resolution misses. */\n employeeName?: string | undefined;\n /** Credit card GL account (Liability:Credit Card) this expense was charged to. */\n creditCardAccountId?: number | undefined;\n /** Last 4 digits of the card number. */\n cardNumberLast4?: string | undefined;\n /** Human-readable merchant category. */\n merchantCategory?: string | undefined;\n /** Merchant processing status (e.g. \"Pending\", \"Complete\", \"Error\", \"Declined\"). Defaults to \"Complete\" for manual input. */\n transactionStatus?: string | undefined;\n /** Provider-supplied context for the transaction status — e.g. decline reason, error message, or status-specific note. */\n transactionStatusDetails?: string | undefined;\n /** Free-text summary or notes for the expense. */\n summary?: string | undefined;\n /** Default debit GL account for the expense. Line items may override with their own GeneralLedgerAccountId. */\n debitAccountId?: number | undefined;\n /** Default budget code for the expense. Line items may override with their own BudgetCodeId. */\n budgetCodeId?: number | undefined;\n /** Denormalized project label(s) for display/export. */\n projectLabels?: string | undefined;\n /** Line items with expense GL accounts. */\n lineItems: ExpenseTransactionLineItemRequest[];\n}\n\nexport interface ExpenseTransactionLineItemRequest {\n /** Description of the line item. */\n description: string;\n /** Number of units purchased. */\n quantity: number;\n /** Dollar amount per unit. */\n unitPrice: number;\n /** Optional debit GL account override at the line level (defaults to header DebitAccountId if null). */\n generalLedgerAccountId?: number | undefined;\n /** Optional job override at the line level (defaults to header job if null). */\n jobId?: number | undefined;\n /** Optional project override at the line level (defaults to header project if null). */\n projectId?: number | undefined;\n /** Optional business unit override at the line level (defaults to header BU if null). */\n businessUnitId?: number | undefined;\n /** Optional budget code override at the line level (defaults to header BudgetCodeId if null). */\n budgetCodeId?: number | undefined;\n /** Denormalized project label for this line item. */\n projectLabels?: string | undefined;\n}\n\nexport interface UpdateExpenseTransactionRequest {\n /** Tenant-scoped expense transaction display number. */\n number: string;\n /** The date the transaction occurred (from card statement). */\n transactionDate?: Date | undefined;\n /** Tax portion of the total. */\n tax: number;\n /** Shipping portion of the total. */\n shipping: number;\n /** Vendor where the expense was incurred. */\n vendorId: number;\n /** Business unit this expense is charged to. */\n businessUnitId?: number | undefined;\n /** Job this expense is associated with, if any. */\n jobId?: number | undefined;\n /** Project this expense is associated with, if any. */\n projectId?: number | undefined;\n /** Purchase order linked to this expense for two-way matching. */\n purchaseOrderId?: number | undefined;\n /** Employee (cardholder) who made the purchase. */\n employeeId?: number | undefined;\n /** Discriminates whether EmployeeId is an employee or a technician. Optional; null reads as Employee. */\n spenderType?: ExpenseSpenderType | undefined;\n /** Client-resolved display name of the spender identified by EmployeeId. Optional fallback used only if server-side name resolution misses. */\n employeeName?: string | undefined;\n /** Credit card GL account (Liability:Credit Card) this expense was charged to. */\n creditCardAccountId?: number | undefined;\n /** Last 4 digits of the card number. */\n cardNumberLast4?: string | undefined;\n /** Human-readable merchant category (e.g. \"Supermarkets and grocery stores\").\nProvider-supplied for card-sourced expenses (e.g. Ramp's `sk_category_name`); free-text for manual entries. */\n merchantCategory?: string | undefined;\n /** Merchant processing status (e.g. \"Pending\", \"Complete\", \"Error\", \"Declined\"). */\n transactionStatus?: string | undefined;\n /** Provider-supplied context for the transaction status — e.g. decline reason, error message, or status-specific note. */\n transactionStatusDetails?: string | undefined;\n /** Free-text summary or notes for the expense. */\n summary?: string | undefined;\n /** Default debit GL account for the expense. Line items may override with their own GeneralLedgerAccountId. */\n debitAccountId?: number | undefined;\n /** Default budget code for the expense. Line items may override with their own BudgetCodeId. */\n budgetCodeId?: number | undefined;\n /** Denormalized project label(s) for display/export. */\n projectLabels?: string | undefined;\n /** Line items with expense GL accounts. Include Id for existing items, omit for new. */\n lineItems: UpdateExpenseTransactionLineItemRequest[];\n}\n\nexport interface UpdateExpenseTransactionLineItemRequest {\n /** Unique GUID for the line item: reuse the existing id to update a line, or supply a fresh\nGUID (e.g. `Guid.NewGuid()`) for a new one. Must be non-empty and unique within the\nrequest — null or an empty GUID is rejected with a 400 (UpdateAsync diffs the collection by id). */\n id?: string | undefined;\n /** Description of the line item. */\n description: string;\n /** Number of units purchased. */\n quantity: number;\n /** Dollar amount per unit. */\n unitPrice: number;\n /** Optional debit GL account override at the line level (defaults to header DebitAccountId if null). */\n generalLedgerAccountId?: number | undefined;\n /** Optional job override at the line level (defaults to header job if null). */\n jobId?: number | undefined;\n /** Optional project override at the line level (defaults to header project if null). */\n projectId?: number | undefined;\n /** Optional business unit override at the line level (defaults to header BU if null). */\n businessUnitId?: number | undefined;\n /** Optional budget code override at the line level (defaults to header BudgetCodeId if null). */\n budgetCodeId?: number | undefined;\n /** Denormalized project label for this line item. */\n projectLabels?: string | undefined;\n}\n\nexport interface UpdateExpenseSyncStatusResponse {\n /** Whether any expenses were updated. */\n updated: boolean;\n /** Number of expense transactions that were updated. */\n updatedCount: number;\n}\n\nexport interface UpdateExpenseSyncStatusRequest {\n /** IDs of the expense transactions to update. Maximum 500. */\n expenseIds: string[];\n /** Target sync status (e.g. \"Pending\", \"Posted\", \"Exported\"). */\n targetStatus: string;\n /** Batch ID. Required when transitioning to Posted. */\n batchId?: number | undefined;\n}\n\n/** Response for a batched raw-name read. Splits the two outcomes the caller has to treat differently instead of leaving them to be told apart by absence. */\nexport interface ListExpenseRawNamesResponse {\n /** One row per requested ID that resolved. A row whose names are both null is a terminal\noutcome — the provider reported no names, so there is nothing to backfill and no reason to retry.\n\nOrdered by ID within a single response. Note this differs from notFoundIds, which follows\nrequest order — match on ID rather than by position, and do not assume the two are parallel. The C#\nSDK splits large reads into batches and concatenates them, so its merged rows are ordered by ID only\nwithin each batch, not across the whole result. */\n rows: ExpenseRawNameResponse[];\n /** Requested IDs that did not resolve in this tenant. Distinct from a row with null names: these were\nnot read at all, so a backfill should retry them rather than record \"no raw name\". Duplicates in the\nrequest are collapsed before this is computed, so each unresolved ID appears once, in the order of\nits first occurrence in the request. */\n notFoundIds: string[];\n}\n\n/** Raw provider-reported names for one expense transaction, as captured before ServiceTitan vendor/employee resolution. A row exists for every requested ID that resolved, so both names being null is a terminal outcome — the provider reported none, and there is nothing to backfill. IDs that did not resolve are reported separately under notFoundIds rather than being left to be inferred from their absence here. */\nexport interface ExpenseRawNameResponse {\n /** Expense transaction ID. */\n id: string;\n /** Merchant name as reported by the provider. Null when the provider reported none. */\n merchantName?: string | undefined;\n /** Cardholder display name as reported by the provider. Null when the provider reported none. */\n cardholderName?: string | undefined;\n}\n\nexport interface ListExpenseRawNamesRequest {\n /** IDs of the expense transactions to read raw provider names for. Maximum 500 distinct IDs —\nduplicates are collapsed before the cap is applied, so 900 IDs that dedupe to 500 is accepted while\n501 distinct IDs is a 400. Empty is accepted and returns no rows.\n\nSeparately, the request body is capped at 256 KB (~6,700 IDs) as an allocation guard, so a batch\npadded with enough duplicates to exceed that is rejected with a 413 before the 500-distinct rule is\nevaluated. No sensible batch comes close. */\n expenseIds: string[];\n}\n\n/** Body for the promote endpoint: tokens previously returned from the draft-upload endpoint, to be associated with this expense. Filename is whatever was captured at draft-upload time (no caller-supplied override). */\nexport interface AddExpenseAttachmentsRequest {\n tokens: string[];\n}\n\nexport interface WellKnownGlAccountsResponse {\n uncategorizedExpenseAccountId?: number | undefined;\n}\n"],"names":["axios","injectable","inject","optional","symbolToken","makeCodedException","BASE_URL_TOKEN_ExpenseManagement","ExpenseManagement","list","tenantId","ids","cardholderIds","vendorIds","jobIds","projectIds","syncStatuses","transactionStatuses","receiptStatuses","dateFrom","dateTo","creditCardAccountIds","businessUnitIds","batchId","totalMin","totalMax","needsReview","includeUnqualifiedProviderTransactions","page","pageSize","sortBy","sortDirection","cancelToken","url_","undefined","Error","replace","encodeURIComponent","forEach","item","toJSON","options_","baseURL","baseUrl","url","method","headers","request","create","content_","data","listCardholders","get","id","update","delete","updateSyncStatus","listRawNames","retract","listAttachments","expenseId","downloadAttachment","attachmentId","deleteAttachment","promoteAttachments","getWellKnownGlAccounts","jsonParseReviver","ExpenseSpenderType"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kBAAkB,GAClB,kBAAkB,GAClB,wBAAwB;AACxB,mBAAmB;AACnB,mEAAmE;AACnE,oBAAoB;AACpB,wBAAwB;AACxB,uCAAuC;AAEvC,OAAOA,WAA8D,QAAQ;AAC7E,SAASC,UAAU,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,WAAW,QAAQ,0BAA0B;AACpF,SAASC,kBAAkB,QAAqB,UAAU;AAqG1D,OAAO,MAAMC,mCAAmCF,YAAoB,kBAAkB,OAAO;AAG7F,OAAO,MAAMG;IAMT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8BC,GACDC,KAAKC,QAAgB,EAAEC,GAAgC,EAAEC,aAA0C,EAAEC,SAAsC,EAAEC,MAAmC,EAAEC,UAAuC,EAAEC,YAAyC,EAAEC,mBAAgD,EAAEC,eAA4C,EAAEC,QAAiC,EAAEC,MAA+B,EAAEC,oBAAiD,EAAEC,eAA4C,EAAEC,OAAkC,EAAEC,QAAmC,EAAEC,QAAmC,EAAEC,WAAuC,EAAEC,sCAA2D,EAAEC,IAAwB,EAAEC,QAA4B,EAAEC,MAAiC,EAAEC,aAAwC,EAAEC,WAAyB,EAA2D;QACp7B,IAAIC,OAAO;QACX,IAAIvB,aAAawB,aAAaxB,aAAa,MACvC,MAAM,IAAIyB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,cAAcC,mBAAmB,KAAK3B;QAC1D,IAAIC,QAAQuB,aAAavB,QAAQ,MAC7BA,OAAOA,IAAI2B,OAAO,CAACC,CAAAA;YAAUN,QAAQ,SAASI,mBAAmB,KAAKE,QAAQ;QAAK;QACvF,IAAI3B,kBAAkBsB,aAAatB,kBAAkB,MACjDA,iBAAiBA,cAAc0B,OAAO,CAACC,CAAAA;YAAUN,QAAQ,mBAAmBI,mBAAmB,KAAKE,QAAQ;QAAK;QACrH,IAAI1B,cAAcqB,aAAarB,cAAc,MACzCA,aAAaA,UAAUyB,OAAO,CAACC,CAAAA;YAAUN,QAAQ,eAAeI,mBAAmB,KAAKE,QAAQ;QAAK;QACzG,IAAIzB,WAAWoB,aAAapB,WAAW,MACnCA,UAAUA,OAAOwB,OAAO,CAACC,CAAAA;YAAUN,QAAQ,YAAYI,mBAAmB,KAAKE,QAAQ;QAAK;QAChG,IAAIxB,eAAemB,aAAanB,eAAe,MAC3CA,cAAcA,WAAWuB,OAAO,CAACC,CAAAA;YAAUN,QAAQ,gBAAgBI,mBAAmB,KAAKE,QAAQ;QAAK;QAC5G,IAAIvB,iBAAiBkB,aAAalB,iBAAiB,MAC/CA,gBAAgBA,aAAasB,OAAO,CAACC,CAAAA;YAAUN,QAAQ,kBAAkBI,mBAAmB,KAAKE,QAAQ;QAAK;QAClH,IAAItB,wBAAwBiB,aAAajB,wBAAwB,MAC7DA,uBAAuBA,oBAAoBqB,OAAO,CAACC,CAAAA;YAAUN,QAAQ,yBAAyBI,mBAAmB,KAAKE,QAAQ;QAAK;QACvI,IAAIrB,oBAAoBgB,aAAahB,oBAAoB,MACrDA,mBAAmBA,gBAAgBoB,OAAO,CAACC,CAAAA;YAAUN,QAAQ,qBAAqBI,mBAAmB,KAAKE,QAAQ;QAAK;QAC3H,IAAIpB,aAAae,aAAaf,aAAa,MACvCc,QAAQ,cAAcI,mBAAmBlB,WAAW,KAAKA,SAASqB,MAAM,KAAK,MAAM;QACvF,IAAIpB,WAAWc,aAAad,WAAW,MACnCa,QAAQ,YAAYI,mBAAmBjB,SAAS,KAAKA,OAAOoB,MAAM,KAAK,MAAM;QACjF,IAAInB,yBAAyBa,aAAab,yBAAyB,MAC/DA,wBAAwBA,qBAAqBiB,OAAO,CAACC,CAAAA;YAAUN,QAAQ,0BAA0BI,mBAAmB,KAAKE,QAAQ;QAAK;QAC1I,IAAIjB,oBAAoBY,aAAaZ,oBAAoB,MACrDA,mBAAmBA,gBAAgBgB,OAAO,CAACC,CAAAA;YAAUN,QAAQ,qBAAqBI,mBAAmB,KAAKE,QAAQ;QAAK;QAC3H,IAAIhB,YAAYW,aAAaX,YAAY,MACrCU,QAAQ,aAAaI,mBAAmB,KAAKd,WAAW;QAC5D,IAAIC,aAAaU,aAAaV,aAAa,MACvCS,QAAQ,cAAcI,mBAAmB,KAAKb,YAAY;QAC9D,IAAIC,aAAaS,aAAaT,aAAa,MACvCQ,QAAQ,cAAcI,mBAAmB,KAAKZ,YAAY;QAC9D,IAAIC,gBAAgBQ,aAAaR,gBAAgB,MAC7CO,QAAQ,iBAAiBI,mBAAmB,KAAKX,eAAe;QACpE,IAAIC,2CAA2C,MAC3C,MAAM,IAAIQ,MAAM;aACf,IAAIR,2CAA2CO,WAChDD,QAAQ,4CAA4CI,mBAAmB,KAAKV,0CAA0C;QAC1H,IAAIC,SAAS,MACT,MAAM,IAAIO,MAAM;aACf,IAAIP,SAASM,WACdD,QAAQ,UAAUI,mBAAmB,KAAKT,QAAQ;QACtD,IAAIC,aAAa,MACb,MAAM,IAAIM,MAAM;aACf,IAAIN,aAAaK,WAClBD,QAAQ,cAAcI,mBAAmB,KAAKR,YAAY;QAC9D,IAAIC,WAAWI,aAAaJ,WAAW,MACnCG,QAAQ,YAAYI,mBAAmB,KAAKP,UAAU;QAC1D,IAAIC,kBAAkBG,aAAaH,kBAAkB,MACjDE,QAAQ,mBAAmBI,mBAAmB,KAAKN,iBAAiB;QACxEE,OAAOA,KAAKG,OAAO,CAAC,SAAS;QAE7B,IAAIK,WAA+B;YAC/BC,SAAS,IAAI,CAACC,OAAO;YACrBX;YACAY,KAAKX;YACLY,QAAQ;YACRC,SAAS;gBACL,gBAAgB;gBAChB,UAAU;YACd;QACJ;QAEA,OAAOxC,mBAAmBL,MAAM8C,OAAO,CAA4CN;IACvF;IAEA;;KAEC,GACDO,OAAOtC,QAAgB,EAAEqC,OAAwC,EAAEf,WAAyB,EAA4C;QACpI,IAAIC,OAAO;QACX,IAAIvB,aAAawB,aAAaxB,aAAa,MACvC,MAAM,IAAIyB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,cAAcC,mBAAmB,KAAK3B;QAC1DuB,OAAOA,KAAKG,OAAO,CAAC,SAAS;QAE7B,MAAMa,WAAWF;QAEjB,IAAIN,WAA+B;YAC/BC,SAAS,IAAI,CAACC,OAAO;YACrBX;YACAkB,MAAMD;YACNL,KAAKX;YACLY,QAAQ;YACRC,SAAS;gBACL,gBAAgB;gBAChB,UAAU;YACd;QACJ;QAEA,OAAOxC,mBAAmBL,MAAM8C,OAAO,CAA6BN;IACxE;IAEA;;;;KAIC,GACDU,gBAAgBzC,QAAgB,EAAEsB,WAAyB,EAA6C;QACpG,IAAIC,OAAO;QACX,IAAIvB,aAAawB,aAAaxB,aAAa,MACvC,MAAM,IAAIyB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,cAAcC,mBAAmB,KAAK3B;QAC1DuB,OAAOA,KAAKG,OAAO,CAAC,SAAS;QAE7B,IAAIK,WAA+B;YAC/BC,SAAS,IAAI,CAACC,OAAO;YACrBX;YACAY,KAAKX;YACLY,QAAQ;YACRC,SAAS;gBACL,gBAAgB;gBAChB,UAAU;YACd;QACJ;QAEA,OAAOxC,mBAAmBL,MAAM8C,OAAO,CAA8BN;IACzE;IAEA;;KAEC,GACDW,IAAI1C,QAAgB,EAAE2C,EAAU,EAAErB,WAAyB,EAA4C;QACnG,IAAIC,OAAO;QACX,IAAIvB,aAAawB,aAAaxB,aAAa,MACvC,MAAM,IAAIyB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,cAAcC,mBAAmB,KAAK3B;QAC1D,IAAI2C,OAAOnB,aAAamB,OAAO,MAC3B,MAAM,IAAIlB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,QAAQC,mBAAmB,KAAKgB;QACpDpB,OAAOA,KAAKG,OAAO,CAAC,SAAS;QAE7B,IAAIK,WAA+B;YAC/BC,SAAS,IAAI,CAACC,OAAO;YACrBX;YACAY,KAAKX;YACLY,QAAQ;YACRC,SAAS;gBACL,gBAAgB;gBAChB,UAAU;YACd;QACJ;QAEA,OAAOxC,mBAAmBL,MAAM8C,OAAO,CAA6BN;IACxE;IAEA;;KAEC,GACDa,OAAO5C,QAAgB,EAAE2C,EAAU,EAAEN,OAAwC,EAAEf,WAAyB,EAA4C;QAChJ,IAAIC,OAAO;QACX,IAAIvB,aAAawB,aAAaxB,aAAa,MACvC,MAAM,IAAIyB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,cAAcC,mBAAmB,KAAK3B;QAC1D,IAAI2C,OAAOnB,aAAamB,OAAO,MAC3B,MAAM,IAAIlB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,QAAQC,mBAAmB,KAAKgB;QACpDpB,OAAOA,KAAKG,OAAO,CAAC,SAAS;QAE7B,MAAMa,WAAWF;QAEjB,IAAIN,WAA+B;YAC/BC,SAAS,IAAI,CAACC,OAAO;YACrBX;YACAkB,MAAMD;YACNL,KAAKX;YACLY,QAAQ;YACRC,SAAS;gBACL,gBAAgB;gBAChB,UAAU;YACd;QACJ;QAEA,OAAOxC,mBAAmBL,MAAM8C,OAAO,CAA6BN;IACxE;IAEA;;KAEC,GACDc,OAAO7C,QAAgB,EAAE2C,EAAU,EAAErB,WAAyB,EAAsB;QAChF,IAAIC,OAAO;QACX,IAAIvB,aAAawB,aAAaxB,aAAa,MACvC,MAAM,IAAIyB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,cAAcC,mBAAmB,KAAK3B;QAC1D,IAAI2C,OAAOnB,aAAamB,OAAO,MAC3B,MAAM,IAAIlB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,QAAQC,mBAAmB,KAAKgB;QACpDpB,OAAOA,KAAKG,OAAO,CAAC,SAAS;QAE7B,IAAIK,WAA+B;YAC/BC,SAAS,IAAI,CAACC,OAAO;YACrBX;YACAY,KAAKX;YACLY,QAAQ;YACRC,SAAS;gBACL,gBAAgB;YACpB;QACJ;QAEA,OAAOxC,mBAAmBL,MAAM8C,OAAO,CAAON;IAClD;IAEA;;KAEC,GACDe,iBAAiB9C,QAAgB,EAAEqC,OAAuC,EAAEf,WAAyB,EAAiD;QAClJ,IAAIC,OAAO;QACX,IAAIvB,aAAawB,aAAaxB,aAAa,MACvC,MAAM,IAAIyB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,cAAcC,mBAAmB,KAAK3B;QAC1DuB,OAAOA,KAAKG,OAAO,CAAC,SAAS;QAE7B,MAAMa,WAAWF;QAEjB,IAAIN,WAA+B;YAC/BC,SAAS,IAAI,CAACC,OAAO;YACrBX;YACAkB,MAAMD;YACNL,KAAKX;YACLY,QAAQ;YACRC,SAAS;gBACL,gBAAgB;gBAChB,UAAU;YACd;QACJ;QAEA,OAAOxC,mBAAmBL,MAAM8C,OAAO,CAAkCN;IAC7E;IAEA;;;;;;;KAOC,GACDgB,aAAa/C,QAAgB,EAAEqC,OAAmC,EAAEf,WAAyB,EAA6C;QACtI,IAAIC,OAAO;QACX,IAAIvB,aAAawB,aAAaxB,aAAa,MACvC,MAAM,IAAIyB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,cAAcC,mBAAmB,KAAK3B;QAC1DuB,OAAOA,KAAKG,OAAO,CAAC,SAAS;QAE7B,MAAMa,WAAWF;QAEjB,IAAIN,WAA+B;YAC/BC,SAAS,IAAI,CAACC,OAAO;YACrBX;YACAkB,MAAMD;YACNL,KAAKX;YACLY,QAAQ;YACRC,SAAS;gBACL,gBAAgB;gBAChB,UAAU;YACd;QACJ;QAEA,OAAOxC,mBAAmBL,MAAM8C,OAAO,CAA8BN;IACzE;IAEA;;;;KAIC,GACDiB,QAAQhD,QAAgB,EAAE2C,EAAU,EAAErB,WAAyB,EAAsB;QACjF,IAAIC,OAAO;QACX,IAAIvB,aAAawB,aAAaxB,aAAa,MACvC,MAAM,IAAIyB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,cAAcC,mBAAmB,KAAK3B;QAC1D,IAAI2C,OAAOnB,aAAamB,OAAO,MAC3B,MAAM,IAAIlB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,QAAQC,mBAAmB,KAAKgB;QACpDpB,OAAOA,KAAKG,OAAO,CAAC,SAAS;QAE7B,IAAIK,WAA+B;YAC/BC,SAAS,IAAI,CAACC,OAAO;YACrBX;YACAY,KAAKX;YACLY,QAAQ;YACRC,SAAS;gBACL,gBAAgB;YACpB;QACJ;QAEA,OAAOxC,mBAAmBL,MAAM8C,OAAO,CAAON;IAClD;IAEA;;KAEC,GACDkB,gBAAgBjD,QAAgB,EAAEkD,SAAiB,EAAE5B,WAAyB,EAA6C;QACvH,IAAIC,OAAO;QACX,IAAIvB,aAAawB,aAAaxB,aAAa,MACvC,MAAM,IAAIyB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,cAAcC,mBAAmB,KAAK3B;QAC1D,IAAIkD,cAAc1B,aAAa0B,cAAc,MACzC,MAAM,IAAIzB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,eAAeC,mBAAmB,KAAKuB;QAC3D3B,OAAOA,KAAKG,OAAO,CAAC,SAAS;QAE7B,IAAIK,WAA+B;YAC/BC,SAAS,IAAI,CAACC,OAAO;YACrBX;YACAY,KAAKX;YACLY,QAAQ;YACRC,SAAS;gBACL,gBAAgB;gBAChB,UAAU;YACd;QACJ;QAEA,OAAOxC,mBAAmBL,MAAM8C,OAAO,CAA8BN;IACzE;IAEA;;KAEC,GACDoB,mBAAmBnD,QAAgB,EAAEkD,SAAiB,EAAEE,YAAoB,EAAE9B,WAAyB,EAAsB;QACzH,IAAIC,OAAO;QACX,IAAIvB,aAAawB,aAAaxB,aAAa,MACvC,MAAM,IAAIyB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,cAAcC,mBAAmB,KAAK3B;QAC1D,IAAIkD,cAAc1B,aAAa0B,cAAc,MACzC,MAAM,IAAIzB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,eAAeC,mBAAmB,KAAKuB;QAC3D,IAAIE,iBAAiB5B,aAAa4B,iBAAiB,MAC/C,MAAM,IAAI3B,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,kBAAkBC,mBAAmB,KAAKyB;QAC9D7B,OAAOA,KAAKG,OAAO,CAAC,SAAS;QAE7B,IAAIK,WAA+B;YAC/BC,SAAS,IAAI,CAACC,OAAO;YACrBX;YACAY,KAAKX;YACLY,QAAQ;YACRC,SAAS;gBACL,gBAAgB;YACpB;QACJ;QAEA,OAAOxC,mBAAmBL,MAAM8C,OAAO,CAAON;IAClD;IAEA;;KAEC,GACDsB,iBAAiBrD,QAAgB,EAAEkD,SAAiB,EAAEE,YAAoB,EAAE9B,WAAyB,EAAsB;QACvH,IAAIC,OAAO;QACX,IAAIvB,aAAawB,aAAaxB,aAAa,MACvC,MAAM,IAAIyB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,cAAcC,mBAAmB,KAAK3B;QAC1D,IAAIkD,cAAc1B,aAAa0B,cAAc,MACzC,MAAM,IAAIzB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,eAAeC,mBAAmB,KAAKuB;QAC3D,IAAIE,iBAAiB5B,aAAa4B,iBAAiB,MAC/C,MAAM,IAAI3B,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,kBAAkBC,mBAAmB,KAAKyB;QAC9D7B,OAAOA,KAAKG,OAAO,CAAC,SAAS;QAE7B,IAAIK,WAA+B;YAC/BC,SAAS,IAAI,CAACC,OAAO;YACrBX;YACAY,KAAKX;YACLY,QAAQ;YACRC,SAAS;gBACL,gBAAgB;YACpB;QACJ;QAEA,OAAOxC,mBAAmBL,MAAM8C,OAAO,CAAON;IAClD;IAEA;;;KAGC,GACDuB,mBAAmBtD,QAAgB,EAAEkD,SAAiB,EAAEb,OAAqC,EAAEf,WAAyB,EAA6C;QACjK,IAAIC,OAAO;QACX,IAAIvB,aAAawB,aAAaxB,aAAa,MACvC,MAAM,IAAIyB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,cAAcC,mBAAmB,KAAK3B;QAC1D,IAAIkD,cAAc1B,aAAa0B,cAAc,MACzC,MAAM,IAAIzB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,eAAeC,mBAAmB,KAAKuB;QAC3D3B,OAAOA,KAAKG,OAAO,CAAC,SAAS;QAE7B,MAAMa,WAAWF;QAEjB,IAAIN,WAA+B;YAC/BC,SAAS,IAAI,CAACC,OAAO;YACrBX;YACAkB,MAAMD;YACNL,KAAKX;YACLY,QAAQ;YACRC,SAAS;gBACL,gBAAgB;gBAChB,UAAU;YACd;QACJ;QAEA,OAAOxC,mBAAmBL,MAAM8C,OAAO,CAA8BN;IACzE;IAEA;;KAEC,GACDwB,uBAAuBvD,QAAgB,EAAEsB,WAAyB,EAA6C;QAC3G,IAAIC,OAAO;QACX,IAAIvB,aAAawB,aAAaxB,aAAa,MACvC,MAAM,IAAIyB,MAAM;QACpBF,OAAOA,KAAKG,OAAO,CAAC,cAAcC,mBAAmB,KAAK3B;QAC1DuB,OAAOA,KAAKG,OAAO,CAAC,SAAS;QAE7B,IAAIK,WAA+B;YAC/BC,SAAS,IAAI,CAACC,OAAO;YACrBX;YACAY,KAAKX;YACLY,QAAQ;YACRC,SAAS;gBACL,gBAAgB;gBAChB,UAAU;YACd;QACJ;QAEA,OAAOxC,mBAAmBL,MAAM8C,OAAO,CAA8BN;IACzE;IAhdA,YAAY,AAAuEE,UAAU,EAAE,CAAE;;QAFjG,uBAAUuB,oBAAV,KAAA;aAEmFvB,UAAAA;aAFzEuB,mBAAmEhC;IAG7E;AAgdJ;;;;;;;;;;AA6HA,k3CAAk3C,GACl3C,OAAO,IAAA,AAAKiC,4CAAAA;;;WAAAA;MAGX"}
1
+ {"version":3,"sources":["../src/expense-management.api.ts"],"sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n//----------------------\n// <auto-generated>\n// Generated with ApiClientGenerator, using the NSwag toolchain\n// </auto-generated>\n//----------------------\n// ReSharper disable InconsistentNaming\n\nimport axios, { AxiosRequestConfig, AxiosPromise, CancelToken } from 'axios';\nimport { injectable, inject, optional, symbolToken } from '@servicetitan/react-ioc';\nimport { makeCodedException, makeContent } from './utils';\n// @ts-ignore: needed for Date serialization if a DateTime parameter has an Unspecified attribute on it\nimport moment from 'moment';\n\nexport interface IExpenseManagement {\n /**\n * List expense transactions with optional filters.\n * @ids (optional) Filter by specific expense IDs.\n * @cardholderIds (optional) Filter by cardholder directory IDs (see the cardholders endpoint). Matches the expense's cardholder\n link by equality, so selecting a person who holds both a ServiceTitan and a provider identity\n returns their manual expenses and their card spend together. Multiple IDs OR within the set, and the\n whole filter is conjunctive with every other filter. Omitted or empty applies no filter at all.\n \n An unknown, foreign, or retired ID matches nothing and returns success — existence is deliberately\n not validated, because doing so would disclose that a row exists in another tenant and would turn a\n legitimately retired ID into an error. A malformed GUID is rejected by model binding.\n * @vendorIds (optional) Filter by vendor IDs.\n * @jobIds (optional) Filter by job IDs.\n * @projectIds (optional) Filter by project IDs.\n * @syncStatuses (optional) Filter by sync statuses (e.g. \"Pending\", \"Posted\", \"Exported\").\n * @transactionStatuses (optional) Filter by transaction statuses (e.g. \"Pending\", \"Complete\", \"Declined\").\n * @receiptStatuses (optional) Filter by receipt statuses (e.g. \"Missing\", \"Attached\", \"Verified\").\n * @dateFrom (optional) Filter by transaction date (inclusive start).\n * @dateTo (optional) Filter by transaction date (inclusive end).\n * @creditCardAccountIds (optional) Filter by credit card GL account IDs.\n * @businessUnitIds (optional) Filter by business unit IDs.\n * @batchId (optional) Filter by batch ID.\n * @totalMin (optional) Filter by minimum total cost.\n * @totalMax (optional) Filter by maximum total cost.\n * @needsReview (optional) Filter by review state (missing ST mappings such as vendor, cardholder, job, or project). When true, return only transactions that need review; when false, return only transactions that do not; when null (default), the filter is not applied and both are returned.\n * @includeUnqualifiedProviderTransactions (optional) When false (default), provider-originated transactions are returned only once they have qualified (cleared by the card network AND marked ready by the provider); manual transactions are always returned. When true, un-qualified provider transactions (pending / not-ready) are also returned. Use true only for show-everything views.\n * @page (optional) Page number (1-based). Defaults to 1.\n * @pageSize (optional) Number of items per page. Defaults to 50.\n * @sortBy (optional) Property name to sort by (e.g. \"transactionDate\", \"total\", \"syncStatus\"). Defaults to \"transactionDate\".\n * @sortDirection (optional) Sort direction: \"asc\" or \"desc\". Defaults to \"desc\".\n */\n list(tenantId: number, ids: string[] | null | undefined, cardholderIds: string[] | null | undefined, vendorIds: number[] | null | undefined, jobIds: number[] | null | undefined, projectIds: number[] | null | undefined, syncStatuses: string[] | null | undefined, transactionStatuses: string[] | null | undefined, receiptStatuses: string[] | null | undefined, dateFrom: Date | null | undefined, dateTo: Date | null | undefined, creditCardAccountIds: number[] | null | undefined, businessUnitIds: number[] | null | undefined, batchId: number | null | undefined, totalMin: number | null | undefined, totalMax: number | null | undefined, needsReview: boolean | null | undefined, includeUnqualifiedProviderTransactions: boolean | undefined, page: number | undefined, pageSize: number | undefined, sortBy: string | null | undefined, sortDirection: string | null | undefined, cancelToken?: CancelToken): AxiosPromise<PagedResponseOfExpenseTransactionResponse>;\n /**\n * Create a new expense transaction\n */\n create(tenantId: number, request: CreateExpenseTransactionRequest, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse>;\n /**\n * List the tenant's cardholder directory — one entry per person, carrying whichever of the\n ServiceTitan and provider identities are known. Each entry's id is the value the\n `cardholderIds` filter on the expense list takes.\n */\n listCardholders(tenantId: number, cancelToken?: CancelToken): AxiosPromise<ExpenseCardholderResponse[]>;\n /**\n * Get a single expense transaction by expense ID\n */\n get(tenantId: number, id: string, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse>;\n /**\n * Update an existing expense transaction\n */\n update(tenantId: number, id: string, request: UpdateExpenseTransactionRequest, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse>;\n /**\n * Delete an expense transaction (only if Pending)\n */\n delete(tenantId: number, id: string, cancelToken?: CancelToken): AxiosPromise<void>;\n /**\n * Update sync status for one or more expense transactions (used by monolith batch posting).\n */\n updateSyncStatus(tenantId: number, request: UpdateExpenseSyncStatusRequest, cancelToken?: CancelToken): AxiosPromise<UpdateExpenseSyncStatusResponse>;\n /**\n * Read the raw provider-reported merchant/cardholder names for a batch of expenses (used by the\n monolith's historical name backfill). POST rather than GET because 500 GUIDs overflow the request\n line. Deliberately ignores the default list visibility filter: a row with null names means the\n provider reported none (terminal — nothing to backfill), while an ID returned under\n `notFoundIds` did not resolve and should be retried. Unpaged — over 500 distinct IDs is a 400,\n never a silent truncation. Requires the `ExpenseSync` permission.\n */\n listRawNames(tenantId: number, request: ListExpenseRawNamesRequest, cancelToken?: CancelToken): AxiosPromise<ListExpenseRawNamesResponse>;\n /**\n * Mark an expense as \"not a ServiceTitan expense\" (outbound retract). Writes\n `is_st_expense=\"false\"` to the provider, persists `IsStExpense=false`, and removes the\n monolith projection. Idempotent: a no-longer-ST expense returns 200 with no provider call.\n */\n retract(tenantId: number, id: string, cancelToken?: CancelToken): AxiosPromise<void>;\n /**\n * List attachments for an expense transaction\n */\n listAttachments(tenantId: number, expenseId: string, cancelToken?: CancelToken): AxiosPromise<ExpenseAttachmentResponse[]>;\n /**\n * Download an attachment file\n */\n downloadAttachment(tenantId: number, expenseId: string, attachmentId: string, cancelToken?: CancelToken): AxiosPromise<void>;\n /**\n * Delete an attachment from an expense transaction\n */\n deleteAttachment(tenantId: number, expenseId: string, attachmentId: string, cancelToken?: CancelToken): AxiosPromise<void>;\n /**\n * Bind one or more draft attachment tokens (from the draft-upload endpoint) to this\n expense transaction as permanent attachments.\n */\n promoteAttachments(tenantId: number, expenseId: string, request: AddExpenseAttachmentsRequest, cancelToken?: CancelToken): AxiosPromise<ExpenseAttachmentResponse[]>;\n /**\n * Get well-known GL account ids for the tenant (from cache). Returns null ids when the cache is cold or degraded.\n */\n getWellKnownGlAccounts(tenantId: number, cancelToken?: CancelToken): AxiosPromise<WellKnownGlAccountsResponse>;\n}\n\nexport const BASE_URL_TOKEN_ExpenseManagement = symbolToken<string>('BASE_URL_TOKEN', false);\n\n@injectable()\nexport class ExpenseManagement implements IExpenseManagement {\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@inject(BASE_URL_TOKEN_ExpenseManagement) @optional() private readonly baseUrl = \"\") {\n }\n\n /**\n * List expense transactions with optional filters.\n * @ids (optional) Filter by specific expense IDs.\n * @cardholderIds (optional) Filter by cardholder directory IDs (see the cardholders endpoint). Matches the expense's cardholder\n link by equality, so selecting a person who holds both a ServiceTitan and a provider identity\n returns their manual expenses and their card spend together. Multiple IDs OR within the set, and the\n whole filter is conjunctive with every other filter. Omitted or empty applies no filter at all.\n \n An unknown, foreign, or retired ID matches nothing and returns success — existence is deliberately\n not validated, because doing so would disclose that a row exists in another tenant and would turn a\n legitimately retired ID into an error. A malformed GUID is rejected by model binding.\n * @vendorIds (optional) Filter by vendor IDs.\n * @jobIds (optional) Filter by job IDs.\n * @projectIds (optional) Filter by project IDs.\n * @syncStatuses (optional) Filter by sync statuses (e.g. \"Pending\", \"Posted\", \"Exported\").\n * @transactionStatuses (optional) Filter by transaction statuses (e.g. \"Pending\", \"Complete\", \"Declined\").\n * @receiptStatuses (optional) Filter by receipt statuses (e.g. \"Missing\", \"Attached\", \"Verified\").\n * @dateFrom (optional) Filter by transaction date (inclusive start).\n * @dateTo (optional) Filter by transaction date (inclusive end).\n * @creditCardAccountIds (optional) Filter by credit card GL account IDs.\n * @businessUnitIds (optional) Filter by business unit IDs.\n * @batchId (optional) Filter by batch ID.\n * @totalMin (optional) Filter by minimum total cost.\n * @totalMax (optional) Filter by maximum total cost.\n * @needsReview (optional) Filter by review state (missing ST mappings such as vendor, cardholder, job, or project). When true, return only transactions that need review; when false, return only transactions that do not; when null (default), the filter is not applied and both are returned.\n * @includeUnqualifiedProviderTransactions (optional) When false (default), provider-originated transactions are returned only once they have qualified (cleared by the card network AND marked ready by the provider); manual transactions are always returned. When true, un-qualified provider transactions (pending / not-ready) are also returned. Use true only for show-everything views.\n * @page (optional) Page number (1-based). Defaults to 1.\n * @pageSize (optional) Number of items per page. Defaults to 50.\n * @sortBy (optional) Property name to sort by (e.g. \"transactionDate\", \"total\", \"syncStatus\"). Defaults to \"transactionDate\".\n * @sortDirection (optional) Sort direction: \"asc\" or \"desc\". Defaults to \"desc\".\n */\n list(tenantId: number, ids: string[] | null | undefined, cardholderIds: string[] | null | undefined, vendorIds: number[] | null | undefined, jobIds: number[] | null | undefined, projectIds: number[] | null | undefined, syncStatuses: string[] | null | undefined, transactionStatuses: string[] | null | undefined, receiptStatuses: string[] | null | undefined, dateFrom: Date | null | undefined, dateTo: Date | null | undefined, creditCardAccountIds: number[] | null | undefined, businessUnitIds: number[] | null | undefined, batchId: number | null | undefined, totalMin: number | null | undefined, totalMax: number | null | undefined, needsReview: boolean | null | undefined, includeUnqualifiedProviderTransactions: boolean | undefined, page: number | undefined, pageSize: number | undefined, sortBy: string | null | undefined, sortDirection: string | null | undefined, cancelToken?: CancelToken): AxiosPromise<PagedResponseOfExpenseTransactionResponse> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (ids !== undefined && ids !== null)\n ids && ids.forEach(item => { url_ += \"ids=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (cardholderIds !== undefined && cardholderIds !== null)\n cardholderIds && cardholderIds.forEach(item => { url_ += \"cardholderIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (vendorIds !== undefined && vendorIds !== null)\n vendorIds && vendorIds.forEach(item => { url_ += \"vendorIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (jobIds !== undefined && jobIds !== null)\n jobIds && jobIds.forEach(item => { url_ += \"jobIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (projectIds !== undefined && projectIds !== null)\n projectIds && projectIds.forEach(item => { url_ += \"projectIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (syncStatuses !== undefined && syncStatuses !== null)\n syncStatuses && syncStatuses.forEach(item => { url_ += \"syncStatuses=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (transactionStatuses !== undefined && transactionStatuses !== null)\n transactionStatuses && transactionStatuses.forEach(item => { url_ += \"transactionStatuses=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (receiptStatuses !== undefined && receiptStatuses !== null)\n receiptStatuses && receiptStatuses.forEach(item => { url_ += \"receiptStatuses=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (dateFrom !== undefined && dateFrom !== null)\n url_ += \"dateFrom=\" + encodeURIComponent(dateFrom ? \"\" + dateFrom.toJSON() : \"\") + \"&\";\n if (dateTo !== undefined && dateTo !== null)\n url_ += \"dateTo=\" + encodeURIComponent(dateTo ? \"\" + dateTo.toJSON() : \"\") + \"&\";\n if (creditCardAccountIds !== undefined && creditCardAccountIds !== null)\n creditCardAccountIds && creditCardAccountIds.forEach(item => { url_ += \"creditCardAccountIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (businessUnitIds !== undefined && businessUnitIds !== null)\n businessUnitIds && businessUnitIds.forEach(item => { url_ += \"businessUnitIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (batchId !== undefined && batchId !== null)\n url_ += \"batchId=\" + encodeURIComponent(\"\" + batchId) + \"&\";\n if (totalMin !== undefined && totalMin !== null)\n url_ += \"totalMin=\" + encodeURIComponent(\"\" + totalMin) + \"&\";\n if (totalMax !== undefined && totalMax !== null)\n url_ += \"totalMax=\" + encodeURIComponent(\"\" + totalMax) + \"&\";\n if (needsReview !== undefined && needsReview !== null)\n url_ += \"needsReview=\" + encodeURIComponent(\"\" + needsReview) + \"&\";\n if (includeUnqualifiedProviderTransactions === null)\n throw new Error(\"The parameter 'includeUnqualifiedProviderTransactions' cannot be null.\");\n else if (includeUnqualifiedProviderTransactions !== undefined)\n url_ += \"includeUnqualifiedProviderTransactions=\" + encodeURIComponent(\"\" + includeUnqualifiedProviderTransactions) + \"&\";\n if (page === null)\n throw new Error(\"The parameter 'page' cannot be null.\");\n else if (page !== undefined)\n url_ += \"page=\" + encodeURIComponent(\"\" + page) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"pageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (sortBy !== undefined && sortBy !== null)\n url_ += \"sortBy=\" + encodeURIComponent(\"\" + sortBy) + \"&\";\n if (sortDirection !== undefined && sortDirection !== null)\n url_ += \"sortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<PagedResponseOfExpenseTransactionResponse>(options_));\n }\n\n /**\n * Create a new expense transaction\n */\n create(tenantId: number, request: CreateExpenseTransactionRequest, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = request;\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n data: content_,\n url: url_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<ExpenseTransactionResponse>(options_));\n }\n\n /**\n * List the tenant's cardholder directory — one entry per person, carrying whichever of the\n ServiceTitan and provider identities are known. Each entry's id is the value the\n `cardholderIds` filter on the expense list takes.\n */\n listCardholders(tenantId: number, cancelToken?: CancelToken): AxiosPromise<ExpenseCardholderResponse[]> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/cardholders\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<ExpenseCardholderResponse[]>(options_));\n }\n\n /**\n * Get a single expense transaction by expense ID\n */\n get(tenantId: number, id: string, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<ExpenseTransactionResponse>(options_));\n }\n\n /**\n * Update an existing expense transaction\n */\n update(tenantId: number, id: string, request: UpdateExpenseTransactionRequest, cancelToken?: CancelToken): AxiosPromise<ExpenseTransactionResponse> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = request;\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n data: content_,\n url: url_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<ExpenseTransactionResponse>(options_));\n }\n\n /**\n * Delete an expense transaction (only if Pending)\n */\n delete(tenantId: number, id: string, cancelToken?: CancelToken): AxiosPromise<void> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return makeCodedException(axios.request<void>(options_));\n }\n\n /**\n * Update sync status for one or more expense transactions (used by monolith batch posting).\n */\n updateSyncStatus(tenantId: number, request: UpdateExpenseSyncStatusRequest, cancelToken?: CancelToken): AxiosPromise<UpdateExpenseSyncStatusResponse> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/sync-status\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = request;\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n data: content_,\n url: url_,\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<UpdateExpenseSyncStatusResponse>(options_));\n }\n\n /**\n * Read the raw provider-reported merchant/cardholder names for a batch of expenses (used by the\n monolith's historical name backfill). POST rather than GET because 500 GUIDs overflow the request\n line. Deliberately ignores the default list visibility filter: a row with null names means the\n provider reported none (terminal — nothing to backfill), while an ID returned under\n `notFoundIds` did not resolve and should be retried. Unpaged — over 500 distinct IDs is a 400,\n never a silent truncation. Requires the `ExpenseSync` permission.\n */\n listRawNames(tenantId: number, request: ListExpenseRawNamesRequest, cancelToken?: CancelToken): AxiosPromise<ListExpenseRawNamesResponse> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/raw-names\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = request;\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n data: content_,\n url: url_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<ListExpenseRawNamesResponse>(options_));\n }\n\n /**\n * Mark an expense as \"not a ServiceTitan expense\" (outbound retract). Writes\n `is_st_expense=\"false\"` to the provider, persists `IsStExpense=false`, and removes the\n monolith projection. Idempotent: a no-longer-ST expense returns 200 with no provider call.\n */\n retract(tenantId: number, id: string, cancelToken?: CancelToken): AxiosPromise<void> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{id}/retract\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return makeCodedException(axios.request<void>(options_));\n }\n\n /**\n * List attachments for an expense transaction\n */\n listAttachments(tenantId: number, expenseId: string, cancelToken?: CancelToken): AxiosPromise<ExpenseAttachmentResponse[]> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{expenseId}/attachments\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (expenseId === undefined || expenseId === null)\n throw new Error(\"The parameter 'expenseId' must be defined.\");\n url_ = url_.replace(\"{expenseId}\", encodeURIComponent(\"\" + expenseId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<ExpenseAttachmentResponse[]>(options_));\n }\n\n /**\n * Download an attachment file\n */\n downloadAttachment(tenantId: number, expenseId: string, attachmentId: string, cancelToken?: CancelToken): AxiosPromise<void> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{expenseId}/attachments/{attachmentId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (expenseId === undefined || expenseId === null)\n throw new Error(\"The parameter 'expenseId' must be defined.\");\n url_ = url_.replace(\"{expenseId}\", encodeURIComponent(\"\" + expenseId));\n if (attachmentId === undefined || attachmentId === null)\n throw new Error(\"The parameter 'attachmentId' must be defined.\");\n url_ = url_.replace(\"{attachmentId}\", encodeURIComponent(\"\" + attachmentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return makeCodedException(axios.request<void>(options_));\n }\n\n /**\n * Delete an attachment from an expense transaction\n */\n deleteAttachment(tenantId: number, expenseId: string, attachmentId: string, cancelToken?: CancelToken): AxiosPromise<void> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{expenseId}/attachments/{attachmentId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (expenseId === undefined || expenseId === null)\n throw new Error(\"The parameter 'expenseId' must be defined.\");\n url_ = url_.replace(\"{expenseId}\", encodeURIComponent(\"\" + expenseId));\n if (attachmentId === undefined || attachmentId === null)\n throw new Error(\"The parameter 'attachmentId' must be defined.\");\n url_ = url_.replace(\"{attachmentId}\", encodeURIComponent(\"\" + attachmentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return makeCodedException(axios.request<void>(options_));\n }\n\n /**\n * Bind one or more draft attachment tokens (from the draft-upload endpoint) to this\n expense transaction as permanent attachments.\n */\n promoteAttachments(tenantId: number, expenseId: string, request: AddExpenseAttachmentsRequest, cancelToken?: CancelToken): AxiosPromise<ExpenseAttachmentResponse[]> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/{expenseId}/attachments/promote\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (expenseId === undefined || expenseId === null)\n throw new Error(\"The parameter 'expenseId' must be defined.\");\n url_ = url_.replace(\"{expenseId}\", encodeURIComponent(\"\" + expenseId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = request;\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n data: content_,\n url: url_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<ExpenseAttachmentResponse[]>(options_));\n }\n\n /**\n * Get well-known GL account ids for the tenant (from cache). Returns null ids when the cache is cold or degraded.\n */\n getWellKnownGlAccounts(tenantId: number, cancelToken?: CancelToken): AxiosPromise<WellKnownGlAccountsResponse> {\n let url_ = \"/v1/tenant/{tenantId}/expense-transactions/gl-accounts/well-known\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = <AxiosRequestConfig>{\n baseURL: this.baseUrl,\n cancelToken,\n url: url_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return makeCodedException(axios.request<WellKnownGlAccountsResponse>(options_));\n }\n}\n\n/** Generic paged response wrapper with total count for pagination support. */\nexport interface PagedResponseOfExpenseTransactionResponse {\n /** Data collection */\n data: ExpenseTransactionResponse[];\n /** Current page number */\n page: number;\n /** Page size */\n pageSize: number;\n /** Total count of items (null if pagination not required) */\n totalCount?: number | undefined;\n /** Whether there are more pages */\n hasMore: boolean;\n}\n\nexport interface BaseEntityApiModel {\n id: string;\n createdOn: Date;\n modifiedOn: Date;\n}\n\nexport interface ExpenseTransactionResponse extends BaseEntityApiModel {\n /** Tenant that owns this expense. */\n tenantId: number;\n /** Canonical card transaction ID used by Card Transactions page routes. */\n cardTransactionId?: string | undefined;\n /** Tenant-scoped expense transaction display number. */\n number: string;\n /** Free-text summary or notes for the expense. */\n summary?: string | undefined;\n /** The date the transaction occurred (from card statement). */\n transactionDate?: Date | undefined;\n /** Computed total: sum of line item amounts + tax + shipping. Negative for refunds. */\n total: number;\n /** True when this transaction is a refund/reversal rather than a charge. */\n isRefund: boolean;\n /** Provider id of the parent charge this refund reverses; null otherwise. */\n parentExternalId?: string | undefined;\n /** Internal MOS ExpenseId of the parent charge this refund reverses, when known; null otherwise. */\n parentExpenseId?: string | undefined;\n /** IDs of refund transactions that reference this expense as their parent.\nPopulated on GET-by-id only; null on list responses. Empty list when no refunds exist. */\n refundExpenseIds?: string[] | undefined;\n /** Tax portion of the total. */\n tax: number;\n /** Shipping portion of the total. */\n shipping: number;\n /** Vendor where the expense was incurred. */\n vendorId: number;\n /** True when VendorId was bound via an explicit merchant→vendor mapping rather than an\nexact-name match, a default vendor, or left unbound. Lets the UI show \"Mapped to {vendor}\" beneath\nthe raw merchant name. Reflects the source stamped at ingest, so it stays correct after a remap. */\n vendorBoundByMapping: boolean;\n /** Business unit this expense is charged to. */\n businessUnitId?: number | undefined;\n /** Job this expense is associated with, if any. */\n jobId?: number | undefined;\n /** Project this expense is associated with, if any. */\n projectId?: number | undefined;\n /** Purchase order linked to this expense for two-way matching. */\n purchaseOrderId?: number | undefined;\n /** Employee (cardholder) who made the purchase. */\n employeeId?: number | undefined;\n /** Discriminates whether EmployeeId refers to an employee or a technician.\nNon-nullable: a persisted null normalizes to Employee. */\n spenderType: ExpenseSpenderType;\n /** Credit card GL account (Liability:Credit Card) this expense was charged to. */\n creditCardAccountId?: number | undefined;\n /** Merchant processing status (e.g. Pending, Complete, Error, Declined). */\n transactionStatus: string;\n /** Provider-supplied context for the transaction status — e.g. decline reason, error message, or status-specific note. */\n transactionStatusDetails?: string | undefined;\n /** Computed field: true if essential ST-related bindings are not set for the transaction (such as VendorId, cardholder, etc). */\n needsReview: boolean;\n /** MOS-owned export-readiness headline (e.g. Pending, ReadyForExport, Exported). Composed by\nExpenseStatusRules; folds in NeedsReview and ProviderRequirementsMet. */\n expenseStatus: string;\n /** Whether the upstream card provider considers this transaction's requirements met and approved.\nTri-state: null = provider has not yet determined (never coerced to false). Distinct from\nNeedsReview, which reflects ServiceTitan binding gaps rather than provider sign-off. */\n providerRequirementsMet?: boolean | undefined;\n /** Status of receipt documentation (e.g. Pending, Received). */\n receiptStatus: string;\n /** Last 4 digits of the card number. */\n cardNumberLast4?: string | undefined;\n /** Accounting sync/export status (e.g. Pending, Posted, Exported). */\n syncStatus: string;\n /** Batch this expense was posted in, if any. */\n batchId?: number | undefined;\n /** Identifier from the external expense provider (e.g. Ramp transaction ID). */\n externalId?: string | undefined;\n /** Name of the external provider (e.g. \"Ramp\"). */\n externalSource?: string | undefined;\n /** Card identifier from the external provider (e.g. Ramp card_id). */\n externalCardId?: string | undefined;\n /** Human-readable merchant category (e.g. \"Supermarkets and grocery stores\").\nProvider-supplied for card-sourced expenses (e.g. Ramp's `sk_category_name`); free-text for manual entries. */\n merchantCategory?: string | undefined;\n /** Default debit GL account for the expense. Line items may override with their own GeneralLedgerAccountId. */\n debitAccountId?: number | undefined;\n /** Default budget code for the expense. Line items may override with their own BudgetCodeId. */\n budgetCodeId?: number | undefined;\n /** True when the debit GL account was assigned via the safe-degrade fallback (the tenant's\nUncategorized account) rather than a confident binding. Mirrors the persisted\nExpenseTransaction.DebitGlFallbackApplied and is folded into NeedsReview; surfaced so the UI\ncan warn that the GL account needs correcting. */\n debitGlFallbackApplied: boolean;\n /** True when this expense transaction originated in ServiceTitan (as opposed to being sourced\nentirely from an external provider). Tri-state: null means unknown/not set. */\n isStExpense?: boolean | undefined;\n /** ServiceTitan-internal reference number for this expense, when it originated in ST. Null for\nprovider-sourced transactions. A blank value on an ST expense is folded into NeedsReview;\nsurfaced so the UI can explain the review reason. */\n stReferenceNumber?: string | undefined;\n /** Denormalized project label(s) for display/export. */\n projectLabels?: string | undefined;\n /** Provider-reported (external) values, captured verbatim before ServiceTitan resolution. Surfaced\nso a \"needs review\" expense whose merchant/cardholder did not resolve to a ServiceTitan\nvendor/employee can show what the provider sent. Null when no provider details are recorded. */\n externalDetails?: ExpenseTransactionExternalDetailsResponse;\n /** Line items with expense GL accounts. */\n lineItems: ExpenseTransactionLineItemResponse[];\n /** Receipt attachments. File content is in Azure Blob Storage; these are metadata records. */\n attachments: ExpenseAttachmentResponse[];\n}\n\n/** Discriminates who an expense's spender-identity columns (`EmployeeId`/`EmployeeName`) refer to — the same monolith employee/technician id space that ExpenseTransaction has always stored, now disambiguated so name resolution can route to the right Public API surface. Employee = 0 / Technician = 1 are wire values, pinned because three repos decode them positionally — MOS, the monolith, and any future consumer of the outbound event. Renumbering or reordering the members is a breaking change caught only by ExpenseSpenderTypeContractTests (UNIT-105). Declare new members with an explicit value, at the end, never renumbering an existing one. null on the entity's SpenderType column reads as — which is exactly why Employee = 0 must stay pinned at zero: every pre-existing row and every pre-upgrade event has no value here, and the absent-means-Employee default depends on zero being that value. Realigning to match the monolith's ordering would trade a mappable hazard for a silent data-wide default inversion. Never cast to or from a monolith EmployeeType. The monolith declares 15 same-named EmployeeType enums, and Model/Timesheets/EmployeeType is the mirror image of this one (Technician = 0, Employee = 1). An (int) bridge compiles cleanly and silently inverts the tag, mistagging a financial record with no error anywhere. Map member-by-member, by name, if a bridge is ever needed. */\nexport enum ExpenseSpenderType {\n Employee = 0,\n Technician = 1,\n}\n\n/** Provider-reported (external) values for an expense transaction, captured verbatim as the card provider sent them. Present so a \"needs review\" expense whose merchant/cardholder did not resolve to a ServiceTitan vendor/employee can surface what the provider sent (with a not-found-in-ServiceTitan indicator) instead of a blank. Null when no provider details are recorded. */\nexport interface ExpenseTransactionExternalDetailsResponse {\n /** Merchant name as reported by the provider. */\n merchantName?: string | undefined;\n /** Cardholder display name as reported by the provider. */\n cardholderName?: string | undefined;\n /** Cardholder email as reported by the provider. */\n cardholderEmail?: string | undefined;\n /** Provider's own identifier for the cardholder. */\n cardholderUserId?: string | undefined;\n /** Human-readable GL account name the provider coded on the transaction header. */\n glAccountName?: string | undefined;\n /** GL account identifier the provider coded on the transaction header. */\n glAccountId?: string | undefined;\n}\n\nexport interface ExpenseTransactionLineItemResponse extends BaseEntityApiModel {\n /** Description of the line item. */\n description: string;\n /** Total dollar amount for this line item (Quantity × UnitPrice). */\n amount: number;\n /** Number of units purchased. */\n quantity: number;\n /** Dollar amount per unit. */\n unitPrice: number;\n /** Optional debit GL account override at the line level (defaults to header DebitAccountId if null). */\n generalLedgerAccountId?: number | undefined;\n /** Optional job override at the line level (defaults to header job if null). */\n jobId?: number | undefined;\n /** Optional project override at the line level (defaults to header project if null). */\n projectId?: number | undefined;\n /** Optional business unit override at the line level (defaults to header BU if null). */\n businessUnitId?: number | undefined;\n /** Optional budget code override at the line level (defaults to header BudgetCodeId if null). */\n budgetCodeId?: number | undefined;\n /** Denormalized project label for this line item. */\n projectLabels?: string | undefined;\n}\n\n/** Metadata information for an expense attachment (receipt). Not the actual file. */\nexport interface ExpenseAttachmentResponse extends BaseEntityApiModel {\n /** Sanitized file name for display and download. */\n filename: string;\n /** Original file name as uploaded by the user. */\n originalFilename: string;\n /** MIME content type. */\n contentType: string;\n /** File size in bytes. */\n fileSize: number;\n}\n\n/** One entry in the tenant's cardholder directory — a person who incurs expenses, carrying whichever identities are known. A person holding both a ServiceTitan and a provider identity is returned as a single entry exposing both, which is the point of the directory: selecting them returns their manual expenses and their card spend together. */\nexport interface ExpenseCardholderResponse {\n /** The directory row's surrogate id — the value the `cardholderIds` expense-list filter takes.\nStable across late-resolution convergence when the row is absorbed in place, but a row superseded by\nconvergence is deleted, so a previously-held id may retire. A retired id simply matches no expenses\nand returns success; it is never an error. */\n id: string;\n /** ServiceTitan employee id, when this person's ServiceTitan identity is known. May be an\n`Employee.Id` or a `Technician.Id` — never a `User.Id`. The corresponding\nexpense's `SpenderType` is the disambiguator where one exists; see\n`seam-spender-identity.md` for why this id space is polymorphic and the column is not split. */\n stEmployeeId?: number | undefined;\n /** Name of the external expense provider this entry's provider identity belongs to, when known.\nAlways the value carried on the expense, never a hardcoded provider name. */\n provider?: string | undefined;\n /** Provider-reported cardholder id, when this person's provider identity is known. */\n providerUserId?: string | undefined;\n /** Cached display label only — never an identity, and deliberately not unique: two people sharing one\nmailbox is common in the trades. Legitimately null, including alongside a null\nDisplayName; such an entry is still returned. */\n email?: string | undefined;\n /** Cached display label only — never an identity. When non-null it is authoritative: consumers\nshould use it as-is rather than re-deriving a label. When null, resolving a label instead requires\nchecking BOTH rosters against StEmployeeId (employees and technicians share one id\nspace and never collide), because the directory itself does not disambiguate which roster the id\nbelongs to. Legitimately null, including alongside a null Email; such an entry is\nstill returned rather than hidden. */\n displayName?: string | undefined;\n}\n\nexport interface CreateExpenseTransactionRequest {\n /** Tenant-scoped expense transaction display number. */\n number: string;\n /** The date the transaction occurred (from card statement). */\n transactionDate?: Date | undefined;\n /** Tax portion of the total. */\n tax: number;\n /** Shipping portion of the total. */\n shipping: number;\n /** Vendor where the expense was incurred. */\n vendorId: number;\n /** Business unit this expense is charged to. */\n businessUnitId?: number | undefined;\n /** Job this expense is associated with, if any. */\n jobId?: number | undefined;\n /** Project this expense is associated with, if any. */\n projectId?: number | undefined;\n /** Purchase order linked to this expense for two-way matching. */\n purchaseOrderId?: number | undefined;\n /** Employee (cardholder) who made the purchase. */\n employeeId?: number | undefined;\n /** Discriminates whether EmployeeId is an employee or a technician. Optional; null reads as Employee. */\n spenderType?: ExpenseSpenderType | undefined;\n /** Client-resolved display name of the spender identified by EmployeeId. Optional fallback used only if server-side name resolution misses. */\n employeeName?: string | undefined;\n /** Credit card GL account (Liability:Credit Card) this expense was charged to. */\n creditCardAccountId?: number | undefined;\n /** Last 4 digits of the card number. */\n cardNumberLast4?: string | undefined;\n /** Human-readable merchant category. */\n merchantCategory?: string | undefined;\n /** Merchant processing status (e.g. \"Pending\", \"Complete\", \"Error\", \"Declined\"). Defaults to \"Complete\" for manual input. */\n transactionStatus?: string | undefined;\n /** Provider-supplied context for the transaction status — e.g. decline reason, error message, or status-specific note. */\n transactionStatusDetails?: string | undefined;\n /** Free-text summary or notes for the expense. */\n summary?: string | undefined;\n /** Default debit GL account for the expense. Line items may override with their own GeneralLedgerAccountId. */\n debitAccountId?: number | undefined;\n /** Default budget code for the expense. Line items may override with their own BudgetCodeId. */\n budgetCodeId?: number | undefined;\n /** Denormalized project label(s) for display/export. */\n projectLabels?: string | undefined;\n /** Line items with expense GL accounts. */\n lineItems: ExpenseTransactionLineItemRequest[];\n}\n\nexport interface ExpenseTransactionLineItemRequest {\n /** Description of the line item. */\n description: string;\n /** Number of units purchased. */\n quantity: number;\n /** Dollar amount per unit. */\n unitPrice: number;\n /** Optional debit GL account override at the line level (defaults to header DebitAccountId if null). */\n generalLedgerAccountId?: number | undefined;\n /** Optional job override at the line level (defaults to header job if null). */\n jobId?: number | undefined;\n /** Optional project override at the line level (defaults to header project if null). */\n projectId?: number | undefined;\n /** Optional business unit override at the line level (defaults to header BU if null). */\n businessUnitId?: number | undefined;\n /** Optional budget code override at the line level (defaults to header BudgetCodeId if null). */\n budgetCodeId?: number | undefined;\n /** Denormalized project label for this line item. */\n projectLabels?: string | undefined;\n}\n\nexport interface UpdateExpenseTransactionRequest {\n /** Tenant-scoped expense transaction display number. */\n number: string;\n /** The date the transaction occurred (from card statement). */\n transactionDate?: Date | undefined;\n /** Tax portion of the total. */\n tax: number;\n /** Shipping portion of the total. */\n shipping: number;\n /** Vendor where the expense was incurred. */\n vendorId: number;\n /** Business unit this expense is charged to. */\n businessUnitId?: number | undefined;\n /** Job this expense is associated with, if any. */\n jobId?: number | undefined;\n /** Project this expense is associated with, if any. */\n projectId?: number | undefined;\n /** Purchase order linked to this expense for two-way matching. */\n purchaseOrderId?: number | undefined;\n /** Employee (cardholder) who made the purchase. */\n employeeId?: number | undefined;\n /** Discriminates whether EmployeeId is an employee or a technician. Optional; null reads as Employee. */\n spenderType?: ExpenseSpenderType | undefined;\n /** Client-resolved display name of the spender identified by EmployeeId. Optional fallback used only if server-side name resolution misses. */\n employeeName?: string | undefined;\n /** Credit card GL account (Liability:Credit Card) this expense was charged to. */\n creditCardAccountId?: number | undefined;\n /** Last 4 digits of the card number. */\n cardNumberLast4?: string | undefined;\n /** Human-readable merchant category (e.g. \"Supermarkets and grocery stores\").\nProvider-supplied for card-sourced expenses (e.g. Ramp's `sk_category_name`); free-text for manual entries. */\n merchantCategory?: string | undefined;\n /** Merchant processing status (e.g. \"Pending\", \"Complete\", \"Error\", \"Declined\"). */\n transactionStatus?: string | undefined;\n /** Provider-supplied context for the transaction status — e.g. decline reason, error message, or status-specific note. */\n transactionStatusDetails?: string | undefined;\n /** Free-text summary or notes for the expense. */\n summary?: string | undefined;\n /** Default debit GL account for the expense. Line items may override with their own GeneralLedgerAccountId. */\n debitAccountId?: number | undefined;\n /** Default budget code for the expense. Line items may override with their own BudgetCodeId. */\n budgetCodeId?: number | undefined;\n /** Denormalized project label(s) for display/export. */\n projectLabels?: string | undefined;\n /** Line items with expense GL accounts. Include Id for existing items, omit for new. */\n lineItems: UpdateExpenseTransactionLineItemRequest[];\n}\n\nexport interface UpdateExpenseTransactionLineItemRequest {\n /** Unique GUID for the line item: reuse the existing id to update a line, or supply a fresh\nGUID (e.g. `Guid.NewGuid()`) for a new one. Must be non-empty and unique within the\nrequest — null or an empty GUID is rejected with a 400 (UpdateAsync diffs the collection by id). */\n id?: string | undefined;\n /** Description of the line item. */\n description: string;\n /** Number of units purchased. */\n quantity: number;\n /** Dollar amount per unit. */\n unitPrice: number;\n /** Optional debit GL account override at the line level (defaults to header DebitAccountId if null). */\n generalLedgerAccountId?: number | undefined;\n /** Optional job override at the line level (defaults to header job if null). */\n jobId?: number | undefined;\n /** Optional project override at the line level (defaults to header project if null). */\n projectId?: number | undefined;\n /** Optional business unit override at the line level (defaults to header BU if null). */\n businessUnitId?: number | undefined;\n /** Optional budget code override at the line level (defaults to header BudgetCodeId if null). */\n budgetCodeId?: number | undefined;\n /** Denormalized project label for this line item. */\n projectLabels?: string | undefined;\n}\n\nexport interface UpdateExpenseSyncStatusResponse {\n /** Whether any expenses were updated. */\n updated: boolean;\n /** Number of expense transactions that were updated. */\n updatedCount: number;\n}\n\nexport interface UpdateExpenseSyncStatusRequest {\n /** IDs of the expense transactions to update. Maximum 500. */\n expenseIds: string[];\n /** Target sync status (e.g. \"Pending\", \"Posted\", \"Exported\"). */\n targetStatus: string;\n /** Batch ID. Required when transitioning to Posted. */\n batchId?: number | undefined;\n}\n\n/** Response for a batched raw-name read. Splits the two outcomes the caller has to treat differently instead of leaving them to be told apart by absence. */\nexport interface ListExpenseRawNamesResponse {\n /** One row per requested ID that resolved. A row whose names are both null is a terminal\noutcome — the provider reported no names, so there is nothing to backfill and no reason to retry.\n\nOrdered by ID within a single response. Note this differs from notFoundIds, which follows\nrequest order — match on ID rather than by position, and do not assume the two are parallel. The C#\nSDK splits large reads into batches and concatenates them, so its merged rows are ordered by ID only\nwithin each batch, not across the whole result. */\n rows: ExpenseRawNameResponse[];\n /** Requested IDs that did not resolve in this tenant. Distinct from a row with null names: these were\nnot read at all, so a backfill should retry them rather than record \"no raw name\". Duplicates in the\nrequest are collapsed before this is computed, so each unresolved ID appears once, in the order of\nits first occurrence in the request. */\n notFoundIds: string[];\n}\n\n/** Raw provider-reported names for one expense transaction, as captured before ServiceTitan vendor/employee resolution. A row exists for every requested ID that resolved, so both names being null is a terminal outcome — the provider reported none, and there is nothing to backfill. IDs that did not resolve are reported separately under notFoundIds rather than being left to be inferred from their absence here. */\nexport interface ExpenseRawNameResponse {\n /** Expense transaction ID. */\n id: string;\n /** Merchant name as reported by the provider. Null when the provider reported none. */\n merchantName?: string | undefined;\n /** Cardholder display name as reported by the provider. Null when the provider reported none. */\n cardholderName?: string | undefined;\n}\n\nexport interface ListExpenseRawNamesRequest {\n /** IDs of the expense transactions to read raw provider names for. Maximum 500 distinct IDs —\nduplicates are collapsed before the cap is applied, so 900 IDs that dedupe to 500 is accepted while\n501 distinct IDs is a 400. Empty is accepted and returns no rows.\n\nSeparately, the request body is capped at 256 KB (~6,700 IDs) as an allocation guard, so a batch\npadded with enough duplicates to exceed that is rejected with a 413 before the 500-distinct rule is\nevaluated. No sensible batch comes close. */\n expenseIds: string[];\n}\n\n/** Body for the promote endpoint: tokens previously returned from the draft-upload endpoint, to be associated with this expense. Filename is whatever was captured at draft-upload time (no caller-supplied override). */\nexport interface AddExpenseAttachmentsRequest {\n tokens: string[];\n}\n\nexport interface WellKnownGlAccountsResponse {\n uncategorizedExpenseAccountId?: number | undefined;\n}\n"],"names":["axios","injectable","inject","optional","symbolToken","makeCodedException","BASE_URL_TOKEN_ExpenseManagement","ExpenseManagement","list","tenantId","ids","cardholderIds","vendorIds","jobIds","projectIds","syncStatuses","transactionStatuses","receiptStatuses","dateFrom","dateTo","creditCardAccountIds","businessUnitIds","batchId","totalMin","totalMax","needsReview","includeUnqualifiedProviderTransactions","page","pageSize","sortBy","sortDirection","cancelToken","url_","undefined","Error","replace","encodeURIComponent","forEach","item","toJSON","options_","baseURL","baseUrl","url","method","headers","request","create","content_","data","listCardholders","get","id","update","delete","updateSyncStatus","listRawNames","retract","listAttachments","expenseId","downloadAttachment","attachmentId","deleteAttachment","promoteAttachments","getWellKnownGlAccounts","jsonParseReviver","ExpenseSpenderType"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/moneyout-api-client",
3
- "version": "1.37.0-beta.183",
3
+ "version": "1.37.0",
4
4
  "description": "Auto-generated TypeScript API client for MoneyOut Service",
5
5
  "main": "./dist/index.js",
6
6
  "typings": "./dist/index.d.ts",