@matech/thebigpos-sdk 3.9.0-stag-3774 → 3.9.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.
package/README.md CHANGED
@@ -40,5 +40,44 @@ apiClient.api.getSiteConfiguration().then((response) => {
40
40
  });
41
41
  ```
42
42
 
43
+ ## Generate SDK from Swagger
44
+
45
+ To regenerate the SDK from a specific API version, run:
46
+
47
+ ```bash
48
+ npx swagger-typescript-api generate -p https://api.thebigpos.dev/swagger/{version}/swagger.json -o ./src -n index.ts -r true --axios --enum-names-as-values --enum-style union
49
+ ```
50
+
51
+ Replace `{version}` with the target API version (e.g. `v2.34.0`):
52
+
53
+ ```bash
54
+ npx swagger-typescript-api generate -p https://api.thebigpos.dev/swagger/v2.34.0/swagger.json -o ./src -n index.ts -r true --axios --enum-names-as-values --enum-style union
55
+ ```
56
+
57
+ Then apply the PATCH content-type fixup, passing the **same** spec that was given
58
+ to the generator. The generator does not propagate `application/json-patch+json`,
59
+ so this step sets each PATCH method's content type from the spec (no hard-coded
60
+ endpoint list):
61
+
62
+ ```bash
63
+ node scripts/apply-json-patch-content-type.js https://api.thebigpos.dev/swagger/v2.34.0/swagger.json
64
+ yarn build
65
+ ```
66
+
67
+ ## Publishing
68
+
69
+ 1. Update the `version` field in `package.json` before publishing.
70
+ 2. Build the project:
71
+
72
+ ```bash
73
+ yarn build
74
+ ```
75
+
76
+ 3. Publish to npm:
77
+
78
+ ```bash
79
+ yarn publish
80
+ ```
81
+
43
82
  ____
44
83
  © 2024 Mortgage Automation Technologies. All rights reserved
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ export type SiteTileLocation = "HomePage" | "Dashboard";
8
8
  export type SiteConfigurationType = "None" | "Account" | "Corporate" | "Branch" | "LoanOfficer" | "Partner";
9
9
  export type SigningMethod = "ConsumerConnect" | "POSF";
10
10
  export type SSOIntegrationType = "ConsumerConnect" | "TheBigPOS" | "POSF";
11
+ export type PendingInviteStatus = "InvitePending" | "InviteExpired" | "NotInvited";
11
12
  export type OutboundFailureSeverity = "All" | "Failed" | "CompletedWithErrors";
12
13
  export type LosWebhookSigningKeySyncStatus = "Unknown" | "Synced";
13
14
  export type LosWebhookInventoryStatus = "Unknown" | "Healthy" | "Disabled" | "Missing";
@@ -451,6 +452,7 @@ export interface AiCanonicalField {
451
452
  createdAt: string;
452
453
  /** @format date-time */
453
454
  updatedAt?: string | null;
455
+ updatedBy?: AiUpdatedBy | null;
454
456
  }
455
457
  export interface AiChat {
456
458
  /** @format uuid */
@@ -628,6 +630,7 @@ export interface AiGuardrail {
628
630
  createdAt: string;
629
631
  /** @format date-time */
630
632
  updatedAt?: string | null;
633
+ updatedBy?: AiUpdatedBy | null;
631
634
  }
632
635
  export interface AiPrompt {
633
636
  /** @format uuid */
@@ -660,6 +663,7 @@ export interface AiPrompt {
660
663
  createdAt: string;
661
664
  /** @format date-time */
662
665
  updatedAt?: string | null;
666
+ updatedBy?: AiUpdatedBy | null;
663
667
  }
664
668
  export interface AiPromptRun {
665
669
  /** @format uuid */
@@ -693,6 +697,12 @@ export interface AiPromptRunResult {
693
697
  /** @format double */
694
698
  confidence?: number | null;
695
699
  }
700
+ export interface AiPromptRunVerdictBackfill {
701
+ /** @format int32 */
702
+ updated: number;
703
+ /** @format int32 */
704
+ remaining: number;
705
+ }
696
706
  export interface AiPromptSummary {
697
707
  /** @format uuid */
698
708
  id: string;
@@ -764,6 +774,13 @@ export interface AiToolCatalogItem {
764
774
  description: string;
765
775
  isWriteTool: boolean;
766
776
  }
777
+ export interface AiUpdatedBy {
778
+ /** @format uuid */
779
+ id: string;
780
+ firstName: string;
781
+ lastName: string;
782
+ email: string;
783
+ }
767
784
  export interface AiUrlDomain {
768
785
  host: string;
769
786
  status?: AiUrlDomainStatus | null;
@@ -797,6 +814,7 @@ export interface AiUrlSource {
797
814
  createdAt: string;
798
815
  /** @format date-time */
799
816
  updatedAt?: string | null;
817
+ updatedBy?: AiUpdatedBy | null;
800
818
  indexStatus?: CompanyDocumentIndexStatus | null;
801
819
  indexError?: string | null;
802
820
  /** @format date-time */
@@ -1431,6 +1449,8 @@ export interface CreateLoanRoleTaskRequest {
1431
1449
  borrowerPair: number;
1432
1450
  /** @format int32 */
1433
1451
  borrowerPosition: number;
1452
+ /** @format date */
1453
+ dueDate?: string | null;
1434
1454
  }
1435
1455
  export interface CreateSession {
1436
1456
  sessionId: string;
@@ -4819,15 +4839,18 @@ export interface PartnerSearchCriteria {
4819
4839
  roles?: UserRole[] | null;
4820
4840
  }
4821
4841
  export interface PendingInvite {
4842
+ status: PendingInviteStatusEnum;
4843
+ /** @format uuid */
4844
+ inviteId?: string | null;
4822
4845
  /** @format uuid */
4823
- inviteId: string;
4846
+ contactId?: string | null;
4824
4847
  firstName: string;
4825
4848
  lastName: string;
4826
4849
  email: string;
4827
4850
  phoneNumber?: string | null;
4828
- role?: LoanRole | null;
4851
+ role: PendingInviteRoleEnum;
4829
4852
  /** @format date-time */
4830
- createdAt: string;
4853
+ createdAt?: string | null;
4831
4854
  url: string;
4832
4855
  }
4833
4856
  export interface PendingInvitesSummary {
@@ -5004,6 +5027,12 @@ export interface RejectAiUrlDomainRequest {
5004
5027
  export interface RenameAiConversationRequest {
5005
5028
  name: string;
5006
5029
  }
5030
+ export interface ReorderLoanRoleTasksRequest {
5031
+ loanRoleTaskIds: string[];
5032
+ }
5033
+ export interface ReorderLoanTasksRequest {
5034
+ userLoanTaskIDs: string[];
5035
+ }
5007
5036
  export interface RequestImpersonationRequest {
5008
5037
  email: string;
5009
5038
  }
@@ -6227,7 +6256,6 @@ export interface UpdateMeRequest {
6227
6256
  lastName: string;
6228
6257
  email: string;
6229
6258
  title?: string | null;
6230
- forcePasswordReset: boolean;
6231
6259
  mfaEnabled?: boolean | null;
6232
6260
  notificationSettings: UserNotificationSettingsUpdateRequest;
6233
6261
  /** @format uuid */
@@ -6827,6 +6855,8 @@ export type LosWebhookEntryStatusEnum = "Registered" | "Disabled" | "Missing" |
6827
6855
  export type LosWebhookInventoryOverallStatusEnum = "Unknown" | "Healthy" | "Disabled" | "Missing";
6828
6856
  export type LosWebhookSigningKeySyncResultStatusEnum = "Unknown" | "Synced";
6829
6857
  export type ManualDocumentClassificationRequestDocumentTypeEnum = "W2" | "Paystub" | "Form1099" | "Form1099Int" | "Form1099Misc" | "Form1099Nec" | "Form1099R" | "Form1099G" | "Form1099Div" | "Form1099Ssa" | "FederalTaxReturn1040" | "TaxReturnScheduleC" | "TaxReturnScheduleD" | "TaxReturnScheduleE" | "Form1065" | "Form1120" | "Form1120S" | "ProfitAndLossStatement" | "VerificationOfEmployment" | "BankStatement" | "InvestmentStatement" | "CreditCardStatement" | "MortgageStatement" | "PayoffStatement" | "HoaDocuments" | "UtilityBill" | "IdentityDocument" | "DemographicAddendum" | "Ssa89" | "Vba260551" | "Hud92900B" | "Check" | "Invoice" | "Receipt" | "LoanApplication1003" | "UnderwritingTransmittal1008" | "Other" | "SalesContract" | "TitleCommitment" | "DriversLicense" | "VerificationOfIncome" | "VerificationOfAssets" | "FloodCertificate" | "FraudReport" | "AddendumToSalesContract" | "GiftLetter" | "CpaLetter" | "TaxBill" | "CondoQuestionnaire" | "CondoBudget" | "CondoBylaws" | "RentalAgreements" | "Lease" | "HazardInsurance" | "VaCertificateOfEligibility" | "Appraisal" | "CreditReport" | "CondoMasterPolicy" | "EConsent" | "CreditAuthorization" | "TextOptIn" | "LoanComparison" | "AiGeneratedDocument" | "Unidentified";
6858
+ export type PendingInviteStatusEnum = "InvitePending" | "InviteExpired" | "NotInvited";
6859
+ export type PendingInviteRoleEnum = "Borrower" | "CoBorrower" | "NonBorrower" | "LoanOfficer" | "LoanProcessor" | "LoanOfficerAssistant" | "SupportingLoanOfficer" | "BuyerAgent" | "SellerAgent" | "TitleInsuranceAgent" | "EscrowAgent" | "SettlementAgent" | "Admin";
6830
6860
  export type SiteConfigurationTypeEnum = "None" | "Account" | "Corporate" | "Branch" | "LoanOfficer" | "Partner";
6831
6861
  export type SiteConfigurationByUrlTypeEnum = "None" | "Account" | "Corporate" | "Branch" | "LoanOfficer" | "Partner";
6832
6862
  export type SiteConfigurationReducedTypeEnum = "None" | "Account" | "Corporate" | "Branch" | "LoanOfficer" | "Partner";
@@ -7236,7 +7266,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
7236
7266
  */
7237
7267
  updateAiAdminSettings: (data: AiAdminSettingsRequest, params?: RequestParams) => Promise<AxiosResponse<AiAdminSettings, any, {}>>;
7238
7268
  /**
7239
- * @description startDate and endDate accept any ISO-8601 value. A value with no timezone designator (2026-09-01 or 2026-09-01T00:00:00) is read as UTC; a value with Z or an offset is used as the instant it names. A date-only value names the start of that day, so endDate=2026-09-01 returns nothing recorded on the 1st; to include that day send endDate=2026-09-02, or an explicit time such as 2026-09-01T23:59:59.
7269
+ * @description startDate and endDate accept any ISO-8601 value. A value with no timezone designator (2026-09-01 or 2026-09-01T00:00:00) is read as UTC; a value with Z or an offset is used as the instant it names. A date-only value names the start of that day, so endDate=2026-09-01 returns nothing recorded on the 1st; to include that day send endDate=2026-09-02, or an explicit time such as 2026-09-01T23:59:59. searchText (case-insensitive substring of the loan number, or of the loan task name for runs against a loan task), taskId (task-upload runs only: a task definition, including the loan tasks cloned from it) and severity (exactly info, warning or critical, the run's most severe finding; any other value is a 400) match through the automated prompt run behind each row. When any of them is set, only rows that belong to such a run are returned, so trigger publications, coalesced triggers and skips that happened before a run was recorded never match.
7240
7270
  *
7241
7271
  * @tags AiAudit
7242
7272
  * @name GetAiAuditLogs
@@ -7244,6 +7274,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
7244
7274
  * @request GET:/api/ai/audit-logs
7245
7275
  * @secure
7246
7276
  * @response `200` `AiAuditLogPaginated` OK
7277
+ * @response `400` `ProblemDetails` Bad Request
7247
7278
  */
7248
7279
  getAiAuditLogs: (query?: {
7249
7280
  /** @format uuid */
@@ -7268,6 +7299,10 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
7268
7299
  sortDirection?: string;
7269
7300
  eventTypes?: AiAuditEventType[];
7270
7301
  trigger?: string;
7302
+ searchText?: string;
7303
+ /** @format uuid */
7304
+ taskId?: string;
7305
+ severity?: string;
7271
7306
  }, params?: RequestParams) => Promise<AxiosResponse<AiAuditLogPaginated, any, {}>>;
7272
7307
  /**
7273
7308
  * No description
@@ -7727,6 +7762,21 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
7727
7762
  /** @format uuid */
7728
7763
  subjectEntityId?: string;
7729
7764
  }, params?: RequestParams) => Promise<AxiosResponse<AiPromptRun[], any, {}>>;
7765
+ /**
7766
+ * No description
7767
+ *
7768
+ * @tags AiPromptRunAdmin
7769
+ * @name BackfillAiPromptRunVerdicts
7770
+ * @summary Stamp Verdict and HighestSeverity on existing Succeeded prompt runs (SuperAdmin)
7771
+ * @request POST:/api/ai/prompt-runs/backfill-verdicts
7772
+ * @secure
7773
+ * @response `200` `AiPromptRunVerdictBackfill` OK
7774
+ * @response `401` `ProblemDetails` Unauthorized
7775
+ * @response `403` `ProblemDetails` Forbidden
7776
+ */
7777
+ backfillAiPromptRunVerdicts: (query?: {
7778
+ dryRun?: boolean;
7779
+ }, params?: RequestParams) => Promise<AxiosResponse<AiPromptRunVerdictBackfill, any, {}>>;
7730
7780
  /**
7731
7781
  * No description
7732
7782
  *
@@ -11060,7 +11110,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
11060
11110
  */
11061
11111
  getLoanRoleTasks: (loanId: string, params?: RequestParams) => Promise<AxiosResponse<LoanRoleSlotTasks[], any, {}>>;
11062
11112
  /**
11063
- * @description Queues an account template against a borrower slot that has no registered user yet. The row owns a per-loan copy of the template, so editing it never changes the account's catalogue.
11113
+ * @description Queues an account template against a borrower slot that has no registered user yet. The row owns a per-loan copy of the template, so editing it never changes the account's catalogue. An optional due date is stored on the row; without one the row has none.
11064
11114
  *
11065
11115
  * @tags LoanRoleTasks
11066
11116
  * @name CreateLoanRoleTask
@@ -11114,6 +11164,20 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
11114
11164
  * @response `409` `ProblemDetails` Conflict
11115
11165
  */
11116
11166
  deleteLoanRoleTask: (loanId: string, id: string, params?: RequestParams) => Promise<AxiosResponse<void, any, {}>>;
11167
+ /**
11168
+ * @description Sets the order the loan's queued tasks show in within each borrower slot. The list names every queued row that has not been attached yet, first to last, and may span several slots; a list that no longer matches the loan, or that names an attached row, is refused with 409. Two reorders sent at once do not mix: the last to save wins as a whole.
11169
+ *
11170
+ * @tags LoanRoleTasks
11171
+ * @name ReorderLoanRoleTasks
11172
+ * @summary Reorder the queued tasks
11173
+ * @request PUT:/api/loans/{loanId}/role-tasks/order
11174
+ * @secure
11175
+ * @response `204` `void` No Content
11176
+ * @response `404` `ProblemDetails` Not Found
11177
+ * @response `409` `ProblemDetails` Conflict
11178
+ * @response `422` `ProblemDetails` Unprocessable Content
11179
+ */
11180
+ reorderLoanRoleTasks: (loanId: string, data: ReorderLoanRoleTasksRequest, params?: RequestParams) => Promise<AxiosResponse<void, any, {}>>;
11117
11181
  /**
11118
11182
  * @description Runs the account's business rules against the loan and queues what is missing. Templates already queued, and ones removed by staff, are left alone.
11119
11183
  *
@@ -11515,6 +11579,21 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
11515
11579
  * @response `404` `ProblemDetails` Not Found
11516
11580
  */
11517
11581
  deleteLoanTask: (loanId: string, userLoanTaskId: string, params?: RequestParams) => Promise<AxiosResponse<void, any, {}>>;
11582
+ /**
11583
+ * @description Sets the order the loan's tasks show in. The list names every task on the loan once, first to last; a list that no longer matches the loan is refused with 409 so a stale screen cannot move a task unseen. The order is written to the loan's own copies of the tasks, so the account's catalogue is untouched. Two reorders sent at once do not mix: the last to save wins as a whole.
11584
+ *
11585
+ * @tags LoanTasksForSingleLoan
11586
+ * @name ReorderLoanTasks
11587
+ * @summary Reorder
11588
+ * @request PUT:/api/loans/{loanID}/tasks/order
11589
+ * @secure
11590
+ * @response `204` `void` No Content
11591
+ * @response `400` `ProblemDetails` Bad Request
11592
+ * @response `404` `ProblemDetails` Not Found
11593
+ * @response `409` `ProblemDetails` Conflict
11594
+ * @response `422` `ProblemDetails` Unprocessable Content
11595
+ */
11596
+ reorderLoanTasks: (loanId: string, data: ReorderLoanTasksRequest, params?: RequestParams) => Promise<AxiosResponse<void, any, {}>>;
11518
11597
  /**
11519
11598
  * No description
11520
11599
  *
@@ -12481,6 +12560,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
12481
12560
  * @request GET:/api/template-tokens
12482
12561
  * @secure
12483
12562
  * @response `200` `(TemplateTokenRoot)[]` OK
12563
+ * @response `403` `ProblemDetails` Forbidden
12484
12564
  */
12485
12565
  getTemplateTokens: (params?: RequestParams) => Promise<AxiosResponse<TemplateTokenRoot[], any, {}>>;
12486
12566
  /**
package/dist/index.js CHANGED
@@ -86,7 +86,13 @@ export class HttpClient {
86
86
  const property = input[key];
87
87
  const propertyContent = property instanceof Array ? property : [property];
88
88
  for (const formItem of propertyContent) {
89
- const isFileType = formItem instanceof Blob || formItem instanceof File;
89
+ // React Native files are plain { uri, name, type } objects, not Blob/File.
90
+ const isReactNativeFile = !!formItem &&
91
+ typeof formItem === "object" &&
92
+ "uri" in formItem &&
93
+ "name" in formItem &&
94
+ "type" in formItem;
95
+ const isFileType = isReactNativeFile || formItem instanceof Blob || formItem instanceof File;
90
96
  formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));
91
97
  }
92
98
  return formData;
@@ -432,7 +438,7 @@ export class Api extends HttpClient {
432
438
  */
433
439
  updateAiAdminSettings: (data, params = {}) => this.request(Object.assign({ path: `/api/ai/settings`, method: "PUT", body: data, secure: true, type: "application/json", format: "json" }, params)),
434
440
  /**
435
- * @description startDate and endDate accept any ISO-8601 value. A value with no timezone designator (2026-09-01 or 2026-09-01T00:00:00) is read as UTC; a value with Z or an offset is used as the instant it names. A date-only value names the start of that day, so endDate=2026-09-01 returns nothing recorded on the 1st; to include that day send endDate=2026-09-02, or an explicit time such as 2026-09-01T23:59:59.
441
+ * @description startDate and endDate accept any ISO-8601 value. A value with no timezone designator (2026-09-01 or 2026-09-01T00:00:00) is read as UTC; a value with Z or an offset is used as the instant it names. A date-only value names the start of that day, so endDate=2026-09-01 returns nothing recorded on the 1st; to include that day send endDate=2026-09-02, or an explicit time such as 2026-09-01T23:59:59. searchText (case-insensitive substring of the loan number, or of the loan task name for runs against a loan task), taskId (task-upload runs only: a task definition, including the loan tasks cloned from it) and severity (exactly info, warning or critical, the run's most severe finding; any other value is a 400) match through the automated prompt run behind each row. When any of them is set, only rows that belong to such a run are returned, so trigger publications, coalesced triggers and skips that happened before a run was recorded never match.
436
442
  *
437
443
  * @tags AiAudit
438
444
  * @name GetAiAuditLogs
@@ -440,6 +446,7 @@ export class Api extends HttpClient {
440
446
  * @request GET:/api/ai/audit-logs
441
447
  * @secure
442
448
  * @response `200` `AiAuditLogPaginated` OK
449
+ * @response `400` `ProblemDetails` Bad Request
443
450
  */
444
451
  getAiAuditLogs: (query, params = {}) => this.request(Object.assign({ path: `/api/ai/audit-logs`, method: "GET", query: query, secure: true, format: "json" }, params)),
445
452
  /**
@@ -818,6 +825,19 @@ export class Api extends HttpClient {
818
825
  * @response `400` `ProblemDetails` Bad Request
819
826
  */
820
827
  getAiPromptRuns: (query, params = {}) => this.request(Object.assign({ path: `/api/ai/prompt-runs`, method: "GET", query: query, secure: true, format: "json" }, params)),
828
+ /**
829
+ * No description
830
+ *
831
+ * @tags AiPromptRunAdmin
832
+ * @name BackfillAiPromptRunVerdicts
833
+ * @summary Stamp Verdict and HighestSeverity on existing Succeeded prompt runs (SuperAdmin)
834
+ * @request POST:/api/ai/prompt-runs/backfill-verdicts
835
+ * @secure
836
+ * @response `200` `AiPromptRunVerdictBackfill` OK
837
+ * @response `401` `ProblemDetails` Unauthorized
838
+ * @response `403` `ProblemDetails` Forbidden
839
+ */
840
+ backfillAiPromptRunVerdicts: (query, params = {}) => this.request(Object.assign({ path: `/api/ai/prompt-runs/backfill-verdicts`, method: "POST", query: query, secure: true, format: "json" }, params)),
821
841
  /**
822
842
  * No description
823
843
  *
@@ -3820,7 +3840,7 @@ export class Api extends HttpClient {
3820
3840
  */
3821
3841
  getLoanRoleTasks: (loanId, params = {}) => this.request(Object.assign({ path: `/api/loans/${loanId}/role-tasks`, method: "GET", secure: true, format: "json" }, params)),
3822
3842
  /**
3823
- * @description Queues an account template against a borrower slot that has no registered user yet. The row owns a per-loan copy of the template, so editing it never changes the account's catalogue.
3843
+ * @description Queues an account template against a borrower slot that has no registered user yet. The row owns a per-loan copy of the template, so editing it never changes the account's catalogue. An optional due date is stored on the row; without one the row has none.
3824
3844
  *
3825
3845
  * @tags LoanRoleTasks
3826
3846
  * @name CreateLoanRoleTask
@@ -3874,6 +3894,20 @@ export class Api extends HttpClient {
3874
3894
  * @response `409` `ProblemDetails` Conflict
3875
3895
  */
3876
3896
  deleteLoanRoleTask: (loanId, id, params = {}) => this.request(Object.assign({ path: `/api/loans/${loanId}/role-tasks/${id}`, method: "DELETE", secure: true }, params)),
3897
+ /**
3898
+ * @description Sets the order the loan's queued tasks show in within each borrower slot. The list names every queued row that has not been attached yet, first to last, and may span several slots; a list that no longer matches the loan, or that names an attached row, is refused with 409. Two reorders sent at once do not mix: the last to save wins as a whole.
3899
+ *
3900
+ * @tags LoanRoleTasks
3901
+ * @name ReorderLoanRoleTasks
3902
+ * @summary Reorder the queued tasks
3903
+ * @request PUT:/api/loans/{loanId}/role-tasks/order
3904
+ * @secure
3905
+ * @response `204` `void` No Content
3906
+ * @response `404` `ProblemDetails` Not Found
3907
+ * @response `409` `ProblemDetails` Conflict
3908
+ * @response `422` `ProblemDetails` Unprocessable Content
3909
+ */
3910
+ reorderLoanRoleTasks: (loanId, data, params = {}) => this.request(Object.assign({ path: `/api/loans/${loanId}/role-tasks/order`, method: "PUT", body: data, secure: true, type: "application/json" }, params)),
3877
3911
  /**
3878
3912
  * @description Runs the account's business rules against the loan and queues what is missing. Templates already queued, and ones removed by staff, are left alone.
3879
3913
  *
@@ -4246,6 +4280,21 @@ export class Api extends HttpClient {
4246
4280
  * @response `404` `ProblemDetails` Not Found
4247
4281
  */
4248
4282
  deleteLoanTask: (loanId, userLoanTaskId, params = {}) => this.request(Object.assign({ path: `/api/loans/${loanId}/tasks/${userLoanTaskId}`, method: "DELETE", secure: true }, params)),
4283
+ /**
4284
+ * @description Sets the order the loan's tasks show in. The list names every task on the loan once, first to last; a list that no longer matches the loan is refused with 409 so a stale screen cannot move a task unseen. The order is written to the loan's own copies of the tasks, so the account's catalogue is untouched. Two reorders sent at once do not mix: the last to save wins as a whole.
4285
+ *
4286
+ * @tags LoanTasksForSingleLoan
4287
+ * @name ReorderLoanTasks
4288
+ * @summary Reorder
4289
+ * @request PUT:/api/loans/{loanID}/tasks/order
4290
+ * @secure
4291
+ * @response `204` `void` No Content
4292
+ * @response `400` `ProblemDetails` Bad Request
4293
+ * @response `404` `ProblemDetails` Not Found
4294
+ * @response `409` `ProblemDetails` Conflict
4295
+ * @response `422` `ProblemDetails` Unprocessable Content
4296
+ */
4297
+ reorderLoanTasks: (loanId, data, params = {}) => this.request(Object.assign({ path: `/api/loans/${loanId}/tasks/order`, method: "PUT", body: data, secure: true, type: "application/json" }, params)),
4249
4298
  /**
4250
4299
  * No description
4251
4300
  *
@@ -5105,6 +5154,7 @@ export class Api extends HttpClient {
5105
5154
  * @request GET:/api/template-tokens
5106
5155
  * @secure
5107
5156
  * @response `200` `(TemplateTokenRoot)[]` OK
5157
+ * @response `403` `ProblemDetails` Forbidden
5108
5158
  */
5109
5159
  getTemplateTokens: (params = {}) => this.request(Object.assign({ path: `/api/template-tokens`, method: "GET", secure: true, format: "json" }, params)),
5110
5160
  /**