Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ pnpm dlx mintlify dev

## Changelog

See `changelog.mdx` for versioned documentation updates. The current documentation version is `v0.24.1`.
See `changelog.mdx` for versioned documentation updates. The current documentation version is `v0.24.2`.

---

Expand Down
3 changes: 3 additions & 0 deletions api-reference-backup/events/detail.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ curl "https://platform.lensmor.com/external/events/139574" \
"image": "https://example.com/ces-image.png",
"dataSource": "Lensmor",
"exhibitorCount": 3259,
"hasVisitors": true,
"personnelCount": null,
"eventTypes": []
}
Expand All @@ -105,6 +106,7 @@ curl "https://platform.lensmor.com/external/events/139574" \
| `dateStart`, `dateEnd` | Event date range. |
| `venue`, `city`, `region`, `country`, `latitude`, `longitude` | Location metadata. Coordinates are string values (e.g. `"36.1313238"`) or `null`. |
| `attendeeCount`, `exhibitorCount`, `personnelCount` | Known summary scale and coverage fields when available. These fields can be `null` or differ from current event-scoped list totals. |
| `hasVisitors` | `true` when the event currently has registered Visitor data available. This is separate from the caller's Visitor access state. |
| `priceLower`, `priceUpper` | Price range as string values (e.g. `"1295"`) or `null`. |
| `eventType`, `eventTypes`, `categories`, `topics`, `topicsCount` | Classification metadata. `categories` is an array of objects with `id`, `code`, `name`, `description`, `confidence` fields. |
| `verified`, `future`, `historic`, `historicEvent` | Status flags and historical relationship metadata. |
Expand Down Expand Up @@ -132,5 +134,6 @@ When you need current coverage numbers, call the event-scoped list endpoint and
- Some fields can be `null` when the underlying source does not provide that data.
- String-typed numeric fields (`latitude`, `longitude`, `priceLower`, `priceUpper`) require client-side parsing when used for calculations.
- `dataSource` is always `"Lensmor"` for public event records.
- `hasVisitors` indicates Visitor data availability only. Use the Visitor or Full Access action precheck to confirm unlock eligibility, expected credits, and current access state.
- `categories` is an array of objects. Each object contains `id` (integer), `code` (string), `name` (string), `description` (string or null), and `confidence` (string).
- This endpoint does not unlock event-scoped exhibitor or personnel access by itself.
3 changes: 3 additions & 0 deletions api-reference-backup/events/list.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ curl "https://platform.lensmor.com/external/events/list?event_type=conference_le
"region": "Nevada",
"country": "United States",
"exhibitorCount": 3259,
"hasVisitors": true,
"sponsorMatchStarred": 0,
"image": "https://example.com/ces-image.png",
"dataSource": "Lensmor"
Expand Down Expand Up @@ -108,6 +109,7 @@ curl "https://platform.lensmor.com/external/events/list?event_type=conference_le
| `dateStart`, `dateEnd` | Event date range. |
| `venue`, `city`, `region`, `country` | Location metadata. |
| `exhibitorCount` | Known exhibitor count when available. |
| `hasVisitors` | `true` when the event currently has registered Visitor data available. This does not mean the caller has unlocked Visitor access. |
| `sponsorMatchStarred` | Sponsor Match starred state (`0` or `1`). |
| `dataSource` | Always `Lensmor` for public event records. |
| `total`, `page`, `pageSize`, `totalPages`, `hasMore` | Pagination metadata. |
Expand All @@ -121,5 +123,6 @@ curl "https://platform.lensmor.com/external/events/list?event_type=conference_le
- Pagination fields follow the shared conventions described in [Pagination conventions](/concepts/pagination).
- Results are not guaranteed to be relevance-ranked unless a keyword or filter strongly narrows the result set.
- `id` and `eventId` currently return the same value. Use `eventId` when passing to event-scoped endpoints.
- `hasVisitors` is returned as an availability signal, but this endpoint does not expose a public `has_visitors` filter yet. For a known event, use the Visitor or Full Access action precheck before an unlock workflow.
- `event_type` and `quality` filters must match actual values in the database (e.g. `In-person`, `conference_led` for event type; `Verified`, `Standard` for quality). Invalid values return an empty result set rather than an error.
- Filter values are applied to the event catalog, but summary list items may still omit or return `null` for some classification fields. Fetch event detail when you need the full classification shape.
28 changes: 24 additions & 4 deletions api-reference-backup/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"openapi": "3.1.0",
"info": {
"title": "Lensmor API",
"version": "0.24.1",
"version": "0.24.2",
"description": "Lensmor Event Intelligence API for event discovery, exhibitor research, personnel lookup, credits, and profile matching.",
"license": {
"name": "Lensmor Terms of Service",
Expand Down Expand Up @@ -160,7 +160,7 @@
"Events"
],
"summary": "List events",
"description": "Search and filter the event catalog by keyword, geography, date, type, and quality with pagination.",
"description": "Search and filter the event catalog by keyword, geography, date, type, and quality with pagination. Event items include hasVisitors when registered Visitor data is available; the public event list does not currently expose a has_visitors query filter.",
"operationId": "listEvents",
"parameters": [
{
Expand Down Expand Up @@ -254,6 +254,7 @@
"region": "Nevada",
"country": "United States",
"exhibitorCount": 3259,
"hasVisitors": true,
"sponsorMatchStarred": 0,
"image": "https://example.com/ces-image.png",
"dataSource": "Lensmor"
Expand Down Expand Up @@ -283,7 +284,7 @@
"Events"
],
"summary": "Get event detail",
"description": "Return the detailed public event record for one Lensmor event identifier.",
"description": "Return the detailed public event record for one Lensmor event identifier, including hasVisitors when registered Visitor data is available.",
"operationId": "getEventDetail",
"parameters": [
{
Expand Down Expand Up @@ -320,6 +321,7 @@
"region": "Nevada",
"country": "United States",
"exhibitorCount": 3259,
"hasVisitors": true,
"sponsorMatchStarred": 0,
"dataSource": "Lensmor"
}
Expand Down Expand Up @@ -1228,7 +1230,7 @@
"Personnel"
],
"summary": "List event personnel",
"description": "Return paginated people for an event with event-scoped attendee source labels and preview or full base-event access semantics. The sourceType array can contain exhibitor, social, and visitors; labels are not mutually exclusive. The endpoint does not currently accept a source filter. Visitor is a separate access layer, so semantics.accessMode does not by itself confirm Visitor access.",
"description": "Return paginated people for an event with event-scoped attendee source labels and preview or full base-event access semantics. The sourceType array can contain exhibitor, social, and visitors; labels are not mutually exclusive. Use the sourceType query parameter to filter by one supported attendee source. Visitor is a separate access layer, so semantics.accessMode does not by itself confirm Visitor access.",
"operationId": "listPersonnel",
"parameters": [
{
Expand Down Expand Up @@ -1277,6 +1279,20 @@
"type": "string",
"maxLength": 200
}
},
{
"name": "sourceType",
"in": "query",
"description": "Filter personnel by one event-scoped attendee source label. Supported values are exhibitor, social, and visitors.",
"schema": {
"type": "string",
"enum": [
"exhibitor",
"social",
"visitors"
],
"maxLength": 50
}
}
],
"responses": {
Expand Down Expand Up @@ -2833,6 +2849,10 @@
"null"
]
},
"hasVisitors": {
"type": "boolean",
"description": "True when the event currently has registered Visitor data available. This is an availability signal, not proof that the caller has unlocked Visitor access."
},
"sponsorMatchStarred": {
"type": "integer",
"enum": [
Expand Down
13 changes: 11 additions & 2 deletions api-reference-backup/personnel/list.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ openapi: "openapi.json GET /external/personnel/list"

List personnel records for a specific event.

Use this endpoint when you want a paginated people directory for one event, with optional exhibitor, department, level, and search filters. Each item can include event-scoped Exhibitor, Social Signals, and Visitor source labels.
Use this endpoint when you want a paginated people directory for one event, with optional exhibitor, department, level, source-type, and search filters. Each item can include event-scoped Exhibitor, Social Signals, and Visitor source labels.

## When to use this endpoint

Expand All @@ -16,12 +16,13 @@ Common use cases:

- browse people associated with an event
- filter by department or seniority
- filter by one event-scoped `sourceType` label
- find contacts for a selected exhibitor
- segment accessible attendees by their event-scoped `sourceType` labels
- collect personnel IDs before calling [Unlock contact emails](/api-reference/contacts/unlock-contact-emails)

<Note>
The endpoint does not currently accept a source filter. Fetch the accessible result set and segment it client-side. See [Attendee source types](/concepts/attendee-source-types).
`sourceType` filtering is event-scoped. Use `exhibitor`, `social`, or `visitors`; labels are still non-exclusive on returned records. See [Attendee source types](/concepts/attendee-source-types).
</Note>

## Endpoint
Expand All @@ -41,6 +42,7 @@ See [Authentication](/authentication)
| `department` | No | string | Department filter. |
| `level` | No | string | Seniority-level filter. |
| `search_query` | No | string | Name or job-title search. |
| `sourceType` | No | string | Source label filter. Supported values: `exhibitor`, `social`, `visitors`. |
| `page` | No | integer | Defaults to `1`. |
| `pageSize` | No | integer | Defaults to `50`; maximum `50`. |

Expand All @@ -57,6 +59,13 @@ curl "https://platform.lensmor.com/external/personnel/list?event_id=139574&depar
-H "Authorization: Bearer $LENSMOR_API_KEY"
```

### Filter by attendee source

```bash
curl "https://platform.lensmor.com/external/personnel/list?event_id=139574&sourceType=visitors&page=1&pageSize=50" \
-H "Authorization: Bearer $LENSMOR_API_KEY"
```

## Response example
```json
{
Expand Down
28 changes: 24 additions & 4 deletions api-reference/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"openapi": "3.1.0",
"info": {
"title": "Lensmor API",
"version": "0.24.1",
"version": "0.24.2",
"description": "Lensmor Event Intelligence API for event discovery, exhibitor research, personnel lookup, credits, and profile matching.",
"license": {
"name": "Lensmor Terms of Service",
Expand Down Expand Up @@ -160,7 +160,7 @@
"Events"
],
"summary": "List events",
"description": "Search and filter the event catalog by keyword, geography, date, type, and quality with pagination.",
"description": "Search and filter the event catalog by keyword, geography, date, type, and quality with pagination. Event items include hasVisitors when registered Visitor data is available; the public event list does not currently expose a has_visitors query filter.",
"operationId": "listEvents",
"parameters": [
{
Expand Down Expand Up @@ -254,6 +254,7 @@
"region": "Nevada",
"country": "United States",
"exhibitorCount": 3259,
"hasVisitors": true,
"sponsorMatchStarred": 0,
"image": "https://example.com/ces-image.png",
"dataSource": "Lensmor"
Expand Down Expand Up @@ -283,7 +284,7 @@
"Events"
],
"summary": "Get event detail",
"description": "Return the detailed public event record for one Lensmor event identifier.",
"description": "Return the detailed public event record for one Lensmor event identifier, including hasVisitors when registered Visitor data is available.",
"operationId": "getEventDetail",
"parameters": [
{
Expand Down Expand Up @@ -320,6 +321,7 @@
"region": "Nevada",
"country": "United States",
"exhibitorCount": 3259,
"hasVisitors": true,
"sponsorMatchStarred": 0,
"dataSource": "Lensmor"
}
Expand Down Expand Up @@ -1228,7 +1230,7 @@
"Personnel"
],
"summary": "List event personnel",
"description": "Return paginated people for an event with event-scoped attendee source labels and preview or full base-event access semantics. The sourceType array can contain exhibitor, social, and visitors; labels are not mutually exclusive. The endpoint does not currently accept a source filter. Visitor is a separate access layer, so semantics.accessMode does not by itself confirm Visitor access.",
"description": "Return paginated people for an event with event-scoped attendee source labels and preview or full base-event access semantics. The sourceType array can contain exhibitor, social, and visitors; labels are not mutually exclusive. Use the sourceType query parameter to filter by one supported attendee source. Visitor is a separate access layer, so semantics.accessMode does not by itself confirm Visitor access.",
"operationId": "listPersonnel",
"parameters": [
{
Expand Down Expand Up @@ -1277,6 +1279,20 @@
"type": "string",
"maxLength": 200
}
},
{
"name": "sourceType",
"in": "query",
"description": "Filter personnel by one event-scoped attendee source label. Supported values are exhibitor, social, and visitors.",
"schema": {
"type": "string",
"enum": [
"exhibitor",
"social",
"visitors"
],
"maxLength": 50
}
}
],
"responses": {
Expand Down Expand Up @@ -2833,6 +2849,10 @@
"null"
]
},
"hasVisitors": {
"type": "boolean",
"description": "True when the event currently has registered Visitor data available. This is an availability signal, not proof that the caller has unlocked Visitor access."
},
"sponsorMatchStarred": {
"type": "integer",
"enum": [
Expand Down
15 changes: 15 additions & 0 deletions changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,21 @@ description: "Versioned Lensmor API documentation updates, newly documented endp

Track documentation updates, newly documented API capabilities, and behavior clarifications that may affect integrations.

## v0.24.2

Released July 30, 2026.

### Added

- Documented the `sourceType` query parameter on `GET /external/personnel/list` for filtering event personnel by `exhibitor`, `social`, or `visitors`.
- Documented the `hasVisitors` response field on public event list and detail records.

### Clarified

- Clarified that `hasVisitors` is a Visitor-data availability signal and does not prove the caller has unlocked Visitor access.
- Clarified that the public event list documentation does not expose a `has_visitors` query filter yet.
- Updated OpenAPI metadata to version `0.24.2`.

## v0.24.1

Released July 24, 2026.
Expand Down
13 changes: 11 additions & 2 deletions concepts/attendee-source-types.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,24 @@ The `semantics.accessMode` field on the personnel list describes base event prev

## Filtering

`GET /external/personnel/list` does not currently accept a `sourceType` filter. Fetch the accessible event-scoped result set, then segment it client-side:
`GET /external/personnel/list` accepts a single `sourceType` query parameter when you want the API to return people matching one event-scoped source label:

```bash
curl "https://platform.lensmor.com/external/personnel/list?event_id=139574&sourceType=visitors&page=1&pageSize=50" \
-H "Authorization: Bearer $LENSMOR_API_KEY"
```

Supported values are `exhibitor`, `social`, and `visitors`.

You can also fetch the accessible event-scoped result set without `sourceType`, then segment it client-side:

```js
const visitors = items.filter((person) =>
person.sourceType?.includes("visitors")
);
```

Because labels can overlap, a person may appear in more than one client-side segment.
Because labels can overlap, a person may match a source filter and still include additional `sourceType` values in the response.

## Related workflows

Expand Down
7 changes: 7 additions & 0 deletions docs/response-sources/events.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,15 @@
- DTO/query source: `src/modules/external-api/dto/events/external-event-list-query.dto.ts`
- Success status source: Nest default for `@Get()` -> `200 OK`
- Response example source: `src/modules/external-api/services/external-events.service.ts#listEvents` and `src/modules/external-api/mappers/external-event-response.mapper.ts`
- Contract note: Public event items include `hasVisitors` from `ExternalEventResponseMapper.toEventItem`. The customer-facing docs expose this as a response field only; `has_visitors` is not documented as a public event-list filter yet.
- Ambiguity note: The public example uses only fields directly emitted by `ExternalEventResponseMapper.toEventItem` plus the shared pagination envelope.

## GET /external/events/:id
- Method/path source: `src/modules/external-api/controllers/external-events.controller.ts`
- Success status source: Nest default for `@Get()` -> `200 OK`
- Response example source: `src/modules/external-api/services/external-events.service.ts#getEventDetail` and `src/modules/external-api/mappers/external-event-response.mapper.ts#toEventDetail`
- Contract note: Event detail includes `hasVisitors` from `ExternalEventResponseMapper.toEventDetail`; client types consume this as `ApiEvent.hasVisitors`.

## POST /external/events/fit-score
- Method/path source: `src/modules/external-api/controllers/external-events.controller.ts`
- DTO/body source: `src/modules/external-api/dto/common/external-event-id-query.dto.ts`
Expand Down
2 changes: 1 addition & 1 deletion docs/response-sources/personnel-and-contacts.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
- Success status source: Nest default for `@Get()` -> `200 OK`
- Response example source: `src/modules/external-api/services/external-personnel.service.ts#list` and `src/modules/external-api/mappers/external-contact-response.mapper.ts`
- Ambiguity note: Returned people use the contact-style public shape.
- Contract note: `sourceType` is a normalized string array. Supported labels are `exhibitor`, `social`, and `visitors`.
- Contract note: `sourceType` is a normalized string array. Supported labels are `exhibitor`, `social`, and `visitors`. The list query also accepts a single `sourceType` filter, sourced from `ExternalPersonnelListQueryDto.sourceType` and passed into `QueryLeadDto.sourceTypes`.

## GET /external/personnel/profile
- Method/path source: `src/modules/external-api/controllers/external-personnel.controller.ts`
Expand Down
Loading
Loading