From 970a406dc22ac8fa7ba557be8533f81a419f6540 Mon Sep 17 00:00:00 2001 From: Brad Lint Date: Wed, 23 Oct 2024 16:14:25 -0400 Subject: [PATCH 1/2] Updated typing on remote_fields in Pydantic models to make it an optional field. --- src/merge/resources/accounting/types/contact.py | 2 +- src/merge/resources/accounting/types/expense.py | 2 +- src/merge/resources/accounting/types/invoice.py | 2 +- src/merge/resources/accounting/types/invoice_line_item.py | 2 +- src/merge/resources/accounting/types/journal_entry.py | 2 +- src/merge/resources/accounting/types/journal_line.py | 2 +- src/merge/resources/accounting/types/payment.py | 2 +- src/merge/resources/accounting/types/purchase_order.py | 2 +- .../resources/accounting/types/purchase_order_line_item.py | 2 +- src/merge/resources/crm/types/account.py | 2 +- src/merge/resources/crm/types/contact.py | 2 +- src/merge/resources/crm/types/custom_object.py | 2 +- src/merge/resources/crm/types/engagement.py | 2 +- src/merge/resources/crm/types/engagement_type.py | 2 +- src/merge/resources/crm/types/lead.py | 2 +- src/merge/resources/crm/types/note.py | 2 +- src/merge/resources/crm/types/opportunity.py | 2 +- src/merge/resources/crm/types/stage.py | 2 +- src/merge/resources/crm/types/task.py | 2 +- src/merge/resources/crm/types/user.py | 2 +- src/merge/resources/ticketing/types/ticket.py | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/merge/resources/accounting/types/contact.py b/src/merge/resources/accounting/types/contact.py index 31c9c2fd..9f7a3296 100644 --- a/src/merge/resources/accounting/types/contact.py +++ b/src/merge/resources/accounting/types/contact.py @@ -109,7 +109,7 @@ class Contact(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/accounting/types/expense.py b/src/merge/resources/accounting/types/expense.py index 1336b7c8..2b137ed2 100644 --- a/src/merge/resources/accounting/types/expense.py +++ b/src/merge/resources/accounting/types/expense.py @@ -428,7 +428,7 @@ class Expense(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/accounting/types/invoice.py b/src/merge/resources/accounting/types/invoice.py index 00213e03..2d269ad8 100644 --- a/src/merge/resources/accounting/types/invoice.py +++ b/src/merge/resources/accounting/types/invoice.py @@ -483,7 +483,7 @@ class Invoice(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/accounting/types/invoice_line_item.py b/src/merge/resources/accounting/types/invoice_line_item.py index d5ad1019..2f26b7b3 100644 --- a/src/merge/resources/accounting/types/invoice_line_item.py +++ b/src/merge/resources/accounting/types/invoice_line_item.py @@ -405,7 +405,7 @@ class InvoiceLineItem(UniversalBaseModel): """ field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/accounting/types/journal_entry.py b/src/merge/resources/accounting/types/journal_entry.py index 0de4f12f..7ed86c37 100644 --- a/src/merge/resources/accounting/types/journal_entry.py +++ b/src/merge/resources/accounting/types/journal_entry.py @@ -434,7 +434,7 @@ class JournalEntry(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/accounting/types/journal_line.py b/src/merge/resources/accounting/types/journal_line.py index 90d1e01c..65810d1d 100644 --- a/src/merge/resources/accounting/types/journal_line.py +++ b/src/merge/resources/accounting/types/journal_line.py @@ -393,7 +393,7 @@ class JournalLine(UniversalBaseModel): Indicates whether or not this object has been deleted in the third party platform. Full coverage deletion detection is a premium add-on. Native deletion detection is offered for free with limited coverage. [Learn more](https://docs.merge.dev/integrations/hris/supported-features/). """ - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/accounting/types/payment.py b/src/merge/resources/accounting/types/payment.py index 5881ec73..5ad46788 100644 --- a/src/merge/resources/accounting/types/payment.py +++ b/src/merge/resources/accounting/types/payment.py @@ -419,7 +419,7 @@ class Payment(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/accounting/types/purchase_order.py b/src/merge/resources/accounting/types/purchase_order.py index 644a7af7..18b70e2b 100644 --- a/src/merge/resources/accounting/types/purchase_order.py +++ b/src/merge/resources/accounting/types/purchase_order.py @@ -450,7 +450,7 @@ class PurchaseOrder(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/accounting/types/purchase_order_line_item.py b/src/merge/resources/accounting/types/purchase_order_line_item.py index 1ecedbf7..03c632a4 100644 --- a/src/merge/resources/accounting/types/purchase_order_line_item.py +++ b/src/merge/resources/accounting/types/purchase_order_line_item.py @@ -412,7 +412,7 @@ class PurchaseOrderLineItem(UniversalBaseModel): Indicates whether or not this object has been deleted in the third party platform. Full coverage deletion detection is a premium add-on. Native deletion detection is offered for free with limited coverage. [Learn more](https://docs.merge.dev/integrations/hris/supported-features/). """ - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/crm/types/account.py b/src/merge/resources/crm/types/account.py index ea257151..9254116c 100644 --- a/src/merge/resources/crm/types/account.py +++ b/src/merge/resources/crm/types/account.py @@ -95,7 +95,7 @@ class Account(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/crm/types/contact.py b/src/merge/resources/crm/types/contact.py index d90b3381..1f1f6a44 100644 --- a/src/merge/resources/crm/types/contact.py +++ b/src/merge/resources/crm/types/contact.py @@ -83,7 +83,7 @@ class Contact(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/crm/types/custom_object.py b/src/merge/resources/crm/types/custom_object.py index 1a637020..97aeec26 100644 --- a/src/merge/resources/crm/types/custom_object.py +++ b/src/merge/resources/crm/types/custom_object.py @@ -47,7 +47,7 @@ class CustomObject(UniversalBaseModel): The fields and values contained within the custom object record. """ - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/crm/types/engagement.py b/src/merge/resources/crm/types/engagement.py index 5263f7ba..808df69f 100644 --- a/src/merge/resources/crm/types/engagement.py +++ b/src/merge/resources/crm/types/engagement.py @@ -94,7 +94,7 @@ class Engagement(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/crm/types/engagement_type.py b/src/merge/resources/crm/types/engagement_type.py index a5497cbd..d12ed24f 100644 --- a/src/merge/resources/crm/types/engagement_type.py +++ b/src/merge/resources/crm/types/engagement_type.py @@ -52,7 +52,7 @@ class EngagementType(UniversalBaseModel): The engagement type's name. """ - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/crm/types/lead.py b/src/merge/resources/crm/types/lead.py index ff650413..ee97c9f8 100644 --- a/src/merge/resources/crm/types/lead.py +++ b/src/merge/resources/crm/types/lead.py @@ -109,7 +109,7 @@ class Lead(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/crm/types/note.py b/src/merge/resources/crm/types/note.py index f73f0e2f..12fb5445 100644 --- a/src/merge/resources/crm/types/note.py +++ b/src/merge/resources/crm/types/note.py @@ -84,7 +84,7 @@ class Note(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/crm/types/opportunity.py b/src/merge/resources/crm/types/opportunity.py index 267275c2..31e6941b 100644 --- a/src/merge/resources/crm/types/opportunity.py +++ b/src/merge/resources/crm/types/opportunity.py @@ -103,7 +103,7 @@ class Opportunity(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/crm/types/stage.py b/src/merge/resources/crm/types/stage.py index 4a9583a9..effb89b4 100644 --- a/src/merge/resources/crm/types/stage.py +++ b/src/merge/resources/crm/types/stage.py @@ -50,7 +50,7 @@ class Stage(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/crm/types/task.py b/src/merge/resources/crm/types/task.py index fb5f875d..701157a5 100644 --- a/src/merge/resources/crm/types/task.py +++ b/src/merge/resources/crm/types/task.py @@ -92,7 +92,7 @@ class Task(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/crm/types/user.py b/src/merge/resources/crm/types/user.py index 0686763b..a8fc6b9c 100644 --- a/src/merge/resources/crm/types/user.py +++ b/src/merge/resources/crm/types/user.py @@ -60,7 +60,7 @@ class User(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/merge/resources/ticketing/types/ticket.py b/src/merge/resources/ticketing/types/ticket.py index 08a1550f..05ea1c5a 100644 --- a/src/merge/resources/ticketing/types/ticket.py +++ b/src/merge/resources/ticketing/types/ticket.py @@ -139,7 +139,7 @@ class Ticket(UniversalBaseModel): field_mappings: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] remote_data: typing.Optional[typing.List[RemoteData]] - remote_fields: typing.Optional[typing.List[RemoteField]] + remote_fields: typing.Optional[typing.List[RemoteField]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 From 08b4b0e74e13c8c13654717e153ba6b722eed503 Mon Sep 17 00:00:00 2001 From: Brad Lint Date: Thu, 24 Oct 2024 14:49:06 -0400 Subject: [PATCH 2/2] made related object type and id not required + id can be any typed on payment. --- src/merge/resources/accounting/types/payment_line_item.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/merge/resources/accounting/types/payment_line_item.py b/src/merge/resources/accounting/types/payment_line_item.py index 33ecd3b6..4227628c 100644 --- a/src/merge/resources/accounting/types/payment_line_item.py +++ b/src/merge/resources/accounting/types/payment_line_item.py @@ -20,7 +20,7 @@ class PaymentLineItem(UniversalBaseModel): `Payment` will have a field called `applied-to-lines` which will be an array of `PaymentLineItemInternalMappingSerializer` objects that can either be a `Invoice`, `CreditNote`, or `JournalEntry`. """ - id: typing.Optional[str] + id: typing.Optional[typing.Any] = None remote_id: typing.Optional[str] = pydantic.Field() """ The third-party API ID of the matching object. @@ -46,12 +46,12 @@ class PaymentLineItem(UniversalBaseModel): The date the payment portion is applied. """ - related_object_id: typing.Optional[str] = pydantic.Field() + related_object_id: typing.Optional[str] = None """ The Merge ID of the transaction the payment portion is being applied to. """ - related_object_type: typing.Optional[str] = pydantic.Field() + related_object_type: typing.Optional[str] = None """ The type of transaction the payment portion is being applied to. Possible values include: INVOICE, JOURNAL_ENTRY, or CREDIT_NOTE. """