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

# List Published Teams

> Returns a paginated list of teams with public profiles, filterable by search query and tags.

# List Published Teams

Returns a paginated list of teams whose profiles are publicly visible in the member directory. Supports full-text search by name and filtering by profile tag. Used by the community directory page to render team cards alongside member profiles.

## Authentication

Requires a valid customer bearer token.

## Query Parameters

<ParamField query="query" type="string">
  Full-text search string matched against team names and descriptions. **Default**: `""` (no filter).
</ParamField>

<ParamField query="tag" type="string">
  Filter results to teams that have this tag in their `ProfileTags`. **Default**: `""` (no filter).
</ParamField>

<ParamField query="order" type="number">
  Sort order. **Default**: `1`.
</ParamField>

<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=Records.Id,Records.Name,Records.ProfileSummary`
</ParamField>

<ParamField query="_page" type="number">
  1-based page number. **Default**: `1`
</ParamField>

<ParamField query="_pageSize" type="number">
  Records per page. **Default**: `25` · **Maximum**: `100`
</ParamField>

## Response

Returns the standard `ApiListResult<Team>` envelope (see [API Overview](/api/overview) for pagination fields). The `Records` array contains team objects with the same shape as [`GET /api/public/teams/my`](/api/endpoints/teams/list-teams). See that endpoint for the full field breakdown.

### Key Team Fields

| Field              | Type      | Description                             |
| ------------------ | --------- | --------------------------------------- |
| `Id`               | `number`  | Unique numeric identifier for the team  |
| `Name`             | `string`  | Team display name                       |
| `ProfileSummary`   | `string`  | Short team bio                          |
| `ProfileIsPublic`  | `boolean` | Whether the profile is publicly visible |
| `ProfileWebsite`   | `string`  | Team website URL                        |
| `HasTeamLogo`      | `boolean` | Whether the team has a logo image       |
| `TeamMembersCount` | `number`  | Number of team members                  |
| `BusinessName`     | `string`  | Location display name                   |
| `Twitter`          | `string`  | Twitter handle/URL                      |
| `Linkedin`         | `string`  | LinkedIn URL                            |
| `Github`           | `string`  | GitHub URL                              |
| `Instagram`        | `string`  | Instagram URL                           |

## Examples

### Search published teams

```http theme={null}
GET /api/public/teams/published?query=tech&tag=innovation&order=1
Authorization: Bearer {token}
```

```json theme={null}
{
  "Records": [
    {
      "Id": 55,
      "Name": "Tech Innovators",
      "ProfileSummary": "Building the future, one innovation at a time",
      "ProfileIsPublic": true,
      "ProfileTags": "technology startup innovation",
      "ProfileTagsList": ["technology", "startup", "innovation"],
      "HasTeamLogo": true,
      "TeamMembersCount": 12,
      "BusinessName": "Downtown Coworking Hub"
    }
  ],
  "CurrentPageSize": 1,
  "CurrentPage": 1,
  "HasNextPage": false,
  "HasPreviousPage": false,
  "TotalItems": 1,
  "TotalPages": 1
}
```

## TypeScript Integration

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

const { resource: teams } = useData(httpClient, endpoints.teams.directory.published_list(query, tag, order))
```

## Usage in Portal

| Context                                      | Source file                                                    |
| -------------------------------------------- | -------------------------------------------------------------- |
| Community directory (`/community/directory`) | `src/views/community/directory/components/useDirectoryData.ts` |

## Error Responses

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

## Related Endpoints

| Method | Endpoint                               | Description                             |
| ------ | -------------------------------------- | --------------------------------------- |
| `GET`  | `/api/public/teams/published/{teamId}` | Full profile of a single published team |
| `GET`  | `/api/public/teams/directory/meta`     | Directory metadata (tags, config)       |
| `GET`  | `/api/public/teams/my`                 | List the customer's own teams           |
