> ## 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 Team Profile

> Updates the profile, social links, and public visibility settings for a team.

# Update Team Profile

Updates the profile information for a specific team, including display name, social media links, and public visibility. Only team administrators can call this endpoint; partial updates are supported.

## Authentication

Requires a valid customer bearer token. The customer must be a team administrator of the specified team.

## Path Parameters

<ParamField path="teamId" type="number" required>
  Numeric identifier of the team. Returned as `Id` in the `Records` array from [`GET /api/public/teams/my`](/api/endpoints/teams/list-teams).
</ParamField>

## Request Body

The request body should contain the team profile fields to update. Only include fields that are being modified — partial updates are supported.

### Basic Information

<ParamField body="Name" type="string" required>
  Display name of the team. Cannot be empty.
</ParamField>

<ParamField body="Description" type="string">
  Full-length team description. May contain HTML. Omit to leave unchanged.
</ParamField>

<ParamField body="ProfileSummary" type="string">
  Short tagline shown in team cards and selectors.
</ParamField>

<ParamField body="ProfileIsPublic" type="boolean">
  When `true`, the team profile is visible in the public member directory.
</ParamField>

<ParamField body="ProfileWebsite" type="string">
  Team website URL. Must be a valid URL format when provided.
</ParamField>

<ParamField body="ProfileTags" type="string">
  Space-separated tags describing the team.
</ParamField>

### Social Media

All social media fields are optional `string` values. Must be valid URL format when provided (except `Skype` which accepts a username).

| Field       | Description               |
| ----------- | ------------------------- |
| `Twitter`   | X / Twitter profile URL   |
| `Facebook`  | Facebook page URL         |
| `Linkedin`  | LinkedIn company page URL |
| `Instagram` | Instagram profile URL     |
| `Github`    | GitHub org or user URL    |
| `Pinterest` | Pinterest profile URL     |
| `Skype`     | Skype username            |
| `Telegram`  | Telegram handle           |
| `Flickr`    | Flickr profile URL        |
| `Vimeo`     | Vimeo channel URL         |
| `Tumblr`    | Tumblr blog URL           |
| `Blogger`   | Blogger profile URL       |

## Response

Returns HTTP `200 OK` with an empty body on success.

## Examples

### Update team name and social links

```http theme={null}
PUT /api/public/teams/55/profile
Authorization: Bearer {token}
Content-Type: application/json
```

```json theme={null}
{
  "Name": "Tech Innovators Updated",
  "ProfileSummary": "Building the future, one innovation at a time — now with AI focus",
  "ProfileIsPublic": true,
  "ProfileWebsite": "https://techinnovators-ai.example.com",
  "ProfileTags": "technology startup innovation collaboration AI machine-learning",
  "Twitter": "https://twitter.com/techinnovators_ai",
  "Linkedin": "https://linkedin.com/company/techinnovators-ai",
  "Github": "https://github.com/techinnovators-ai"
}
```

```
Status: 200 OK
Body: (empty)
```

## TypeScript Integration

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

const updateTeamProfile = async (teamId: number, profileData: Partial<Team>) => {
  await httpClient.put(endpoints.teams.one(teamId), profileData)
}
```

## Usage in Portal

| Context                                                   | Source file                                                          |
| --------------------------------------------------------- | -------------------------------------------------------------------- |
| Team Professional Profile Page (`/team/profile/{teamId}`) | `src/views/user/team/profile/TeamProfessionalProfilePage.tsx`        |
| Team Professional Profile form component                  | `src/views/user/team/profile/components/TeamProfessionalProfile.tsx` |

## Error Responses

<ResponseField name="401 Unauthorized" type="error">
  The customer is not authenticated or the session has expired.
</ResponseField>

<ResponseField name="403 Forbidden" type="error">
  The customer is not an administrator of the specified team.
</ResponseField>

<ResponseField name="400 Bad Request" type="error">
  Invalid request data — for example, missing required `Name` field or invalid URL format in a social media field.
</ResponseField>

<ResponseField name="404 Not Found" type="error">
  Team with the specified ID does not exist.
</ResponseField>

## Related Endpoints

| Method | Endpoint                                | Description               |
| ------ | --------------------------------------- | ------------------------- |
| `GET`  | `/api/public/teams/{teamId}/profile`    | Get current team profile  |
| `GET`  | `/api/public/teams/my`                  | List the customer's teams |
| `GET`  | `/api/public/teams/{teamId}/kpi`        | Team KPI metrics          |
| `GET`  | `/api/public/teams/{teamId}/attendance` | Team attendance data      |
| `GET`  | `/api/public/teams/{teamId}/metrics`    | Team performance metrics  |
