text: ///
  /// Copyright (c) 2016 Dropbox, Inc. All rights reserved.
  ///
  /// Auto-generated by Stone, do not modify.
  ///
  
  #import <Foundation/Foundation.h>
  
  #import "DBSerializableProtocol.h"
  #import "DBTEAMMemberProfile.h"
  
  @class DBTEAMTeamMemberProfile;
  @class DBTEAMTeamMemberStatus;
  @class DBTEAMTeamMembershipType;
  @class DBUSERSName;
  
  NS_ASSUME_NONNULL_BEGIN
  
  #pragma mark - API Object
  
  ///
  /// The `TeamMemberProfile` struct.
  ///
  /// Profile of a user as a member of a team.
  ///
  /// This class implements the `DBSerializable` protocol (serialize and
  /// deserialize instance methods), which is required for all Obj-C SDK API route
  /// objects.
  ///
  @interface DBTEAMTeamMemberProfile : DBTEAMMemberProfile <DBSerializable, NSCopying>
  
  #pragma mark - Instance fields
  
  /// List of group IDs of groups that the user belongs to.
  @property (nonatomic, readonly) NSArray<NSString *> *groups;
  
  /// The namespace id of the user's root folder.
  @property (nonatomic, readonly, copy) NSString *memberFolderId;
  
  #pragma mark - Constructors
  
  ///
  /// Full constructor for the struct (exposes all instance variables).
  ///
  /// @param teamMemberId ID of user as a member of a team.
  /// @param email Email address of user.
  /// @param emailVerified Is true if the user's email is verified to be owned by
  /// the user.
  /// @param status The user's status as a member of a specific team.
  /// @param name Representations for a person's name.
  /// @param membershipType The user's membership type: full (normal team member)
  /// vs limited (does not use a license; no access to the team's shared quota).
  /// @param groups List of group IDs of groups that the user belongs to.
  /// @param memberFolderId The namespace id of the user's root folder.
  /// @param externalId External ID that a team can attach to the user. An
  /// application using the API may find it easier to use their own IDs instead of
  /// Dropbox IDs like account_id or team_member_id.
  /// @param accountId A user's account identifier.
  /// @param joinedOn The date and time the user joined as a member of a specific
  /// team.
  /// @param persistentId Persistent ID that a team can attach to the user. The
  /// persistent ID is unique ID to be used for SAML authentication.
  /// @param isDirectoryRestricted Whether the user is a directory restricted
  /// user.
  ///
  /// @return An initialized instance.
  ///
  - (instancetype)initWithTeamMemberId:(NSString *)teamMemberId
                                 email:(NSString *)email
                         emailVerified:(NSNumber *)emailVerified
                                status:(DBTEAMTeamMemberStatus *)status
                                  name:(DBUSERSName *)name
                        membershipType:(DBTEAMTeamMembershipType *)membershipType
                                groups:(NSArray<NSString *> *)groups
                        memberFolderId:(NSString *)memberFolderId
                            externalId:(nullable NSString *)externalId
                             accountId:(nullable NSString *)accountId
                              joinedOn:(nullable NSDate *)joinedOn
                          persistentId:(nullable NSString *)persistentId
                 isDirectoryRestricted:(nullable NSNumber *)isDirectoryRestricted;
  
  ///
  /// Convenience constructor (exposes only non-nullable instance variables with
  /// no default value).
  ///
  /// @param teamMemberId ID of user as a member of a team.
  /// @param email Email address of user.
  /// @param emailVerified Is true if the user's email is verified to be owned by
  /// the user.
  /// @param status The user's status as a member of a specific team.
  /// @param name Representations for a person's name.
  /// @param membershipType The user's membership type: full (normal team member)
  /// vs limited (does not use a license; no access to the team's shared quota).
  /// @param groups List of group IDs of groups that the user belongs to.
  /// @param memberFolderId The namespace id of the user's root folder.
  ///
  /// @return An initialized instance.
  ///
  - (instancetype)initWithTeamMemberId:(NSString *)teamMemberId
                                 email:(NSString *)email
                         emailVerified:(NSNumber *)emailVerified
                                status:(DBTEAMTeamMemberStatus *)status
                                  name:(DBUSERSName *)name
                        membershipType:(DBTEAMTeamMembershipType *)membershipType
                                groups:(NSArray<NSString *> *)groups
                        memberFolderId:(NSString *)memberFolderId;
  
  @end
  
  #pragma mark - Serializer Object
  
  ///
  /// The serialization class for the `TeamMemberProfile` struct.
  ///
  @interface DBTEAMTeamMemberProfileSerializer : NSObject
  
  ///
  /// Serializes `DBTEAMTeamMemberProfile` instances.
  ///
  /// @param instance An instance of the `DBTEAMTeamMemberProfile` API object.
  ///
  /// @return A json-compatible dictionary representation of the
  /// `DBTEAMTeamMemberProfile` API object.
  ///
  + (nullable NSDictionary<NSString *, id> *)serialize:(DBTEAMTeamMemberProfile *)instance;
  
  ///
  /// Deserializes `DBTEAMTeamMemberProfile` instances.
  ///
  /// @param dict A json-compatible dictionary representation of the
  /// `DBTEAMTeamMemberProfile` API object.
  ///
  /// @return An instantiation of the `DBTEAMTeamMemberProfile` object.
  ///
  + (DBTEAMTeamMemberProfile *)deserialize:(NSDictionary<NSString *, id> *)dict;
  
  @end
  
  NS_ASSUME_NONNULL_END
  