> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nexudus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Profile

> Partially update the authenticated customer profile — personal info, billing details, notifications, credentials, or professional profile fields.

# Update Profile

Partially updates the authenticated customer's profile. The same endpoint is used across all profile editing pages in the portal — personal information, billing details, notification preferences, account credentials, and the professional (public-facing) profile. Send only the fields you want to change; omitted fields are left unchanged.

## Authentication

Requires a valid customer bearer token.

## Request Body

Send a JSON object containing only the fields to update. All fields are optional; omitting a field leaves the current value unchanged.

### Personal Information

<ParamField body="FullName" type="string">
  The customer's display name.
</ParamField>

<ParamField body="NickName" type="string | null">
  Optional informal name displayed in some community contexts.
</ParamField>

<ParamField body="Gender" type="string">
  Gender identifier. Used for salutation generation.
</ParamField>

<ParamField body="DateOfBirth" type="string | null">
  ISO 8601 date of birth (e.g. `"1990-06-15"`).
</ParamField>

<ParamField body="MobilePhone" type="string | null">
  Mobile phone number in any format.
</ParamField>

<ParamField body="LandLine" type="string | null">
  Landline phone number.
</ParamField>

<ParamField body="Address" type="string">
  Street address.
</ParamField>

<ParamField body="PostCode" type="string">
  Postal or ZIP code.
</ParamField>

<ParamField body="CityName" type="string">
  City name.
</ParamField>

<ParamField body="State" type="string">
  State or region.
</ParamField>

<ParamField body="CountryId" type="number">
  Numeric country identifier. Obtain valid IDs from `GET /api/public/countries`.
</ParamField>

### Billing Information

<ParamField body="BillingName" type="string">
  Name to appear on invoices.
</ParamField>

<ParamField body="BillingEmail" type="string">
  Email address for invoice delivery.
</ParamField>

<ParamField body="BillingAddress" type="string | null">
  Billing street address.
</ParamField>

<ParamField body="BillingPostCode" type="string | null">
  Billing postal code.
</ParamField>

<ParamField body="BillingCityName" type="string | null">
  Billing city.
</ParamField>

<ParamField body="BillingState" type="string | null">
  Billing state or region.
</ParamField>

<ParamField body="BillingCountryId" type="number">
  Numeric country identifier for the billing address.
</ParamField>

<ParamField body="TaxIDNumber" type="string">
  VAT or tax identification number printed on invoices.
</ParamField>

### Professional Profile

<ParamField body="Position" type="string | null">
  Job title displayed on the public directory profile.
</ParamField>

<ParamField body="CompanyName" type="string">
  Company name displayed on the public directory profile.
</ParamField>

<ParamField body="BusinessArea" type="string | null">
  Industry or area of work.
</ParamField>

<ParamField body="ProfileSummary" type="string | null">
  Free-text professional bio. Supports Markdown. Displayed on the public directory profile when `ProfileIsPublic` is `true`.
</ParamField>

<ParamField body="ProfileWebsite" type="string | null">
  Personal or company website URL.
</ParamField>

<ParamField body="ProfileIsPublic" type="boolean">
  When `true`, the customer's profile is listed in the member directory.
</ParamField>

<ParamField body="ProfileTags" type="string">
  Comma-separated skill or interest tags shown on the directory profile.
</ParamField>

### Social Media

<ParamField body="Twitter" type="string | null">
  Twitter profile URL or handle.
</ParamField>

<ParamField body="Linkedin" type="string | null">
  LinkedIn profile URL.
</ParamField>

<ParamField body="Github" type="string | null">
  GitHub profile URL or username.
</ParamField>

<ParamField body="Instagram" type="string | null">
  Instagram profile URL or handle.
</ParamField>

<ParamField body="Facebook" type="string | null">
  Facebook profile URL.
</ParamField>

<ParamField body="Skype" type="string | null">
  Skype username.
</ParamField>

<ParamField body="Telegram" type="string | null">
  Telegram username.
