mergepythonclient 2.1.0__py3-none-any.whl → 2.2.0__py3-none-any.whl

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 (175) hide show
  1. merge/core/client_wrapper.py +2 -2
  2. merge/core/force_multipart.py +4 -2
  3. merge/core/http_response.py +1 -1
  4. merge/core/unchecked_base_model.py +41 -3
  5. merge/resources/accounting/__init__.py +64 -0
  6. merge/resources/accounting/client.py +5 -0
  7. merge/resources/accounting/resources/__init__.py +10 -0
  8. merge/resources/accounting/resources/accounting_periods/client.py +6 -2
  9. merge/resources/accounting/resources/accounts/client.py +6 -2
  10. merge/resources/accounting/resources/attachments/client.py +6 -2
  11. merge/resources/accounting/resources/audit_trail/client.py +6 -2
  12. merge/resources/accounting/resources/balance_sheets/client.py +6 -2
  13. merge/resources/accounting/resources/bank_feed_accounts/client.py +6 -2
  14. merge/resources/accounting/resources/bank_feed_transactions/client.py +6 -2
  15. merge/resources/accounting/resources/cash_flow_statements/client.py +6 -2
  16. merge/resources/accounting/resources/company_info/client.py +6 -2
  17. merge/resources/accounting/resources/contacts/client.py +195 -4
  18. merge/resources/accounting/resources/contacts/raw_client.py +203 -0
  19. merge/resources/accounting/resources/credit_notes/client.py +6 -2
  20. merge/resources/accounting/resources/employees/client.py +67 -2
  21. merge/resources/accounting/resources/employees/raw_client.py +62 -0
  22. merge/resources/accounting/resources/expense_reports/__init__.py +15 -0
  23. merge/resources/accounting/resources/expense_reports/client.py +1015 -0
  24. merge/resources/accounting/resources/expense_reports/raw_client.py +1020 -0
  25. merge/resources/accounting/resources/expense_reports/types/__init__.py +13 -0
  26. merge/resources/accounting/resources/expense_reports/types/expense_reports_lines_list_request_expand.py +265 -0
  27. merge/resources/accounting/resources/expense_reports/types/expense_reports_list_request_expand.py +73 -0
  28. merge/resources/accounting/resources/expense_reports/types/expense_reports_retrieve_request_expand.py +73 -0
  29. merge/resources/accounting/resources/expenses/client.py +18 -6
  30. merge/resources/accounting/resources/general_ledger_transactions/client.py +6 -2
  31. merge/resources/accounting/resources/income_statements/client.py +6 -2
  32. merge/resources/accounting/resources/invoices/client.py +18 -6
  33. merge/resources/accounting/resources/issues/client.py +6 -2
  34. merge/resources/accounting/resources/items/client.py +6 -2
  35. merge/resources/accounting/resources/journal_entries/client.py +18 -6
  36. merge/resources/accounting/resources/linked_accounts/client.py +6 -2
  37. merge/resources/accounting/resources/payment_methods/client.py +6 -2
  38. merge/resources/accounting/resources/payment_terms/client.py +6 -2
  39. merge/resources/accounting/resources/payments/client.py +18 -6
  40. merge/resources/accounting/resources/projects/client.py +67 -2
  41. merge/resources/accounting/resources/projects/raw_client.py +62 -0
  42. merge/resources/accounting/resources/purchase_orders/client.py +18 -6
  43. merge/resources/accounting/resources/sync_status/client.py +6 -2
  44. merge/resources/accounting/resources/tax_rates/client.py +6 -2
  45. merge/resources/accounting/resources/tracking_categories/client.py +6 -2
  46. merge/resources/accounting/resources/transactions/client.py +6 -2
  47. merge/resources/accounting/resources/transactions/types/transactions_list_request_expand.py +141 -0
  48. merge/resources/accounting/resources/transactions/types/transactions_retrieve_request_expand.py +141 -0
  49. merge/resources/accounting/resources/vendor_credits/client.py +6 -2
  50. merge/resources/accounting/types/__init__.py +56 -0
  51. merge/resources/accounting/types/expense_report.py +423 -0
  52. merge/resources/accounting/types/expense_report_company.py +7 -0
  53. merge/resources/accounting/types/expense_report_line.py +441 -0
  54. merge/resources/accounting/types/expense_report_line_account.py +7 -0
  55. merge/resources/accounting/types/expense_report_line_company.py +7 -0
  56. merge/resources/accounting/types/expense_report_line_contact.py +7 -0
  57. merge/resources/accounting/types/expense_report_line_employee.py +7 -0
  58. merge/resources/accounting/types/expense_report_line_project.py +7 -0
  59. merge/resources/accounting/types/expense_report_line_request.py +427 -0
  60. merge/resources/accounting/types/expense_report_line_request_account.py +7 -0
  61. merge/resources/accounting/types/expense_report_line_request_company.py +7 -0
  62. merge/resources/accounting/types/expense_report_line_request_contact.py +7 -0
  63. merge/resources/accounting/types/expense_report_line_request_employee.py +7 -0
  64. merge/resources/accounting/types/expense_report_line_request_project.py +7 -0
  65. merge/resources/accounting/types/expense_report_line_request_tax_rate.py +7 -0
  66. merge/resources/accounting/types/expense_report_line_tax_rate.py +7 -0
  67. merge/resources/accounting/types/expense_report_request.py +401 -0
  68. merge/resources/accounting/types/expense_report_request_accounting_period.py +7 -0
  69. merge/resources/accounting/types/expense_report_request_company.py +7 -0
  70. merge/resources/accounting/types/expense_report_request_employee.py +7 -0
  71. merge/resources/accounting/types/expense_report_response.py +27 -0
  72. merge/resources/accounting/types/expense_report_status.py +7 -0
  73. merge/resources/accounting/types/expense_report_status_enum.py +36 -0
  74. merge/resources/accounting/types/external_target_field_api_response.py +3 -0
  75. merge/resources/accounting/types/field_mapping_api_instance_response.py +3 -0
  76. merge/resources/accounting/types/item.py +11 -0
  77. merge/resources/accounting/types/item_type.py +7 -0
  78. merge/resources/accounting/types/paginated_expense_report_line_list.py +23 -0
  79. merge/resources/accounting/types/paginated_expense_report_list.py +23 -0
  80. merge/resources/accounting/types/patched_contact_request.py +91 -0
  81. merge/resources/accounting/types/patched_contact_request_addresses_item.py +7 -0
  82. merge/resources/accounting/types/remote_field_class.py +1 -0
  83. merge/resources/ats/resources/activities/client.py +6 -2
  84. merge/resources/ats/resources/applications/client.py +6 -2
  85. merge/resources/ats/resources/attachments/client.py +6 -2
  86. merge/resources/ats/resources/audit_trail/client.py +6 -2
  87. merge/resources/ats/resources/candidates/client.py +6 -2
  88. merge/resources/ats/resources/departments/client.py +6 -2
  89. merge/resources/ats/resources/eeocs/client.py +6 -2
  90. merge/resources/ats/resources/interviews/client.py +6 -2
  91. merge/resources/ats/resources/issues/client.py +6 -2
  92. merge/resources/ats/resources/job_interview_stages/client.py +6 -2
  93. merge/resources/ats/resources/job_postings/client.py +6 -2
  94. merge/resources/ats/resources/jobs/client.py +8 -2
  95. merge/resources/ats/resources/linked_accounts/client.py +6 -2
  96. merge/resources/ats/resources/offers/client.py +6 -2
  97. merge/resources/ats/resources/offices/client.py +6 -2
  98. merge/resources/ats/resources/reject_reasons/client.py +6 -2
  99. merge/resources/ats/resources/scorecards/client.py +6 -2
  100. merge/resources/ats/resources/sync_status/client.py +6 -2
  101. merge/resources/ats/resources/tags/client.py +6 -2
  102. merge/resources/ats/resources/users/client.py +6 -2
  103. merge/resources/ats/types/event_type_enum.py +4 -0
  104. merge/resources/crm/resources/accounts/client.py +12 -4
  105. merge/resources/crm/resources/association_types/client.py +2 -0
  106. merge/resources/crm/resources/associations/client.py +2 -0
  107. merge/resources/crm/resources/audit_trail/client.py +6 -2
  108. merge/resources/crm/resources/contacts/client.py +12 -4
  109. merge/resources/crm/resources/custom_object_classes/client.py +6 -2
  110. merge/resources/crm/resources/custom_objects/client.py +8 -2
  111. merge/resources/crm/resources/engagement_types/client.py +12 -4
  112. merge/resources/crm/resources/engagements/client.py +12 -4
  113. merge/resources/crm/resources/issues/client.py +6 -2
  114. merge/resources/crm/resources/leads/client.py +12 -4
  115. merge/resources/crm/resources/linked_accounts/client.py +6 -2
  116. merge/resources/crm/resources/notes/client.py +12 -4
  117. merge/resources/crm/resources/opportunities/client.py +12 -4
  118. merge/resources/crm/resources/stages/client.py +12 -4
  119. merge/resources/crm/resources/sync_status/client.py +6 -2
  120. merge/resources/crm/resources/tasks/client.py +12 -4
  121. merge/resources/crm/resources/users/client.py +12 -4
  122. merge/resources/crm/types/remote_field_class.py +1 -0
  123. merge/resources/filestorage/resources/audit_trail/client.py +6 -2
  124. merge/resources/filestorage/resources/drives/client.py +6 -2
  125. merge/resources/filestorage/resources/files/client.py +42 -4
  126. merge/resources/filestorage/resources/files/raw_client.py +38 -0
  127. merge/resources/filestorage/resources/folders/client.py +6 -2
  128. merge/resources/filestorage/resources/groups/client.py +6 -2
  129. merge/resources/filestorage/resources/issues/client.py +6 -2
  130. merge/resources/filestorage/resources/linked_accounts/client.py +6 -2
  131. merge/resources/filestorage/resources/sync_status/client.py +6 -2
  132. merge/resources/filestorage/resources/users/client.py +6 -2
  133. merge/resources/hris/resources/audit_trail/client.py +6 -2
  134. merge/resources/hris/resources/bank_info/client.py +6 -2
  135. merge/resources/hris/resources/benefits/client.py +6 -2
  136. merge/resources/hris/resources/companies/client.py +6 -2
  137. merge/resources/hris/resources/dependents/client.py +6 -2
  138. merge/resources/hris/resources/employee_payroll_runs/client.py +6 -2
  139. merge/resources/hris/resources/employees/client.py +6 -2
  140. merge/resources/hris/resources/employer_benefits/client.py +6 -2
  141. merge/resources/hris/resources/employments/client.py +6 -2
  142. merge/resources/hris/resources/groups/client.py +6 -2
  143. merge/resources/hris/resources/issues/client.py +6 -2
  144. merge/resources/hris/resources/linked_accounts/client.py +6 -2
  145. merge/resources/hris/resources/locations/client.py +6 -2
  146. merge/resources/hris/resources/pay_groups/client.py +6 -2
  147. merge/resources/hris/resources/payroll_runs/client.py +6 -2
  148. merge/resources/hris/resources/sync_status/client.py +6 -2
  149. merge/resources/hris/resources/teams/client.py +6 -2
  150. merge/resources/hris/resources/time_off/client.py +6 -2
  151. merge/resources/hris/resources/time_off_balances/client.py +6 -2
  152. merge/resources/hris/resources/timesheet_entries/client.py +6 -2
  153. merge/resources/hris/types/benefit.py +4 -4
  154. merge/resources/ticketing/resources/accounts/client.py +6 -2
  155. merge/resources/ticketing/resources/attachments/client.py +6 -2
  156. merge/resources/ticketing/resources/audit_trail/client.py +6 -2
  157. merge/resources/ticketing/resources/collections/client.py +8 -2
  158. merge/resources/ticketing/resources/comments/client.py +6 -2
  159. merge/resources/ticketing/resources/contacts/client.py +6 -2
  160. merge/resources/ticketing/resources/issues/client.py +6 -2
  161. merge/resources/ticketing/resources/linked_accounts/client.py +6 -2
  162. merge/resources/ticketing/resources/projects/client.py +8 -2
  163. merge/resources/ticketing/resources/roles/client.py +6 -2
  164. merge/resources/ticketing/resources/sync_status/client.py +6 -2
  165. merge/resources/ticketing/resources/tags/client.py +6 -2
  166. merge/resources/ticketing/resources/teams/client.py +6 -2
  167. merge/resources/ticketing/resources/tickets/client.py +24 -4
  168. merge/resources/ticketing/resources/tickets/raw_client.py +10 -0
  169. merge/resources/ticketing/resources/users/client.py +6 -2
  170. merge/resources/ticketing/types/patched_ticket_request.py +5 -5
  171. merge/resources/ticketing/types/remote_field_class.py +1 -0
  172. {mergepythonclient-2.1.0.dist-info → mergepythonclient-2.2.0.dist-info}/METADATA +5 -2
  173. {mergepythonclient-2.1.0.dist-info → mergepythonclient-2.2.0.dist-info}/RECORD +175 -140
  174. {mergepythonclient-2.1.0.dist-info → mergepythonclient-2.2.0.dist-info}/LICENSE.md +0 -0
  175. {mergepythonclient-2.1.0.dist-info → mergepythonclient-2.2.0.dist-info}/WHEEL +0 -0
