# coding: utf-8 """ easybill REST API The first version of the easybill REST API. [CHANGELOG](https://api.easybill.de/rest/v1/CHANGELOG.md) ## Authentication You can choose between two available methods: `Basic Auth` or `Bearer Token`. In each HTTP request, one of the following HTTP headers is required: ``` # Basic Auth Authorization: Basic base64_encode(':') # Bearer Token Authorization: Bearer ``` ## Limitations ### Request Limit * PLUS: 10 requests per minute * BUSINESS: 60 requests per minute If the limit is exceeded, you will receive the HTTP error: `429 Too Many Requests` ### Result Limit All result lists are limited to 100 by default. This limit can be increased by the query parameter `limit` to a maximum of 1000. ## Query filter Many list resources can be filtered. In `/documents` you can filter e.g. by number with `/documents?number=111028654`. If you want to filter multiple numbers, you can either enter them separated by commas `/documents?number=111028654,222006895` or as an array `/documents?number[]=111028654&number[]=222006895`. **Warning**: The maximum size of an HTTP request line in bytes is 4094. If this limit is exceeded, you will receive the HTTP error: `414 Request-URI Too Large` ### Escape commas in query You can escape commans in query `name=Patrick\\, Peter` if you submit the header `X-Easybill-Escape: true` in your request. ## Property login_id This is the login of your admin or employee account. ## Date and Date-Time format Please use the timezone `Europe/Berlin`. * **date** = *Y-m-d* = `2016-12-31` * **date-time** = *Y-m-d H:i:s* = `2016-12-31 03:13:37` Date or datetime can be `null` because the attributes have been added later and the entry is older. The version of the OpenAPI document: 1.96.0 Generated by OpenAPI Generator (https://openapi-generator.tech) Do not edit the class manually. """ # noqa: E501 from __future__ import annotations import pprint import re # noqa: F401 import json from datetime import date from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr, field_validator from typing import Any, ClassVar, Dict, List, Optional, Union from typing_extensions import Annotated from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python class CustomerSnapshot(BaseModel): """ A snapshot of the customer model which belongs to a document. This model is readonly and the state is final after finalization of the document. It's is identical to the state of the customer model at the time of finalization. Updates to the actual customer dataset won't affect this snapshot, however if you update the document the customer and therefore the customer snapshot may reflect a different state. """ # noqa: E501 acquire_options: Optional[StrictInt] = Field(default=None, description="1 = Empfehlung eines anderen Kunden, 2 = Zeitungsanzeige, 3 = Eigene Akquisition, 4 = Mitarbeiter Akquisition, 5 = Google, 6 = Gelbe Seiten, 7 = Kostenlose Internet Plattform, 8 = Bezahlte Internet Plattform") additional_groups_ids: Optional[List[StrictInt]] = None bank_account: Optional[StrictStr] = None bank_account_owner: Optional[StrictStr] = None bank_bic: Optional[StrictStr] = None bank_code: Optional[StrictStr] = None bank_iban: Optional[StrictStr] = None bank_name: Optional[StrictStr] = None birth_date: Optional[date] = None cash_allowance: Optional[Union[Annotated[float, Field(le=100, strict=True, ge=0)], Annotated[int, Field(le=100, strict=True, ge=0)]]] = None cash_allowance_days: Optional[StrictInt] = None cash_discount: Optional[Union[StrictFloat, StrictInt]] = None cash_discount_type: Optional[StrictStr] = None city: Optional[StrictStr] = None state: Optional[StrictStr] = None company_name: Optional[StrictStr] country: Optional[StrictStr] = None created_at: Optional[date] = None updated_at: Optional[StrictStr] = None delivery_title: Optional[StrictStr] = None delivery_city: Optional[StrictStr] = None delivery_state: Optional[StrictStr] = None delivery_company_name: Optional[StrictStr] = None delivery_country: Optional[StrictStr] = None delivery_first_name: Optional[StrictStr] = None delivery_last_name: Optional[StrictStr] = None delivery_personal: Optional[StrictBool] = None delivery_salutation: Optional[StrictInt] = Field(default=None, description="0 = nothing, 1 = Mr, 2 = Mrs, 3 = Company, 4 = Mr & Mrs, 5 = Married couple, 6 = Family") delivery_street: Optional[StrictStr] = None delivery_suffix_1: Optional[StrictStr] = None delivery_suffix_2: Optional[StrictStr] = None delivery_zip_code: Optional[StrictStr] = None display_name: Optional[StrictStr] = None emails: Optional[List[StrictStr]] = None fax: Optional[StrictStr] = None first_name: Optional[StrictStr] = None grace_period: Optional[StrictInt] = Field(default=None, description="will be replaced by its alias due_in_days.") due_in_days: Optional[StrictInt] = Field(default=None, description="due date in days") group_id: Optional[StrictInt] = None id: Optional[StrictInt] = None info_1: Optional[StrictStr] = None info_2: Optional[StrictStr] = None internet: Optional[StrictStr] = None last_name: Optional[StrictStr] login_id: Optional[StrictInt] = None mobile: Optional[StrictStr] = None note: Optional[StrictStr] = None number: Optional[StrictStr] = Field(default=None, description="Automatically generated if empty/omitted and when no type in query is provided or the type 'CUSTOMER', 'CUSTOMER,SUPPLIER'") supplier_number: Optional[StrictStr] = Field(default=None, description="Automatically generated if the type SUPPLIER or 'CUSTOMER,SUPPLIER' is provided as query parameter and the field supplier_number is empty/omitted.") payment_options: Optional[StrictInt] = Field(default=None, description="1 = Stets pünktliche Zahlung, 2 = überwiegend pünktliche Zahlung, 3 = überwiegend verspätete Zahlung, 5 = Grundsätzlich verspätete Zahlung") personal: Optional[StrictBool] = False phone_1: Optional[StrictStr] = None phone_2: Optional[StrictStr] = None postbox: Optional[StrictStr] = None postbox_city: Optional[StrictStr] = None postbox_state: Optional[StrictStr] = None postbox_country: Optional[StrictStr] = None postbox_zip_code: Optional[StrictStr] = None sale_price_level: Optional[StrictStr] = None salutation: Optional[StrictInt] = Field(default=None, description="0 = nothing, 1 = Mr, 2 = Mrs, 3 = Company, 4 = Mr & Mrs, 5 = Married couple, 6 = Family") sepa_agreement: Optional[StrictStr] = Field(default=None, description="BASIC = SEPA-Basislastschrift, COR1 = SEPA-Basislastschrift COR1 (deprecated use BASIC instead), COMPANY = SEPA-Firmenlastschrift, NULL = Noch kein Mandat erteilt") sepa_agreement_date: Optional[date] = None sepa_mandate_reference: Optional[StrictStr] = None since_date: Optional[date] = None street: Optional[StrictStr] = None suffix_1: Optional[StrictStr] = None suffix_2: Optional[StrictStr] = None tax_number: Optional[StrictStr] = None court: Optional[StrictStr] = None court_registry_number: Optional[StrictStr] = None tax_options: Optional[StrictStr] = Field(default=None, description="nStb = Nicht steuerbar (Drittland), nStbUstID = Nicht steuerbar (EU mit USt-IdNr.), nStbNoneUstID = Nicht steuerbar (EU ohne USt-IdNr.), revc = Steuerschuldwechsel §13b (Inland), IG = Innergemeinschaftliche Lieferung, AL = Ausfuhrlieferung, sStfr = sonstige Steuerbefreiung, NULL = Umsatzsteuerpflichtig") title: Optional[StrictStr] = None archived: Optional[StrictBool] = None vat_identifier: Optional[StrictStr] = None zip_code: Optional[StrictStr] = None document_pdf_type: Optional[StrictStr] = Field(default='default', description="Type of PDF to use when sending a Document to the Customer.") buyer_reference: Optional[StrictStr] = Field(default=None, description="Used as \"buyerReference\" in ZUGFeRD and as \"Leitweg-ID\" in the XRechnung format.") foreign_supplier_number: Optional[StrictStr] = Field(default=None, description="The ID given to your company by the customer in his system.") __properties: ClassVar[List[str]] = ["acquire_options", "additional_groups_ids", "bank_account", "bank_account_owner", "bank_bic", "bank_code", "bank_iban", "bank_name", "birth_date", "cash_allowance", "cash_allowance_days", "cash_discount", "cash_discount_type", "city", "state", "company_name", "country", "created_at", "updated_at", "delivery_title", "delivery_city", "delivery_state", "delivery_company_name", "delivery_country", "delivery_first_name", "delivery_last_name", "delivery_personal", "delivery_salutation", "delivery_street", "delivery_suffix_1", "delivery_suffix_2", "delivery_zip_code", "display_name", "emails", "fax", "first_name", "grace_period", "due_in_days", "group_id", "id", "info_1", "info_2", "internet", "last_name", "login_id", "mobile", "note", "number", "supplier_number", "payment_options", "personal", "phone_1", "phone_2", "postbox", "postbox_city", "postbox_state", "postbox_country", "postbox_zip_code", "sale_price_level", "salutation", "sepa_agreement", "sepa_agreement_date", "sepa_mandate_reference", "since_date", "street", "suffix_1", "suffix_2", "tax_number", "court", "court_registry_number", "tax_options", "title", "archived", "vat_identifier", "zip_code", "document_pdf_type", "buyer_reference", "foreign_supplier_number"] @field_validator('cash_discount_type') def cash_discount_type_validate_enum(cls, value): """Validates the enum""" if value is None: return value if value not in set(['PERCENT', 'AMOUNT']): raise ValueError("must be one of enum values ('PERCENT', 'AMOUNT')") return value @field_validator('sale_price_level') def sale_price_level_validate_enum(cls, value): """Validates the enum""" if value is None: return value if value not in set(['SALEPRICE2', 'SALEPRICE3', 'SALEPRICE4', 'SALEPRICE5', 'SALEPRICE6', 'SALEPRICE7', 'SALEPRICE8', 'SALEPRICE9', 'SALEPRICE10']): raise ValueError("must be one of enum values ('SALEPRICE2', 'SALEPRICE3', 'SALEPRICE4', 'SALEPRICE5', 'SALEPRICE6', 'SALEPRICE7', 'SALEPRICE8', 'SALEPRICE9', 'SALEPRICE10')") return value @field_validator('sepa_agreement') def sepa_agreement_validate_enum(cls, value): """Validates the enum""" if value is None: return value if value not in set(['BASIC', 'COR1', 'COMPANY', 'NULL']): raise ValueError("must be one of enum values ('BASIC', 'COR1', 'COMPANY', 'NULL')") return value @field_validator('tax_options') def tax_options_validate_enum(cls, value): """Validates the enum""" if value is None: return value if value not in set(['nStb', 'nStbUstID', 'nStbNoneUstID', 'nStbIm', 'revc', 'IG', 'AL', 'sStfr', 'NULL']): raise ValueError("must be one of enum values ('nStb', 'nStbUstID', 'nStbNoneUstID', 'nStbIm', 'revc', 'IG', 'AL', 'sStfr', 'NULL')") return value @field_validator('document_pdf_type') def document_pdf_type_validate_enum(cls, value): """Validates the enum""" if value is None: return value if value not in set(['default', 'zugferd1', 'zugferd2_2', 'zugferd2_4_en16931', 'zugferd2_4_extended', 'xrechnung2_1_xml', 'xrechnung2_2_xml', 'xrechnung2_3_xml', 'xrechnung3_0_xml']): raise ValueError("must be one of enum values ('default', 'zugferd1', 'zugferd2_2', 'zugferd2_4_en16931', 'zugferd2_4_extended', 'xrechnung2_1_xml', 'xrechnung2_2_xml', 'xrechnung2_3_xml', 'xrechnung3_0_xml')") return value model_config = ConfigDict( validate_by_name=True, validate_by_alias=True, validate_assignment=True, protected_namespaces=(), ) def to_str(self) -> str: """Returns the string representation of the model using alias""" return pprint.pformat(self.model_dump(by_alias=True)) def to_json(self) -> str: """Returns the JSON representation of the model using alias""" return json.dumps(to_jsonable_python(self.to_dict())) @classmethod def from_json(cls, json_str: str) -> Optional[Self]: """Create an instance of CustomerSnapshot from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: """Return the dictionary representation of the model using alias. This has the following differences from calling pydantic's `self.model_dump(by_alias=True)`: * `None` is only added to the output dict for nullable fields that were set at model initialization. Other fields with value `None` are ignored. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "created_at", "updated_at", "display_name", "id", ]) _dict = self.model_dump( by_alias=True, exclude=excluded_fields, exclude_none=True, ) # set to None if acquire_options (nullable) is None # and model_fields_set contains the field if self.acquire_options is None and "acquire_options" in self.model_fields_set: _dict['acquire_options'] = None # set to None if bank_account (nullable) is None # and model_fields_set contains the field if self.bank_account is None and "bank_account" in self.model_fields_set: _dict['bank_account'] = None # set to None if bank_account_owner (nullable) is None # and model_fields_set contains the field if self.bank_account_owner is None and "bank_account_owner" in self.model_fields_set: _dict['bank_account_owner'] = None # set to None if bank_bic (nullable) is None # and model_fields_set contains the field if self.bank_bic is None and "bank_bic" in self.model_fields_set: _dict['bank_bic'] = None # set to None if bank_code (nullable) is None # and model_fields_set contains the field if self.bank_code is None and "bank_code" in self.model_fields_set: _dict['bank_code'] = None # set to None if bank_iban (nullable) is None # and model_fields_set contains the field if self.bank_iban is None and "bank_iban" in self.model_fields_set: _dict['bank_iban'] = None # set to None if bank_name (nullable) is None # and model_fields_set contains the field if self.bank_name is None and "bank_name" in self.model_fields_set: _dict['bank_name'] = None # set to None if birth_date (nullable) is None # and model_fields_set contains the field if self.birth_date is None and "birth_date" in self.model_fields_set: _dict['birth_date'] = None # set to None if cash_allowance (nullable) is None # and model_fields_set contains the field if self.cash_allowance is None and "cash_allowance" in self.model_fields_set: _dict['cash_allowance'] = None # set to None if cash_discount (nullable) is None # and model_fields_set contains the field if self.cash_discount is None and "cash_discount" in self.model_fields_set: _dict['cash_discount'] = None # set to None if cash_discount_type (nullable) is None # and model_fields_set contains the field if self.cash_discount_type is None and "cash_discount_type" in self.model_fields_set: _dict['cash_discount_type'] = None # set to None if city (nullable) is None # and model_fields_set contains the field if self.city is None and "city" in self.model_fields_set: _dict['city'] = None # set to None if company_name (nullable) is None # and model_fields_set contains the field if self.company_name is None and "company_name" in self.model_fields_set: _dict['company_name'] = None # set to None if delivery_city (nullable) is None # and model_fields_set contains the field if self.delivery_city is None and "delivery_city" in self.model_fields_set: _dict['delivery_city'] = None # set to None if delivery_company_name (nullable) is None # and model_fields_set contains the field if self.delivery_company_name is None and "delivery_company_name" in self.model_fields_set: _dict['delivery_company_name'] = None # set to None if delivery_country (nullable) is None # and model_fields_set contains the field if self.delivery_country is None and "delivery_country" in self.model_fields_set: _dict['delivery_country'] = None # set to None if delivery_first_name (nullable) is None # and model_fields_set contains the field if self.delivery_first_name is None and "delivery_first_name" in self.model_fields_set: _dict['delivery_first_name'] = None # set to None if delivery_last_name (nullable) is None # and model_fields_set contains the field if self.delivery_last_name is None and "delivery_last_name" in self.model_fields_set: _dict['delivery_last_name'] = None # set to None if delivery_street (nullable) is None # and model_fields_set contains the field if self.delivery_street is None and "delivery_street" in self.model_fields_set: _dict['delivery_street'] = None # set to None if delivery_suffix_1 (nullable) is None # and model_fields_set contains the field if self.delivery_suffix_1 is None and "delivery_suffix_1" in self.model_fields_set: _dict['delivery_suffix_1'] = None # set to None if delivery_suffix_2 (nullable) is None # and model_fields_set contains the field if self.delivery_suffix_2 is None and "delivery_suffix_2" in self.model_fields_set: _dict['delivery_suffix_2'] = None # set to None if delivery_zip_code (nullable) is None # and model_fields_set contains the field if self.delivery_zip_code is None and "delivery_zip_code" in self.model_fields_set: _dict['delivery_zip_code'] = None # set to None if fax (nullable) is None # and model_fields_set contains the field if self.fax is None and "fax" in self.model_fields_set: _dict['fax'] = None # set to None if first_name (nullable) is None # and model_fields_set contains the field if self.first_name is None and "first_name" in self.model_fields_set: _dict['first_name'] = None # set to None if grace_period (nullable) is None # and model_fields_set contains the field if self.grace_period is None and "grace_period" in self.model_fields_set: _dict['grace_period'] = None # set to None if due_in_days (nullable) is None # and model_fields_set contains the field if self.due_in_days is None and "due_in_days" in self.model_fields_set: _dict['due_in_days'] = None # set to None if group_id (nullable) is None # and model_fields_set contains the field if self.group_id is None and "group_id" in self.model_fields_set: _dict['group_id'] = None # set to None if info_1 (nullable) is None # and model_fields_set contains the field if self.info_1 is None and "info_1" in self.model_fields_set: _dict['info_1'] = None # set to None if info_2 (nullable) is None # and model_fields_set contains the field if self.info_2 is None and "info_2" in self.model_fields_set: _dict['info_2'] = None # set to None if internet (nullable) is None # and model_fields_set contains the field if self.internet is None and "internet" in self.model_fields_set: _dict['internet'] = None # set to None if last_name (nullable) is None # and model_fields_set contains the field if self.last_name is None and "last_name" in self.model_fields_set: _dict['last_name'] = None # set to None if mobile (nullable) is None # and model_fields_set contains the field if self.mobile is None and "mobile" in self.model_fields_set: _dict['mobile'] = None # set to None if note (nullable) is None # and model_fields_set contains the field if self.note is None and "note" in self.model_fields_set: _dict['note'] = None # set to None if payment_options (nullable) is None # and model_fields_set contains the field if self.payment_options is None and "payment_options" in self.model_fields_set: _dict['payment_options'] = None # set to None if phone_1 (nullable) is None # and model_fields_set contains the field if self.phone_1 is None and "phone_1" in self.model_fields_set: _dict['phone_1'] = None # set to None if phone_2 (nullable) is None # and model_fields_set contains the field if self.phone_2 is None and "phone_2" in self.model_fields_set: _dict['phone_2'] = None # set to None if postbox (nullable) is None # and model_fields_set contains the field if self.postbox is None and "postbox" in self.model_fields_set: _dict['postbox'] = None # set to None if postbox_city (nullable) is None # and model_fields_set contains the field if self.postbox_city is None and "postbox_city" in self.model_fields_set: _dict['postbox_city'] = None # set to None if postbox_country (nullable) is None # and model_fields_set contains the field if self.postbox_country is None and "postbox_country" in self.model_fields_set: _dict['postbox_country'] = None # set to None if postbox_zip_code (nullable) is None # and model_fields_set contains the field if self.postbox_zip_code is None and "postbox_zip_code" in self.model_fields_set: _dict['postbox_zip_code'] = None # set to None if sale_price_level (nullable) is None # and model_fields_set contains the field if self.sale_price_level is None and "sale_price_level" in self.model_fields_set: _dict['sale_price_level'] = None # set to None if sepa_agreement (nullable) is None # and model_fields_set contains the field if self.sepa_agreement is None and "sepa_agreement" in self.model_fields_set: _dict['sepa_agreement'] = None # set to None if sepa_agreement_date (nullable) is None # and model_fields_set contains the field if self.sepa_agreement_date is None and "sepa_agreement_date" in self.model_fields_set: _dict['sepa_agreement_date'] = None # set to None if sepa_mandate_reference (nullable) is None # and model_fields_set contains the field if self.sepa_mandate_reference is None and "sepa_mandate_reference" in self.model_fields_set: _dict['sepa_mandate_reference'] = None # set to None if since_date (nullable) is None # and model_fields_set contains the field if self.since_date is None and "since_date" in self.model_fields_set: _dict['since_date'] = None # set to None if street (nullable) is None # and model_fields_set contains the field if self.street is None and "street" in self.model_fields_set: _dict['street'] = None # set to None if suffix_1 (nullable) is None # and model_fields_set contains the field if self.suffix_1 is None and "suffix_1" in self.model_fields_set: _dict['suffix_1'] = None # set to None if suffix_2 (nullable) is None # and model_fields_set contains the field if self.suffix_2 is None and "suffix_2" in self.model_fields_set: _dict['suffix_2'] = None # set to None if tax_number (nullable) is None # and model_fields_set contains the field if self.tax_number is None and "tax_number" in self.model_fields_set: _dict['tax_number'] = None # set to None if court (nullable) is None # and model_fields_set contains the field if self.court is None and "court" in self.model_fields_set: _dict['court'] = None # set to None if court_registry_number (nullable) is None # and model_fields_set contains the field if self.court_registry_number is None and "court_registry_number" in self.model_fields_set: _dict['court_registry_number'] = None # set to None if tax_options (nullable) is None # and model_fields_set contains the field if self.tax_options is None and "tax_options" in self.model_fields_set: _dict['tax_options'] = None # set to None if title (nullable) is None # and model_fields_set contains the field if self.title is None and "title" in self.model_fields_set: _dict['title'] = None # set to None if vat_identifier (nullable) is None # and model_fields_set contains the field if self.vat_identifier is None and "vat_identifier" in self.model_fields_set: _dict['vat_identifier'] = None # set to None if zip_code (nullable) is None # and model_fields_set contains the field if self.zip_code is None and "zip_code" in self.model_fields_set: _dict['zip_code'] = None return _dict @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: """Create an instance of CustomerSnapshot from a dict""" if obj is None: return None if not isinstance(obj, dict): return cls.model_validate(obj) _obj = cls.model_validate({ "acquire_options": obj.get("acquire_options"), "additional_groups_ids": obj.get("additional_groups_ids"), "bank_account": obj.get("bank_account"), "bank_account_owner": obj.get("bank_account_owner"), "bank_bic": obj.get("bank_bic"), "bank_code": obj.get("bank_code"), "bank_iban": obj.get("bank_iban"), "bank_name": obj.get("bank_name"), "birth_date": obj.get("birth_date"), "cash_allowance": obj.get("cash_allowance"), "cash_allowance_days": obj.get("cash_allowance_days"), "cash_discount": obj.get("cash_discount"), "cash_discount_type": obj.get("cash_discount_type"), "city": obj.get("city"), "state": obj.get("state"), "company_name": obj.get("company_name"), "country": obj.get("country"), "created_at": obj.get("created_at"), "updated_at": obj.get("updated_at"), "delivery_title": obj.get("delivery_title"), "delivery_city": obj.get("delivery_city"), "delivery_state": obj.get("delivery_state"), "delivery_company_name": obj.get("delivery_company_name"), "delivery_country": obj.get("delivery_country"), "delivery_first_name": obj.get("delivery_first_name"), "delivery_last_name": obj.get("delivery_last_name"), "delivery_personal": obj.get("delivery_personal"), "delivery_salutation": obj.get("delivery_salutation"), "delivery_street": obj.get("delivery_street"), "delivery_suffix_1": obj.get("delivery_suffix_1"), "delivery_suffix_2": obj.get("delivery_suffix_2"), "delivery_zip_code": obj.get("delivery_zip_code"), "display_name": obj.get("display_name"), "emails": obj.get("emails"), "fax": obj.get("fax"), "first_name": obj.get("first_name"), "grace_period": obj.get("grace_period"), "due_in_days": obj.get("due_in_days"), "group_id": obj.get("group_id"), "id": obj.get("id"), "info_1": obj.get("info_1"), "info_2": obj.get("info_2"), "internet": obj.get("internet"), "last_name": obj.get("last_name"), "login_id": obj.get("login_id"), "mobile": obj.get("mobile"), "note": obj.get("note"), "number": obj.get("number"), "supplier_number": obj.get("supplier_number"), "payment_options": obj.get("payment_options"), "personal": obj.get("personal") if obj.get("personal") is not None else False, "phone_1": obj.get("phone_1"), "phone_2": obj.get("phone_2"), "postbox": obj.get("postbox"), "postbox_city": obj.get("postbox_city"), "postbox_state": obj.get("postbox_state"), "postbox_country": obj.get("postbox_country"), "postbox_zip_code": obj.get("postbox_zip_code"), "sale_price_level": obj.get("sale_price_level"), "salutation": obj.get("salutation"), "sepa_agreement": obj.get("sepa_agreement"), "sepa_agreement_date": obj.get("sepa_agreement_date"), "sepa_mandate_reference": obj.get("sepa_mandate_reference"), "since_date": obj.get("since_date"), "street": obj.get("street"), "suffix_1": obj.get("suffix_1"), "suffix_2": obj.get("suffix_2"), "tax_number": obj.get("tax_number"), "court": obj.get("court"), "court_registry_number": obj.get("court_registry_number"), "tax_options": obj.get("tax_options"), "title": obj.get("title"), "archived": obj.get("archived"), "vat_identifier": obj.get("vat_identifier"), "zip_code": obj.get("zip_code"), "document_pdf_type": obj.get("document_pdf_type") if obj.get("document_pdf_type") is not None else 'default', "buyer_reference": obj.get("buyer_reference"), "foreign_supplier_number": obj.get("foreign_supplier_number") }) return _obj