@apideck/unify 0.27.0 → 0.28.1

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.
Files changed (192) hide show
  1. package/README.md +5 -5
  2. package/docs/sdks/categories/README.md +12 -0
  3. package/docs/sdks/companies/README.md +4 -4
  4. package/examples/README.md +26 -0
  5. package/examples/accountingTaxRatesList.example.ts +41 -0
  6. package/examples/package-lock.json +613 -0
  7. package/examples/package.json +18 -0
  8. package/funcs/accountingCategoriesGet.d.ts.map +1 -1
  9. package/funcs/accountingCategoriesGet.js +4 -2
  10. package/funcs/accountingCategoriesGet.js.map +1 -1
  11. package/funcs/accountingCategoriesList.d.ts.map +1 -1
  12. package/funcs/accountingCategoriesList.js +4 -2
  13. package/funcs/accountingCategoriesList.js.map +1 -1
  14. package/funcs/crmCompaniesCreate.js +1 -1
  15. package/funcs/crmCompaniesCreate.js.map +1 -1
  16. package/funcs/crmCompaniesUpdate.js +1 -1
  17. package/funcs/crmCompaniesUpdate.js.map +1 -1
  18. package/jsr.json +1 -1
  19. package/lib/config.d.ts +4 -4
  20. package/lib/config.js +4 -4
  21. package/models/components/balancesheetfilter.d.ts +5 -0
  22. package/models/components/balancesheetfilter.d.ts.map +1 -1
  23. package/models/components/balancesheetfilter.js +4 -0
  24. package/models/components/balancesheetfilter.js.map +1 -1
  25. package/models/components/bankaccount.d.ts +5 -0
  26. package/models/components/bankaccount.d.ts.map +1 -1
  27. package/models/components/bankaccount.js +2 -0
  28. package/models/components/bankaccount.js.map +1 -1
  29. package/models/components/bankaccount1.d.ts +123 -0
  30. package/models/components/bankaccount1.d.ts.map +1 -0
  31. package/models/components/bankaccount1.js +128 -0
  32. package/models/components/bankaccount1.js.map +1 -0
  33. package/models/components/categoriesfilter.d.ts +67 -0
  34. package/models/components/categoriesfilter.d.ts.map +1 -0
  35. package/models/components/categoriesfilter.js +82 -0
  36. package/models/components/categoriesfilter.js.map +1 -0
  37. package/models/components/category.d.ts +39 -0
  38. package/models/components/category.d.ts.map +1 -1
  39. package/models/components/category.js +26 -1
  40. package/models/components/category.js.map +1 -1
  41. package/models/components/{company.d.ts → company1.d.ts} +32 -32
  42. package/models/components/company1.d.ts.map +1 -0
  43. package/models/components/{company.js → company1.js} +37 -37
  44. package/models/components/company1.js.map +1 -0
  45. package/models/components/companyinfo.d.ts +5 -0
  46. package/models/components/companyinfo.d.ts.map +1 -1
  47. package/models/components/companyinfo.js +4 -0
  48. package/models/components/companyinfo.js.map +1 -1
  49. package/models/components/connection.d.ts +13 -13
  50. package/models/components/connection.d.ts.map +1 -1
  51. package/models/components/connection.js +16 -17
  52. package/models/components/connection.js.map +1 -1
  53. package/models/components/customfield.d.ts +37 -38
  54. package/models/components/customfield.d.ts.map +1 -1
  55. package/models/components/customfield.js +25 -54
  56. package/models/components/customfield.js.map +1 -1
  57. package/models/components/getcompaniesresponse.d.ts +3 -3
  58. package/models/components/getcompaniesresponse.d.ts.map +1 -1
  59. package/models/components/getcompaniesresponse.js +3 -3
  60. package/models/components/getcompaniesresponse.js.map +1 -1
  61. package/models/components/getcompanyresponse.d.ts +3 -3
  62. package/models/components/getcompanyresponse.d.ts.map +1 -1
  63. package/models/components/getcompanyresponse.js +3 -3
  64. package/models/components/getcompanyresponse.js.map +1 -1
  65. package/models/components/index.d.ts +3 -1
  66. package/models/components/index.d.ts.map +1 -1
  67. package/models/components/index.js +3 -1
  68. package/models/components/index.js.map +1 -1
  69. package/models/components/invoicelineitem.d.ts +10 -0
  70. package/models/components/invoicelineitem.d.ts.map +1 -1
  71. package/models/components/invoicelineitem.js +8 -0
  72. package/models/components/invoicelineitem.js.map +1 -1
  73. package/models/components/profitandlossfilter.d.ts +5 -0
  74. package/models/components/profitandlossfilter.d.ts.map +1 -1
  75. package/models/components/profitandlossfilter.js +4 -0
  76. package/models/components/profitandlossfilter.js.map +1 -1
  77. package/models/components/simpleformfieldoption.d.ts +13 -13
  78. package/models/components/simpleformfieldoption.d.ts.map +1 -1
  79. package/models/components/simpleformfieldoption.js +16 -16
  80. package/models/components/simpleformfieldoption.js.map +1 -1
  81. package/models/components/supplier.d.ts +10 -0
  82. package/models/components/supplier.d.ts.map +1 -1
  83. package/models/components/supplier.js +4 -0
  84. package/models/components/supplier.js.map +1 -1
  85. package/models/errors/apierror.d.ts.map +1 -1
  86. package/models/errors/apierror.js +8 -2
  87. package/models/errors/apierror.js.map +1 -1
  88. package/models/errors/badrequestresponse.js +1 -1
  89. package/models/errors/badrequestresponse.js.map +1 -1
  90. package/models/errors/notfoundresponse.js +1 -1
  91. package/models/errors/notfoundresponse.js.map +1 -1
  92. package/models/errors/paymentrequiredresponse.js +1 -1
  93. package/models/errors/paymentrequiredresponse.js.map +1 -1
  94. package/models/errors/unauthorizedresponse.js +1 -1
  95. package/models/errors/unauthorizedresponse.js.map +1 -1
  96. package/models/errors/unprocessableresponse.js +1 -1
  97. package/models/errors/unprocessableresponse.js.map +1 -1
  98. package/models/operations/accountingcategoriesall.d.ts +5 -0
  99. package/models/operations/accountingcategoriesall.d.ts.map +1 -1
  100. package/models/operations/accountingcategoriesall.js +2 -0
  101. package/models/operations/accountingcategoriesall.js.map +1 -1
  102. package/models/operations/accountingcategoriesone.d.ts +5 -0
  103. package/models/operations/accountingcategoriesone.d.ts.map +1 -1
  104. package/models/operations/accountingcategoriesone.js +2 -0
  105. package/models/operations/accountingcategoriesone.js.map +1 -1
  106. package/models/operations/crmcompaniesadd.d.ts +2 -2
  107. package/models/operations/crmcompaniesadd.d.ts.map +1 -1
  108. package/models/operations/crmcompaniesadd.js +4 -4
  109. package/models/operations/crmcompaniesadd.js.map +1 -1
  110. package/models/operations/crmcompaniesupdate.d.ts +2 -2
  111. package/models/operations/crmcompaniesupdate.d.ts.map +1 -1
  112. package/models/operations/crmcompaniesupdate.js +4 -4
  113. package/models/operations/crmcompaniesupdate.js.map +1 -1
  114. package/package.json +2 -2
  115. package/src/__tests__/activities.test.ts +364 -13
  116. package/src/__tests__/apideckcompanies.test.ts +373 -9
  117. package/src/__tests__/apideckdepartments.test.ts +181 -9
  118. package/src/__tests__/applicants.test.ts +473 -9
  119. package/src/__tests__/applications.test.ts +189 -9
  120. package/src/__tests__/bankfeedaccounts.test.ts +4 -4
  121. package/src/__tests__/billpayments.test.ts +378 -20
  122. package/src/__tests__/bills.test.ts +500 -9
  123. package/src/__tests__/collectionticketcomments.test.ts +183 -7
  124. package/src/__tests__/collectiontickets.test.ts +191 -7
  125. package/src/__tests__/companies.test.ts +607 -78
  126. package/src/__tests__/connections.test.ts +409 -5
  127. package/src/__tests__/connectionsettings.test.ts +410 -5
  128. package/src/__tests__/contacts.test.ts +470 -13
  129. package/src/__tests__/creditnotes.test.ts +819 -148
  130. package/src/__tests__/customers.test.ts +517 -13
  131. package/src/__tests__/customobjects.test.ts +150 -9
  132. package/src/__tests__/customobjectschemas.test.ts +321 -9
  133. package/src/__tests__/departments.test.ts +173 -9
  134. package/src/__tests__/drivegroups.test.ts +181 -9
  135. package/src/__tests__/drives.test.ts +179 -9
  136. package/src/__tests__/employees.test.ts +829 -94
  137. package/src/__tests__/expenses.test.ts +338 -15
  138. package/src/__tests__/files.test.ts +106 -5
  139. package/src/__tests__/folders.test.ts +296 -13
  140. package/src/__tests__/invoiceitems.test.ts +272 -9
  141. package/src/__tests__/invoices.test.ts +695 -89
  142. package/src/__tests__/journalentries.test.ts +490 -8
  143. package/src/__tests__/leads.test.ts +450 -13
  144. package/src/__tests__/ledgeraccounts.test.ts +248 -19
  145. package/src/__tests__/locations.test.ts +298 -9
  146. package/src/__tests__/messages.test.ts +195 -9
  147. package/src/__tests__/notes.test.ts +191 -9
  148. package/src/__tests__/opportunities.test.ts +218 -9
  149. package/src/__tests__/payments.test.ts +323 -20
  150. package/src/__tests__/pipelines.test.ts +194 -9
  151. package/src/__tests__/purchaseorders.test.ts +847 -178
  152. package/src/__tests__/sharedlinks.test.ts +183 -9
  153. package/src/__tests__/subsidiaries.test.ts +183 -9
  154. package/src/__tests__/suppliers.test.ts +509 -13
  155. package/src/__tests__/taxrates.test.ts +235 -12
  156. package/src/__tests__/timeoffrequests.test.ts +210 -9
  157. package/src/__tests__/trackingcategories.test.ts +187 -7
  158. package/src/__tests__/uploadsessions.test.ts +78 -5
  159. package/src/__tests__/users.test.ts +356 -9
  160. package/src/funcs/accountingCategoriesGet.ts +15 -5
  161. package/src/funcs/accountingCategoriesList.ts +17 -7
  162. package/src/funcs/crmCompaniesCreate.ts +1 -1
  163. package/src/funcs/crmCompaniesUpdate.ts +1 -1
  164. package/src/lib/config.ts +4 -4
  165. package/src/models/components/balancesheetfilter.ts +9 -0
  166. package/src/models/components/bankaccount.ts +7 -0
  167. package/src/models/components/bankaccount1.ts +207 -0
  168. package/src/models/components/categoriesfilter.ts +104 -0
  169. package/src/models/components/category.ts +39 -0
  170. package/src/models/components/{company.ts → company1.ts} +131 -128
  171. package/src/models/components/companyinfo.ts +9 -0
  172. package/src/models/components/connection.ts +27 -20
  173. package/src/models/components/customfield.ts +51 -83
  174. package/src/models/components/getcompaniesresponse.ts +9 -9
  175. package/src/models/components/getcompanyresponse.ts +9 -9
  176. package/src/models/components/index.ts +3 -1
  177. package/src/models/components/invoicelineitem.ts +18 -0
  178. package/src/models/components/profitandlossfilter.ts +9 -0
  179. package/src/models/components/simpleformfieldoption.ts +21 -18
  180. package/src/models/components/supplier.ts +14 -0
  181. package/src/models/errors/apierror.ts +8 -2
  182. package/src/models/errors/badrequestresponse.ts +1 -1
  183. package/src/models/errors/notfoundresponse.ts +1 -1
  184. package/src/models/errors/paymentrequiredresponse.ts +1 -1
  185. package/src/models/errors/unauthorizedresponse.ts +1 -1
  186. package/src/models/errors/unprocessableresponse.ts +1 -1
  187. package/src/models/operations/accountingcategoriesall.ts +7 -0
  188. package/src/models/operations/accountingcategoriesone.ts +7 -0
  189. package/src/models/operations/crmcompaniesadd.ts +6 -6
  190. package/src/models/operations/crmcompaniesupdate.ts +6 -6
  191. package/models/components/company.d.ts.map +0 -1
  192. package/models/components/company.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
  * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