@@ -24,10 +24,10 @@ class BaseClientWrapper:
24
24
 
25
25
  def get_headers(self) -> typing.Dict[str, str]:
26
26
  headers: typing.Dict[str, str] = {
27
- "User-Agent": "MergePythonClient/2.1.0",
27
+ "User-Agent": "MergePythonClient/2.2.0",
28
28
  "X-Fern-Language": "Python",
29
29
  "X-Fern-SDK-Name": "MergePythonClient",
30
- "X-Fern-SDK-Version": "2.1.0",
30
+ "X-Fern-SDK-Version": "2.2.0",
31
31
  **(self.get_custom_headers() or {}),
32
32
  }
33
33
  if self._account_token is not None:
@@ -1,7 +1,9 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
+ from typing import Any, Dict
3
4
 
4
- class ForceMultipartDict(dict):
5
+
6
+ class ForceMultipartDict(Dict[str, Any]):
5
7
  """
6
8
  A dictionary subclass that always evaluates to True in boolean contexts.
7
9
 
@@ -9,7 +11,7 @@ class ForceMultipartDict(dict):
9
11
  the dictionary is empty, which would normally evaluate to False.
10
12
  """
11
13
 
12
- def __bool__(self):
14
+ def __bool__(self) -> bool:
13
15
  return True
