Skip to content

Commit 27c8f28

Browse files
committed
docs: add attendee source taxonomy and Chinese guides
1 parent be3f368 commit 27c8f28

30 files changed

Lines changed: 1591 additions & 178 deletions

README.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
[![API](https://img.shields.io/badge/API-REST-orange.svg)](https://www.lensmor.com/platform?utm_source=github&utm_medium=readme&utm_campaign=API-Doc)
55
[![Docs](https://img.shields.io/badge/Docs-api.lensmor.com-green.svg)](https://api.lensmor.com/)
66

7-
Lensmor provides developer-facing access to event, exhibitor, personnel, contact, and profile-matching data through the Lensmor API.
7+
Lensmor provides developer-facing access to event, exhibitor, attendee-source, registered Visitor, contact, and profile-matching data through the Lensmor API.
88

99
This repository hosts the public documentation site for developers integrating with [Lensmor](https://www.lensmor.com/?utm_source=github&utm_medium=readme&utm_campaign=API-Doc) — an AI-native event intelligence platform for B2B teams.
1010

@@ -14,6 +14,7 @@ Use the API to:
1414

1515
- Check credit balance before running credit-consuming workflows
1616
- Browse and inspect event data
17+
- Build attendee intelligence with Exhibitor, Social Signals, and registered Visitor source labels
1718
- Search exhibitors using company context and optional event scope
1819
- Retrieve exhibitor and personnel profiles
1920
- Search contacts with company-based inputs and unlock contact emails
@@ -53,10 +54,12 @@ curl -X GET "https://platform.lensmor.com/external/events/list?page=1&pageSize=2
5354
- `openapi.json` — OpenAPI 3.1 specification for documented endpoints
5455
- `api-catalog.json` — machine-readable API catalog pointing to the OpenAPI file
5556
- `llms.txt` and `llms-full.txt` — LLM-friendly documentation entry points
57+
- `zh-Hans/` — Simplified Chinese core onboarding, attendee, access, and contact-unlock guides
5658
- `api-reference/credits/` — credit balance endpoint
5759
- `concepts/errors.mdx` — shared error conventions
5860
- `concepts/pagination.mdx` — pagination behavior
5961
- `concepts/identifiers.mdx` — identifier conventions
62+
- `concepts/attendee-source-types.mdx` — product-to-API attendee source mapping and multi-source behavior
6063
- `concepts/credits-and-access.mdx` — credit costs, preview access, and unlock behavior
6164
- `concepts/rate-limits.mdx` — rate-limit headers and `429` behavior
6265
- `api-reference/events/` — event endpoints
@@ -67,10 +70,10 @@ curl -X GET "https://platform.lensmor.com/external/events/list?page=1&pageSize=2
6770

6871
## Typical use cases
6972

70-
- Build event discovery workflows
71-
- Match exhibitors to a company profile or target audience
72-
- Enrich sales, partnership, or market research pipelines
73-
- Explore people and organizations connected to relevant events
73+
- Build event discovery and field-marketing workflows
74+
- Segment accessible attendees by Exhibitor, Social Signals, and registered Visitor source
75+
- Match target accounts and exhibiting companies to relevant events
76+
- Prioritize selected attendees and enrich their contact data for sales engagement or CRM workflows
7477

7578
## Local preview
7679

@@ -80,7 +83,7 @@ pnpm dlx mintlify dev
8083

8184
## Changelog
8285

83-
See `changelog.mdx` for versioned documentation updates. The current documentation version is `v0.24.0`.
86+
See `changelog.mdx` for versioned documentation updates. The current documentation version is `v0.24.1`.
8487

8588
---
8689

api-catalog.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"apis": [
33
{
44
"name": "Lensmor API",
5-
"description": "Lensmor Event Intelligence API.",
5+
"description": "Lensmor Event and Attendee Intelligence API.",
66
"baseUrl": "https://platform.lensmor.com",
77
"openapi": "https://api.lensmor.com/openapi.json"
88
}

api-reference-backup/contacts/search.mdx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ openapi: "openapi.json GET /external/contacts/search"
66

77
Search contacts by company name.
88

9-
Use this endpoint when you want a lightweight contact result set keyed off a company query, with optional role filtering.
9+
Use this endpoint when you want a lightweight contact result set keyed off a company query, with optional role filtering and attendee source context aggregated across associated events.
1010

1111
## When to use this endpoint
1212

@@ -62,7 +62,7 @@ curl "https://platform.lensmor.com/external/contacts/search?company_name=Acme&pe
6262
"seniorityLevel": "vp",
6363
"linkedinUrl": "https://linkedin.com/in/jane",
6464
"companyName": "Acme",
65-
"sourceType": ["exhibitor"],
65+
"sourceType": ["social", "visitors"],
6666
"email": null,
6767
"phone": null,
6868
"contactUnlockStatus": "locked",
@@ -90,7 +90,7 @@ curl "https://platform.lensmor.com/external/contacts/search?company_name=Acme&pe
9090
| `department`, `seniorityLevel` | Normalized role metadata when available. |
9191
| `linkedinUrl` | LinkedIn profile URL when available. |
9292
| `companyName` | Matched company name. |
93-
| `sourceType` | Normalized source labels for the contact record. Values can include `exhibitor`, `social`, and `visitors`. |
93+
| `sourceType` | Non-exclusive source labels aggregated across associated events. Product mapping: Exhibitor = `exhibitor`, Social Signals = `social`, Visitor = `visitors`. |
9494
| `email` | Email if already unlocked for the caller; otherwise `null`. |
9595
| `phone` | Phone number if already unlocked for the caller; otherwise `null`. |
9696
| `contactUnlockStatus` | Contact access state for this API key owner. |
@@ -112,5 +112,6 @@ No matching contacts can return an empty paginated response. Use this as a valid
112112

113113
## Notes
114114
- Emails are returned only when the contact is already unlocked for the caller.
115+
- Use [Personnel list](/api-reference/personnel/list-event-personnel) when you need source labels for one specific event. See [Attendee source types](/concepts/attendee-source-types) for the full mapping.
115116
- Contact-style list responses follow the shared [Pagination conventions](/concepts/pagination).
116117
- Each item includes `linkedinActivity` and `linkedinActivityStatus` for shape consistency, but they are always `null` on this endpoint. Only [Personnel list](/api-reference/personnel/list-event-personnel) populates LinkedIn activity data.

api-reference-backup/events/unlock-event-visitor-access.mdx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ openapi: "openapi.json POST /external/events/{id}/visitors/unlock"
66

77
Unlock the visitor data layer for an event that already has base event access.
88

9-
Use this endpoint when the caller needs visitor records in addition to the exhibitor and personnel coverage unlocked by [Unlock event](/api-reference/events/unlock-event-access).
9+
Use this endpoint when the caller needs registered Visitor records in addition to the exhibitor and personnel coverage unlocked by [Unlock event](/api-reference/events/unlock-event-access). Visitor records are obtained through organizer or data-provider partnerships and are available only for selected events.
1010

1111
## Prerequisites
1212

@@ -16,7 +16,11 @@ Before executing this paid action:
1616
2. Call [Actions precheck](/api-reference/actions/precheck-an-external-action) with `action_type: "unlock_event_visitors"` and the selected `event_id`.
1717
3. Continue only when precheck returns `allowed: true`.
1818

19-
Visitor access requires an active subscription, available visitor data for the event, and enough credits.
19+
Visitor access requires an active subscription, available Visitor data for the event, and enough credits.
20+
21+
<Note>
22+
The product label is **Visitor**, while personnel responses use the API source value `"visitors"`. See [Attendee source types](/concepts/attendee-source-types).
23+
</Note>
2024

2125
<Warning>
2226
The first successful visitor unlock consumes `3000` credits. Precheck is read-only and should be used before the paid call.

api-reference-backup/openapi.json

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"openapi": "3.1.0",
33
"info": {
44
"title": "Lensmor API",
5-
"version": "0.24.0",
5+
"version": "0.24.1",
66
"description": "Lensmor Event Intelligence API for event discovery, exhibitor research, personnel lookup, credits, and profile matching.",
77
"license": {
88
"name": "Lensmor Terms of Service",
@@ -1228,7 +1228,7 @@
12281228
"Personnel"
12291229
],
12301230
"summary": "List event personnel",
1231-
"description": "Return paginated people for an event with preview or full-access semantics and visible coverage counts.",
1231+
"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.",
12321232
"operationId": "listPersonnel",
12331233
"parameters": [
12341234
{
@@ -1294,6 +1294,10 @@
12941294
"fullName": "Jane Smith",
12951295
"title": "VP of Retail Technology",
12961296
"companyName": "Acme Retail Systems",
1297+
"sourceType": [
1298+
"exhibitor",
1299+
"social"
1300+
],
12971301
"email": null,
12981302
"phone": null,
12991303
"contactUnlockStatus": "locked",
@@ -1334,7 +1338,7 @@
13341338
"Personnel"
13351339
],
13361340
"summary": "Get personnel profile",
1337-
"description": "Return the public professional profile for one personnel identifier.",
1341+
"description": "Return the public professional profile for one personnel identifier. The sourceType array can aggregate non-exclusive attendee source labels across the person's associated events.",
13381342
"operationId": "getPersonnelProfile",
13391343
"parameters": [
13401344
{
@@ -1357,6 +1361,10 @@
13571361
"seniorityLevel": "vp",
13581362
"linkedinUrl": "https://linkedin.com/in/jane-smith",
13591363
"companyName": "Acme Retail Systems",
1364+
"sourceType": [
1365+
"exhibitor",
1366+
"visitors"
1367+
],
13601368
"email": null,
13611369
"phone": null,
13621370
"contactUnlockStatus": "locked",
@@ -1594,7 +1602,7 @@
15941602
"Contacts"
15951603
],
15961604
"summary": "Search contacts",
1597-
"description": "Search public contact records by required company name and optional role or person-name filters.",
1605+
"description": "Search public contact records by required company name and optional role or person-name filters. Returned sourceType arrays can aggregate non-exclusive attendee source labels across associated events.",
15981606
"operationId": "searchContacts",
15991607
"parameters": [
16001608
{
@@ -1645,6 +1653,10 @@
16451653
"fullName": "Jane Doe",
16461654
"title": "VP Marketing",
16471655
"companyName": "Acme",
1656+
"sourceType": [
1657+
"social",
1658+
"visitors"
1659+
],
16481660
"email": null,
16491661
"phone": null,
16501662
"contactUnlockStatus": "locked",
@@ -3892,7 +3904,7 @@
38923904
},
38933905
"sourceType": {
38943906
"type": "array",
3895-
"description": "Normalized Lensmor source labels for this person. Possible values are exhibitor, social, and visitors.",
3907+
"description": "Lensmor source/business labels for this person. Source labels are not mutually exclusive. Product mapping: Exhibitor is exhibitor, Social Signals is social, and Visitor is visitors. Visitor represents registered attendees obtained through organizer or data-provider partnerships; Social Signals is not proof of official registration. Event personnel lists return event-scoped labels, while personnel profile and contact search can aggregate labels across associated events.",
38963908
"items": {
38973909
"type": "string",
38983910
"enum": [

api-reference-backup/personnel/list.mdx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ openapi: "openapi.json GET /external/personnel/list"
66

77
List personnel records for a specific event.
88

9-
Use this endpoint when you want a paginated people directory for one event, with optional exhibitor, department, level, and search filters.
9+
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.
1010

1111
## When to use this endpoint
1212

@@ -17,8 +17,13 @@ Common use cases:
1717
- browse people associated with an event
1818
- filter by department or seniority
1919
- find contacts for a selected exhibitor
20+
- segment accessible attendees by their event-scoped `sourceType` labels
2021
- collect personnel IDs before calling [Unlock contact emails](/api-reference/contacts/unlock-contact-emails)
2122

23+
<Note>
24+
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).
25+
</Note>
26+
2227
## Endpoint
2328
`GET /external/personnel/list`
2429

@@ -64,7 +69,7 @@ curl "https://platform.lensmor.com/external/personnel/list?event_id=139574&depar
6469
"seniorityLevel": "vp",
6570
"linkedinUrl": "https://linkedin.com/in/jane-smith",
6671
"companyName": "Acme Retail Systems",
67-
"sourceType": ["exhibitor"],
72+
"sourceType": ["exhibitor", "social"],
6873
"email": null,
6974
"phone": null,
7075
"contactUnlockStatus": "locked",
@@ -121,7 +126,7 @@ curl "https://platform.lensmor.com/external/personnel/list?event_id=139574&depar
121126
| `department`, `seniorityLevel` | Normalized role metadata when available. |
122127
| `linkedinUrl` | LinkedIn profile URL when available. |
123128
| `companyName` | Associated company or exhibitor name. |
124-
| `sourceType` | Normalized source labels for the person record. Values can include `exhibitor`, `social`, and `visitors`; an empty array means no supported source label is available. |
129+
| `sourceType` | Event-scoped, non-exclusive source labels. Product mapping: Exhibitor = `exhibitor`, Social Signals = `social`, Visitor = `visitors`. An empty array means no supported source label is available. |
125130
| `email` | Email address if already unlocked for the caller; otherwise `null`. |
126131
| `phone` | Phone number if already unlocked for the caller; otherwise `null`. |
127132
| `contactUnlockStatus` | Contact access state, such as `locked` or unlocked states. |
@@ -137,7 +142,7 @@ curl "https://platform.lensmor.com/external/personnel/list?event_id=139574&depar
137142

138143
Locked events can still return preview personnel results. Read `semantics` before deciding whether to unlock the event:
139144

140-
- `accessMode` tells you whether the response is preview or full access.
145+
- `accessMode` tells you whether base event coverage is preview or full access. It does not describe the separate Visitor access layer.
141146
- `counts.remainingLockedCount` tells you whether more records are hidden.
142147
- `unlock.requiredForMoreResults` tells you whether event unlock is useful for this query.
143148
- `guidance.message` provides a user-facing explanation.
@@ -150,6 +155,8 @@ Locked events can still return preview personnel results. Read `semantics` befor
150155

151156
## Notes
152157
- Personnel list responses intentionally use the lightweight contact-style response shape.
158+
- A person can have multiple source labels. Preserve every value rather than assigning one exclusive category.
159+
- Visitor records are registered attendees obtained through organizer or data-provider partnerships. Visitor availability and access must be checked separately.
153160
- Emails are returned only when the contact is already unlocked for the caller.
154161
- Locked events can return preview results. Use `semantics.unlock` to decide whether to call [Unlock event](/api-reference/events/unlock-event-access).
155162
- Pagination behavior follows the shared [Pagination conventions](/concepts/pagination).

api-reference-backup/personnel/profile.mdx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Use this endpoint when you already know the personnel identifier and need profil
1212

1313
Use `GET /external/personnel/profile` after a user selects a person from a personnel list, contact search result, or LinkedIn-based event lookup.
1414

15-
This endpoint is intentionally lightweight. Use it to confirm the person's identity and current email unlock state before starting a contact unlock workflow.
15+
This endpoint is intentionally lightweight. Use it to confirm the person's identity, aggregated source labels, and current email unlock state before starting a contact unlock workflow.
1616

1717
## Endpoint
1818
`GET /external/personnel/profile`
@@ -44,7 +44,7 @@ curl "https://platform.lensmor.com/external/personnel/profile?personnel_id=789"
4444
"seniorityLevel": "vp",
4545
"linkedinUrl": "https://linkedin.com/in/jane-smith",
4646
"companyName": "Acme Retail Systems",
47-
"sourceType": ["exhibitor"],
47+
"sourceType": ["exhibitor", "visitors"],
4848
"email": null,
4949
"phone": null,
5050
"contactUnlockStatus": "locked",
@@ -62,7 +62,7 @@ curl "https://platform.lensmor.com/external/personnel/profile?personnel_id=789"
6262
| `department`, `seniorityLevel` | Normalized role metadata when available. |
6363
| `linkedinUrl` | Public LinkedIn profile URL when available. |
6464
| `companyName` | Associated company or exhibitor. |
65-
| `sourceType` | Normalized source labels such as `exhibitor`, `social`, and `visitors`. |
65+
| `sourceType` | Non-exclusive source labels aggregated across the person's associated events. Product mapping: Exhibitor = `exhibitor`, Social Signals = `social`, Visitor = `visitors`. |
6666
| `email` | Email address if already unlocked for the caller; otherwise `null`. |
6767
| `phone` | Phone number if already unlocked for the caller; otherwise `null`. |
6868
| `contactUnlockStatus` | Current contact access state for this API key owner. |
@@ -81,5 +81,7 @@ An empty `email` value does not necessarily mean Lensmor has no email data. It c
8181

8282
## Notes
8383
- This response stays intentionally lightweight.
84+
- Use [Personnel list](/api-reference/personnel/list-event-personnel) when you need source labels for one specific event. Profile labels can reflect multiple associated events.
85+
- See [Attendee source types](/concepts/attendee-source-types) for label meanings and Visitor access behavior.
8486
- Emails are returned only when the contact is already unlocked for the caller.
8587
- The response includes `linkedinActivity` and `linkedinActivityStatus` for shape consistency, but they are always `null` on this endpoint. Only [Personnel list](/api-reference/personnel/list-event-personnel) populates LinkedIn activity data.

0 commit comments

Comments
 (0)