exchangelib.items.contact API documentation

# Module `exchangelib.items.contact`

Expand source code

    import datetime
    import logging

    from ..fields import (
        Base64Field,
        BodyContentAttributedValueField,
        BooleanField,
        CharField,
        Choice,
        ChoiceField,
        DateTimeBackedDateField,
        DateTimeField,
        EmailAddressAttributedValueField,
        EmailAddressesField,
        EmailAddressField,
        EWSElementField,
        EWSElementListField,
        IdElementField,
        ImAddressField,
        MailboxField,
        MailboxListField,
        MemberListField,
        PersonaPhoneNumberField,
        PhoneNumberAttributedValueField,
        PhoneNumberField,
        PhysicalAddressField,
        PostalAddressAttributedValueField,
        StringAttributedValueField,
        TextField,
        TextListField,
        URIField,
    )
    from ..properties import Address, Attribution, CompleteName, EmailAddress, FolderId, IdChangeKeyMixIn, PersonaId
    from ..util import TNS
    from ..version import EXCHANGE_2010, EXCHANGE_2010_SP2
    from .item import Item

    log = logging.getLogger(__name__)

    class Contact(Item):
        """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/contact"""

        ELEMENT_NAME = "Contact"

        file_as = TextField(field_uri="contacts:FileAs")
        file_as_mapping = ChoiceField(
            field_uri="contacts:FileAsMapping",
            choices={
                Choice("None"),
                Choice("LastCommaFirst"),
                Choice("FirstSpaceLast"),
                Choice("Company"),
                Choice("LastCommaFirstCompany"),
                Choice("CompanyLastFirst"),
                Choice("LastFirst"),
                Choice("LastFirstCompany"),
                Choice("CompanyLastCommaFirst"),
                Choice("LastFirstSuffix"),
                Choice("LastSpaceFirstCompany"),
                Choice("CompanyLastSpaceFirst"),
                Choice("LastSpaceFirst"),
                Choice("DisplayName"),
                Choice("FirstName"),
                Choice("LastFirstMiddleSuffix"),
                Choice("LastName"),
                Choice("Empty"),
            },
        )
        display_name = TextField(field_uri="contacts:DisplayName", is_required=True)
        given_name = CharField(field_uri="contacts:GivenName")
        initials = TextField(field_uri="contacts:Initials")
        middle_name = CharField(field_uri="contacts:MiddleName")
        nickname = TextField(field_uri="contacts:Nickname")
        complete_name = EWSElementField(field_uri="contacts:CompleteName", value_cls=CompleteName, is_read_only=True)
        company_name = TextField(field_uri="contacts:CompanyName")
        email_addresses = EmailAddressesField(field_uri="contacts:EmailAddress")
        physical_addresses = PhysicalAddressField(field_uri="contacts:PhysicalAddress")
        phone_numbers = PhoneNumberField(field_uri="contacts:PhoneNumber")
        assistant_name = TextField(field_uri="contacts:AssistantName")
        birthday = DateTimeBackedDateField(field_uri="contacts:Birthday", default_time=datetime.time(11, 59))
        business_homepage = URIField(field_uri="contacts:BusinessHomePage")
        children = TextListField(field_uri="contacts:Children")
        companies = TextListField(field_uri="contacts:Companies", is_searchable=False)
        contact_source = ChoiceField(
            field_uri="contacts:ContactSource", choices={Choice("Store"), Choice("ActiveDirectory")}, is_read_only=True
        )
        department = TextField(field_uri="contacts:Department")
        generation = TextField(field_uri="contacts:Generation")
        im_addresses = ImAddressField(field_uri="contacts:ImAddress")
        job_title = TextField(field_uri="contacts:JobTitle")
        manager = TextField(field_uri="contacts:Manager")
        mileage = TextField(field_uri="contacts:Mileage")
        office = TextField(field_uri="contacts:OfficeLocation")
        postal_address_index = ChoiceField(
            field_uri="contacts:PostalAddressIndex",
            choices={Choice("Business"), Choice("Home"), Choice("Other"), Choice("None")},
            default="None",
            is_required_after_save=True,
        )
        profession = TextField(field_uri="contacts:Profession")
        spouse_name = TextField(field_uri="contacts:SpouseName")
        surname = CharField(field_uri="contacts:Surname")
        wedding_anniversary = DateTimeBackedDateField(
            field_uri="contacts:WeddingAnniversary", default_time=datetime.time(11, 59)
        )
        has_picture = BooleanField(field_uri="contacts:HasPicture", supported_from=EXCHANGE_2010, is_read_only=True)
        phonetic_full_name = TextField(
            field_uri="contacts:PhoneticFullName", supported_from=EXCHANGE_2010_SP2, is_read_only=True
        )
        phonetic_first_name = TextField(
            field_uri="contacts:PhoneticFirstName", supported_from=EXCHANGE_2010_SP2, is_read_only=True
        )
        phonetic_last_name = TextField(
            field_uri="contacts:PhoneticLastName", supported_from=EXCHANGE_2010_SP2, is_read_only=True
        )
        email_alias = EmailAddressField(field_uri="contacts:Alias", is_read_only=True, supported_from=EXCHANGE_2010_SP2)
        # 'notes' is documented in MSDN but apparently unused. Writing to it raises ErrorInvalidPropertyRequest. OWA
        # put entries into the 'notes' form field into the 'body' field.
        notes = CharField(field_uri="contacts:Notes", supported_from=EXCHANGE_2010_SP2, is_read_only=True)
        # 'photo' is documented in MSDN but apparently unused. Writing to it raises ErrorInvalidPropertyRequest. OWA
        # adds photos as FileAttachments on the contact item (with 'is_contact_photo=True'), which automatically flips
        # the 'has_picture' field.
        photo = Base64Field(field_uri="contacts:Photo", supported_from=EXCHANGE_2010_SP2, is_read_only=True)
        user_smime_certificate = Base64Field(
            field_uri="contacts:UserSMIMECertificate", supported_from=EXCHANGE_2010_SP2, is_read_only=True
        )
        ms_exchange_certificate = Base64Field(
            field_uri="contacts:MSExchangeCertificate", supported_from=EXCHANGE_2010_SP2, is_read_only=True
        )
        directory_id = TextField(field_uri="contacts:DirectoryId", supported_from=EXCHANGE_2010_SP2, is_read_only=True)
        manager_mailbox = MailboxField(
            field_uri="contacts:ManagerMailbox", supported_from=EXCHANGE_2010_SP2, is_read_only=True
        )
        direct_reports = MailboxListField(
            field_uri="contacts:DirectReports", supported_from=EXCHANGE_2010_SP2, is_read_only=True
        )
        # O365 throws ErrorInternalServerError "[0x004f0102] MapiReplyToBlob" if UniqueBody is requested
        unique_body_idx = Item.FIELDS.index_by_name("unique_body")
        FIELDS = Item.FIELDS[:unique_body_idx] + Item.FIELDS[unique_body_idx + 1 :]

    class Persona(IdChangeKeyMixIn):
        """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/persona"""

        ELEMENT_NAME = "Persona"
        ID_ELEMENT_CLS = PersonaId

        _id = IdElementField(field_uri="persona:PersonaId", value_cls=ID_ELEMENT_CLS, namespace=TNS)
        persona_type = CharField(field_uri="persona:PersonaType")
        persona_object_type = TextField(field_uri="persona:PersonaObjectStatus")
        creation_time = DateTimeField(field_uri="persona:CreationTime")
        bodies = BodyContentAttributedValueField(field_uri="persona:Bodies")
        display_name_first_last_sort_key = TextField(field_uri="persona:DisplayNameFirstLastSortKey")
        display_name_last_first_sort_key = TextField(field_uri="persona:DisplayNameLastFirstSortKey")
        company_sort_key = TextField(field_uri="persona:CompanyNameSortKey")
        home_sort_key = TextField(field_uri="persona:HomeCitySortKey")
        work_city_sort_key = TextField(field_uri="persona:WorkCitySortKey")
        display_name_first_last_header = CharField(field_uri="persona:DisplayNameFirstLastHeader")
        display_name_last_first_header = CharField(field_uri="persona:DisplayNameLastFirstHeader")
        file_as_header = TextField(field_uri="persona:FileAsHeader")
        display_name = CharField(field_uri="persona:DisplayName")
        display_name_first_last = CharField(field_uri="persona:DisplayNameFirstLast")
        display_name_last_first = CharField(field_uri="persona:DisplayNameLastFirst")
        file_as = CharField(field_uri="persona:FileAs")
        file_as_id = TextField(field_uri="persona:FileAsId")
        display_name_prefix = CharField(field_uri="persona:DisplayNamePrefix")
        given_name = CharField(field_uri="persona:GivenName")
        middle_name = CharField(field_uri="persona:MiddleName")
        surname = CharField(field_uri="persona:Surname")
        generation = CharField(field_uri="persona:Generation")
        nickname = TextField(field_uri="persona:Nickname")
        yomi_company_name = TextField(field_uri="persona:YomiCompanyName")
        yomi_first_name = TextField(field_uri="persona:YomiFirstName")
        yomi_last_name = TextField(field_uri="persona:YomiLastName")
        title = CharField(field_uri="persona:Title")
        department = TextField(field_uri="persona:Department")
        company_name = CharField(field_uri="persona:CompanyName")
        email_address = EWSElementField(field_uri="persona:EmailAddress", value_cls=EmailAddress)
        email_addresses = EWSElementListField(field_uri="persona:EmailAddresses", value_cls=Address)
        PhoneNumber = PersonaPhoneNumberField(field_uri="persona:PhoneNumber")
        im_address = CharField(field_uri="persona:ImAddress")
        home_city = CharField(field_uri="persona:HomeCity")
        work_city = CharField(field_uri="persona:WorkCity")
        relevance_score = CharField(field_uri="persona:RelevanceScore")
        folder_ids = EWSElementListField(field_uri="persona:FolderIds", value_cls=FolderId)
        attributions = EWSElementListField(field_uri="persona:Attributions", value_cls=Attribution)
        display_names = StringAttributedValueField(field_uri="persona:DisplayNames")
        file_ases = StringAttributedValueField(field_uri="persona:FileAses")
        file_as_ids = StringAttributedValueField(field_uri="persona:FileAsIds")
        display_name_prefixes = StringAttributedValueField(field_uri="persona:DisplayNamePrefixes")
        given_names = StringAttributedValueField(field_uri="persona:GivenNames")
        middle_names = StringAttributedValueField(field_uri="persona:MiddleNames")
        surnames = StringAttributedValueField(field_uri="persona:Surnames")
        generations = StringAttributedValueField(field_uri="persona:Generations")
        nicknames = StringAttributedValueField(field_uri="persona:Nicknames")
        initials = StringAttributedValueField(field_uri="persona:Initials")
        yomi_company_names = StringAttributedValueField(field_uri="persona:YomiCompanyNames")
        yomi_first_names = StringAttributedValueField(field_uri="persona:YomiFirstNames")
        yomi_last_names = StringAttributedValueField(field_uri="persona:YomiLastNames")
        business_phone_numbers = PhoneNumberAttributedValueField(field_uri="persona:BusinessPhoneNumbers")
        business_phone_numbers2 = PhoneNumberAttributedValueField(field_uri="persona:BusinessPhoneNumbers2")
        home_phones = PhoneNumberAttributedValueField(field_uri="persona:HomePhones")
        home_phones2 = PhoneNumberAttributedValueField(field_uri="persona:HomePhones2")
        mobile_phones = PhoneNumberAttributedValueField(field_uri="persona:MobilePhones")
        mobile_phones2 = PhoneNumberAttributedValueField(field_uri="persona:MobilePhones2")
        assistant_phone_numbers = PhoneNumberAttributedValueField(field_uri="persona:AssistantPhoneNumbers")
        callback_phones = PhoneNumberAttributedValueField(field_uri="persona:CallbackPhones")
        car_phones = PhoneNumberAttributedValueField(field_uri="persona:CarPhones")
        home_faxes = PhoneNumberAttributedValueField(field_uri="persona:HomeFaxes")
        organization_main_phones = PhoneNumberAttributedValueField(field_uri="persona:OrganizationMainPhones")
        other_faxes = PhoneNumberAttributedValueField(field_uri="persona:OtherFaxes")
        other_telephones = PhoneNumberAttributedValueField(field_uri="persona:OtherTelephones")
        other_phones2 = PhoneNumberAttributedValueField(field_uri="persona:OtherPhones2")
        pagers = PhoneNumberAttributedValueField(field_uri="persona:Pagers")
        radio_phones = PhoneNumberAttributedValueField(field_uri="persona:RadioPhones")
        telex_numbers = PhoneNumberAttributedValueField(field_uri="persona:TelexNumbers")
        tty_tdd_phone_numbers = PhoneNumberAttributedValueField(field_uri="persona:TTYTDDPhoneNumbers")
        work_faxes = PhoneNumberAttributedValueField(field_uri="persona:WorkFaxes")
        emails1 = EmailAddressAttributedValueField(field_uri="persona:Emails1")
        emails2 = EmailAddressAttributedValueField(field_uri="persona:Emails2")
        emails3 = EmailAddressAttributedValueField(field_uri="persona:Emails3")
        business_home_pages = StringAttributedValueField(field_uri="persona:BusinessHomePages")
        personal_home_pages = StringAttributedValueField(field_uri="persona:PersonalHomePages")
        office_locations = StringAttributedValueField(field_uri="persona:OfficeLocations")
        im_addresses = StringAttributedValueField(field_uri="persona:ImAddresses")
        im_addresses2 = StringAttributedValueField(field_uri="persona:ImAddresses2")
        im_addresses3 = StringAttributedValueField(field_uri="persona:ImAddresses3")
        business_addresses = PostalAddressAttributedValueField(field_uri="persona:BusinessAddresses")
        home_addresses = PostalAddressAttributedValueField(field_uri="persona:HomeAddresses")
        other_addresses = PostalAddressAttributedValueField(field_uri="persona:OtherAddresses")
        titles = StringAttributedValueField(field_uri="persona:Titles")
        departments = StringAttributedValueField(field_uri="persona:Departments")
        company_names = StringAttributedValueField(field_uri="persona:CompanyNames")
        managers = StringAttributedValueField(field_uri="persona:Managers")
        assistant_names = StringAttributedValueField(field_uri="persona:AssistantNames")
        professions = StringAttributedValueField(field_uri="persona:Professions")
        spouse_names = StringAttributedValueField(field_uri="persona:SpouseNames")
        children = StringAttributedValueField(field_uri="persona:Children")
        schools = StringAttributedValueField(field_uri="persona:Schools")
        hobbies = StringAttributedValueField(field_uri="persona:Hobbies")
        wedding_anniversaries = StringAttributedValueField(field_uri="persona:WeddingAnniversaries")
        birthdays = StringAttributedValueField(field_uri="persona:Birthdays")
        locations = StringAttributedValueField(field_uri="persona:Locations")
        # This class has an additional field of type "ExtendedPropertyAttributedValueField" and
        # field_uri 'persona:ExtendedProperties'

    class DistributionList(Item):
        """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/distributionlist"""

        ELEMENT_NAME = "DistributionList"

        display_name = CharField(field_uri="contacts:DisplayName", is_required=True)
        file_as = CharField(field_uri="contacts:FileAs", is_read_only=True)
        contact_source = ChoiceField(
            field_uri="contacts:ContactSource", choices={Choice("Store"), Choice("ActiveDirectory")}, is_read_only=True
        )
        members = MemberListField(field_uri="distributionlist:Members")

        # O365 throws ErrorInternalServerError "[0x004f0102] MapiReplyToBlob" if UniqueBody is requested
        unique_body_idx = Item.FIELDS.index_by_name("unique_body")
        FIELDS = Item.FIELDS[:unique_body_idx] + Item.FIELDS[unique_body_idx + 1 :]