14
16
 
15
17
 
@@ -4,8 +4,8 @@ from typing import Dict, Generic, TypeVar
4
4
 
5
5
  import httpx
6
6
 
7
+ # Generic to represent the underlying type of the data wrapped by the HTTP response.
7
8
  T = TypeVar("T")
8
- """Generic to represent the underlying type of the data wrapped by the HTTP response."""
9
9
 
10
10
 
11
11
  class BaseHttpResponse:
@@ -124,12 +124,50 @@ class UncheckedBaseModel(UniversalBaseModel):
124
124
  return m
125
125
 
126
126
 
127
+ def _validate_collection_items_compatible(collection: typing.Any, target_type: typing.Type[typing.Any]) -> bool:
128
+ """
129
+ Validate that all items in a collection are compatible with the target type.
130
+
131
+ Args:
132
+ collection: The collection to validate (list, set, or dict values)
133
+ target_type: The target type to validate against
134
+
135
+ Returns:
136
+ True if all items are compatible, False otherwise
137
+ """
138
+ if inspect.isclass(target_type) and issubclass(target_type, pydantic.BaseModel):
139
+ for item in collection:
140
+ try:
141
+ # Try to validate the item against the target type
142
+ if isinstance(item, dict):
143
+ parse_obj_as(target_type, item)
144
+ else:
145
+ # If it's not a dict, it might already be the right type
146
+ if not isinstance(item, target_type):
147
+ return False
148
+ except Exception:
149
+ return False
150
+ return True
151
+
152
+
127
153
  def _convert_undiscriminated_union_type(union_type: typing.Type[typing.Any], object_: typing.Any) -> typing.Any:
