Profile API
Public profile retrieval plus profile edits, memberships, comments, spaces, and notification preferences.
Authentication
Profile routes are portal routes. Mutating routes enforce ownership or moderation rules inside the controller.
Endpoints
| Method | Path | Edition | Operation | What it does |
|---|---|---|---|---|
GET | /profile/{username} | Core | Get Profile | Returns one member public profile by username, with the navigation tabs the portal should render for that member. |
POST | /profile/{username} | Core | Update Profile | Saves the editable profile fields — names, bio, headline, website and social links — and mirrors the display name onto the WordPress user record. |
PUT | /profile/{username} | Core | Patch Profile | Applies a targeted profile change — swapping the avatar or cover photo, or deactivating the account. |
POST | /profile/{username}/change-password | Core | Post Change Password | Changes the account password after verifying the current one, and returns freshly minted nonces so the open session keeps working. |
GET | /profile/{username}/spaces | Core | List Profile Spaces | Returns the spaces a member actively belongs to, each with its member count. |
GET | /profile/{username}/courses | Core | Get Courses | Returns the published courses a member is enrolled in, each with their progress, cover image and section, lesson and student counts. |
GET | /profile/{username}/memberships | Core | List Profile Memberships | Returns only the space ids a member actively belongs to — the cheap lookup used to decide what to show on their profile. |
GET | /profile/{username}/notification-preferences | Core | Get Notification Preferences | Returns the email notification preferences for a member — the global toggles, the per-space post preferences grouped by space group, and the digest send day. |
POST | /profile/{username}/notification-preferences | Core | Save Notification Preferences | Stores the email notification preferences for a member, translating the per-space choices into the underlying subscription rows. |
GET | /profile/{username}/followers | PRO | List Profile Followers | Returns the paginated list of members following this profile, each annotated with whether the current user follows them back. |
GET | /profile/{username}/followings | PRO | List Profile Followings | Returns the paginated list of members this profile follows, each annotated with whether the current user follows them too. |
GET | /profile/{username}/blocked-users | PRO | List Profile Blocked Users | Returns the paginated list of members this profile has blocked. |
POST | /profile/{username}/follow | PRO | Follow Profile User | Creates a follow relationship from the current user to the named member. |
POST | /profile/{username}/unfollow | PRO | Unfollow Profile User | Removes the follow relationship from the current user to the named member. |
POST | /profile/{userId}/toggle-follow | PRO | Toggle Profile Follow | Follows the named member if not already followed, and unfollows them if they are — addressed by numeric user id rather than username. |
POST | /profile/{username}/block | PRO | Block Profile User | Blocks a member, converting any existing follow relationship into a block rather than creating a second row. |
POST | /profile/{username}/unblock | PRO | Unblock Profile User | Lifts a block, deleting the relationship row entirely rather than reverting it to a follow. |
POST | /profile/{username}/notification | PRO | Toggle Profile Notification | Turns notifications about a member you already follow on or off, without changing the follow itself. |