> ## 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 Published Customer Profile

> Retrieve the full published directory profile for a single customer by their ID.

# Get Published Customer Profile

Returns the full directory profile for a single customer who has opted in to the member directory. The portal loads this when a customer opens a profile card in the member directory, displaying their professional bio, social links, location, and related profiles.

## Authentication

Requires a valid customer bearer token.

## Path Parameters

<ParamField path="coworkerId" type="number" required>
  The numeric identifier of the customer profile to retrieve. Obtain this from `GET /api/public/coworkers/published` (`[].Id`).
</ParamField>

## Query Parameters

<ParamField query="_shape" type="string">
  Comma-separated list of field paths to include in the response. When provided, only the
  specified fields are returned — useful for reducing payload size. Supports nested paths
  using dot notation. Example: `_shape=Coworker.FullName,Coworker.CompanyName,Coworker.AvatarUrl`.
</ParamField>

## Response

Returns a wrapper object containing a single `Coworker` property. See [List Published Customer Profiles](/api/endpoints/coworkers/directory-list) for the full set of coworker fields.

<ResponseField name="Coworker" type="Coworker">
  The published customer profile object.
</ResponseField>

### Core Identity (within `Coworker`)

<ResponseField name="Coworker.Id" type="number">
  Unique numeric identifier for the customer profile.
</ResponseField>

<ResponseField name="Coworker.FullName" type="string">
  Customer's display name.
</ResponseField>

<ResponseField name="Coworker.GuessedFirstName" type="string">
  First name inferred from `FullName`. Used in personalised UI messages.
</ResponseField>

<ResponseField name="Coworker.AvatarUrl" type="string">
  URL to the customer's avatar image.
</ResponseField>

### Professional Profile (within `Coworker`)

<ResponseField name="Coworker.Position" type="string | null">
  Job title.
</ResponseField>

<ResponseField name="Coworker.CompanyName" type="string">
  Company name.
</ResponseField>

<ResponseField name="Coworker.ProfileSummary" type="string | null">
  Full professional bio. May contain Markdown.
</ResponseField>

<ResponseField name="Coworker.ProfileWebsite" type="string | null">
  Personal or company website URL.
</ResponseField>

<ResponseField name="Coworker.ProfileTagsList" type="array">
  Array of tag strings from the customer's profile.
</ResponseField>

### Social Media (within `Coworker`)

| Field       | Type             | Description                    |
| ----------- | ---------------- | ------------------------------ |
| `Twitter`   | `string \| null` | Twitter profile URL or handle  |
| `Linkedin`  | `string \| null` | LinkedIn profile URL           |
| `Github`    | `string \| null` | GitHub profile URL or username |
| `Instagram` | `string \| null` | Instagram handle or URL        |
| `Facebook`  | `string \| null` | Facebook profile URL           |
| `Skype`     | `string \| null` | Skype username                 |
| `Telegram`  | `string \| null` | Telegram username              |

## Example Response

```json theme={null}
{
  "Coworker": {
    "Id": 101,
    "UniqueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "FullName": "Jane Doe",
    "GuessedFirstName": "Jane",
    "AvatarUrl": "https://nexudushq.spaces.nexudus.com/media/coworker/101/avatar",
    "Position": "Product Designer",
    "CompanyName": "Acme Design Co.",
    "ProfileSummary": "Jane is a product designer with over 8 years of experience building intuitive digital products. She specialises in design systems and user research.",
    "ProfileWebsite": "https://janedoe.design",
    "ProfileTagsList": ["UX", "Design Systems", "Research"],
    "InvoicingSpaceName": "Nexudus HQ",
    "Linkedin": "https://linkedin.com/in/janedoe",
    "Twitter": null,
    "Github": "https://github.com/janedoe"
  }
}
```

## TypeScript Integration

```typescript theme={null}
import endpoints from '@/api/endpoints'
import { Coworker } from '@/types/spaces/Coworker'
import { useData } from '@/api/fetchData'

const url = endpoints.coworkers.directory.published_one(coworkerId)
// => '/api/public/coworkers/published/101'

const { resource: coworkerData } = useData<{ Coworker: Coworker }>(httpClient, url)
```

## Usage in Portal

| Context                        | Source file                                                                   |
| ------------------------------ | ----------------------------------------------------------------------------- |
| Member directory profile modal | `src/views/community/directory/components/CoworkersDirectoryProfileModal.tsx` |

## Error Responses

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

<ResponseField name="404 Not Found" type="error">
  No published profile with the given `coworkerId` was found, or the customer has set `ProfileIsPublic` to `false`.
</ResponseField>

## Related Endpoints

| Method | Endpoint                                               | Description                                  |
| ------ | ------------------------------------------------------ | -------------------------------------------- |
| `GET`  | `/api/public/coworkers/published`                      | List all published profiles in the directory |
| `GET`  | `/api/public/coworkers/published/{coworkerId}/related` | Get profiles related to this customer        |
| `GET`  | `/api/public/coworkers/directory/meta`                 | Get directory settings and tag cloud         |