128
154
  inner_types = get_args(union_type)
129
155
  if typing.Any in inner_types:
130
156
  return object_
131
157
 
132
158
  for inner_type in inner_types:
159
+ # Handle lists of objects that need parsing
160
+ if get_origin(inner_type) is list and isinstance(object_, list):
161
+ list_inner_type = get_args(inner_type)[0]
162
+ try:
163
+ if inspect.isclass(list_inner_type) and issubclass(list_inner_type, pydantic.BaseModel):
164
+ # Validate that all items in the list are compatible with the target type
165
+ if _validate_collection_items_compatible(object_, list_inner_type):
166
+ parsed_list = [parse_obj_as(object_=item, type_=list_inner_type) for item in object_]
167
+ return parsed_list
168
+ except Exception:
169
+ pass
170
+
133
171
  try:
134
172
  if inspect.isclass(inner_type) and issubclass(inner_type, pydantic.BaseModel):
135
173
  # Attempt a validated parse until one works
@@ -148,7 +186,7 @@ def _convert_undiscriminated_union_type(union_type: typing.Type[typing.Any], obj
148
186
  def _convert_union_type(type_: typing.Type[typing.Any], object_: typing.Any) -> typing.Any:
149
187
  base_type = get_origin(type_) or type_
150
188
  union_type = type_
151
- if base_type == typing_extensions.Annotated:
189
+ if base_type == typing_extensions.Annotated: # type: ignore[comparison-overlap]
152
190
  union_type = get_args(type_)[0]
153
191
  annotated_metadata = get_args(type_)[1:]
154
192
  for metadata in annotated_metadata:
@@ -179,11 +217,11 @@ def construct_type(*, type_: typing.Type[typing.Any], object_: typing.Any) -> ty
179
217
  return None
180
218
 
181
219
  base_type = get_origin(type_) or type_
182
- is_annotated = base_type == typing_extensions.Annotated
220
+ is_annotated = base_type == typing_extensions.Annotated # type: ignore[comparison-overlap]
183
221
  maybe_annotation_members = get_args(type_)
184
222
  is_annotated_union = is_annotated and is_union(get_origin(maybe_annotation_members[0]))
185
223
 
186
- if base_type == typing.Any:
224
+ if base_type == typing.Any: # type: ignore[comparison-overlap]
187
225
  return object_
188
226
 
189
227
  if base_type == dict:
@@ -163,6 +163,29 @@ from .types import (
163
163
  ExpenseLineRequestTrackingCategory,
164
164
  ExpenseLineTrackingCategoriesItem,
165
165
  ExpenseLineTrackingCategory,
166
+ ExpenseReport,
167
+ ExpenseReportCompany,
168
+ ExpenseReportLine,
169
+ ExpenseReportLineAccount,
170
+ ExpenseReportLineCompany,
171
+ ExpenseReportLineContact,
172
+ ExpenseReportLineEmployee,
173
+ ExpenseReportLineProject,
174
+ ExpenseReportLineRequest,
175
+ ExpenseReportLineRequestAccount,
176
+ ExpenseReportLineRequestCompany,
177
+ ExpenseReportLineRequestContact,
178
+ ExpenseReportLineRequestEmployee,
179
+ ExpenseReportLineRequestProject,
180
+ ExpenseReportLineRequestTaxRate,
181
+ ExpenseReportLineTaxRate,
182
+ ExpenseReportRequest,
183
+ ExpenseReportRequestAccountingPeriod,
184
+ ExpenseReportRequestCompany,
185
+ ExpenseReportRequestEmployee,
186
+ ExpenseReportResponse,
187
+ ExpenseReportStatus,
188
+ ExpenseReportStatusEnum,
166
189
  ExpenseRequest,
167
190
  ExpenseRequestAccount,
168
191
  ExpenseRequestAccountingPeriod,
@@ -275,6 +298,7 @@ from .types import (
275
298
  ItemSalesTaxRate,
276
299
  ItemSchema,
277
300
  ItemStatus,
301
+ ItemType,
278
302
  ItemTypeEnum,
279
303
  JournalEntry,
280
304
  JournalEntryAccountingPeriod,
@@ -329,6 +353,8 @@ from .types import (
329
353
  PaginatedCreditNoteList,
330
354
  PaginatedEmployeeList,
331
355
  PaginatedExpenseList,
356
+ PaginatedExpenseReportLineList,
357
+ PaginatedExpenseReportList,
332
358
  PaginatedGeneralLedgerTransactionList,
333
359
  PaginatedIncomeStatementList,
334
360
  PaginatedInvoiceList,
@@ -346,6 +372,8 @@ from .types import (
346
372
  PaginatedTrackingCategoryList,
347
373
  PaginatedTransactionList,
348
374
  PaginatedVendorCreditList,
375
+ PatchedContactRequest,
376
+ PatchedContactRequestAddressesItem,
349
377
  PatchedItemRequestRequest,
350
378
  PatchedItemRequestRequestStatus,
351
379
  PatchedItemRequestRequestType,
@@ -508,6 +536,9 @@ from .resources import (
508
536
  CreditNotesRetrieveRequestRemoteFields,
509
537
  CreditNotesRetrieveRequestShowEnumOrigins,
510
538
  EndUserDetailsRequestLanguage,
539
+ ExpenseReportsLinesListRequestExpand,
540
+ ExpenseReportsListRequestExpand,
541
+ ExpenseReportsRetrieveRequestExpand,
511
542
  ExpensesListRequestExpand,
512
543
  ExpensesRetrieveRequestExpand,
513
544
  GeneralLedgerTransactionsListRequestExpand,
@@ -551,6 +582,7 @@ from .resources import (
551
582
  credit_notes,
552
583
  delete_account,
553
584
  employees,
585
+ expense_reports,
554
586
  expenses,
555
587
  field_mapping,
556
588
  force_resync,
@@ -757,6 +789,32 @@ __all__ = [
757
789
  "ExpenseLineRequestTrackingCategory",
758
790
  "ExpenseLineTrackingCategoriesItem",
759
791
  "ExpenseLineTrackingCategory",
792
+ "ExpenseReport",
793
+ "ExpenseReportCompany",
794
+ "ExpenseReportLine",
795
+ "ExpenseReportLineAccount",
796
+ "ExpenseReportLineCompany",
797
+ "ExpenseReportLineContact",
798
+ "ExpenseReportLineEmployee",
799
+ "ExpenseReportLineProject",
800
+ "ExpenseReportLineRequest",
801
+ "ExpenseReportLineRequestAccount",
802
+ "ExpenseReportLineRequestCompany",
803
+ "ExpenseReportLineRequestContact",
804
+ "ExpenseReportLineRequestEmployee",
805
+ "ExpenseReportLineRequestProject",
806
+ "ExpenseReportLineRequestTaxRate",
807
+ "ExpenseReportLineTaxRate",
808
+ "ExpenseReportRequest",
809
+ "ExpenseReportRequestAccountingPeriod",
810
+ "ExpenseReportRequestCompany",
811
+ "ExpenseReportRequestEmployee",
812
+ "ExpenseReportResponse",
813
+ "ExpenseReportStatus",
814
+ "ExpenseReportStatusEnum",
815
+ "ExpenseReportsLinesListRequestExpand",
816
+ "ExpenseReportsListRequestExpand",
817
+ "ExpenseReportsRetrieveRequestExpand",
760
818
  "ExpenseRequest",
761
819
  "ExpenseRequestAccount",
762
820
  "ExpenseRequestAccountingPeriod",
@@ -878,6 +936,7 @@ __all__ = [
878
936
  "ItemSalesTaxRate",
879
937
  "ItemSchema",
880
938
  "ItemStatus",
939
+ "ItemType",
881
940
  "ItemTypeEnum",
882
941
  "ItemsListRequestExpand",
883
942
  "ItemsRetrieveRequestExpand",
@@ -937,6 +996,8 @@ __all__ = [
937
996
  "PaginatedCreditNoteList",
938
997
  "PaginatedEmployeeList",
939
998
  "PaginatedExpenseList",
999
+ "PaginatedExpenseReportLineList",
1000
+ "PaginatedExpenseReportList",
940
1001
  "PaginatedGeneralLedgerTransactionList",
941
1002
  "PaginatedIncomeStatementList",
942
1003
  "PaginatedInvoiceList",
@@ -954,6 +1015,8 @@ __all__ = [
954
1015
  "PaginatedTrackingCategoryList",
955
1016
  "PaginatedTransactionList",
956
1017
  "PaginatedVendorCreditList",
1018
+ "PatchedContactRequest",
1019
+ "PatchedContactRequestAddressesItem",
957
1020
  "PatchedItemRequestRequest",
958
1021
  "PatchedItemRequestRequestStatus",
959
1022
  "PatchedItemRequestRequestType",
@@ -1127,6 +1190,7 @@ __all__ = [
1127
1190
  "credit_notes",
1128
1191
  "delete_account",
1129
1192
  "employees",
1193
+ "expense_reports",
1130
1194
  "expenses",
1131
1195
  "field_mapping",
1132
1196
  "force_resync",
@@ -24,6 +24,7 @@ from .resources.contacts.client import AsyncContactsClient, ContactsClient
24
24
  from .resources.credit_notes.client import AsyncCreditNotesClient, CreditNotesClient
25
25
  from .resources.delete_account.client import AsyncDeleteAccountClient, DeleteAccountClient
26
26
  from .resources.employees.client import AsyncEmployeesClient, EmployeesClient
27
+ from .resources.expense_reports.client import AsyncExpenseReportsClient, ExpenseReportsClient
27
28
  from .resources.expenses.client import AsyncExpensesClient, ExpensesClient
28
29
  from .resources.field_mapping.client import AsyncFieldMappingClient, FieldMappingClient
29
30
  from .resources.force_resync.client import AsyncForceResyncClient, ForceResyncClient
@@ -104,6 +105,8 @@ class AccountingClient:
104
105
 
105
106
  self.employees = EmployeesClient(client_wrapper=client_wrapper)
106
107
 
108
+ self.expense_reports = ExpenseReportsClient(client_wrapper=client_wrapper)
109
+
107
110
  self.expenses = ExpensesClient(client_wrapper=client_wrapper)
108
111
 
109
112
  self.field_mapping = FieldMappingClient(client_wrapper=client_wrapper)
@@ -211,6 +214,8 @@ class AsyncAccountingClient:
211
214
 
212
215
  self.employees = AsyncEmployeesClient(client_wrapper=client_wrapper)
213
216
 
217
+ self.expense_reports = AsyncExpenseReportsClient(client_wrapper=client_wrapper)
218
+
214
219
  self.expenses = AsyncExpensesClient(client_wrapper=client_wrapper)
215
220
 
216
221
  self.field_mapping = AsyncFieldMappingClient(client_wrapper=client_wrapper)
@@ -22,6 +22,7 @@ from . import (
22
22
  credit_notes,
23
23
  delete_account,
24
24
  employees,
25
+ expense_reports,
25
26
  expenses,
26
27
  field_mapping,
27
28
  force_resync,
@@ -67,6 +68,11 @@ from .credit_notes import (
67
68
  CreditNotesRetrieveRequestRemoteFields,
68
69
  CreditNotesRetrieveRequestShowEnumOrigins,
69
70
  )
71
+ from .expense_reports import (
72
+ ExpenseReportsLinesListRequestExpand,
73
+ ExpenseReportsListRequestExpand,
74
+ ExpenseReportsRetrieveRequestExpand,
75
+ )
70
76
  from .expenses import ExpensesListRequestExpand, ExpensesRetrieveRequestExpand
71
77
  from .general_ledger_transactions import (
72
78
  GeneralLedgerTransactionsListRequestExpand,
@@ -106,6 +112,9 @@ __all__ = [
106
112
  "CreditNotesRetrieveRequestRemoteFields",
107
113
  "CreditNotesRetrieveRequestShowEnumOrigins",
108
114
  "EndUserDetailsRequestLanguage",
115
+ "ExpenseReportsLinesListRequestExpand",
116
+ "ExpenseReportsListRequestExpand",
117
+ "ExpenseReportsRetrieveRequestExpand",
109
118
  "ExpensesListRequestExpand",
110
119
  "ExpensesRetrieveRequestExpand",
111
120
  "GeneralLedgerTransactionsListRequestExpand",
@@ -149,6 +158,7 @@ __all__ = [
149
158
  "credit_notes",
150
159
  "delete_account",
151
160
  "employees",
161
+ "expense_reports",
152
162
  "expenses",
153
163
  "field_mapping",
154
164
  "force_resync",
@@ -70,7 +70,9 @@ class AccountingPeriodsClient:
70
70
  account_token="YOUR_ACCOUNT_TOKEN",
71
71
  api_key="YOUR_API_KEY",
72
72
  )
73
- client.accounting.accounting_periods.list()
73
+ client.accounting.accounting_periods.list(
74
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
75
+ )
74
76
  """
75
77
  _response = self._raw_client.list(
76
78
  cursor=cursor,
@@ -198,7 +200,9 @@ class AsyncAccountingPeriodsClient:
198
200
 
199
201
 
200
202
  async def main() -> None:
201
- await client.accounting.accounting_periods.list()
203
+ await client.accounting.accounting_periods.list(
204
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
205
+ )
202
206
 
203
207
 
204
208
  asyncio.run(main())
@@ -133,7 +133,9 @@ class AccountsClient:
133
133
  account_token="YOUR_ACCOUNT_TOKEN",
134
134
  api_key="YOUR_API_KEY",
135
135
  )
136
- client.accounting.accounts.list()
136
+ client.accounting.accounts.list(
137
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
138
+ )
137
139
  """
138
140
  _response = self._raw_client.list(
139
141
  account_type=account_type,
@@ -415,7 +417,9 @@ class AsyncAccountsClient:
415
417
 
416
418
 
417
419
  async def main() -> None:
418
- await client.accounting.accounts.list()
420
+ await client.accounting.accounts.list(
421
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
422
+ )
419
423
 
420
424
 
421
425
  asyncio.run(main())
@@ -101,7 +101,9 @@ class AttachmentsClient:
101
101
  account_token="YOUR_ACCOUNT_TOKEN",
102
102
  api_key="YOUR_API_KEY",
103
103
  )
104
- client.accounting.attachments.list()
104
+ client.accounting.attachments.list(
105
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
106
+ )
105
107
  """
106
108
  _response = self._raw_client.list(
107
109
  company_id=company_id,
@@ -333,7 +335,9 @@ class AsyncAttachmentsClient:
333
335
 
334
336
 
335
337
  async def main() -> None:
336
- await client.accounting.attachments.list()
338
+ await client.accounting.attachments.list(
339
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
340
+ )
337
341
 
338
342
 
339
343
  asyncio.run(main())
@@ -73,7 +73,9 @@ class AuditTrailClient:
73
73
  account_token="YOUR_ACCOUNT_TOKEN",
74
74
  api_key="YOUR_API_KEY",
75
75
  )
76
- client.accounting.audit_trail.list()
76
+ client.accounting.audit_trail.list(
77
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
78
+ )
77
79
  """
78
80
  _response = self._raw_client.list(
79
81
  cursor=cursor,
@@ -157,7 +159,9 @@ class AsyncAuditTrailClient:
157
159
 
158
160
 
159
161
  async def main() -> None:
160
- await client.accounting.audit_trail.list()
162
+ await client.accounting.audit_trail.list(
163
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
164
+ )
161
165
 
162
166
 
163
167
  asyncio.run(main())
@@ -99,7 +99,9 @@ class BalanceSheetsClient:
99
99
  account_token="YOUR_ACCOUNT_TOKEN",
100
100
  api_key="YOUR_API_KEY",
101
101
  )
102
- client.accounting.balance_sheets.list()
102
+ client.accounting.balance_sheets.list(
103
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
104
+ )
103
105
  """
104
106
  _response = self._raw_client.list(
105
107
  company_id=company_id,
@@ -267,7 +269,9 @@ class AsyncBalanceSheetsClient:
267
269
 
268
270
 
269
271
  async def main() -> None:
270
- await client.accounting.balance_sheets.list()
272
+ await client.accounting.balance_sheets.list(
273
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
274
+ )
271
275
 
272
276
 
273
277
  asyncio.run(main())
@@ -76,7 +76,9 @@ class BankFeedAccountsClient:
76
76
  account_token="YOUR_ACCOUNT_TOKEN",
77
77
  api_key="YOUR_API_KEY",
78
78
  )
79
- client.accounting.bank_feed_accounts.list()
79
+ client.accounting.bank_feed_accounts.list(
80
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
81
+ )
80
82
  """
81
83
  _response = self._raw_client.list(
82
84
  cursor=cursor,
@@ -278,7 +280,9 @@ class AsyncBankFeedAccountsClient:
278
280
 
279
281
 
280
282
  async def main() -> None:
281
- await client.accounting.bank_feed_accounts.list()
283
+ await client.accounting.bank_feed_accounts.list(
284
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
285
+ )
282
286
 
283
287
 
284
288
  asyncio.run(main())
@@ -105,7 +105,9 @@ class BankFeedTransactionsClient:
105
105
  account_token="YOUR_ACCOUNT_TOKEN",
106
106
  api_key="YOUR_API_KEY",
107
107
  )
108
- client.accounting.bank_feed_transactions.list()
108
+ client.accounting.bank_feed_transactions.list(
109
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
110
+ )
109
111
  """
110
112
  _response = self._raw_client.list(
111
113
  created_after=created_after,
@@ -347,7 +349,9 @@ class AsyncBankFeedTransactionsClient:
347
349
 
348
350
 
349
351
  async def main() -> None:
350
- await client.accounting.bank_feed_transactions.list()
352
+ await client.accounting.bank_feed_transactions.list(
353
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
354
+ )
351
355
 
352
356
 
353
357
  asyncio.run(main())
@@ -99,7 +99,9 @@ class CashFlowStatementsClient:
99
99
  account_token="YOUR_ACCOUNT_TOKEN",
100
100
  api_key="YOUR_API_KEY",
101
101
  )
102
- client.accounting.cash_flow_statements.list()
102
+ client.accounting.cash_flow_statements.list(
103
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
104
+ )
103
105
  """
104
106
  _response = self._raw_client.list(
105
107
  company_id=company_id,
@@ -267,7 +269,9 @@ class AsyncCashFlowStatementsClient:
267
269
 
268
270
 
269
271
  async def main() -> None:
270
- await client.accounting.cash_flow_statements.list()
272
+ await client.accounting.cash_flow_statements.list(
273
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
274
+ )
271
275
 
272
276
 
273
277
  asyncio.run(main())
@@ -97,7 +97,9 @@ class CompanyInfoClient:
97
97
  account_token="YOUR_ACCOUNT_TOKEN",
98
98
  api_key="YOUR_API_KEY",
99
99
  )
100
- client.accounting.company_info.list()
100
+ client.accounting.company_info.list(
101
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
102
+ )
101
103
  """
102
104
  _response = self._raw_client.list(
103
105
  created_after=created_after,
@@ -260,7 +262,9 @@ class AsyncCompanyInfoClient:
260
262
 
261
263
 
262
264
  async def main() -> None:
263
- await client.accounting.company_info.list()
265
+ await client.accounting.company_info.list(
266
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
267
+ )
264
268
 
265
269
 
266
270
  asyncio.run(main())