code: def to_api_data(self, restrict_keys=None):
          
          cc = self._cc  # alias
  
          data = {
              cc('displayName'): self.__display_name,
              cc('givenName'): self.__name,
              cc('surname'): self.__surname,
              cc('title'): self.__title,
              cc('jobTitle'): self.__job_title,
              cc('companyName'): self.__company_name,
              cc('department'): self.__department,
              cc('officeLocation'): self.__office_location,
              cc('businessPhones'): self.__business_phones,
              cc('mobilePhone'): self.__mobile_phone,
              cc('homePhones'): self.__home_phones,
              cc('emailAddresses'): [{self._cc('name'): recipient.name or '',
                                      self._cc('address'): recipient.address}
                                     for recipient in self.emails],
              cc('businessAddress'): self.__business_address,
              cc('homesAddress'): self.__home_address,
              cc('otherAddress'): self.__other_address,
              cc('categories'): self.__categories
          }
  
          if restrict_keys:
              restrict_keys.add(cc(
                  'givenName'))  # GivenName is required by the api all the time.
              for key in list(data.keys()):
                  if key not in restrict_keys:
                      del data[key]
          return data
docs: Returns a dictionary in cloud format
  
          :param restrict_keys: a set of keys to restrict the returned data to.