## Classes

`class Contact (**kwargs)`

  MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/contact

  Pick out optional 'account' and 'folder' kwargs, and pass the rest to the parent class.

  :param kwargs: 'account' is optional but allows calling 'send()' and 'delete()' 'folder' is optional but allows calling 'save()'. If 'folder' has an account, and 'account' is not set, we use folder.account.

  Expand source code

      class Contact(Item):
          """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/contact"""

          ELEMENT_NAME = "Contact"

          file_as = TextField(field_uri="contacts:FileAs")
          file_as_mapping = ChoiceField(
              field_uri="contacts:FileAsMapping",
              choices={
                  Choice("None"),
                  Choice("LastCommaFirst"),
                  Choice("FirstSpaceLast"),
                  Choice("Company"),
                  Choice("LastCommaFirstCompany"),
                  Choice("CompanyLastFirst"),
                  Choice("LastFirst"),
                  Choice("LastFirstCompany"),
                  Choice("CompanyLastCommaFirst"),
                  Choice("LastFirstSuffix"),
                  Choice("LastSpaceFirstCompany"),
                  Choice("CompanyLastSpaceFirst"),
                  Choice("LastSpaceFirst"),
                  Choice("DisplayName"),
                  Choice("FirstName"),
                  Choice("LastFirstMiddleSuffix"),
                  Choice("LastName"),
                  Choice("Empty"),
              },
          )
          display_name = TextField(field_uri="contacts:DisplayName", is_required=True)
          given_name = CharField(field_uri="contacts:GivenName")
          initials = TextField(field_uri="contacts:Initials")
          middle_name = CharField(field_uri="contacts:MiddleName")
          nickname = TextField(field_uri="contacts:Nickname")
          complete_name = EWSElementField(field_uri="contacts:CompleteName", value_cls=CompleteName, is_read_only=True)
          company_name = TextField(field_uri="contacts:CompanyName")
          email_addresses = EmailAddressesField(field_uri="contacts:EmailAddress")
          physical_addresses = PhysicalAddressField(field_uri="contacts:PhysicalAddress")
          phone_numbers = PhoneNumberField(field_uri="contacts:PhoneNumber")
          assistant_name = TextField(field_uri="contacts:AssistantName")
          birthday = DateTimeBackedDateField(field_uri="contacts:Birthday", default_time=datetime.time(11, 59))
          business_homepage = URIField(field_uri="contacts:BusinessHomePage")
          children = TextListField(field_uri="contacts:Children")
          companies = TextListField(field_uri="contacts:Companies", is_searchable=False)
          contact_source = ChoiceField(
              field_uri="contacts:ContactSource", choices={Choice("Store"), Choice("ActiveDirectory")}, is_read_only=True
          )
          department = TextField(field_uri="contacts:Department")
          generation = TextField(field_uri="contacts:Generation")
          im_addresses = ImAddressField(field_uri="contacts:ImAddress")
          job_title = TextField(field_uri="contacts:JobTitle")
          manager = TextField(field_uri="contacts:Manager")
          mileage = TextField(field_uri="contacts:Mileage")
          office = TextField(field_uri="contacts:OfficeLocation")
          postal_address_index = ChoiceField(
              field_uri="contacts:PostalAddressIndex",
              choices={Choice("Business"), Choice("Home"), Choice("Other"), Choice("None")},
              default="None",
              is_required_after_save=True,
          )
          profession = TextField(field_uri="contacts:Profession")
          spouse_name = TextField(field_uri="contacts:SpouseName")
          surname = CharField(field_uri="contacts:Surname")
          wedding_anniversary = DateTimeBackedDateField(
              field_uri="contacts:WeddingAnniversary", default_time=datetime.time(11, 59)
          )
          has_picture = BooleanField(field_uri="contacts:HasPicture", supported_from=EXCHANGE_2010, is_read_only=True)
          phonetic_full_name = TextField(
              field_uri="contacts:PhoneticFullName", supported_from=EXCHANGE_2010_SP2, is_read_only=True
          )
          phonetic_first_name = TextField(
              field_uri="contacts:PhoneticFirstName", supported_from=EXCHANGE_2010_SP2, is_read_only=True
          )
          phonetic_last_name = TextField(
              field_uri="contacts:PhoneticLastName", supported_from=EXCHANGE_2010_SP2, is_read_only=True
          )
          email_alias = EmailAddressField(field_uri="contacts:Alias", is_read_only=True, supported_from=EXCHANGE_2010_SP2)
          # 'notes' is documented in MSDN but apparently unused. Writing to it raises ErrorInvalidPropertyRequest. OWA
          # put entries into the 'notes' form field into the 'body' field.
          notes = CharField(field_uri="contacts:Notes", supported_from=EXCHANGE_2010_SP2, is_read_only=True)
          # 'photo' is documented in MSDN but apparently unused. Writing to it raises ErrorInvalidPropertyRequest. OWA
          # adds photos as FileAttachments on the contact item (with 'is_contact_photo=True'), which automatically flips
          # the 'has_picture' field.
          photo = Base64Field(field_uri="contacts:Photo", supported_from=EXCHANGE_2010_SP2, is_read_only=True)
          user_smime_certificate = Base64Field(
              field_uri="contacts:UserSMIMECertificate", supported_from=EXCHANGE_2010_SP2, is_read_only=True
          )
          ms_exchange_certificate = Base64Field(
              field_uri="contacts:MSExchangeCertificate", supported_from=EXCHANGE_2010_SP2, is_read_only=True
          )
          directory_id = TextField(field_uri="contacts:DirectoryId", supported_from=EXCHANGE_2010_SP2, is_read_only=True)
          manager_mailbox = MailboxField(
              field_uri="contacts:ManagerMailbox", supported_from=EXCHANGE_2010_SP2, is_read_only=True
          )
          direct_reports = MailboxListField(
              field_uri="contacts:DirectReports", supported_from=EXCHANGE_2010_SP2, is_read_only=True
          )
          # O365 throws ErrorInternalServerError "[0x004f0102] MapiReplyToBlob" if UniqueBody is requested
          unique_body_idx = Item.FIELDS.index_by_name("unique_body")
          FIELDS = Item.FIELDS[:unique_body_idx] + Item.FIELDS[unique_body_idx + 1 :]

  ### Ancestors

  - Item
  - BaseItem
  - RegisterMixIn
  - IdChangeKeyMixIn
  - EWSElement

  ### Class variables

  `var ELEMENT_NAME`
  `var FIELDS`
  `var unique_body_idx`

  ### Instance variables

  `var assistant_name`
  `var birthday`
  `var business_homepage`
  `var children`
  `var companies`
  `var company_name`
  `var complete_name`
  `var contact_source`
  `var department`
  `var direct_reports`
  `var directory_id`
  `var display_name`
  `var email_addresses`
  `var email_alias`
  `var file_as`
  `var file_as_mapping`
  `var generation`
  `var given_name`
  `var has_picture`
  `var im_addresses`
  `var initials`
  `var job_title`
  `var manager`
  `var manager_mailbox`
  `var middle_name`
  `var mileage`
  `var ms_exchange_certificate`
  `var nickname`
  `var notes`
  `var office`
  `var phone_numbers`
  `var phonetic_first_name`
  `var phonetic_full_name`
  `var phonetic_last_name`
  `var photo`
  `var physical_addresses`
  `var postal_address_index`
  `var profession`
  `var spouse_name`
  `var surname`
  `var user_smime_certificate`
  `var wedding_anniversary`

  ### Inherited members

  - `Item`:
    - `ID_ELEMENT_CLS`
    - `account`
    - `add_field`
    - `attach`
    - `deregister`
    - `detach`
    - `folder`
    - `register`
    - `remove_field`
    - `supported_fields`
    - `validate_field`