3
  */
4
4
 
5
- import { assert, expect, it, test } from "vitest";
5
+ import { expect, test } from "vitest";
6
6
  import { Apideck } from "../index.js";
7
7
  import { RFCDate } from "../types/index.js";
8
8
  import { createTestHTTPClient } from "./testclient.js";
@@ -774,10 +774,228 @@ test("Bills Accounting Bills All", async () => {
774
774
  });
775
775
  });
776
776
 
777
- it.skip("Bills Accounting Bills Add", async () => {
778
- assert.fail(
779
- "incomplete test found please make sure to address the following errors: [`workflow step accounting.billsAdd.test referencing operation accounting.billsAdd with expression in requestBody with type not currently supported`]",
780
- );
777
+ test("Bills Accounting Bills Add", async () => {
778
+ const testHttpClient = createTestHTTPClient("accounting.billsAdd");
779
+
780
+ const apideck = new Apideck({
781
+ serverURL: process.env["TEST_SERVER_URL"] ?? "http://localhost:18080",
782
+ httpClient: testHttpClient,
783
+ apiKey: process.env["APIDECK_API_KEY"] ?? "value",
784
+ });
785
+
786
+ const result = await apideck.accounting.bills.create({
787
+ consumerId: "test-consumer",
788
+ appId: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX",
789
+ serviceId: "salesforce",
790
+ bill: {
791
+ billNumber: "10001",
792
+ supplier: {
793
+ id: "12345",
794
+ displayName: "Windsurf Shop",
795
+ address: {
796
+ id: "123",
797
+ type: "primary",
798
+ string: "25 Spring Street, Blackburn, VIC 3130",
799
+ name: "HQ US",
800
+ line1: "Main street",
801
+ line2: "apt #",
802
+ line3: "Suite #",
803
+ line4: "delivery instructions",
804
+ streetNumber: "25",
805
+ city: "San Francisco",
806
+ state: "CA",
807
+ postalCode: "94104",
808
+ country: "US",
809
+ latitude: "40.759211",
810
+ longitude: "-73.984638",
811
+ county: "Santa Clara",
812
+ contactName: "Elon Musk",
813
+ salutation: "Mr",
814
+ phoneNumber: "111-111-1111",
815
+ fax: "122-111-1111",
816
+ email: "elon@musk.com",
817
+ website: "https://elonmusk.com",
818
+ notes: "Address notes or delivery instructions.",
819
+ rowVersion: "1-12345",
820
+ },
821
+ },
822
+ companyId: "12345",
823
+ currency: "USD",
824
+ currencyRate: 0.69,
825
+ taxInclusive: true,
826
+ billDate: new RFCDate("2020-09-30"),
827
+ dueDate: new RFCDate("2020-10-30"),
828
+ paidDate: new RFCDate("2020-10-30"),
829
+ poNumber: "90000117",
830
+ reference: "123456",
831
+ lineItems: [
832
+ {
833
+ rowId: "12345",
834
+ code: "120-C",
835
+ lineNumber: 1,
836
+ description:
837
+ "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.",
838
+ type: "expense_account",
839
+ taxAmount: 27500,
840
+ totalAmount: 27500,
841
+ quantity: 1,
842
+ unitPrice: 27500.5,
843
+ unitOfMeasure: "pc.",
844
+ discountPercentage: 0.01,
845
+ discountAmount: 19.99,
846
+ locationId: "12345",
847
+ departmentId: "12345",
848
+ item: {
849
+ id: "12344",
850
+ code: "120-C",
851
+ name: "Model Y",
852
+ },
853
+ taxRate: {
854
+ id: "123456",
855
+ rate: 10,
856
+ },
857
+ ledgerAccount: {
858
+ id: "123456",
859
+ nominalCode: "N091",
860
+ code: "453",
861
+ },
862
+ trackingCategories: [
863
+ {
864
+ id: "123456",
865
+ name: "New York",
866
+ },
867
+ {
868
+ id: "123456",
869
+ name: "New York",
870
+ },
871
+ ],
872
+ rowVersion: "1-12345",
873
+ },
874
+ {
875
+ rowId: "12345",
876
+ code: "120-C",
877
+ lineNumber: 1,
878
+ description:
879
+ "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.",
880
+ type: "expense_account",
881
+ taxAmount: 27500,
882
+ totalAmount: 27500,
883
+ quantity: 1,
884
+ unitPrice: 27500.5,
885
+ unitOfMeasure: "pc.",
886
+ discountPercentage: 0.01,
887
+ discountAmount: 19.99,
888
+ locationId: "12345",
889
+ departmentId: "12345",
890
+ item: {
891
+ id: "12344",
892
+ code: "120-C",
893
+ name: "Model Y",
894
+ },
895
+ taxRate: {
896
+ id: "123456",
897
+ rate: 10,
898
+ },
899
+ ledgerAccount: {
900
+ id: "123456",
901
+ nominalCode: "N091",
902
+ code: "453",
903
+ },
904
+ trackingCategories: [
905
+ {
906
+ id: "123456",
907
+ name: "New York",
908
+ },
909
+ {
910
+ id: "123456",
911
+ name: "New York",
912
+ },
913
+ ],
914
+ rowVersion: "1-12345",
915
+ },
916
+ ],
917
+ terms: "Net 30 days",
918
+ balance: 27500,
919
+ deposit: 0,
920
+ subTotal: 27500,
921
+ totalTax: 2500,
922
+ total: 27500,
923
+ taxCode: "1234",
924
+ notes: "Some notes about this bill.",
925
+ status: "draft",
926
+ ledgerAccount: {
927
+ id: "123456",
928
+ nominalCode: "N091",
929
+ code: "453",
930
+ },
931
+ paymentMethod: "cash",
932
+ channel: "email",
933
+ language: "EN",
934
+ accountingByRow: false,
935
+ bankAccount: {
936
+ bankName: "Monzo",
937
+ accountNumber: "123465",
938
+ accountName: "SPACEX LLC",
939
+ accountType: "credit_card",
940
+ iban: "CH2989144532982975332",
941
+ bic: "AUDSCHGGXXX",
942
+ routingNumber: "012345678",
943
+ bsbNumber: "062-001",
944
+ branchIdentifier: "001",
945
+ bankCode: "BNH",
946
+ currency: "USD",
947
+ },
948
+ discountPercentage: 5.5,
949
+ sourceDocumentUrl: "https://www.invoicesolution.com/bill/123456",
950
+ trackingCategories: [
951
+ {
952
+ id: "123456",
953
+ name: "New York",
954
+ },
955
+ ],
956
+ rowVersion: "1-12345",
957
+ customFields: [
958
+ {
959
+ id: "2389328923893298",
960
+ name: "employee_level",
961
+ description: "Employee Level",
962
+ value: {
963
+ "0": "<value>",
964
+ "1": "<value>",
965
+ "2": "<value>",
966
+ },
967
+ },
968
+ ],
969
+ passThrough: [
970
+ {
971
+ serviceId: "<id>",
972
+ extendPaths: [
973
+ {
974
+ path: "$.nested.property",
975
+ value: {
976
+ "TaxClassificationRef": {
977
+ "value": "EUC-99990201-V1-00020000",
978
+ },
979
+ },
980
+ },
981
+ ],
982
+ },
983
+ ],
984
+ accountingPeriod: "01-24",
985
+ },
986
+ });
987
+ expect(result.httpMeta.response.status).toBe(201);
988
+ expect(result.createBillResponse).toBeDefined();
989
+ expect(result.createBillResponse).toEqual({
990
+ statusCode: 200,
991
+ status: "OK",
992
+ service: "xero",
993
+ resource: "bills",
994
+ operation: "add",
995
+ data: {
996
+ id: "12345",
997
+ },
998
+ });
781
999
  });
782
1000
 
783
1001
  test("Bills Accounting Bills One", async () => {
@@ -1104,10 +1322,283 @@ test("Bills Accounting Bills One", async () => {
1104
1322
  });
1105
1323
  });
1106
1324
 
1107
- it.skip("Bills Accounting Bills Update", async () => {
1108
- assert.fail(
1109
- "incomplete test found please make sure to address the following errors: [`workflow step accounting.billsUpdate.test referencing operation accounting.billsUpdate with expression in requestBody with type not currently supported`]",
1110
- );
1325
+ test("Bills Accounting Bills Update", async () => {
1326
+ const testHttpClient = createTestHTTPClient("accounting.billsUpdate");
1327
+
1328
+ const apideck = new Apideck({
1329
+ serverURL: process.env["TEST_SERVER_URL"] ?? "http://localhost:18080",
1330
+ httpClient: testHttpClient,
1331
+ apiKey: process.env["APIDECK_API_KEY"] ?? "value",
1332
+ });
1333
+
1334
+ const result = await apideck.accounting.bills.update({
1335
+ id: "<id>",
1336
+ consumerId: "test-consumer",
1337
+ appId: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX",
1338
+ serviceId: "salesforce",
1339
+ bill: {
1340
+ billNumber: "10001",
1341
+ supplier: {
1342
+ id: "12345",
1343
+ displayName: "Windsurf Shop",
1344
+ address: {
1345
+ id: "123",
1346
+ type: "primary",
1347
+ string: "25 Spring Street, Blackburn, VIC 3130",
1348
+ name: "HQ US",
1349
+ line1: "Main street",
1350
+ line2: "apt #",
1351
+ line3: "Suite #",
1352
+ line4: "delivery instructions",
1353
+ streetNumber: "25",
1354
+ city: "San Francisco",
1355
+ state: "CA",
1356
+ postalCode: "94104",
1357
+ country: "US",
1358
+ latitude: "40.759211",
1359
+ longitude: "-73.984638",
1360
+ county: "Santa Clara",
1361
+ contactName: "Elon Musk",
1362
+ salutation: "Mr",
1363
+ phoneNumber: "111-111-1111",
1364
+ fax: "122-111-1111",
1365
+ email: "elon@musk.com",
1366
+ website: "https://elonmusk.com",
1367
+ notes: "Address notes or delivery instructions.",
1368
+ rowVersion: "1-12345",
1369
+ },
1370
+ },
1371
+ companyId: "12345",
1372
+ currency: "USD",
1373
+ currencyRate: 0.69,
1374
+ taxInclusive: true,
1375
+ billDate: new RFCDate("2020-09-30"),
1376
+ dueDate: new RFCDate("2020-10-30"),
1377
+ paidDate: new RFCDate("2020-10-30"),
1378
+ poNumber: "90000117",
1379
+ reference: "123456",
1380
+ lineItems: [
1381
+ {
1382
+ rowId: "12345",
1383
+ code: "120-C",
1384
+ lineNumber: 1,
1385
+ description:
1386
+ "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.",
1387
+ type: "expense_account",
1388
+ taxAmount: 27500,
1389
+ totalAmount: 27500,
1390
+ quantity: 1,
1391
+ unitPrice: 27500.5,
1392
+ unitOfMeasure: "pc.",
1393
+ discountPercentage: 0.01,
1394
+ discountAmount: 19.99,
1395
+ locationId: "12345",
1396
+ departmentId: "12345",
1397
+ item: {
1398
+ id: "12344",
1399
+ code: "120-C",
1400
+ name: "Model Y",
1401
+ },
1402
+ taxRate: {
1403
+ id: "123456",
1404
+ rate: 10,
1405
+ },
1406
+ ledgerAccount: {
1407
+ id: "123456",
1408
+ nominalCode: "N091",
1409
+ code: "453",
1410
+ },
1411
+ trackingCategories: [
1412
+ {
1413
+ id: "123456",
1414
+ name: "New York",
1415
+ },
1416
+ {
1417
+ id: "123456",
1418
+ name: "New York",
1419
+ },
1420
+ ],
1421
+ rowVersion: "1-12345",
1422
+ },
1423
+ {
1424
+ rowId: "12345",
1425
+ code: "120-C",
1426
+ lineNumber: 1,
1427
+ description:
1428
+ "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.",
1429
+ type: "expense_account",
1430
+ taxAmount: 27500,
1431
+ totalAmount: 27500,
1432
+ quantity: 1,
1433
+ unitPrice: 27500.5,
1434
+ unitOfMeasure: "pc.",
1435
+ discountPercentage: 0.01,
1436
+ discountAmount: 19.99,
1437
+ locationId: "12345",
1438
+ departmentId: "12345",
1439
+ item: {
1440
+ id: "12344",
1441
+ code: "120-C",
1442
+ name: "Model Y",
1443
+ },
1444
+ taxRate: {
1445
+ id: "123456",
1446
+ rate: 10,
1447
+ },
1448
+ ledgerAccount: {
1449
+ id: "123456",
1450
+ nominalCode: "N091",
1451
+ code: "453",
1452
+ },
1453
+ trackingCategories: [
1454
+ {
1455
+ id: "123456",
1456
+ name: "New York",
1457
+ },
1458
+ {
1459
+ id: "123456",
1460
+ name: "New York",
1461
+ },
1462
+ ],
1463
+ rowVersion: "1-12345",
1464
+ },
1465
+ {
1466
+ rowId: "12345",
1467
+ code: "120-C",
1468
+ lineNumber: 1,
1469
+ description:
1470
+ "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.",
1471
+ type: "expense_account",
1472
+ taxAmount: 27500,
1473
+ totalAmount: 27500,
1474
+ quantity: 1,
1475
+ unitPrice: 27500.5,
1476
+ unitOfMeasure: "pc.",
1477
+ discountPercentage: 0.01,
1478
+ discountAmount: 19.99,
1479
+ locationId: "12345",
1480
+ departmentId: "12345",
1481
+ item: {
1482
+ id: "12344",
1483
+ code: "120-C",
1484
+ name: "Model Y",
1485
+ },
1486
+ taxRate: {
1487
+ id: "123456",
1488
+ rate: 10,
1489
+ },
1490
+ ledgerAccount: {
1491
+ id: "123456",
1492
+ nominalCode: "N091",
1493
+ code: "453",
1494
+ },
1495
+ trackingCategories: [
1496
+ {
1497
+ id: "123456",
1498
+ name: "New York",
1499
+ },
1500
+ {
1501
+ id: "123456",
1502
+ name: "New York",
1503
+ },
1504
+ {
1505
+ id: "123456",
1506
+ name: "New York",
1507
+ },
1508
+ ],
1509
+ rowVersion: "1-12345",
1510
+ },
1511
+ ],
1512
+ terms: "Net 30 days",
1513
+ balance: 27500,
1514
+ deposit: 0,
1515
+ subTotal: 27500,
1516
+ totalTax: 2500,
1517
+ total: 27500,
1518
+ taxCode: "1234",
1519
+ notes: "Some notes about this bill.",
1520
+ status: "draft",
1521
+ ledgerAccount: {
1522
+ id: "123456",
1523
+ nominalCode: "N091",
1524
+ code: "453",
1525
+ },
1526
+ paymentMethod: "cash",
1527
+ channel: "email",
1528
+ language: "EN",
1529
+ accountingByRow: false,
1530
+ bankAccount: {
1531
+ bankName: "Monzo",
1532
+ accountNumber: "123465",
1533
+ accountName: "SPACEX LLC",
1534
+ accountType: "credit_card",
1535
+ iban: "CH2989144532982975332",
1536
+ bic: "AUDSCHGGXXX",
1537
+ routingNumber: "012345678",
1538
+ bsbNumber: "062-001",
1539
+ branchIdentifier: "001",
1540
+ bankCode: "BNH",
1541
+ currency: "USD",
1542
+ },
1543
+ discountPercentage: 5.5,
1544
+ sourceDocumentUrl: "https://www.invoicesolution.com/bill/123456",
1545
+ trackingCategories: [
1546
+ {
1547
+ id: "123456",
1548
+ name: "New York",
1549
+ },
1550
+ {
1551
+ id: "123456",
1552
+ name: "New York",
1553
+ },
1554
+ ],
1555
+ rowVersion: "1-12345",
1556
+ customFields: [
1557
+ {
1558
+ id: "2389328923893298",
1559
+ name: "employee_level",
1560
+ description: "Employee Level",
1561
+ value: {},
1562
+ },
1563
+ {
1564
+ id: "2389328923893298",
1565
+ name: "employee_level",
1566
+ description: "Employee Level",
1567
+ value: {
1568
+ "0": {},
1569
+ },
1570
+ },
1571
+ ],
1572
+ passThrough: [
1573
+ {
1574
+ serviceId: "<id>",
1575
+ extendPaths: [
1576
+ {
1577
+ path: "$.nested.property",
1578
+ value: {
1579
+ "TaxClassificationRef": {
1580
+ "value": "EUC-99990201-V1-00020000",
1581
+ },
1582
+ },
1583
+ },
1584
+ ],
1585
+ },
1586
+ ],
1587
+ accountingPeriod: "01-24",
1588
+ },
1589
+ });
1590
+ expect(result.httpMeta.response.status).toBe(200);
1591
+ expect(result.updateBillResponse).toBeDefined();
1592
+ expect(result.updateBillResponse).toEqual({
1593
+ statusCode: 200,
1594
+ status: "OK",
1595
+ service: "xero",
1596
+ resource: "bills",
1597
+ operation: "update",
1598
+ data: {
1599
+ id: "12345",
1600
+ },
1601
+ });
1111
1602
  });
1112
1603
 
1113
1604
  test("Bills Accounting Bills Delete", async () => {