</ParamField>

### Notification Preferences

<ParamField body="OnHelpDeskMsg" type="boolean">
  When `true`, the customer receives email notifications for new help desk replies.
</ParamField>

<ParamField body="OnNewWallPost" type="boolean">
  When `true`, the customer receives email notifications for new community board posts.
</ParamField>

<ParamField body="OnNewBlogComment" type="boolean">
  When `true`, the customer receives email notifications for new article comments.
</ParamField>

<ParamField body="OnNewEventComment" type="boolean">
  When `true`, the customer receives email notifications for new event comments.
</ParamField>

<ParamField body="ReceiveCommunityDigest" type="boolean">
  When `true`, the customer receives a periodic community activity digest email.
</ParamField>

<ParamField body="SignUpToNewsletter" type="boolean">
  When `true`, the customer is opted in to the space's newsletter.
</ParamField>

### Credentials

<ParamField body="OldPassword" type="string">
  The customer's current password. Required when changing the password.
</ParamField>

<ParamField body="NewPassword" type="string">
  The new password to set. Must satisfy the location's password policy.
</ParamField>

<ParamField body="RepeatNewPassword" type="string">
  Must match `NewPassword` exactly. Validated server-side.
</ParamField>

## Response

Returns an `ActionConfirmation` envelope.

<ResponseField name="WasSuccessful" type="boolean">
  `true` when the profile was updated successfully.
</ResponseField>

<ResponseField name="Value" type="string | null">
  Usually `null` on success.
</ResponseField>

<ResponseField name="Status" type="number">
  HTTP-style status code mirrored in the body. `200` on success.
</ResponseField>

<ResponseField name="Message" type="string | null">
  Human-readable message. Usually `null` on success.
</ResponseField>

<ResponseField name="Errors" type="any">
  Validation error object. `null` on success. Check this when `WasSuccessful` is `false`.
</ResponseField>

## Example Response

```json theme={null}
{
  "WasSuccessful": true,
  "Value": null,
  "Status": 200,
  "Message": null,
  "Errors": null
}
```

## TypeScript Integration

```typescript theme={null}
import endpoints from '@/api/endpoints'
import { ActionConfirmation } from '@/types/ActionConfirmation'

const result = await httpClient.patch<ActionConfirmation>(endpoints.profile.patch, {
  FullName: 'Jane Doe',
  Position: 'Product Designer',
  ProfileIsPublic: true,
})

if (result.data.WasSuccessful) {
  // Refresh profile data and show success toast
}
```

## Usage in Portal

| Context                                | Source file                                  |
| -------------------------------------- | -------------------------------------------- |
| Personal information form (`/profile`) | `src/views/user/PersonalInformationPage.tsx` |
| Professional profile form (`/profile`) | `src/views/user/ProfessionalProfilePage.tsx` |
| Billing information form (`/profile`)  | `src/views/user/BillingInformationPage.tsx`  |
| Notification preferences (`/profile`)  | `src/views/user/NotificationsPage.tsx`       |
| Change password (`/profile`)           | `src/views/user/CredentialsPage.tsx`         |

## Error Responses

<ResponseField name="401 Unauthorized" type="error">
  The bearer token is missing, expired, or invalid.
</ResponseField>

<ResponseField name="400 Bad Request" type="error">
  One or more fields failed validation (e.g. password mismatch, invalid `CountryId`). Check `Errors` in the response body.
</ResponseField>

## Related Endpoints

| Method | Endpoint                            | Description                                                    |
| ------ | ----------------------------------- | -------------------------------------------------------------- |
| `GET`  | `/login/me?`                        | Retrieve the current user session and notification preferences |
| `GET`  | `/en/profile?_resource=Coworker`    | Retrieve the full customer profile for editing                 |
| `GET`  | `/api/public/coworkers/profiles`    | List all customer profiles for the session                     |
| `POST` | `/en/profile/GenerateOpenAiProfile` | Generate an AI-written professional profile summary            |