`class DistributionList (**kwargs)`

  MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/distributionlist

  Pick out optional 'account' and 'folder' kwargs, and pass the rest to the parent class.

  :param kwargs: 'account' is optional but allows calling 'send()' and 'delete()' 'folder' is optional but allows calling 'save()'. If 'folder' has an account, and 'account' is not set, we use folder.account.

  Expand source code

      class DistributionList(Item):
          """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/distributionlist"""

          ELEMENT_NAME = "DistributionList"

          display_name = CharField(field_uri="contacts:DisplayName", is_required=True)
          file_as = CharField(field_uri="contacts:FileAs", is_read_only=True)
          contact_source = ChoiceField(
              field_uri="contacts:ContactSource", choices={Choice("Store"), Choice("ActiveDirectory")}, is_read_only=True
          )
          members = MemberListField(field_uri="distributionlist:Members")

          # O365 throws ErrorInternalServerError "[0x004f0102] MapiReplyToBlob" if UniqueBody is requested
          unique_body_idx = Item.FIELDS.index_by_name("unique_body")
          FIELDS = Item.FIELDS[:unique_body_idx] + Item.FIELDS[unique_body_idx + 1 :]

  ### Ancestors

  - Item
  - BaseItem
  - RegisterMixIn
  - IdChangeKeyMixIn
  - EWSElement

  ### Class variables

  `var ELEMENT_NAME`
  `var FIELDS`
  `var unique_body_idx`

  ### Instance variables

  `var contact_source`
  `var display_name`
  `var file_as`
  `var members`

  ### Inherited members

  - `Item`:
    - `ID_ELEMENT_CLS`
    - `account`
    - `add_field`
    - `attach`
    - `deregister`
    - `detach`
    - `folder`
    - `register`
    - `remove_field`
    - `supported_fields`
    - `validate_field`
