> ## 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.

# Get Team Profile

> Returns the full profile for a single team, including members, billing settings, and social links.

# Get Team Profile

Returns the complete profile for a specific team, including member lists, billing configuration, social media links, and media flags. Team administrators use this to manage the team's public profile; regular members use it for read-only access.

<Note>
  A **team** is a group of customers within a coworking location that can share resources, bookings, and billing. The portal maps teams to companies
  or departments that co-habit a space.
</Note>

## Authentication

Requires a valid customer bearer token. The customer must be a member or administrator of the requested 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>

## Query Parameters

<ParamField query="_shape" type="string">
  Comma-separated dot-notated field paths to include in the response. When provided, only the
  specified fields are returned — useful for reducing payload size. **Example**:
  `_shape=Name,ProfileSummary,ProfileIsPublic,TeamMembers`
</ParamField>

## Response

Returns a single team profile object (not wrapped in a list envelope).

### Core Fields

<ResponseField name="Id" type="number" required>
  Unique integer identifier. Use as `{teamId}` in all team-scoped endpoints.
</ResponseField>

<ResponseField name="UniqueId" type="string">
  UUID for the team — stable across renames and useful as a cache key.
</ResponseField>

<ResponseField name="IdString" type="string">
  String cast of `Id`. Provided for environments that lose integer precision.
</ResponseField>

<ResponseField name="Name" type="string" required>
  Display name of the team.
</ResponseField>

### Profile

<ResponseField name="Description" type="string | null">
  Full-length team description. May contain HTML.
</ResponseField>

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

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

<ResponseField name="ProfileWebsite" type="string | null">
  Team website URL.
</ResponseField>

<ResponseField name="ProfileTags" type="string">
  Space-separated tag string. Use `ProfileTagsList` for array access.
</ResponseField>

<ResponseField name="ProfileTagsList" type="string[]">
  Pre-split array of tag strings derived from `ProfileTags`.
</ResponseField>

### Location

<ResponseField name="BusinessName" type="string">
  Name of the coworking location this team belongs to.
</ResponseField>

<ResponseField name="BusinessHomeUrl" type="string">
  URL of the coworking location's home page.
</ResponseField>

### Social Media

All social fields are `string | null`. Provide a full URL unless stated otherwise.

| 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       |

### Members

<ResponseField name="TeamMembersCount" type="number">
  Total count of active members (admins + regular members).
</ResponseField>

<ResponseField name="TeamAdministratorsFullNames" type="string[]">
  Display names of all team admins.
</ResponseField>

<ResponseField name="TeamAdministrators" type="Customer[]">
  Full `Customer` objects for admins only.
</ResponseField>

<ResponseField name="TeamMembers" type="Customer[]">
  Full `Customer` objects for non-admin members.
</ResponseField>

<ResponseField name="AllTeamMembers" type="Customer[]">
  Combined `Customer` objects for all members (admins + regular). Use this instead of merging the two arrays above.
</ResponseField>

### Billing & Configuration

<ResponseField name="PayingMemberId" type="number | null">
  Customer ID of the member who receives consolidated invoices, if `CreateSingleInvoiceForTeam` is `true`.
</ResponseField>

<ResponseField name="CreateSingleInvoiceForTeam" type="boolean">
  When `true`, all team charges are rolled into a single invoice addressed to `PayingMemberId`.
</ResponseField>

<ResponseField name="MaxTeamMemberCount" type="number | null">
  Maximum allowed members. `null` means unlimited.
</ResponseField>

<ResponseField name="HasContactDetails" type="boolean">
  Whether billing/contact details have been configured for this team.
</ResponseField>

<ResponseField name="HasDefaultPlan" type="boolean">
  Whether the team has a default membership plan assigned.
</ResponseField>

<ResponseField name="DefaultTariffId" type="number | null">
  ID of the default membership plan assigned to new team members.
</ResponseField>

<ResponseField name="DefaultTariffName" type="string | null">
  Display name of the default membership plan.
</ResponseField>

<ResponseField name="DefaultMemberTariffKeepNewAccountsOnHold" type="boolean">
  When `true`, new members added to the team are placed on hold until manually activated.
</ResponseField>

<ResponseField name="DisableAttendaceDashboard" type="boolean">
  When `true`, the attendance dashboard is hidden for this team. Note the typo in the field name (`Attendace`) — it is preserved as-is in the API.
</ResponseField>

<ResponseField name="DiscountCharges" type="number | null">
  Percentage discount applied to charges for team members.
</ResponseField>

<ResponseField name="DiscountExtraServices" type="number | null">
  Percentage discount applied to extra services for team members.
</ResponseField>

<ResponseField name="DiscountTariffs" type="number | null">
  Percentage discount applied to membership plans for team members.
</ResponseField>

<ResponseField name="DiscountTimePasses" type="number | null">
  Percentage discount applied to time passes for team members.
</ResponseField>

<ResponseField name="HasCommunityGroup" type="boolean">
  When `true`, the team has an associated community discussion group.
</ResponseField>

<ResponseField name="GoogleMapsLink" type="string | null">
  Google Maps link for the team's location.
</ResponseField>

### Media

<ResponseField name="HasTeamLogo" type="boolean">
  `true` if the team has an uploaded logo. Construct the logo URL as: `https://[space].spaces.nexudus.com/api/public/teams/{Id}/logo`
</ResponseField>

