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.
- merge/core/client_wrapper.py +2 -2
- merge/core/force_multipart.py +4 -2
- merge/core/http_response.py +1 -1
- merge/core/unchecked_base_model.py +41 -3
- merge/resources/accounting/__init__.py +64 -0
- merge/resources/accounting/client.py +5 -0
- merge/resources/accounting/resources/__init__.py +10 -0
- merge/resources/accounting/resources/accounting_periods/client.py +6 -2
- merge/resources/accounting/resources/accounts/client.py +6 -2
- merge/resources/accounting/resources/attachments/client.py +6 -2
- merge/resources/accounting/resources/audit_trail/client.py +6 -2
- merge/resources/accounting/resources/balance_sheets/client.py +6 -2
- merge/resources/accounting/resources/bank_feed_accounts/client.py +6 -2
- merge/resources/accounting/resources/bank_feed_transactions/client.py +6 -2
- merge/resources/accounting/resources/cash_flow_statements/client.py +6 -2
- merge/resources/accounting/resources/company_info/client.py +6 -2
- merge/resources/accounting/resources/contacts/client.py +195 -4
- merge/resources/accounting/resources/contacts/raw_client.py +203 -0
- merge/resources/accounting/resources/credit_notes/client.py +6 -2
- merge/resources/accounting/resources/employees/client.py +67 -2
- merge/resources/accounting/resources/employees/raw_client.py +62 -0
- merge/resources/accounting/resources/expense_reports/__init__.py +15 -0
- merge/resources/accounting/resources/expense_reports/client.py +1015 -0
- merge/resources/accounting/resources/expense_reports/raw_client.py +1020 -0
- merge/resources/accounting/resources/expense_reports/types/__init__.py +13 -0
- merge/resources/accounting/resources/expense_reports/types/expense_reports_lines_list_request_expand.py +265 -0
- merge/resources/accounting/resources/expense_reports/types/expense_reports_list_request_expand.py +73 -0
- merge/resources/accounting/resources/expense_reports/types/expense_reports_retrieve_request_expand.py +73 -0
- merge/resources/accounting/resources/expenses/client.py +18 -6
- merge/resources/accounting/resources/general_ledger_transactions/client.py +6 -2
- merge/resources/accounting/resources/income_statements/client.py +6 -2
- merge/resources/accounting/resources/invoices/client.py +18 -6
- merge/resources/accounting/resources/issues/client.py +6 -2
- merge/resources/accounting/resources/items/client.py +6 -2
- merge/resources/accounting/resources/journal_entries/client.py +18 -6
- merge/resources/accounting/resources/linked_accounts/client.py +6 -2
- merge/resources/accounting/resources/payment_methods/client.py +6 -2
- merge/resources/accounting/resources/payment_terms/client.py +6 -2
- merge/resources/accounting/resources/payments/client.py +18 -6
- merge/resources/accounting/resources/projects/client.py +67 -2
- merge/resources/accounting/resources/projects/raw_client.py +62 -0
- merge/resources/accounting/resources/purchase_orders/client.py +18 -6
- merge/resources/accounting/resources/sync_status/client.py +6 -2
- merge/resources/accounting/resources/tax_rates/client.py +6 -2
- merge/resources/accounting/resources/tracking_categories/client.py +6 -2
- merge/resources/accounting/resources/transactions/client.py +6 -2
- merge/resources/accounting/resources/transactions/types/transactions_list_request_expand.py +141 -0
- merge/resources/accounting/resources/transactions/types/transactions_retrieve_request_expand.py +141 -0
- merge/resources/accounting/resources/vendor_credits/client.py +6 -2
- merge/resources/accounting/types/__init__.py +56 -0
- merge/resources/accounting/types/expense_report.py +423 -0
- merge/resources/accounting/types/expense_report_company.py +7 -0
- merge/resources/accounting/types/expense_report_line.py +441 -0
- merge/resources/accounting/types/expense_report_line_account.py +7 -0
- merge/resources/accounting/types/expense_report_line_company.py +7 -0
- merge/resources/accounting/types/expense_report_line_contact.py +7 -0
- merge/resources/accounting/types/expense_report_line_employee.py +7 -0
- merge/resources/accounting/types/expense_report_line_project.py +7 -0
- merge/resources/accounting/types/expense_report_line_request.py +427 -0
- merge/resources/accounting/types/expense_report_line_request_account.py +7 -0
- merge/resources/accounting/types/expense_report_line_request_company.py +7 -0
- merge/resources/accounting/types/expense_report_line_request_contact.py +7 -0
- merge/resources/accounting/types/expense_report_line_request_employee.py +7 -0
- merge/resources/accounting/types/expense_report_line_request_project.py +7 -0
- merge/resources/accounting/types/expense_report_line_request_tax_rate.py +7 -0
- merge/resources/accounting/types/expense_report_line_tax_rate.py +7 -0
- merge/resources/accounting/types/expense_report_request.py +401 -0
- merge/resources/accounting/types/expense_report_request_accounting_period.py +7 -0
- merge/resources/accounting/types/expense_report_request_company.py +7 -0
- merge/resources/accounting/types/expense_report_request_employee.py +7 -0
- merge/resources/accounting/types/expense_report_response.py +27 -0
- merge/resources/accounting/types/expense_report_status.py +7 -0
- merge/resources/accounting/types/expense_report_status_enum.py +36 -0
- merge/resources/accounting/types/external_target_field_api_response.py +3 -0
- merge/resources/accounting/types/field_mapping_api_instance_response.py +3 -0
- merge/resources/accounting/types/item.py +11 -0
- merge/resources/accounting/types/item_type.py +7 -0
- merge/resources/accounting/types/paginated_expense_report_line_list.py +23 -0
- merge/resources/accounting/types/paginated_expense_report_list.py +23 -0
- merge/resources/accounting/types/patched_contact_request.py +91 -0
- merge/resources/accounting/types/patched_contact_request_addresses_item.py +7 -0
- merge/resources/accounting/types/remote_field_class.py +1 -0
- merge/resources/ats/resources/activities/client.py +6 -2
- merge/resources/ats/resources/applications/client.py +6 -2
- merge/resources/ats/resources/attachments/client.py +6 -2
- merge/resources/ats/resources/audit_trail/client.py +6 -2
- merge/resources/ats/resources/candidates/client.py +6 -2
- merge/resources/ats/resources/departments/client.py +6 -2
- merge/resources/ats/resources/eeocs/client.py +6 -2
- merge/resources/ats/resources/interviews/client.py +6 -2
- merge/resources/ats/resources/issues/client.py +6 -2
- merge/resources/ats/resources/job_interview_stages/client.py +6 -2
- merge/resources/ats/resources/job_postings/client.py +6 -2
- merge/resources/ats/resources/jobs/client.py +8 -2
- merge/resources/ats/resources/linked_accounts/client.py +6 -2
- merge/resources/ats/resources/offers/client.py +6 -2
- merge/resources/ats/resources/offices/client.py +6 -2
- merge/resources/ats/resources/reject_reasons/client.py +6 -2
- merge/resources/ats/resources/scorecards/client.py +6 -2
- merge/resources/ats/resources/sync_status/client.py +6 -2
- merge/resources/ats/resources/tags/client.py +6 -2
- merge/resources/ats/resources/users/client.py +6 -2
- merge/resources/ats/types/event_type_enum.py +4 -0
- merge/resources/crm/resources/accounts/client.py +12 -4
- merge/resources/crm/resources/association_types/client.py +2 -0
- merge/resources/crm/resources/associations/client.py +2 -0
- merge/resources/crm/resources/audit_trail/client.py +6 -2
- merge/resources/crm/resources/contacts/client.py +12 -4
- merge/resources/crm/resources/custom_object_classes/client.py +6 -2
- merge/resources/crm/resources/custom_objects/client.py +8 -2
- merge/resources/crm/resources/engagement_types/client.py +12 -4
- merge/resources/crm/resources/engagements/client.py +12 -4
- merge/resources/crm/resources/issues/client.py +6 -2
- merge/resources/crm/resources/leads/client.py +12 -4
- merge/resources/crm/resources/linked_accounts/client.py +6 -2
- merge/resources/crm/resources/notes/client.py +12 -4
- merge/resources/crm/resources/opportunities/client.py +12 -4
- merge/resources/crm/resources/stages/client.py +12 -4
- merge/resources/crm/resources/sync_status/client.py +6 -2
- merge/resources/crm/resources/tasks/client.py +12 -4
- merge/resources/crm/resources/users/client.py +12 -4
- merge/resources/crm/types/remote_field_class.py +1 -0
- merge/resources/filestorage/resources/audit_trail/client.py +6 -2
- merge/resources/filestorage/resources/drives/client.py +6 -2
- merge/resources/filestorage/resources/files/client.py +42 -4
- merge/resources/filestorage/resources/files/raw_client.py +38 -0
- merge/resources/filestorage/resources/folders/client.py +6 -2
- merge/resources/filestorage/resources/groups/client.py +6 -2
- merge/resources/filestorage/resources/issues/client.py +6 -2
- merge/resources/filestorage/resources/linked_accounts/client.py +6 -2
- merge/resources/filestorage/resources/sync_status/client.py +6 -2
- merge/resources/filestorage/resources/users/client.py +6 -2
- merge/resources/hris/resources/audit_trail/client.py +6 -2
- merge/resources/hris/resources/bank_info/client.py +6 -2
- merge/resources/hris/resources/benefits/client.py +6 -2
- merge/resources/hris/resources/companies/client.py +6 -2
- merge/resources/hris/resources/dependents/client.py +6 -2
- merge/resources/hris/resources/employee_payroll_runs/client.py +6 -2
- merge/resources/hris/resources/employees/client.py +6 -2
- merge/resources/hris/resources/employer_benefits/client.py +6 -2
- merge/resources/hris/resources/employments/client.py +6 -2
- merge/resources/hris/resources/groups/client.py +6 -2
- merge/resources/hris/resources/issues/client.py +6 -2
- merge/resources/hris/resources/linked_accounts/client.py +6 -2
- merge/resources/hris/resources/locations/client.py +6 -2
- merge/resources/hris/resources/pay_groups/client.py +6 -2
- merge/resources/hris/resources/payroll_runs/client.py +6 -2
- merge/resources/hris/resources/sync_status/client.py +6 -2
- merge/resources/hris/resources/teams/client.py +6 -2
- merge/resources/hris/resources/time_off/client.py +6 -2
- merge/resources/hris/resources/time_off_balances/client.py +6 -2
- merge/resources/hris/resources/timesheet_entries/client.py +6 -2
- merge/resources/hris/types/benefit.py +4 -4
- merge/resources/ticketing/resources/accounts/client.py +6 -2
- merge/resources/ticketing/resources/attachments/client.py +6 -2
- merge/resources/ticketing/resources/audit_trail/client.py +6 -2
- merge/resources/ticketing/resources/collections/client.py +8 -2
- merge/resources/ticketing/resources/comments/client.py +6 -2
- merge/resources/ticketing/resources/contacts/client.py +6 -2
- merge/resources/ticketing/resources/issues/client.py +6 -2
- merge/resources/ticketing/resources/linked_accounts/client.py +6 -2
- merge/resources/ticketing/resources/projects/client.py +8 -2
- merge/resources/ticketing/resources/roles/client.py +6 -2
- merge/resources/ticketing/resources/sync_status/client.py +6 -2
- merge/resources/ticketing/resources/tags/client.py +6 -2
- merge/resources/ticketing/resources/teams/client.py +6 -2
- merge/resources/ticketing/resources/tickets/client.py +24 -4
- merge/resources/ticketing/resources/tickets/raw_client.py +10 -0
- merge/resources/ticketing/resources/users/client.py +6 -2
- merge/resources/ticketing/types/patched_ticket_request.py +5 -5
- merge/resources/ticketing/types/remote_field_class.py +1 -0
- {mergepythonclient-2.1.0.dist-info → mergepythonclient-2.2.0.dist-info}/METADATA +5 -2
- {mergepythonclient-2.1.0.dist-info → mergepythonclient-2.2.0.dist-info}/RECORD +175 -140
- {mergepythonclient-2.1.0.dist-info → mergepythonclient-2.2.0.dist-info}/LICENSE.md +0 -0
- {mergepythonclient-2.1.0.dist-info → mergepythonclient-2.2.0.dist-info}/WHEEL +0 -0
merge/core/client_wrapper.py
CHANGED
|
@@ -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.
|
|
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.
|
|
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:
|
merge/core/force_multipart.py
CHANGED
|
@@ -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
|
-
|
|
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
|
|
merge/core/http_response.py
CHANGED
|
@@ -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())
|