`class Persona (**kwargs)`

  MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/persona

  Expand source code

      class Persona(IdChangeKeyMixIn):
          """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/persona"""

          ELEMENT_NAME = "Persona"
          ID_ELEMENT_CLS = PersonaId

          _id = IdElementField(field_uri="persona:PersonaId", value_cls=ID_ELEMENT_CLS, namespace=TNS)
          persona_type = CharField(field_uri="persona:PersonaType")
          persona_object_type = TextField(field_uri="persona:PersonaObjectStatus")
          creation_time = DateTimeField(field_uri="persona:CreationTime")
          bodies = BodyContentAttributedValueField(field_uri="persona:Bodies")
          display_name_first_last_sort_key = TextField(field_uri="persona:DisplayNameFirstLastSortKey")
          display_name_last_first_sort_key = TextField(field_uri="persona:DisplayNameLastFirstSortKey")
          company_sort_key = TextField(field_uri="persona:CompanyNameSortKey")
          home_sort_key = TextField(field_uri="persona:HomeCitySortKey")
          work_city_sort_key = TextField(field_uri="persona:WorkCitySortKey")
          display_name_first_last_header = CharField(field_uri="persona:DisplayNameFirstLastHeader")
          display_name_last_first_header = CharField(field_uri="persona:DisplayNameLastFirstHeader")
          file_as_header = TextField(field_uri="persona:FileAsHeader")
          display_name = CharField(field_uri="persona:DisplayName")
          display_name_first_last = CharField(field_uri="persona:DisplayNameFirstLast")
          display_name_last_first = CharField(field_uri="persona:DisplayNameLastFirst")
          file_as = CharField(field_uri="persona:FileAs")
          file_as_id = TextField(field_uri="persona:FileAsId")
          display_name_prefix = CharField(field_uri="persona:DisplayNamePrefix")
          given_name = CharField(field_uri="persona:GivenName")
          middle_name = CharField(field_uri="persona:MiddleName")
          surname = CharField(field_uri="persona:Surname")
          generation = CharField(field_uri="persona:Generation")
          nickname = TextField(field_uri="persona:Nickname")
          yomi_company_name = TextField(field_uri="persona:YomiCompanyName")
          yomi_first_name = TextField(field_uri="persona:YomiFirstName")
          yomi_last_name = TextField(field_uri="persona:YomiLastName")
          title = CharField(field_uri="persona:Title")
          department = TextField(field_uri="persona:Department")
          company_name = CharField(field_uri="persona:CompanyName")
          email_address = EWSElementField(field_uri="persona:EmailAddress", value_cls=EmailAddress)
          email_addresses = EWSElementListField(field_uri="persona:EmailAddresses", value_cls=Address)
          PhoneNumber = PersonaPhoneNumberField(field_uri="persona:PhoneNumber")
          im_address = CharField(field_uri="persona:ImAddress")
          home_city = CharField(field_uri="persona:HomeCity")
          work_city = CharField(field_uri="persona:WorkCity")
          relevance_score = CharField(field_uri="persona:RelevanceScore")
          folder_ids = EWSElementListField(field_uri="persona:FolderIds", value_cls=FolderId)
          attributions = EWSElementListField(field_uri="persona:Attributions", value_cls=Attribution)
          display_names = StringAttributedValueField(field_uri="persona:DisplayNames")
          file_ases = StringAttributedValueField(field_uri="persona:FileAses")
          file_as_ids = StringAttributedValueField(field_uri="persona:FileAsIds")
          display_name_prefixes = StringAttributedValueField(field_uri="persona:DisplayNamePrefixes")
          given_names = StringAttributedValueField(field_uri="persona:GivenNames")
          middle_names = StringAttributedValueField(field_uri="persona:MiddleNames")
          surnames = StringAttributedValueField(field_uri="persona:Surnames")
          generations = StringAttributedValueField(field_uri="persona:Generations")
          nicknames = StringAttributedValueField(field_uri="persona:Nicknames")
          initials = StringAttributedValueField(field_uri="persona:Initials")
          yomi_company_names = StringAttributedValueField(field_uri="persona:YomiCompanyNames")
          yomi_first_names = StringAttributedValueField(field_uri="persona:YomiFirstNames")
          yomi_last_names = StringAttributedValueField(field_uri="persona:YomiLastNames")
          business_phone_numbers = PhoneNumberAttributedValueField(field_uri="persona:BusinessPhoneNumbers")
          business_phone_numbers2 = PhoneNumberAttributedValueField(field_uri="persona:BusinessPhoneNumbers2")
          home_phones = PhoneNumberAttributedValueField(field_uri="persona:HomePhones")
          home_phones2 = PhoneNumberAttributedValueField(field_uri="persona:HomePhones2")
          mobile_phones = PhoneNumberAttributedValueField(field_uri="persona:MobilePhones")
          mobile_phones2 = PhoneNumberAttributedValueField(field_uri="persona:MobilePhones2")
          assistant_phone_numbers = PhoneNumberAttributedValueField(field_uri="persona:AssistantPhoneNumbers")
          callback_phones = PhoneNumberAttributedValueField(field_uri="persona:CallbackPhones")
          car_phones = PhoneNumberAttributedValueField(field_uri="persona:CarPhones")
          home_faxes = PhoneNumberAttributedValueField(field_uri="persona:HomeFaxes")
          organization_main_phones = PhoneNumberAttributedValueField(field_uri="persona:OrganizationMainPhones")
          other_faxes = PhoneNumberAttributedValueField(field_uri="persona:OtherFaxes")
          other_telephones = PhoneNumberAttributedValueField(field_uri="persona:OtherTelephones")
          other_phones2 = PhoneNumberAttributedValueField(field_uri="persona:OtherPhones2")
          pagers = PhoneNumberAttributedValueField(field_uri="persona:Pagers")
          radio_phones = PhoneNumberAttributedValueField(field_uri="persona:RadioPhones")
          telex_numbers = PhoneNumberAttributedValueField(field_uri="persona:TelexNumbers")
          tty_tdd_phone_numbers = PhoneNumberAttributedValueField(field_uri="persona:TTYTDDPhoneNumbers")
          work_faxes = PhoneNumberAttributedValueField(field_uri="persona:WorkFaxes")
          emails1 = EmailAddressAttributedValueField(field_uri="persona:Emails1")
          emails2 = EmailAddressAttributedValueField(field_uri="persona:Emails2")
          emails3 = EmailAddressAttributedValueField(field_uri="persona:Emails3")
          business_home_pages = StringAttributedValueField(field_uri="persona:BusinessHomePages")
          personal_home_pages = StringAttributedValueField(field_uri="persona:PersonalHomePages")
          office_locations = StringAttributedValueField(field_uri="persona:OfficeLocations")
          im_addresses = StringAttributedValueField(field_uri="persona:ImAddresses")
          im_addresses2 = StringAttributedValueField(field_uri="persona:ImAddresses2")
          im_addresses3 = StringAttributedValueField(field_uri="persona:ImAddresses3")
          business_addresses = PostalAddressAttributedValueField(field_uri="persona:BusinessAddresses")
          home_addresses = PostalAddressAttributedValueField(field_uri="persona:HomeAddresses")
          other_addresses = PostalAddressAttributedValueField(field_uri="persona:OtherAddresses")
          titles = StringAttributedValueField(field_uri="persona:Titles")
          departments = StringAttributedValueField(field_uri="persona:Departments")
          company_names = StringAttributedValueField(field_uri="persona:CompanyNames")
          managers = StringAttributedValueField(field_uri="persona:Managers")
          assistant_names = StringAttributedValueField(field_uri="persona:AssistantNames")
          professions = StringAttributedValueField(field_uri="persona:Professions")
          spouse_names = StringAttributedValueField(field_uri="persona:SpouseNames")
          children = StringAttributedValueField(field_uri="persona:Children")
          schools = StringAttributedValueField(field_uri="persona:Schools")
          hobbies = StringAttributedValueField(field_uri="persona:Hobbies")
          wedding_anniversaries = StringAttributedValueField(field_uri="persona:WeddingAnniversaries")
          birthdays = StringAttributedValueField(field_uri="persona:Birthdays")
          locations = StringAttributedValueField(field_uri="persona:Locations")
          # This class has an additional field of type "ExtendedPropertyAttributedValueField" and
          # field_uri 'persona:ExtendedProperties'

  ### Ancestors

  - IdChangeKeyMixIn
  - EWSElement

  ### Class variables

  `var ELEMENT_NAME`
  `var FIELDS`
  `var ID_ELEMENT_CLS`

    MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/personaid

  ### Instance variables

  `var PhoneNumber`
  `var assistant_names`
  `var assistant_phone_numbers`
  `var attributions`
  `var birthdays`
  `var bodies`
  `var business_addresses`
  `var business_home_pages`
  `var business_phone_numbers`
  `var business_phone_numbers2`
  `var callback_phones`
  `var car_phones`
  `var children`
  `var company_name`
  `var company_names`
  `var company_sort_key`
  `var creation_time`
  `var department`
  `var departments`
  `var display_name`
  `var display_name_first_last`
  `var display_name_first_last_header`
  `var display_name_first_last_sort_key`
  `var display_name_last_first`
  `var display_name_last_first_header`
  `var display_name_last_first_sort_key`
  `var display_name_prefix`
  `var display_name_prefixes`
  `var display_names`
  `var email_address`
  `var email_addresses`
  `var emails1`
  `var emails2`
  `var emails3`
  `var file_as`
  `var file_as_header`
  `var file_as_id`
  `var file_as_ids`
  `var file_ases`
  `var folder_ids`
  `var generation`
  `var generations`
  `var given_name`
  `var given_names`
  `var hobbies`
  `var home_addresses`
  `var home_city`
  `var home_faxes`
  `var home_phones`
  `var home_phones2`
  `var home_sort_key`
  `var im_address`
  `var im_addresses`
  `var im_addresses2`
  `var im_addresses3`
  `var initials`
  `var locations`
  `var managers`
  `var middle_name`
  `var middle_names`
  `var mobile_phones`
  `var mobile_phones2`
  `var nickname`
  `var nicknames`
  `var office_locations`
  `var organization_main_phones`
  `var other_addresses`
  `var other_faxes`
  `var other_phones2`
  `var other_telephones`
  `var pagers`
  `var persona_object_type`
  `var persona_type`
  `var personal_home_pages`
  `var professions`
  `var radio_phones`
  `var relevance_score`
  `var schools`
  `var spouse_names`
  `var surname`
  `var surnames`
  `var telex_numbers`
  `var title`
  `var titles`
  `var tty_tdd_phone_numbers`
  `var wedding_anniversaries`
  `var work_city`
  `var work_city_sort_key`
  `var work_faxes`
  `var yomi_company_name`
  `var yomi_company_names`
  `var yomi_first_name`
  `var yomi_first_names`
  `var yomi_last_name`
  `var yomi_last_names`

  ### Inherited members

  - `IdChangeKeyMixIn`:
    - `add_field`
    - `remove_field`
    - `supported_fields`
    - `validate_field`