<ResponseField name="HasImage1" type="boolean">
  `true` if profile image 1 has been uploaded.
</ResponseField>

<ResponseField name="HasImage2" type="boolean">
  `true` if profile image 2 has been uploaded.
</ResponseField>

<ResponseField name="HasImage3" type="boolean">
  `true` if profile image 3 has been uploaded.
</ResponseField>

<ResponseField name="HasImages" type="boolean">
  Convenience flag — `true` if any of the three profile images are present.
</ResponseField>

### Timestamps

All datetime fields are ISO 8601 strings. `*On` fields are in the location's local timezone; `*OnUtc` fields are UTC.

<ResponseField name="CreatedOn" type="string">
  Local datetime the team was created.
</ResponseField>

<ResponseField name="CreatedOnUtc" type="string">
  UTC datetime the team was created.
</ResponseField>

<ResponseField name="UpdatedOn" type="string">
  Local datetime of the last update.
</ResponseField>

<ResponseField name="UpdatedOnUtc" type="string">
  UTC datetime of the last update.
</ResponseField>

## Examples

### Fetch full team profile

```http theme={null}
GET /api/public/teams/55/profile
Authorization: Bearer {token}
```

```json theme={null}
{
  "Id": 55,
  "IdString": "55",
  "UniqueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "Name": "Tech Innovators",
  "Description": "A collaborative team focused on cutting-edge technology solutions",
  "ProfileSummary": "Building the future, one innovation at a time",
  "ProfileIsPublic": true,
  "ProfileWebsite": "https://techinnovators.example.com",
  "ProfileTags": "technology startup innovation collaboration",
  "ProfileTagsList": ["technology", "startup", "innovation", "collaboration"],
  "BusinessName": "Downtown Coworking Hub",
  "BusinessHomeUrl": "https://downtown-hub.example.com",
  "Twitter": "https://twitter.com/techinnovators",
  "Facebook": null,
  "Linkedin": "https://linkedin.com/company/techinnovators",
  "Instagram": null,
  "Github": "https://github.com/techinnovators",
  "Pinterest": null,
  "Skype": null,
  "Telegram": null,
  "Flickr": null,
  "Vimeo": null,
  "Tumblr": null,
  "Blogger": null,
  "TeamMembersCount": 12,
  "TeamAdministratorsFullNames": ["Jane Smith", "John Doe"],
  "TeamAdministrators": [
    {
      "Id": 101,
      "FullName": "Jane Smith",
      "Email": "jane@techinnovators.com"
    }
  ],
  "TeamMembers": [
    {
      "Id": 102,
      "FullName": "Bob Wilson",
      "Email": "bob@techinnovators.com"
    }
  ],
  "AllTeamMembers": [
    {
      "Id": 101,
      "FullName": "Jane Smith",
      "Email": "jane@techinnovators.com"
    },
    {
      "Id": 102,
      "FullName": "Bob Wilson",
      "Email": "bob@techinnovators.com"
    }
  ],
  "PayingMemberId": 101,
  "CreateSingleInvoiceForTeam": true,
  "HasContactDetails": true,
  "HasDefaultPlan": true,
  "MaxTeamMemberCount": 20,
  "DisableAttendaceDashboard": false,
  "HasTeamLogo": true,
  "HasImage1": true,
  "HasImage2": false,
  "HasImage3": false,
  "HasImages": true,
  "CreatedOn": "2024-01-15T09:30:00",
  "UpdatedOn": "2024-07-20T14:22:33",
  "CreatedOnUtc": "2024-01-15T09:30:00Z",
  "UpdatedOnUtc": "2024-07-20T14:22:33Z"
}
```

### Fetch profile with a minimal field set

Use `_shape` to request only the fields your UI needs, reducing payload size.

```http theme={null}
GET /api/public/teams/55/profile?_shape=Name,ProfileSummary,ProfileIsPublic,TeamMembersCount
Authorization: Bearer {token}
```

```json theme={null}
{
  "Name": "Tech Innovators",
  "ProfileSummary": "Building the future, one innovation at a time",
  "ProfileIsPublic": true,
  "TeamMembersCount": 12
}
```

## TypeScript Integration

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

const { resource: team } = useData<Team>(httpClient, endpoints.teams.one(teamId), {
  shape: {
    fields: ['Name', 'ProfileWebsite', 'ProfileSummary', 'ProfileTagsList', 'ProfileIsPublic', 'TeamMembers'],
  },
})
```

## Usage in Portal

| Context                                                   | Source file                                                   |
| --------------------------------------------------------- | ------------------------------------------------------------- |
| Team Professional Profile Page (`/team/profile/{teamId}`) | `src/views/user/team/profile/TeamProfessionalProfilePage.tsx` |
| Team Dashboard (`/dashboard/team/{teamId}`)               | `src/views/user/dashboards/team/TeamDashboardPage.tsx`        |
| Team Permissions (`/team/permissions/{teamId}`)           | `src/views/user/team/permissions/TeamPermissionsPage.tsx`     |
| Team Bookings (`/team/bookings/{teamId}`)                 | `src/views/user/team/bookings/TeamBookingsPage.tsx`           |

## Error Responses

<ResponseField name="401 Unauthorized" type="error">
  The customer is not authenticated, the session has expired, or the customer is not a member of the specified team.
</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/my`                  | List the customer's teams        |
| `PUT`  | `/api/public/teams/{teamId}/profile`    | Update team profile (admin only) |
| `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         |
